JavaScript APIs

The WebExtension JavaScript APIs can be used inside the add-on's background scripts and in any browser action or page action popups that the add-on defines. A few of these APIs can also be accessed by an add-on's content scripts (see the list in the content script guide).

To use the more powerful APIs you need to request permission in your add-on's manifest.json.

You can access the APIs using the browser namespace:

function logTabs(tabs) {
  console.log(tabs);
}

browser.tabs.query({currentWindow: true}, logTabs);

Many of the APIs are asynchronous, returning a Promise:

function logCookie(c) {
  console.log(c);
}

function logError(e) {
  console.error(e);
}

var setCookie = browser.cookies.set(
  {url: "https://developer.mozilla.org/"}
);
setCookie.then(logCookie, logError);
Note that this is different from Chrome's extension system, which uses the chrome namespace instead of browser, and which uses callbacks instead of promises for asynchronous functions.

As a porting aid, the Firefox implementation of WebExtensions supports chrome and callbacks as well as browser and promises.

Mozilla has also written a polyfill which enables code that uses browser and promises to work unchanged in Chrome: https://github.com/mozilla/webextension-polyfill.

Not all browsers support all the APIs: for the details, see Browser support for JavaScript APIs.

alarms

Schedule code to run at a specific time in the future. This is like setTimeout() and setInterval(), except that those functions don't work with background pages that are loaded on demand.

API reference documentation

bookmarks

The WebExtensions bookmarks API lets an add-on interact with and manipulate the browser's bookmarking system. You can use it to bookmark pages, retrieve existing bookmarks, and edit, remove, and organize bookmarks.

API reference documentation

browserAction

If you specify a popup, it will be shown — and the content will be loaded — when the user clicks the icon. If you do not specify a popup, then when the user clicks the icon an event is dispatched to your extension.

API reference documentation

commands

Listen for the user executing commands that you have registered using the commands manifest.json key.

API reference documentation

contextMenus

Add items to the browser's context menu, to be displayed in the contexts you specify. For example, you can show the item only when the user clicks on an image, or on an editable element, or when part of a page is selected.

API reference documentation

cookies

Enables WebExtensions to get and set cookies, and be notified when they change.

API reference documentation

downloads

Enables WebExtensions to interact with the browser's download manager. You can use this API module to download files, cancel, pause, resume downloads, and show downloaded files in the file manager.

API reference documentation

events

Common types used by APIs that dispatch events.

API reference documentation

extension

Utilities related to your add-on. Get URLs to resources packages with your add-on, get the Window object for your add-on's pages, get the values for various settings. Note that the messaging APIs in this module are deprecated in favor of the equivalent APIs in the runtime module.

API reference documentation

extensionTypes

Some common types used in other WebExtension APIs.

API reference documentation

history

Use the history API to interact with the browser history.

API reference documentation

i18n

Functions to internationalize your add-on. You can use these APIs to get localized strings from locale files packaged with your add-on, find out the browser's current language, and find out the value of its Accept-Language header.

API reference documentation

idle

Find out when the user's system is idle, locked, or active.

API reference documentation

management

Most of these operations require the "management" API permission. Operations that don't provide access to other add-ons don't require this permission.

API reference documentation

notifications

Display notifications to the user, using the underlying operating system's notification mechanism. Because this API uses the operating system's notification mechanism, the details of how notifications appear and behave may differ according to the operating system and the user's settings.

API reference documentation

pageAction

A page action is a clickable icon inside the browser's address bar.

API reference documentation

runtime

This module provides information about your add-on and the environment it's running in.

API reference documentation

storage

Enables WebExtensions to store and retrieve data, and listen for changes to stored items.

API reference documentation

tabs

Interact with the browser's tab system.

API reference documentation

webNavigation

Add event listeners for the various stages of a navigation. A navigation consists of a frame in the browser transitioning from one URL to another, usually (but not always) in response to a user action like clicking a link or entering a URL in the location bar.

API reference documentation

webRequest

Add event listeners for the various stages of making an HTTP request. The event listener receives detailed information about the request, and can modify or cancel the request.

API reference documentation

windows

Interact with browser windows. You can use this API to get information about open windows and to open, modify, and close windows. You can also listen for window open, close, and activate events.

API reference documentation

Document Tags and Contributors

 Contributors to this page: wbamberg, Sheppy
 Last updated by: wbamberg,