Porting a Chrome Extension to Firefox Add-on

Porting a Chrome Extension to Firefox Add-on

While and are two very different , and Add-on are now more similar than ever. Therefore, it is possible to transplant a to a Add-on and publish it to the Mozilla store with minor changes. This post is about how I transplanted my YouTube Comment Language Filter to .

Checking the incompatibilities

First, can run commands with the chrome namespace, such as chrome.tabs.onUpdated. However, a few codes still exist that cannot run. offers a handy website to check the incompatibilities.

  1. On your (or on any equivalent ,) visit chrome://extensions.
  2. Enable Developer Mode and Press Pack .
  3. Select your directory and pack your . That will create a .crx file.
  4. Visit the Firefox Extension Test website and upload your .crx file.
  5. You are fine if it says there is no problem.

If there is any problem, I advise you to visit the MDN docs and see what code caused the problem. Unfortunately, I had no problem, so I cannot share any experience here.

Adding Manifest ID

also requires an ID inside the manifest.json file. It is like the following.

json
"browser_specific_settings": {
  "gecko": {
    "id": "addon@example.com",
    "strict_min_version": "42.0"
  }
},

As you can see, you can also add a strict_min_version here. See original MDN docs.

This was a minor hassle since could not recognize the above code block. So you need to keep two manifest.json, one with the above code block (for Firefox) and one without it (for Chrome). If I find a more straightforward way, I will add it here.

Uploading it to the Add-on Store

  1. Visit https://addons.mozilla.org/.
  2. Log in to your developer account (or create a developer account).
  3. Visit Firefox Submit a New Add-on page.
  4. Follow the guidelines on the screen.

One little tip: make sure you don't include any unnecessary files .DS_Store or anything like that. Using macOS's default Finder compressor will sometimes have these files. I recommend using Keka.

Update

Backlinks1