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
- The media feature emulation buttons in the Rules view are now collected into a dedicated emulation panel, which is opened using the
@button. The panel also adds emulation of theprefers-reduced-motionmedia feature. (Firefox bug 1692434 and Firefox bug 1477920). - The JSON Viewer now opens JSON Lines (NDJSON) documents, which are served as
application/jsonlines,application/x-ndjson, ortext/jsonl, or have a.jsonlfile extension. Each line is parsed separately into its own collapsible entry, labeled with the line number it came from, and a line that fails to parse is reported inline without affecting the rest of the document. (Firefox bug 2055774, Firefox bug 2060972, and Firefox bug 2060529). - Added a keyboard shortcut for disabling breakpoints in the Debugger. (Firefox bug 1642578).
CSS
- The
attr()CSS function can now be used in any CSS property, rather than only incontent. This lets you drive styling from HTML attributes, such aswidth: attr(data-size px), without using JavaScript.<attr-type>values (including unit identifiers such aspxands), fallback values, and namespaced attributes are now supported. You can now also useattr()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 exampleopacity: 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 thealphakeyword to refer to the alpha channel of the original color, for examplealpha(from var(--brand) / calc(alpha * 0.5)). (Firefox bug 2059738 and Firefox bug 2059988). - The
font-widthCSS property is now supported, along with thefont-width@font-facedescriptor and theCSSStyleDeclaration.fontWidthproperty. This is the new name for thefont-stretchproperty, which continues to work as a legacy alias. Note that computed style enumeration now returnsfont-widthrather thanfont-stretch. (Firefox bug 1911075).
JavaScript
- The
Promise.allKeyed()andPromise.allSettledKeyed()static methods are now supported, as defined in the TC39 await dictionary proposal. These behave likePromise.all()andPromise.allSettled(), respectively, except that they take an object of promises instead of an iterable. They fulfill with an object that has the same keys, so results can be read by name instead of by position. (Firefox bug 2057270). - A module that fails to load because of a network error or an incorrect MIME type is no longer cached as a failure, so importing the same module specifier again can succeed once the server recovers.
This applies to JavaScript, JSON, CSS, and text modules, loaded either statically or with dynamic import, in both windows and workers.
Relatedly,
<link rel="modulepreload">now fires theloadevent rather thanerrorfor modules that are already fetched or still fetching, and a module script now loads even if an earliermodulepreloadof the same URL failed its integrity check. (Firefox bug 2055211 and Firefox bug 2052949).
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
- Several WebTransport API features are now supported:
- Send groups let you group streams that should share bandwidth and prioritize streams relative to each other within a group.
You can create one using
WebTransport.createSendGroup(). Then pass the returnedWebTransportSendGroupin thesendGroupoption ofWebTransport.createBidirectionalStream()orWebTransport.createUnidirectionalStream(). (Firefox bug 2007165). - The
WebTransport.exportKeyingMaterial()method derives keying material from the underlying TLS connection for a given label and context, so that both endpoints can obtain the same shared secret. (Firefox bug 2007200). - The
WebTransportDatagramDuplexStream.createWritable()method returns aWebTransportDatagramsWritablestream for sending datagrams, withsendGroupandsendOrderproperties for prioritizing it against other senders. (Firefox bug 2007174). - The
WebTransport()constructor accepts aprotocolsoption listing the application protocols the client supports, which is sent to the server in thewt-available-protocolsrequest header. The protocol chosen by the server is exposed in theWebTransport.protocolproperty. (Firefox bug 2007150). - The
WebTransport.drainingproperty indicates when the server has requested the client to start a graceful shutdown of the session. (Firefox bug 2007160).
- Send groups let you group streams that should share bandwidth and prioritize streams relative to each other within a group.
You can create one using
- The WebGPU API now supports the
dual-source-blendingfeature on desktop, which can be requested inGPUAdapter.requestDevice(). This allowssrc1,one-minus-src1,src1-alpha, andone-minus-src1-alphato be specified in thesrcFactoranddstFactorproperties ofcreateRenderPipeline()andcreateRenderPipelineAsync(). The WGSLdual_source_blendingextension is also supported. (Firefox bug 1924328).
DOM
- The
SVGAElementinterface now implements theHyperlinkElementUtilsmixin. As a result, SVG<a>elements expose the same URL component properties as HTML<a>elements:protocol,username,password,host,hostname,port,pathname,search, andhash. The read-onlyoriginproperty is also exposed. (Firefox bug 2058578). - The
SVGNumberList,SVGPointList,SVGStringList, andSVGTransformListinterfaces now support indexed setters. This means you can replace an item in the list using bracket notation, such astransformList[0] = newTransform, instead of callingreplaceItem(). TheSVGLengthListinterface already supports indexed setters. (Firefox bug 2059426). - The
SVGGraphicsElement.getBBox()method now honors itsoptionsargument, with thefill,stroke,markers, andclippedproperties. This allows you to get a bounding box that accounts for the stroke, markers, and clipping applied to an element, rather than only its fill geometry. (Firefox bug 2060873). - Elements that are not rendered, such as those inside
<mask>,<clipPath>,<marker>,<symbol>, and<defs>, now return an empty rectangle fromElement.getBoundingClientRect()and an empty list fromElement.getClientRects(), instead of reporting a box that was never painted. (Firefox bug 2061646).
Media, WebRTC, and Web Audio
- The
errorevent fired on anRTCDataChannelobject may now reportsctp-failurein itserror.errorDetailproperty if the transport is closed due to an error. In addition,RTCErrorandRTCErrorEventare now available in dedicated workers (this exposure is not yet in the specification). (Firefox bug 1814460). - The
RTCPeerConnection.sctpproperty now returns anRTCSctpTransportat the times required by the specification, including in thehave-remote-offersignaling state, where it was previouslynull. The transport now also reaches theconnectedandclosedstates, and itsmaxChannelsandmaxMessageSizeproperties are populated correctly. (Firefox bug 2019361 and Firefox bug 2056412). - Two-byte RTP header extensions are now supported, so header extensions with an id of 15 or above can be negotiated instead of causing an
OperationError. (Firefox bug 2014357). - The
selectedCandidatePairChangesproperty is now reported inRTCTransportStats. (Firefox bug 2055911). - The
transportstatistics returned byRTCPeerConnection.getStats()are now correct before negotiation, in other words aftersetLocalDescription()but before a remote description has been set. ThedtlsRoleproperty is now reported asunknownuntil the DTLS handshake selects a role, where previously it was not reported at all (Firefox bug 2053296), and theiceStateproperty now starts asnewrather thanchecking, which incorrectly indicated that connectivity checks were already underway (Firefox bug 2053297).
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, andi64.mul_wide_uinstructions. 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
dblclickevent is fired when performing a double-click while holding down theCtrlkey on non-macOS platforms. (Firefox bug 2058556).
WebDriver BiDi
- Updated the Mozilla-specific
moz:debuggingmodule 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.reloadcommand failing when used for frames. (Firefox bug 2030909). - Removed support for the
contextsargument in thesession.unsubscribecommand. 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.enabledScroll-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-timelineandview-timelineproperties and their longhands, including theview-timeline-insetproperty, along with thescroll()andview()functional notations. In this release theview-timeline-insetlonghand was added to theview-timelineshorthand. (Firefox bug 2046602). -
CSS Typed Object Model Level 1:
layout.css.typed-om.enabledThe 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.enabledThe
at-rule()function in the@supportsat-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.enabledThe 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-cornerandclosest-cornerkeywords:layout.css.ellipse-corners.enabledThe
farthest-cornerandclosest-cornerkeywords can be used for specifying the radii values of theellipse()andcircle()CSS basic shapes. (Firefox bug 2037673). -
Truncating content with
line-clamp:layout.css.line-clamp.enabledThe
line-clampCSS property works without the-webkit-vendor prefix, and now also supports theno-ellipsiskeyword 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.enabledA
CustomElementRegistrycan be constructed and passed toElement.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 thecustomelementregistryglobal 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_boundariesThe TC39 RegExp buffer boundaries proposal adds the
\A,\z, and\Zassertions to regular expressions. These match the start or end of the entire input regardless of whether themflag is set. (Firefox bug 2047706). -
border-areavalue forbackground-clip:layout.css.background-clip.border-area.enabledThe
border-areavalue of thebackground-clipCSS 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).