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

JavaScript

No notable changes.

APIs

  • The WebGPU TRANSIENT_ATTACHMENT texture 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 the Animation.playbackRate property now match the Web Animations specification in two cases. First, calling reverse() on an animation whose playbackRate is 0 now plays the animation. This updates its startTime and currentTime while leaving playbackRate at 0. Previously, the call had no effect. Second, switching playbackRate between a positive and a negative value on a scroll-driven animation now mirrors the animation's startTime to the opposite end of the timeline. As a result, the reversed animation still falls within the scroll range. Previously, startTime was left unchanged, which is only correct for time-based timelines such as DocumentTimeline. This adjustment applies when the animation has a startTime and 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.setDownloadBehavior command to require destinationFolder parameter when calling the command with type=”allowed”, which aligns us with the specification. In order to restore the default behavior without having to specify a folder, clients should call browser.setDownloadBehavior with 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_default

    The TC39 export * default proposal makes export * 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).

  • navigate option for notifications: dom.webnotifications.navigate.enabled

    The navigate option of the Notification() constructor and ServiceWorkerRegistration.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-only Notification.navigate property returns that URL. When the option is set, the click and notificationclick events no longer fire for that notification. Each entry in the actions option can set its own navigate URL, and an action button without one still fires notificationclick rather than using the notification's URL. (Firefox bug 2066184).

  • Sanitizing HTML while parsing: dom.security.sanitizer.while-parsing

    Methods 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.enabled

    The 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. SubtleCrypto has the new encapsulateKey(), encapsulateBits(), decapsulateKey(), and decapsulateBits() methods, with matching key usages. The supported algorithm names include ML-KEM-512, ML-KEM-768, and ML-KEM-1024. SubtleCrypto.importKey() and SubtleCrypto.exportKey() also accept the new raw-public and raw-seed key formats. This feature is enabled by default in Nightly builds. (Firefox bug 1943614).