npm / web-ext
web-ext
What changed in web-ext 5 to 10, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-15.
8 breaking1 deprecations11 new APIs and options4 behavior and defaults14 tooling9 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initweb-ext 1017 changes
Breaking changes 2
The default export is renamed to
webExt.Node 22 is now used by default.
New APIs and options 3
Adds the --enterprise flag to the lint command.
Added --chromium-pref to the CLI options.
Added this preference to the default Firefox prefs.
Behavior and default changes 2
Logs the response data when a PATCH request fails.
Updated Firefox default prefs so web-ext run enables content scripts visibility in the devtools debugger panel by default.
Tooling 5
Adds support for Firefox 158 schema data when linting extensions.
Supports Firefox schemas through Fx157, allowing linting against newer Firefox schemas.
The lint command adds support for the Firefox 154.0b4 schema.
Adds a new Firefox schema for web-ext lint.
web-ext lint now supports Firefox 149 schemas.
Fixes and other changes 5
Fixes the default amoBaseUrl value when signing from the Node API.
Fixes silent reload failures on Chrome 125 and earlier.
Fixes files not being ignored when sourceDir contains glob characters.
Avoids auto-reloading for a recently created source directory.
Loads config files when their paths contain URL characters.
web-ext 96 changes
Breaking changes 1
web-ext no longer accepts .js config files; rename the config file to .cjs or .mjs and export the config accordingly.
Deprecations 1
This is likely the last release officially supporting Node 20, which developers should consider when planning upgrades.
Tooling 3
web-ext lint now supports Firefox 148 schemas, allowing developers to lint against that version.
web-ext lint now supports Firefox 145 and 146 schemas.
web-ext lint now warns when the add-on ID is missing from the manifest file.
Fixes and other changes 1
Launched Chromium now ensures navigator.webdriver is not true.
web-ext 82 changes
Breaking changes 1
The command was heavily refactored and is not backward compatible with v7.
New APIs and options 1
The command can now create new add-ons from the command line, not just versions.
web-ext 74 changes
Breaking changes 1
Support for NodeJS 12 was dropped.
New APIs and options 2
This new web-ext lint flag enables privileged extensions linting mode.
This keyword is now allowed in the custom extension CSP.
Tooling 1
Linting now detects and reports privileged permissions and properties based on the extension manifest.json file.
web-ext 68 changes
Breaking changes 2
The filename option moved into the build options, so config files setting it need to be updated.
Support for Node.js 10 was dropped.
New APIs and options 2
Some adb utility methods are now exported for use in third-party Node.js scripts that include web-ext as a library.
The --watch-files option was added as an additional alias for --watch-file.
Behavior and default changes 1
The --watch-file option can now watch more than one file.
Tooling 3
The browser compatibility data used by linting was updated.
The linter imported Firefox 85.0b5, 86.0b5, and 87.0b6 API schema.
Linting now supports Numeric Separators.
web-ext 510 changes
Breaking changes 1
web-ext run uses a copy of the specified profile directory instead of modifying it, unless --keep-profile-changes is passed.
New APIs and options 3
When running Firefox Android, this option removes old artifact directories from the target adb device automatically.
Pass this option to keep profile changes when running with an existing profile directory.
The package now provides explicit ESM exports in package.json.
Behavior and default changes 1
web-ext run detects and warns when old artifact directories remain on the target adb device.
Tooling 2
Linting uses the imported Firefox 79 APIs Schema.
Linting supports optional chaining, BigInt, and dynamic imports.
Fixes and other changes 3
Selection of non-Default Chrome profiles is fixed.
web-ext looks for the extension ID in manifest.json browser_specific_settings, falling back to applications when browser_specific_settings is absent or lacks gecko.
The firefoxdeveloperedition alias now resolves correctly on macOS.