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 123

Enabled (15) | Origin Trial (5) | Behind a flag (0) | Deprecated (0) | Removed (0)

Enabled by default in 123

This release of Chrome had 15 new features.

'pagereveal' event

The `pagereveal` event is fired on a Document's window object at the first render opportunity after a Document is: initially loaded, restored from the back-forward cache, or activated from a prerender. It can be used by a page author to setup a page entry UX - such as a ViewTransition from a previous state. This feature is split out from the larger ViewTransition-on-Navigation project. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/view-transitions/blob/main/cross-doc-explainer.md

No linked samples

Allow for WebAuthn credential creation in a cross-origin iframe

This feature allows web developers to create WebAuthn[0] credentials (that is, "publickey" credentials, aka passkeys) in cross-origin iframes. Two conditions are required for this new ability: 1. The iframe has a publickey-credentials-create-feature permission policy. 2. The iframe has transient user activation. This will allow developers to create passkeys in embedded scenarios, such as after an identity step-up flow where the Relying Party is providing a federated identity experience. [0]: https://w3c.github.io/webauthn/ #

This feature was specified in this Spec.

CJK punctuation kerning: the CSS `text-spacing-trim` property

Applies the kerning to CJK punctuation characters to produce the visually pleasing typography as defined by JLREQ (Requirements for Japanese Text Layout) and CLREQ (Requirements for Chinese Text Layout). Many CJK punctuation characters include glyph-internal spacing. For example, the CJK full stop and the CJK close parenthesis usually have glyph-internal spacings on the right half of their glyph spaces, to give them a constant advance as other ideographic characters. But when they appear in a row, the glyph-internal spacings become excessive. This feature adjusts such excessive spacing. This feature adjusts the glyph-internal spacing for three cases: 1) adjacent characters (pair kerning), 2) at the line start, and 3) at the line end. To avoid the risk of excessive kerning, fonts must have the OpenType `halt` or `chws` feature, or both. If the font doesn’t have either feature, the effect is disabled. This feature implements 4 values: `normal`, `trim-start`, `space-all`, and `space-first`. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/146Bupkg3nrNALL3bm8UElRd0vsLVH5807xubsnrthDw/edit?usp=sharing

Samples: https://output.jsbin.com/figixaq

CSS light-dark() Color Function

Allows authors to provide separate colors for light and dark color-schemes on a per element basis. System colors and UA form controls are rendered with different colors depending on the color-scheme set on an element. Authors can have the same possibility through the light-dark() function: #target { background-color: light-dark(lime, green); } The #target element will have a green background if the used color-scheme for the element is 'dark'. Otherwise, the background will be lime. #

This feature was specified in this Spec.

CSS paint-order for non-SVG text

Adds support for the existing CSS property `paint-order`. This change only affects html (non-SVG) text; SVG text already supports paint-order via attribute or CSS property. #

This feature was specified in this Spec.

CSS picture-in-picture display mode

Adds support to the CSS display-mode media feature for picture-in-picture. This allows web developers to write specific CSS rules that are only applied when (part of the) the web app is shown in picture-in-picture mode. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/csswg-drafts/issues/9260

Samples: https://document-picture-in-picture-api.glitch.me/display-mode.html

CSSKeyframesRule.length

Exposes length attribute of CSSKeyframesRule. Interfaces that support indexed properties must define an integer-typed attribute named "length". #

This feature was specified in this Spec.

Document picture-in-picture: allow Window's focus() API to focus opener

This enables `opener.focus()` from a document picture-in-picture window to bring system-level focus to the tab that owns the document picture-in-picture window. This allows developers to bring the original tab back to the foreground when necessary, e.g. when the user needs to access a more full UI/experience that doesn't fit in the smaller picture-in-picture window. #

This feature was specified in this Spec.

Resources

No linked docs

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

Import attributes 'with' syntax

