![Rachel Andrew](https://web.dev/images/authors/rachelandrew.jpg) Rachel Andrew Technical Writer [GitHub](https://github.com/rachelandrew) [LinkedIn](https://www.linkedin.com/in/rachelandrew) [Mastodon](https://front-end.social/@rachelandrew) [Bluesky](https://bsky.app/profile/rachelandrew.bsky.social) [Homepage](https://rachelandrew.co.uk)

<br />


Published: March 11, 2026

<br />

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](https://www.google.com/chrome/beta/) 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](https://www.w3.org/TR/css-2025/)
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](https://developer.chrome.com/docs/web-platform/deprecating-xslt.md.txt). While this process continues,
you can already use safe Rust XML parsing in scenarios where no XSLT is
required:

### JSON and style support for `link rel=modulepreload`

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.

> [!NOTE]
> **Note:** When both `path` and `href` are specified on `<textPath>`, `path` takes precedence, as described in the SVG 2 specification.

### 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](https://developer.mozilla.org/docs/Web/API/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](https://developer.chrome.com/blog/local-network-access.md.txt).

### 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](https://developer.chrome.com/docs/web-platform/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.