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 than1
, in-page rendering is always used. Mobile devices ignored this before. - When the
multiple
attribute is set with nosize
attribute, in-page rendering is used. Mobile devices previously used a popup instead of an in-page listbox. - When the
multiple
attribute is set withsize=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.