What's New in Extensions?
This page lists the API and manifest changes
made in recent releases.
Google Chrome 22
New APIs
- The
alarms API
lets you schedule code to run
periodically or at a specified time
in the future.
- The
runtime API
contains useful methods for dealing
with system-wide events.
Additions to Existing Features
- Background pages can optionally be
non-persistent, using a feature we call
event pages.
Event pages run only while they're being used,
and will unload when idle to save resources.
Google Chrome 21
New Features
Additions to Existing Features
Google Chrome 20
New APIs
- The
storage API
lets you store, retrieve, and
track changes to user data.
Manifest changes
Additions to existing APIs
Changes to existing APIs
Google Chrome 19
New APIs
- The browsing data API
lets you remove browsing data from a user's local profile.
- The top sites API
gives you access to the top sites
that are displayed on the new tab page.
Manifest changes
- The new intents
field specifies all intent handlers provided by the extension.
Additions to existing APIs
Google Chrome 18
New APIs
- The debugger API
lets you use the Chrome Developer Tools
on one or more tabs remotely.
- The developer tools APIs
provide support for extending Chrome Developer Tools.
The inspected window API lets you interact with the inspected window.
The network API lets you retrive information about network requests.
The panels API lets you add panels and sidebars.
- The page capture API
lets you save a tab as MHTML.
- The privacy API
lets you control usage of the features
in Chrome that can affect a user's privacy policy.
Manifest changes
- The new
manifest version
field specifies the version of the manifest that your package requires.
As of Chrome 18, you should use
manifest version 2.
- The new
Content Security Policy (CSP)
field is used to define an extension's policies
towards the types of content
that can be loaded and executed by the extension.
- Most background pages only include a list of script files.
For these background pages,
you can use the new
background.scripts property
and Chrome will generate a background page for you.
- The new
web_accessible_resources
field specifies the paths of packaged resources
that are expected to be usable in the context of a web page.
Additions to existing APIs
Google Chrome 17
New APIs
- The
web request API
lets you intercept, block, or
modify requests in-flight and
to observe and analyze traffic.
Manifest changes
- Permissions can be
optional
for the content setting API, the web navigation API, and
the new web request API.
Additions to existing APIs
- The management API's
ExtensionInfo object
now has a
disabledReason
property.
Changes to existing APIs
Google Chrome 16
New APIs
- The
web navigation API
lets extensions receive notifications about the status
of navigation requests.
You can use this API to track navigation events.
- The
optional permissions API
lets you control when users are presented with permission requests.
- The
content settings API
lets extensions customize Chrome’s behavior
on a per-site basis instead of globally.
You can use this API to control whether websites can use features
such as cookies, JavaScript, and plug-ins.
Manifest changes
- The new
requirements field
allows you to declare extension requirements up front.
For example, you can use this field
to specify that your app requires 3D graphics support
in order to use features such as CSS 3D Tranforms or WebGL.
Additions to existing APIs
- The new
chrome.tabs.query() method
gets all tabs that have the specified properties or
all tabs if no properties are specified.
- The new
chrome.tabs.reload() method
reloads a tab and includes the option
to preserve the local cache of the reloaded tab.
- The management API's
ExtensionInfo object
now has an
updateURL
property.
- You can now limit the supported locales for an
external extension
by adding the
supported_locales
attribute
to the external_extensions.json
.
Changes to existing APIs
- The methods
getAllInWindow()
and
getSelected()
have been deprecated.
To get details about all tabs in the specified window, use
chrome.tabs.query()
with the argument {'windowId': windowID}
.
To get the tab that is selected in the specified window, use
chrome.tabs.query()
with the argument {'active': true}
.
- You are no longer required
to specify the
tabID
for the
chrome.tabs.update() method.
When not provided,
the tabID
defaults
to the selected tab of the current window.
- External extension files on Mac OS can now be owned by users
within a wheel group (or an admin group).
- The "experimental" permission is no longer required
for the
window "panel" type.
By default, the "panel" type creates a popup
unless the
--enable-panels
flag is set.
Google Chrome 15
New APIs
Manifest changes
- The new
offline_enabled field
lets you specify that your app works well even without an internet
connection.
Additions to existing APIs
Changes to existing APIs
- The callback for the tabs.update
method is passed
null
instead of the tab details if the
extension does not have the "tabs" permission.
Google Chrome 14
New APIs
- The tts API
lets extensions generate speech from text.
- The ttsEngine API
lets extensions implement text-to-speech (TTS) engines.
- Extensions that are distributed through the Chrome Web Store
can now include Native Client modules.
No special manifest entry is necessary, as you can see from the
NetHack example.
For more information, see the
announcement and the
Native Client documentation.
Manifest changes
Additions to existing APIs
- Context menu items
can now appear even in documents
that have file:// or chrome:// URLs.
Previously, they were restricted to documents with
http:// or https:// URLs.
- An optional
drawAttention
field in
chrome.windows.update()'s
updateInfo
object lets you specify that the window
should entice the user to change focus to it.
- The new
bookmarks.getSubTree()
function lets you retrieve just part of the Bookmarks hierarchy.
Changes to existing APIs
Google Chrome 13
New APIs
Manifest changes
- A new
exclude_matches
item
in the "content_scripts" field
lets you target your content script more precisely.
For details, see
Match patterns and globs.
- New "clipboardRead" and "clipboardWrite"
permissions
specify capabilities for
document.execCommand()
.
Additions to existing APIs
- Content scripts can now make
cross-origin XMLHttpRequests
to the same sites that their parent extension can,
eliminating the need to relay these requests
through a background page.
- You can now use
@run-at
in an imported Greasemonkey script
to control when the script is injected.
It works the same way as
run_at
in content scripts.
Google Chrome 12
Additions to existing APIs
- Two new
chrome.extension
methods—isAllowedFileSchemeAccess() and
isAllowedIncognitoAccess()—let you
determine whether your extension has increased access,
which the user specifies using the extensions management page
(chrome://extensions).
- The chrome.windows.create()
method can now take a
focused
value.
Previously, all new windows had the keyboard focus;
now you can create windows without interrupting the user's typing.
- If the manifest specifies "experimental" permission,
your extension can specify "panel" as the value of
the
type
field in
the chrome.windows.create()
method
or the Window type.
- The onChanged
event of
chrome.cookies
now has a cause
parameter.
- The
chrome.contextMenus
create() and
update()
methods now let you specify a context value of "frame".
Google Chrome 11
Changes to existing APIs
- For security reasons, you can no longer call
chrome.tab.captureVisibleTab()
on just any tab.
Instead, you now must have
host permission
for the URL displayed by that tab.
To get the previous behavior,
specify
<all_urls>
for the host permission.
Additions to existing APIs
- The management API's
ExtensionInfo object
now has a
homepageUrl
property.
- The management API now lets you get the icons of
disabled apps and extensions.
Also, you can now modify the regular icon's URL
to get its disabled equivalent.
See IconInfo for details.
- The cookies API
set()
and remove() methods
can now take callbacks.
Google Chrome 10
Manifest changes
- The new background permission
extends the life of Chrome,
allowing your extension or app
to run even when Chrome has no windows open.
Additions to existing APIs
Google Chrome 9
New APIs
- The omnibox API allows you to
register a keyword with Chrome's address bar.
Manifest changes
- The homepage_url field
lets you specify the extension or app's homepage.
Additions to existing APIs
- The Tab object
now has a
pinned
property
that's reflected in various chrome.tabs
methods.
For example,
you can create
a pinned tab.
- The chrome.windows.create()
method can now take a list of URLs,
letting you create multiple tabs in the new window.
- The new
chrome.management.get() method
lets you get information about the specified extension or app.
Google Chrome 8
We took a break for Chrome 8.
No API or manifest changes worth noting.
Google Chrome 7
New APIs
- All users can now install
apps;
packaged apps can use extension APIs.
- The management API
lets you work with installed apps and extensions.
Manifest changes
- Introduced split incognito
mode as the default for installable web apps
(also available to extensions).
- The tabs API
create()
and update()
methods
no longer require the "tabs" permission, removing one common cause of
scary dialogs.
Google Chrome 6
New APIs
- The context menus API allows you to
add context menus to pages or specific objects on a page.
- The cookies API allows you to manage the
browser's cookie system.
- The idle API allows you to detect when the
machine's idle state changes.
Additions to existing APIs
Manifest changes
- The geolocation permission
gives an extension access to the user's physical location.
- Match patterns can now select all
schemes or all URLs.
- Access to file:/// URLs no longer triggers the "access to your machine"
security warning, but now requires user opt-in from the extensions
management page.