Unless otherwise noted, the following changes apply to the newest Chrome beta channel release for Android, ChromeOS, Linux, macOS, and Windows. Learn more about the features listed here through the provided links, or from the list on ChromeStatus.com. Chrome 121 is beta as of December 6, 2023. You can download the latest on Google.com for desktop, or on the Google Play Store for Android.
This release adds six new CSS features.
CSS Highlight Inheritance
With CSS Highlight Inheritance, the CSS Highlight pseudo classes, such as
::highlight, inherit their properties through the pseudo highlight chain, rather than the element chain. The result is a more intuitive model for inheritance of properties in highlights.
This implements the requirement from the CSS Pseudos Level 4 specification:
"When any supported property is not given a value by the cascade ... its specified value is determined by inheritance from the corresponding highlight pseudo-element of its originating element's parent element."
The CSS Scrollbars specification allows developers to style scrollbars by specifying their colors and thickness. This spec adds the following two properties. The
scrollbar-color property provides the capability of changing the color scheme of scrollbars so they fit better into the particular style of a web page. The
scrollbar-width property allows the use of narrower scrollbars that may be more suitable for some use cases, or even to hide the scrollbars completely without affecting scrollability.
font-palette animation for color fonts
font-palette property allows selection of a specific palette used to render a color font. With the newly added support for animating this property, transitioning between palettes is no longer a discrete step, but becomes a smooth transition between two selected palettes. This works everywhere in CSS animations and transitions.
CSS spelling and grammar features
CSS highlight pseudo-elements for styling text that the user agent has flagged as misspelled or grammatically incorrect, and line decorations exposing the user agent’s default decorations for spelling and grammar errors. These features allow developers to choose more legible colors for the default spelling and grammar errors, highlight misspelled words with background colors or other decorations, and implement custom spell checking that blends into the device experience.
Improved CSS masking for SVG
This is a follow-on to the improved CSS mask support in Chrome 120, adding new mask support to SVG (multiple masks, as well as
mask-repeat). In addition, remote SVG masks (for example,
mask: url(masks.svg#star)) are now supported.
Ruby-specific display values
New CSS display property values,
ruby-text, are added. The default display values of
<rt> are changed to
ruby-text respectively, and ruby layout respects these display values. Web authors can use any elements such as
<div> to render ruby by setting the new display values.
Attribution Reporting Feature Bundle: Reduced Aggregate Delays, Event-Level Report Epsilon Field, Reserved Keys
Chrome includes changes to the Attribution Reporting API focused on:
- Reducing transmission loss by supporting reduced aggregate report delays.
- Additional API configurability by supporting an event-level reporting epsilon field.
- Improved extensibility of the API by failing registrations when encountering reserved keys.
Back/forward cache notRestoredReason API
The notRestoredReason API will report the list of reasons why a page is not served from bfcache using the PerformanceNavigationTiming API.
Require user gesture for resize APIs in Document picture-in-picture
This enables the
resizeTo() methods on document picture-in-picture windows, but with the added restriction of a user gesture requirement to mitigate the abuse potential.
The EditContext API simplifies the process of integrating a web app with advanced text input methods such as VK shape-writing, handwriting panels, speech recognition, and IME Compositions. It improves accessibility and performance, and unlocks new capabilities for web-based editors.
Feature detection for supported clipboard formats
You can now check if the Async Clipboard API supports a certain MIME type by calling the new
supports() function, passing the MIME type as an argument, like for example,
showPicker() method of HTMLSelectElement gives developers a way to programmatically open the option picker of a
<select> element, following the pattern of
MediaCapabilities: Query HDR support with
Extends the Media Capabilities API to allow detection of HDR rendering support via three new VideoConfiguration dictionary fields: hdrMetadataType, colorGamut, transferFunction.
Chromium implements its own tone-mapping algorithms so will always return true for HDR10 (smpteSt2086) static metadata. smpteSt2094-40 (HDR10+) and smpteSt2094-10 dynamic metadata are not currently supported, so will return false.
Private Aggregation API: aggregation coordinator selection
This modification to the Private Aggregation API provides a mechanism for selecting which coordinator to use for payload encryption (from a vendor-specified allowlist). The choice of service is made with an additional option in the Shared Storage
selectURL() calls, and in Protected Audience's
joinAdInterestGroup() calls. The broad approach largely aligns with that of the Attribution Reporting API.
Remote Playback API on desktop
This API extends the
HTMLMediaElement that enables controlling remote playback of media from a web page. This shipped on Android in Chrome 56, and is available on Desktop from Chrome 121.
Speculation Rules API
There are new features for the Speculation Rules API.
Support of document rules: This is an extension to the speculation rules syntax that lets the browser obtain the list of URLs for speculative loading from
<a> elements in a page. They may include criteria for which of these links can be used. This, coupled with a new "eagerness" field for speculation rules allows developers to automatically prefetch or prerender links on pages immediately, on hover or on mouse down.
A separate change allows specifying speculation rules using the
Speculation-Rules HTTP response header as an alternative to using inline
<script> elements. The value of this header must be a URL pointing to a text resource with
"application/speculationrules+json" MIME type. The resource's rules will be added to the document's rule set.
No-Vary-Search hint enables speculative prefetches to match even if URL query parameters change. The
No-Vary-Search HTTP response header declares that some or all parts of a URL's query can be ignored for matching purposes. It can declare that the order of query parameter keys shouldn't prevent matches, that specific query parameters shouldn't prevent matches, or that only certain known query parameters should cause mismatches.
SpeechSynthesis and SpeechSynthesisVoice interface objects
Adds the interface objects for
SpeechSynthesisVoice, to the already supported features. This makes feature detection using SpeechSynthesisVoice.prototype possible.
Storage Buckets API
Storage Buckets gives sites the ability to organize on-device data into separate "buckets", allowing user agents to evict the grouped data independently of that which is in other buckets, and enabling sites to ergonomically manage semantically related data. Each storage bucket can contain data associated with established storage APIs such as IndexedDB and CacheStorage.
URLPattern: Inherit left, wildcard right
Behavior changes to patterns which are constructed using a base URL, the constructor string syntax, or both—but not any pattern which explicitly specifies components separately without a base URL.
Components are not inherited from a base URL if an "earlier" component is explicitly specified. In the string format, unspecified "later" components are implicitly wildcarded, rather than required to be empty (with the exception of the port, which is always taken to be specified when the hostname is). Username and password are never implicitly specified or inherited.
This makes patterns more expansive than before, in cases where wildcards are likely to be desirable.
v flag instead of
The URL Pattern API allows developers to specify pattern strings. Those are transformed to regular expressions internally.
When the API was first implemented, these regular expressions were compiled with the
u flag. Chrome 121 updates it to the
v flag, enabling Unicode sets.
Additions to WebGPU
WebGPU now allows developers to omit entry points to shader modules when creating a pipeline, improving ergonomics. If no default entry point is found, a GPUValidationError will be triggered as usual.
WebGPU timestamp queries allow WebGPU applications to measure precisely (down to the nanosecond) how much time their GPU commands take to execute, especially at the beginning and end of passes. Timestamp queries are heavily used to gain insights into the performance and behavior of GPU workloads.
While the WebGPU specification makes timestamp queries an optional feature due to timing attack concerns, we believe that timestamp queries quantization provides a good middle ground by reducing the precision of timers with a resolution of 100 microseconds.
X25519Kyber768 key encapsulation for TLS
Protect current Chrome TLS traffic against future quantum cryptanalysis by deploying the Kyber768 quantum-resistant key agreement algorithm. This is a hybrid X25519 + Kyber768 key agreement based on an IETF standard. This specification and launch is outside the scope of W3C. This key agreement will be launched as a TLS cipher, and should be transparent to users.
Origin trials in progress
In Chrome 121 you can opt into the following new origin trials.
The Element Capture API
The Element Capture API provides methods for capturing a subtree of the DOM.
Given a video MediaStreamTrack obtained through pre-existing means to initiate tab-capture, Element Capture allows mutating the track to only capture a subtree of the DOM starting at a given Element.
The API bears some resemblance to the Region Capture API, but affords greater flexibility for applications, because occluding and occluded content are both excluded from the capture.
Changes to existing behavior
Chrome 121 includes the following change to existing behavior, included here so developers are aware of the change .
Discard Input Events To Recently Moved Cross-Origin Iframes
If a cross-origin iframe has moved recently within its embedding page, then Chrome silently discards events targeting the iframe. The rationale is that if the iframe moved recently, it is likely that the user did not intend to click or tap on it.
This change shipped in limited form in 2019: it only affected iframes containing script using version 2 features of IntersectionObserver (that is, occlusion or effect detection). This launch expands this behavior to all cross-origin iframes, and will start as a limited experiment in Chrome 121 then be ramped up.