Test the new look of addons.mozilla.org!

AMO (addons.mozilla.org) is getting a fresh new look this November, along with the upcoming Firefox Quantum. Here’s a preview:

Listing page on new front-end

The current look on the development site, not quite final.

And this is not just a new coat of paint. Curated content — particularly in the homepage — is undergoing an overhaul to recommend the best add-ons to users. Additionally, the technology stack powering AMO has undergone important changes, making it faster to load and easier to work with in the future.

Fully responsive design

AMO responsive design

We released the new design for the mobile version of AMO months ago. Now we’re expanding it for larger resolutions. The site is fully responsive, adapting smoothly to different screen sizes and orientations.

Behind the scenes: React and front-end separation

The new AMO is built on the popular Redux + React combo. (Some recent news pointed at concerns with the licensing of the React code, which have been addressed now.)

Rewriting the front-end code was a great opportunity to improve on other areas:

  • The front-end and back-end are now separated and communicate via an API that other clients can hook into. It’s documented here.
  • The new front-end has very high unit test coverage, and the aim is to reach 100%. This makes it much easier to detect during development if a code change broke a feature.
  • Server-side rendering will significantly improve page load times.

Try out the new look!

You can enable the new look for AMO now. Just look for the View Mobile Site link in the footer:

View mobile link in footerIf you want to go back to the old site, look in the footer again for a link labeled View classic desktop site.

View classic site link in footerSome pages won’t be ported to the new design by November. Notably, user profile pages and collection management. They are still available, but using the old look. Also, some features like contributions and the permissions view in listing pages will be added in later iterations.

If you run into any issues with the new design, or think something’s missing, please file an issue (bonus points if you test on our development site first!). Some may be things we already know about and we plan to add soon. Even in those cases your feedback will help us prioritize our follow-up work.

If you’re not sure if something is an issue or not, or just want to give general feedback about the new design, please post in this forum thread.


Lots of people have worked on the new front-end and the supporting APIs, so I won’t try to list them all. I’ll just highlight tofumatt, pwalm, kumar, and muffinresearch, who did and continue to do the bulk of the work for the new site. Scott DeVaney leads the content discovery effort, which will be visible mostly on the homepage (for now!). And, of course, we couldn’t do all of this without the help of the QA team lead by Krupa Raj, and our many community contributors.

Join the Featured Add-ons Advisory Board

Do you love add-ons? Have a keen appreciation for great functionality? Interested in making a huge impact on AMO? If so, consider applying to join our Featured Add-ons Community Board!

The board is comprised of a small group of add-ons enthusiasts from the community. During a six-month term, board members help nominate and select new featured extensions for AMO each month. Your participation will make a big difference to millions of users who look to AMO’s featured content to help them find great content!

As the current board wraps up their tour of duty, we are looking to assemble a new board for the months January – June.

Anyone from the add-ons community is welcome to apply: power users, developers, and advocates. Priority will be given to applicants who have not served on the board before, followed by those from previous boards, and finally from the outgoing board. This page provides more information on the duties of a board member.

To be considered, please send us an email at amo-featured [at] mozilla [dot] org with your name and a few sentences about how you’re involved with AMO and why you are interested in joining the board. The deadline is Monday, October 30, 2017 at 23:59 PDT. The new board will be announced shortly thereafter.

Add-ons Update – 2017/10

Here’s your monthly add-ons update.


We changed the way contributions are handled on AMO. This should be simpler to maintain, and offer more payment options for developers.

The Review Queues

We recently moved to a new review model, where developers don’t have to wait for long before their add-ons are reviewed. Legacy add-ons still go through the old model, but there are only a small number of updates awaiting review now. So I’m discontinuing this section of the monthly update for now.

Compatibility Update

Firefox 57 is now on the Beta channel and will be released on November 14th. It will only accept WebExtensions add-ons. In order to ease the transition to 57, here are some changes we’re implementing on AMO.


We would like to thank the following people for their recent contributions:

  • ian-henderso
  • Jp-Rivera
  • Apoorva Pandey
  • ilmanzo
  • Trishul Goel
  • Tom Schuster
  • Apoorva Singh
  • Tiago Morais Morgado
  • zombie
  • wouter
  • kwan
  • Kevin Jones
  • Aastha
  • Masatoshi Kimura
  • asamuzaK
  • Christophe Villeneuve

