[ { "description": "Displays a sidebar that lets you take notes on web pages.", "javascript_apis": [ "storage.local", "tabs.onActivated", "tabs.onUpdated", "tabs.query", "tabs.Tab", "windows.getCurrent", "windows.Window" ], "name": "annotate-page" }, { "description": "Adds a page action to the toolbar. Click the button to apply a red border using injected CSS. Click the button again to remove the CSS.", "javascript_apis": [ "pageAction.getTitle", "pageAction.onClicked", "pageAction.setIcon", "pageAction.setTitle", "pageAction.show", "tabs.insertCSS", "tabs.onUpdated", "tabs.query", "tabs.removeCSS", "tabs.Tab" ], "name": "apply-css" }, { "description": "Adds a browser action icon to the toolbar. Click the button to choose a beast. The active tab's body content is then replaced with a picture of the chosen beast.", "javascript_apis": [ "runtime.getURL", "runtime.onMessage", "scripting.insertCSS", "scripting.removeCSS", "tabs.executeScript", "tabs.query", "tabs.sendMessage", "tabs.Tab" ], "name": "beastify" }, { "description": "Adds a bookmark button to the toolbar. Click the button to toggle a bookmark for the current page.", "javascript_apis": [ "bookmarks.create", "bookmarks.onCreated", "bookmarks.onRemoved", "bookmarks.remove", "bookmarks.search", "browserAction.onClicked", "browserAction.setIcon", "browserAction.setTitle", "tabs.onActivated", "tabs.onUpdated", "tabs.query", "tabs.Tab", "windows.onFocusChanged" ], "name": "bookmark-it" }, { "description": "Adds a solid red border to all webpages matching mozilla.org.", "javascript_apis": [], "name": "borderify" }, { "description": "Show a page action after a period of inactivity. Show cat gifs when the page action is clicked.", "javascript_apis": [ "alarms.clearAll", "alarms.create", "alarms.onAlarm", "pageAction.hide", "pageAction.onClicked", "pageAction.show", "tabs.get", "tabs.onActivated", "tabs.onUpdated", "tabs.query", "tabs.update" ], "name": "chill-out" }, { "description": "Demonstrates using the commands API to set up a keyboard shortcut. The shortcut created is accessed using Ctrl+Shift+U (Command+Shift+U on a Mac).", "javascript_apis": [ "commands.getAll", "commands.onCommand", "commands.reset", "commands.update", "tabs.create" ], "name": "commands" }, { "description": "Illustrates how an extension can register URL-matching content scripts at runtime.", "javascript_apis": [ "contentScripts.register", "runtime.onMessage", "runtime.sendMessage" ], "name": "content-script-register" }, { "description": "Add a context menu option to links to copy the link to the clipboard, as plain text and as a link in rich HTML.", "javascript_apis": [ "contextMenus.create", "contextMenus.onClicked", "tabs.executeScript" ], "name": "context-menu-copy-link-with-types" }, { "description": "List, create, and remove contextual identities.", "javascript_apis": [ "contextualIdentities.query", "tabs.create", "tabs.query", "tabs.remove" ], "name": "contextual-identities" }, { "description": "Allows the user to customize the background color and tiled pattern on sites they visit, and also saves their preferences via a cookie, reapplying them whenever they revisit a site they previously customized.", "javascript_apis": [ "cookies.get", "cookies.onChanged", "cookies.remove", "cookies.set", "extension.getURL", "runtime.onMessage", "tabs.onActivated", "tabs.onUpdated", "tabs.query", "tabs.Tab", "tabs.sendMessage" ], "name": "cookie-bg-picker" }, { "description": "Demonstrates some of the devtools APIs.", "javascript_apis": [ "devtools.inspectedWindow", "devtools.panels", "runtime.getURL", "runtime.onMessage", "runtime.sendMessage", "tabs.executeScript" ], "name": "devtools-panels" }, { "description": "Demonstrates adding a custom search engine with the chrome_settings_overrides key.", "javascript_apis": [], "name": "discogs-search" }, { "description": "Demonstrates how to block network requests without host permissions using the declarativeNetRequest API with the declarative_net_request manifest key.", "javascript_apis": [ "declarativeNetRequest.Rule", "declarativeNetRequest.RuleAction", "declarativeNetRequest.RuleCondition" ], "name": "dnr-block-only" }, { "description": "Demonstrates a generic way to request host permissions and register declarativeNetRequest rules to modify network requests, without any install-time permission warnings. The options_ui page offers a way to request permissions and register DNR rules.", "javascript_apis": [ "declarativeNetRequest.Rule", "declarativeNetRequest.getDynamicRules", "declarativeNetRequest.getSessionRules", "declarativeNetRequest.updateDynamicRules", "declarativeNetRequest.updateSessionRules", "permissions.getAll", "permissions.remove", "permissions.request" ], "name": "dnr-dynamic-with-options" }, { "description": "Demonstrates multiple ways to redirect requests using the declarativeNetRequest API through the declarative_net_request manifest key. Demonstrates aspects of Manifest Version 3 (MV3): action, host_permissions, and web_accessible_resources, and includes a comparison with Manifest Version 2 (MV2).", "javascript_apis": [ "declarativeNetRequest.Redirect", "declarativeNetRequest.Rule", "declarativeNetRequest.RuleAction", "declarativeNetRequest.RuleCondition", "declarativeNetRequest.URLTransform", "permissions.contains", "permissions.remove", "permissions.request" ], "name": "dnr-redirect-url" }, { "description": "Dynamic theme example", "javascript_apis": ["alarms.create", "alarms.onAlarm", "theme.update"], "name": "dynamic-theme" }, { "description": "Replaces words with emojis.", "javascript_apis": [], "name": "emoji-substitution" }, { "description": "Demonstrates how to configure an extension with eslint.", "javascript_apis": [], "name": "eslint-example" }, { "description": "Demonstrates how to use export helpers like cloneInto to share objects with page scripts.", "javascript_apis": [ "notifications.create", "runtime.onMessage", "runtime.sendMessage" ], "name": "export-helpers" }, { "description": "An example options page, letting you store your favourite colour.", "javascript_apis": [ "browserAction.onClicked", "runtime.openOptionsPage", "storage.managed", "storage.sync" ], "name": "favourite-colour" }, { "description": "Demonstration of the find API.", "javascript_apis": [ "browserAction.onClicked", "extension.getBackgroundPage", "find.find", "find.highlightResults", "runtime.getURL", "runtime.onMessage", "runtime.sendMessage", "tabs.create", "tabs.query", "tabs.Tab" ], "name": "find-across-tabs" }, { "description": "Demonstrates how to use the omnibox API.", "javascript_apis": [ "omnibox.onInputChanged", "omnibox.onInputEntered", "omnibox.setDefaultSuggestion", "tabs.create", "tabs.update" ], "name": "firefox-code-search" }, { "description": "Demonstrates how to use the browsingData API.", "javascript_apis": [ "browserAction.onClicked", "browsingData.remove", "notifications.create", "storage.local" ], "name": "forget-it" }, { "description": "Demonstrates how to use the identity API.", "javascript_apis": [ "browserAction.onClicked", "identity.getRedirectURL", "identity.launchWebAuthFlow", "notifications.create" ], "name": "google-userinfo" }, { "description": "History API demo: deletes history items for a given domain", "javascript_apis": [ "history.deleteUrl", "history.search", "pageAction.show", "tabs.onUpdated", "tabs.query" ], "name": "history-deleter" }, { "description": "Demonstrates how to rewrite HTTP responses using the webRequest.filterResponseData() API.", "javascript_apis": [ "webRequest.filterResponseData", "webRequest.onBeforeRequest" ], "name": "http-response" }, { "description": "Using a sidebar, illustrates the use of file picker and drag and drop. A content script replaces the current page content with the chosen image.", "javascript_apis": [ "extension.getURL", "runtime.onMessage", "tabs.executeScript", "tabs.query", "tabs.sendMessage" ], "name": "imagify" }, { "description": "Shows the last downloaded item, and lets you open or delete it.", "javascript_apis": [ "downloads.erase", "downloads.getFileIcon", "downloads.open", "downloads.removeFile", "downloads.search" ], "name": "latest-download" }, { "description": "This extensions list the cookies in the active tab.", "javascript_apis": ["cookies.getAll", "tabs.query"], "name": "list-cookies" }, { "description": "Shows how to set up a single letter access key for a menu item.", "javascript_apis": [ "i18n.getMessage", "menus.update", "menus.create", "menus.onClicked" ], "name": "menu-accesskey-visible" }, { "description": "Demonstrates adding and manipulating menu items using the menus API.", "javascript_apis": [ "i18n.getMessage", "menus.create", "menus.onClicked", "menus.remove", "menus.update", "runtime.lastError", "tabs.executeScript" ], "name": "menu-demo" }, { "description": "Shows how an extension can listen for the display of a menu and then add, remove, or update its menu items.", "javascript_apis": [ "menus.create", "menus.onClicked", "menus.onShown", "menus.refresh", "menus.update", "tabs.update" ], "name": "menu-labelled-open" }, { "description": "Shows how to detect the page element at the cursor position and remove that element, or a parent element, from the page. This example includes use of the polyfill, illustrating cross-browser extension development.", "javascript_apis": [ "menus.create", "menus.onClicked", "menus.getTargetElement", "pageAction.openPopup", "pageAction.show", "tabs.executeScript" ], "name": "menu-remove-element" }, { "description": "Illustrates how to retrieve a list of search engines and issue a search request, using search engine details added to the context menu for selected text.", "javascript_apis": [ "search.search", "search.get", "menus.create", "menus.onClicked" ], "name": "menu-search" }, { "description": "This example shows two methods of testing an extension: running tests from within the extension, and running tests from the command line using Karma.", "javascript_apis": ["runtime.onMessage", "runtime.sendMessage"], "name": "mocha-client-tests" }, { "description": "Example of native messaging, including a Python application and an extension which exchanges messages with it.", "javascript_apis": ["browserAction.onClicked", "runtime.connectNative"], "name": "native-messaging" }, { "description": "Demonstration of the webNavigation API, showing basic stats about which pages you've visited.", "javascript_apis": [ "storage.local", "webNavigation.onCommitted", "webNavigation.onCompleted" ], "name": "navigation-stats" }, { "description": "Shows a localized notification when the user clicks on links.", "javascript_apis": [ "extension.getURL", "i18n.getMessage", "notifications.create", "runtime.onMessage", "runtime.sendMessage" ], "name": "notify-link-clicks-i18n" }, { "description": "Adds a browser action icon to the toolbar. When the browser action is clicked, the add-on opens a page that was packaged with it.", "javascript_apis": ["browserAction.onClicked", "tabs.create"], "name": "open-my-page-button" }, { "description": "Demonstrates how a web page and a content script can exchange messages. Visit https://mdn.github.io/webextensions-examples/content-script-page-script-messaging.html for the demo.", "javascript_apis": [], "name": "page-to-extension-messaging" }, { "description": "Demonstrates optional permissions using the permissions API.", "javascript_apis": [ "browserAction.onClicked", "permissions.getAll", "permissions.remove", "permissions.request", "runtime.getURL", "tabs.create" ], "name": "permissions" }, { "description": "Example dynamic theme: sets a dark theme for private windows.", "javascript_apis": [ "theme.reset", "theme.update", "windows.getAll", "windows.onCreated" ], "name": "private-browsing-theme" }, { "description": "Uses the proxy API to block requests to hosts specified on a list.", "javascript_apis": [ "extension.getURL", "proxy.onRequest", "proxy.onError", "storage.local", "storage.onChanged" ], "name": "proxy-blocker" }, { "description": "Allows the user to make quick notes by clicking a button and entering text into the resulting popup. The notes are saved in storage.", "javascript_apis": ["storage.local"], "name": "quicknote" }, { "description": "Shows how to get details about a request's TLS connection.", "javascript_apis": ["webRequest.getSecurityInfo"], "name": "root-cert-stats" }, { "description": "Demo of various runtime APIs.", "javascript_apis": [ "browserAction.onClicked", "notifications.create", "runtime.getManifest", "runtime.onInstalled", "runtime.reload" ], "name": "runtime-examples" }, { "description": "Demonstrates how to write to the clipboard from a content script", "javascript_apis": [], "name": "selection-to-clipboard" }, { "description": "Demonstrates how to retrieve extension-defined state from restored tabs.", "javascript_apis": [ "menus.create", "menus.onClicked", "sessions.getTabValue", "sessions.setTabValue", "tabs.insertCSS", "tabs.onCreated", "tabs.onUpdated", "tabs.query" ], "name": "session-state" }, { "description": "Demonstrates how to use the idb-file-storage library to store and manipulate files in an extension.", "javascript_apis": [ "browserAction.onClicked", "contextMenus.create", "contextMenus.onClicked", "runtime.onMessage", "runtime.sendMessage", "tabs.create", "windows.create" ], "name": "store-collected-images" }, { "description": "Performs basic authentication by supplying stored credentials.", "javascript_apis": [ "storage.local", "webRequest.onAuthRequired", "webRequest.onCompleted", "webRequest.onErrorOccurred" ], "name": "stored-credentials" }, { "description": "Demonstrates tab manipulation: opening, closing, moving, zooming tabs.", "javascript_apis": [ "browserAction.setBadgeBackgroundColor", "browserAction.setBadgeText", "tabs.create", "tabs.duplicate", "tabs.getZoom", "tabs.move", "tabs.onCreated", "tabs.onMoved", "tabs.onRemoved", "tabs.query", "tabs.reload", "tabs.remove", "tabs.setZoom", "tabs.Tab", "tabs.update" ], "name": "tabs-tabs-tabs" }, { "description": "A sidebar that integrates with the current theme.", "javascript_apis": [ "theme.getCurrent", "theme.onUpdated", "windows.getCurrent" ], "name": "theme-integrated-sidebar" }, { "description": "An example of how to use the management API for themes.", "javascript_apis": ["management.getAll", "management.setEnabled"], "name": "theme-switcher" }, { "description": "Demonstration of how to use the prefers-color-scheme media query to adapt an SVG icon to dark and light themes.", "javascript_apis": ["runtime.getURL","tabs.query", "tabs.create", "tabs.update", "management.getAll","management.setEnabled","management.onEnabled", "pageAction.onClicked","action.onClicked"], "name": "themed-icons" }, { "description": "A collection of themes illustrating:", "javascript_apis": [], "name": "themes" }, { "description": "Demonstration of the topSites API.", "javascript_apis": ["topSites.get"], "name": "top-sites" }, { "description": "Demonstrates using the webRequest API to rewrite the User-Agent HTTP header.", "javascript_apis": [ "extension.getBackgroundPage", "webRequest.onBeforeSendHeaders" ], "name": "user-agent-rewriter" }, { "description": "Illustrates how an extension can register URL-matching user scripts at runtime (Manifest Version 2 only).", "javascript_apis": [ "userScripts_legacy.register", "runtime.onMessage", "runtime.sendMessage" ], "name": "user-script-register" }, { "description": "A user script manager demonstrating the userScripts API, permissions API, optional_permissions, and Manifest Version 3 (MV3).", "javascript_apis": [ "userScripts.configureWorld", "userScripts.getScripts", "userScripts.register", "userScripts.resetWorldConfiguration", "userScripts.unregister", "userScripts.update", "permissions.onAdded", "permissions.onRemoved", "permissions.request", "runtime.onInstalled", "runtime.onMessage", "runtime.onUserScriptMessage", "runtime.openOptionsPage", "runtime.sendMessage", "storage.local", "storage.onChanged", "storage.session" ], "name": "userScripts-mv3" }, { "description": "Demonstrates how to use webpack to package npm modules in an extension.", "javascript_apis": ["runtime.onMessage", "runtime.sendMessage"], "name": "webpack-modules" }, { "description": "Demonstrates how to manipulate windows: opening, closing, resizing windows.", "javascript_apis": [ "windows.create", "windows.getAll", "windows.getCurrent", "windows.remove", "windows.update", "windows.Window" ], "name": "window-manipulator" }, { "description": "Demonstrates the use of protocol handlers.", "javascript_apis": [], "name": "open-irc-links" } ]