1<h1>Packaged Apps</h1> 2 3 4<p class="warning"> 5<b>Warning: </b> 6All content in this doc refers to the legacy version of packaged apps. 7Your legacy packaged apps will still work, 8but you won't have access to any of the new APIs. 9Check out the new version of 10<a href="../apps/about_apps">Chrome Apps</a>; 11otherwise, you're missing out! 12</p> 13 14<p> 15This page talks about packaged apps—how 16you implement them, 17and how they're different from 18extensions and ordinary web apps. 19</p> 20 21<h2 id="overview">Overview</h2> 22 23<p> 24A packaged app is a web app 25that's bundled into a <code>.crx</code> file 26and can use Chrome extension features. 27You build a packaged app just like you build an extension, 28except that a packaged app can't include a 29<a href="browserAction">browser action</a> or 30<a href="pageAction">page action</a>. 31Instead, a packaged app includes at least one HTML file 32within its <code>.crx</code> file 33that provides the app's user interface. 34</p> 35 36<p> 37Packaged apps are a type of 38<a href="http://code.google.com/chrome/apps/">installable web app</a>—a 39web app that can be installed in Chrome. 40The other type of installable web app is a 41<a href="http://code.google.com/chrome/apps/docs/developers_guide">hosted app</a>, 42which is an ordinary web app with a bit of additional metadata. 43</p> 44 45<p> 46If you're developing a web app for the Chrome Web Store, 47you might want to use a packaged app 48instead of a hosted app if any of the following are true: 49</p> 50 51<ul> 52 <li> 53 You don't want to run a service to host your app. 54 </li> 55 <li> 56 You want to build an app that works really well offline. 57 </li> 58 <li> 59 You want tighter integration with Chrome, 60 using the extension APIs. 61 </li> 62</ul> 63 64<p> 65To learn more about 66the differences between web apps and websites, 67extensions and packaged apps, and packaged apps and hosted apps, 68read these: 69</p> 70 71<ul> 72 <li> <a href="http://code.google.com/chrome/webstore/docs/choosing.html">Choosing an App Type</a> </li> 73 <li> <a href="http://code.google.com/chrome/apps/articles/thinking_in_web_apps.html">Thinking in Web Apps</a> </li> 74 <li> <a href="http://code.google.com/chrome/webstore/articles/apps_vs_extensions.html">Extensions, Packaged Apps, and Hosted Apps in the Chrome Web Store</a> </li> 75</ul> 76 77 78<h2 id="manifest"> The manifest </h2> 79 80<p> 81A packaged app's manifest can have any field 82that's available to extensions, 83except for "browser_action" and "page_action". 84In addition, a packaged app's manifest <b>must</b> 85have an "app" field. 86Here is a typical manifest for a packaged app: 87</p> 88 89<pre data-filename="manifest.json"> 90{ 91 "name": "My Awesome Racing Game", 92 "description": "Enter a world where a Vanagon can beat a Maserati", 93 "version": "1", 94 <b>"app": { 95 "launch": { 96 "local_path": "main.html" 97 } 98 },</b> 99 "icons": { 100 "16": "icon_16.png", 101 "128": "icon_128.png" 102 } 103} 104</pre> 105 106<p> 107The "app" field has one subfield, "launch", 108which specifies the <em>launch page</em> for the app—the 109page (HTML file bundled into the <code>.crx</code> file) 110that the browser goes to when the user clicks the app's icon 111in the New Tab page. 112The "launch" field can contain the following: 113</p> 114 115<dl> 116 <dt>local_path:</dt> 117 <dd><em>Required.</em> 118 Specifies the launch page 119 as a relative path referring to a file 120 in the <code>.crx</code> package. 121 </dd> 122 <dt>container:</dt> 123 <dd> The value "panel" makes the app appear 124 in an app panel. 125 By default, or when you specify "tab", 126 the app appears in a tab. 127 128 <!-- PENDING: In the overview 129 (or somewhere else before here) 130 we should show and define both app panels and tabs. 131 We should link to that place from here. --> 132 </dd> 133 <dt>height:</dt> 134 <dd> 135 If the container is set to "panel", 136 this integer specifies the height 137 of the panel in pixels. 138 For example, you might specify 139 <code>"height":400</code>. 140 Note that you don't use quotation marks in the value. 141 This field specifies the height of the area 142 to display contents in; 143 window decorations add a few more pixels to the total height. 144 If the container isn't a panel, this field is ignored. 145 </dd> 146 <dt>width:</dt> 147 <dd> 148 Similar to "height", 149 but specifies the width of the panel. 150 </dd> 151 </dd> 152</dl> 153 154<p> 155Packaged apps usually provide a 16x16 icon 156to be used as the favicon for 157tabs that contain app's pages. 158They also should provide a 128x128 icon, 159but not a 48x48 icon. 160See the manifest documentation for the 161<a href="manifest/icons">"icons" field</a> 162for more information. 163</p> 164 165<p> 166For further details on what a packaged app's manifest can contain, see the 167<a href="manifest">manifest documentation</a>. 168</p> 169 170<h2 id="next">What next?</h2> 171 172<p> 173Read the <a href="overview">Overview</a> to learn 174basic concepts about extensions. 175</p> 176 177<p class="backtotop"><a href="#top">Back to top</a></p> 178