Chrome 127

Stable release date: July 23rd, 2024

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

CSS

CSS font-size-adjust

The font-size-adjust CSS property provides a way to modify the size of lowercase letters relative to the size of uppercase letters, which defines the overall font-size. This property is useful for situations where font fallback can occur.

Chrome 127 includes the two value syntax to pass in a font metric and a value.

Tracking bug #451346 | ChromeStatus.com entry | Spec

Multi-argument alt text in CSS Generated Content

The CSS content property lets you specify alternative text for accessibility with the following syntax: css .has-before-content::before { content: url("cat.jpg") / "A cute cat"; }

This functionality, where the alt text is given by a single string, is already supported in Chrome. From Chrome 127 the alt text can be given by an arbitrary number of elements, which in addition to strings can be attr() functions or counters. For example:

.has-before-content::before {
  content: url("cat.jpg") / "A cute " attr(data-animal);
}

Note that this feature entry doesn't include the addition of counter support.

ChromeStatus.com entry | Spec

Support for the View Transition API in iframes

From Chrome 127 concurrent same-document view transitions in a main frame and same-origin iframe will be available.

Previously, running a view transition using the document.startViewTransition in a same-origin iframe wouldn't work if the main frame was running a transition at the same time. The iframe's transition would be automatically skipped. Now, both transitions will execute.

View transitions on same-origin cross-document navigations in an iframe will also be supported.

Text size adjust improvements

The text-size-adjust property adjusts font sizes on mobile devices. Values other than auto disable automatic text size adjustments. Percentage values increase the computed size of text.

This makes text-size-adjust more consistent, so it works like a direct multiplier of the font size (and line height). The major changes are:

  • text-size-adjust works with or without a meta viewport.
  • Values other than auto disable all automatic text size adjustments.
  • Percentages apply directly, without any heuristics.
  • Layout bugs are fixed.

Tracking bug #340389272 | ChromeStatus.com entry | Spec

Web APIs

Automatic fullscreen content setting

A new "automatic fullscreen" content setting lets enterprise admins allow sites to enter fullscreen without a user gesture. Users may also allow Isolated Web Apps to use this feature through site settings pages.

Combined with the Window Management permission and unblocked popups, this unlocks valuable fullscreen capabilities:

  • Open a fullscreen popup on another display, from one gesture.
  • Show fullscreen content on multiple displays from one gesture.
  • Show fullscreen content on a new display, when it's connected.
  • Swap fullscreen windows between displays with one gesture.
  • Show fullscreen content after user gesture expiry or consumption.

Demo | Tracking bug #1501130 | ChromeStatus.com entry

WebGPU: GPUAdapter info attribute

Adds a synchronous GPUAdapter info attribute to retrieve the same information about the physical adapter as with the asynchronous GPUAdapter requestAdapterInfo() method.

Tracking bug #335383516 | ChromeStatus.com entry | Spec

Media

Video chapter in MediaMetadata

You can now add individual chapter information, such as the title of the section, its timestamp, and a screenshot image to media metadata. This allows users to navigate through the content of the media.

This will currently only show up in ChromeOS media notifications, and not in Chrome Browser global media controls.

Demo | ChromeStatus.com entry | Spec

Document picture-in-picture: propagate user activation

This makes user activations in a document picture-in-picture window usable inside its opener window and the other way around. This makes it more ergonomic to use user-activation-gated APIs, since often event handlers in the document picture-in-picture window are actually run in the opener's context, so the opener's context needs access to the user gesture.

Demo | Tracking bug #331246719 | ChromeStatus.com entry

JavaScript

Importmap integrity

Imported ES modules can't currently have their integrity checked, and hence cannot run in environments that require Subresource Integrity or with require-sri-for CSP directives.

This feature adds an integrity section to import maps, enabling developers to map ES module URLs to their integrity metadata, and ensure they only load when they match their expected hashes.

Tracking bug #334251999 | ChromeStatus.com entry

Snap Events

Snap Events allow developers to reliably listen for when the snap target of a scroller changes and perform style adjustments as desired.

CSS scroll snap points are often used as a mechanism to create scroll interactive selection components, where selection is determined with JavaScript intersection observers and a scroll end guesstimate. By creating built-in events, the invisible state will become actionable, at the right time, and always correct.

This feature adds two JavaScript events: scrollsnapchange and scrollsnapchanging. The scrollsnapchange event lets developers know, at the completion of a scroll operation (including snapping), that the element to which a scroller is snapped has changed. The scrollsnapchanging event gives developers a hint, during a scroll operation, that the user agent intends to snap the scroll container to a new snap target based on the scrolling input so far.

Privacy

Aggregate Debug Reporting in Attribution Reporting API

This change is so the API can continue to provide some form of debugging information after third-party cookie deprecation. This is a new report type that is not tied to third-party cookies and provides similar debug information. This feature allows API callers to request and receive debug signals in aggregate form. This feature is very similar to current Aggregate Reports supported by the API, except these new reports will be specifically for debug signals.

