Chrome 144 beta

Published: December 3, 2025

Unless otherwise noted, the following changes apply to the latest Chrome beta channel release for Android, ChromeOS, Linux, macOS, and Windows. To learn more about these features, see the provided links or the list on ChromeStatus.com. Download the latest version from Google.com for desktop or from Google Play Store on Android.

CSS and UI

CSS anchor positioning with transforms

If an anchor-positioned element is tethered to an anchor that has a transform (or is contained by an element with a transform), the browser resolves anchor() and anchor-size() functions against the bounding box of the transformed anchor.

CSS find-in-page highlight pseudos

Exposes find-in-page search result styling as the ::search-text pseudo-element, which is a highlight pseudo-element like those used for selection and spelling errors. This lets you change the foreground and background colors or add text decorations. This is especially useful if the browser defaults have insufficient contrast with the page colors or are otherwise unsuitable.

Learn more on the Igalia blog in Find-in-Page Highlight Styling.

Don't use aria-details for anchor positioning

The code to create aria-details relationships for non-popover use cases of anchor positioning was likely a mistake. Since popovers and other semantic relationships do create aria-details, and the remaining use cases are likely non-semantic, Chrome now doesn't create these relationships in the non-semantic cases.

@scroll-state scrolled support

Lets you style descendants of containers based on the most recent scrolling direction.

Example:

.scrolling-up {
  translate: 80px 0;
  transition: 0.4s translate;
}

html {
  container-type: scroll-state;
}

@container scroll-state(scrolled: top) {
  .scrolling-up { translate: 0 0; }
}

Respect overscroll-behavior for keyboard scrolls

When you set overscroll-behavior to a value other than auto, the browser shouldn't perform scroll chaining. Chrome respects this for mouse or touch scrolling; however, keyboard scrolls ignored it. This change ensures keyboard scrolling also respects overscroll-behavior.

Respect overscroll-behavior on non-scrollable scroll containers

The overscroll-behavior property applies to all scroll container elements, regardless of whether those elements have overflowing content or are user scrollable. You can use overscroll-behavior to prevent scroll propagation on an overflow: hidden backdrop or an overflow: auto element without needing to consider whether it is overflowing.

Non-tree-scoped container-name matching

The browser ignores tree-scope when matching container-name for @container queries.

Previously, container-name matching for @container queries used tree-scoped names or references. This meant the same name wouldn't match if the @container rule and the container-type property originated from different trees, for example, if the container-type declaration came from an inner shadow tree.

With this change, container-name values match regardless of the @container rule or container-type declaration origins.

SVG2 CSS cascading

Aligns the Chrome implementation with the SVG2 specification for matching CSS rules in <use> element trees.

Selectors match against the <use> instantiation elements instead of the originating element subtree. This means selectors no longer match ancestor and sibling elements outside the cloned subtree. More importantly, state selectors like :hover now match in <use> instances.

Web APIs

XRVisibilityMaskChange

Adds an XRVisibilityMaskChange event that provides a list of vertices and indices to represent the mesh of the visible portion of the user's viewport. This data can be used to confidently limit the amount of the viewport drawn to, which improves performance. To better support this event, XRView objects are also given unique identifiers to enable easier pairing with the associated masks. This is an extension to the core WebXR specification.

Expose onanimationcancel event to GlobalEventHandlers

CSS Animations Level 1 extends the GlobalEventHandlers interface, defined in the HTML specification, by declaring four new event handlers: onanimationstart, onanimationiteration, onanimationend, and onanimationcancel.

Only the onanimationcancel event handler was missing from the GlobalEventHandlers IDL.

For more information, see the CSS Animations Level 1 specification and the HTML specification's GlobalEventHandlers section.

View Transitions waitUntil() method

The ViewTransition automatically constructs a pseudo-element tree to display and animate participating elements in the transition. Per the specification, this subtree is constructed when the view transition starts animating and is destroyed when the animations associated with all view transition pseudo-elements are in the finished state (or more precisely, in a non-running, non-paused state).

This works for a majority of cases and provides a seamless experience for developers. However, for more advanced cases, this is insufficient because developers sometimes want the view transition pseudo-tree to persist beyond the animation finish state.

One example is tying view transitions with Scroll-Driven Animations. When the animation is controlled by a scroll timeline, the subtree shouldn't be destroyed when the animations finish because scrolling back can still animate the pseudo elements.

To enable advanced uses of view transition, this intent adds a waitUntil() function on the ViewTransition object that takes a promise. This promise delays destruction of the pseudo-tree until it is settled.