Import attributes[^1] are a JavaScript feature to allow annotating import declarations, for example `import xxx from "mod" with { type: "json" }'. Chrome originally shipped a previous version of the proposal (in M91) using 'assert' as the keyword. This version has then been updated to use 'with' due to some changes needed while integrating it with HTML for JSON and CSS modules[^2]. [^1]: https://github.com/tc39/proposal-import-attributes/ [^2]: https://github.com/whatwg/html/issues/7233 #

This feature was specified in this Spec.

NavigationActivation

navigation.activation stores state about when the current Document was activated (e.g., when it was initialized, or restored from the back/forward cache). #

This feature was specified in this Spec.

Private Aggregation debug mode for auctionReportBuyers reporting

Adds support for Private Aggregation’s debug mode for the per-buyer extended Private Aggregation reporting to Protected Audience sellers (aka auctionReportBuyers reporting). This is done with a new, optional auctionReportBuyerDebugModeConfig field passed to runAdAuction(). auctionReportBuyers reporting is currently the only use of Private Aggregation reports that does not have a way to enable its debug mode (a temporary mechanism tied to third-party cookie eligibility that relaxes some of the API’s privacy constraints to allow for easier debugging and integration). #

This feature was specified in this Spec.

Zstd Content-Encoding

Zstandard, or “zstd”, is a data compression mechanism described in RFC8878. It is a fast lossless compression algorithm, targeting real-time compression scenarios at zlib-level and better compression ratios. The "zstd" token was added as an IANA-registered Content-Encoding token as per https://datatracker.ietf.org/doc/html/rfc8878#name-content-encoding. Adding support for "zstd" as a Content-Encoding will help load pages faster and use less bandwidth, and spend less time and CPU/power on compression on our servers, resulting in reduced server costs. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1aDyUw4mAzRdLyZyXpVgWvO-eLpc4ERz7I_7VDIPo9Hc/edit?usp=sharinghttps://docs.google.com/document/d/14dbzMpsYPfkefAJos124uPrlkvW7jyPJhzjujSWws2k/edit?usp=sharing

No linked samples

align-content CSS property for blocks

`align-content` CSS property works for block containers and table cells. The property worked only for flex containers and grid containers. It supports block containers and table cells, that is to say `display: block`, `display: list-item`, `display: table-cell`, etc. #

This feature was specified in this Spec.

blocking=render on inline module scripts

Currently <script blocking="render" type="module"> requires a `src` attribute, even if this `src` is a data URI. This is an unnecessary constrain, as inline module scripts that import other script should still be able to render-block. See https://github.com/whatwg/html/issues/10034 #

This feature was specified in this Spec.

field-sizing CSS property

By 'field-sizing' property, web authors can disable fixed default sizes of form controls, and make their size depend on their content. It's very easy to provide automatically-growing text fields. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/tkent-google/explainers/blob/main/form-sizing.md

No linked samples

Origin Trials in-progress in 123

This release of Chrome had 5 new origin trials.

Add JavaScript timer wake up alignment for unimportant cross-origin frames

Align wake ups of JavaScript timers for unimportant cross-origin frames. Currently, DOM timers <32ms are all opt-out from AlignWakeUps [1] due to performance concerns. This is very conservative and actually some unimportant frames are eligible to use JS timer alignment. WebKit uses the policy to align DOM timer of non-interacted cross origin frames to 30ms. This feature adds JavaScript timer wake up alignment for unimportant frames on foreground pages. Unimportant frames have 3 criteria: they are cross origin, visible but have non-large proportion of page’s visible area, and have no user interaction. All 3 conditions should be met. The alignment interval is 32ms. [1] https://chromium-review.googlesource.com/c/chromium/src/+/4589092 #

This feature was specified in this Spec.

Back/forward cache NotRestoredReason API

NotRestoredReason API reports the list of reasons why a page is not served from BFcache in a frame tree structure, via PerformanceNavigationTiming API. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/rubberyuzu/bfcache-not-retored-reason/blob/main/NotRestoredReason.md#security-and-privacy

No linked samples

Cross App and Web Attribution Measurement

Extends the Attribution Reporting API to allow attributing conversions that happen on the web to events that happen off the browser, within other applications. The proposal here takes advantage of OS-level support for attribution. In particular, it gives the developer an option to allow events on the mobile web to be joinable with events in Android’s Privacy Sandbox, although support for other platforms could also be implemented. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/137lLI8Gr3gMZWSzffnkwgF0pUpVm4jbPL02O7KLh5kk/edit?resourcekey=0-52bI6HAaA1dZmT3NWP1tvg

No linked samples

Long Animation Frame Timing

This is a extension of long tasks. It measures the task together with its subsequent rendering update, adding information such as long running scripts, rendering time, and time spent in forced layout and style ("layout thrashing"). Developers can use this as a diagnostic for "sluggishness", which is measured by INP, by finding the causes for main-thread congestion which is often the cause for bad INP. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1SeMd4KbXWZf0ZnRSMvYhjSBpXPBln5xrRyTu2Gr68BY/edit#heading=h.7nki9mck5t64

No linked samples

ServiceWorker static routing API

This API allows developers to configure the routing, and allows them to offload simple things ServiceWorkers do. If the condition matches, the navigation happens without starting ServiceWorkers or executing JavaScript, which allows web pages to avoid performance penalties due to ServiceWorker interceptions. #

This feature was specified in this Spec.

Flagged features in 123

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

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 123

This release of Chrome had 0 features deprecated.

Removed features in 123

This release of Chrome had 0 features removed.