Today, Mozilla launched Firefox 90. The newest version of Mozilla’s increasingly privacy-focused browser adds improved print-to-PDF functionality, individual exceptions to HTTPS-only mode, an about:third-party page to help identify compatibility issues introduced by third-party applications, and a new SmartBlock feature that cranks up protection from cross-site tracking while making sure site logins still function.
There’s also a new background updater for Windows, which allows a small background application to check for, download, and install Firefox updates while the browser is not running.
SmartBlock 2.0
The newest version of Mozilla’s built-in SmartBlock privacy feature makes it easier for users to keep their tracking protection settings cranked up, without breaking individual websites. The updated version seems to especially target Facebook login, which is increasingly used around the web as a third-party authentication and login tool.
Firefox blocks Facebook scripts by default, because Mozilla partner Disconnect (correctly) identifies Facebook domains on its list of known third-party trackers. Unfortunately, blocking Facebook scripts also meant breaking third-party Facebook logins—for example, the Facebook login feature found on etsy.com.
With SmartBlock 2.0, Facebook scripts are disabled on third-party sites, just as before—but when the user clicks the “Continue with Facebook” option, that specific, deliberate user interaction with the Facebook script causes SmartBlock 2.0 to unblock it. The unblocking happens just in time to allow the Facebook authentication login to succeed—without the user needing to dial down their tracking protection settings.
Faster Firefox
Mozilla’s internal metrics show significant speed improvements in 2021—last month’s Firefox 89 is 10-30 percent faster than earlier versions, according to Mozilla’s own testing. Specifically, the Mozilla team mentions improvement in the following areas:
- Typing in the URL bar or in document editors (e.g., Google Docs, Office 365)
- Opening a site menu (such as the file menu in Google Docs)
- Keyboard controls in browser-based video games
In order to discuss performance goals and gains more concretely, Mozilla defines three levels of browser responsiveness: instantaneous
, perceptible lag
, and jank
, with maximum latency thresholds of 50 ms and 1,000 ms for the first two. Mozilla goes on to specify that jank
means not only a longer delay, but the entire site—and in the worst cases, the browser’s own UI—becomes unusable for more than one second at a time.
Impressively, Firefox 89 manages an instantaneous
response to events more than 40 percent of the time—up from only 30 percent in Firefox 86.
Instantaneous
For instantaneous
response, calculations performed by the browser itself aren’t the only issue—no matter how fast the browser produces new data, the user can’t actually perceive it until the monitor displays it. With a typical monitor refresh rate of 60Hz, that means a new frame is displayed roughly every 17 ms—giving the browser only three frames to meet the 50 ms goal for this response level.
In earlier versions of Firefox, user input would happen on frame 0, and the “paint” process in which the browser draws new content would then happen on frame 1—leaving composition (when the newly paint
ed content is actually handed to the operating system and displayed on the user’s monitor) happening no earlier than frame 2. That’s all three of the frames we can fit inside the 50 ms time limit Mozilla set for instantaneous
response!
Beginning with Firefox 89, an update to Firefox’s painting pipeline suggested by Markus Strange improves the situation significantly—now, paint
ing can happen during the same frame that user input occurs, making compositing
possible one frame earlier. This makes maximally responsive interaction roughly 17 ms faster than it was before—a solid third of the self-imposed instantaneous
window.
Small but perceptible lag
The majority of perceptible browser lag is caused by time spent in JavaScript code—often, because JavaScript engine developers spend more time gaming synthetic benchmarks than optimizing for real-world web applications and frameworks.
Targeting commonly used websites directly allows Mozilla to better investigate performance issues in SpiderMonkey, Firefox’s JavaScript engine. Experimenting to improve performance on real-world websites rather than benchmarks led to improved array iterators, which pumped up performance beginning in Firefox 89.
Mozilla forecasts continued significant SpiderMonkey improvements throughout 2021, noting better architecture of object structures and faster for-of loops as two examples. Ted Campbell, Iain Ireland, Steve Fink, Jan de Mooij, and Denis Palmeiro get Mozilla’s thanks for their many contributions to SpiderMonkey performance.
Jank
The crappiest but most hilariously named Mozilla performance category, jank
, gets its own set of improvements—most notably, a new Background Hang Reporter. Thanks in part to hard work from Florian Quèze and Doug Thayer, Mozilla now gets special telemetry information when browser performance tanks—including stack traces of frequently seen main-thread hangs inside the Firefox parent process.
The new tool is already bringing insights and performance improvements—for example, Mozilla discovered that accessibility features were being unnecessarily enabled for most Windows users with a touchscreen. Accessibility features are critically important for users who need them, but they represent significant extra work for the browser when active.
Thanks in part to assistance from James Teh, the number of users with unnecessary accessibility features enabled decreased significantly—and the number of hang reports decreased along with it.
https://arstechnica.com/?p=1779865