Firefox 138 for developers

This article provides information about the changes in Firefox 138 that affect developers. Firefox 138 was released on April 29, 2025.

Changes for web developers

HTML

  • The importmap value of the type attribute of the <script> element now supports the integrity key. This allows the ES module URLs referenced in the import maps to be matched against their integrity metadata. As a result, these modules are now compatible with CSP directives that require Subresource Integrity (SRI). (Firefox bug 1945540).

CSS

No notable changes

JavaScript

HTTP

  • The Clear-Site-Data header can be used with the cache (and *) directive to clear the browser network cache. This gives websites more control over data stored for their users, allowing them to, for example, mitigate the risk of privacy leaks by clearing the cache during logout. (Firefox bug 1942272).
  • The HTTP Origin-Agent-Cluster response header can now be used by a site to hint that the associated document should be placed in an origin-keyed agent cluster. When in such a cluster, the operating system process and/or other OS resources used by the document are only shared with other documents from the same origin. This makes it less likely that a resource-intensive document will degrade the performance of documents from other origins. Developers can test whether the browser has put the document in an origin-keyed agent cluster using the window.originAgentCluster property. (Firefox bug 1665474)

APIs

DOM

Media, WebRTC, and Web Audio

  • WebRTC applications can now set a preference for prioritizing framerate or resolution when both cannot be maintained at the configured levels due to network degradation. The value is set using the degradationPreference property in the parameter object passed to the setParameters() method of the RTCRtpSender interface. It can also be read from the object returned by the getParameters() method. (Firefox bug 1329847).

WebDriver conformance (WebDriver BiDi, Marionette)

General

  • All remote protocols now enable the preferences required to properly pipe logs to stdout (Firefox bug 1947740).
  • A new Firefox argument, --remote-enable-system-access, was added to enable sensitive features, such as interacting with Browsing Contexts in the parent process (e.g., Browser UI) or using privileged APIs in content processes. This will be used for WebDriver BiDi features in the next releases, and can already be used with Marionette (see the Marionette section below) (Firefox bug 1944565).

WebDriver BiDi

  • The webExtension.install command now installs web extensions temporarily by default, allowing it to be used with unsigned extensions - either as an XPI file or as an unpacked folder. A new Firefox-specific parameter, moz:permanent, has been added to force installation as a regular extension instead (Firefox bug 1947678).
  • The browsingContext.setViewport command now supports a userContexts parameter, which must be an array of user context (Firefox container) ids. When provided, the viewport configuration will be applied to all Browsing Contexts belonging to those user contexts, as well as any future contexts created within them. This parameter cannot be used together with the existing context parameter (Firefox bug 1940952).
  • The browsingContext.Info type now includes a clientWindow property corresponding to the ID of the window owning the Browsing Context. It is typically returned by browsingContext.getTree or included in the payload of events such as browsingContext.contextCreated (Firefox bug 1920952).

Marionette

  • Switching to the chrome (parent process) context with Marionette now requires using the --remote-enable-system-access command-line flag when starting Firefox (Firefox bug 1710425).

Changes for add-on developers

Experimental web features

These features are newly shipped in Firefox 138 and are considered experimental. They may be disabled by default or enabled by default but available only in the Nightly build. For features disabled by default, 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.

Older versions