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 89

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

Enabled by default in 89

This release of Chrome had 26 new features.

'disclosure-open' and 'disclosure-closed' keywords for CSS list-style-type property

CSS property 'list-style-type' supports two new keywords 'disclosure-open' and 'disclosure-closed'. In an element with display:list-item, 'disclosure-open' shows a symbol indicating a widget like <details> is opened. 'disclosure-closed' shows a symbol indicating a widget like <details> is closed. They will be used for the default style of <summary> in the user-agent stylesheet. #

This feature was specified in this Spec.

'display: list-item' by default for

The default value of CSS 'display' property for <summary> is changed to 'list-item' from 'block'. We also support '::marker' pseudo element selector for <summary>, and remove '::-webkit-details-marker' pseudo element selector. Before this change, developers did the following in order to hide the details marker: summary::-webkit-details-marker { display: none; margin-inline-end: 0; } Now developers can do: summary { display: block; } or summary { list-style-type: none; } #

This feature was specified in this Spec.

Add support for encoding CBR audio files with `MediaRecorder`.

Adds support for hard constant bitrate (CBR) mode of the Opus encoder when CBR mode is used for MediaRecorder. Without this change it is impossible to encode compressed constant bitrate audio files with the MediaRecorder. This implements a spec change allowing either constant bitrate (CBR) or variable bitrate (VBR) encoding on the MediaRecorderOptions object passed to the MediaRecorder constructor. Previously VBR was assumed when using anything other than uncompressed PCM. #

This feature was specified in this Spec.

Resources

Docs: https://w3c.github.io/mediacapture-record/#mediarecorder-api

No linked samples

CSS ::target-text pseudo-element

A highlight pseudo element to allow authors to style scroll-to-text fragments different from the default UA highlighting. #

This feature was specified in this Spec.

CSS flow-relative Corner Rounding properties

Support the flow-relative Corner Rounding properties following CSS Logical Properties and Values spec. Specifically, the following logical properties are included: border-start-start-radius, border-start-end-radius, border-end-start-radius, and border-end-end-radius. The flow-relative Corner Rounding properties (border-*-radius) will allow to set top-left, bottom-left, top-right and bottom-right box corners with logical mappings rather than physical properties. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/CSS/border-start-start-radius

Samples: https://developer.mozilla.org/en-US/docs/Web/CSS/border-start-start-radius

Cross-origin opener policy reporting API

Adds a reporting API to help developers deploy cross-origin opener policy. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/camillelamy/explainers/blob/master/coop_reporting.md

No linked samples

Expose ReadableStreamDefaultController interface

The Streams APIs provide ubiquitous, interoperable primitives for creating, composing, and consuming streams of data. We will expose the ReadableStreamDefaultController interface on the global object, as with the other ReadableStream-related classes. This will align Blink with the current version of the Streams API Standard and consensus among the developer community. See https://github.com/whatwg/streams/issues/963. #

This feature was specified in this Spec.

Forced colors mode

Adds the 'forced-colors' media feature, which is used to detect if the user agent has enabled a forced colors mode where it enforces a user-chosen limited color palette on the page. Adds the 'forced-color-adjust' property, which allows authors to opt particular elements out of forced colors mode, restoring full control over the colors to CSS. #

This feature was specified in this Spec.

Import maps

Import maps allows control over what URLs get fetched by JavaScript import statements and import() expressions. #

This feature was specified in this Spec.

Resources

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

No linked samples

Schemeful same-site

Modifies the definition of same-site for cookies such that requests on the same registrable domain but across schemes are considered cross-site instead of same-site. E.g., http:// site.example and https:// site.example (note: a space was added between the scheme and the domain to prevent automatic link conversion) will now be considered cross-site to each other. Releasing to Stable, as part of a gradual rollout, starting in M88. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1gTQAljDySGAY9P52zXHqJsnAgYB_38YT2CiKmcl4elg/

No linked samples

Sec-CH-UA Client Hints

The set of Sec-CH-UA-* client hints aims to deprecate and replace the User-Agent header in order to reduce the passive fingerprinting surface we expose via HTTP requests. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/ua-client-hints#explainer-reducing-user-agent-granularityhttps://github.com/WICG/client-hints-infrastructure#readmehttps://web.dev/user-agent-client-hints

Samples: https://goo.gle/ua-ch-demo

Stop cloning sessionStorage for windows opened with noopener

When a window is opened with noopener, Chrome should not clone the sessionStorage of its opener; it should instead start from an empty sessionStorage namespace. #

This feature was specified in this Spec.

Streams API: Byte Streams

The streams APIs provide ubiquitous, interoperable primitives for creating, composing, and consuming streams of data. For streams representing bytes, an extended version of the readable stream is provided to handle bytes efficiently, in particular by minimizing copies. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1rvKpGjppeqRSWntokY-ft_hU2i2us8gis6zgrrLWSTI/view

No linked samples

Support for full 'filter' property syntax on SVG elements

Allows the full syntax of the 'filter' property to be used on SVG elements which previously only supported single url(...) references. This allows filter functions such as blur(...), sepia(...) and grayscale(...) to apply to SVG elements as well as non-SVG elements. It makes the platform support for 'filter' more uniform and allows for easier application of some "canned" effects. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://css-tricks.com/almanac/properties/f/filter/

Top-level await

Allow the `await` keyword at the top-level within JavaScript modules. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/15jxKo7kqj0bRHcnSmwjhj1XaWH1AXRDtYPiJHluCSiA/edit

Samples: See design doc.

Web NFC

