Firefox 136 for developers
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<input>
elements,<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
:has-slotted
pseudo-class is used to style elements in<template>
that have content added to a<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<details>
,<dialog>
,<input>
elements with a picker and<select>
elements which present a drop-down box. (Firefox bug 1936113). - The
<gradient>
CSS functionslinear-gradient()
,conic-gradient()
, andradial-gradient()
now allow a single color stop and 0-1 positions. This produces a single solid color and is used in setting themask
CSS property. (Firefox bug 1900530).
JavaScript
Intl.DurationFormat
is now supported, enabling locale-sensitive formatting of durations. (Firefox bug 1933303).
HTTP
- The
Referer
HTTP header is now sent in requests following a page refresh that redirects to a new page (if permitted by theReferrer-Policy
), anddocument.referrer
will be set to the referrer URL after navigating. The page refresh may be triggered by theRefresh
response header, or equivalent<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,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).
-
The Cookie Store API is a modern, asynchronous
Promise
-based method of managing cookies, which can be used in both the main thread and in service workers. A subset of the Cookie Store API has been implemented (Firefox bug 1937477). This includes:- The
CookieStore
interface, for getting, setting, and deleting cookies. - The
Window.cookieStore
andServiceWorkerGlobalScope.cookieStore
properties for gettingCookieStore
instances. - The
change
event (and its interfaceCookieChangeEvent
), which fires in main thread and service worker contexts when cookies are set or deleted.
Note that while any of the supported cookie properties can be set, the cookie objects returned by the
get()
andgetAll()
methods, and in thechange
event, omit all properties other thanname
andvalue
(matching the information returned by thedocument.cookie
). The following interfaces and properties are not implemented:ServiceWorkerRegistration.cookies
,CookieStoreManager
, andExtendableCookieChangeEvent
. - The
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). menus.update
andmenus.remove
and the aliasescontextMenus.update
andcontextMenus.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
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).
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
. Thehyphenate-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
. TheError.captureStackTrace()
static method installs stack trace information on a provided object as theError.stack
property. Its main use case is to install a stack trace on a custom error object that does not derive from theError
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<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
. TheSVGPathSegment
interface now supports thegetPathData()
,setPathData()
, andgetPathSegmentAtLength()
methods. These methods provide a convenient way to work with SVG path data instead of parsing raw string data. (Firefox bug 1934525).
Older versions
- Firefox 135 for developers
- Firefox 134 for developers
- Firefox 133 for developers
- Firefox 132 for developers
- Firefox 131 for developers
- Firefox 130 for developers
- Firefox 129 for developers
- Firefox 128 for developers
- Firefox 127 for developers
- Firefox 126 for developers
- Firefox 125 for developers
- Firefox 124 for developers
- Firefox 123 for developers
- Firefox 122 for developers
- Firefox 121 for developers
- Firefox 120 for developers
- Firefox 119 for developers
- Firefox 118 for developers
- Firefox 117 for developers
- Firefox 116 for developers
- Firefox 115 for developers
- Firefox 114 for developers
- Firefox 113 for developers
- Firefox 112 for developers
- Firefox 111 for developers
- Firefox 110 for developers
- Firefox 109 for developers
- Firefox 108 for developers
- Firefox 107 for developers
- Firefox 106 for developers
- Firefox 105 for developers