Chrome 142 beta

Published: October 1, 2025

Unless otherwise noted, these changes apply to the Chrome 142 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 142 beta from Google.com for desktop or the Google Play Store for Android.

CSS and UI

:target-before and :target-after pseudo-classes

These pseudo-classes match scroll markers that are before or after the active marker (matching :target-current) within the same scroll marker group, as determined by flat tree order:

  • :target-before: Matches all scroll markers that precede the active marker in the flat tree order within the group.
  • :target-after: Matches all scroll markers that follow the active marker in the flat tree order within the group.

Absolute positioning for the ::view-transition element

View transitions use a pseudo subtree of the element, with ::view-transition being the root of that transition. Previously, the ::view-transition element was specified to have position: fixed. The CSS Working Group resolved to make this position: absolute and so Chrome now reflects that change.

This change shouldn't be noticeable because this element's containing block remains the snapshot containing block in either the absolute or fixed case. The only noticeable difference is in getComputedStyle.

activeViewTransition property on document

The View Transitions API lets developers start visual transitions between different states. The primary SPA entry point is startViewTransition(), which returns a transition object. This object contains several promises and functionality to track transition progress, and lets you manipulate transitions, for example, by skipping the transition or modifying its types.

From Chrome 142, developers no longer need to store this object. A document.activeViewTransition property represents this object, or null if no transition is ongoing.

This also applies to MPA transitions, where the object is only available through pageswap and pagereveal events. In this update, document.activeViewTransition is set to this object for the duration of the transition.

Range syntax for style container queries and if()

Chrome enhances CSS style queries and the if() function by adding support for range syntax.

It extends style queries beyond exact value matching (for example, style(--theme: dark)). Developers can use comparison operators (such as > and <) to compare custom properties, literal values (for example, 10px or 25%), and values from substitution functions like attr() and env(). For a valid comparison, both sides must resolve to the same data type. It is limited to the following numeric types: <length>, <number>, <percentage>, <angle>, <time>, <frequency>, and <resolution>.

Examples:

Compare a custom property against a literal length:

@container style(--inner-padding > 1em) {
  .card {
    border: 2px solid;
  }
}

Compare two literal values

@container style(1em < 20px) {
  /* ... */
}

Using style ranges in if():

.item-grid {
  background-color: if(style(attr(data-columns, type<number>) > 2): lightblue; else: white);
}

Interest Invokers (the interestfor attribute)

Chrome adds an interestfor attribute to <button> and <a> elements. This attribute adds "interest" behaviors to the element. When a user "shows interest" in the element, actions are triggered on the target element, for example, showing a popover. The user agent detects when a user "shows interest" in the element through methods such as holding the pointer over the element, hitting special hotkeys on the keyboard, or long-pressing the element on touchscreens. When interest is shown or lost, an InterestEvent fires on the target, which has default actions for popovers, such as showing and hiding the popover.

The font-language-override property

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

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

The download attribute in the SVG <a> element

Chrome introduces support for the download attribute on the SVGAElement interface, aligning with the SVG 2 specification. The download attribute lets authors specify that it downloads the target of an SVG hyperlink instead of navigating to it. This mirrors the behavior already supported in HTMLAnchorElement. It promotes interoperability across major browsers and ensures consistent behavior between HTML and SVG <a> elements, and improves developer experience and user expectations.

Mobile and desktop parity for select element rendering modes

By using the size and multiple attributes, the <select> element can be rendered as an in-page listbox or a button with a popup. However, these modes do not have consistent availability across mobile and desktop Chrome. In-page listbox rendering is unavailable on mobile, and a button with a popup is unavailable on desktop when the multiple attribute is present.

This update adds the listbox to mobile and a multi-select popup to desktop, and ensures that opt-ins with the size and multiple attributes result in the same rendering mode across mobile and desktop. The changes are summarized as follows:

  • When the size attribute has a value greater than 1, in-page rendering is always used. Mobile devices ignored this before.
  • When the multiple attribute is set with no size attribute, in-page rendering is used. Mobile devices previously used a popup instead of an in-page listbox.
  • When the multiple attribute is set with size=1, a popup is used. Desktop devices previously used an in-page listbox.

Sticky user activation across same-origin renderer-initiated navigations

