Firefox 158 release notes for developers (Stable)

This article provides information about the changes in Firefox 158 that affect developers. Firefox 158 was released on October 13, 2026.

Changes for web developers

Accessibility

  • The aria-busy attribute is now supported in Firefox for Android (desktop support has been available for a long time). This ARIA state indicates whether an element is currently being modified. It allows assistive technologies to wait until changes to the content are complete before informing users of the update. For example, a screen reader can wait until a live region has finished updating before announcing the changes. (Firefox bug 908042).

HTML

No notable changes.

CSS

  • CSS typed arithmetic is now supported, which enables using functions such as calc() to divide two values of the same data type, even if they use different units. The resulting unitless quotients can then be converted to other data types, creating useful relationships between different values on a page. (Firefox bug 2067411).

JavaScript

No notable changes.

HTTP

APIs

DOM

Media, WebRTC, and Web Audio

  • When sending H.264 or AV1 video with WebRTC, Firefox now lowers the resolution and frame rate as needed to stay within the codec level negotiated with the remote peer, set by the profile-level-id parameter for H.264 and level-idx for AV1. As a result, MediaCapabilities.encodingInfo() now reports a webrtc configuration as supported even if its resolution and frame rate exceed the level in its contentType. (Firefox bug 2013936).

WebDriver conformance (WebDriver BiDi, Marionette)

General

  • Added support for setting the camera and microphone permissions with the permissions.setPermission command in WebDriver BiDi and the WebDriver:SetPermission command in Marionette. This allows tests to grant or deny access to media devices without prompting the user. (Firefox bug 2070577).
  • Changed the touch start and touch move tolerances to zero in automation, so that touch actions now scroll from exactly the position at which they are dispatched, without small initial movements being absorbed. (Firefox bug 2055661).

WebDriver BiDi

  • Added support for the imageSize argument to the browsingContext.captureScreenshot command, which allows clients to specify the maximum size of the resulting screenshot image. (Firefox bug 2069002).
  • Added support for the destinationFolder argument to the browsingContext.startScreencast command, which allows clients to choose the folder where the recorded video file is saved. (Firefox bug 2072616).

Marionette

  • Fixed the WebDriver:TakeScreenshot command to return an unable to capture screen error when the width or height of the captured image is zero. (Firefox bug 1492357).

Other

  • Support for the JPEG XL image format (image/jxl) is now enabled by default. JPEG XL is a royalty-free raster image format that supports lossy and lossless compression, transparency, animation, and HDR. It can also losslessly transcode existing JPEG images. (Firefox bug 2065096).

Changes for add-on developers

Experimental web features

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

  • random() CSS function: layout.css.random.enabled

    The random() CSS function generates a random value within a specified range, optionally limiting the possible values to step size intervals between those limits. An optional <random-key> parameter controls which random() functions share a random value, for example across elements or properties. (Firefox bug 2071165).

  • corner-shape properties: layout.css.corner-shape.enabled

    The corner-shape shorthand property and its constituent longhand properties are now supported in Nightly. These properties let you customize corner shapes using one of the <corner-shape-value> keyword values or the superellipse() function. (Firefox bug 2070927).

  • Deferred module evaluation (Nightly): javascript.options.experimental.defer_import_eval

    The import defer declaration and the import.defer() syntax are now available in Nightly behind a preference. They load a module and its dependencies up front, but run the module's code only when one of its exports is first accessed, so modules that aren't needed right away don't slow down startup. Modules that use top-level await still run right away. (Firefox bug 1952263).

  • On-device speech recognition: media.webspeech.recognition.enable

    On-device speech recognition is now supported in Nightly, on desktop only. This allows you to perform speech recognition via the Web Speech API directly in the browser, rather than relying on a cloud service. (Firefox bug 2069803).

  • Speculation rules: moderate eagerness: dom.speculation_rules.enabled

    The Speculation Rules API provides a mechanism to improve performance for future navigations by specifying which resources should be prefetched or prerendered based on factors such as user behavior towards links. Firefox 158 Nightly adds support for moderate eagerness: a matching prefetch starts once the user hovers over a link for a short time (200 milliseconds by default). (Firefox bug 2061013).

  • Streaming request bodies: dom.fetch.streaming_upload

    Enabled in Nightly only, you can now set a ReadableStream as a request body (for example, via the Request() constructor or the Window.fetch() method). This allows you to stream uploads incrementally rather than having to wait for the whole body to be available. (Firefox bug 1594633).

  • CSSNumericValue.equals(): layout.css.typed-om.enabled

    The CSSNumericValue.equals() method of the CSS Typed Object Model API is now supported in Nightly. It returns true if every value passed to it is the same as the numeric value it's called on, and false otherwise. Values are compared as written, without converting units. For example, 1in and 2.54cm are different, as are calc(1px + 2px) and calc(2px + 1px). (Firefox bug 2074503).