Extensions, themes, and applications are simply bundles of resources, wrapped up with a
manifest.json
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 manifest_version
key in their manifests.
Current version
Developers should currently specify 'manifest_version': 2
:
{
...,
"manifest_version": 2,
...
}
Manifest version 1 was deprecated in Chrome 18, and support will be phased out according to the following schedule.
Manifest version 1 support schedule
August 2012
- The Web Store will block creation of new manifest version 1 extensions.
- The Web Store will allow updates to existing manifest version 1 extensions.
March 2013
- The Web Store will block updates to manifest version 1 extensions on March 4th, 2013.
April 2013
- Chrome 27 Beta will stop packaging manifest version 1 extensions (or loading them for development).
June 2013
- The Web Store will remove manifest version 1 extensions from the wall, search results, and category pages.
- Notice emails will be sent to all developers with manifest version 1 extensions still in the store reminding them that these extensions will be unpublished and providing update instructions.
September 2013
- The Web Store will unpublish all manifest version 1 extensions.
- Final notice emails will be sent to developers with manifest version 1 extensions still in the Web Store.
- Chrome will continue to load and run installed manifest version 1 extensions.
January 2014
- Chrome will stop loading or running manifest version 1 extensions.
Changes between version 1 and 2
- A content security policy is set to
`script-src 'self'; object-src 'self';
by default. This has a variety of impacts on developers, described at length in thecontent_security_policy
documentation. - A package's resources are no longer available by default to external websites (as the
src
of an image, or ascript
tag). If you want a website to be able to load a resource contained in your package, you'll need to explicitly allowlist it via theweb_accessible_resources
manifest attribute. This is particularly relevant for extensions that build up an interface on a website via injected content scripts. - The
background_page
property has been replaced with abackground
property that contains either ascripts
orpage
property. Details are available in the Event Pages documentation. Browser action changes:
- The
browser_actions
key in the manifest, and thechrome.browserActions
API are gone. Use the singularbrowser_action
andchrome.browserAction
instead. - The
icons
property ofbrowser_action
has been removed. Use thedefault_icon
property or browserAction.setIcon instead. - The
name
property ofbrowser_action
has been removed. Use thedefault_title
property or browserAction.setTitle instead. - The
popup
property ofbrowser_action
has been removed. Use thedefault_popup
property or browserAction.setPopup instead. - The
default_popup
property ofbrowser_action
can no longer be specified as an object. It must be a string.
- The
Page action changes:
- The
page_actions
key in the manifest, and thechrome.pageActions
API are gone. Use the singularpage_action
andchrome.pageAction
instead. - The
icons
property ofpage_action
has been removed. Use thedefault_icon
property or pageAction.setIcon instead. - The
name
property ofpage_action
has been removed. Use thedefault_title
property or pageAction.setTitle instead. - The
popup
property ofpage_action
has been removed. Use thedefault_popup
property or pageAction.setPopup instead. - The
default_popup
property ofpage_action
can no longer be specified as an object. It must be a string.
- The
The
chrome.self
API has been removed. Usechrome.extension
instead.chrome.extension.getTabContentses
(!!!) andchrome.extension.getExtensionTabs
are gone. Use extension.getViews instead.Port.tab
is gone. Use runtime.Port instead.