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 tonone
,disc
,circle
orsquare
in<ol>
and no longer has an effect if set to1
,a
,A
,i
orI
in<ul>
. Astype
is a deprecated attribute for<ul>
and<ol>
lists, these should be styled withlist-style-type
CSS property instead. (Firefox bug 1868087).
CSS
-
The CSS
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
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-path
as a line segment that begins from anoffset-position
and extends in the direction of the specified angle. (Firefox bug 1598151) -
The
clip-path
andoffset-path
properties 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 oneArrayBuffer
to 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 theSVGUseElement
interface to prevent XSS attacks. The legacy functionality may be re-enabled by setting thesvg.use-element.data-url-href.allowed
preference 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-focus
property (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
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
andEqual
(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
andnull
as values for theviewport
argument. If set toundefined
, it signifies that the viewport should remain unchanged, while usingnull
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
- 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 ashadowrootmode
attribute which can be set to eitheropen
orclosed
, the same values as themode
option 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 theclonable
boolean option that specifies whether the created shadow root is clonable: the default value isfalse
but when set totrue
, the shadow host cloned withNode.cloneNode()
orDocument.importNode()
will include shadow root in the copy. - The
ShadowRoot
interface now supports theclonable
read-only property. It returnstrue
if the shadow root is clonable, andfalse
otherwise. It always returnstrue
for shadow roots created via declarative shadow DOM.
When shadow root is created via declarative shadow DOM, the
clonable
option is set totrue
by default, and theclonable
property returnstrue
. (Firefox bug 1712140) - 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-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
anddom.events.asyncClipboard.writeText
.The async Clipboard API is now fully supported, including
read()
,readText()
, andwrite()
methods and theClipboardItem
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
- 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
- Firefox 104 for developers
- Firefox 103 for developers
- Firefox 102 for developers
- Firefox 101 for developers
- Firefox 100 for developers
- Firefox 99 for developers
- Firefox 98 for developers
- Firefox 97 for developers
- Firefox 96 for developers
- Firefox 95 for developers
- Firefox 94 for developers
- Firefox 93 for developers
- Firefox 92 for developers
- Firefox 91 for developers