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 72

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

Enabled by default in 72

This release of Chrome had 19 new features.

Crash Reports

Crash reports are a new type of report available via the Reporting API. These reports indicate that a crash occurred on a page and possibly the reason it occurred (out of memory for example). #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/reporting/blob/master/EXPLAINER.md#crashes

No linked samples

ECMAScript module namespace exports

This feature extends the existing syntax for module exports by the form export * as foo from "bar" which is the analogue to the existing form import * as foo from "bar" #

This feature was specified in this Spec.

ErrorEvent interface on web workers

The ErrorEvent interface, inheriting from from its parent Event, represents events providing information related to errors in scripts or in a file. According to specifications, unhandled runtime script errors fire an ErrorEvent at a target and this interface should be exposed to web workers. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent

No linked samples

Interoperable File.webkitRelativePath property

The File.webkitRelativePath of the File interface previously returned a value different from other major browsers, now it returns the same value. For example, if a user has the following local files: /tmp/a/foo/bar/1.txt, /tmp/a/foo/2.txt and they selected /tmp with a file chooser dialog, webkitRelativePath in Chrome was: foo/bar/1.txt, foo/2.txt Other browsers, which Chrome now matches, return this: tmp/a/foo/bar/1.txt, tmp/a/foo/2.txt #

This feature was specified in this Spec.

Intl.ListFormat

Intl.ListFormat helps libraries and frameworks format a list in a localized fashion by providing internationalized messages using a customary local word or phrase when available. For example, calling its format() method with ["Alice", "Bob", "Charlie", "Delta"] returns the string "Alice, Bob, Charlie, and Delta" in English. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2018/12/intl-listformat

No linked samples

JavaScript Modules: Credentials mode defaults to "same-origin"

The default credentials mode for module script requests is changing from "omit" to "same-origin", providing credentials to same-origin module script requests and their descendant scripts (static & dynamic imports). The current behavior can be surprising in that it's misaligned with other high-level features like the Fetch API, and in the web platform's current architecture, causes a second server connection. This is undesirable for developers looking to reduce latency. #

This feature was specified in this Spec.

MediaStream.getDisplayMedia()

Captures a screen or application window to a MediaStream, for recording or sharing over the network. This allows conferencing services to provide shared presentations in a conference, and allows remote control tools like Chrome Remote Desktop to provide an image of the controlled computer's screen to the controlling computer. #

This feature was specified in this Spec.

Resources

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

No linked samples

MediaStreamTrack resizeMode constraint

This property controls the method the browser uses to derive the resolution of a MediaStreamTrack. There are two supported values: "none": the track has the native resolution provided by the camera, its driver, or the OS. "crop-and-scale": the browser may use cropping and rescaling to adjust the resolution of the video produced by the camera. This is useful for getting more consistent behavior across browsers, or if an application wants to make sure it gets only native resolutions. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraintshttps://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings

No linked samples

Navigator.languages and languagechange event on workers

The navigator.languages property exposes the Accept Language header and the languageevent, which is fired on the Window object to notifiy scripts of changes to this value. Both features allow web applications to handle i18n in the client and react to user language changes. This change makes these features available to workers. Specifically, navigator.languages is available on workers and languageevent is fired on workers as well as the main thread. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages

No linked samples

Public class fields

This feature introduces public fields to classes in ECMAScript. class MyClass { instanceProperty = 0; static staticProperty = 0; } #

This feature was specified in this Spec.

Resources

Docs: https://v8.dev/features/class-fields#public-class-fieldshttps://developers.google.com/web/updates/2018/12/class-fieldshttp://2ality.com/2017/07/class-fields.htmlhttps://github.com/tc39/proposal-class-fields/blob/master/README.md

No linked samples

RTCPeerConnection.connectionState and RTCPeerConnection.onconnectionstatechanged

RTCPeerConnection.connectionState is a aggregate value computed from the transport states of the peerconnection's underlying ICE and DTLS transports. It's intended to provide a more complete overview of the connection state than RTCPeerConnection.iceConnectionState, which is only supposed to be based on the ICE transports. #

This feature was specified in this Spec.

Service worker: FetchEvent.resultingClientId

FetchEvent.resultingClientId, set on navigation requests or requests for workers, is the ID of the client, either a document or a worker that is created by the request. This is useful for associating the main resource request for a document with subsequent subresource requests from the document for logging and metrics purposes. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://github.com/web-platform-tests/wpt/blob/master/service-workers/service-worker/navigation-redirect.https.html

Service worker: FetchEvents for requests for same-origin favicons.

Previously, technical limitations prevented service workers from receiving FetchEvents for favicon requests. Now, service workers receive FetchEvents as long as the request URL is on the same-origin as the service worker. #

This feature was specified in this Spec.

Trusted Web Activities

Trusted Web Activities are a mode of Chrome Custom Tabs without browser UI, available to web content an app developer controls. We want the modern mobile web (primarily PWAs) to go mainstream. Nevertheless, they make up a small proportion of app experiences on Android today. The vast majority of developers simply haven’t made one yet. TWAs lower the risks of distribution by allowing developers to integrate their PWA into a native app and give PWA developers the same capabilities as native apps. #

This feature was specified in this Spec.

Resources

Docs: https://codelabs.developers.google.com/codelabs/getting-started-with-twas/index.htmlhttps://developers.google.com/web/updates/2019/02/using-twa

