Extensions can extend and modify the capability of a browser. Extensions for Firefox are built using WebExtension APIs, 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 WebExtension APIs, you can reach us on the dev-addons mailing list or #extdev on IRC.
Getting started
- What are extensions?
- Your first extension
- Your second extension
- Anatomy of an extension
- Example extensions
How to
- Intercept HTTP requests
- Modify a web page
- Add a button to the toolbar
- Implement a settings page
- Interact with the clipboard
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
- Bundled web pages
- Notifications
- Address bar suggestions
- Developer tools panels
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
Porting
- Porting a Google Chrome extension
- Porting a legacy Firefox extension
- 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
- commands
- contextMenus
- contextualIdentities
- cookies
- devtools.inspectedWindow
- devtools.network
- devtools.panels
- downloads
- events
- extension
- extensionTypes
- history
- i18n
- identity
- idle
- management
- notifications
- omnibox
- pageAction
- permissions
- 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