The <geolocation> element

Introduces the <geolocation> element, a declarative, user-activated control for accessing the user's location. It streamlines the user and developer journey by handling the permission flow and directly providing location data to the site, often eliminating the need for a separate JavaScript API call.

This addresses the long-standing problem of permission prompts triggered directly from JavaScript without a strong signal of user intent. By embedding a browser-controlled element in the page, the user's click provides a clear, intentional signal. This provides a better prompt user experience and, crucially, a recovery path for users who have previously denied the permission.

WebGPU: subgroup_id feature

The subgroup_id and num_subgroups built-in values are available when the subgroups extension is enabled.

WebGPU: Uniform buffer standard layout

Uniform buffers declared in WGSL shaders are no longer required to have 16-byte alignment on array elements or to pad nested structure offsets to a multiple of 16 bytes.

The Temporal API

The Temporal API in ECMA262 provides standard objects and functions for working with dates and times. Date has been a long-standing issue in ECMAScript. Temporal, a global Object that acts as a top-level namespace (for example, Math), bringing a modern date and time API to the ECMAScript language. For a detailed breakdown of motivations, see Fixing JavaScript Date: Getting Started.

Support ping, hreflang, type and referrerPolicy for SVGAElement

Adds support for ping, hreflang, type, and referrerPolicy attributes on SVGAElement, aligning its behavior with HTMLAnchorElement for consistent link handling across HTML and SVG.

The clipboardchange event

The clipboardchange event fires whenever the system clipboard contents are changed by a web app or any other system application. This lets web apps, for example, remote desktop clients, keep their clipboards synchronized with the system clipboard. It provides an efficient alternative to polling the clipboard (using JavaScript) for changes.

User-Agent Client Hints ch-ua-high-entropy-values permissions policy

Adds support for a ch-ua-high-entropy-values Permissions Policy that lets a top-level site restrict which documents can collect high-entropy client hints using the navigator.userAgentData.getHighEntropyValues() JavaScript API.

Restricting collection of high-entropy hints over HTTP is already possible with existing per-client-hint Permissions Policies.

Mirroring of RTL MathML operators

Adds support for character-level and glyph-level mirroring when rendering MathML operators in RTL mode.

When using RTL mode, some operators can be mirrored by changing them to another code point (for example, a right parenthesis becomes a left parenthesis). This is character-level mirroring, with equivalences defined by Unicode's Bidi_Mirrored property.

Some operators have no appropriate mirroring character. Glyph-level mirroring applies in this case, with the rtlm font feature, where another glyph can replace it in a mirrored context. Some existing implementations mirror the original glyph directly, but this might change the meaning for asymmetrical characters, such as the clockwise contour integral.

Multicast Support for the Direct Sockets API for Isolated Web Apps

This feature lets Isolated Web Apps subscribe to multicast groups, receive UDP packets from them, and specify additional parameters when sending UDP packets to multicast addresses.

Performance and Event Timing: InteractionCount

The Event Timing API is part of the Performance Timeline and measures the performance of user interactions. Certain events have an interactionId value assigned, which is useful for grouping related interactions based on common physical user inputs or gestures.

This feature adds performance.interactionCount, which is the total number of interactions that have occurred on the page.

In particular, this feature is useful for computing the Interaction to Next Paint (INP) metric value, which requires knowing the total number of interactions to compute a high percentile score (p98 for pages with more than 50 total interactions).

This feature has been specified for a long time, was prototyped in Chromium previously but never shipped, is part of Interop 2025, and is already available in other browsers.

Interoperable pointer and mouse boundary events after DOM changes

After an event target is removed from the DOM, the logical target of the pointer, as implied by the Pointer and Mouse boundary events (that is, over, out, enter, and leave events), must be the nearest ancestor still attached to the DOM.

Chrome has been tracking a node even after it is removed from the DOM. As a result, if the pointer moves to a new node B after the hit-test node A is removed from the DOM, the boundary event sequence (pointerover, pointerout, pointerenter, pointerleave events, and the corresponding mouse events) implied a pointer movement from A to B. Per the new consensus, the event sequence implies a pointer movement from the "parent of A" to B.

Pointer Lock on Android

Provides access to raw mouse movement by locking the target of mouse events to a single element and hiding the mouse cursor. The Pointer Lock API is already supported on desktop, this launch is for support on Android.

RTCDegradationPreference enum value maintain-framerate-and-resolution