You can read more about their work in our recognition page.

Friend of Add-ons: Sylvain Giroux

Please meet our newest Friend of Add-ons, Sylvain Giroux! Sylvain has been creating extensions for Firefox since 2007 and began contributing to addons.mozilla.org (AMO) as an add-on reviewer in 2015.  While he had originally planned to help with the add-on review queues for a few months before moving on to other activities, Sylvain quickly connected with Mozilla’s mission and found friends within the community, and has been an active contributor ever since.

Currently, Sylvain is an add-on reviewer and peer mentor for new reviewers. He is also helping the AMO team create an improved application process for prospective add-on reviewers. Additionally, Sylvain is finishing a six-month term as a member of the featured add-on advisory board, where he has helped nominate and select new extensions to feature on AMO each month.

Of his experience as a contributor, Sylvain says, “Being part of such a vast community helped me understand the underlying AMO process and its continuous evolution over time. This is especially important with the massive changes that Firefox 57 is bringing to this community. The knowledge I’ve gathered reviewing code after all those years has also strengthened my understanding of what “safe code” should look like. This is especially important when creating web-based software, APIs or features that may affect the security and privacy of end-users.”

Sylvain also has a suggestion for anyone interested in getting more involved in Mozilla. “I strongly suggest people visit https://whatcanidoformozilla.org and see if there is something in there that could bring you closer to this awesome free-software community.”

In his spare time, Sylvain is an active home-brewer and has made nearly twenty batches of beer over the last three years from home-grown hops. He also frequently creates personal development projects, like fixing bugs for a nodeJS card game program, to meet new challenges and keep his coding skills up to date.

On behalf of the AMO community, thank you for your many wonderful contributions, Sylvain!
If you are interested in contributing to the add-ons community, please see our wiki for a list of ways to get involved. If you’re currently a contributor, please be sure to add your contributions to our recognition wiki!

New Contributions launched on AMO

The contributions feature was launched over 8 years ago to give developers an easy way to receive compensation for their add-ons on AMO (addons.mozilla.org). This system relied on an integration with the PayPal API, which often caused problems. It didn’t work properly for users with restricted cookie settings, for instance. It also meant PayPal was the only payment provider.

We just launched a new contributions system that is simpler, more reliable, and flexible to use.

New Contributions

With the new system, developers specify a contributions URL in the Developer Hub. The Contribute button on their listing page will point to that URL and open it in a new tab. Initially, we will be supporting Patreon, PayPal, and Micropayment as payment providers. If you’re a developer and would like to propose other services for inclusion, please add your feedback to this forum thread.

Legacy Add-on Support on Firefox ESR

Update: the next ESR was moved to coincide with Firefox 60 instead of 59.

Earlier this year, we shared with you our compatibility plan for Firefox. As anticipated, Firefox 57 will be released in late November, only allowing add-ons using the WebExtensions API. However, we have received some questions from developers on how this timeline applies to the Firefox Extended Support Release (ESR).

To clarify how legacy extensions will work with the ESR release:

  • ESR 52 will be the last ESR release that supports legacy add-ons. Support for ESR 52 officially ends on August 2018.
  • The following ESR release (60), and any subsequent release, will not support legacy add-ons. There will be no override provided for this behavior.

AMO Support

AMO (addons.mozilla.org) will continue to support legacy add-on listings throughout the ESR 52 cycle. However, AMO will primarily focus on WebExtension add-on listings. This means some legacy features may also change during this time period. There are big changes coming to AMO, including a completely new design. Stay put for more updates on this.

October’s Featured Extensions

Firefox Logo on blue background

Pick of the Month: Tab Center Redux

by Edouard Oger
Move your tabs to the side of the browser window.

“Second only to an adblocker in my must-have extensions.”

Featured: IMGoogle Reverse Image Search

by erosman
A very streamlined and effective image search tool.

“Thank you so much. Perfect add-on!”

Featured: Tab2QR

by James Shih
Send the desktop web page you’re viewing to your mobile device.

“I would say it’s the best extension of this kind.”

Featured: Video Speed Controller

