Chrome Release Summary

Chrome version: 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 120

Enabled (26) | Origin Trial (1) | Behind a flag (4) | Deprecated (0) | Removed (0)

Enabled by default in 120

This release of Chrome had 26 new features.

Accordion pattern using name attribute on
elements

This feature adds the ability to construct exclusive accordions using a sequence of HTML <details> elements. It adds a name attribute to the <details> element. When this attribute is used, multiple <details> elements that have the same name form a group. At most one element in the group can be open at once. #

This feature was specified in this Spec.

Allow transferring ArrayBuffer into VideoFrame, AudioData, EncodedVideoChunk, EncodedAudioChunk, ImageDecoder constructors

This will allow detaching array buffers and using corresponding buffers inside VideoFrame, ImageDecoder, EncodedVideoChunk, EncodedAudioChunk, AudioData without a copy. Explainer: https://gist.github.com/Djuffin/1c8fac486ca9f402be85074166e89a16 #

This feature was specified in this Spec.

Resources

Docs: https://gist.github.com/Djuffin/1c8fac486ca9f402be85074166e89a16

No linked samples

CSS :dir() pseudo-class selector

The :dir() CSS pseudo-class selector matches elements based on directionality, which is determined based on the HTML dir attribute. :dir(ltr) matches left-to-right text directionality, and :dir(rtl) matches elements with right-to-left text directionality. It is not equivalent to [dir] attribute selectors because it matches against directions inherited from an ancestor with the dir attribute, and because it matches against the direction computed from use of dir=auto (which determines directionality from the first character in the text with strong directionality). #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://jsfiddle.net/fxc9a8uc/1

CSS Syntax for registered Custom Properties

Supports using the <image> syntax for custom properties registered with @property or registerProperty(). The <image> syntax can be used to restrict values of the custom property to url() values and generated images like gradients. #

This feature was specified in this Spec.

CSS and Syntax for registered Custom Properties

Supports using the <transform-function> and <transform-list> syntaxes for custom properties registered with @property or registerProperty(). The syntax can be used to restrict values of the custom property to represent transforms. This also makes it possible to use transitions and animations directly on these registered custom properties. #

This feature was specified in this Spec.

CSS Exponential Functions

Add css exponential functions: pow(), sqrt(), hypot(), log(), exp() to CSS math expressions. #

This feature was specified in this Spec.

CSS Font Loading API - FontFaceSet: check() method

The FontFaceSet's check() function verifies whether it's possible to display text using the specified fonts without attempting to utilize fonts in the FontFaceSet that have not completed loading. This allows users to safely employ the font without later triggering a font replacement (i.e., font swap). #

This feature was specified in this Spec.

CSS masking

CSS mask, and related properties such as mask-image, mask-mode, etc, are used to hide an element (partially or fully) by masking or clipping the image at specific points. This feature unprefixes the -webkit-mask* properties and brings them up to spec. This includes mask-image, mask-mode, mask-repeat, mask-position, mask-clip, mask-origin, mask-size, and mask-composite, as well as the "mask" shorthand. Local mask-image references are supported, serialization now matches the spec, and accepted values now match the spec (for example, "add" instead of "source-over" for mask-composite). #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/CSS/mask

No linked samples

Dedicated workers and Storage Access API

Dedicated workers will inherit the "storage access status" of the parent context. I.e., if a document obtains storage access via `document.requestStorageAccess` and then creates a dedicated worker, the worker will also have storage access (and be able to access unpartitioned cookies). #

This feature was specified in this Spec.

FedCM: Error API and AutoSelectedFlag API

Dedicated APIs to help developers and users to better understand the authentication flow. Both APIs are triggered post user permission to sign in to an RP with an IdP. i.e. after user clicking the "Continue as" button. - With Error API, if user's sign-in attempt is failed, the IdP can share the reasons with the browser to keep both users and RP developers updated. - With AutoSelectedFlag API, both IdP and RP developers could have a better understanding about the sign-in UX, evaluate performance and segment metrics accordingly. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1DEjbFSAMmmT47_n8JBLmcleCNPz_WS5a24WDrglSQMo/edit?usp=sharing

Samples: https://drive.google.com/file/d/1Z8r4OkQMmKulGv-vf-XTfwqh6VUyGZF9/view?usp=sharing

Fenced Frames M120 functionality updates

