Published: June 25, 2025
Unless otherwise noted, the following changes apply to the newest Chrome beta channel release for Android, ChromeOS, Linux, macOS, and Windows. Learn more about the features listed here through the provided links or from the list on ChromeStatus.com. Chrome 139 is beta as of 25 June 2025. You can download the latest on Google.com for desktop or on Google Play Store on Android.
CSS
This release adds six new CSS and UI features.
Short-circuiting var()
and attr()
When the fallback is not taken, var()
and attr()
functions evaluate without
looking for cycles in that fallback. The following CSS works, because --green
and --blue
exist.
--green: green;
--blue: blue;
--a: var(--green, var(--b));
--b: var(--blue, var(--a));
CSS caret-animation
property
Chrome already supported animation of the caret-color
property, but when
animated the default blinking behavior of the caret interfered with the
animation. The CSS caret-animation
property has two possible values: auto
and manual
, where auto
means browser default (blinking) and manual
means
the web developer is controlling the caret animation. The property also lets
users disable blinking using a user stylesheet.
Corner shaping
Enable styling corners, on top of the existing border-radius
, by specifying
the shape or curvature of the corner. This lets you create shapes like
squircles, notches, and scoops, and animate between them. Learn more in this
post from Amit
Sheen.
Continue running transitions when switching to the initial transition value.
When the transition related properties change, they are only supposed to affect newly started transitions. This means that if you change the transition properties, unless you also change the properties which have active transition animations, those transition animations will continue with the previously specified duration, easing, etc. Blink incorrectly canceled transitions when the transition property was set to "none", even though it doesn't cancel them if you only change the transition-duration. With this feature, blink will be consistent with webkit and gecko, allowing active transitions to continue running, unless or until their property value changes triggering a new transition update.
CSS Custom Functions
Custom Functions are similar to custom properties, but instead of returning a single, fixed value, they return values based on other custom properties, parameters, and conditionals.
@function --negate(--value) {
result: calc(var(--value) * -1);
}
div {
--gap: 1em;
margin-top: --negate(var(--gap));
}
Support width
and height
as presentation attributes on nested <svg>
elements
Supports applying width
and height
as presentation attributes on nested
<svg>
elements through both SVG markup and CSS. This dual approach provides
even greater flexibility, letting you manage and style SVG elements more
efficiently within complex designs.
Web APIs
Web App Manifest: specify update eligibility, icon URLs are Cache-Control: immutable
Specify an update eligibility algorithm in the manifest spec. This makes the update process more deterministic and predictable, giving developers more control over whether (and when) updates should apply to existing installations, and allowing removal of the 'update check throttle' that user agents currently need to implement to avoid wasting network resources.
WebXR Depth Sensing Performance Improvements
Exposes several new mechanisms to customize the behavior of the depth sensing feature within a WebXR session, with the goal of improving the performance of the generation or consumption of the depth buffer. The key mechanisms exposed are: the ability to request the raw or smooth depth buffer, the ability to request that the runtime stop or resume providing the depth buffer, and the ability to expose a depth buffer that does not align with the user's view exactly, so that the user agent does not need to perform unnecessary re-projections every frame.
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 that 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.
request-close
invoker command
Dialog elements can be closed through a variety of mechanisms, sometimes
developers want to have the ability to prevent closure. To achieve this dialogs
fire a cancel event. Originally this was only fired via a close request (for
example, Esc
key press), recently a requestClose()
JS function was added
which also fires the cancel event. The request-close
command brings that new
ability to the declarative invoker commands API.
WebGPU: 3D texture support for BC and ASTC compressed formats
The texture-compression-bc-sliced-3d
and texture-compression-astc-sliced-3d
WebGPU features add respectively 3D texture support for BC and ASTC compressed
formats.
Secure Payment Confirmation: Browser Bound Keys
Adds an additional cryptographic signature over Secure Payment Confirmation assertions and credential creation. The corresponding private key is not synced across devices. This helps web developers meet requirements for device binding for payment transactions.
Secure Payment Confirmation: UX Refresh
Updates the UX elements for the SPC dialog on Android Chrome. Other than just UX presentation the following are being added:
- Lets merchants provide an optional list of payment entity logos related to the payment that will be displayed.
- Returning different output states back to the merchant depending on whether the user wants to continue the transaction without SPC or to cancel the transaction.
- Adds a new payment detail label field to the payment instrument so the text is presented across two lines.
WebGPU core-features-and-limits
The core-features-and-limits
feature signifies that a WebGPU adapter and
device support the core features and limits of the spec.
Scroll anchoring priority candidate fix
Currently, the scroll anchoring algorithm selects priority candidates when they are available as anchor targets. The priority candidates are currently a focused editable element and find-in-page highlights. This can cause suboptimal user experience if there is a large focused contenteditable element that has content changed offscreen (the cursor ends up being shifted as a consequence). This fix changes the algorithm: instead of selecting the priority candidate as the anchor, use the candidate as the scope or root of the regular anchor selection algorithm that selects the deepest onscreen element as the anchor.
Support the async
attribute for SVG <script>
elements
The SVGScriptElement
interface in SVG 2.0 introduces the async
attribute,
similar to the HTMLScriptElement
. This attribute allows scripts to be executed
asynchronously, improving the performance and responsiveness of web applications
that use SVG.
On-device Web Speech API
This feature adds on-device speech recognition support to the Web Speech API, allowing websites to ensure that neither audio nor transcribed speech are sent to a third-party service for processing. Websites can query the availability of on-device speech recognition for specific languages, prompt users to install the necessary resources for on-device speech recognition, and choose between on-device or cloud-based speech recognition as needed.
Clear window.name
for cross-site navigations that switch browsing context group
The value of the window.name
property is currently preserved throughout the
lifetime of a tab, even with navigation that switches browsing context groups,
which can leak information and potentially be used as a tracking vector.
Clearing the window.name
property addresses this issue. This should be a low
risk change since looking up a browsing context by name already doesn’t work if
it's in another browsing context group, so the name isn't actually useful.
Enterprise Policy: ClearWindowNameCrossSiteBrowsing
(will stop working in
Chrome 142).
Web app scope extensions
Adds a "scope_extensions"
web app
manifest field that enables web apps to extend their scope to other origins.
This allows sites that control multiple subdomains and top level domains to be
presented as a single web app. Requires listed origins to confirm association
with the web app using a .well-known/web-app-origin-association
configuration
file.
Specification-compliant JSON MIME type detection
Chromium now recognizes all valid JSON MIME types as defined by the WHATWG
mimesniff specification. This includes any MIME type whose subtype ends with
+json
, in addition to the traditional application/json
and text/json
. This
change ensures that web APIs and features relying on JSON detection behave
consistently with the web platform standard and other browsers. A key motivation
for this change is to fix JSON module import behavior, where previously valid
JSON MIME types like text/html+json
and image/svg+json
would fail to load as
modules.
Private Aggregation API: aggregate error reporting
There are a range of error conditions that can be hit when using the Private Aggregation API. For example, the privacy budget could run out, preventing any further histogram contributions. This feature allows developers to register histogram contributions that should only be sent if a particular type of error occurs. This feature supports measuring the frequency of the error conditions and to split these measurements on relevant developer-specified dimensions (e.g. version of deployed code). As the errors themselves may be cross-site information, we cannot simply expose them to the page for users without third-party cookies. Instead, this feature reuses the existing aggregate, noised reporting pipelines through the Aggregation Service.
Crash Reporting API: Specify crash-reporting to receive only crash reports
This feature ensures developers receive only crash reports by specifying the
endpoint named crash-reporting
. By default, crash reports are delivered to
the default
endpoint which receives many other kinds of reports besides crash
reports. Developers can supply a separate URL to the well-known endpoint named
crash-reporting
, to direct crash reports there, instead of the default
endpoint.
Reduce fingerprinting in Accept-Language
header information
Reduces the amount of information the Accept-Language
header value string
exposes in HTTP requests and in navigator.languages
. Instead of sending a full
list of the user's preferred languages on every HTTP request with the
Accept-Language
header. We now send the user’s most preferred language in the
Accept-Language
header. To minimize compatibility risks, the initial launch
reduces the information in the HTTP header, we’ll reduce the related
navigator.languages
JavaScript getters in the future.
Fire error event instead of throwing for CSP blocked worker
When blocked by Content Security Policy (CSP), Chrome currently throws a
SecurityError
from the constructor of Worker and SharedWorker. The
specification requires CSP to be checked as part of fetch and fires error events
asynchronously instead of throwing an exception when a script runs new
Worker(url)
or new SharedWorker(url)
. This change makes Chrome specification
conformant: not throwing during constructor and firing error events
asynchronously.
Audio Level for RTC Encoded Frames
Exposes to the web the audio level of an encoded frame transmitted with
RTCPeerConnection
and exposed using WebRTC Encoded Transform.
New origin trials
In Chrome 139 you can opt into the following new origin trials.
Prompt API
The Prompt API is designed for interacting with an AI language model using text, image, and audio inputs. It supports various use cases, from generating image captions and performing visual searches to transcribing audio, classifying sound events, generating text following specific instructions, and extracting information or insights from text. It supports structured outputs which ensure that responses adhere to a predefined format, typically expressed as a JSON schema, to enhance response conformance and facilitate seamless integration with downstream applications that require standardized output formats. This API is also exposed in Chrome Extensions. This origin trial is for exposure on the web.
Full frame rate render blocking attribute
We propose to add a new render blocking token full-frame-rate to the blocking attributes. When the renderer is blocked with the full-frame-rate token, the renderer will work at a lower frame rate so as to reserve more resources for loading.
WebGPU Compatibility mode
Adds an opt-in, lightly restricted subset of the WebGPU API capable of running
older graphics APIs such as OpenGL and Direct3D11. By opting into this mode and
obeying its constraints, developers can extend the reach of their WebGPU
applications to many older devices that do not have the modern, explicit
graphics APIs that core WebGPU requires. For simple applications, the only
required change is to specify the "compatibility"
featureLevel when calling
requestAdapter
. For more advanced applications, some modifications may be
necessary to accommodate the mode's restrictions. Since Compatibility mode is a
subset, the resulting applications are also valid WebGPU Core applications and
will run even on user agents that do not support Compatibility mode.
Deprecations and removals
This version of Chrome introduces the deprecations and removals listed below. Visit ChromeStatus.com for lists of planned deprecations, current deprecations and previous removals.
This release of Chrome removes two features.
Remove support for macOS 11
Chrome 138 is the last release to support macOS 11. From Chrome 139 macOS 11 is not supported, as it is outside of its support window with Apple. Running on a supported operating system is essential to maintaining security. On Macs running macOS 11, Chrome will continue to work, showing a warning infobar, but will not update any further. If a user wishes to update Chrome, they need to update their computer to a supported version of macOS. For new installations of Chrome 139 and up, macOS 12 or greater will be required.
Remove auto-detection of ISO-2022-JP charset in HTML
There are known security issues around charset auto-detection for ISO-2022-JP. Given that the usage is very low, and Safari does not support auto-detection of ISO-2022-JP, Chrome removes support for it to eliminate the security issues.