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 117

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

Enabled by default in 117

This release of Chrome had 26 new features.

Array grouping

Adds news Object.groupBy(iterable, groupCallback) and Map.groupBy(iterable, groupCallback) to perform a grouping or bucketing operation. The Object method returns a plain object, where the groups are property keys. The Map method returns a Map, where the keys can be arbitrary values. #

This feature was specified in this Spec.

CSS @starting-style Rule

Allow authors to start CSS transitions on first style update CSS transitions do not trigger transitions from initial styles on the first style update for an element, or when the display type changes from 'none' to some other type. That is done to avoid unexpected transitions from initial styles. If the author wants to start a transition from the first style update, that can now be done by applying styles from within a @starting-style rule. If there is no pre-existing style for an element, but there are selectors inside @starting-style rules that match the element, a style is computed with rules inside @starting-style matching, before the actual style is computed without @starting-style rules matching. Any differences in computed style for transitioned properties will trigger transitions between the styles with and without @starting-style rules applied. Example which starts a background-color transition from green to lime on the first style update for a div: div { transition: background-color 0.5s; background-color: lime; } @starting-style div { background-color: green; } } #

This feature was specified in this Spec.

CSS Subgrid

Implements the CSS Grid Layout Module Level 2 specification, which introduces the concept of a "subgrid" to nested grid containers. #

This feature was specified in this Spec.

Resources

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

No linked samples

CSS cap and rcap font units

'cap' is equal to the used cap-height of the first available font. 'rcap' is equal to the value of the cap unit on the root element. #

This feature was specified in this Spec.

CSS text-wrap: pretty

Adjusts line breaking to avoid a short single word on the last line (also known as typographic orphans.) When `text-wrap: pretty` is specified, paragraphs that will end up with a short single word on the last line are adjusted so that the last line has two or more words. It also adjusts hyphenation if consecutive hyphenated lines appear at the end of a paragraph. The algorithm is based on the Knuth-Plass algorithm, as used by TeX. It computes scores for all candidates, and chooses the best one. To balance between the typographic benefits and the performance impacts, it adjsuts the last 4 lines of paragraphs that meet certain conditions. #

This feature was specified in this Spec.

Resources

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

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

CSS transition-behavior property

The transition-behavior CSS property is a longhand of the transition property which allows discrete properties to be used in transitions. By specifying the "allow-discrete" value for transition-behavior, discrete properties will now start animations and flip from their initial value to their final value at 50%, except for transitions where display:none and content-visibility:hidden are one of the initial or final values, in which case the visible value will be used for the entire duration of the transition. More details here: https://drafts.csswg.org/css-transitions-2/#transition-behavior-property #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://output.jsbin.com/buquher/quiet

Change beforeunload handler dialog condition

To comply with HTML standard, there are two new changes on how the cancel dialog gets prompted for beforeunload event. 1. If event.preventDefault() is called, prompt cancel dialog. 2. If event.returnValue is the empty string, do not prompt cancel dialog. #

This feature was specified in this Spec.

Clear Client Hints via Clear-Site-Data header

Websites will now be able to clear the client hints cache using `Clear-Site-Data: “clientHints”`. Client hints will also now be cleared when “cookies”, “cache”, or “*” are targeted by the same header. This is because if the user clears cookies in the UI client hints are already cleared as well, the client hints cache is a cache, and to be consistent with wildcard targets respectively. #

This feature was specified in this Spec.

Clear-Site-Data header wildcard syntax

Websites will now be able to clear all storage targets (“cookies”, “cache”, and “storage”) by sending `Clear-Site-Data: “*”`. Note that Chrome does not support clearing “executionContexts” at the moment, but if we added it in the future any header targeting “*” would then clear them too. #

This feature was specified in this Spec.

Deprecate TLS SHA-1 server signatures

Chrome is removing support for signature algorithms using SHA-1 for server signatures during the TLS handshake. This does not affect SHA-1 support in server certificates, which was already removed, or in client certificates, which continues to be supported. SHA-1 can be temporarily re-enabled via the temporary InsecureHashesInTLSHandshakesEnabled enterprise policy. This policy will be removed in Chrome 123. #

