Extension Workshop
Extension Basics
Getting started
Mozilla Developer Network
Documentation Topics
Develop
Firefox Tools
User Experience
Firefox for Android
Port to Firefox
Test and debug
Getting Started
Unique Firefox Capabilities
Firefox Workflow Overview
About the WebExtensions API
Manifest V3
Manifest V3 migration guide
What is Manifest V3?
Manifest V3 changes
Migration checklist
Cross-Browser Development
Browser Compatibility
Namespace
Asynchronous
API Coverage
Manifest keys
More information
Build cross-browser extensions
Firefox Tools
Build an extension in 5 minutes
Browser Extension Development Tools
Boilerplating tools
Coding tools
Testing and debugging tools
Translation tools
Tools for Firefox for Android
Choosing a Firefox version for extension development
Firefox editions
Firefox version and their web extension development capabilities
Getting started with web-ext
Installation
Update
Using web-ext
Check your code
Test and debug
Package, sign, and publish
Use the configuration file
Advanced topics
See also
web-ext v8 command reference
What's new
Commands
web-ext build
web-ext docs
web-ext dump-config
web-ext lint
web-ext run
web-ext sign
Global options
Setting option environment variables
See also
web-ext v7 command reference
Commands
Global options
Setting option environment variables
See also
Web-ext Webpack plug-in
Browser API Polyfill
Extensions and the Add-on ID
Basic workflow with no add-on ID
When do you need an add-on ID?
User Experience
Build a secure extension
Request the right permissions
Introduction
Advised permissions
Avoid unnecessary permissions
Request permissions at runtime
Add information about permissions to your extensions AMO page
Best practices for collecting user data consents
Know your privacy settings
Get prepared
Create a privacy policy
Prompt after install
Determine your consent flow
Your consent dialogs
Build an accessible extension
Onboard, upboard, offboard users
Onboarding
Upboarding
Offboarding
User experience best practices
1. Keep it focused
2. Give users what they need, where they need it
3. Keep the user informed
4. Be Firefoxy in look and feel
5. Great onboarding experience
6. Test, test, and then test again
Mobile
Differences between desktop and Android extensions
Introduction
User interface
Native application interaction
Permissions
Storage
User experience guidelines for mobile extensions
Introduction
The basics
The extra mile
The last mile
Developing extensions for Firefox for Android
Set up your computer and Android emulator or device
Check for Firefox for Android compatibility
Install and run your extension in Firefox for Android
Debug your extension
Manifest V3 compatibility
GeckoView Extensions (Android library)
Port Your Extension
Porting a Google Chrome Extension
Debug and Test
Debugging
Developer tools toolbox
Debugging background scripts
Debugging options pages
Debugging popups
Debugging content scripts
Debugging sidebars
Debugging storage
Debugging developer tools pages and panels
Debug permission requests
Debugging browser restarts
Temporary Installation in Firefox
Reloading a temporary extension
Using the command line
Detecting temporary installation
Limitations
Testing persistent and restart features
What is an add-on ID?
What is a Firefox profile?
Extension behavior in Firefox
What do I do to ensure I can test my extension?
Test permission requests
Permission grant behavior during testing
Observe or verify install time permission requests
Retest runtime permission grants
Known issues
Content scripts don't appear in DevTools
Extension source don't update in DevTools
"Destroyed actor" errors when debugging Android
Publish
Get your extension signed