DEV Community

Weather Clock Dash
Weather Clock Dash

Posted on

From Zero to AMO: How to Publish a Firefox Extension Without Losing Your Mind

Publishing to Mozilla's Add-ons site (AMO) is different from any other app store. Here's exactly what I learned going through the process with Weather & Clock Dashboard.

The Manifest Version Situation

Firefox currently supports both Manifest V2 and V3. Chrome is forcing V3 (which has significant limitations for ad blockers). Firefox's stance is more pragmatic — they support both and have promised to maintain V2 support longer.

For a new extension in 2024, use MV3. Here's the basic manifest.json:

{
  "manifest_version": 3,
  "name": "Your Extension",
  "version": "1.0",
  "permissions": ["storage"],
  "browser_specific_settings": {
    "gecko": {
      "id": "yourextension@yourdomain.com"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

The browser_specific_settings.gecko.id is required for AMO and optional for Chrome. Include it.

The New Tab Override API

To replace the new tab page, use chrome_url_overrides:

"chrome_url_overrides": {
  "newtab": "newtab.html"
}
Enter fullscreen mode Exit fullscreen mode

Despite the chrome_ prefix, this works in Firefox. Your newtab.html must be a file bundled within your extension — you can't point to an external URL.

Building and Packing

AMO requires a ZIP file (or use web-ext). I used web-ext:

npm install -g web-ext
web-ext build
# Creates web-ext-artifacts/extension-name-1.0.0.zip
Enter fullscreen mode Exit fullscreen mode

Or just zip manually:

zip -r extension.zip . --exclude '*.git*' --exclude 'node_modules/*'
Enter fullscreen mode Exit fullscreen mode

The AMO Submission Process

  1. Create an account at addons.mozilla.org
  2. Click "Submit a New Add-on"
  3. Choose: list on AMO (public) vs self-distribution
  4. Upload your ZIP
  5. Fill in details: name, summary (up to 250 chars), description, screenshots

Pro tip on the summary field: This is what shows in search results. Make it specific and useful. "A new tab extension" is bad. "Replace Firefox new tab with live weather, world clocks, and search" is better.

What AMO Reviewers Check

AMO does manual review for listed extensions. Based on my experience:

Automated checks:

  • Dangerous permissions (any <all_urls> permission gets scrutiny)
  • Known malware patterns
  • Minified/obfuscated code (requires source code upload)

Human review checks:

  • Does the extension do what it claims?
  • Is the permission usage justified?
  • Is there a clear privacy policy URL if you collect any data?
  • Remote code execution risks

The source code requirement:
If your code is minified (webpack, etc.), AMO requires you to upload the unminified source separately. Since I used pure HTML/CSS/JS with no build step, I didn't need to do this.

Review Timeline

My experience: initial review in ~48 hours. Subsequent updates are faster once the extension has a track record.

The reviewer will email you with:

  • Approval
  • Request for clarification
  • Specific issues to fix

Common Rejection Reasons

  1. Missing or inadequate privacy policy: If you make ANY external requests, you need to disclose this. Even just calling a weather API.

  2. Over-broad permissions: Requesting permissions you don't use.

  3. Content Security Policy issues: AMO is strict about CSP. Remote scripts aren't allowed (this is actually good practice).

  4. Unexpected remote code execution: Loading scripts from CDNs in production code.

After Publishing

Once live, your extension gets:

  • An AMO listing URL: https://addons.mozilla.org/en-US/firefox/addon/your-extension-name/
  • Install statistics (updated daily)
  • Review capability
  • A verified badge from Mozilla

The AMO install rate depends heavily on search discoverability and reviews. Getting your first 50 installs is hard — after that, organic discovery picks up.

Check Out the Result

I went through this entire process with Weather & Clock Dashboard. The source code is on GitHub if you want to see a concrete example of everything described here.


Questions about the AMO process? Drop them in the comments — happy to help.

Top comments (0)