Firefox 157 release notes for developers (Stable)
This article provides information about the changes in Firefox 157 that affect developers. Firefox 157 was released on September 29, 2026.
Changes for web developers
>HTML
No notable changes.
CSS
- The
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). It also works in thesupports()function of@importCSS at-rule. (Firefox bug 2060755). - The
overscroll-behaviorshorthand property and theoverscroll-behavior-block,overscroll-behavior-inline,overscroll-behavior-xandoverscroll-behavior-ylonghand properties now support thechainvalue. Thechainvalue allows scrolling to pass to another scrollable area, but does not allow the browser's default overscroll behavior (such as "bounce") when reaching the boundary. (Firefox bug 2036966).
JavaScript
No notable changes.
APIs
- The WebGPU
TRANSIENT_ATTACHMENTtexture usage type is now supported. This enables creating memory-efficient attachments that are only used within the current render pass. Related render pass operations stay in tile memory, which avoids VRAM traffic and can avoid VRAM allocation for the textures. (Firefox bug 2005061).
DOM
- The
Animation.reverse()method and theAnimation.playbackRateproperty now match the Web Animations specification in two cases. First, callingreverse()on an animation whoseplaybackRateis0now plays the animation. This updates itsstartTimeandcurrentTimewhile leavingplaybackRateat0. Previously, the call had no effect. Second, switchingplaybackRatebetween a positive and a negative value on a scroll-driven animation now mirrors the animation'sstartTimeto the opposite end of the timeline. As a result, the reversed animation still falls within the scroll range. Previously,startTimewas left unchanged, which is only correct for time-based timelines such asDocumentTimeline. This adjustment applies when the animation has astartTimeand a finite duration. (Firefox bug 2046973).
WebDriver conformance (WebDriver BiDi, Marionette)
General
- From now on, the recommended preferences will be restored at a different stage to avoid them being restored in the wrong profile. (Firefox bug 2066531).
WebDriver BiDi
- Updated
browser.setDownloadBehaviorcommand to requiredestinationFolderparameter when calling the command withtype=”allowed”, which aligns us with the specification. In order to restore the default behavior without having to specify a folder, clients should callbrowser.setDownloadBehaviorwith null instead. (Firefox bug 2069952).
Changes for add-on developers
>Experimental web features
These features are shipping in Firefox 157 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.
-
export * from "mod"includes the default export:javascript.options.experimental.export_star_defaultThe TC39 export
*default proposal makesexport * from "mod"also provide the module's default export, which it currently omits. Note that this preference can only be set in Nightly builds. (Firefox bug 2065611). -
navigateoption for notifications:dom.webnotifications.navigate.enabledThe
navigateoption of theNotification()constructor andServiceWorkerRegistration.showNotification()takes a URL to open when the user clicks the notification, so you no longer need a click handler just to open a page. The new read-onlyNotification.navigateproperty returns that URL. When the option is set, theclickandnotificationclickevents no longer fire for that notification. Each entry in theactionsoption can set its ownnavigateURL, and an action button without one still firesnotificationclickrather than using the notification's URL. (Firefox bug 2066184). -
Sanitizing HTML while parsing:
dom.security.sanitizer.while-parsingMethods that sanitize HTML with the HTML Sanitizer API, such as
Element.setHTML(), now remove unwanted elements and attributes as the markup is parsed, instead of parsing all of the markup first and cleaning up the resulting DOM tree afterwards. The result is the same, except that neighboring text now lands in a single text node instead of being split across several. (Firefox bug 2062652). -
Key encapsulation in Web Crypto:
dom.webcrypto.encapsulation.enabledThe Web Crypto API supports ML-KEM, an algorithm that lets two parties agree on a shared secret key. It is designed to stay secure against attacks by quantum computers.
SubtleCryptohas the newencapsulateKey(),encapsulateBits(),decapsulateKey(), anddecapsulateBits()methods, with matchingkey usages. The supported algorithm names includeML-KEM-512,ML-KEM-768, andML-KEM-1024.SubtleCrypto.importKey()andSubtleCrypto.exportKey()also accept the newraw-publicandraw-seedkey formats. This feature is enabled by default in Nightly builds. (Firefox bug 1943614).