Firefox 122 release notes for developers
This article provides information about the changes in Firefox 122 that affect developers. Firefox 122 was released on January 23, 2024.
Changes for web developers
>HTML
<hr>elements are now allowed as children of<select>elements. This is a new feature that improves the readability of select lists with many options. (Firefox bug 1830909).- The
typeHTML attribute no longer has an effect if set tonone,disc,circleorsquarein<ol>and no longer has an effect if set to1,a,A,iorIin<ul>. Astypeis a deprecated attribute for<ul>and<ol>lists, these should be styled withlist-style-typeCSS property instead. (Firefox bug 1868087).
CSS
-
The CSS
offset-positionproperty is now available by default. It defines the initial position of an element on a path. (Firefox bug 1598152) -
The various methods for defining a CSS
offset-path— including<basic-shape>,<coord-box>, andurl()— are now enabled by default. (Firefox bug 1598159) -
The CSS
ray()function is now available by default. You can use this function to define anoffset-pathas a line segment that begins from anoffset-positionand extends in the direction of the specified angle. (Firefox bug 1598151) -
The
clip-pathandoffset-pathproperties now acceptrect()andxywh()shape functions. These<basic-shape>values allow the clipping and offsetting of elements with a rectangle defined by distance from the edge of the element (rect()) or coordinates and size (xywh()). (Firefox bug 1868722).
JavaScript
-
The
ArrayBuffer.prototype.transfer()andArrayBuffer.prototype.transferToFixedLength()methods can now be used to transfer ownership of memory from oneArrayBufferto another. After transfer, the original buffer is detached from its original memory and hence unusable; the state can be checked usingArrayBuffer.prototype.detached. (See Firefox bug 1865103 for more details.) -
For parity with other browsers,
Date.parse()and theDate()constructor only consider the first three letters of the specified month when non-standard date strings are parsed. Previously only truncated values of the full month name with three or more characters were accepted (See Firefox bug 1862910 for more details.)
SVG
Removals
- Removed support for
data:URLs in SVG<use>elements and via theSVGUseElementinterface to prevent XSS attacks. The legacy functionality may be re-enabled by setting thesvg.use-element.data-url-href.allowedpreference totrue, although this is not recommended for security reasons (Firefox bug 1806964).
APIs
- The LargestContentfulPaint API is now supported. This API is part of the Performance APIs and provides timing information about the largest image or text paint before users interact with a web page (Firefox bug 1866266).
DOM
- The
HTMLSelectElement.showPicker()method is now supported, allowing the browser picker for a<select>element to be programmatically launched when triggered by user interaction (Firefox bug 1865207).
Removals
- Removed support for the CSS
-moz-user-focusproperty (Firefox bug 1871745 and Firefox bug 1868552).
WebDriver conformance (WebDriver BiDi, Marionette)
General
- Fixed a bug that prevented Perform Actions to correctly synthesize double and other multi-click events for the
mouseinput source (Firefox bug 1864614). Additionally, these events will only be emitted when the actual mouse position has not changed since the last click action (Firefox bug 1681076). - The definitions for the
PauseandEqual(Numpad block) keys have been updated to align with the WebDriver specification (Firefox bug 1863687).
WebDriver BiDi
- The serialization of
WindowProxyremote objects now also works correctly for out-of-process iframes (Firefox bug 1867667). - The browsingContext.setViewport command now distinguishes between
undefinedandnullas values for theviewportargument. If set toundefined, it signifies that the viewport should remain unchanged, while usingnullwill reset it to its original dimensions (Firefox bug 1865618). - Support for the browsingContext.traverseHistory command has been introduced, enabling navigations backward and forward in the browser history (Firefox bug 1841018).
- Fixed a bug in all supported network events where the
contextid consistently reported the top-level browsing context, even when the navigation occurred within an iframe (Firefox bug 1869735).
Marionette
- Fixed a bug with Get Element Text, where the command was incorrectly returning an empty text when the element was located within a ShadowRoot's slot (Firefox bug 1824664).
Experimental web features
These features are newly shipped in Firefox 122 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.
-
Declarative shadow DOM:
dom.webcomponents.shadowdom.declarative.enabled.The
<template>element now supports ashadowrootmodeattribute which can be set to eitheropenorclosed, the same values as themodeoption of theattachShadow()method. It allows the creation of a shadow DOM subtree declaratively. (Firefox bug 1712140) -
Clonable option and property for shadow DOM.
- The
Element.attachShadow()method now supports theclonableboolean option that specifies whether the created shadow root is clonable: the default value isfalsebut when set totrue, the shadow host cloned withNode.cloneNode()orDocument.importNode()will include shadow root in the copy. - The
ShadowRootinterface now supports theclonableread-only property. It returnstrueif the shadow root is clonable, andfalseotherwise. It always returnstruefor shadow roots created via declarative shadow DOM.
When shadow root is created via declarative shadow DOM, the
clonableoption is set totrueby default, and theclonableproperty returnstrue. (Firefox bug 1868428) - The
-
Popover API:
dom.element.popover.enabled.Displaying popovers on top of page content is now supported via HTML attributes or JavaScript API, including styling with the CSS
:popover-openpseudo-class and extended support for the::backdroppseudo-element. See the Popover API reference for more details. (Firefox bug 1823757) -
Clipboard read and write:
dom.events.asyncClipboard.clipboardItem,dom.events.asyncClipboard.readTextanddom.events.asyncClipboard.writeText.The async Clipboard API is now fully supported, including
read(),readText(), andwrite()methods and theClipboardIteminterface. A paste context menu will appear for the user to confirm when reading clipboard data not provided by the same-origin page. (Firefox bug 1809106) -
Intl.Segmenter: enabled by default only in Firefox Nightly.The
Intl.Segmenterobject allows accurate locale-sensitive text segmentation of a string. For example, to split a text into words in a language that doesn't use spaces to separate them:Intl.Segmenter("ja-JP", { granularity: "word" }). (Firefox bug 1423593)