Chrome 139

Stable release date: August 5th, 2025

Unless otherwise noted, the following changes apply to Chrome 139 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.

CSS and UI

Short-circuiting var() and attr()

When the fallback is not taken, var() and attr() functions evaluate without looking for cycles in that fallback.

ChromeStatus.com entry

Support font-feature-settings descriptor in @font-face rule

This feature supports the string-based syntax for font-feature-settings as defined in CSS Fonts Level 4. Invalid or unrecognized feature tags will be ignored per specification. No binary or non-standard forms are supported.

As OpenType fonts become more widely adopted, this enhancement will improve typographic control, reduce redundancy, and support a more scalable, modern approach to web design.

Tracking bug #40398871 | ChromeStatus.com entry | Spec

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.

Tracking bug #325504770 | ChromeStatus.com entry | Spec

Continue running transitions when switching to 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 and easing.

Chrome 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. This change makes Chrome consistent with Safari and Firefox, allowing active transitions to continue running, until their property value changes triggering a new transition update.

ChromeStatus.com entry | Spec

Corner shaping (corner-shape, superellipse, squircle)

Enable styling corners, on top of the existing border-radius, by expressing the shape and curvature of the corner as a superellipse.

This allows shapes like squircles, notches, and scoops, and animating between them.

Tracking bug #393145930 | ChromeStatus.com entry | Spec

Add font-width property and descriptor and make font-stretch a legacy alias

Support async attribute for SVG <script> element

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.

Tracking bug #40067618 | ChromeStatus.com entry | Spec

The 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, an ESC key press), recently a requestClose() JavaScript function was added which also fires the cancel event.

The request-close command brings that new ability to the declarative invoker commands API.

Tracking bug #400647849 | ChromeStatus.com entry | Spec

Scroll anchoring priority candidate fix

Changes the scroll anchoring algorithm. Instead of selecting the priority candidate as the anchor, choose the candidate as the scope or root of the regular anchor selection algorithm which will select the deepest onscreen element as the anchor.

ChromeStatus.com entry

Device

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.

Tracking bug #410607163 | ChromeStatus.com entry | Spec

DOM

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.

Tracking bug #40228234 | ChromeStatus.com entry | Spec

Graphics

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.

Tracking bug #342840940 | ChromeStatus.com entry | Spec

Secure Payment Confirmation (SPC)

The securePaymentConfirmationAvailability API

This is a JavaScript API to provide an easier way to check if the Secure Payment Confirmation (SPC) feature is available. With this API, the only way to determine SPC's availability was to create a PaymentRequest with the required parameters, which is clunky and difficult in the case where a developer wants to check for SPC before starting to process a payment.

Tracking bug #40258712 | ChromeStatus.com entry | Spec

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.

Tracking bug #377278827 | ChromeStatus.com entry | Spec

On-device AI

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.

ChromeStatus.com entry | Spec

Clear window name for cross-site navigations that switches browsing context group

Clears the value of the window.name property when navigation switches browsing context groups, to avoid leaking information that could be used as a tracking vector.

Tracking bug #1090128 | ChromeStatus.com entry | Spec

Network

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 using the Accept-Language header, Chrome only sends the user's most preferred language.

Tracking bug #1306905 | ChromeStatus.com entry

Randomize TCP port allocation on Windows

This launch enables TCP port randomization on versions of Windows (2020 or later) where we don't expect to see issues with re-use of prior ports occurring too fast (causing rejection due to timeouts on port re-use). The rapid port re-use issue arises from the Birthday problem, where the probability of randomly re-picking a port already seen rapidly converges with 100% for each new port chosen when compared to port re-use in a sequential model.

Tracking bug #40744069 | ChromeStatus.com entry

Performance

Faster background freezing on Android

Shortens the time to freezing background pages (and associated workers) from five minutes to one minute on Android.

Tracking bug #435623337 | ChromeStatus.com entry

Security

Fire error event for Content Security Policy (CSP) blocked worker

