Firefox 89 introduces a fresh new look and feel!
Floating tabs!
Streamlined menus!
New icons!
Better dark mode support!
Improved context menus on Mac and Windows
Improved perceived startup performance on Windows
Native context menus and rubberbanding/overscroll on macOS
Refreshed modals dialogs and notification bars!
More details in these release notes and in this early review from laptopmag
Non-native form controls are slated to ride out in Firefox 89 as well
This lays the groundwork for improving the sandboxing of the content processes by shutting off access to native OS widget drawing routines
(Experimental, and en-US Nightly only) Users will now get unit conversions directly in the URL bar! Users can type “5 lbs to kg” and see a copy/paste friendly result instantaneously.
For contributions from April 20 2021 to May 4 2021, inclusive.
Falguni Islam
Itiel
kaira [:anshukaira]
Kajal Sah
Luz De La Rosa
Richa Sharma
Sebastian Zartner [:sebo]
Vaidehi
kaira [:anshukaira] added some CSS polish to an about:logins import error dialog, and removed some unused assets from the Screenshots code
🌟 Ava Katushka made Firefox more consistent in how it chooses default filenames for saved images
🌟 Vaidehi
suppressed a spurious focus ring from appearing upon loading about:downloads
fixed the appearance of an image in RDM when using Dark Theme
Claudia Batista [:claubatista] landed a patch to make it possible to fallback to some built-in support pages when access to SUMO is not available
Kajal Sah
enabled ESLint support for our Screenshots code
removed some unused code from Screenshots now that saved screenshots are no longer hosted on a server
🌟 Lebar improved some of our internal Places database access code
Luz De La Rosa fixed some visual glitches in our panels as part of the retheme effort
🌟 Richa Sharma added initial support for isolating WebExtension access to particular containers. See the “WebExtensions Framework” update for more details.
🌟 Samuel Grasse-Haroldsen made it so that we render an appropriate message in about:addons when there are no add-ons to manage, rather than an empty list.
Starting from Firefox 90, when no extensions are installed our about:addons page will show to the users a nicer message to explicitly direct them to addons.mozilla.org instead of an empty list of installed extensions (Bug 1561538) - Thanks to Samuel Grasse-Haroldsen for fixing this polishing issue.
As part of the ongoing work to get rid of OS.File usage, Barret unveiled and fixed some races in AddonManager and XPIDatabase jsm (Bug 1702116)
Fixed a macOS specific issue in the “Manager Extension Shortcuts” about:addons view, which was preventing this view from detecting some of the conflicting shortcuts (Bug 1565854)
Starting from Firefox 90, we now avoid ChromeUtils.idleDispatch on urgent blocking webRequest events, which made both us and perfherder quite happy \o/ (Bug 1587058)
We expect this to be also a user perceived improvement (e.g. this was an known issue with high refresh monitors, e.g. see Bug 1560090)
As part of the past round of Outreachy projects, our contributor Richa Sharma worked on a project aiming to allow Firefox users to restrict which extensions are allowed or not allowed to run in certain Firefox containers. The initial set of changes needed to adapt our internals have been landed in Firefox 90 (but we aware that the feature is still locked behind prefs, the effort to complete adapting all the WebExtensions features and APIs is still ongoing and there isn’t yet any Firefox UI to manage these restrictions):
Meta bug: Bug 1683056 - [META] Users control over add-ons in Container tabs
Set of bugs landed in Firefox 90: Bug 1683058 (tabs API), Bug 1690736 (webNavigation API), Bug 1692813 (proxy API), Bug 1697764 (webRequest API)
Experimental prefs:
extensions.userContextIsolation.enabled (boolean),
extensions.userContextIsolation.defaults.restricted (JSON stringify array of userContext Ids)
extensions.userContextIsolation.EXTID.restricted (JSON stringify array of userContext Ids)
As part of our ongoing work on introducing in Firefox support for extensions using the new “manifest_version 3”, we have introduced support for some new annotations to our JSONSchema parser (and started to use these new properties to introduce the differences between the API and manifest properties available based on the extensions manifest_version):
Bug 1693403 - Support schema versioning for Manifest v3 differences
Bug 1687762 - Deprecate APIs ahead of MV3 and disable in MV3
Fixed a use-after-free issue on shutdown in MatchPattern::Init identified through grizzly fuzzy testing (Bug 1699298)
Fixed a bug in DataTransferList, which was preventing web pages to access a drag and dropped file list if an extension content script was able to access it first (Bug 1707214)
Nicolas Chevobbe applied the needed changes to ensure that the devtools.inspectedWindow.reload method is Fission compatible also when an extension does pass to it the userAgent option (Bug 1706098)
Neil has been working on reviving the tab unloader for when users are hitting memory limits
It’s smarter this time though, and should hopefully make better choices on which tabs to unload.
Currently disabled by default, but Nightly users can test it by setting `browser.tabs.unloadOnLowMemory` to `true`
New users now get initial focus on about:welcome instead of the address bar based on experiment results. This was uplifted to Beta 89 and Release 88.
Import screen on about:welcome opens up migration wizard based on the browser used to download Firefox as well as showing the other browser’s name on the button.
Remotely deployed an infobar to remind new users two times to set Firefox as the default browser after 5 weeks and 10 weeks.
Removed theme screens for both new user about:welcome and upgrade onboarding.
dthayer updated the skeleton UI to match proton styles, turned it off for non-default densities, and ensured we show the skeleton UI when restarting firefox
The skeleton UI is set to ride the trains to release!
Barret remove OS.File usage from XPIDatabase.jsm
Florian fixed a bug where the notificationbar stack lazy getter was called every time a tab closed
Florian added Worker.postMessage, “Image load”, and “Image paint” profiler markers
Florian wrote a patch to update the about:processes table in a more efficient way
Florian ensured mochitest profiling works for accessibility tests and tests triggering customizationchange events.
Try mach test <path to mochitest> --profiler
mconley dug into a few minor performance regressions related to Proton
Stacks now include the category color of each stack frame (in tooltips, marker table, sidebar)
Fixed a bug where the dot markers appear in the wrong places.
Lots of polish fixes to Proton address bar (and search bar)
The Search Mode chiclet can now be closed also when the address bar is unfocused - Bug 1701901
Address bar results action text (for example “Switch to tab”, or “Search with Engine”) won’t be pushed out of the visible area by long titles anymore - Bug 1707839
Double dots in domain-looking strings will now be corrected - Bug 1580881
Kajal, Falguni, Dawit, and Kaira have been working on removing server side code from screenshots
[gijs] CSS `ch` units depend on the device pixel rendering of the `0` character in the font, font-size and DPI scaling. So the CSS `px` outcome of something like `50ch` can easily vary by 30px between DPI scaling (with identical font size + font), if the font forces glyphs to be rendered in line with device pixels. Unless you’re dealing with monospace text, it’s probably better to use `em` for font-size-related sizing.
[gijs] CSS selectors: `:root:-moz-lwtheme` works but `:host:-moz-lwtheme` does not, you want `:host(:-moz-lwtheme)`.
There should now be warnings in the CSS console for the broken version, which will fail browser_parsable_css.js on infra.
[gijs] As of October 2020, you can split `skip-if` and `fail-if` annotations in test manifests (browser.ini, mochitest.ini, etc.) across lines! This is equivalent to separating with `||` but makes it easier to read multiple conditions. E.g.:
skip-if = os == “win” || os == “linux
Is equivalent to:
skip-if =
os == “win” # fails because X
os == “linux” # fails because Y
There's now also a linter to enforce multiline conditions - only shows as warnings, reviewbot should soon be showing warnings in phabricator.
This information, including all of the previous updates, are fully available in this doc: https://docs.google.com/a/mozilla.com/document/d/1u9YH3ULNRYg6G-fN-Udkvfkcvg0alJfzi_zIAfFNkL8/edit?usp=sharing
Also note that I'm really just synthesizing and humanizing the stuff that's on the Wiki, which is freely available from here: https://wiki.mozilla.org/Firefox/Meeting, so check that out if you want the source material. It'll also be posted (minus the Below the Fold stuff) to the Nightly blog.
Finally, if there's a Firefox-ish team that you feel isn't being represented here, please let them know about the above meeting so we can get their updates.
Keep on rockin' the free web,
Doug Thayer