This feature was specified in this Spec.

Make CaptureController derive from the EventTarget interface

The CaptureController interface enables further manipulation of a screen capture session. In the future, it is expected that the events related to a capture session are dispatched on that controller. To be able to manage listeners for such events, the EventTarget methods are made available on CaptureController. #

This feature was specified in this Spec.

Per-frame quantizer in VideoEncoder

Adds "quantizer" VideoEncoderBitrateMode for VideoEncoder. This allows to specify quantizer parameter for each frame for AV1, VP9, and AVC video codecs. Explainer: https://gist.github.com/Djuffin/3722232679b977058be787be0dff4254 #

This feature was specified in this Spec.

PerformanceResourceTiming deliveryType

Expose information about how a resource was delivered. For example, resources which were delivered from the cache (currently exposed through transferSize) and navigations which were prefetched by the previous page are useful to identify. #

This feature was specified in this Spec.

Port overflow check in URL setters

The port value will be checked when setting url.port. All the values that overflows the 16-bit numeric limit will be no longer valid. For instance the following script behave differently after the change: ``` u = new URL("http://test.com"); u.port = 65536; console.log(u.port); ``` Before the change the output is 65536. After the change the output will be 80. #

This feature was specified in this Spec.

RFC 7616 Digest auth: Support SHA-256 and username hashing

This change adds SHA-256 and username hashing support to HTTP Digest authentication. It brings Chrome to parity with Firefox that already supports SHA-256. #

This feature was specified in this Spec.

Removal of WebRTC getStats datachannelIdentifier -1

The WebRTC getStats API exposes a dataChannelIdentifier property https://w3c.github.io/webrtc-stats/#dom-rtcdatachannelstats-datachannelidentifier It will no longer provide the value "-1" in cases where statistics are queried before the datachannel connection is established. Instead, the dictionary member will be omitted. This follows the general pattern not to return meaningless information described in https://w3c.github.io/webrtc-stats/#guidelines-for-implementing-stats-objects #

This feature was specified in this Spec.

Removal of WebRTC getStats encoderImplementation/decoderImplementation "unknown"

The WebRTC getStats API exposes the encoder and decoder implementation names for outbound and inbound video: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-encoderimplementation It will no longer provide the value “unknown” in cases where statistics are queried before a video frame was encoded or decoded. Instead, the dictionary member will be omitted. This follows the general pattern not to return meaningless information described in https://w3c.github.io/webrtc-stats/#guidelines-for-implementing-stats-objects #

This feature was specified in this Spec.

Storage Access API with Prompts

Provides a means for authenticated cross-site embeds to check their access to (unpartitioned) cookies and request access if they are blocked. Supports user prompts, and additionally includes user-agent-specific behaviors. #

This feature was specified in this Spec.

TLS Encrypted Client Hello (ECH)

The TLS Encrypted ClientHello (ECH) extension enables clients to encrypt ClientHello messages, which are normally sent in cleartext, under a server’s public key. This allows websites to opt-in to avoid leaking sensitive fields, like the server name, to the network by hosting a special HTTPS RR DNS record. (Earlier iterations of this extension were called Encrypted Server Name Indication, or ESNI.) If your organization’s infrastructure relies on the ability to inspect SNI, for example, filtering, logging, and so on, you should test it. You can enable the new behavior by navigating to chrome://flags and enabling the #encrypted-client-hello flag. If you notice any incompatibilities, you can use the EncryptedClientHelloEnabled enterprise policy to disable support for ECH. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://tls-ech.dev

URL Standard-compatible IPv4 embedded IPv6 host parser

The behavior of parsing IPv4 embedded IPv6 host parser will be updated to strictly follow the web URL standard: https://url.spec.whatwg.org/#concept-ipv6-parser The introduced restrictions on the IPv6 address are: * The embedded IPv4 address shall always consist of 4 parts. Addresses with less than 4 parts like http://[::1.2] will be no longer valid. The feature is a part of the URL interop 2023. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://chromium-review.googlesource.com/c/chromium/src/+/4206417

URL: Allow "%00" as a valid URL path

