You’re reading the English version of this content since no translation exists yet for this locale. Help us translate this article!
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
- Firefox workflow overview
- Example extensions
- What next?
Concepts
- JavaScript API overview
- Content scripts
- Match patterns
- Working with files
- Internationalization
- Security best practices
- Content Security Policy
- Native messaging
- Using the devtools APIs
- Native manifests
- User actions
- Extension lifecycle best practices
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
- Browser styles
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
- Work with userScripts
- Insert external content
Porting
- Firefox differentiators
- Porting a Google Chrome extension
- Porting a legacy Firefox extension
- Developing for Firefox for Android
- Developing for Thunderbird
- Embedded WebExtensions
- Comparison with the Add-on SDK
- Comparison with XUL/XPCOM extensions
- Chrome incompatibilities
- Differences between desktop and Android
- Differences between API implementations
Firefox workflow
- User experience
- Installation
- Debugging
- Testing persistent and restart features
- Getting started with web-ext
- web-ext command reference
- Extensions and the Add-on ID
- Distribution options
- Request the right permissions
- Sharing objects with page scripts
- Retiring your extension
- Tips and Tricks
- Browser Extension Development Tools
Reference
JavaScript APIs
- alarms
- bookmarks
- browserAction
- browserSettings
- browsingData
- captivePortal
- clipboard
- commands
- contentScripts
- contextualIdentities
- cookies
- devtools.inspectedWindow
- devtools.network
- devtools.panels
- dns
- downloads
- events
- extension
- extensionTypes
- find
- history
- i18n
- identity
- idle
- management
- menus
- notifications
- omnibox
- pageAction
- permissions
- pkcs11
- privacy
- proxy
- runtime
- search
- sessions
- sidebarAction
- storage
- tabs
- theme
- topSites
- types
- userScripts
- webNavigation
- webRequest
- windows
Manifest keys
- author
- background
- browser_action
- browser_specific_settings
- chrome_settings_overrides
- chrome_url_overrides
- commands
- content_scripts
- content_security_policy
- default_locale
- description
- developer
- devtools_page
- dictionaries
- externally_connectable
- homepage_url
- icons
- incognito
- manifest_version
- name
- offline_enabled
- omnibox
- optional_permissions
- options_page
- options_ui
- page_action
- permissions
- protocol_handlers
- short_name
- sidebar_action
- theme
- theme_experiment
- user_scripts
- version
- version_name
- web_accessible_resources