Firefox 146 release notes for developers (Beta)
This article provides information about the changes in Firefox 146 that affect developers. Firefox 146 is the current Beta version of Firefox and ships on December 9, 2025.
Note: The release notes for this Firefox version are still a work in progress.
Changes for web developers
MathML
- Operator mirroring in right-to-left (RTL) modes and stretching now work properly when used in combination. (Firefox bug 1994172).
- The
math-shiftproperty is now supported. This allows developers to indicate whether superscript rendering in MathML formulas should be normal or compact, affecting the height to which superscript text is shifted. (Firefox bug 1994171).
CSS
-
The
contrast-color()function is now supported. This function takes a<color>value and returns a contrasting color that ensures at least WCAG AA minimum contrast. (Firefox bug 1682439). -
The
<color>data type now supports thedisplay-p3-linearcolor space. This space is similar todisplay-p3, except that it uses a linear-light transfer function and has no gamma-encoding, which allows for a higher precision in the colors displayed. (Firefox bug 1996318). -
The
text-decoration-insetproperty is now supported, which enables adjusting the start and end points of an element'stext-decorationso it can be shortened, lengthened, or have its position shifted with respect to the rendered text. (Firefox bug 1979915, Firefox bug 1997157, Firefox bug 1993043). -
The
@scopeat-rule is now supported by default. This enables you to select elements in specific DOM subtrees, targeting elements precisely without writing overly-specific selectors that are hard to override, and without coupling your selectors too tightly to the DOM structure. (Firefox bug 1991105). -
The legacy
-webkit-fill-availablekeyword is now supported as a value for the CSSwidthandheightproperties to improve web compatibility. This keyword is an alias for the recently-standardizedstretchkeyword (i.e.,width: stretchandheight: stretch), which isn't yet supported in Firefox. (Firefox bug 1988938, Firefox bug 1789477).
JavaScript
WeakMapandWeakSetnow acceptSymbolobjects as keys, except for those that are registered. (Firefox bug 1966745).
APIs
SubtleCrypto.importKey()now allows you to import keys defined as compressed elliptic curve points when using the ECDSA or ECDH algorithms. (Firefox bug 1971499).
WebDriver conformance (WebDriver BiDi, Marionette)
WebDriver BiDi
- Updated the
emulation.setLocaleOverridecommand to override the return value ofnavigator.languageandnavigator.languagesalongside JS APIs. (Firefox bug 1994396). - Updated the
emulation.setLocaleOverrideandemulation.setTimezoneOverridecommands reset behavior to match recent specification changes. When calling this command to reset the override for a specific browsing context, overrides configured for a user context owning this browsing context will still apply. (Firefox bug 1988725). - Added support for the
contextlocator to thebrowsingContext.locateNodescommand, which allows to retrieve the container of non-top-level browsing contexts, such as iframe elements. (Firefox bug 1941270). - Implemented the
network.setExtraHeaderscommand, which can be used to specify request headers which will be automatically added to requests triggered in the provided browsing contexts or user contexts. (Firefox bug 1979731). - Updated all our network data collection commands (
network.addDataCollector,network.getDataandnetwork.disownData) to support therequestdata type, which allows to collect and retrieve request post data. (Firefox bug 1988955). - Improved our implementation for
network.getDatato also support requests using thedata:scheme. (Firefox bug 1992210). - Fixed a bug for
network.getDatawhich was not throwing the expectedno such network dataerror for unsupported requests. (Firefox bug 1992214). - Fixed a bug in our
networkevents where different requests were reusing the same id, mostly impacting data URLs or cached requests. (Firefox bug 1992348).
Marionette
- Fixed a regression in
WebDriver:GetElementTextthat caused text containing accented characters (e.g., "ó") to be incorrectly capitalized. (Firefox bug 1986392). - Fixed a bug in the
WebFrameJSON deserialization that incorrectly raised ano such windowerror instead ofno such framewhen handling invalid frames. (Firefox bug 1996540). - Added a WebDriver extension to control the Global Privacy Control signal. (Firefox bug 1969865).
Changes for add-on developers
browsingData.removeLocalStorageandbrowsingData.remove(whenlocalStorageis set inbrowsingData.DataTypeSet) now delete objects fromsessionStorage. (Firefox bug 1886894)
Experimental web features
These features are shipping in Firefox 146 but are disabled by default.
To experiment with them, search for the appropriate preference on the about:config page and set it to true.
You can find more such features on the Experimental features page.
-
Navigation API (Nightly):
dom.navigation.webidl.enabledNightly builds now support the Navigation API, which provides the ability to initiate, intercept, and manage browser navigation actions. It can also examine an application's history entries. This is a successor to previous web platform features such as the History API and
window.location, which solves their shortcomings and is specifically aimed at the needs of single-page applications (SPAs). (Firefox bug 1979288). -
Relative control points in CSS
shape()curve commands:layout.css.basic-shape-shape.enabledYou can use
<relative-control-point>values when specifying a<curve-command>or<smooth-command>in a CSSshape()function. These values let you specify control points that are positioned relative to the start or end point of the current command, or relative to the origin (top-left) of the container the shape is being drawn inside. -
Custom media queries:
layout.css.custom-media.enabledThe
@custom-mediaCSS at-rule defines aliases for long or complex media queries. Instead of repeating the same hardcoded<media-query-list>in multiple@mediaat-rules, it can be defined once in a@custom-mediaat-rule and referenced throughout the stylesheet whenever needed. (Firefox bug 1991105).