1) Additional format option for Protected Audience ad size macros In the Protected Audience API within the Privacy Sandbox, there is an opt-in feature that allows you to macro the size of the ad that wins the auction into the ad’s url, like: https://ad.com?width={%AD_WIDTH%}&height={%AD_HEIGHT%} (See https://github.com/WICG/turtledove/pull/417 for more details.) To be more consistent with other types of macros in Protected Audience, like those used by deprecatedReplaceInURN and registerAdMacro, in M120 we’re adding the ability to use ${AD_WIDTH} and ${AD_HEIGHT} as the format for the macros in addition to the current format. 2) Automatic beacons will now send to all registered URLs. Previously, only destinations specified when calling setReportEventDataForAutomaticBeacons() receive automatic beacons, even if that destination called registerAdBeacon() for "reserved.top_navigation" in their worklet. Now, any destination that called registerAdBeacon() for "reserved.top_navigation" will get an automatic beacon, but only destinations specified in setReportEventDataForAutomaticBeacons() will get automatic beacon data along with the beacon. The "once" parameter in setReportEventDataForAutomaticBeacons() will now determine whether the data is sent out once, rather than determine if the entire beacon is sent once. #

This feature was specified in this Spec.

Generic Sensors WebDriver extension commands

This exposes WebDriver commands for creating, removing, querying and setting readings for so-called virtual sensors: sensors that do not depend on underlying hardware or operating system support and can be used for testing. #

This feature was specified in this Spec.

Intersection Observer Scroll Margin

Intersection Observer scrollMargin allows developers to observe targets inside nested scroll containers that are currently clipped away by the scroll containers. This is achieved by expanding the container's clipping rect by the scrollMargin when calculating the intersection. #

This feature was specified in this Spec.

Media Queries: scripting feature

The scripting media feature is used to query whether scripting languages, such as JavaScript, are supported on the current document. Valid options are 'enabled', 'initial-only', 'none'. However, 'initial-only' never matches inside a browser. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/scripting

Media Session API: enterpictureinpicture action

Adds an 'enterpictureinpicture' action to the Media Session API. Websites can register an action handler which can be used to open a Picture-in-Picture or Document Picture-in-Picture window. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://steimelchrome.github.io/autopip.html

Media query support for video elements

Adds support for CSS media queries to <source> elements used with <video> elements. Allowing developers to use media query syntax to tell the browser which source should be preferred for a given environment. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source#media

No linked samples

MediaStreamTrack Stats (Video)

An API that exposes frame counters (delivered, discarded, total) for MediaStreamTracks of kind video. Audio stats will be covered by a separate chrome feature launch. #

This feature was specified in this Spec.

Permissions policy violation reports

This integrates the Permissions policy API with the Reporting API, allowing web developers to configure endpoints to which permissions policy violation reports will be sent, allowing site owners to see when disallowed features are being requested on their pages in the field. It also includes the Permissions-Policy-Report-Only header, which enables reports to be sent based on a proposed policy (analogous to Content-Security-Policy-Report-Only) so that policy changes can be evaluated for potential breakage before implementing them in the regular, enforcing mode. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/webappsec-permissions-policy/blob/main/reporting.md

No linked samples

Relaxed CSS Nesting

Allows nested style rules to begin with an identifier. #

This feature was specified in this Spec.

Remove data: URL in SVGUseElement

Assigning a data: URL in SVGUseElement can cause XSS. And this also led to a Trusted Types bypass. Therefore, we plan to deprecate and remove support for it. #

This feature was specified in this Spec.

Resources

Docs: https://developer.chrome.com/blog/migrate-way-from-data-urls-in-svg-use

Samples: https://shhnjk.github.io/svg-use-iconshttps://github.com/shhnjk/shhnjk.github.io/tree/main/svg-use-icons

Remove same-origin blanket enforcement in CSPEE

Removes a special treatment for same-origin iframes from CSP Embedded Enforcement. This aligns the behavior of enforcing CSP Embedded Enforcement for cross-origin iframes and same-origin iframes. #

This feature was specified in this Spec.

The Login Status API and its use in FedCM

The Login Status API [1] (formerly IdP Sign-in Status API) allows identity providers to signal to the browser when their users are logging-in/out. Our goal is to open this up to other websites in the future. This signal, in this intent, is used by FedCM to address a silent timing attack, and in doing so, allows FedCM to operate without third party cookies altogether. This update would address the last remaining backwards incompatible changes we had previously identified in the original I2S of FedCM [2] as part of our scope of work. In the future, we expect that the Login Status API may also be used outside of FedCM (e.g. the Storage Access API [3]) and may be useful for websites that are not identity providers (e.g. extending browser storage [4]). [1] https://github.com/fedidcg/login-status [2] https://groups.google.com/a/chromium.org/g/blink-dev/c/URpYPPH-YQ4/m/E9pgS7GEBAAJ [3] https://github.com/fedidcg/login-status#storage-access-api [4] https://github.com/fedidcg/login-status#extending-site-data-storage #

