Firefox 156 release notes for developers (Beta)

This article provides information about the changes in Firefox 156 that affect developers. Firefox 156 is the current Beta version of Firefox and ships on September 15, 2026.

Note: The release notes for this Firefox version are still a work in progress.

Changes for web developers

Developer Tools

  • The Page Inspector now resolves substitution functions — var(), attr(), and env() — when computing the steps shown for a declaration, so a value that comes from a custom property or an attribute is traced to its source rather than shown unresolved. (Firefox bug 2041622).
  • The viewport size readout in the Inspector's highlighter no longer rounds the width and height, which previously reported a misleading size at fractional zoom levels or on high-density displays. (Firefox bug 2055445).
  • DevTools can now connect to a debugger server up to three versions older than the client, up from the previous limit. This matters when remotely debugging an older Firefox or GeckoView build. (Firefox bug 2064221).
  • Fixed the rulers highlighter remaining visible after being turned off, when the Inspector was not the selected panel. (Firefox bug 2063982).
  • Fixed F2 invoking "Edit as HTML" on nodes that do not support it, and showing stale content from a previous edit. (Firefox bug 2064213).
  • Fixed the position of the "Device Settings" modal in Responsive Design Mode. (Firefox bug 2062153).

SVG

CSS

  • The non-standard ::-webkit-scrollbar pseudo-element is now reported as unsupported in @supports conditions on every site, so @supports selector(::-webkit-scrollbar) returns false and @supports not (selector(::-webkit-scrollbar)) returns true. This includes the sites listed in the layout.css.fake-webkit-scrollbar.enabled-domains preference introduced in Firefox 155. Firefox still acts on ::-webkit-scrollbar rules on those sites, but it no longer reports the pseudo-element as supported. Sites use this check as a signal that the whole ::-webkit-scrollbar-* family is supported, but Firefox doesn't doesn't support the other pseudo-elements in this family. Sites that guard their standard scrollbar styles behind @supports not (selector(::-webkit-scrollbar)) now get those styles applied in Firefox. (Firefox bug 2062782).
  • The text-box-trim and text-box-edge properties now trim correctly in several cases that previously produced the wrong result: trimming uses the font metrics of the ::first-line pseudo-element when one applies (Firefox bug 2063835), the correct line is trimmed when an inline box on the last line is fragmented (Firefox bug 2063909), and trimming on an inline box no longer removes its border and padding (Firefox bug 2064596). Note that text-box-trim still has no effect in combination with line-clamp.
  • @supports no longer reports support for the ::-webkit-scrollbar pseudo-element, so @supports selector(::-webkit-scrollbar) is now false. Sites commonly used this as a signal that ::-webkit-scrollbar-thumb could be styled, which Firefox does not implement, so claiming support led to worse styling than reporting the gap. Use scrollbar-width and scrollbar-color instead. (Firefox bug 2062782).

JavaScript

  • Promise.try() now resolves the value returned by its callback using PromiseResolve, so a promise returned by the callback is passed through rather than wrapped in a new promise. Promise.try(() => p) is now the same promise as p when p is a native promise. This follows a normative change to the specification. (Firefox bug 2062293).
  • using declarations can no longer be reassigned, matching the const-like semantics required by the specification. Previously such a binding could be silently mutated. (Firefox bug 2040286).

Security

  • The ffdhe2048 and ffdhe3072 finite-field Diffie-Hellman groups are no longer offered by default in TLS handshakes. Servers that support only these groups will fail to negotiate a connection; nearly all servers support ECDHE key exchange instead. (Firefox bug 1992340).

APIs

  • SubtleCrypto.deriveBits() now throws a TypeError if the passed length parameter is NaN, Infinity, negative, or greater than 232−1. Previously these values were either accepted or rejected the returned promise with an OperationError. (Firefox bug 2065212).
  • Scheduler.yield() now inherits the enclosing task's priority and abort signal across an await that settles synchronously, such as an already-resolved promise, a non-promise value, or a then() callback on a settled promise. Previously the continuation lost the inherited state in these cases and silently fell back to the default user-visible priority.

DOM

Media, WebRTC, and Web Audio

WebDriver conformance (WebDriver BiDi, Marionette)

General

  • Marionette and RemoteAgent now both use a custom exit code (69) when their server fails to start. (Firefox bug 2040974).
  • Improved the timing of intermediary events for actions with a duration greater than 0, to be closer to a 16ms interval and avoid inflating the overall duration even if the content process is overloaded. (Firefox bug 2054442).

WebDriver BiDi

  • browsingContext.startScreencast will now safely pick a valid download folder and should no longer throw if the default download folder (DfltDwnld) is not available. (Firefox bug 2066782).
  • Fixed the Mozilla-specific moz:debugging module to correctly handle nested pauses. (Firefox bug 2060460).

Marionette

  • The WebDriver:GetElementTagName command was updated to match the latest specification changes and now returns the DOM element's qualified name. This command used to always lowercase the return value. In practice, this change is backward compatible for HTML elements, but it is a non-backward-compatible change for elements with a case-sensitive qualified name, such as SVG elements.(Firefox bug 2026697).

Changes for add-on developers

  • The theme manifest key adds the backgrounds_area property. This property enables a theme to specify where its background images and gradients are drawn. Setting it to "window" draws them across the whole browser window, while "top_toolbars" restricts them to the horizontal toolbars at the top of the window. When backgrounds_area is omitted or set to "auto", Firefox chooses the area based on properties.additional_backgrounds_alignment. (Firefox bug 2059526)

Experimental web features

These features are shipping in Firefox 156 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.

  • Scoped custom element registries (Nightly): dom.scoped-custom-element-registries.enabled

    Scoped custom element registries are now supported, so that a shadow root can define custom elements that do not clash with those defined in the global registry. This release enables the feature by default in Nightly builds. (Firefox bug 2064333).

  • named-feature() support queries: layout.css.supports.at-rule.enabled

    The named-feature() function in the @supports at-rule lets you test whether the browser supports a feature that has no other detectable syntax, for example @supports named-feature(anchor-position-follows-transforms). (Firefox bug 2042977 and Firefox bug 2055354).

  • Container Timing API: dom.enable_container_timing

    The Container Timing API reports when the contents of a container element are painted, letting you measure the render time of a region of the page rather than of the whole viewport. (Firefox bug 1940240).

  • MathML <a> elements: mathml.a.element.enabled

    The MathML <a> element creates a hyperlink from MathML content, exposing the MathMLAnchorElement interface with the same URL component properties as HTML <a> elements. This release adds support for the rel and relList IDL attributes. (Firefox bug 2063819).