files/en-us/mozilla/firefox/releases/122/index.md
This article provides information about the changes in Firefox 122 that affect developers. Firefox 122 was released on January 23, 2024.
type HTML attribute no longer has an effect if set to none, disc, circle or square in {{HTMLElement("ol")}} and no longer has an effect if set to 1, a, A, i or I in {{HTMLElement("ul")}}. As type is a deprecated attribute for <ul> and <ol> lists, these should be styled with {{CSSxref("list-style-type")}} CSS property instead. (Firefox bug 1868087).The CSS {{cssxref("offset-position")}} property 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 {{cssxref("offset-path")}} — including <basic-shape>, <coord-box>, and url() — are now enabled by default. (Firefox bug 1598159)
The CSS {{cssxref("ray")}} function is now available by default. You can use this function to define an {{cssxref("offset-path")}} as a line segment that begins from an {{cssxref("offset-position")}} and extends in the direction of the specified angle. (Firefox bug 1598151)
The {{CSSxref("clip-path")}} and {{CSSxref("offset-path")}} properties now accept rect() and xywh() shape functions. These {{CSSXref("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).
The {{jsxref("ArrayBuffer.prototype.transfer()")}} and {{jsxref("ArrayBuffer.prototype.transferToFixedLength()")}} methods can now be used to transfer ownership of memory from one {{jsxref("ArrayBuffer")}} to another. After transfer, the original buffer is detached from its original memory and hence unusable; the state can be checked using {{jsxref("ArrayBuffer.prototype.detached")}}. (See Firefox bug 1865103 for more details.)
For parity with other browsers, Date.parse() and the Date() 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.)
data: URLs in SVG <use> elements and via the SVGUseElement interface to prevent XSS attacks.
The legacy functionality may be re-enabled by setting the svg.use-element.data-url-href.allowed preference to true, although this is not recommended for security reasons (Firefox bug 1806964).-moz-user-focus property (Firefox bug 1871745 and Firefox bug 1868552).mouse input 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).Pause and Equal (Numpad block) keys have been updated to align with the WebDriver specification (Firefox bug 1863687).WindowProxy remote objects now also works correctly for out-of-process iframes (Firefox bug 1867667).undefined and null as values for the viewport argument. If set to undefined, it signifies that the viewport should remain unchanged, while using null will reset it to its original dimensions (Firefox bug 1865618).context id consistently reported the top-level browsing context, even when the navigation occurred within an iframe (Firefox bug 1869735).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 {{htmlelement("template")}} element now supports a shadowrootmode attribute which can be set to either open or closed, the same values as the mode option of the {{domxref("Element.attachShadow()", "attachShadow()")}} method. It allows the creation of a shadow DOM subtree declaratively. (Firefox bug 1712140)
Clonable option and property for shadow DOM.
clonable boolean option that specifies whether the created shadow root is clonable: the default value is false but when set to true, the shadow host cloned with {{domxref("Node.cloneNode()")}} or {{domxref("Document.importNode()")}} will include shadow root in the copy.true if the shadow root is clonable, and false otherwise. It always returns true for shadow roots created via declarative shadow DOM.When shadow root is created via declarative shadow DOM, the clonable option is set to true by default, and the clonable property returns true. (Firefox bug 1868428)
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-open pseudo-class and extended support for the ::backdrop pseudo-element. See the Popover API reference for more details. (Firefox bug 1823757)
Clipboard read and write: dom.events.asyncClipboard.clipboardItem, dom.events.asyncClipboard.readText and dom.events.asyncClipboard.writeText.
The async Clipboard API is now fully supported, including read(), readText(), and write() methods and the {{domxref('ClipboardItem')}} interface. 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 {{jsxref("Intl.Segmenter")}} object 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)