This feature was specified in this Spec.

URL.canParse

A static operation to determine whether a URL string is valid. More concise than catching an exception thrown from the URL constructor. #

This feature was specified in this Spec.

View Transitions: making callback non-nullable

The `startViewTransition` call currently takes an optional nullable callback type with a default value of null: `startViewTransition(optional UpdateCallback? callback = null)` This feature changes this to be a non-nullable type: `startViewTransition(optional UpdateCallback callback)` More details: https://github.com/w3c/csswg-drafts/issues/9460 #

This feature was specified in this Spec.

WebGPU f16 support

Allows for the use of the half-precision floating-point type f16 in WebGPU shaders (WGSL). Developers can use the 'shader-f16' feature from the WebGPU spec and the 'f16' extension from the WGSL spec to access 16-bit floating point variables and APIs in their shaders. #

This feature was specified in this Spec.

WebGPU maxBindGroupsPlusVertexBuffers limit

The WebGPU maxBindGroupsPlusVertexBuffers limit is the maximum number of bind group and vertex buffer slots used simultaneously, counting any empty slots below the highest index. It is validated in createRenderPipeline() and in draw calls. This change adds maxBindGroupsPlusVertexBuffers to the GPUSupportedLimits interface, and as an accepted key by the GPUDeviceDescriptor.requiredLimits record. #

This feature was specified in this Spec.

Origin Trials in-progress in 120

This release of Chrome had 1 new origin trials.

Unprefix -webkit-background-clip for text and make it an alias

It allows to use the unprefixed version for background-clip: text and makes -webkit-background-clip an alias for background-clip. Also, it drops support for non-suffixed keywords (content, padding and border) for better round-trip with alias. #

This feature was specified in this Spec.

Flagged features in 120

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

CSS / Syntax for registered Custom Properties

Supports using the <transform-function> and <transform-list> syntaxes for custom properties registered with @property or registerProperty(). The syntax can be used to restrict values of the custom property to represent transforms. This also makes it possible to use transitions and animations directly on these registered custom properties. #

This feature was specified in this Spec.

Deprecate and remove Theora support.

Chrome will deprecate and remove support for the Theora video codec in desktop Chrome due to emerging security risks. Theora's low (and now often incorrect) usage no longer justifies support for most users. Notes: - Zero day attacks against media codecs have spiked. - Usage has fallen below measurable levels in UKM. - The sites we manually inspected before levels dropped off were incorrectly preferring Theora over more modern codecs like VP9. - It's never been supported by Safari or Chrome on Android. - An ogv.js polyfill exists for the sites that still need Theora support. - We are not removing support for ogg containers. Our plan is to begin escalating experiments turning down Theora support in M120. During this time users can reactivate Theora support via chrome://flags/#theora-video-codec if needed. The tentative timeline for this is (assuming everything goes smoothly): - ~Oct 23, 2023: begin 50/50 canary dev experiments. - ~Nov 1-6, 2023: begin 50/50 beta experiments. - ~Dec 6, 2023: begin 1% stable experiments. - ~Jan 8, 2024: begin 50% stable experiments. - ~Jan 16th, 2024: launch at 100%. - ~Feb 2024: remove code and chrome://flag in M123. - ~Mar 2024: Chrome 123 will roll to stable. #

This feature was specified in this Spec.

Fenced Frames - Enable leaving IGs, and ads report at top level navigation start (Chrome - 120)

We are adding three functionality changes to Fenced Frames: 1. Enable leaving ad interest groups from urn iFrames and ad component frames Currently calling navigator.leaveAdInterestGroup() without any argument only works in fenced frames. This change enables this API for supporting navigator.leaveAdInterestGroup() without any argument: a) in urn iframes and b) in ad component frames. 2. Introduce reserved.top_navigation_start/commit Fenced frames or URN iframes, when loaded through an API like Protected Audience or Shared Storage, can send out reporting beacons automatically if some event occurs. With this change, we are adding support for top-level navigation start events, in addition to the existing top-level navigation commit events. #

This feature was specified in this Spec.

WebAssembly Multi-Memory

Add support for more than one memory per WebAssembly module as specified in the WebAssembly Multi-Memory proposal: https://github.com/WebAssembly/multi-memory/blob/main/proposals/multi-memory/Overview.md #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WebAssembly/multi-memory/blob/main/proposals/multi-memory/Overview.md

No linked samples

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 120

This release of Chrome had 0 features deprecated.

Removed features in 120

This release of Chrome had 0 features removed.