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 69

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

Enabled by default in 69

This release of Chrome had 30 new features.

Add RTCRtpParameters.headerExtensions

This change adds support for the RTCRtpParameters.headerExtensions dictionary entry which is returned by RTCRtpSender.getParameters(). This is a read-only field that allows inspection of the parameters that are set on a PeerConnection after negotiation. #

This feature was specified in this Spec.

Array.prototype.{flat,flatMap}

JavaScript arrays are getting two new methods. `Array.prototype.flat()` returns a new array with all sub-array elements concatenated into it recursively up to the specified depth. The sub-array elements become members of the new array. `Array.prototype.flatMap()` first maps each element using a mapping function, then flattens the result into a new array. This method is functionally equivalent to a map followed by a flatten of depth 1. #

This feature was specified in this Spec.

Resources

Docs: https://v8.dev/features/array-flat-flatmaphttps://developers.google.com/web/updates/2018/03/smooshgate

No linked samples

Background Tab Resource Load Throttling

For invisible frames e.g. ones in background tabs, Chrome set a per-frame simultaneous loading limit; 3 for the top frame, 2 for sub-frames are permitted to go to the network stack. Excessive requests are enqueued and go when the previous request finishes. Thus, all requests will run eventually. Most fetches made by HTML elements / CSS are throttleable. WebSockets, WebRTC's data channel, Fetch API, XMLHttpRequest, EventSource, Video and Audio are excluded today to allow keep-alive connections. #

This feature was specified in this Spec.

CSP3: unsafe-hashes

'unsafe-hashes' is a feature in CSP3 which allows developers to enable specific event handlers without needing to use the less safe 'unsafe-inline' keyword. If 'unsafe-hashes' is present, inline event handlers are allowed to match against hashes specified by the 'script-src' directive (or its fallback if not present). #

This feature was specified in this Spec.

CSP: `report-to` directive

The `report-to` directive wires CSP violation reports up to the Reporting API which allows the browser to bundle multiple reports when sending them to the server rather than creating a POST for each individual report. This allows reports to be collected in a way that is friendlier for users' batteries. This change also deprecates the existing `report-uri` directive. #

This feature was specified in this Spec.

Resources

Docs: https://w3c.github.io/reporting/

No linked samples

CSS Scroll Snap Points

The CSS scroll snap specification introduces snap points as a way to "enforce the scroll offsets that a scroll container's visual viewport may end at after a scrolling operation has completed". Scroll snapping applies to both user scroll operations such as touch, wheel scrolling, or scrollbar dragging, and programmatic scroll operations such as Element.scrollTo(). This improves the user experience by allowing scrollable zones to easily stop at predefined points. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2018/07/css-scroll-snap

Samples: https://webdesign.tutsplus.com/tutorials/how-to-scroll-snap-using-css--cms-30333

CSS conic-gradient

Support was added for CSS conic (angular/sweep) gradients. Conic gradients allow color transitions around a center rather than radiating from it. This allows, for example, a web developer to create a hue wheel using only two CSS properties. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://leaverou.github.io/conic-gradient/

CSS logical flow relative margins, paddings and borders

Chrome now implements logical margin, padding, and border CSS properties using standard names, specifically margin-{block,inline}-{start,end}, padding-{block,inline}-{start,end} and border-{block,inline}-{start,end}-{width,style,color}. These capabilities were previously supported through -webkit prefixes and non-standard names. Shorthand properties are only added for border-{block,inline}-{start,end}. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/docs/Web/CSS/CSS_Logical_Properties

No linked samples

Deprecation Reports

A new feature of the Reporting API gives developers more insight into the functioning of their code on client machines. Deprecation reports allow deprecation warnings, currently only available in developer tool consoles, to be sent to the back end, or captured in callbacks using ReportingObserver. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/W3C/reporting/blob/master/EXPLAINER.md#deprecations

No linked samples

Display cutout and CSS env() support

Display cutouts are now supported in Chrome through CSS environment variables and the viewport-fit meta tag. This allows developers to take advantage of the entire screen on devices that have a display cutout. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1lbZi18_5cMlLOphpFqTbuI4B0YGykQvvtRbw6j67UyE/edithttps://www.w3.org/TR/css-round-display-1/#viewport-fit-descriptorhttps://drafts.csswg.org/css-env-1/

No linked samples

Element.toggleAttribute

A new method named Element.toggleAttribute() allows toggling the existence of an element’s attribute in a way similar to Element.classList.toggle. An optional force parameter forces toggling the attribute even if it doesn't exist. This makes managing boolean attributes much simpler as the interface doesn't use strings as does Element.setAttribute(). #

This feature was specified in this Spec.

Fetch API: Request.isHistoryNavigation

Add a boolean property to request objects to indicate whether the particular request is a history navigation. This allows a service worker to know whether a request was due to a back/forward navigation. An example of how this might be used is that a service worker could respond to such a navigation with a cached response. #

