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 specific issues.
Developers should specify which version of the manifest specification their
package targets by setting a manifest_version
key in their
manifests.
When targeting Chrome 18 and above, developers should specify
'manifest_version': 2
:
{ ..., "manifest_version": 2, ... }
Manifest version 1 is deprecated in Chrome 18 and above, but version
2 is not yet required. Extensions, applications, and themes that
aren't ready to make the jump to the new manifest version in Chrome 18 can
either explicitly specify version 1
, or leave the key off
entirely.
At some point in the future, support for manifest version 1 will be removed. Ample warning will be provided, beginning with warnings when loading unpacked version 1 extensions, and escalating from there over time.
Setting manifest_version
2 in Chrome 17 or lower is not
recommended. If your extension needs to work in older versions of Chrome,
stick with version 1 for the moment. We'll give you ample warning before
version 1 stops working.
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 the
content_security_policy
documentation.
A package's resources are no longer available by default to external
websites (as the src
of an image, or a script
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
web_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 a
background
property that contains either a
scripts
or page
property. Details are available
in the Background Pages documentation.
A variety of previously deprecated features have been removed entirely:
The page_actions
key in the manifest, and the
chrome.pageActions
API are gone. Use the singular
page_action
and chrome.pageAction
instead.
chrome.extension.getTabContentses
(!!!) and
chrome.extension.getExtensionTabs
are gone. Use
chrome.extension.getViews({ "type": "tab" })
instead.
Port.tab
is gone. Use
Port.sender
instead.
The icons
property of page_action
has been
removed. Use
the default_icon
property
or
chrome.pageAction.setIcon
instead.
The name
property of page_action
has been
removed. Use
the default_title
property
or
chrome.pageAction.setTitle
instead.
The popup
property of page_action
has been
removed. Use
the default_popup
property
or
chrome.pageAction.setPopup
instead.
The default_popup
property of page_action
can no longer be specified as an object. It must be a string.
The chrome.self
API has been removed. Use
chrome.extension
instead.