Chrome currently considers a URL invalid if the URL's path part contains "%00" (or null), which is not compliant with the URL Standard [1]. For example, the following test fails in Chrome because new URL(..) throws an Invalid URL exception. assertEquals(new URL("http://example.com/%00").pathname, "/%00"); According to the URL Standard, any character or byte sequence in URL path should not make the URL invalid. Note: In other parts of URL, "%00" may still be considered invalid. For example, new URL("http://example%00.com/"); throws an exception because "%00" is not a valid host codepoint. - [1] https://url.spec.whatwg.org/ #

This feature was specified in this Spec.

Web Serial support for Bluetooth RFCOMM services

Support Bluetooth RFCOMM services in the Web Serial API. The Bluetooth RFCOMM (Radio frequency communication) protocol provides emulated RS-232 serial ports. This feature would enable applications to make connections to RFCOMM services on paired Bluetooth Classic devices using the Web Serial API. #

This feature was specified in this Spec.

WebHID in Extension Service Workers

Allows web developers to use the WebHID API in service worker contexts in extensions by exposing WebHID API to extension service workers. #

This feature was specified in this Spec.

WebRTC RTP header extension control

Extend the WebRTC RTCRtpTransceiver API to offer control over which RTP header extensions are negotiated. #

This feature was specified in this Spec.

WebUSB exclusionFilters option in requestDevice()

The "exclusionFilters" option in navigator.usb.requestDevice() allows web developers to exclude some devices from the browser picker. It can be used to exclude devices that match a broader filter but are unsupported. #

This feature was specified in this Spec.

contain-intrinsic-size: auto none support

This feature extends the existing contain-intrinsic-size syntax: none | <length> | auto && <length> to also include auto && none: none | <length> | auto && <length> | auto && none The reason for this change is the CSSWG resolution (https://github.com/w3c/csswg-drafts/issues/8407#issuecomment-1440466558) to add an interaction between content-visibility: auto and contain-intrinsic-size. Specifically, that the former adds an "auto" keyword to the latter. For this to work, the resolution includes a note to extend contain-intrinsic-size syntax for "auto" to work with all existing keywords, including "none". #

This feature was specified in this Spec.

Origin Trials in-progress in 117

This release of Chrome had 1 new origin trials.

[WebRTC] Unship callback-based legacy getStats()

RTCPeerConnection has two versions of getStats(), one that is spec-compliant returning the report via resolving a promise, and one that is non-standard returning a very different report via a callback as the first argument. The callback-based was removed in M117, with a Deprecation Trial available until M121. As of M122, the API does not anymore, even if you use the Deprecation Trial. #

This feature was specified in this Spec.

Flagged features in 117

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

CSS overlay property

Introduce an overlay property to allow authors to keep elements in the top layer for an exit transition. The overlay property is added to indicate if an element is in the top layer or not. It can take two values: 'none', 'auto'. User agent stylesheets add !important rules to control whether elements are rendered in the top layer or not, and not let author styles override. However, authors can add 'overlay' to the list of transition-properties for an element to defer the removal from the top layer for the duration of the transition. That way the author can do exit transitions for elements like dialogs: transition-property: overlay transition-duration: 0.4s #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://github.com/chrishtr/rendering/blob/master/entry-exit-animations.md#example-code

Warning on insecure downloads

To ensure users are aware of the risks of downloads delivered over an insecure connection, Chrome will display a bypassable warning for some downloads delivered over an insecure connection. Which downloads are warned about will depend on whether the user has enabled HTTPS-First Mode and whether the file type has a substantial risk of parsing vulnerabilities that can lead to code execution. #

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 117

This release of Chrome had 1 features deprecated.

CSS property -webkit-highlight

Remove the CSS property -webkit-highlight intended to highlight text, but never standardized. It has no visible effect in chromium (it is parsed but never used in rendering content). The property was removed from WebKit in 2014 (https://bugs.webkit.org/show_bug.cgi?id=128456), has been marked as deprecated on MDN, and has been replaced recently with the CSS Highlight Pseudo spec (https://www.w3.org/TR/css-pseudo-4/#highlight-pseudos). #

This feature was specified in this Spec.

Removed features in 117

This release of Chrome had 0 features removed.