This feature was specified in this Spec.

Keyboard Map

This API returns a map which translates from KeyboardEvent.code values into strings that can be shown to the user to identify each key. This is not possible with existing web platform APIs because the value that should be shown to the user depends on the keyboard layouts that the user has installed and activated. #

This feature was specified in this Spec.

Resources

Docs: Original WICG incubation proposal: https://discourse.wicg.io/t/keyboardevent-getcharacterbykey-key-modifierlist/1857/3Explainer: https://github.com/WICG/keyboard-map/blob/master/explainer.md

No linked samples

Nested dedicated workers

This allows workers to spawn additional, descendant dedicated workers. This can be used to better distribute tasks without needing time on the main thread where rendering and user input are being handled. This also allows libraries which use workers to be adapted to run in a worker context themselves, giving developers more options to move business logic off of the main thread. #

This feature was specified in this Spec.

Network Error Logging

This feature defines a mechanism that enables developers to declare a network error reporting policy for a web application via the `NEL` header. A user agent can use this policy to report encountered network errors that prevented it from successfully fetching requested resources. This is done through the common Reporting API. #

This feature was specified in this Spec.

Resources

Docs: https://w3c.github.io/network-error-logging/https://w3c.github.io/reporting/https://dcreager.net/nel/intro/

No linked samples

OffscreenCanvas

OffscreenCanvas is a new interface that allows canvas rendering contexts (2D and WebGL) to be used in Workers. Making canvas rendering contexts available to workers increases parallelism in web applications, leading to improved performance on multi-core systems. As part of the required tooling for this to work, this also launches DedicatedWorker.requestAnimationFrame(), allowing animation-like events to be triggered the same on dedicated workers as they are in Window. #

This feature was specified in this Spec.

Resources

Docs: https://wiki.whatwg.org/wiki/OffscreenCanvashttps://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas/OffscreenCanvas

Samples: https://ebidel.github.io/demos/offscreencanvas.html

RTCRtpSender / RTCRtpReceiver.getCapabilities()

The getCapabilities() method returns the most optimistic view of the capabilities of the system for sending media of the given kind. It does not reserve any resources, ports, or other state but is meant to provide a way to discover the types of capabilities of the browser including which codecs or RTP extensions may be supported. #

This feature was specified in this Spec.

Resources

Docs: RTCRtpSender.getCapabilities(): https://w3c.github.io/webrtc-pc/#dom-rtcrtpsender-getcapabilitiesRTCRtpReceiver.getCapabilities(): https://w3c.github.io/webrtc-pc/#dom-rtcrtpreceiver-getcapabilities

No linked samples

Reporting API

The Reporting API defines a generic reporting framework which allows web developers to associate a set of named reporting endpoints with an origin. Various platform features (like Content Security Policy, Network Error Reporting, and others) will use these endpoints to deliver feature-specific reports in a consistent manner. #

This feature was specified in this Spec.

ReportingObserver

A new feature of the Reporting API gives developers more insight into the functioning of their code on client machines. The ReportingObserver API allows JavaScript to capture reports in callback, which can be used to save custom reporting data to page analytics. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/W3C/reporting/blob/master/EXPLAINER.md#reportingobserver---observing-reports-from-javascripthttps://developers.google.com/web/updates/2018/07/reportingobserver

Samples: https://developers.google.com/web/updates/2018/07/reportingobserver?hl=en#examples

ServiceWorkerRegistration.update() resolves with a registration.

ServiceWorkerRegistration.update() previously resolved with undefined. Now it resolves to the registration object as required by the specification. #

This feature was specified in this Spec.

Resources

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

No linked samples

Stylesheets activated after the body is started do not block paint

External stylesheets in the body of the document or that get activated after the body has started to be parsed will no longer block paint but they will pause the parser. The end result is that any DOM content before the body stylesheet will continue to paint but content after the stylesheet will not appear until after the stylesheet has loaded. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: http://test.patrickmeenan.com/css/

Support for CTAP2 FIDO devices via the Web Authentication API

