Firefox 122 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 type HTML attribute no longer has an effect if set to none, disc, circle or square in <ol> and no longer has an effect if set to 1, a, A, i or I in <ul>. As type is a deprecated attribute for <ul> and <ol> lists, these should be styled with list-style-type CSS property instead. (Firefox bug 1868087).

CSS

JavaScript

SVG

Removals

  • Removed support for 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).

APIs

DOM

Removals

WebDriver conformance (WebDriver BiDi, Marionette)

General

  • Fixed a bug that prevented Perform Actions to correctly synthesize double and other multi-click events for the 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).
  • The definitions for the Pause and Equal (Numpad block) keys have been updated to align with the WebDriver specification (Firefox bug 1863687).

WebDriver BiDi

  • The serialization of WindowProxy remote objects now also works correctly for out-of-process iframes (Firefox bug 1867667).
  • The browsingContext.setViewport command now distinguishes between 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).
  • 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 context id consistently reported the top-level browsing context, even when the navigation occurred within an iframe (Firefox bug 1869735).

Marionette

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 a shadowrootmode attribute which can be set to either open or closed, the same values as the mode option of the attachShadow() 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 the 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 Node.cloneNode() or Document.importNode() will include shadow root in the copy.
    • The ShadowRoot interface now supports the clonable read-only property. It returns 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 1712140)
  • 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 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 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)

Older versions