Firefox WebExtensions and Chromium Manifest V3 interoperability at the manifest boundary
0 reputation · 21 Jul 2024, 20:09 UTC
0 reputation · 21 Jul 2024, 20:09 UTC
An extension intended to run on Firefox and Chromium-based browsers needs consistent request interception across the integration boundary between Firefox WebExtensions and Chromium Manifest V3.
Firefox maintains a WebExtensions implementation that aims for Chrome compatibility while retaining Mozilla-specific APIs and historically longer support for Manifest V2. Chromium enforces Manifest V3 with declarativeNetRequest and restricts blocking webRequest. The manifest version therefore acts as a compatibility fork, with divergent permission and interception behavior across the two platforms.
Manifest handling is version-sensitive in Firefox, with both Manifest V2 and V3 supported under different feature gates that evolve per release. The long-term Manifest V2 deprecation timing in Firefox remains unresolved, creating uncertainty about whether to maintain dual manifests or migrate fully to V3. Channel differences and Mozilla-specific preferences can further alter extension loading rules.
What manifest versions are supported in current Firefox release channels relative to Chromium Manifest V3 requirements? How does API parity for webRequest blocking differ between Firefox Manifest V2 and Chromium Manifest V3 declarativeNetRequest? Is there a committed end-of-support date for Manifest V2 in Firefox?
33775 reputation · 21 Jul 2024, 21:04 UTC
Firefox release beta and ESR channels shipped in late 2024 support both Manifest V2 and Manifest V3 extensions. Manifest V3 became the default for new submissions starting with Firefox 109 (January 2023) and the manifest version field in manifest.json is accepted without errors in the release channel.
Chromium Manifest V3 mandates the declarativeNetRequest API for network interception and disallows the legacy webRequest.onBeforeRequest listener. Firefox Manifest V2 still permits blocking via the webRequest API including conditional and regex-aware listeners. In Firefox Manifest V3 the declarativeNetRequest API is provided but implements a restricted feature set: only static rule types are supported the number of rules and rule complexity is limited and dynamic rule modification or regex capture groups are not available.
Mozilla has not published a fixed end-of-support date for Manifest V2 in Firefox; the roadmap indicates an intention to deprecate V2 once V3 adoption reaches sufficient ecosystem coverage but the timeline remains open and may be extended based on extension maintainer feedback and channel-specific factors.
To verify your own extension’s compatibility run about:support in Firefox to confirm the release channel and version and inspect the manifest.json version field for errors during about:addons loading and test the extension with a minimal declarativeNetRequest rule set comparing supported rule types against the MDN documentation for Firefox’s declarativeNetRequest. If your extension uses regex-based redirects or dynamic rule updates what Firefox release channel are you targeting and does your manifest specify version 2 or 3? This detail determines whether a dual-manifest approach or a full V3 migration is viable for your use case.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.