This feature adds support for CTAP2 devices, which provide advanced security capabilities such as biometric authentication and resident keys (keys stored on the device). The WebAuthentication API (https://www.chromestatus.com/feature/5669923372138496) formerly only supported Universal 2nd Factor (U2F, also known as CTAP1 ) devices at the transport layer. This change doesn't alter the API surface itself but enables richer device interactions via the existing Web Authentication API. #

This feature was specified in this Spec.

TLS 1.3 certificate compression with Brotli

TLS 1.3 encrypts the server's certificates. With that protection in place, we finally have the confidence that we can implement certificate compression without causing middlebox issues. Certificate compression is an IETF TLS WG draft (https://tools.ietf.org/html/draft-ietf-tls-certificate-compression-03) and we plan on implementing that specification, supporting the Brotli algorithm. #

This feature was specified in this Spec.

Three new network quality client hints

Support for the “rtt”, “downlink”, and “ect” client hint values and HTTP request headers have been added to Chrome to convey Chrome’s network connection speed to servers. These network quality hints provide the same values as existing Network Information APIs navigator.connection.rtt, navigator.connection.downlink, and navigator.connection.effectiveType. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://bit.ly/client-hints-demo

Web Locks API

This API allows scripts running in one tab to asynchronously acquire a lock, hold it while work is performed, then release it. While held, no other script in the origin can acquire the same lock. A lock represents some potentially shared resource, identified by a name chosen by the web app. For example, if a web app running in multiple tabs wants to ensure that only one tab is syncing to the network, each tab could try to acquire a "my_net_sync" lock, but only one tab will succeed. #

This feature was specified in this Spec.

WebAssembly Import/Export Mutable Globals

Allows WebAssembly modules to import and export mutable globals. This building block will allow efficient passing of values like shadow stacks pointers between dynamically linked modules (especially in the multi-threaded case). #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WebAssembly/mutable-global/blob/master/proposals/mutable-global/Overview.md

No linked samples

WebAssembly Sign Extension Opcodes

Add sign extension opcodes to WebAssembly. This makes some code sequences shorter and allows us to provide only zero extended versions of atomic opcodes for threads. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WebAssembly/sign-extension-ops/blob/master/proposals/sign-extension-ops/Overview.mdhttps://github.com/WebAssembly/design/issues/1178

No linked samples

WebRTC RTCRtpTransceiver in Unified Plan

When spec-complaint SDP format "Unified Plan" is used, RTCRtpTransceiver describes each sender-receiver pair that is added to the RTCPeerConnection. This represents the components used to send and receive media. Exposing the transceiver gives the application the ability to receive media early and provides more control over the generated SDP. APIs that are shipping include RTCRtpTransceiver, RTCPeerConnection.addTransceiver() and RTCPeerConnection.getTransceivers(). #

This feature was specified in this Spec.

performance.memory improvements

The performance.memory property is a non-standard API, seeing significant usage from some of our partners. With this change, if the renderer is locked to a site reported values will not contain coarse quantization and delay. This will allow developers to detect performance regressions from user data more easily because the memory measurements will be more accurate and can be taken more frequently. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1xVO7VMgh-6A4tezW1DJaY52jDO8vBjN81qBq4utv9uY/edit?hl=en#heading=h.l49zrjhu8egi

No linked samples

service worker: Don't expose the API to insecure contexts.

Because of a technical limitation, navigator.serviceWorker was previously exposed on insecure contexts and threw a Security Error when used. After this change, navigator.serviceWorker will return undefined. This aligns with the specification. #

This feature was specified in this Spec.

Resources

Docs: https://w3c.github.io/webappsec-secure-contexts/#secure-contexts

No linked samples

Origin Trials in-progress in 69

This release of Chrome had 0 new origin trials.

Flagged features in 69

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 69

This release of Chrome had 0 features deprecated.

Removed features in 69

This release of Chrome had 5 features removed.

Deprecate And Remove Support For Invalid DNS Names

We have a security vulnerability that is rather long in the tooth (not yet public) that depends, in part, on our DNS resolver’s willingness to attempt to resolve arbitrary garbage strings, including strings that could not ever be valid hostnames. I propose to remove support for such requests in our DNS resolution code, and attempt only to resolve legal hostnames (“preferred name syntax”). Additionally, I propose we accept underscores (_) in names. (See the measurement CL.) #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/13NhCJ-AN7gGNmcJML8wYTpMo7OowcPzF2s4M_Ts5v5k/edit

No linked samples

Remove 'stalled' events for HTMLMediaElements using MediaSourceExtensions

The HTMLMediaElement.stalled event fires when media download has failed to progress for at least 3 seconds. In Media Source Extensions, the web app manages the download and the media element is not aware of its progress. Since some apps append media data in chunks larger than 3 seconds, stalled was being fired at inappropriate times. To solve this, stalled has been removed for Media Source Extensions. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://chromium-review.googlesource.com/c/chromium/src/+/982564/17/third_party/WebKit/LayoutTests/external/wpt/media-source/mediasource-append-buffer.html

Remove document.createTouchList

The document.createTouchList() method is being removed because the Touch() constructor has been supported since Chrome 48. #

This feature was specified in this Spec.

Remove extra form data , if "value" attribute is present with non-empty value for

As per spec, https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#constructing-form-data-set, the constructed "form data set" should not include the value of the image button #

This feature was specified in this Spec.

window.confirm() will not activate parent page

If a document in a background tab calls window.confirm() then the call to confirm() will return immediately with false, and no dialog will be shown to the user. If the tab is active, then the call will show a dialog. Specifically, this removes the ability to use window.confirm() to bring a tab to the front against the user’s will. #

This feature was specified in this Spec.