by codebicycle
Speed up, slow down, fast forward and rewind HTML5 video with the help of quick shortcuts.

“I love it. Helps me save hours and hours of time, works great.”

Featured: YouTube in HD

by James Fray
Watch videos in full high-def.

“YouTube often selected 720p or sometimes lower settings, even on a 100mbit connection with a 1440p panel, so I kept having to manually select the quality with every video, but now I don’t have to! :).”

Nominate your favorite add-ons

Featured add-ons are selected by a community board made up of add-on developers, users, and fans. Board members change every six months. Here’s further information on AMO’s featured content policies.

If you’d like to nominate an add-on for featuring, please send it to amo-featured [at] mozilla [dot] org for the board’s consideration. We welcome you to submit your own add-on!

WebExtensions in Firefox 57

Firefox 57 has reached Beta, and a bevy of new APIs and improvements have landed that will put us in a good place for the Firefox Quantum launch in November.

Legacy add-ons no longer load in Firefox 57, but there is still time to migrate (almost 5,000 have migrated so far!), and you can do so even after it lands in release. Just update your listing with the new code and your users will automatically update to the compatible version. When you do, be sure to tell them about it.

Documentation for the APIs discussed here can be found on MDN Web Docs.

API changes

Tabs and Sessions APIs

Tabs now have a discarded state added to the Tab object. It will be set to true if the tab is not loaded with content, for example when restored from a previous session. This is part of getting ready for a tabs.discard API.

The tabs.opener API has now been implemented which means that openerTabId is available to the update and create methods and on the Tab object. This allows extensions to track the opener of tabs.

Also, the tabs API can now open URLs that are view-source: links and do a “load replace” which changes the page and replaces the current history so that the back button is unaffected.

The session API now has some APIs for setting, getting and removing data on a per tab or per window basis. This allows information about tabs or windows to survive session restores without the data needing to be stored by individual extensions.

webRequest API

The webRequest details object now includes proxy information. This proxy information will let webRequest listeners determine how the request interacted with a proxy.

A major new API for webRequest is now available which allows an extension to filter the HTTP response bodies as they come in. The code below alters the text on example.com. You could do this through a content script, but being able to alter the HTTP response body gives a whole new set of possibilities:

function listener(details) {
 let filter = browser.webRequest.filterResponseData(details.requestId);
 let decoder = new TextDecoder("utf-8");
 let encoder = new TextEncoder();

 filter.ondata = event => {
    let str = decoder.decode(event.data, {stream: true});
    str = str.replace(/Example/g, 'WebExtension Example');

 return {};

 {urls: ["https://example.com/*"], types: ["main_frame"]},

Storage API

A basic implementation of chrome.storage.managed has landed. This allows administrators or other applications to configure extensions for users. In Firefox you can place a JSON file in a directory, just like for native messaging. For example, a file called favourite-colour-examples@mozilla.org.json could be placed in the appropriate place:

 "name": "favourite-colour-examples@mozilla.org",
 "description": "ignored",
 "type": "storage",
 "data": {
    "colour": "blue!"

Then in the favourite-colour-examples@mozilla.org extension:

 browser.storage.managed.get('colour').then((colour) => {

Would output “blue!”.

Clipboard API

A new clipboard API has been added to allow the copying of images to the clipboard. The clipboard.setImageData allows you to populate the clipboard with image data. This API is compatible with the Chrome apps API, but at this point it should be considered experimental. This API requires the clipboardWrite permission.

Developer Tools API

The developer tools gained the panels.elements.createSidebarPane API and a panels.elements sidebar.setExpression method. This lets extensions create sidebars in the developer tools. Here’s an example extension that parses jQuery variables:

Find API

A find API has landed in Firefox. This allows extensions to call the Firefox find API on a tab and get information about the results. It can then add or remove syntax highlighting from that tab, based on the previous search.

This example extension uses the API to search across multiple tabs and highlights them:

Miscellaneous changes


There have been multiple bugs fixed to ensure that pageActions and browserActions work well on Android. There has been multiple options_ui fixes and some additions. The runtime.openOptionsPage API has been added, and for those pages the activeTab permission takes effect. The browser_action.default_popup manifest property along with setPopup and getPopup has been added.

Firefox for Android now has support for installation permission prompts from the user, closely matching Desktop. When a user installs an add-on, they will be given a permission prompt.

Here’s an example when installing uBlock Origin:

If an extension chooses not to use installation permissions, the optional permission prompts have also been implemented which enable permission prompts at runtime.

Startup check

Firefox has had a brief compatibility check that occurs each time Firefox upgrades a major release. Because there are some extension that might update from legacy extensions sometime after Firefox 57 is released, we wanted to ensure that we could update users to new WebExtensions version when we can.

We took the opportunity to streamline this. The new check is quick and will only occur each time you upgrade to a major version (for example 56 to 57) and have legacy extensions:

User notification

There’s an ongoing project to show Firefox users what changes extensions make to their browser. Often it’s not clear to a user what an extension has done. It can be especially confusing if a user forgets what extensions are installed and finds changes they don’t understand later on.

An API was added that allows extensions to read the home page and new page values so extensions can tell if a user or another extension has changed the values. Along with this API, we’re now surfacing changes through to the about:preferences pages. If an extension uses the provided APIs to change: the home page, the new tab or contextual identities in Firefox 57, then a message will displayed to the user.

Here’s an example where an extension changes the home page:

An example where an extension enables contextual identities:

Long running scripts in an extension will now generate a warning that mentions the extension name, so users can choose what to do with extensions that might be taking a long time.

If an extension changes the new tab through the API, the URL bar will be empty when the new tab page is opened. This allows keyboard users to quickly navigate to new URLs. We’ve also fixed a bug where the identity was not shown in the URL bar for new tabs.

Over the coming releases we plan to add in more information into about:preferences for more and more APIs.


Thank you once again to our many contributors for this release, especially our volunteers including: Adam Hillier, angelsl, dw-dev, Jan Henning, Kevin Jones, Lee Bousfield, Tomislav Jovanovic and Tushar Saini. This release marked a record 171 bugs fixed.

Extension review wait times are about to get much shorter

One the of the main advantages of the new WebExtensions API is that it is less likely to cause security or stability problems for users. This means we can review these add-ons faster, and we have adapted our review flow accordingly. For the past few months we have reduced review wait times for add-ons written using the WebExtensions API. Today we’re taking another big step in that direction.

Add-ons built on the WebExtensions API will now be automatically reviewed. This means we will publish add-ons shortly after uploading. Human reviewers will look at these pre-approved add-ons, prioritized on various risk factors that are calculated from the add-on’s codebase and other metadata. This change is now live, and we plan to continue augmenting it in the coming months.

These changes give developers a much improved upload and publishing experience, but also comes with more responsibility on their end. Issues that arise during review can still lead to rejection of a version or a whole listing. This will now happen after publication, rather than before. We’re in the process of editing a new Review Policy that will make the rules, exceptions, and consequences clearer for everyone.

Add-ons Update – 2017/09

Here’s your monthly add-ons update.

The Review Queues

In the past month, our team reviewed 2,490 listed add-on submissions:

  • 2,074 in fewer than 5 days (83%).
  • 89 between 5 and 10 days (4%).
  • 327 after more than 10 days (13%).

244 listed add-ons are awaiting review.

If you’re an add-on developer and are looking for contribution opportunities, please consider joining us. Visit our wiki page for more information.

Compatibility Update

We published the blog post for 56 and the bulk validation has been run. This is the last one of these we’ll do, since compatibility is a much smaller problem with the WebExtensions API.

Firefox 57 is now on the Nightly channel and will soon hit Beta, only accepting WebExtension add-ons by default. Here are some changes we’re implementing on AMO to ease the transition to 57.


We would like to thank the following people for their recent contributions to the add-ons world:

  • Amola Singh
  • yfdyh000
  • bfred-it
  • Tiago Morais Morgado
  • Divya Rani
  • angelsl
  • Tim Nguyen
  • Atique Ahmed Ziad
  • Apoorva Pandey
  • Kevin Jones
  • ljbousfield
  • asamuzaK
  • Rob Wu
  • Tushar Sinai
  • Trishul Goel
  • zombie
  • tmm88
  • Christophe Villeneuve
  • Hemanth Kumar Veeranki

You can read more about their work in our recognition page.