![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: October 29, 2025

<br />

Unless otherwise noted, these changes apply to the Chrome 143 beta channel
release for Android, ChromeOS, Linux, macOS, and Windows. Learn more about these
features from the provided links or on ChromeStatus.com. Download Chrome 143
beta from [Google.com](https://www.google.com/chrome/beta/) for desktop or on
Google Play Store on Android.

## CSS and UI

### CSS anchored fallback container queries

This feature introduces `@container anchored(fallback)` to style descendants of
anchor-positioned elements based on which `position-try-fallbacks` value is
applied.

For example, you can use such queries to style an anchored element's tether or
its animations based on how the anchor and the anchored element are positioned
relative to each other.

Example:

```css
#anchored {
 position-try-options: flip-block;
 container-type: anchored;
}

@container anchored(fallback: flip-block) {
  #anchored > .arrow {
    --arrow-rotation: 180deg;
   }
}
```

Learn more in
[Detect fallback positions with anchored container queries from Chrome 143](https://developer.chrome.com/blog/anchored-container-queries.md.txt).

### EditContext: TextFormat `underlineStyle` and `underlineThickness`

Chromium shipped the [EditContext
API](https://developer.mozilla.org/docs/Web/API/EditContext) with a bug where
the `TextFormat` object, supplied by the `EditContext/textformatupdate_event`,
provides incorrect values for the `underlineStyle` and `underlineThickness`
properties. In Chromium, the possible values are `None`, `Solid`, `Dotted`,
`Dashed`, `Squiggle` and `None`, `Thin`, `Thick`. However, per the [EditContext
specification](https://w3c.github.io/edit-context/#dom-underlinestyle), they
should be `none`, `solid`, `dotted`, `dashed`, `wavy` and `none`, `thin`,
`thick`.

## Web APIs

### Allow more characters in JavaScript DOM APIs

The HTML parser has always (or for a long time) allowed elements and attributes
to have a wide variety of valid characters and names, but the JavaScript DOM
APIs to create the same elements and attributes are more strict and don't match
the parser.

This change relaxes the validation of the JavaScript DOM APIs to match the HTML
parser.

More context here:
[github.com/whatwg/dom/issues/849](https://github.com/whatwg/dom/issues/849)

This change is not expected to cause compatibility issues because all previously
allowed element and attribute names remain valid with the new behavior.

### Speculation rules: mobile 'eager' eagerness improvements

On mobile, the prefetches and prerender speculation rules for 'eager' eagerness now
trigger when HTML anchor elements are in the viewport for a short time.

Earlier, prefetching and prerendering started as soon as possible, which was
equivalent to 'immediate' eagerness. This updated behavior is more useful
because it better reflects the author's intent to be more eager than 'moderate'
and less eager than 'immediate'.

### Implement CSS property font-language-override

This feature introduces support for the `font-language-override` CSS property in
Chromium. The property lets developers override the system language used for
OpenType glyph substitution by specifying a four-character language tag directly
in CSS.

This provides fine-grained typographic control, which is useful for multilingual
content or fonts with language-specific glyph variants.

### WebGPU: Texture component swizzle

Texture component swizzle lets `GPUTextureViews` rearrange or replace the color
components from a texture's red, green, blue, or alpha channels when a shader
accesses them.

### ICU 77 (supporting Unicode 16)

The Unicode support library ICU (International Components for Unicode) upgrades
from version 74.2 to 77.1, adding support for Unicode 16 and updating locale
data. Two changes might pose a risk for web applications that assume a specific
format from the Intl JavaScript APIs:

- The default Italian number formatting now omits the thousand separator for 4-digit numbers. For example, `new Intl.NumberFormat("it").format(1234)` returns "1234" instead of "1.234". You can achieve the old behavior with the `useGrouping` parameter for the `Intl.NumberFormat` constructor.
- In some English locales (for example, en-AU, en-GB, and en-IN), a comma was added after full-length weekdays, changing "Saturday 30 April 2011" to "Saturday, 30 April 2011". Web applications must avoid relying on the precise formatting of dates.
- Intl and RegExp (V8): Many small changes. The change to Italian number formatting is the highest risk and has a dedicated flag.
- IDNA: This upgrade generally allows more things and improves overall test results in WPT.
- Text segmentation: The most notable change is improved Japanese line breaking when using `word-break: auto-phrase`. This is related to <https://chromestatus.com/feature/5133892532568064>.

### `DataTransfer` property for `insertFromPaste`, `insertFromDrop` and `insertReplacementText` input events

This feature populates the `dataTransfer` property on input events with
`inputType` of `insertFromPaste`, `insertFromDrop`, and `insertReplacementText`.
This provides access to clipboard and drag-drop data during editing operations
in `contenteditable` elements.

The `dataTransfer` object contains the same data that was available during the
`beforeinput` event.

This feature only applies to `contenteditable` elements. For form controls
(`textarea`, `input`), the behavior remains unchanged---the `data` property
contains the inserted text and `dataTransfer` remains null. Both Safari and
Firefox already support this feature. Chrome adopting this feature enhances
interoperability across browsers, providing a more consistent experience for web
authors.

### FedCM---Support Structured JSON Responses from IdPs

This feature lets Identity Providers (IdPs) return structured JSON objects
instead of plain strings to Relying Parties (RPs) through the
[`id_assertion_endpoint`](https://developer.chrome.com/docs/identity/fedcm/implement/identity-provider#id-assertion-endpoint).

This change simplifies integration for developers by eliminating the need to
manually serialize and parse JSON strings. It provides more dynamic and flexible
authentication flows, letting RPs interpret complex responses directly and
support varied protocols like OAuth2, OIDC, or IndieAuth without out-of-band
agreements.

### WebTransport Application Protocol Negotiation

WebTransport Application Protocol Negotiation lets you negotiate the protocol
fused by the web application within the WebTransport handshake.

A web application can specify a list of application protocols when constructing
a `WebTransport` object. These protocols are then conveyed to the server through
HTTP headers. If the server picks one of those protocols, it can indicate that
within response headers, and that reply is available within the `WebTransport`
object.

### Web Smart Card API for Isolated Web Apps

Available on Isolated Web Apps (IWA) only. This feature lets smart card (PC/SC)
applications move to the Web platform. It gives them access to the PC/SC
implementation (and card reader drivers) available in the host Operating System.

Administrators can control this API's availability in two ways:

- Globally---using the `DefaultSmartCardConnectSetting` policy
- Per-application---using the `SmartCardConnectAllowedForUrls` and `SmartCardConnectBlockedForUrls` policies

### Web App Manifest: specify update eligibility, icon URLs are Cache-Control: immutable

The manifest spec now includes an update eligibility algorithm. This makes the
update process more deterministic and predictable, providing developers more
control over when updates apply to existing installations, and gives users more
choice over what to do with an update, like ignoring it if they want. It also
allows the removal of the 'update check throttle' that user agents implement to
avoid wasting network resources.

### Heavy Ads Intervention: Reports sent to embedding frame

Ad intervention reports are now sent to the ad's embedding frame, in addition to
the ad frame itself. The report sent to the embedding frame will contain the ad
iframe's ID and the pre-redirect URL of the frame that was unloaded within the
report body's message field. This change gives the embedding context the
ability to identify problematic ad providers and address disruptive ads to
improve user experience.

## Origin trials in progress

In Chrome 143, you can opt into the following new [origin
trials](https://developer.chrome.com/docs/web-platform/origin-trials).

### Digital Credentials API (issuance support)

This feature lets issuing websites (for example, a university, government
agency, or bank) securely [initiate the provisioning
(issuance)](https://digitalcredentials.dev/docs/category/issuing-a-credential)
process of digital credentials directly into a user's mobile wallet application.
On Android, this capability uses the Android IdentityCredential CredMan system
(Credential Manager). On desktop, it uses cross-device approaches with the CTAP
protocol, similar to the [Digital Credentials presentation cross-device
flow](https://developer.chrome.com/blog/digital-credentials-api-shipped).

### TCP Socket Pool Limit Randomization

By exploiting limits in the connection pool size on Chrome, you can gain
knowledge about cross-site state that would otherwise be inaccessible.
Specifically, you can (with some statistical certainty) evaluate the login
state, visited history, or even something more specific like whether Gmail has
pending messages in the inbox.

To mitigate this, randomization is added to how TCP socket pools are limited so
that an observing site cannot infer this information with high certainty.

## Deprecations and removals

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

This release of Chrome deprecates two features

### Deprecate getters of Intl Locale Info

The Intl Locale Info API is a Stage 3 ECMAScript TC39 proposal to improve the
`Intl.Locale` object by exposing locale information, such as week data (first
day in a week, weekend start day, weekend end day, minimum day in the first
week), and text direction hour cycle used in the locale.

The implementation shipped in Chrome 99. However, the proposal later changed in
Stage 3 and moved several getters to functions. The deprecated getters must be
removed, and the renamed functions relaunched.

### Deprecate XSLT

XSLT v1.0, which all browsers adhere to, standardized in 1999. In the meantime,
XSLT has evolved to v2.0 and v3.0, adding features and diverging from the
version implemented in browsers. This lack of advancement, coupled with the rise
of JavaScript libraries and frameworks that offer flexible and powerful DOM
manipulation, has led to a significant decline in the use of client-side XSLT.
JavaScript-based technologies, such as JSON and React, have largely superseded its
role within the web browser.

Chromium uses the libxslt library to process these transformations, but libxslt
was unmaintained for approximately six months in 2025. Libxslt is a complex,
aging C codebase that is susceptible to memory safety vulnerabilities like
buffer overflows, which might lead to arbitrary code execution. Because
client-side XSLT is now a niche, rarely-used feature, these libraries receive
less maintenance and security scrutiny than core JavaScript engines. However,
they represent a direct attack surface for processing untrusted web content.
Indeed, XSLT is the source of several recent high-profile security exploits that
continue to put browser users at risk.

For these reasons, Chromium plans to deprecate and remove XSLT from the web
platform. WHATWG decided to move XSLT deprecation forward.

For more details on the deprecation, and information on what to do if you rely
XSLT read [Removing XSLT for a more secure browser](https://developer.chrome.com/docs/web-platform/deprecating-xslt.md.txt).