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