Join MDN and developers like you at Mozilla's View Source conference, November 2-4 in Portland, Oregon. Learn more at https://viewsourceconf.org/.

Chrome incompatibilities

WebExtensions are designed to be compatible with Chrome and Opera extensions: as far as possible, extensions written for those browsers should run on Firefox with minimal changes.

However, Firefox currently has support for only a limited set of the features and APIs supported by Chrome and Opera. We're working on adding more support, but many features are not yet supported, and we may never support some.

This article lists all features and APIs that are fully or partially supported in Firefox. Where a feature is partially supported, we've indicated what the gaps are.

It's safe to assume that features and APIs not listed here at all are not yet supported.

manifest.json features

Fully supported keys

Partially supported keys

background

Firefox does not support the "persistent" property. Background scripts stay loaded all the time.

content_scripts

Firefox does not currently support:

  • include_globs
  • exclude_globs
  • match_about_blank

permissions

Firefox does not yet support the following permissions:

  • activeTab
  • background
  • clipboardRead
  • clipboardWrite
  • geolocation
  • nativeMessaging
  • unlimitedStorage

Obviously, it also don't yet support permissions for APIs that are themselves not supported.

JavaScript APIs

Fully supported APIs

  • alarms
  • cookies
    • onChanged events might be subtely different
    • Creating session cookies with set might fail

Partially supported APIs

browserAction

  • Firefox does not support:
    • enable() or disable().

extension

  • Firefox only supports:
    • getBackgroundPage()
    • getURL()
    • inIncognitoContext in content scripts

i18n

  • In the JavaScript API, Firefox only supports getMessage().
  • Firefox only supports the @@extension_id and @@ui_locale predefined messages.
  • Firefox does not localize CSS files.
  • Strings to be localized must consist entirely of __MSG_foo__ in order for a substitution to be made.

notifications

  • The only supported notification options are:
    • iconUrl
    • title
    • message.
  • The only supported methods are:
    • create()
    • clear()
    • getAll().
  • The only supported event is onClosed.
  • Firefox doesn't provide byUser data.

runtime

  • Firefox only supports:
    • onStartup()
    • getManifest()
    • id
    • sendMessage()
    • onMessage
    • onConnect

storage

  • The only storage area Firefox supports is local.
  • Firefox does not support getBytesInUse() or clear().

tabs

  • Firefox does not support:
    • getCurrent()
    • sendRequest()
    • getSelected()
    • duplicate()
    • highlight()
    • move()
    • detectLanguage()
    • captureVisibleTab()
    • getZoom()
    • setZoom()
    • getZoomSettings()
    • setZoomSettings()

Firefox treats highlighted and active as the same since Firefox cannot select multiple tabs.

Firefox doesn't yet support the callback argument to executeScript().

webNavigation

  • Firefox does not support:
    • getFrame()
    • getAllFrames()
    • onCreatedNavigationTarget
    • onHistoryStateUpdated
    • transition types and qualifiers
    • Filtering

onReferenceFragmentUpdated also triggers for pushState.

webRequest

  • Firefox does not support:
    • handlerBehaviorChanged()
    • onAuthRequired
    • onBeforeRedirect
    • onErrorOccurred
  • Requests can be:
    • canceled only in onBeforeRequest
    • modified/redirected only in onBeforeSendHeaders
  • Responses can be modified only in onHeadersReceived.
  • Filtering by windowId and tabId is not supported.
  • The "requestBody" instruction in opt_extraInfoSpec is not supported.
  • Redirection is not allowed in onBeforeRequest or onHeadersReceived, but is allowed in onBeforeSendHeaders.
  • requestId is not included in the argument passed to the listener.

windows

  • onFocusChanged will trigger multiple times for a given focus change.
  • create() does not support the focused, type, or state options.
  • update() only supports the focused option.

Planned APIs

We don't yet support the following APIs, but plan to, soon:

Miscellaneous incompatibilities

  • Chrome allows any optional arguments to be omitted, even if followed by other arguments. Firefox currently supports this only under specific circumetances. We recommend only omitting optional arguments at the end of the arguments list, and using null for all other cases.

Document Tags and Contributors

Contributors to this page: evilpie, wbamberg, kmaglione, maybe
Last updated by: evilpie,
Hide Sidebar