Chrome Release Summary

Chrome version: 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0

Chrome 131

Enabled (21) | Origin Trial (6) | Behind a flag (8) | Deprecated (0) | Removed (2)

Enabled by default in 131

This release of Chrome had 21 new features.

@page margin boxes

Add support for page margin boxes, when printing a web document, or exporting it as PDF. @page margin boxes allows an author to define the contents in the margin area of a page, for instance to provide custom headers and footers, rather than using the built-in headers and footers generated by the browser. A margin box is defined via an at-rule inside a CSS @page rule. There are 16 rules defined, one for each page margin box. There's one margin box for each of the 4 corners on the page, and three (start, middle, end) for each of the 4 sides. The appearance and the contents of a margin box are specified with CSS properties inside the at-rule, including the "content" property. Counters are also to be supported, for page numbering. The specification defines two special counter names: "page" for the current page number, and "pages" for the total number of pages. #

This feature was specified in this Spec.

@property support <string> syntax

Support for "<string>" syntax component name for registered custom properties. #

This feature was specified in this Spec.

Attribution-Reporting API: Remove aggregation key identifier size limit for trigger registrations

Currently the aggregation key identifier length limit (https://wicg.github.io/attribution-reporting-api/#max-length-per-aggregation-key-identifier) is checked in both source and trigger registrations. As this limit is not for privacy and it's not persisted in the storage, we are removing this limit in trigger registrations. This is consistent with other fields in the trigger registrations, e.g. filters and scopes, whose size is only checked in source registrations, but not trigger registrations.

This feature was specified in this Spec.

CSS Anchor Positioning: anchor-scope

The anchor-scope property allows limiting the visibility of anchor names to a given subtree. #

This feature was specified in this Spec.

CSS font-variant-emoji

Font-variant-emoji CSS property provides users an easy way to control between colored (emoji-style) and monochromatic (text-style) emoji glyphs presentations. This can be also done by adding an emoji Variation Selector, specifically U+FE0E for text and U+FE0F for emojis, after each emoji codepoint. Using font-variant-emoji CSS property allows web developers to select between emoji style (colored) emoji presentation, text style (monochromatic) emoji presentation and unicode default emoji presentation [0]. This property only affects emojis that are part of a Unicode emoji presentation sequence [1]. [0] https://www.unicode.org/reports/tr51/tr51-25.html#Emoji_Presentation [1] http://www.unicode.org/emoji/charts/emoji-variants.html #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1NyIKm0PnWUwX6j0smDwxDAPSUoiyBHPL95oH2lvjjpc/edit?usp=sharing&resourcekey=0-ubYsGJCgRSQnT9i_guM64g

Samples: https://developer.mozilla.org/en-US/docs/Web/CSS/font-variant-emoji

Capture all screens

Capture all the screens currently connected to the device using getAllScreensMedia(). Calling getDisplayMedia() multiple times requires multiple user gestures, burdens the user with choosing the next screen each time, and does not guarantee to the app that all the screens were selected. getAllScreensMedia() improves on all of these fronts. (As this feature has extreme privacy ramifications, it is only exposed behind the MultiScreenCaptureAllowedForUrls enterprise policy, and users are warned before recording even starts, that recording *could* start at some point. The API will only work for origins that are specified in the MultiScreenCaptureAllowedForUrls allowlist. Any origin not specified there, will not have access to it.) #

This feature was specified in this Spec.

Resources

Docs: https://screen-share.github.io/capture-all-screenshttps://github.com/screen-share/capture-all-screens/blob/main/README.mdhttps://docs.google.com/document/d/1XB8rQRnY5N8G2PeEcNJpVO0q22CutvwW8GGKCZ1z_vc/edit?usp=sharing

Samples: https://honey-quartz-fukuiraptor.glitch.mehttps://github.com/screen-share/capture-all-screens/blob/main/HOWTO.mdhttps://github.com/screen-share/capture-all-screens/blob/main/README.md

Direct Sockets API

Allows Isolated Web Apps to establish direct transmission control protocol (TCP) and user datagram protocol (UDP) communications with network devices and systems as well as listen to and accept incoming connections. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://github.com/GoogleChromeLabs/telnet-client

Document picture-in-picture: copy document mode

This makes the document picture-in-picture Document's mode (quirks mode vs no-quirks-mode) match the mode of the opener Document. Currently, the empty document is quirks mode by default, so this allows websites that rely on non-quirks mode to still function properly within a document picture-in-picture window. #

This feature was specified in this Spec.

Exempt Speculation-Rules Header from CSP restrictions

This is somewhat of a bug-fix, but it's a web-exposed bug fix which deserves full web platform security review, so we're using the Intent to Ship process. When we initially shipped the Speculation-Rules header, we reused much of the architecture from the <script type=speculationrules> implementation, and thus it was blocked by CSP policies that blocked <script> elements. This has caused some friction among web developers adopting the Speculation-Rules header, who expected CSP to only apply to <script>s. After consulting with Google and Chrome security teams, we realized our initial implementation was a mistake, as CSP's script policies are meant to protect against injection of scripts into HTML, and the CSP threat model doesn't relate to HTTP headers. As such, we're updating the integration between speculation rules and CSP so that CSP only applies to <script type=speculationrules>, and not to the Speculation-Rules header.

This feature was specified in this Spec.

FedCM as a trust signal for the Storage Access API

Reconciles the FedCM and Storage Access APIs by making a prior FedCM grant a valid reason to automatically approve a storage access request. When a user grants permission for using their identity with a 3rd party Identity Provider (IdP) on a Relying Party (RP), many IdPs require third-party cookies to function correctly and securely. This proposal aims to satisfy that requirement in a private and secure manner by updating the Storage Access API (SAA) permission checks to not only accept the permission grant that is given by a storage access prompt, but also the permission grant that is given by a FedCM prompt. A key property of this mechanism is limiting the grant to cases explicitly allowed by the RP via the FedCM permissions policy, enforcing a per-frame control for the RP and preventing passive surveillance by the IdP beyond the capabilities that FedCM already grants, as outlined in the Privacy Considerations. #

This feature was specified in this Spec.

Improvements to styling structure of <details> and <summary> elements

Support more CSS styling for the structure of <details> and <summary> elements to allow these elements to be used in more cases where disclosure widgets or accordion widgets are built on the web. In particular, this change removes restrictions that prevented setting the display property on these elements, and adds a ::details-content pseudo-element to style the container for the part that expands and collapses. #

This feature was specified in this Spec.

Private Aggregation API: increase contribution limit to 100 for Protected Audience callers

Enables Protected Audience script runners to make up to 100 contributions per Private Aggregation report, compared to the current limit of 20. Private Aggregation limits the number of histogram contributions that can be embedded in a single aggregatable report, dropping any additional contributions. Shared Storage callers can work around the limit by invoking another Shared Storage operation. However, Protected Audience callers have no persistent storage, so they lose their excess contributions at the end of their auction. Note that this change is privacy neutral as the API's contributions are still limited by the same privacy budget. Due to padding, each Protected Audience report will have a larger payload, even if it did not need the larger contribution limit. We expect that these larger reports will increase the cost of operating the Aggregation Service. Please reach out with any feedback. #

This feature was specified in this Spec.

Support currentcolor in Relative Color Syntax

Allow relative colors in CSS (using the 'from' keyword) to use 'currentcolor' as a base. This will make it easy for web developers to set complementary colors, based on an element's text color, for that element's borders, shadows, backgrounds, etc. This feature also includes use cases where color functions are nested with a dependency on currentcolor, for example `color-mix(in srgb, rgb(from currentcolor r g b), white))` or `rgb(from rgb(from currentcolor 1 g b) b g r)`. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1568wVjrIRbrU9_O37gPu10cj0CDWRiAc6ZMk9t0JpXs/edit

No linked samples

Support external SVG resources for 'clip-path', 'fill', 'stroke' and 'marker-*' properties

Allow external references for clip paths, markers, and paint servers (for the 'fill' and 'stroke' properties). For example, clip-path: url("resources.svg#myPath"). #

This feature was specified in this Spec.

WebGPU: Clip Distances

Adds the optional GPU feature "clip-distances" that allows setting user-defined clip distances in vertex shader outputs. This technique is particularly useful for the applications that need to clip all vertices in a scene that are beyond a user-defined plane, such as many CAD applications. #

This feature was specified in this Spec.

WebGPU: GPUCanvasContext getConfiguration()

Functionality added to the WebGPU spec after its first shipment in a browser. Once GPUCanvasContext configure() has been called with a configuration dictionary, the GPUCanvasContext getConfiguration() method lets developers check the canvas context configuration. It includes GPU device, format, usage, viewFormats, colorSpace, toneMapping, and alphaMode members. As discussed in https://github.com/gpuweb/gpuweb/issues/4828, web apps can use it to detect whether HDR canvas is supported in WebGPU. #

This feature was specified in this Spec.

WebHID on Dedicated Workers

WebHID is enabled inside dedicated worker contexts. This allows developers to perform heavy I/O and processing of data from a HID device on a separate thread to reduce the performance impact on the main thread. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://webhid-worker.glitch.me

WebXr hand input module - Level 1

Exposes hand joint data on XrInputSources for use during a WebXr session. This allows developers to have more fine grained interactions during WebXr sessions. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://immersive-web.github.io/webxr-samples/immersive-hands.html

[WebRTC] RTCRtpEncodingParameters.scaleResolutionDownTo

An API that configures WebRTC encoders to scale input frames if they are greater than the specified maxWidth and maxHeight. This API is similar to scaleResolutionDownBy except that resolution constraints are expressed in absolute terms (e.g. 640x360) as opposed to relative terms (e.g. scale down by 2), avoiding race conditions related to changing input frame size on the fly.

This feature was specified in this Spec.

noopener-allow-popups COOP value

Some origins can contain different applications with different levels of security requirements. In those cases, it can be beneficial to prevent scripts running in one application from being able to open and script pages of another same-origin application. In such cases, it can be beneficial for a document to ensure its opener cannot script it, even if the opener document is a same-origin one. The `noopener-allow-popups` Cross-Origin-Opener-Policy value will allow documents to define that. #

This feature was specified in this Spec.

text-size-adjust improvements

text-size-adjust 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. * non-auto values disable ALL automatic text size adjustments. * percentages apply directly, without any heuristics. * layout bugs are fixed. #

This feature was specified in this Spec.

Origin Trials in-progress in 131

This release of Chrome had 6 new origin trials.

Deprecate getters of Intl Locale Info

Intl Locale Info API is a Stage 3 ECMAScript TC39 proposal to enhance the Intl.Locale object by exposing Locale information, such as week data (first day in a week, weekend start day, weekend end day, minimun day in the first week), and text direction hour cycle used in the locale. https://github.com/tc39/proposal-intl-locale-info We ship our implementation in m99 (https://chromestatus.com/feature/5566859262820352 ) . But later on the propose made some change in Stage 3 and move several getters to functions. We need to remove the deprecated getters and relaunch the renamed functions #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1BSpa-LKE69LL1g5CHZ3G06XEfffauwS24atfSUQiIDY/edit

Samples: https://github.com/tc39/proposal-intl-locale-info

Playback Statistics API for WebAudio

This feature adds an AudioContext.playbackStats attribute which returns an AudioPlaybackStats object. This object provides audio playback statistics such as average latency, minimum/maximum latency, underrun duration, and underrun count. This API allows web applications to monitor audio playback quality and detect glitches. Note: This feature was previously tracked as AudioContext.playoutStats. It has been renamed to AudioContext.playbackStats to align with the final Web Audio API specification. The old name is supported as a deprecated alias for backward compatibility. #

This feature was specified in this Spec.

ServiceWorkerAutoPreload browser mode

**ServiceWorkerAutoPreload** is a mode where the browser issues the network request in parallel with the service worker bootstrap. If the fetch handler returns the response with `respondWith()`, the browser consumes the network request result inside the fetch handler. If the fetch handler result is fallback, it passes the network response directly to the browser. ServiceWorkerAutoPreload is an optional browser optimization that changes the existing service worker behavior. Admins can control this feature using an enterprise policy called [ServiceWorkerAutoPreloadEnabled](https://chromeenterprise.google/policies/#ServiceWorkerAutoPreloadEnabled). #

This feature was specified in this Spec.

ServiceWorkerStaticRouterTimingInfo

Adds timing information for ServiceWorker Static routing API, exposed in navigation timing API and resource timing API for developer use. Service Worker provides timing information to mark certain points in time. We add two Static routing API-relevant timing information: RouterEvaluationStart, time to start matching a request with registered router rules, and CacheLookupStart, time to start looking up the cache storage if the source is "cache". In addition, we also add two router source information, the matched router source and the final router source. #

This feature was specified in this 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 multilingual inputs for a variety of use cases, 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. Language support log: - Chrome M139 and earlier only supported 'en' - Chrome M140 added support for 'es' and 'ja' #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://chrome.dev/web-ai-demos/summarization-api-playground

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

This feature was specified in this Spec.

Flagged features in 131

This release of Chrome had 8 are available behind a flag.

:has-slotted pseudo selector

The :has-slotted pseudo class represents a slot element with slotted content, such as a text node or element. This can be used to style elements based on whether or not they are using slot fallback content. #

This feature was specified in this Spec.

CSS Anchor Positioning: allow anchor-size() in inset and margin Properties

Allow anchor-size() values for inset and margin properties. Originally, anchor-size() was only allowed in sizing properties. The specification was changed to allow anchor-size() in insets and margins as well. #

This feature was specified in this Spec.

Deprecate getters of Intl Locale Info

Intl Locale Info API is a Stage 3 ECMAScript TC39 proposal to enhance the Intl.Locale object by exposing Locale information, such as week data (first day in a week, weekend start day, weekend end day, minimun day in the first week), and text direction hour cycle used in the locale. https://github.com/tc39/proposal-intl-locale-info We ship our implementation in m99 (https://chromestatus.com/feature/5566859262820352 ) . But later on the propose made some change in Stage 3 and move several getters to functions. We need to remove the deprecated getters and relaunch the renamed functions #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1BSpa-LKE69LL1g5CHZ3G06XEfffauwS24atfSUQiIDY/edit

Samples: https://github.com/tc39/proposal-intl-locale-info

Dialog Toggle Events

It is useful for web authors do determine when their <dialog> elements open and close. popover already has `ToggleEvent` which is dispatched when a popover opens or closes, but <dialog> does not. The current way to detect when a <dialog> opens is to register a mutation observer to check for open, however, this is quite a lot of work where an event would be easier. This change incorporates the same `ToggleEvent`s that popovers dispatch, but for `<dialog>` elements: when `showModal` or `show` is called, <dialog> dispatches a ToggleEvent with newState=open. When a dialog is closed (via form or button or closewatcher) it should dispatch a ToggleEvent with newState=closed. #

This feature was specified in this Spec.

Explicit resource management (async)

This feature addresses a common pattern in software development regarding the lifetime and management of various resources (memory, I/O, etc.). This pattern generally includes the allocation of a resource and the ability to explicitly release critical resources. #

This feature was specified in this Spec.

Explicit resource management (sync)

This feature addresses a common pattern in software development regarding the lifetime and management of various resources (memory, I/O, etc.). This pattern generally includes the allocation of a resource and the ability to explicitly release critical resources. #

This feature was specified in this Spec.

Nested pseudo elements styling

Allows to style pseudo elements that are nested inside other pseudo elements. So far, support is defined for: ::before::marker ::after::marker With ::column::scroll-marker being supported in the future. #

This feature was specified in this Spec.

Web Authentication API: PublicKeyCredential’s getClientCapabilities() method

getClientCapabilities() method allows to determine which WebAuthn features are supported by the user's client. The method returns a list of supported capabilities, allowing developers to tailor authentication experiences and workflows based on the client's specific functionality. #

This feature was specified in this Spec.

Deprecations and Removals

Deprecation policy

To keep the platform healthy, we sometimes remove APIs from the Web Platform which have run their course. There can be many reasons why we would remove an API, such as:

Some of these changes will have an effect on a very small number of sites. To mitigate issues ahead of time, we try to give developers advanced notice so they can make the required changes to keep their sites running.

Chrome currently has a process for deprecations and removals of API's, essentially:

You can find a list of all deprecated features on chromestatus.com using the deprecated filter and removed features by applying the removed filter. We will also try to summarize some of the changes, reasoning, and migration paths in these posts.

Deprecated features in 131

This release of Chrome had 0 features deprecated.

Removed features in 131

This release of Chrome had 2 features removed.

Deprecation of CSS Anchor Positioning property `inset-area`

The CSSWG resolved to rename the `inset-area` property to `position-area`. See the CSSWG discussion here: https://github.com/w3c/csswg-drafts/issues/10209#issuecomment-2221005001. The new property name, `position-area`, as a synonym for `inset-area` shipped via https://chromestatus.com/feature/6567965055778816. This entry is for deprecation and removal of the `inset-area` property. #

This feature was specified in this Spec.

Remove non-standard GPUAdapter requestAdapterInfo() method

The WebGPU WG decided it was impractical for requestAdapterInfo() to trigger a permission prompt so they’ve removed that option and replaced it with the GPUAdapter info attribute so that web developers can get the same GPUAdapterInfo value synchronously this time. See the previous Intent to Ship: WebGPU: GPUAdapter info attribute at https://groups.google.com/a/chromium.org/g/blink-dev/c/eZqMmX7q_bA/m/euMLVMpxAgAJ

This feature was specified in this Spec.