Chrome 134

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 to popover="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.

ChromeStatus.com entry | Spec

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

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.

ChromeStatus.com entry

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

ChromeStatus.com entry | Spec

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.

ChromeStatus.com entry

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.

ChromeStatus.com entry

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.

ChromeStatus.com entry

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 the withLock 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.

ChromeStatus.com entry | Spec

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.

Tracking bug #377131184 | ChromeStatus.com entry | Spec