Firefox 136 for developers
{{FirefoxSidebar}}
This article provides information about the changes in Firefox 136 that affect developers. Firefox 136 was released on March 4, 2025.
Changes for web developers
HTML
- The
autocorrect
global attribute allows autocorrection in editable text elements including: most kinds of text{{htmlelement("input")}}
elements,{{htmlelement("textarea")}}
elements, and elements that have thecontenteditable
attribute set. The specific autocorrection behavior depends on the user agent and underlying OS. (Firefox bug 1927977). - The
plaintext-only
value of thecontenteditable
global attribute indicates that the element is editable; rich text formatting is disabled and any formatting in pasted text is automatically stripped (Firefox bug 1922724).
CSS
- The
{{CSSXRef(":has-slotted")}}
pseudo-class is used to style elements in{{HTMLElement("template")}}
that have content added to a{{HTMLElement("slot")}}
element when rendering a web component (Firefox bug 1940691). - The
:open
pseudo-class is now supported and allows you to select any element that is currently in an open state, this applies to the{{htmlelement("details")}}
,{{htmlelement("dialog")}}
,{{htmlelement("input")}}
elements with a picker and{{htmlelement("select")}}
elements which present a drop-down box. (Firefox bug 1936113). - The
{{cssxref("gradient")}}
CSS functions{{cssxref("linear-gradient")}}
,{{cssxref("conic-gradient")}}
, and{{cssxref("radial-gradient")}}
now allow a single color stop and 0-1 positions. This produces a single solid color and is used in setting the{{cssxref("mask")}}
CSS property. (Firefox bug 1900530).
JavaScript
{{jsxref("Intl.DurationFormat")}}
is now supported, enabling locale-sensitive formatting of durations. (Firefox bug 1933303).
HTTP
- The
{{httpheader("Referer")}}
HTTP header is now sent in requests following a page refresh that redirects to a new page (if permitted by the{{httpheader("Referrer-Policy")}}
), and{{domxref("document.referrer")}}
will be set to the referrer URL after navigating. The page refresh may be triggered by the{{httpheader("Refresh")}}
response header, or equivalent{{htmlelement("meta")}}
in markup (for example<meta http-equiv="refresh" content="3;url=https://www.mozilla.org" />
). Note that same-page refreshes are treated as same-page navigation to a page fragment: since the page isn’t re-requested,{{httpheader("Referer")}}
isn’t sent. (Firefox bug 1928291)
APIs
-
The maximum size of Data URLs has been increased from 32MB to 512MB, matching the limit for Chromium browsers (Firefox bug 1911300).
-
Element properties are now reflected for the Aria attributes that contain element references (Firefox bug 1919102).
This includes:
{{domxref("Element/ariaActiveDescendantElement","ariaActiveDescendantElement")}}
,{{domxref("Element/ariaControlsElements","ariaControlsElements")}}
,{{domxref("Element/ariaDescribedByElements","ariaDescribedByElements")}}
,{{domxref("Element/ariaDetailsElements","ariaDetailsElements")}}
,{{domxref("Element/ariaErrorMessageElements","ariaErrorMessageElements")}}
,{{domxref("Element/ariaFlowToElements","ariaFlowToElements")}}
,{{domxref("Element/ariaLabelledByElements", "ariaLabelledByElements")}}
,{{domxref("Element/ariaOwnsElements","ariaOwnsElements")}}
in the{{domxref("Element")}}
interface{{domxref("ElementInternals/ariaActiveDescendantElement","ariaActiveDescendantElement")}}
,{{domxref("ElementInternals/ariaControlsElements","ariaControlsElements")}}
,{{domxref("ElementInternals/ariaDescribedByElements","ariaDescribedByElements")}}
,{{domxref("ElementInternals/ariaDetailsElements","ariaDetailsElements")}}
,{{domxref("ElementInternals/ariaErrorMessageElements","ariaErrorMessageElements")}}
,{{domxref("ElementInternals/ariaFlowToElements","ariaFlowToElements")}}
,{{domxref("ElementInternals/ariaLabelledByElements", "ariaLabelledByElements")}}
,{{domxref("ElementInternals/ariaOwnsElements","ariaOwnsElements")}}
in the{{domxref("ElementInternals")}}
interface.
Media, WebRTC, and Web Audio
- WebRTC can now send and receive video encoded using the AV1 codec. When sending, it can be used for both sending multiple simultaneous versions of the same source (“simulcast”) and singlecast. (Firefox bug 1944878 and Firefox bug 1932065).
- WebRTC simulcast of screen-shared video with the H264 codec is also supported (AV1, H264, and VP8 can now be used for simulcast). Note that the H264 codec is hardware-enabled on Android. (Firefox bug 1210175).
- WebRTC support for the Dependency Descriptor (DD) RTP Header Extension, and its use with AV1, VP8, and VP9 codecs. The DD header extension enables codec-independent forwarding of simulcast streams, including in scenarios where the payload is end-to-end encrypted (E2EE). (Firefox bug 1945261).
WebDriver conformance (WebDriver BiDi, Marionette)
General
-
Firefox now handles WebSocket port conflicts for the RemoteAgent more efficiently. If the port specified via the
--remote-debugging-port
command line argument cannot be acquired within 5 seconds, such as when another Firefox process is already using it, Firefox will now shut down instead of hanging (Firefox bug 1927721). -
Navigations using the HTTP schema, triggered by the
WebDriver:Navigate
command in Marionette orbrowsingContext.navigate
in WebDriver BiDi, will no longer be automatically upgraded to HTTPS. These requests will now remain on HTTP as intended (Firefox bug 1943551).
WebDriver BiDi
-
The
session.subscribe
command now returns a subscription ID, which can be used withsession.unsubscribe
to precisely target the same previously subscribed events and contexts as the original subscription. This helps prevent unintended side effects when multiple subscriptions exist, such as those limited to a specific tab (Firefox bug 1938576).Note: The previous logic for removing events by name and context has been deprecated and will be removed in a future release.
-
Added support for the
userContexts
field in thescript.addPreloadScript
command, allowing clients to specify in which user contexts (containers) the script should always be loaded automatically, including any new browsing contexts opened within such specified user contexts (Firefox bug 1940927). -
The
browsingContext.contextDestroyed
event now returns a fully serialized browsing context tree when a context is closed, including all its child contexts (Firefox bug 1860955).
Changes for add-on developers
- Adds the
preferred_environment
property to thebackground
manifest key, enabling extensions to request that the browser run their background scripts as a document or service worker (Firefox bug 1798655). {{WebExtAPIRef("menus.update")}}
and{{WebExtAPIRef("menus.remove")}}
and the aliases{{WebExtAPIRef("contextMenus.update")}}
and{{WebExtAPIRef("contextMenus.remove")}}
now reject with an error when the menu item doesn’t exist. Previously, the error was ignored and the promise fulfilled. (Firefox bug 1688743).- A new version of the
{{WebExtAPIRef("userScripts")}}
API is available on desktop Firefox. This version of the API is for use in Manifest V3 extensions and provides broad compatibility with Chrome, although permissions mechanisms differ across the browsers. (Firefox bug 1943050). - The
canResume
property of{{WebExtAPIRef("downloads.DownloadItem")}}
is now set totrue
when a download fails withNETWORK_FAILED
. This enables downloads that fail due to a network error to be resumed using{{WebExtAPIRef("downloads.resume","downloads.resume()")}}
. (Firefox bug 1694049).
Experimental web features
These features are newly shipped in Firefox 136 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.
- CSS
hyphenate-limit-chars
property:layout.css.hyphenate-limit-chars.enabled
. The{{CSSXRef("hyphenate-limit-chars")}}
CSS property is used to specifically the minimum word length for hyphenation as well as the number of characters before and after the hyphen. (Firefox bug 1521723). - Error.captureStackTrace():
javascript.options.experimental.error_capture_stack_trace
. The{{jsxref("Error.captureStackTrace()")}}
static method installs stack trace information on a provided object as the{{jsxref("Error.stack")}}
property. Its main use case is to install a stack trace on a custom error object that does not derive from the{{jsxref("Error")}}
interface. (Firefox bug 1886820). - Clear-Site-Data: cache:
privacy.clearSiteDataHeader.cache.enabled
. TheClear-Site-Data
header can be used with thecache
or*
directives to clear the browser cache. (Firefox bug 1942272). - SVG
<discard>
element for SVG animations:svg.discard.enabled
. The{{svgelement("discard")}}
SVG element allows developers to specify a trigger, such as the elapsed time since the SVG was loaded into DOM or the end of a particular animation, at which a specified element and its children should be removed from the DOM. This allows an SVG viewer to conserve memory by discarding animated elements that no longer needed. (Firefox bug 1069931). - SVG path API methods:
dom.svg.pathSegment.enabled
. The{{domxref("SVGPathElement/getPathData", "getPathData()")}}
,{{domxref("SVGPathElement/setPathData", "setPathData()")}}
, and{{domxref("SVGPathElement/getPathSegmentAtLength", "getPathSegmentAtLength()")}}
methods of the{{domxref("SVGPathElement")}}
interface are now supported. These methods provide a convenient way to work with SVG path data instead of parsing raw string data. (Firefox bug 1934525).
Older versions
{{Firefox_for_developers}}