📃 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
capCSS length unit corresponds to the height of Latin capital letters. -
counter-set:
The
counter-setCSS property creates (and optionally sets a value for) a counter, the numbers for a series of headings or ordered list items. -
createImageBitmap:
The
createImageBitmap()global method creates anImageBitmapobject from a source such as an image, SVG, blob, or canvas. AnImageBitmapobject represents pixel data that can be drawn to a canvas with lower latency than other types, such asImageData. -
: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
maskCSS 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
imagesrcsetandimagesizesattributes 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
preservesPitchproperty 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
scriptingCSS media query sets styles based on whether scripting such as JavaScript is available. Values areenabledif scripting is available,initial-onlyif 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 validURLobject. It's an alternative to callingnew URL()in atry … catchstatement.
New in Chrome
The following features are now available in Chrome:
-
background-clip: text:
The
background-clip: textCSS declaration draws the background underneath only the text in the element. -
Mutually exclusive <details> elements:
Multiple
<details>elements which use the samenameattribute are mutually exclusive. When one member of the group is opened, all other members are closed. -
Virtual sensors:
The
CreateVirtualSensorWebDriver 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: textCSS declaration draws the background underneath only the text in the element. -
Mutually exclusive <details> elements:
Multiple
<details>elements which use the samenameattribute are mutually exclusive. When one member of the group is opened, all other members are closed. -
Virtual sensors:
The
CreateVirtualSensorWebDriver 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: textCSS declaration draws the background underneath only the text in the element. -
Mutually exclusive <details> elements:
Multiple
<details>elements which use the samenameattribute are mutually exclusive. When one member of the group is opened, all other members are closed. -
Virtual sensors:
The
CreateVirtualSensorWebDriver 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 accessresolveandrejectoutside the scope of the executor function. -
text-indent: each-line:
The
text-indent: each-lineCSS declaration indents text after forced breaks as well as to the first line of a block. -
text-indent: hanging:
The
text-indent: hangingCSS declaration indents all lines except the first. -
text-wrap: balance:
The
text-wrap: balanceCSS 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: stableCSS 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 accessresolveandrejectoutside the scope of the executor function. -
text-indent: each-line:
The
text-indent: each-lineCSS declaration indents text after forced breaks as well as to the first line of a block. -
text-indent: hanging:
The
text-indent: hangingCSS declaration indents all lines except the first. -
text-wrap: balance:
The
text-wrap: balanceCSS 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: stableCSS 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:
-
Mutually exclusive <details> elements:
Multiple
<details>elements which use the samenameattribute are mutually exclusive. When one member of the group is opened, all other members are closed. -
Fetch priority:
The
fetch()priorityoption and thefetchpriorityHTML 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. -
mask-border:
The
mask-borderCSS 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. -
rcap unit:
The
rcapCSS length unit is a font-relative length equal to the value of thecapunit on the root element. Cap-height is approximately equal to the height of a capital Latin letter. -
rch unit:
The
rchCSS length unit is a font-relative length equal to the value of thechunit on the root element.chlength is based on the width of the zero (0) character. -
rect() and xywh():
The
rect()CSS function creates a rectangle shape with insets from the edges of an element. Thexywh()CSS function creates a rectangle shifted by anxandydistance. They can be used withclip-pathandshape-outside. -
rex unit:
The
rexCSS length unit is a font-relative length that is equal to the x-height of the root element. -
ric unit:
The
ricCSS length unit, or root international character, is a font-relative length equal to the width of CJK character relative to the root element. -
round(), mod(), and rem():
The
round(),mod(), andrem()CSS functions compute rounded values and the remainder after division.
New in Safari on iOS
The following features are now available in Safari on iOS:
-
Mutually exclusive <details> elements:
Multiple
<details>elements which use the samenameattribute are mutually exclusive. When one member of the group is opened, all other members are closed. -
Fetch priority:
The
fetch()priorityoption and thefetchpriorityHTML 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. -
mask-border:
The
mask-borderCSS 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. -
rcap unit:
The
rcapCSS length unit is a font-relative length equal to the value of thecapunit on the root element. Cap-height is approximately equal to the height of a capital Latin letter. -
rch unit:
The
rchCSS length unit is a font-relative length equal to the value of thechunit on the root element.chlength is based on the width of the zero (0) character. -
rect() and xywh():
The
rect()CSS function creates a rectangle shape with insets from the edges of an element. Thexywh()CSS function creates a rectangle shifted by anxandydistance. They can be used withclip-pathandshape-outside. -
rex unit:
The
rexCSS length unit is a font-relative length that is equal to the x-height of the root element. -
ric unit:
The
ricCSS length unit, or root international character, is a font-relative length equal to the width of CJK character relative to the root element. -
round(), mod(), and rem():
The
round(),mod(), andrem()CSS functions compute rounded values and the remainder after division.