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.