Firefox 138 for developers

This article provides information about the changes in Firefox 138 that affect developers. Firefox 138 is the current Beta version of Firefox and ships on April 29, 2025.

Changes for web developers

Developer Tools

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).

Removals

CSS

Removals

JavaScript

Removals

SVG

Removals

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)

Removals

Security

Removals

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).

Removals

WebAssembly

Removals

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

Removals

Other

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.

  • UA styles for <h1> nested into sectioning elements: layout.css.h1-in-section-ua-styles.enabled.

    The <h1> heading doesn't decrease in font size now when nested within sectioning elements <article>, <aside>, <nav>, and <section>. The UA styles for <h1> nested within sectioning elements are no longer relevant since the outline algorithm has been removed from the HTML specification. (Firefox bug 1883896).

    As part of a staged rollout of this removal 5% of users of Firefox 138 and 50% of users of Firefox Beta 138 will have the value of layout.css.h1-in-section-ua-styles.enabled set to false (Intent to unship: UA styles for h1 in article, aside, nav, section).

    Note: The preference for this feature works in reverse: it's set to false in the Nightly build, which removes the UA styling for headings nested in sectioning elements. It's set to true in all other channels, which retains the existing UA styling for the nested headings.

  • ::details-content CSS pseudo-element: layout.css.details-content.enabled.

    The CSS ::details-content pseudo-element enables you to style the content of the <details> element (Firefox bug 1901037).

  • MutationEvent on path to removal: dom.mutation_events.enabled

    MutationEvent and its associated events (DOMSubtreeModified, DOMNodeInserted, DOMNodeRemoved, DOMCharacterDataModified,DOMAttrModified) are now disabled on Firefox Nightly by default. (Firefox bug 1951772).

  • Notification.actions (Nightly): dom.webnotifications.actions.enabled

    The Notification.actions property can get the actions associated with a Notification, as set using ServiceWorkerRegistration.showNotification(). (Firefox bug 1225110).

  • PerformanceEventTiming.interactionId: dom.performance.event_timing.enable_interactionid

    PerformanceEventTiming.interactionId can be used to measure latency timing for events triggered by a particular user interaction. (Firefox bug 1934683).

  • Import attribute for JSON modules (Nightly): javascript.options.experimental.import_attributes

    The import declaration now supports importing JSON modules using the with attribute.

Older versions