Firefox is Mozilla's popular Web browser, available for multiple platforms including Windows, macOS, and Linux on the desktop and all Android and iOS mobile devices. With broad compatibility, the latest in Web technologies, and powerful development tools, Firefox is a great choice for both Web developers and end users.
Firefox is an open source project; much of the code is contributed by our huge community of volunteers. Here you can learn about how to contribute to the Firefox project and you will also find links to information about the construction of Firefox add-ons, using the developer tools in Firefox, and other topics.
Learn how to create add-ons for Firefox, how to develop and build Firefox itself, and how the internals of Firefox and its subprojects work.
- Developer release notes
Developer-focused relekase notes; learn what new capabilities for both Web sites and add-ons arrive in each version of Firefox.
- Project documentation
Get detailed information about the internals of Firefox and its build system, so you can find your way around in the code.
- Developer guide
Our developer guide provides details on how to get and compile the Firefox source code, how to find your way around, and how to contribute to the project.
Firefox is available in five channels.
Each night we build Firefox from the latest code in mozilla-central. These builds are for Firefox developers or those who want to try out the very latest cutting edge features while they're still under active development.
Firefox Developer Edition
This is a version of Firefox tailored for developers. Every six weeks, we take the features in Firefox Nightly that are stable enough and create a new version of Firefox Developer Edition. We also add some extra features for developers that are only available in this channel.
After spending six weeks in Firefox Developer Edition, we take the features that are stable enough, and create a new version of Firefox Beta. Firefox Beta builds are for Firefox enthusiasts to test what's destined to become the next released Firefox version.
After stabilizing for another six weeks in Beta, we're ready to ship the new features to hundreds of millions of users in a new release version of Firefox.
Firefox Extended Support Release (ESR)
Firefox ESR is the long-term support edition of Firefox for desktop for use by organizations including schools, universities, businesses and others who need extended support for mass deployments.
- Australis and add-on compatibility
- We've removed the add-ons toolbar (including the status-bar). You should no longer rely on it existing. There is a shim in place that will attempt to migrate your icons, but it may not work, or only work partially. The best solution is to change the placement of your button. This may also be a good time to wonder if your add-on really needs a toolbar button to be visible by default for all users. Add-ons made using the Add-on SDK should not need to worry about this change.
- Building Firefox with Rust code
- In May 2015 the Rust programming language reached its 1.0 stability milestone, and various experiments with writing parts of Gecko in Rust began. Rust code first shipped in August 2016 with the release of Firefox 48. It became a requirement for building Gecko in February 2017 with Firefox 54.
- Deploying Firefox in an enterprise environment
- Documentation for Firefox for Enterprise can now be found on SUMO (support.mozilla.org). Below are a few particularly helpful links.
- Deploying Firefox in an enterprise environment (before Firefox 60 ESR)
- This page is an attempt to document the process of managing Mozilla Firefox on Windows and macOS computers in the enterprise setting, from start to finish. If you have questions, please e-mail the Enterprise Working Group mailing list at email@example.com. Better yet, subscribe to the list and join in the ongoing discussions.
- Developer Edition
- The Firefox Developer Edition is a version of Firefox that's tailored for web developers. It includes:
- Experimental features in Firefox
- This page lists features that are in Nightly versions of Firefox along with information on how to activate them, if necessary.
- Firefox and the "about" protocol
- There is a lot of useful information about Firefox hidden away behind the
about:URL protocol. The most useful is the URL
about:config, which displays preferences and settings that can be inspected and changed.
- Firefox developer release notes
- Below you'll find links to the developer release notes for every Firefox release. These lovingly-crafted notes provide details on what features and APIs were added and improved and what bugs were eliminated in each version of Firefox. All written to give developers like you the information they need most. You're welcome.
- Firefox ESR
- Firefox Extended Support Release (ESR) is based on an official release of Firefox for desktop for use by organizations who need extended support for mass deployments. Unlike other release channels, ESRs are not updated with new features every six weeks. They are instead supported for more than a year, updating with major security or stability fixes.
- Firefox UI considerations for web developers
- There are a number of places within the Firefox user interface where web sites are listed for the user to choose a destination to visit or a site to manage in some way. One example is the new tab page, which includes a "Top Sites" section showing sites you visit that Firefox thinks you're likely to want to visit again, as well as potentially some sites that have been pinned to always appear in that space.
- Headless mode
- Headless mode is a very useful way to run Firefox. Just as it might sound, Firefox is run as normal, minus any visible UI components visible. Though not so useful for surfing the web, it comes into its own with automated testing. This article provides all you need to know about running headless Firefox.
- Linux compatibility matrix
- The following table lists the available library versions for the mozilla.org-distributed Firefox builds dependencies, and/or to build Firefox.
- Multiple Firefox profiles
- A profile in Firefox is the collection of settings, customizations, add-ons, and other personalizations that a user has made or installed into their copy of Firefox. You can find details about profiles on Mozilla's end-user support site.
- Multiprocess Firefox
Currently, the latest versions of Firefox run the browser UI and the web content in separate processes. In the current iteration of this architecture, all browser tabs run within the same process and the browser UI runs in its own individual process. In future iterations of Firefox, there will be more than one process to exclusively handle web content. The internal name for this project is called Electrolysis, sometimes abbreviated to e10s.
- Per-test coverage of Firefox
- When a changeset adds a new test, or modifies an existing test, the per-test coverage (TC) test suite uses other test harnesses to run the test in isolation to collect coverage information at the test level. For instance, when a mochitest is modified, TC runs the mochitest harness on the modified mochitest. If any test run fails then the failure is reported normally, testing ends, and the test suite reports the failure.
- Performance best practices for Firefox front-end engineers
- This guide will help Firefox developers working on front-end code produce code which is as performant as possible—not just on its own, but in terms of its impact on other parts of Firefox. Always keep in mind the side effects your changes may have, from blocking other tasks, to interfering with other user interface elements.
- This document lists privacy-related documentation.
- Security best practices for Firefox front-end engineers
- This article will help Firefox developers understand the security controls in place and avoid common pitfalls when developing front-end code for Firefox.
If you find yourself using multiple Firefox channels—or just multiple configurations—on a regular basis, you should read how to use multiple Firefox profiles by turning Firefox's Profile Manager and other profile management tools to your advantage.