Firefox 155 release notes for developers (Beta)

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

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

Changes for web developers

Developer Tools

CSS

  • The attr() CSS function can now be used in any CSS property, rather than only in content. This lets you drive styling from HTML attributes, such as width: attr(data-size px), without using JavaScript. <attr-type> values (including unit identifiers such as px and s), fallback values, and namespaced attributes are now supported. You can now also use attr() inside container style queries. (Firefox bug 2038940).
  • The progress() CSS function is now supported. This returns a <number> representing how far a value has progressed between a start and an end value. The result can then be used to calculate other values, for example opacity: calc(0.4 + progress(100cqw, 300px, 900px) * 0.6). (Firefox bug 2047345).
  • The alpha() CSS function is now supported. It allows you to pass a color and get back the color with a different alpha (transparency) value, leaving other components of the color unchanged. Inside the function, you can use the alpha keyword to refer to the alpha channel of the original color, for example alpha(from var(--brand) / calc(alpha * 0.5)). (Firefox bug 2059738 and Firefox bug 2059988).
  • The font-width CSS property is now supported, along with the font-width @font-face descriptor and the CSSStyleDeclaration.fontWidth property. This is the new name for the font-stretch property, which continues to work as a legacy alias. Note that computed style enumeration now returns font-width rather than font-stretch. (Firefox bug 1911075).

JavaScript

HTTP

  • Firefox now uses Happy Eyeballs version 3 when establishing connections, racing IPv6 and IPv4 addresses so that connection setup is not delayed by an unreachable address family. Note that this is currently supported on some platforms only. (Firefox bug 2062892).
  • QUIC version negotiation is now supported, allowing HTTP/3 connections to negotiate QUIC version 2. (Firefox bug 2059947).

APIs

DOM

Media, WebRTC, and Web Audio

WebAssembly

  • The compact import section binary format extension is now supported, which reduces the size of modules that have many imports. (Firefox bug 2062344).
  • The wide arithmetic proposal is now supported, adding the i64.add128, i64.sub128, i64.mul_wide_s, and i64.mul_wide_u instructions. These produce 128-bit results from 64-bit operands, which previously had to be emulated in code compiled to WebAssembly, such as bignum and cryptography libraries. (Firefox bug 2062374).

WebDriver conformance (WebDriver BiDi, Marionette)

General

  • Disabled the download panel to prevent the current document from losing focus when a download begins. (Firefox bug 2035439).
  • Fixed the Actions API so that the dblclick event is fired when performing a double-click while holding down the Ctrl key on non-macOS platforms. (Firefox bug 2058556).

WebDriver BiDi

  • Updated the Mozilla-specific moz:debugging module to no longer rely on the same nested event loop API as DevTools, which prevents conflicts when WebDriver BiDi and DevTools are used in parallel. (Firefox bug 2041335).
  • Fixed the browsingContext.reload command failing when used for frames. (Firefox bug 2030909).
  • Removed support for the contexts argument in the session.unsubscribe command. From now on, clients can unsubscribe only by event name or subscription ID. (Firefox bug 1988723).

Changes for add-on developers

Experimental web features

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

  • Scroll-driven animations: layout.css.scroll-driven-animations.enabled

    Scroll-driven animations let an animation progress with the scroll position of a scroller, or with the position of an element within its scroller, rather than with time. This preference covers the scroll-timeline and view-timeline properties and their longhands, including the view-timeline-inset property, along with the scroll() and view() functional notations. In this release the view-timeline-inset longhand was added to the view-timeline shorthand. (Firefox bug 2046602).

  • CSS Typed Object Model Level 1: layout.css.typed-om.enabled

    The CSS Typed Object Model API exposes CSS values as typed JavaScript objects rather than strings, which simplifies manipulating CSS from script. (Firefox bug 1278697).

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

    The at-rule() function in the @supports at-rule lets you test whether the browser supports a given CSS at-rule, for example @supports at-rule(@scope). (Firefox bug 2060754).

  • Audio Session API: dom.audio_session.enabled

    The Audio Session API lets a site declare how its audio should behave relative to other audio playing on the device, such as whether it should mix with, duck, or interrupt other audio. (Firefox bug 2055710).

  • CSS basic shapes allow farthest-corner and closest-corner keywords: layout.css.ellipse-corners.enabled

    The farthest-corner and closest-corner keywords can be used for specifying the radii values of the ellipse() and circle() CSS basic shapes. (Firefox bug 2037673).

  • Truncating content with line-clamp: layout.css.line-clamp.enabled

    The line-clamp CSS property works without the -webkit- vendor prefix, and now also supports the no-ellipsis keyword and <string> values for choosing what is shown where the text is clamped. (Firefox bug 2042999 and Firefox bug 2043000).

  • Scoped custom element registries: dom.scoped-custom-element-registries.enabled

    A CustomElementRegistry can be constructed and passed to Element.attachShadow(), so that a shadow root can define custom elements that do not clash with those defined in the global registry. (Firefox bug 2018900). This release also adds the customelementregistry global attribute, for selecting the registry an element is associated with from markup. (Firefox bug 2029965).

  • Buffer boundary assertions in regular expressions: (Nightly only) javascript.options.experimental.regexp_buffer_boundaries

    The TC39 RegExp buffer boundaries proposal adds the \A, \z, and \Z assertions to regular expressions. These match the start or end of the entire input regardless of whether the m flag is set. (Firefox bug 2047706).

  • border-area value for background-clip: layout.css.background-clip.border-area.enabled

    The border-area value of the background-clip CSS property clips the background to the area painted by the element's border, which makes it possible to use a gradient or image as a border. (Firefox bug 2045230).