• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&mdash;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>&mdash;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&mdash;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