No linked samples

User Activation Query API

Some APIs cannot be used with a user activation (https://html.spec.whatwg.org/multipage/interaction.html#activation). Examples include requestFullScreen(), autoplay, window.open(). This restriction is a powerful tool for preventing annoying behavior by web pages. Unfortunately, there is no way to determine if a user activation is active. The User Activation Query API adds this ability. #

This feature was specified in this Spec.

User Activation v2

User activation is the mechanism to maintain active-user-interaction state that limits use of "abusable" APIs (e.g. opening popups or vibrating). The web exposed behavior varies widely among major browsers. To unify the web, this feature defines a new user activation model that is simple enough for cross-browser implementation. The main changes introduced by this model are: (a) there is no concept of token passing, and (b) activation visibility changes from stack-scoped to frame-scoped. #

This feature was specified in this Spec.

Resources

Docs: https://mustaqahmed.github.io/user-activation-v2/https://docs.google.com/document/d/1erpl1yqJlc1pH0QvVVmi1s3WzqQLsEXTLLh6VuYp228https://docs.google.com/document/d/1XL3vCedkqL65ueaGVD-kfB5RnnrnTaxLc7kmU91oerg

Samples: https://mustaqahmed.github.io/user-activation-v2/propagation/https://mustaqahmed.github.io/user-activation-v2/api-consistency/setTimeout.html

WebRTC Unified Plan SDP

RTCPeerConnections generate and parse SDP according to the standardized format. Exchanging SDP is needed to set up calls in WebRTC. Following the standard is important for cross-browser interoperability. Unified Plan also enables the RTCRtpTransceiver APIs. Changing from the old ("Plan B") to the new format can cause backwards-compatibility issues or break applications, see the Transition Guide: https://docs.google.com/document/d/1-ZfikoUtoJa9k-GZG1daN0BU3IjIanQ_JSscHxQesvU/edit?usp=sharing #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1-ZfikoUtoJa9k-GZG1daN0BU3IjIanQ_JSscHxQesvU/edit?usp=sharinghttps://webrtc.org/web-apis/chrome/unified-plan/https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-24

No linked samples

Well-formed JSON.stringify

A Stage 3 ECMAScript proposal changes JSON.stringify to prevent it from returning ill-formed Unicode strings. Previously, JSON.stringify would output lone surrogates if the input contained any lone surrogates: ``` JSON.stringify("\uD800"); // --> '"�"' ``` With this change, JSON.stringify outputs escape sequences for lone surrogates, making its output valid Unicode (and representable in UTF-8): ``` JSON.stringify("\uD800"); // --> '"\ud800"' ``` #

This feature was specified in this Spec.

Resources

Docs: https://v8.dev/features/well-formed-json-stringifyhttps://github.com/tc39/proposal-well-formed-stringify

No linked samples

Worker unhandled exception propagation

For dedicated workers, if an error is not handled then it will be propagated up to the parent context and the error reporting process begins again one layer up (e.g., to the window's onerror handler). This allows for errors to be propagated up to the original document giving developers the freedom to choose when and how to handle worker errors. #

This feature was specified in this Spec.

Origin Trials in-progress in 72

This release of Chrome had 0 new origin trials.

Flagged features in 72

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 72

This release of Chrome had 1 features deprecated.

TLS 1.0 and TLS 1.1

Deprecate TLS 1.0 and 1.1, targeting removal in Chrome 81 (early 2020). During the deprecation period, sites using those protocols will show a warning in DevTools. After the deprecation period, in 2020, they will fail to connect if they have not upgraded to TLS 1.2 by then. #

This feature was specified in this Spec.

Resources

Docs: https://security.googleblog.com/2018/10/modernizing-transport-security.html

No linked samples

Removed features in 72

This release of Chrome had 4 features removed.

Cache API: reject addAll() when requests would overwrite each other

The `Cache.addAll()` API allows multiple entries to be added to the cache at once. The spec requires that each request/response pair avoid overwriting another entry being added in the same call. Previously chrome would resolve such conflicts by storing the later entry and ignoring the earlier entry. This feature is to fix this behavior and properly reject with InvalidStateError. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/Cache/addAll

No linked samples

Remove HTTP-Based Public Key Pinning

HTTP-Based Public Key Pinning (HPKP) was intended to allow websites to send an HTTP header that pins one or more of the public keys present in the site's certificate chain. It has very low adoption, and although it provides security against certificate misissuance, it also creates risks of denial of service and hostile pinning. See https://groups.google.com/a/chromium.org/d/msg/blink-dev/he9tr7p3rZ8/eNMwKPmUBAAJ for details. #

This feature was specified in this Spec.

Rendering FTP resources

FTP is a non-securable legacy protocol. When even the linux kernel is migrating off of it (https://www.kernel.org/shutting-down-ftp-services.html), it's really time to move on. One step toward deprecation and removal is to deprecate rendering resources from FTP servers and instead download them. We'll still generate directory listings, but any non-directory listing could be downloaded rather than rendered in the browser. #

This feature was specified in this Spec.

Treat '#' as ending data URI body content

By spec, '#' characters in data URIs should not be treated as part of the URI body, and should instead only mark the start of the URI fragment component. Historically Chrome has not adhered to the spec, instead treating '#' characters as both fragment-starters and part of the body. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: data:text/html,body#shouldnt_render_in_body