Extensions can extend and modify the capability of a browser. Extensions for Firefox are built using the WebExtensions API, a cross-browser system for developing extensions. To a large extent the system is compatible with the extension API supported by Google Chrome and Opera and the W3C Draft Community Group. Extensions written for these browsers will in most cases run in Firefox or Microsoft Edge with just a few changes. The API is also fully compatible with multiprocess Firefox.
If you have ideas or questions, or need help migrating a legacy add-on to use WebExtensions APIs, you can reach us on the dev-addons mailing list or #webextensions on IRC.
Getting started
- What are extensions?
- Your first extension
- Your second extension
- Anatomy of an extension
- Example extensions
Concepts
- JavaScript API overview
- Content scripts
- Match patterns
- Working with files
- Internationalization
- Content Security Policy
- Native messaging
- Using the devtools APIs
- User experience best practices
- Native manifests
User interface
- Introduction
- Browser toolbar button
- Browser toolbar button with a popup
- Address bar button
- Address bar button with a popup
- Context menu items
- Sidebars
- Options page
- Extension pages
- Notifications
- Address bar suggestions
- Developer tools panels
How to
- Intercept HTTP requests
- Modify a web page
- Add a button to the toolbar
- Implement a settings page
- Interact with the clipboard
- Work with the Tabs API
- Work with the Bookmarks API
- Work with the Cookies API
- Work with contextual identities
- Insert external content
Porting
- Porting a Google Chrome extension
- Porting a legacy Firefox extension
- Developing for Firefox for Android
- Embedded WebExtensions
- Comparison with the Add-on SDK
- Comparison with XUL/XPCOM extensions
- Chrome incompatibilities
- Differences between desktop and Android
Firefox workflow
Reference
JavaScript APIs
- alarms
- bookmarks
- browserAction
- browserSettings
- browsingData
- clipboard
- commands
- contentScripts
- contextualIdentities
- cookies
- devtools.inspectedWindow
- devtools.network
- devtools.panels
- downloads
- events
- extension
- extensionTypes
- find
- history
- i18n
- identity
- idle
- management
- menus
- notifications
- omnibox
- pageAction
- permissions
- pkcs11
- privacy
- proxy
- runtime
- sessions
- sidebarAction
- storage
- tabs
- theme
- topSites
- types
- webNavigation
- webRequest
- windows
Manifest keys
- applications
- author
- background
- browser_action
- chrome_settings_overrides
- chrome_url_overrides
- commands
- content_scripts
- content_security_policy
- default_locale
- description
- developer
- devtools_page
- homepage_url
- icons
- incognito
- manifest_version
- name
- omnibox
- optional_permissions
- options_ui
- page_action
- permissions
- protocol_handlers
- short_name
- sidebar_action
- theme
- version
- web_accessible_resources