ChromeStatus.com entry | Spec

Accessibility

Keyboard focusable scroll containers

This feature introduces the following changes:

Scrollers are click-focusable and programmatically-focusable by default. Scrollers without focusable children are keyboard-focusable by default.

This is an important improvement to help make scrollers and contents within scrollers more accessible to all users. You can read more about its benefits in the post Keyboard focusable scrollers. Keyboard focusable scrollers will be enabled by default starting in Chrome 127. If websites need time to adjust to this new feature, there are a few options:

Keyboard focusable scrollers | Tracking bug #1040141 | ChromeStatus.com entry | Spec

Loading

No-Vary-Search support for prerender

Extends No-Vary-Search support to prerender on top of the previous prefetch support. This enables a prerender entry to match even if certain URL query parameters change. The No-Vary-Search HTTP response header declares that some or all parts of a URL's query can be ignored for cache matching purposes.

Tracking bug #41494389 | ChromeStatus.com entry | Spec

New origin trials

Compression dictionary transport with Shared Brotli and Shared Zstandard

This feature adds support for using designated previous responses, as an external dictionary for HTTP responses that compress Brotli or Zstandard.

Origin Trial | Demo | Tracking bug #1413922 | ChromeStatus.com entry | Spec

Deprecate third-party cookies

We intend to deprecate and remove default access to third-party cookies (also known as cross-site cookies), starting with an initial 1% testing period in Q1 2024, followed by a gradual phaseout planned to begin in Q1 2025, subject to addressing any remaining competition concerns of the UK's Competition and Markets Authority.

Phasing out third-party cookies is a central effort to the Privacy Sandbox initiative, which aims to responsibly reduce cross-site tracking on the web (and beyond) while supporting key use cases through new technologies.

Demo | ChromeStatus.com entry | Spec

Partitioning storage, service workers, and communication APIs

From Chrome 115, storage, service workers, and communication APIs are partitioned in third-party contexts. From Chrome 113 to 126, sites were able to take part in a deprecation trial to temporarily unpartition and restore prior behavior of storage, service workers, and communication APIs.

From Chrome 125, non-cookie storage in the Storage Access API is supported, which should address the majority of use cases for unpartitioned storage. Where those use cases aren't met, it is now possible to request a renewal for the DisableThirdPartyStoragePartitioning deprecation trial for an additional 6 milestones, for users on Chrome 127 to 132 (inclusive).

See the Storage Partitioning deprecation trial renewal blog post for more information.

Tracking bug #1191114 | ChromeStatus.com entry

Keyboard focusable scroll containers deprecation trial

This feature introduces the following changes:

Scrollers are click-focusable and programmatically-focusable by default. Scrollers without focusable children are keyboard-focusable by default.

We attempted to ship these changes, and found that a limited number of sites had broken expectations around some of their components. As a result, we had to unship the feature to avoid this breakage. Given the benefits mentioned above, the feature will begin shipping in 127. To allow more time for the affected sites to migrate their components, we are starting a Deprecation Trial. When enabled, this will disable the KeyboardFocusableScrollers feature.

Origin Trial | Keyboard focusable scrollers | Tracking bug #1040141 | ChromeStatus.com entry | Spec

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 three features.

Mutation events

Mutation event support will be disabled by default starting in Chrome 127. Code should be migrated before that date to avoid site breakage. If more time is needed, there are a few options:

  • The Mutation Events deprecation trial (https://developer.chrome.com/origintrials/#/view_trial/919297273937002497) can be used to re-enable the feature for a limited time on a given site. This can be used through Chrome 134, ending March 25, 2025.
  • The MutationEventsEnabled enterprise policy can be used for the same purpose, also through Chrome 134.

See the blog post Mutation events deprecation for more details.

Tracking bug #40268638 | ChromeStatus.com entry | Spec

Restrict "private network requests" for subresources from public websites to secure contexts

Requires that private network requests for subresources from public websites may only be initiated from a secure context. Examples include internet to intranet requests and internet to loopback requests.

This is a first step towards fully implementing Private Network Access.

Tracking bug #986744 | ChromeStatus.com entry | Spec

Remove old CSS custom state syntax

The CSS custom state pseudo-class is being renamed from :--foo to :state(foo). The new syntax, :state(foo), has been enabled by default, therefore we are removing the :--foo syntax.

Firefox and Safari never implemented the old syntax and they have both shipped the new syntax.

Enterprise customers who need more time can use the CSSCustomStateDeprecatedSyntaxEnabled policy. This policy will be removed in Chrome 131.

Tracking bug #41486953 | ChromeStatus.com entry

Further reading

Looking for more? Check out these additional resources.

Download Google Chrome

Download Chrome for Android, Desktop, or iOS.