Chrome 122 beta

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 122 is beta as of January 24, 2024. You can download the latest on Google.com for desktop or on Google Play Store on Android.

CSS

This release adds three new CSS features.

CSS @container queries with unsupported features never match

@container selectors containing unsupported queries will never select any containers, meaning they will never match.

That means this query will never match any container even if there is also a size container that matches the width query. For example, the following query will never match due to the unknown feature:

@container (width > 0px) or (unknown) {}

This is a recent change to the specification to avoid forward-compatibility issues.

CSS pseudo-element ::backdrop inheriting from originating element

The ::backdrop pseudo-element used to inherit from initial values. That meant ::backdrop couldn't use custom property values unless specified directly on the ::backdrop rule. The specification has now changed so that ::backdrop inherits from the originating element, this change makes the Chrome implementation match the new specification.

CSS supports() conditions for @import

@import now accepts a supports() condition. If the supports() condition doesn't match, the import won't be fetched.

@import "scroll-driven-animations.css" supports(animation-timeline: auto);

The feature queries to put inside supports() are the same as those used with @supports

Web APIs

Async Clipboard API: Read unsanitized HTML

Adds an unsanitized option in the read() method to get unsanitized HTML format. Unless sites include this property, reading from the clipboard will be sanitized.

By default, when reading text/html MIME types using the async API, the sanitizer is invoked to strip out contents from the HTML markup due to security concerns, and styles are inlined in the HTML. This leads to a large HTML payload and loss of fidelity of HTML content when read by web developers or mobile apps.

Do not delete File kind objects in dataTransfer.clearData()

Updates Chrome to match the spec, which specifies that clearData() does not affect File objects. It only deletes the text kind objects.

FedCM: disconnect

Allows disconnecting a federated login account using the relying party website. With the disconnect API, a relying party may notify the identity provider that a previously used account is now disconnected, and hence using that account again with federated login would require treating it as a new account.

Interoperable mousedown event cancellation in iframe

Make mouse event targets agnostic to mousedown event cancellation when the pointer is dragged out of an iframe. When the mouse is dragged out of an iframe, all browsers (including Chrome) send mousemove and mouseup events to the iframe. However, if the mousedown event is canceled, Chrome today maintains an old WebKit exception that mousemove and mouseup events are sent to the outer frame. WebKit removed this exception last year, and Mozilla never showed this behavior in recent years. This feature will remove the Chrome-only exception for this special case.

Iterator helpers

Iterator helpers are new methods on the iterator prototype to allow general usage and consumption of iterators.

MessagePort.onclose

A change to the Channel Messaging API, that notifies one of the MessagePorts that the other port has been disentangled. That is, close() is called, an owing document is destroyed, or the port is garbage collected.

RTCRtpSender setParameters() extensions for requesting the generation of a key frame

Adds an optional second parameter to WebRTC's RTCRtpSender.setParameters call which can be used to ask the associated encoder to generate a key frame.

Set methods

Set methods are new methods like union and intersection added to JavaScript's built-in Set class.

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: hasRegExpGroups

Allows inspection of whether a URLPattern uses one or more ECMAScript regular expression groups, and therefore may not be suitable for use in cases where an ECMAScript engine is not available (such as some upcoming planned APIs). Strictly speaking this reflects back something developers could know anyway from inspecting the pattern, but having access to the UA's implementation of this check makes that more straightforward.

WebGL drawingBufferStorage

WebGL allows rendering into textures and renderbuffers of many different pixel formats. For example, 8-bit, floating-point, and sRGB-encoded.

The drawing buffer of WebGL (the buffer that is passed to the compositor) is 8-bit by default. The drawingBufferStorage feature allows WebGL to configure the pixel format of this drawing buffer, enabling developers to do the following.

  • Avoid an extra copy when converting their rendering to the default drawing buffer pixel format.
  • Draw content that has more than 8 bits of precision.

The latter feature unlocks several additional applications:

  • A very wide color gamut content without loss of precision.
  • Medical applications which require greater than 8 bits of precision.
  • High dynamic range applications (when available).

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 122 you can opt into the following new origin trials.

Web app scope extensions

Web app scope (defined by the scope field) can only be defined with a path from a single origin. It is used to determine whether an app window's current document is a part of the app. It also determines what URLs are allowable in other manifest members.

With scope_extensions, developers are able to expand the behaviors of their app to include other origins if there is agreement between the primary origin of a web app and the associated origins.

Register for the Web app scope extensions origin trial

Captured Surface Control

The Captured Surface Control API lets web applications produce wheel events in a captured tab or window, and read or write the zoom level of a captured tab.

Register for the Captured Surface Control origin trial.