Web NFC aims to provide sites the ability to read and write to NFC tags when they are brought in close proximity to the user’s device (usually 5-10 cm, 2-4 inches). The current scope is limited to NDEF, a lightweight binary message format. Low-level I/O operations (e.g. ISO-DEP, NFC-A/B, NFC-F) and Host-based Card Emulation (HCE) are not supported within the current scope. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/nfc/

Samples: https://googlechrome.github.io/samples/web-nfc/

Web Serial API

The Serial API provides an interface for connecting to serial devices, either through a serial port on the user’s system or removable USB and Bluetooth devices that emulate a serial port. This API has been requested by the hardware developer community, especially developers building educational tools, as a companion to the WebUSB API because operating systems require applications to communicate with USB-based serial ports using their higher-level serial API rather than the low-level USB API. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/serial/

Samples: https://googlechromelabs.github.io/serial-terminal

Web Share API

Web Share is an API for sharing data (text, URLs, images) from the web to an app of the user's choosing. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/web-share/

Samples: https://w3c.github.io/web-share/demos/share.html

Web Share API Level 2

Web Share API Level 2 allows sharing of files from the web to an app of the user's choosing. The API enables web developers to build share buttons that display the same system share dialog boxes used by native applications. Level 1 enabled system share dialogs; however only text and urls could previously be shared. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/web-share/

Samples: https://w3c.github.io/web-share/demos/share-files.htmlhttps://jsfiddle.net/ericwilligers/8cpuskqd/https://jsfiddle.net/ericwilligers/7cory9mj/https://github.com/GoogleChrome/samples/tree/gh-pages/web-share

Web Share Target

Web Share Target allows websites to receive shared data (text, URLs, images) and register to be choosable by the user as targets from sharing contexts, including (but not limited to) Web Share. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/web-share-target/

Samples: https://web-share.glitch.me/https://wicg.github.io/web-share-target/demos/sharetarget.htmlhttps://scrapbook-pwa.web.app/

Web Share Target Level 2

Installed web applications can now receive file shares, e.g. images. Using the manifest, the web application can declare which MIME types and/or file extensions it accepts. Previously, mobile platforms allowed files to be shared to native applications, but not web applications. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/web-share-target/

Samples: https://github.com/GoogleChrome/samples/tree/gh-pages/web-share

WebAuthentication API: ResidentKeyRequirement and credProps extension

Adds support for the AuthenticatorSelectionCriteria.residentKey property to specify during Web Authentication API (WebAuthn) credential registration whether a client-side discoverable credential should be created. Also adds support for the WebAuthn "credProps" extension, which indicates to the Relying Party whether a created credential is client-side discoverable. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/webauthn/pull/1191

No linked samples

WebHID (Human Interface Device)

Enables web applications to interact with human interface devices (HIDs) other than the standard supported devices (mice, keyboards, touchscreens, and gamepads). However, there are many other HID devices that are currently inaccessible to the web. This API allows web applications to request access to these devices, send and receive HID reports, and retrieve information about the report descriptor. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/hid/https://web.dev/hid-examples/

No linked samples

`navigator.webdriver === false` when automation is not enabled.

Prior to this change, Chromium only exposed `navigator.webdriver` when the browser was being automated. However, other browsers expose it unconditionally per the spec (https://w3c.github.io/webdriver/#interface), with the value `false` in case the browser is not being automated. We propose changing Chromium to align with other browsers and the spec. This is a potentially breaking change since web pages could in theory rely on the old `navigator.webdriver === undefined` behavior. #

This feature was specified in this Spec.

Resources

Docs: https://w3c.github.io/webdriver/#interface

No linked samples

display_override

Adds a new advanced field to the web manifest, "display_override", where a developer with special requirements can specify an explicit display fallback chain they would like applied. Here's an example of a website that wants "minimal-ui" to fall back to "standalone". { "display": "standalone", "display_override": ["minimal-ui"], } Note: This API is only intended to be used for advanced use cases & display modes only. Most developers will only need to use the "display" property. #

This feature was specified in this Spec.

Resources

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

No linked samples

performance.measureUserAgentSpecificMemory()

The feature adds a performance.measureUserAgentSpecificMemory() function that estimates the memory usage of the web page. The website needs to be cross-origin isolated to use the API. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/monitor-total-page-memory-usagehttps://github.com/WICG/performance-measure-memory/blob/master/ORIGIN_TRIAL.md

Samples: https://wpt.fyi/results/measure-memory?label=master&label=experimental&aligned&q=measure-memory

Origin Trials in-progress in 89

This release of Chrome had 1 new origin trials.

Federated Learning of Cohorts

The FLoC API would enable ad-targeting based on the user’s general browsing interest, without the websites knowing their exact browsing history. In today's web, people’s interests are typically inferred based on observing what sites or pages they visit, which relies on tracking techniques like third-party cookies. User privacy could be better protected if this can be accomplished without needing to collect a particular individual's exact browsing history. OT targeted to start end of March. #

This feature was specified in this Spec.

Flagged features in 89

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 89

This release of Chrome had 1 features deprecated.

Comma separator in iframe allow attribute

This deprecation removes the ability to use "," as a separator between items in a permissions policy declaration (feature policy declaration) in an iframe tag. Developers should switch to ";" as the correct separator. #

This feature was specified in this Spec.

Removed features in 89

This release of Chrome had 1 features removed.

Remove prefixed events for

Remove legacy prefixed events (webkitprerenderstart, webkitprerenderstop, webkitprerenderload, and webkitprerenderdomcontentloaded) dispatched on <link rel=prerender>. These were introduced for internal use and not upstreamed to any specifications. #

This feature was specified in this Spec.