Firefox 150 release notes for developers (Beta)
This article provides information about the changes in Firefox 150 that affect developers. Firefox 150 is the current Beta version of Firefox and ships on April 21, 2026.
Note: The release notes for this Firefox version are still a work in progress.
Changes for web developers
>Developer Tools
- A specific message is now displayed in the Response tab of the Network pane to indicate why there is no response data when a request has been redirected. (Firefox bug 2016679).
HTML
- The
"auto"keyword is now supported as an option for thesizesattribute of<img>elements (andHTMLImageElement.sizes). This allows lazy-loaded<img>elements to use the calculated image layout size, after any CSS has been applied, to select which image to display from asrcset. This is simpler that specifying media conditions and their associated sizes in the attribute, which likely duplicates behavior that is already captured in CSS media queries. (Firefox bug 1819581).
CSS
-
The
color-mix()CSS function now accepts multiple<color>values, rather than just two. This allows you to mix any number of colors. (Firefox bug 2024171). -
The
light-dark()CSS function now accepts<image>values. This allows using images, gradients, and so on for different color schemes. (Firefox bug 2023569). -
The media-based pseudo-classes
:buffering,:muted,:paused,:playing,:seeking,:stalled, and:volume-lockedare now supported. They allow you to style<audio>and<video>elements based on their current state, such as playing or paused. (Firefox bug 2020775). -
The
animation-range-startandanimation-range-endproperties (and theanimation-rangeshorthand property) are now supported. These properties set the start and end of an animation's attachment range along its timeline, allowing you to control where along a scroll-driven animation timeline an animation will start and end. (Firefox bug 1825427).
APIs
- The
Sanitizer.replaceElementWithChildren()method will now returnfalseif the element to be replaced is<html>in the HTML namespace. In other words, you can't use this method to create aSanitizerthat will replace the<html>element with its inner content. (Firefox bug 2022176).
DOM
-
The
options.shadowRootsargument of theDocument.caretPositionFromPoint()method is now supported. This allows the method to return the node containing the caret from within a shadow DOM, provided its associatedShadowRootwas passed as an option. (Firefox bug 1914596). -
The non-standard
caretRangeFromPoint()method of theDocumentinterface is now supported. (Firefox bug 1550635). -
The
ariaNotify()method is now supported onDocumentandElement. This queues a string of text to be announced by a screen reader, providing a more ergonomic and reliable alternative to ARIA live regions. (Firefox bug 2018095).
WebDriver conformance (WebDriver BiDi, Marionette)
General
- Fixed an issue where having pending downloads when closing the browser could be blocked by a prompt. The prompt is now dismissed automatically. (Firefox bug 2003840).
WebDriver BiDi
- Added the
emulation.setNetworkConditionscommand, which supports thetype: offlineat the moment. Using this, you can emulate offline mode either on specific browsing contexts, on user contexts (a.k.a. containers) or globally. (Firefox bug 1993079). - Improved our support for non utf-8 header values across all the
networkmodule commands and events. They are now properly serialized toBytesValue. (Firefox bug 1994996). - Fixed a bug for download events triggered by a response with the "Content-Disposition" header. Such events were missing the
navigationproperty if the download was initiated by a link withtarget="_blank". (Firefox bug 1999481). - Updated the
log.entryAddedevent to only be emitted for console API calls that actually print a message in browser developer tools (see also the console specification: using the printer). With this change, usingconsole.clearorconsole.timeno longer triggers an event. (Firefox bug 1866749). - Fixed a race condition with the
browsingContext.setViewportcommand which could timeout if several contexts were created in parallel. (Firefox bug 2019511). - Improved the
browsingContext.locateNodescommand to allow retrieving the HTML element (documentElement) of a page when using thecsslocator. (Firefox bug 2020578).
Marionette
- Fixed the
WebDriver:getShadowRootcommand to stop returning user-agent shadow roots. (Firefox bug 2016741).
Changes for add-on developers
- The behavior of
tabs.moveis updated for split views so that:- The order of tabs in a split view can be swapped. (Firefox bug 2016762)
- When the list of tabs includes both split view tabs and places one or more tabs between them, the tabs are moved apart and the split view closed. (Firefox bug 2022549)
- Resolved an issue with some JavaScript
importcalls failing to import CSS. (Firefox bug 2016369)
Experimental web features
These features are shipping in Firefox 150 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.
-
Namespaced attributes in
attr()CSS function:layout.css.attr.enabledThe
attr()CSS function now accepts namespaced attributes. This allows you to take attributes from elements of XML-based languages, such as SVG and style them accordingly. (Firefox bug 2014060) -
Absolutely positioned elements in multi-column containers and when printing:
layout.abspos.fragmentainer-aware-positioning.enabledAbsolutely positioned elements inside multi-column containers and when printing are now correctly positioned and fragmented. This improves interoperability with other browsers and prevents layout issues such as overlapping text or content loss. (Firefox bug 2018797).
-
Scoped custom element registries:
dom.scoped-custom-element-registries.enabledThe
customElementRegistryproperty is supported onDocument,Element, andShadowRoot. This allows the definition of scoped custom element registries. (Firefox bug 2018900).