Stable release date: June 24th, 2025
Unless otherwise noted, the following changes apply to Chrome 138 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS and UI
CSS Sign-Related Functions: abs()
, sign()
The sign-related functions abs()
and sign()
compute various functions
related to the sign of their argument.
The abs(A)
function contains one calculation A, and returns the absolute value
of A, as the same type as the input: if A's numeric value is positive or 0⁺,
just A again; otherwise -1 * A.
The sign(A)
function contains one calculation A, and returns -1 if A's numeric
value is negative, +1 if A's numeric value is positive, 0⁺ if A's numeric value
is 0⁺, and 0⁻ if A's numeric value is 0⁻. The return type is a <number>
, made
consistent with the type of the input calculation.
MDN Docs:abs() | Tracking bug #40253181 | ChromeStatus.com entry | Spec
Interpolation progress functional notation: CSS progress()
function
The progress()
functional notation returns a <number>
value representing the
position of one calculation (the progress value) between two other calculations
(the progress start value and progress end value). The progress()
function is
a math function.
Tracking bug #40944203 | ChromeStatus.com entry | Spec
CSS sibling-index()
and sibling-count()
The sibling-index()
and sibling-count()
functions can be used as integers in
CSS property values to style elements based on their position among its
siblings, or the total number of siblings respectively. These functions can be
used directly as integer values, but more interestingly inside calc()
expressions.
Tracking bug #40282719 | ChromeStatus.com entry | Spec
CSS stretch
sizing keyword
A keyword for CSS sizing properties (for example, width
and height
) that lets
elements grow to exactly fill their containing block's available space. It is
similar to '100%', except the resulting size is applied to the element's margin
box instead of the box indicated by box-sizing
. Using this keyword lets the
element keep its margins while still being as large as possible. An
unprefixed version of -webkit-fill-available
.
Tracking bug #41253915 | ChromeStatus.com entry | Spec
CSS env variable for OS-level font scale
Exposes a user's preferred font scale to CSS. Without this, it's not practical for a page to detect if the user has changed their preferred font size using the Operating System's preferences. This CSS environment variable will reflect the scale chosen by the user.
Tracking bug #397737223 | ChromeStatus.com entry | Spec
Devices
Web serial over Bluetooth on Android
This feature lets web pages and web apps connect to serial ports over Bluetooth on Android devices.
Chrome on Android now supports Web Serial API over Bluetooth RFCOMM. Existing
enterprise policies (DefaultSerialGuardSetting
, SerialAllowAllPortsForUrls
,
SerialAllowUsbDevicesForUrls
, SerialAskForUrls
and SerialBlockedForUrls
) on
other platforms are enabled in future_on states for Android. All policies except
SerialAllowUsbDevicesForUrls
will be enabled after the feature is enabled.
SerialAllowUsbDevicesForUrls
will be enabled in a future launch after Android
provides system level support of wired serial ports.
Tracking bug #375245353 | ChromeStatus.com entry | Spec
Viewport Segments Enumeration API
The Viewport Segments API allows developers to adapt their web layout to target foldable devices. The viewport segments defines the position and dimensions of a logically separate region of the viewport. Viewport segments are created when the viewport is split by one or more hardware features (such as a fold or a hinge between separate displays) that act as a divider; segments are the regions of the viewport that can be treated as logically distinct by the developer.
Tracking bug #1039050 | ChromeStatus.com entry | Spec
JavaScript
Update QuotaExceededError
to a DOMException
derived interface
Previously, when the web platform wants to tell you when you've exceeded quota,
it will use DOMException
with the specific name
property set to
QuotaExceededError
. However this does not allow carrying additional
information.
This proposes removing "QuotaExceededError" from the list of built-in
DOMException
names, and instead creates a class name QuotaExceededError
from
the list of built-in DOMException
and has the additional optional properties
quota
and requested
. We propose all instances of specs that throw
"QuotaExceededError" DOMException
s get upgraded to instead throw
QuotaExceededError
s. For now, such specs would leave the quota
and
requested
properties at their default value of null
, but they could
eventually upgrade to include that data, if it's useful for their use case (and
isn't, e.g., a privacy leak).
Web APIs
Translator API
A JavaScript API to provide language translation capabilities to web pages.
Browsers are increasingly offering language translation to their users. Such
translation capabilities can also be useful to web developers. This is
especially the case when browser's built-in translation abilities cannot help.
An enterprise policy (GenAILocalFoundationalModelSettings
) is available to
disable the underlying model downloading which would render this API
unavailable.
MDN Docs | Tracking bug #322229993 | ChromeStatus.com entry | Spec
Language Detector API
A JavaScript API for detecting the language of text, with confidence levels.
An important supplement to translation is language detection. This can be
combined with translation, for example, taking user input in an unknown language and
translating it to a specific target language. Browsers today often already have
language detection capabilities, and we want to offer them to web developers
through a JavaScript API, supplementing the translation API. An enterprise
policy (GenAILocalFoundationalModelSettings
) is available to disable the
underlying model downloading which would render this API unavailable.
MDN Docs | ChromeStatus.com entry | Spec
Summarizer API
Summarizer API is a JavaScript API for producing summaries of input text, backed
by an AI language model. Browsers and operating systems are increasingly
expected to gain access to a language model. By exposing this built-in model, we
avoid every website needing to download their own multi-gigabyte language model,
or send input text to third-party APIs. The summarizer API in particular exposes
a high-level API for interfacing with a language model in order to summarize
inputs for a variety of use cases (GitHub), in a way that does not depend on the
specific language model in question. An enterprise policy
(GenAILocalFoundationalModelSettings
) is available to disable the underlying
model downloading which would render this API unavailable.
MDN Docs | Tracking bug #351744634 | ChromeStatus.com entry | Spec
Escape <
and >
in attributes on serialization
Escape <
and >
in values of attributes on serialization.
This mitigates the risk of mutation XSS attacks, which occur when value of an attribute is interpreted as a start tag token after being serialized and re-parsed.
Crash Reporting API: is_top_level
and visibility_state
This feature adds is_top_level
and visibility_state
string fields to the
crash reporting API body that gets sent to the default reporting endpoint for
crash reports.
Fire the pushsubscriptionchange
event upon resubscription
Fire the pushsubscriptionchange
event in service workers when an origin for
which a push subscription existed in the past, but which was revoked because of
a permission change (from granted to deny/default), is re-granted notification
permission.
The event will be fired with an empty oldSubscription and newSubscription.
Tracking bug #407523313 | ChromeStatus.com entry | Spec
Multimedia
Add support for video frame orientation metadata to WebCodecs
Introduces rotation: int
and flip: bool
values to various video related
interfaces in WebCodecs so that developers can work with frame sources that have
orientation (For example, Android cameras, certain media).
The VideoFrame
interface grows the ability to create VideoFrames
with arbitrary
rotation and flip as well as accessors for this information on the VideoFrame
object.
The VideoDecoderConfig
object gains rotation and flip fields that are emitted on
decoded VideoFrame objects automatically.
The VideoEncoder
class gains mechanisms for passing rotation and flip
information from encode()
to the VideoDecoderConfig
emitted as part of
EncodedVideoChunkMetadata
. If encode()
is called with frames with different
orientations a nonfatal exception will be thrown. configure()
may be used to
reset the allowed orientation.
Tracking bug #40243431 | ChromeStatus.com entry | Spec
Performance
Add prefetchCache
and prerenderCache
to Clear-Site-Data
header
Two new values for the Clear-Site-Data
header to help developers target clearing
the prerender and prefetch cache: "prefetchCache"
and "prerenderCache"
.
Tracking bug #398149359 | ChromeStatus.com entry | Spec
Speculation rules: target_hint
field
This extends speculation rules syntax to allow developers to specify the target_hint field.
This field provides a hint to indicate a target navigable where a prerendered page will eventually be activated. For example, when _blank is specified as a hint, a prerendered page can be activated for a navigable opened by window.open(). The field has no effect on prefetching.
The specification allows this field to accept any strings that are valid as
navigable target name or keyword as the value, but this launch supports only one
of "_self"
or "_blank"
strings. If the hint is not specified, it's treated like
"_self"
is specified.
Tracking bug #40234240 | ChromeStatus.com entry | Spec
Security
Integrity Policy for scripts
Subresource-Integrity (SRI) enables developers to make sure the assets they intend to load are indeed the assets they are loading. But there's no current way for developers to be sure that all of their scripts are validated using SRI.
The Integrity-Policy
header gives developers the ability to assert that every
resource of a given type needs to be integrity-checked. If a resource of that
type is attempted to be loaded without integrity metadata, that attempt will
fail and trigger a violation report.
Service Worker
ServiceWorker support for Speculation Rules Prefetch
This feature enables ServiceWorker-controlled prefetches, that is a speculation
rules prefetch to URLs controlled by a Service Worker. Previously, the prefetch
is cancelled upon detecting a controlling Service Worker, thus subsequent
navigation to the prefetch target is served by the non-prefetch path. This
feature will enable the prefetch request to go through the Service Worker's
fetch handler and the response with the Service Worker interception is cached in
the prefetch cache, resulting in a subsequent navigation being served by the
prefetch cache. Use the enterprise policy
PrefetchWithServiceWorkerEnabled
to control this feature.
Tracking bug #40947546 | ChromeStatus.com entry | Spec
Deprecations and removals
WebGPU: Deprecate GPUAdapter
isFallbackAdapter
attribute
Deprecates the GPUAdapter
isFallbackAdapter
boolean attribute from WebGPU, which
is redundant with the GPUAdapterInfo
isFallbackAdapter
boolean attribute.
This upcoming removal is a minor breaking change as support for fallback
adapters has not yet been implemented in any browser, thereby resulting in both
isFallbackAdapter
attributes consistently returning a falsy value.
Tracking bug #409259074 | ChromeStatus.com entry | Spec
Deprecate asynchronous range removal for Media Source Extensions
The Media Source standard long ago changed to disallow ambiguously defined behavior involving asynchronous range removals:
SourceBuffer.abort()
no longer abortsSourceBuffer.remove()
operations.- Setting
MediaSource.duration
can no longer truncate currently buffered media.
Exceptions will be thrown in both of these cases now.
Safari and Firefox have long shipped this behavior, Chromium is the last browser remaining with the old behavior. Use counters show that around 0.001%-0.005% of page loads hit the deprecated behavior. If a site hits this issue, playback may now break.
Usage of abort()
cancelling removals is increasing, so it's prudent to resolve
this deprecation before more incompatible usage appears.