Porting a Google Chrome extension

The browser extension APIs are designed to promote cross-browser compatibility among extensions. The WebExtension APIs is therefore, to a large extent, code-compatible with the extension API supported by Google Chrome and Opera. Extensions written for these browsers will, in most cases, run in Firefox with just a few changes. Almost all of the WebExtension APIs provide support for callback functions under the chrome namespace, the same as Chrome. The only APIs that aren't supported in the chrome namespace are those that are intentionally incompatible with Chrome. In those cases, the API documentation page states that support is provided only in the browser namespace. The process of porting an extension from Chrome or Opera is, therefore, relatively straightforward:

  1. Review your use of manifest.json features and Chrome extension APIs against the Chrome incompatibilities reference. Mozilla provides a service that can help to automate this step: extensiontest.com. If you're using features or APIs that aren't supported in Firefox, you might not be able to port your extension.
  2. Install your extension in Firefox by using about:debugging or the web-ext tool (similar to Chrome’s command-line tools).
  3. Test your extension.
  4. If you have any problems, contact us on the dev-addons mailing list or Add-ons channel on Matrix.
  5. Package your extension, manually or using the web-ext tool.
  6. Create an account on addons.mozilla.org then submit your add-on for signing and distribution.

If you use the Chrome command-line option for loading an unpacked extension, check out the web-ext tool which automates temporary installation in Firefox for development.