📃 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.
- 
                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.
- 
                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.