Stable release date: March 4th, 2025
Unless otherwise noted, the following changes apply to Chrome 134 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
HTML and DOM
Customizable <select>
Element
Customizable <select>
allows developers to take complete control of the
rendering of <select>
elements by adding the appearance: base-select
CSS
property and value.
This feature relies on the SelectParserRelaxation
flag, which changes the HTML
parser to allow more tags within the <select>
tag.
Tracking bug #40146374 | ChromeStatus.com entry | Spec
Select parser relaxation
This change makes the HTML parser allow additional tags in <select>
besides
<option>
, <optgroup>
, and <hr>
.
This feature is gated by the temporary policy (SelectParserRelaxationEnabled
).
This is a temporary transition period, and the policy will stop working from Chrome 141.
If you are experiencing problems that you believe are caused by this change, there's a reverse origin trial to disable the parser relaxation.
Tracking bug #335456114 | ChromeStatus.com entry | Spec
Dialog light dismiss
One of the nice features of the Popover API is its light dismiss behavior.
This behavior is now part of <dialog>
, with a new
closedby
attribute controlling the behavior:
<dialog closedby="none">
: No user-triggered closing of dialogs at all.<dialog closedby="closerequest">
: Pressing Esc (or other close trigger) closes the dialog<dialog closedby="any">
: Clicking outside the dialog, or pressing Esc, closes the dialog. Akin topopover="auto"
behavior.
Tracking bug #376516550 | ChromeStatus.com entry | Spec
CSS
CSS highlight inheritance
With CSS highlight inheritance, the CSS highlight pseudo-classes, such as
::selection
and ::highlight
, inherit their properties through the pseudo
highlight chain, rather than the element chain.
The result is a more intuitive model for inheritance of properties in highlights.
PWA
Document subtitle (Fix PWA app titles)
This feature allows to specify complementary information about the current window of an installed running PWA. It adds a subtitle to the page to provide contextual information that is displayed in the window's title bar. This replaces the text contained in the HTML title element.
Tracking bug #1351682 | ChromeStatus.com entry | Spec
User link capturing on PWAs
Web links automatically direct users to installed web apps.
To better align with users' expectations around installed experiences,
Chrome makes it easier to move between the browser and installed web apps.
When the user clicks a link that could be handled by an installed web app,
the link will open in that installed web app.
Users can change this behavior through the installed web app's settings.
Developers can control this behavior with the
launch_handler
manifest property,
and can reference this
developer documentation
for more information about how
deep linking works with installed web apps.
Performance
Document-Policy: expect-no-linked-resources
The expect-no-linked-resources
configuration point in Document Policy allows a
document to hint to the user agent to better optimize its loading sequence, such
as not using the default speculative parsing behavior.
User Agents have implemented speculative parsing of HTML to speculatively fetch resources that are present in the HTML markup, to speed up page loading. For the vast majority of pages on the Web that have resources declared in the HTML markup, the optimization is beneficial and the cost paid in determining such resources is a sound tradeoff. However, the following scenarios might result in a sub-optimal performance tradeoff versus the explicit time spent parsing HTML for determining sub resources to fetch:
- Pages that don't have any resources declared in the HTML.
- Large HTML pages with minimal or no resource loads that could explicitly control preloading resources using other preload mechanisms available.
The expect-no-linked-resources
Document-Policy hints the User Agent that it may
choose to optimize out the time spent in such sub resource determination.
Tracking bug #365632977 | ChromeStatus.com entry | Spec
Explicit resource management (async)
These features address a common pattern in software development regarding the lifetime and management of various resources (for example memory and I/O). This pattern generally includes the allocation of a resource and the ability to explicitly release critical resources.
Tracking bug #42203814 | ChromeStatus.com entry | Spec
Explicit resource management (sync)
These features address a common pattern in software development regarding the lifetime and management of various resources (for example memory and I/O). This pattern generally includes the allocation of a resource and the ability to explicitly release critical resources.
Tracking bug #42203506 | ChromeStatus.com entry | Spec
Extend the console.timeStamp
API to support measurements and presentation options
Extends the console.timeStamp()
API, in a backwards-compatible
manner, to provide a high-performance method for instrumenting applications and
surfacing timing data to the Performance panel in DevTools.
Timing entries added with the API can have a custom timestamp, duration and presentation options (track, swimlane, and color).
Web APIs
Allow reading interest groups in Shared Storage Worklet
Adss an interestGroups()
method to the shared storage worklet, to return the
Protected Audience interest groups associated with the shared storage origin's
owner, with some additional metadata.
This API provides the Protected Audience buyer with a better picture of what's happening with their users, allowing for Private Aggregation reports.
Attribution reporting Feature: Remove aggregatable report limit when trigger context ID is non-null
This change is based on API caller feedback and the need for being able to measure a higher number of conversion events for certain user flows.
Currently the API has a limit that allows up to 20 aggregatable reports to be generated per source registration which is restrictive for use cases where a user may have a longer user journey. This change removes the aggregatable report limit when a trigger context ID is provided as part of the registration. The removal of this limit is restricted to only when the trigger context ID is specified, because when it is specified the API applies a higher rate of null reports which helps to protect against cross-site information leaking through report counts.
Additionally, aggregatable reports will still be bound by other limits that restrict the total amount of information that can be measured, such as the L1 contribution budget (65,536) per source and the attribution rate limit.
Bounce tracking mitigations on HTTP Cache
Bounce tracking mitigations for the HTTP cache is an extension to existing anti-bounce-tracking behavior. It removes the requirement that a suspected tracking site must have performed storage access in order to activate bounce tracking mitigations.
Chrome's initially proposed bounce tracking mitigation solution triggers when a site accesses browser storage (for example, in cookies) during a redirect flow. However, bounce trackers can systematically circumvent such mitigations by using the HTTP cache to preserve data. By relaxing the triggering conditions for bounce tracking mitigations, the browser should be able to catch bounce trackers using the HTTP cache.
Tracking bug #40264244 | ChromeStatus.com entry | Spec
LLM-powered on-device detection of abusive notifications on Android
This launch aims to hide the contents of notifications that are suspected to be abusive. The user will then have the options to dismiss, show the notification, or unsubscribe from the origin. This detection is to be done by an on-device model.
OffscreenCanvas
getContextAttributes
Add the getContextAttributes
interface from CanvasRenderingContext2D
to
OffscreenCanvasRenderingContext2D
.
Tracking bug #388437261 | ChromeStatus.com entry | Spec
Private Aggregation API: per-context contribution limits for Shared Storage callers
Enables Shared Storage callers to customize the number of contributions per Private Aggregation report.
This feature enables Shared Storage callers to configure per-context
contribution limits with a new field, maxContributions
. Callers set this field
to override the default number of contributions per report—larger and smaller
numbers will both be permitted. Chrome will accept values of maxContributions
between 1 and 1000 inclusive; larger values will be interpreted as 1000.
Due to padding, the size of each report's payload will be roughly proportional to the chosen number of contributions per report. We expect that opting into larger reports will increase the cost of operating the Aggregation Service.
Protected Audience callers won't be affected by this feature. However, we are planning to add support for customizing the number of contributions for Protected Audience reports in future features.
Tracking bug #376707230 | ChromeStatus.com entry | Spec
Support Web Locks API in Shared Storage
Integrates the Web Locks API into Shared Storage. This prevents scenarios such as where
cross-site reach measurement can result in duplicate reporting, due to the
potential race conditions within the get()
and set()
logic.
This change:
- Introduces
navigator.locks.request
to the worklet environment. - Introduces
{ withLock: <resource>}
option to all modifier methods. - Introduces a batch modify method:
sharedStorage.batchUpdate(methods, options)
. This method, with thewithLock
option, allows multiple modifier methods to be executed atomically, enabling use cases where a website needs to maintain consistency while updating data organized across multiple keys.
Tracking bug #373899210 | ChromeStatus.com entry
Rendering and graphics
Support ImageSmoothingQuality
in PaintCanvas
Add support for the imageSmoothingQuality
attribute on Paint Canvas.
This lets you choose the quality or performance tradeoff when scaling images.
There are three options in total for imageSmoothingQuality
: low
, medium
and high
.
Tracking bug #None | ChromeStatus.com entry | Spec
WebGPU subgroups
Adds subgroup functionality to WebGPU. Subgroup operations perform SIMT operations to provide efficient communication and data sharing among groups of invocations. These operations can be used to accelerate applications by reducing memory overheads incurred by inter-invocation communication.
Origin trials
Digital Credential API
Websites can and do get credentials from mobile wallet apps through a variety of mechanisms today, for example, custom URL handlers and QR code scanning. This feature lets sites request identity information from wallets using Android's IdentityCredential
CredMan
system. It is extensible to support multiple credential formats (for example, ISO mDoc and W3C verifiable credential) and allows multiple wallet apps to be used. Mechanisms are being added to help reduce the risk of ecosystem-scale abuse of real-world identity.
The origin trial starting in Chrome 134 adds support for this API on desktop platform, where Chrome on Desktop will securely communicate with the digital wallet on the Android phone to fetch the requested credentials.
Origin Trial | Tracking bug #40257092 | ChromeStatus.com entry | Spec
Deprecation trial for SelectParserRelaxation
This is a deprecation trial, which re-enables the old parser behavior for parsing <select>
tags. Under that old behavior, non-supported content is silently discarded and not included in the DOM content underneath the <select>
. This trial can be used in case the new behavior enabled from Chrome 135 breaks a site.
Origin Trial | ChromeStatus.com entry
Deprecations and removals
Remove nonstandard getUserMedia
audio constraints
Blink supports a number of nonstandard goog
-prefixed constraints for
getUserMedia
from some time before constraints were properly standardized.
Usage has gone down significantly to between 0.000001% to 0.0009% (depending on the constraint) and some of them don't even have an effect due to changes in the Chromium audio-capture stack. Soon none of them will have any effect due to other upcoming changes.
We don't expect any major regressions due to this change. Applications using these constraints will continue to work, but will get audio with default settings (as if no constraints were passed). They can opt to migrate to standard constraints.