Chrome 147 beta

Published: March 11, 2026

Unless otherwise noted, the following changes to the latest Chrome beta channel release for Android, ChromeOS, Linux, macOS, and Windows. Learn more about these features by following the provided links or by visiting ChromeStatus.com. You can download the latest beta version from Google.com for desktop or from the Google Play Store on Android.

Timeline named range scroll

This feature expands the set of named ranges of ViewTimelines, adding a scroll range.

The Scroll-Driven Animations API introduced ViewTimelines along with named ranges that refer to portions of a ViewTimeline that define an animation's range.

However, all the named ranges provided were restricted to the portion of the ViewTimeline where its subject is visible. It is useful for authors to refer to the full extent of the scroll container underlying the timeline. This feature adds a named range of scroll to the existing set (entry, exit, cover, contain).

CSS contrast-color()

You can use this function to meet contrast requirements for accessibility.

The contrast-color() function can be used anywhere in CSS where a color value is expected. It takes a color value argument, and returns either black or white depending on which provides the highest contrast against the color argument.

CSS border-shape

CSS border-shape lets you create non-rectangular borders, with any arbitrary shape (for example, polygon, circle, shape()).

Though border-shape accepts the same shapes as clip-path, it is fundamentally different: border-shape defines the shape of the border, decorates it, and clips only the inside.

border-shape has two variants: one variant that strokes a shape, and another variant that fills between two shapes.

Element scoped view transitions

Exposes Element.startViewTransition() on arbitrary HTML elements. The element establishes a scope for the transition, which means that the transition pseudo-elements are affected by ancestor clips and transforms, and multiple transitions on separate elements can run concurrently.

CSS update: decoupling of width and style properties

Chrome aligns with updated CSS specifications for the behavior of border-width, outline-width, and column-rule-width properties. Previously, if the corresponding border-style, outline-style, or column-rule-style was set to none or hidden, the computed width of these properties were forced to 0px, regardless of the specified value.

With this change, the computed values of border-width, outline-width, and column-rule-width always reflect the author-specified values, independent of the *-style property. Additionally, the resolved values (as returned by getComputedStyle()) for outline-width and column-rule-width also reflect the specified values.

The change aligns Chrome with Firefox and WebKit, which have already implemented this behavior.

CSSPseudoElement interface

The CSSPseudoElement interface represents a pseudo-element in JavaScript.

CSSPseudoElement is returned from Element.pseudo(type), where type is: ::after, ::before, ::marker. CSSPseudoElement is a proxy object that represents a pseudo-element, so, unlike a pseudo-element, CSSPseudoElement always exists.

CSSPseudoElement has the following attributes/methods:

  • The type attribute is a string representing the type of the pseudo-element.
  • The element attribute is the ultimate originating element of the pseudo-element.
  • The parent attribute is the originating element of the pseudo-element (Either the Element or CSSPseudoElement for nested pseudo-elements).
  • The pseudo(type) method to retrieve nested pseudo-elements.

Pseudo target on events

Specific events are extended to have .pseudoTarget that is either CSSPseudoElement (if interaction has been with pseudo-element) or null.

This provides more specific information on the event origin, for example, that not just an ultimate originating element (Event.target) has been clicked, but more specifically that it was ::after. Note that the Event.target is unchanged so the event only has extra info on pseudo-element interaction.

The events are UIEvent, AnimationEvent, TransitionEvent.

The mouseover, mouseout, mouseenter, mouseleave and their pointer* counterparts are not supported.

WebXR Plane Detection

The WebXR Plane Detection API lets sites retrieve the set of planes detected in the user's environment. This is both less work for developers and more powerful than using the depth-sensing WebXR feature because planes, for example, walls that objects occlude, can still be fully represented if the system knows the boundaries of the wall. A depth map would show the wall, but objects in front of the wall would break it up, potentially obscuring the wall's full scope. Further, semantic labeling information is available when the device knows about such labels and they fit into predefined categories, which provides better knowledge about the world.

WebXR Layers

WebXR Layers offers a more efficient way of drawing immersive content.

In addition to support for native color and depth textures and texture arrays, it also provides support for different layer types that are managed by the system compositor rather than JavaScript.

XML Parsing in Rust for non XSLT scenarios

We are shipping the Rust XML parser for scenarios in which we are certain that no XSLT processing is required.

The Rust XML parser improves security by eliminating memory corruption bugs in XML parsing, it is intended to replace our usage of libxml2 (written in C) with a safe alternative.

Chrome is deprecating XSLT. While this process continues, you can already use safe Rust XML parsing in scenarios where no XSLT is required:

