Packaged Apps

Warning: All content in this doc refers to the legacy version of packaged apps. Legacy packaged apps are discontinued, and Chrome will stop loading them in June 2015. Check out the new version of Chrome Apps or read the migration tutorial for legacy packaged apps.

This page talks about legacy packaged apps — how you implement them, and how they're different from extensions and ordinary web apps.


A legacy packaged app is a web app that's bundled into a .crx file. In the past, legacy packaged apps could use most of the extension APIs, but since November 2012, the feature set of legacy packaged apps was reduced. And in June 2014, discontinuation of legacy packaged apps was announced; support for them will be removed from Chrome in June 2015.

The term "packaged app" used to refer to the "legacy packaged app" as described in this document, but since the introduction of Chrome Apps in August 2012, the term "packaged app" is also used to refer to Chrome Apps. Keep this in mind when you read about "packaged apps" in online resources.

A close alternative to legacy packaged apps are hosted apps, which are ordinary web apps with a bit of additional metadata. To learn more about extensions, packaged apps, and hosted apps, read Choosing an App Type.

The manifest

A packaged app's manifest can have any field that's available to extensions, except for "browser_action" and "page_action". In addition, a packaged app's manifest must have an "app" field. Here is a typical manifest for a packaged app:

  "name": "My Awesome Racing Game",
  "description": "Enter a world where a Vanagon can beat a Maserati",
  "version": "1",
  "app": {
    "launch": {
      "local_path": "main.html"
  "icons": {
    "16": "icon_16.png",
    "128": "icon_128.png"

The "app" field has one subfield, "launch", which specifies the launch page for the app—the page (HTML file bundled into the .crx file) that the browser goes to when the user clicks the app's icon in the New Tab page. The "launch" field can contain the following:

Required. Specifies the launch page as a relative path referring to a file in the .crx package.
The value "panel" makes the app appear in an app panel. By default, or when you specify "tab", the app appears in a tab.
If the container is set to "panel", this integer specifies the height of the panel in pixels. For example, you might specify "height":400. Note that you don't use quotation marks in the value. This field specifies the height of the area to display contents in; window decorations add a few more pixels to the total height. If the container isn't a panel, this field is ignored.
Similar to "height", but specifies the width of the panel.

Packaged apps usually provide a 16x16 icon to be used as the favicon for tabs that contain app's pages. They also should provide a 128x128 icon, but not a 48x48 icon. See the manifest documentation for the "icons" field for more information.

For further details on what a packaged app's manifest can contain, see the manifest documentation.

What next?

Read the Overview to learn basic concepts about extensions.

Back to top