Chrome preserves the sticky user activation state after a page navigates to another same-origin page. The lack of user activation in the post-navigation page prevents some use cases, for example, showing virtual keyboards on auto-focus. This has blocked developers who want to build MPAs over SPAs.

This does not cover browser-initiated navigation requests (reload, history navigation, typed URL in the address bar, and so on).

Web APIs

WebGPU: primitive_index feature

WebGPU adds a new optional capability that exposes a new WGSL shader builtin, primitive_index. It provides a per-primitive index to fragment shaders on supported hardware, similar to the vertex_index and instance_index built-ins. The primitive index is useful for advanced graphical techniques, such as virtualized geometry.

WebGPU: Texture formats tier1 and tier2

Extend GPU texture format support with capabilities such as render attachment, blending, multisampling, resolve, and storage_binding.

DataTransfer property for insertFromPaste, insertFromDrop and insertReplacementText input events

Populate the dataTransfer property on input events with inputType values of insertFromPaste, insertFromDrop, and insertReplacementText to provide access to clipboard and drag-and-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.

This property makes Chrome interoperable with Safari and Firefox.

Media session: add reason to enterpictureinpicture action details

Adds enterPictureInPictureReason to the MediaSessionActionDetails sent to the enterpictureinpicture action in the Media Session API. This lets developers distinguish between enterpictureinpicture actions triggered explicitly by the user (for example, from a button in the user agent) and enterpictureinpicture actions triggered automatically by the user agent because the content becomes occluded.

Web Speech API contextual biasing

This update enables websites to support contextual biasing for speech recognition by adding a recognition phrase list to the Web Speech API.

Developers can provide a list of phrases and update them to apply a bias to the speech recognition models in favor of those phrases. It helps improve accuracy and relevance for domain-specific and personalized speech recognition.

Stricter *+json MIME token validation for JSON modules

Reject JSON module script responses whose MIME type's type or subtype contains non-HTTP token code points (for example, spaces) when matched with *+json. This aligns with the MIME Sniffing specification and other engines. It is part of the Interop2025 modules focus area.

FedCM—Support showing third-party iframe origins in the UI

Before Chrome 142, FedCM always showed the top-level site in its UI.

This works well when the iframe is conceptually first-party (for example, foo.com might have an iframe foostatic.com, which is not meaningful to the user).

But if the iframe is actually third-party, it is better to show the iframe origin in the UI so users better understand who they are sharing their credentials with. For example, a photo editor might be embedded in a book publishing web app and might want to let users access files they stored before with the photo editor. This capability is now available.

Origin-keyed process isolation

Shifts the process isolation policy from locking processes to a site (for example, example.com) to locking them to a specific origin (for example, foo.example.com).

To further enhance security, Chrome is moving to a more granular process isolation model called "Origin Isolation." Chrome used "Site Isolation," which grouped different origins from the same site, for example, a.example.com and b.example.com, into a single renderer process.

With Origin Isolation, each individual origin (such as https://foo.example.com) is isolated in its own renderer process. It strengthens Chrome's security architecture by aligning process boundaries with the web's fundamental origin-based security model, offering greater protection against potential vulnerabilities within sites.

Interoperable pointerrawupdate events exposed only in secure contexts

The PointerEvents specification restricted pointerrawupdate to secure contexts in 2020, hiding both the event firing and the global event listeners from insecure contexts. With this update, Chrome matches the updated specification and becomes interoperable with other major browsers.

Origin trials in progress

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

Device Bound Session Credentials

A way for websites to securely bind a session to a single device.

It lets servers securely bind a session to a device. The browser renews the session periodically when requested by the server, with proof of possession of a private key.

TCP Socket Pool per-top-level-site

This experiment evaluates the impact of changing the per-profile TCP socket pool size from 256 (the default) to 513 while adding a per-top-level-site cap of 256 (to ensure no two tabs can exhaust the pool). The feasibility of raising the per-profile limit to 512 was studied and did not yield negative outcomes. The per-top-level-site cap of 256 is equal to the default per-profile limit, so it should not negatively affect performance. These limits are imposed independently for the WebSocket pool and the normal (HTTP) socket pool.

The intent is to launch this experiment directly if no negative effects occur.