Porting a Chrome Extension to Firefox Add-on
Warning
Chrome and Firefox are two very different browsers, but Chrome Extension and Firefox Add-on are now more similar than ever. So it is possible to port a Chrome extension to a Firefox Add-on and ship it to the Mozilla store with minor changes. Here's how I ported YouTube Comment Language Filter to Firefox.
Checking the Chrome incompatibilities
Firefox can run commands with the chrome namespace, such as chrome.tabs.onUpdated. However, a few codes still exist that Firefox cannot run. Firefox offers a handy website to check the chrome incompatibilities.
- On your Chrome browser (or on any equivalent Chromium browsers,) visit
chrome://extensions. - Enable Developer Mode and Press Pack Extension.
- Select your extension directory and pack your extension. That will create a
.crxfile. - Visit the Firefox Extension Test website and upload your .crx file.
- 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 Firefox Manifest ID
Firefox also requires an ID in manifest.json, like this.
As you can see, you can also add a strict_min_version here. See the MDN docs.
This was a minor hassle since Chrome could not recognize the above code block. So you need to keep two manifests, one with it (for Firefox) and one without (for Chrome). If I find a more straightforward way, I will add it here.
Uploading it to the Firefox Add-on Store
- Visit https://addons.mozilla.org/.
- Log in to your developer account (or create a developer account).
- Visit Firefox Submit a New Add-on page.
- Follow the guidelines on the screen.
One little tip. Make sure you don't include any unnecessary files like .DS_Store. Using macOS's default Finder compressor will sometimes have these files. I recommend using Keka.
Update
- It seems that you don't necessarily need a Firefox manifest ID. Submit the Chrome version, and 99% will work if you didn't get any warning on the Firefox Extension Test website.