Adds support for JSON and style module types as <link rel="modulepreload"> destinations. <link rel="modulepreload"> is already supported in Chromium (see https://chromestatus.com/feature/5762805915451392), but it only supports preloading script-like module scripts. This feature addresses a gap in functionality, as JSON and CSS module scripts are supported in Chromium elsewhere but are not supported as <link rel="modulepreload"> destinations. Style modules can be preloaded with <link rel="modulepreload" as="style" href="..."> and JSON modules can be preloaded with <link rel="modulepreload" as="json" href="...">.

Math.sumPrecise

A TC39 proposal to add a method to sum multiple values to JavaScript.

Add an iterable-taking Math.sumPrecise method that returns the sum of the values in the iterable using a more precise algorithm than naive summation.

Support path attribute on SVG <textpath> element

This change adds support for the path attribute on the SVG <textPath> element, letting authors define text path geometry inline using SVG path data and reducing the need for separately defined <path> elements.

<textPath> resolves its text path geometry using the following rules:

  1. If both path and href are present, geometry is resolved from the path attribute.
  2. If only the path attribute is present and parses successfully, the inline path definition is used.
  3. If the path attribute is absent or fails to parse, and an href attribute is provided, the referenced <path> element is used as a fallback.
  4. Existing href-only behavior is preserved without change.

This implementation follows the SVG 2 specification's definition of the path attribute on <textPath>, and the resolution behavior is consistent with other browser engines, improving interoperability and standards compliance.

Get Secure Payment Confirmation capabilities

Adds a new static method to the Payment Request that lets web developers get the capabilities of the browser's implementation of Secure Payment Confirmation.

This helps web developers know what capabilities are available for Secure Payment Confirmation so they can decide whether they want to use Secure Payment Confirmation with those capabilities.

Update Device Memory API limits

Update to a new set of possible values for the Device Memory API:

  • Android: 1, 2, 4, 8
  • Others: 2, 4, 8, 16, 32.

Replacing the old values of 0.25, 0.5, 1, 2, 4, 8 that have grown outdated.

This reduces the fingerprinting risks at the lower end because device capabilities have improved since these were set.

Local Network Access restrictions on Service Worker WindowClient.navigate()

Local Network Access (LNA) restrictions were recently added to restrict websites from unilaterally making requests to local networks and local devices. This was added for Service Worker-initiated fetch requests, but was not applied to navigations performed by service workers through WindowClient.navigate

This launch addresses this gap by adding LNA restrictions to WindowClient.navigate() calls, using the WindowClient as the initiator of the navigation to determine if the navigation is an LNA request.

This only applies if the WindowClient being navigated is a subframe; Chrome does not enforce any LNA restrictions on main frame navigations.

Local network access restrictions for WebSockets

Local Network Access (LNA) restrictions are expanding to include WebSockets. WebSockets connections to local address now trigger permission prompts.

All of the LNA enterprise policies still apply to the LNA WebSockets restrictions, including LocalNetworkAccessAllowedForUrls, LocalNetworkAccessBlockedForUrls, and LocalNetworkAccessRestrictionsTemporaryOptOut.

More information about LNA can be found in Local Network Access.

Local network access restrictions for WebTransport

Restricts the ability to make requests to the user's local network using WebTransport, gated behind a permission prompt.

A local network request is any request from a public website to a local IP address or loopback, or from a local website (for example, intranet) to loopback. Gating the ability for websites to perform these requests behind a permission reduces the ability of sites to use these requests to fingerprint the user's local network.

This permission is restricted to secure contexts.

IWA only: Web Printing API

This API enables deeper integration with printer-related functionality in Isolated Web Apps (IWA).

The Web Printing API provides a set of JavaScript methods that allow developers to query local printers, submit print jobs to the most appropriate printers, and manage print job options and status. To represent these concepts, it relies on the attribute names and semantics from the Internet Printing Protocol (IPP) specifications.

New origin trials

In Chrome 147 you can opt into the following new origin trials.

Container Timing

The Container Timing API lets you monitor when annotated sections of the DOM are displayed on screen and have finished their initial paint. A developer can mark subsections of the DOM with the containertiming attribute (similar to elementtiming for the Element Timing API) and receive performance entries when that section has been painted for the first time. This API lets developers measure the timing of various components in their pages.

Autofill event

Autofill is a key feature of the web that reduces friction for millions of users every day. But getting autofill to work reliably with dynamic forms across multiple implementations can be complex.

This feature adds an autofill event that fires when the browser is about to autofill a form field. that lets developers modify their forms to fit the autofilled data and let the browser know when they have done so.

Web app HTML install element

Lets a website declaratively prompt users to install a web app. The element optionally accepts two attributes that allow installation of content from a different origin.

Connection allowlists

Connection allowlists is a feature designed to provide explicit control over external endpoints by restricting connections initiated using the Fetch API or other web platform APIs from a document or worker.

The proposed implementation involves the distribution of an authorized endpoint list from the server through an HTTP response header. Prior to the establishment of any connection by the user agent on behalf of a page, the agent evaluates the destination against this allowlist; connections to verified endpoints are permitted, while those failing to match the entries in the list are blocked.

Deprecations and removals

This version of Chrome introduces the following deprecations and removals. Visit ChromeStatus.com for lists of planned deprecations, current deprecations and previous removals.

This release of Chrome deprecates X feature(s).

Remove inline XSLT for production of SVG

We're beginning to phase out inline XSLT for the production of SVG. This is deployed in sync with experimental testing of the Rust based XML Parser, and is not immediately deployed to 100% in the marked shipping release version.

A specially crafted XML file may contain an XSL stylesheet that transforms generic XML data into an SVG file.

Example: https://gist.github.com/drott/1fc70b3c7f0ac314d1fe2e5beecc5490?short_path=1c60adf

This is a special case of XSLT processing that according to usage measurements Chrome considers virtually non-existent on the web. Chrome plans to deprecate and remove this particular use of XSLT before fully phasing out XSLT.