maintain-framerate-and-resolution disables WebRTC's internal video adaptation. This lets the application implement its own adaptation logic and prevents interference from the internal adaptation.

WebAuthn Signal API on Android and iOS

Allow WebAuthn relying parties to report information about existing passkeys back to credential storage providers, so that incorrect or revoked credentials can be updated or removed from provider and system UI.

This feature was already available on desktop, and is now shipping on Android and iOS.

Also, the signal API now supports a safety mechanism for Google Password Manager passkeys on all supported platforms. Previously, when a relying party signaled that a credential was unknown or removed, the passkey was permanently deleted. Now, Google Password Manager hides the passkey instead of deleting it. Passkeys can be recovered by calling signalAllAcceptedCredentials with a list of previously hidden passkeys.

New origin trials

In Chrome 144, you can opt into the following origin trials.

Enhanced Canvas TextMetrics

Expands the TextMetrics Canvas API to support selection rectangles, bounding box queries, and glyph cluster-based operations.

This functionality enables complex text editing applications with accurate selection, caret positioning, and hit testing. Additionally, cluster-based rendering facilitates sophisticated text effects, such as independent character animations and styling.

Deprecations and removals

This version of Chrome introduces the deprecations and removals listed in this section. Visit ChromeStatus.com for lists of planned deprecations, current deprecations, and previous removals.

Deprecate the Topics API

The Topics API is an API to enable ad-targeting based on a user's general browsing interests, without exposing their exact browsing history.

Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove the Topics API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).

Deprecate the Protected Audience API

The Protected Audience API provides a method of interest-group advertising without third-party cookies or user tracking across sites.

Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove the Protected Audience API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).

Deprecate the Shared Storage API

The Shared Storage API is a privacy-preserving web API to enable storage that is not partitioned by first-party site.

Following the announcement that Chrome will maintain its current approach to third-party cookies, the team is deprecating and planning to remove the Shared Storage API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).

Deprecate the Attribution Reporting API

The Attribution Reporting API is an API designed to measure ad conversions without third-party cookies or user tracking across sites.

Following the announcement that Chrome will maintain its current approach to third-party cookies, the team is planning to deprecate and remove the Attribution Reporting API (along with other Privacy Sandbox APIs).

Deprecate the Private Aggregation API

The Private Aggregation API is a generic mechanism for measuring aggregate, cross-site data in a privacy-preserving manner. It was originally designed for a future without third-party cookies.

Following the announcement that Chrome will maintain its current approach to third-party cookies, the team is deprecating and planning to remove the Private Aggregation API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page). This API is only exposed through the Shared Storage and Protected Audience APIs, which are also planned for deprecation and removal. Therefore, no additional work is required for Private Aggregation.

Related Website Sets provide a framework for developers to declare relationships among sites, to enable limited cross-site cookie access for specific, user-facing purposes. This is facilitated through the use of the Storage Access API and document.requestStorageAccessFor (see next section).

Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove Related Website Sets (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).

Deprecate document.requestStorageAccessFor

The requestStorageAccessFor API is an extension to the Storage Access API that allows a top-level site to request access to unpartitioned ("first-party") cookies on behalf of embedded sites. Browsers would have discretion to grant or deny access, with mechanisms like Related Website Sets membership as a potential signal. This would allow for use of the Storage Access API by top-level sites.

Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove requestStorageAccessFor (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).

Deprecate savedTabGroups as individual value in SyncTypesListDisabled

The SyncTypesListDisabled enterprise policy lets administrators disable the synchronization of the savedTabGroups data type on desktop platforms. On mobile platforms, however, Tab Groups synchronization is already managed by the tabs data type. To align desktop behavior with mobile and simplify sync management, the individual savedTabGroups data type is deprecated and is no longer an individually customizable value within the SyncTypesListDisabled policy.

Externally loaded entities in XML parsing

Chrome synchronously fetches external XML entities or DTDs and incorporates them into parsing under specific circumstances. This functionality will be removed.

http/tests/security/contentTypeOptions/xml-external-entity.xml provides an example: External entities can be defined in the trailing part of the DOCTYPE statement and refer to resources that are synchronously loaded and included as context when parsing XML.

Another syntax example is a DOCTYPE that, using the SYSTEM keyword followed by a URL pointing to a DTD, contains additional entity definitions.

Such external load requests are passed up from the parser.

According to the W3C XML specification, non-validating processors are not required to read external entities.

The team plans to deprecate loading of external entity definitions in XML documents that don't use XSLT.