Firefox 141 for developers
This article provides information about the changes in Firefox 141 that affect developers. Firefox 141 is the current Beta version of Firefox and ships on July 22, 2025.
Note: The release notes for this Firefox version are still a work in progress. You can view the project tracker for this release here.
Changes for web developers
HTML
- The HTML
webkitdirectory
attribute and the correspondingHTMLInputElement.webkitdirectory
property are now partially supported on Firefox Android (Firefox bug 1887878). The attribute can be set to indicate that an<input type="file">
element should offer selection of directories instead of files. Note that the returned file entries for the selected folder always contain an empty string in (File.webkitRelativePath
), which means that usingwebkitdirectory
is not suitable for use cases where information about the directory structure is needed (Firefox bug 1973726).
CSS
- The CSS
font-variant-emoji
property allows you to set a default presentation style for displaying emojis (Firefox bug 1954214).
HTTP
- The
"cache"
directive of theClear-Site-Data
response header now clears the bfcache (backwards-forwards cache). This allows a site to ensure that if anyone navigates backward after a user has signed out, private details that were visible during the initial session will not be exposed. (Firefox bug 1930501).
APIs
- The
persistentDeviceId
property of thePointerEvent
interface is now supported. This gives each pointing device that interacts with the screen a unique ID that persists for the session. It provides a reliable way to identify multiple pointing devices (such as pens) interacting with the screen simultaneously. (Firefox bug 1968400). - The
scrollMargin
property of theIntersectionObserver
interface is now supported. It adds a margin to all nested scroll containers within the root element of the observer, which allows targets inside those elements to be observed before (or after) they are scrolled into view—instead of only when they first become visible. (Firefox bug 1860030). - The
closedBy
attribute of theHTMLDialogElement
interface and the correspondingclosedby
attribute of the<dialog>
element are supported. Developers can use these to specify which mechanisms can close a dialog, such as user interaction outside the dialog ("light dismiss") or programmatic closing. (Firefox bug 1964078). - The
showPopover()
andtogglePopover()
methods of theHTMLElement
interface now take anoptions.source
argument, andtogglePopover()
also takes theforce
oroptions.force
argument. (Firefox bug 1936411). (Firefox bug 1936411)options.source
establishes a relationship between a popover and its invoker (control element). In the same way as the equivalent declarative attribute,popovertarget
, this makes the popover more accessible to keyboard users (see Popover accessibility features). It also creates an implicit anchor reference between the two, which enables more natural positioning of popovers relative to their controls (see Popover anchor positioning).- The
force
oroptions.force
arguments totogglePopover()
can be used to force the popover open or closed, and is ignored if the popover is already in the forced state. UnlikeshowPopover()
andhidePopover()
, this does not throw an exception if the popover is already in the target state.
WebDriver conformance (WebDriver BiDi, Marionette)
General
- Removed the temporary
remote.system-access-check.enabled
preference. This preference can no longer be used to disable system access checks when using WebDriver in Firefox's chrome scope during testing (Firefox bug 1955007).
WebDriver BiDi
- Added support for the "proxy" argument of the
browser.createUserContext
command. This allows clients to setup either a "direct" or "manual" proxy when creating a user context (ie Firefox Container). Support for additional proxy types will be added later on (Firefox bug 1967653). - Implemented the new
browsingContext.historyUpdated
event which is emitted whenhistory.pushState()
,history.replaceState()
ordocument.open()
is called within the context of a web page (Firefox bug 1906051). - Improved the error message shown when attempting to permanently install an unpacked, unsigned web extension (Firefox bug 1958723).
- Updated the
browsingContext.navigate
andbrowsingContext.reload
commands to wait for thebrowsingContext.navigationCommitted
event when using the "wait" condition "none" (Firefox bug 1967469). - Updated the WebDriver BiDi cookie APIs to support "default" value in "sameSite" property to address recent changes in platform API which wouldn't allow anymore to set a cookie with "sameSite=None" and "secure=false" on HTTP pages (Firefox bug 1971488).
Marionette
- To avoid unnecessary 200ms delays for each call to
WebDriver:ElementClick
- even when no navigation occurs - we lowered the click-and-wait timeout for a potential navigation to 50ms for backward compatibility. The timeout is now also configurable and can be completely disabled by users through a preference (Firefox bug 1972271). - Added support in Marionette for interacting with CHIPS cookies (Cookies Having Independent Partitioned State) (Firefox bug 1972830).
Changes for add-on developers
- Adds the
i18n.getPreferredSystemLanguages
method to retrieve the preferred locales of the operating system. This complementsi18n.getAcceptLanguages
which return details of the locales set in the browser. (Firefox bug 1888486)
Experimental web features
These features are shipping in Firefox 141 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.
-
:active-view-transition
(Nightly):dom.viewTransitions.enabled
The CSS
:active-view-transition
pseudo-class enables you to style content while a view transition is taking place in a single-page app (SPA). (Firefox bug 1956140).