Three-Digit Version Numbers Are Coming to Chrome and Firefox
Within the next few months, both Chrome and Firefox are scheduled to reach major version 100. While this is a routine release milestone, it carries a specific technical risk: web properties that parse the User-Agent (UA) string to perform version-based logic may encounter unexpected behavior when the major version number shifts from two digits to three.
This article outlines the timeline, the potential compatibility concerns, and the mitigation strategies that both browser vendors have prepared. It also explains how you can test your own sites and report breakage before the stable releases arrive.
Understanding the User-Agent String
The User-Agent string is transmitted via HTTP headers to identify the browser to the server. It is also accessible client-side through navigator.userAgent. The general format is:
<browser_name>/<major_version>.<minor_version>
For example, as of the time of publication, the current stable versions of the major browsers present the following UA strings:
- Chrome:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36 - Firefox:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0 - Safari:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15
Why Version 100 Is a Compatibility Concern
The transition to version 100 represents the first time the major version number in the UA string will contain three digits. This shift is reminiscent of the move to two-digit version numbers over a decade ago, which caused notable issues with various UA parsing libraries.
Because there is no single standard for UA string formatting across browsers, many developers rely on home-grown parsing or third-party libraries. These may contain assumptions about the length of the major version number. When version numbers moved from one digit to two, many libraries were updated, so the transition to three digits is expected to present fewer problems in current code. However, older or unmaintained parsing libraries remain a risk.
Early surveys of popular UA parsing libraries, as well as field experiments conducted by Chrome, have surfaced a small number of issues. These are being addressed incrementally, but the risk is not zero.
Release Timeline for Version 100
Both browsers will introduce version 100 first in their experimental channels (Canary for Chrome, Nightly for Firefox), then move to beta, and finally to stable.
| Browser | Timeline |
|---|---|
| Chrome (release schedule) | March 29, 2022 |
| Firefox (release schedule) | May 3, 2022 |
Browser Mitigation Strategies
Both Mozilla and Google are running experiments in which beta or nightly versions report a major version number of 100 to detect site breakage in the wild. Several bugs have already been reported and even fixed as a result. These experiments are expected to continue through the lead-up to the stable release.
Chrome's Backup Plan
Chrome's fallback approach involves a flag that freezes the reported major version at 99. In this scenario, the actual major version (100) would be reported in the minor version portion of the UA string. The Chrome UA string format is as follows:
<major_version>.<minor_version>.<build_number>.<patch_number>
If the backup plan is necessary, the UA string would report 99.101.4988.0. Chrome is also testing the impact of reporting a three-digit value in the minor version slot, since that field has historically been 0 for a long period. The decision to utilize this fallback will depend on how many severe breakage reports the team sees before the stable release.
Firefox's Approach
Mozilla's strategy is more granular. For single-domain issues, the webcompat team can implement a site-specific intervention by sending a UA string with version 99 instead of 100 for the broken domain. You can view active interventions by visiting about:compat in Firefox.
In the event of widespread breakage, Firefox could freeze the major version number entirely and employ one of several alternative strategies, such as sending the real version in the minor version field, freezing the string altogether, or relaying the true version through another header. Each of these alternatives introduces added complexity to the UA string ecosystem, so the hope is that they won't be needed.
How You Can Help Test
To ensure the transition is smooth, you can help identify compatibility issues now by enabling version 100 reporting in your browser and testing your sites.
Enable Version 100 in Chrome
- Navigate to
chrome://flags/#force-major-version-to-100. - Set the flag to
Enabled.
Enable Version 100 in Firefox Nightly
- Open the Firefox Nightly Settings menu.
- Search for "Firefox 100" and check the "Firefox 100 User-Agent String" option.
Guidance for Testing and Reporting
- Website maintainers should test their sites with the version 100 configuration and audit any custom UA parsing code for assumptions about fixed-length version numbers.
- Library developers should add test cases for version numbers equal to or greater than 100. While recent library versions appear to handle this correctly, older versions may fail.
- Web users who encounter any site malfunction while version 100 reporting is enabled should report the issue at webcompat.com with the
version100label.