Makes Chrome conform to the specification, checking the CSP during fetch and firing the error event asynchronously instead of throwing exception when script runs "new Worker(url)" or "new SharedWorker(url)".

Tracking bug #41285169 | ChromeStatus.com entry | Spec

WebRTC

Audio level for RTC encoded frames

This feature exposes to the web the audio level of an encoded frame transmitted using RTCPeerConnection and exposed using WebRTC encoded transform.

Tracking bug #418116079 | ChromeStatus.com entry | Spec

Web APIs

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.

Tracking bug #detail?id=1250011 | ChromeStatus.com entry | Spec

Specification-compliant JSON MIME type detection

Chrome 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 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.

ChromeStatus.com entry | Spec

WebGPU core-features-and-limits

The core-features-and-limits feature signifies a WebGPU adapter and device support the core features and limits of the spec.

Tracking bug #418025721 | ChromeStatus.com entry | Spec

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.

Tracking bug #414723480 | ChromeStatus.com entry | Spec

Origin trials

Prompt API

An API 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 feature entry tracks the exposure on the web. An enterprise policy (GenAILocalFoundationalModelSettings) is available to disable the underlying model downloading which would render this API unavailable.

Origin Trial | Origin trial blog post | Tracking bug #417530643 | ChromeStatus.com entry

Extended lifetime shared workers

This adds a new option, extendedLifetime: true, to the SharedWorker constructor. This requests that the shared worker be kept alive even after all current clients have unloaded. The primary use case is to allow pages to perform asynchronous work that requires JavaScript after a page unloads, without needing to rely on a service worker.

Origin Trial | Origin trial blog post | Tracking bug #400473072 | ChromeStatus.com entry

SoftNavigation performance entry

Exposes the (experimental) soft navigation heuristics to web developers, using both PerformanceObserver and the performance timeline.

This feature reports two new performance entries:

  • soft-navigation, for user interactions which navigate the page. Defines a new timeOrigin to help slice the performance timeline.
  • interaction-contentful-paint, which reports on the loading performance of interactions (beyond just next paint), used as LCP for soft-navigations.

Origin Trial | Origin trial blog post | Tracking bug #1338390 | ChromeStatus.com entry | Spec

Web Authentication immediate mediation

A mediation mode for navigator.credentials.get() that causes browser sign-in UI to be displayed to the user if there is a passkey or password for the site that is immediately known to the browser. Otherwise, it rejects the with NotAllowedError if there is no such credential available. This allows the site to avoid showing a sign-in page if the browser can offer a choice of sign-in credentials that are likely to succeed, while still allowing a sign-in page flow for cases where there are no such credentials.

Tracking bug #408002783 | ChromeStatus.com entry | Spec

Full frame rate render blocking attribute

Adds 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.

Origin Trial | Tracking bug #397832388 | ChromeStatus.com entry

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 don't have the modern, explicit graphics APIs that core WebGPU requires.

Origin Trial | Tracking bug #40266903 | ChromeStatus.com entry | Spec

Deprecations and removals

Stop sending Purpose: prefetch header from prefetches and prerenders

Now that prefetches and prerenders are using the Sec-Purpose header for prefetches and prerenders, we will move to remove the legacy Purpose: prefetch header that is still currently passed. This will be behind a feature flag/ kill switch to prevent compat issues.

This will be scoped to speculation rules prefetch, speculation rules prerender, <link rel=prefetch>, and Chrome's non-standard <link rel=prerender>.

Tracking bug #420724819 | ChromeStatus.com entry | Spec

Remove support for macOS 11

Chrome 138 is the last release to support macOS 11. From Chrome 139 macOS 11 is not supported.

On Macs running macOS 11, Chrome will continue to work, showing a warning infobar, but won't update any further. To update Chrome, you need to update their computer to a supported version of macOS.

For new installations from Chrome 139, macOS 12 or greater will be required.

ChromeStatus.com entry

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, support is removed from Chrome 139.

Tracking bug #40089450 | ChromeStatus.com entry