📃 December 2023 release notes
Newly available
The following features are newly available:
-
Canvas reset():
The
reset()
method clears a canvas to its initial state. -
cap unit:
The CSS
cap
unit corresponds to the height of Latin capital letters. -
counter-set:
The
counter-set
CSS property creates (and optionally sets a value for) a counter, the numbers for a series of headings or ordered list items. -
:dir():
The
:dir()
CSS functional pseudo-class matches elements by text direction, either right to left (rtl
) or left to right (ltr
). -
pow(), sqrt(), hypot(), log(), and exp():
The
pow()
,sqrt()
,hypot()
,log()
, andexp()
CSS functions compute various exponential functions. -
:has():
The
:has()
CSS functional pseudo-class matches an element if any of the selectors passed as parameters would match at least one element. -
linear() easing:
The
linear()
easing function for animations and transitions interpolates linearly between the control points, and can be used to approximate complex easing functions, such as a bounce effect. -
Lazy-loading images and iframes:
The
loading="lazy"
attribute for<img>
and<iframe>
elements blocks loading the external resource until the user scrolls to that element's part of the page. -
Masks:
The
mask
CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image. - Nesting: CSS nesting allows for shorter selectors, easier reading, and more modularity by nesting rules inside others.
-
Preloading responsive images:
The
imagesrcset
andimagesizes
attributes with therel="preload"
attribute for the<link>
HTML element starts fetching responsive images before they're found in the body of the document. -
preservesPitch:
The
preservesPitch
property for<audio>
or<video>
adjusts the pitch of audio to sound more natural when the playback rate is faster or slower than the default. -
scripting media query:
The
scripting
CSS media query sets styles based on whether scripting such as JavaScript is available. Values areenabled
if scripting is available,initial-only
if scripting is only available on page load (for example, printed content), ornone
. -
Storage access:
The
document.requestStorageAccess()
method allows content in iframes to request storing and reading cookies and other site data, while thedocument.hasStorageAccess()
method checks if such access is granted. -
URL.canParse():
The
URL.canParse()
static method checks whether a URL can be parsed into a validURL
object. It's an alternative to callingnew URL()
in atry … catch
statement.
New in Chrome
The following features are now available in Chrome:
-
background-clip: text:
The
background-clip: text
CSS declaration draws the background underneath only the text in the element. -
Mutually exclusive <details> elements:
Multiple
<details>
elements which use the samename
attribute are mutually exclusive. When one member of the group is opened, all other members are closed. -
<fencedframe>:
The
<fencedframe>
element embeds another HTML page into the current page in a more secure and privacy-preserving way than<iframe>
elements. -
Virtual sensors:
The
CreateVirtualSensor
WebDriver command creates a virtual sensor for testing applications that use sensor APIs, without the need for real device sensors. - Multi-memory (WebAssembly): A single module in WebAssembly can have multiple memories.
New in Chrome Android
The following features are now available in Chrome Android:
-
background-clip: text:
The
background-clip: text
CSS declaration draws the background underneath only the text in the element. -
Mutually exclusive <details> elements:
Multiple
<details>
elements which use the samename
attribute are mutually exclusive. When one member of the group is opened, all other members are closed. -
<fencedframe>:
The
<fencedframe>
element embeds another HTML page into the current page in a more secure and privacy-preserving way than<iframe>
elements. -
Virtual sensors:
The
CreateVirtualSensor
WebDriver command creates a virtual sensor for testing applications that use sensor APIs, without the need for real device sensors. - Multi-memory (WebAssembly): A single module in WebAssembly can have multiple memories.
New in Edge
The following features are now available in Edge:
-
background-clip: text:
The
background-clip: text
CSS declaration draws the background underneath only the text in the element. -
Mutually exclusive <details> elements:
Multiple
<details>
elements which use the samename
attribute are mutually exclusive. When one member of the group is opened, all other members are closed. -
<fencedframe>:
The
<fencedframe>
element embeds another HTML page into the current page in a more secure and privacy-preserving way than<iframe>
elements. -
Virtual sensors:
The
CreateVirtualSensor
WebDriver command creates a virtual sensor for testing applications that use sensor APIs, without the need for real device sensors. - Multi-memory (WebAssembly): A single module in WebAssembly can have multiple memories.
New in Firefox
The following features are now available in Firefox:
-
Promise.withResolvers():
The
Promise.withResolvers()
static method is an alternative to thePromise()
constructor that returns both the promise and resolution functions. You can use this to accessresolve
andreject
outside the scope of the executor function. -
text-indent: each-line:
The
text-indent: each-line
CSS declaration indents text after forced breaks as well as to the first line of a block. -
text-indent: hanging:
The
text-indent: hanging
CSS declaration indents all lines except the first. -
text-wrap: balance:
The
text-wrap: balance
CSS declaration balances the length of each line when text is broken into multiple lines. Also known as headline balancing. -
text-wrap: stable:
The
text-wrap: stable
CSS declaration wraps text using the default algorithm, but does not change wrapping on earlier lines while the text is being edited. - Tail call optimization (WebAssembly): Tail call optimization discards a caller frame and replaces the call with a jump instruction.
New in Firefox for Android
The following features are now available in Firefox for Android:
-
Promise.withResolvers():
The
Promise.withResolvers()
static method is an alternative to thePromise()
constructor that returns both the promise and resolution functions. You can use this to accessresolve
andreject
outside the scope of the executor function. -
text-indent: each-line:
The
text-indent: each-line
CSS declaration indents text after forced breaks as well as to the first line of a block. -
text-indent: hanging:
The
text-indent: hanging
CSS declaration indents all lines except the first. -
text-wrap: balance:
The
text-wrap: balance
CSS declaration balances the length of each line when text is broken into multiple lines. Also known as headline balancing. -
text-wrap: stable:
The
text-wrap: stable
CSS declaration wraps text using the default algorithm, but does not change wrapping on earlier lines while the text is being edited. - Tail call optimization (WebAssembly): Tail call optimization discards a caller frame and replaces the call with a jump instruction.
New in Safari
The following features are now available in Safari:
-
createImageBitmap:
The
createImageBitmap()
global method creates anImageBitmap
object from a source such as an image, SVG, blob, or canvas. AnImageBitmap
object represents pixel data that can be drawn to a canvas with lower latency than other types, such asImageData
. -
Mutually exclusive <details> elements:
Multiple
<details>
elements which use the samename
attribute are mutually exclusive. When one member of the group is opened, all other members are closed. -
Fetch priority:
The
fetch()
priority
option and thefetchPriority
HTML attribute give hints to the browser about which requests to do before other requests of the same type. - Custom highlights: Custom highlights style arbitrary text ranges, without adding extra elements to the DOM.
-
JSON import attributes:
Module
import … with { type: "json" }
statements load JSON data. Also known as JSON module scripts and formerly known as import assertions. -
mask-border:
The
mask-border
CSS property sets how the edges of an element are masked. It is a shorthand formask-border-outset
,mask-border-repeat
,mask-border-slice
,mask-border-source
, andmask-border-width
. -
Numeric factory functions:
The numeric factory functions, such as
CSS.px()
orCSS.kHz()
, return aCSSUnitValue
representing a CSS number value (as in12px
or440kHz
). -
rcap unit:
The
rcap
CSS length unit is a font-relative length equal to the value of thecap
unit on the root element. Cap-height is approximately equal to the height of a capital Latin letter. -
rch unit:
The
rch
CSS length unit is a font-relative length equal to the value of thech
unit on the root element.ch
length is based on the width of the zero (0) character. -
rex unit:
The
rex
CSS length unit is a font-relative length that is equal to the x-height of the root element. -
ric unit:
The
ric
CSS length unit, or root international character, is a font-relative length equal to the width of CJK character relative to the root element.
New in Safari on iOS
The following features are now available in Safari on iOS:
-
createImageBitmap:
The
createImageBitmap()
global method creates anImageBitmap
object from a source such as an image, SVG, blob, or canvas. AnImageBitmap
object represents pixel data that can be drawn to a canvas with lower latency than other types, such asImageData
. -
Mutually exclusive <details> elements:
Multiple
<details>
elements which use the samename
attribute are mutually exclusive. When one member of the group is opened, all other members are closed. -
Fetch priority:
The
fetch()
priority
option and thefetchPriority
HTML attribute give hints to the browser about which requests to do before other requests of the same type. - Custom highlights: Custom highlights style arbitrary text ranges, without adding extra elements to the DOM.
-
JSON import attributes:
Module
import … with { type: "json" }
statements load JSON data. Also known as JSON module scripts and formerly known as import assertions. -
Numeric factory functions:
The numeric factory functions, such as
CSS.px()
orCSS.kHz()
, return aCSSUnitValue
representing a CSS number value (as in12px
or440kHz
). -
rcap unit:
The
rcap
CSS length unit is a font-relative length equal to the value of thecap
unit on the root element. Cap-height is approximately equal to the height of a capital Latin letter. -
rch unit:
The
rch
CSS length unit is a font-relative length equal to the value of thech
unit on the root element.ch
length is based on the width of the zero (0) character. -
rex unit:
The
rex
CSS length unit is a font-relative length that is equal to the x-height of the root element. -
ric unit:
The
ric
CSS length unit, or root international character, is a font-relative length equal to the width of CJK character relative to the root element.