blob: a39ebb34f271bdb6c2d145d9a05a5b858c1938dc [file] [log] [blame]
<h1>Manifest Version</h1>
<style type="text/css">
#schedule h3 {
margin-bottom:0;
}
#schedule p {
margin-top:0;
margin-bottom:1em;
}
</style>
<p>
Extensions, themes, and applications are simply bundles of resources, wrapped
up with a <a href="manifest.html"><code>manifest.json</code></a> file that
describes the package's contents. The format of this file is generally stable,
but occasionally breaking changes must be made to address important issues.
Developers should specify which version of the manifest specification their
package targets by setting a <code>manifest_version</code> key in their
manifests.
</p>
<h2 id="current-version">Current Version</h2>
<p>
Developers should currently specify
<strong><code>'manifest_version': 2</code></strong>:
</p>
<pre>{
...,
"manifest_version": 2,
...
}</pre>
<p>
Manifest version 1 was <em>deprecated</em> in Chrome 18, and support will
be phased out according to the following schedule.
</p>
<h2 id="manifest-v1-support-schedule">Manifest version 1 support schedule</h2>
<div id="schedule">
<h3 id="manifest-v1-m21">Chrome 21</h3>
<p><em>Beta: Early July 2012;
Stable: Mid-August 2012</em></p>
<ul>
<li>The Web Store will block creation of new manifest version 1 items.
<li>The Web Store will allow updates to existing manifest version 1 items.
</ul>
<h3 id="manifest-v1-m23">Chrome 23</h3>
<p><em>Beta: Late September 2012;
Stable: Early November 2012</em></p>
<ul>
<li>The Web Store will block updates to manifest version 1 items.
<li>Chrome will stop packaging manifest version 1 items (or loading
them for development).
</ul>
<h3 id="manifest-v1-2012q1">First Quarter 2013</h3>
<ul>
<li>The Web Store will remove manifest version 1 items from the wall,
search results, and category pages.
<li>Notice emails will be sent to all developers with manifest
version 1 items still in the store reminding them that these
items will be unpublished and providing update instructions.
</ul>
<h3 id="manifest-v1-2012q2">Second Quarter 2013</h3>
<ul>
<li>The Web Store will unpublish all manifest version 1 items.
<li>Final notice emails will be sent to developers with manifest
version 1 items still in the Web Store.
<li>Chrome will continue to load and run installed manifest
version 1 items.
</ul>
<h3 id="manifest-v1-2012q3">Third Quarter 2013</h3>
<ul>
<li>Chrome will stop loading or running manifest
version 1 items.
</ul>
</div>
<h2 id="manifest-v1-changes">Changes between version 1 and 2</h2>
<ul>
<li>
<p>
A content security policy is set to <code>`script-src 'self'
chrome-extension-resource:; object-src 'self'</code> by default. This has
a variety of impacts on developers, described at length in the
<a href="contentSecurityPolicy.html">
<code>content_security_policy</code></a> documentation.
</p>
</li>
<li>
<p>
A package's resources are no longer available by default to external
websites (as the <code>src</code> of an image, or a <code>script</code>
tag). If you want a website to be able to load a resource contained in
your package, you'll need to explicitly whitelist it via the
<a href="manifest.html#web_accessible_resources">
<code>web_accessible_resources</code>
</a> manifest attribute. This is particularly relevant for extensions that
build up an interface on a website via injected content scripts.
</p>
</li>
<li>
<p>
The <code>background_page</code> property has been replaced with a
<code>background</code> property that contains <em>either</em> a
<code>scripts</code> or <code>page</code> property. Details are available
in the <a href="event_pages.html">Event Pages</a> documentation.
</p>
</li>
<li>
<p>Browser action changes:</p>
<ul>
<li>
<p>
The <code>browser_actions</code> key in the manifest, and the
<code>chrome.browserActions</code> API are gone. Use the singular
<a href="browserAction.html">
<code>browser_action</code> and <code>chrome.browserAction</code>
</a> instead.
</p>
</li>
<li>
<p>
The <code>icons</code> property of <code>browser_action</code> has
been removed. Use <a href="browserAction.html#manifest">
the <code>default_icon</code> property
</a> or <a href="browserAction.html#method-setIcon">
<code>chrome.browserAction.setIcon</code>
</a> instead.
</p>
</li>
<li>
<p>
The <code>name</code> property of <code>browser_action</code> has been
removed. Use <a href="browserAction.html#manifest">
the <code>default_title</code> property
</a> or <a href="browserAction.html#method-setTitle">
<code>chrome.browserAction.setTitle</code>
</a> instead.
</p>
</li>
<li>
<p>
The <code>popup</code> property of <code>browser_action</code> has
been removed. Use <a href="browserAction.html#manifest">
the <code>default_popup</code> property
</a> or <a href="browserAction.html#method-setPopup">
<code>chrome.browserAction.setPopup</code>
</a> instead.
</p>
</li>
<li>
<p>
The <code>default_popup</code> property of <code>browser_action</code>
can no longer be specified as an object. It must be a string.
</p>
</li>
</ul>
</li>
<li>
<p>Page action changes:</p>
<ul>
<li>
<p>
The <code>page_actions</code> key in the manifest, and the
<code>chrome.pageActions</code> API are gone. Use the singular
<a href="pageAction.html">
<code>page_action</code> and <code>chrome.pageAction</code>
</a> instead.
</p>
</li>
<li>
<p>
The <code>icons</code> property of <code>page_action</code> has been
removed. Use <a href="pageAction.html#manifest">
the <code>default_icon</code> property
</a> or <a href="pageAction.html#method-setIcon">
<code>chrome.pageAction.setIcon</code>
</a> instead.
</p>
</li>
<li>
<p>
The <code>name</code> property of <code>page_action</code> has been
removed. Use <a href="pageAction.html#manifest">
the <code>default_title</code> property
</a> or <a href="pageAction.html#method-setTitle">
<code>chrome.pageAction.setTitle</code>
</a> instead.
</p>
</li>
<li>
<p>
The <code>popup</code> property of <code>page_action</code> has been
removed. Use <a href="pageAction.html#manifest">
the <code>default_popup</code> property
</a> or <a href="pageAction.html#method-setPopup">
<code>chrome.pageAction.setPopup</code>
</a> instead.
</p>
</li>
<li>
<p>
The <code>default_popup</code> property of <code>page_action</code>
can no longer be specified as an object. It must be a string.
</p>
</li>
<li>
<p>
The <code>chrome.self</code> API has been removed. Use
<a href="extension.html"><code>chrome.extension</code></a> instead.
</p>
</li>
</ul>
</li>
<li>
<p>
<code>chrome.extension.getTabContentses</code> (!!!) and
<code>chrome.extension.getExtensionTabs</code> are gone. Use
<a href="extension.html#method-getViews">
<code>chrome.extension.getViews({ "type": "tab" })</code>
</a> instead.
</p>
</li>
<li>
<p>
<code>Port.tab</code> is gone. Use
<a href="extension.html#type-Port"><code>Port.sender</code></a>
instead.
</p>
</li>
</ul>