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 73

Enabled (27) | Origin Trial (4) | Behind a flag (2) | Deprecated (1) | Removed (2)

Enabled by default in 73

This release of Chrome had 27 new features.

::part pseudo element on shadow hosts

This specification defines the ::part() pseudo-element on shadow hosts, allowing shadow hosts to selectively expose chosen elements from their shadow tree to the outside page for styling purposes. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/fergald/docs/blob/master/explainers/css-shadow-parts-1.md

No linked samples

CSS: Use the response URL as the base URL

The base URL of stylesheets is now the response URL of the stylesheet rather than the request URL. These are only different if a service worker provided the response. If the service worker does respondWith(fetch(url)), the base URL becomes url. Also, to align with the specification, stylesheets that (a) failed to load due to network error, or (b) loaded via a redirect from cross-origin back to same-origin are considered cross-origin. #

This feature was specified in this Spec.

Constructible Stylesheets

The API provides a way to create CSSStyleSheet objects from script without needing <style> or <link> elements. Script can optionally modify the stylesheet by adding, removing, or replacing rules in it. Each stylesheet object can then be adopted/used in multiple tree scopes (document/shadow roots). Not only does this reduce memory duplication, it also allows an element’s styles to be modified in a single location. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://github.com/WICG/construct-stylesheets/blob/gh-pages/explainer.md

Cross-Origin Resource Policy

“Cross-Origin-Resource-Policy” response header allows http servers to ask the browser to prevent cross-origin or cross-site embedding of the returned resource. It is complementary to the Cross-Origin Read Blocking feature and is especially valuable for resources not covered by CORB (which only protects HTML, XML and JSON). “Cross-Origin-Resource-Policy” is currently the only way to protect images against Spectre attacks or against compromised renderers. #

This feature was specified in this Spec.

DOMMatrixReadOnly.scaleNonUniform()

This function post-multiplies a non-uniform scale transformation on the current matrix and returns the resulting matrix. It is being re-added to support legacy compatibility with SVGMatrix. Non-uniform scaling is a transformation in which at least one of the scaling factors is different from the others. For example, non-uniform scaling might turn a rectangle into a square or a parallelogram. #

This feature was specified in this Spec.

EME Extension: HDCP Policy Check

This feature provides applications the ability to query whether a certain HDCP policy can be enforced so that playback can be started at the optimum resolution for the best user experience. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2018/08/chrome-69-media-updates#hdcp

Samples: https://googlechrome.github.io/samples/hdcp-detection/

Flexbox: min-height: auto applies to nested flex boxes

We changed our rendering to match the flexbox specification and other browsers. In previous versions, Chrome did not implement the automatic minimum size for the specific case of a column flexbox containing a flex item that is itself a flexbox. We have now changed this so that such flex items do get the right minimum size. This can cause flex items to not shrink anymore when they used to; to avoid that, set min-height: auto on the flex item. #

This feature was specified in this Spec.

GamePad API: GamepadButton touched attribute

Provides the touched state of a gamepad button, which indicates whether a finger is on a button independent of whether it's being pressed. #

This feature was specified in this Spec.

Implicit Root Scroller

Allows viewport-filling scrollers (iframes, divs) to perform document-level scrolling actions. I.e. show/hide URL bar, overscroll glow, rotation anchoring, etc. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/bokand/root-scroller/blob/master/explainer.md

Samples: http://bokand.github.io/rs/implicit.html

Media Session

Enable websites to customize media metadata so they can control the notification and lock screen UI. Also allows control of media from outside a page, as well as using platform UIs and managing media keys. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/API/Media_Session_APIhttps://developers.google.com/web/updates/2017/02/media-session

Samples: https://googlechrome.github.io/samples/media-session/

Object.fromEntries()

Object.fromEntries() turns a list of key-value pairs into an object. #

This feature was specified in this Spec.

Resources

Docs: https://v8.dev/features/object-fromentries

Samples: https://v8.dev/features/object-fromentries

Origin-Signed HTTP Exchanges

Allows sites to send HTTP request/response pairs (exchanges) that are authoritative for an origin, even when the server itself is not authoritative for that origin. This is part of Web Packaging, which will allow people to share web applications peer-to-peer, while offline, with proof that an app comes from its original author. This also shares some infrastructure with signature-based SRI. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/webpackage/blob/master/explainer.md

No linked samples

Per-media DSCP through RtpSender::SetParameters

Add a networkPriority field to RtcRtpSender Paremeters property to allow different senders' media to use differnt DSCP markings. This allows the client to accept configuration from administrators to work better in constrained network environments, or with wifi WMM prioritization. #

This feature was specified in this Spec.

Resources

Docs: https://tools.ietf.org/html/draft-ietf-tsvwg-rtcweb-qos-18#section-5

No linked samples

PerformanceObserver supportedEntryTypes

PerformanceObserver.supportedEntryTypes provides a way to feature-detect the PerformanceEntry types that are implemented in a web browser. The types are sorted alphabetically. For example, a developer running this in Chrome could get something like this in the console: PerformanceObserver.supportedEntryTypes // Output is: ["longtask", "mark", "measure", "navigation", "paint", "resource"] #

This feature was specified in this Spec.

RTCConfiguration.offerExtmapAllowMixed

Adds a boolean property to RTCConfiguration.offerExtmapAllowMixed() to enable the extmap-allow-mixed attribute in a session description protocol (SDP) offer. The SDP attribute extmap-allow-mixed, as defined in RFC8285, will be included in the SDP offer if this property is set to true. The SDP attribute extmap-allow-mixed is supported from Chrome 71, but due to backwards compatibility problems it was not included in the SDP offer by default. #

This feature was specified in this Spec.

Resources

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

No linked samples

RTCRtpReceiver.getParameters()

The getParameters() method returns the RTCRtpReceiver object's track decoding parameters, which includes the codec and RTP header lists negotiated for the call, the RTCP information, and the layer count. This API is analog to RTCRtpSender.getParameters() and presents similar information for a call, but on the receiver side. It does not allow modification of the call's parameters. #

This feature was specified in this Spec.

RTCRtpReceiver.getSynchronizationSources()

The getSynchronizationSources() method returns the latest playout timestamps of RTP packets for audio and video receivers. This is useful for determining in real time which streams are active, such as for the use case of audio meters or prioritizing displaying active participant streams in the UI. #

This feature was specified in this Spec.

RegExp String.prototype.matchAll()

String.prototype.matchAll() behaves similarly to String.prototype.match(), but returns a full regexp result object for each match in a global or sticky regexp. This offers a simple way to iterate over matches when access to, for example, capture groups is needed. #

This feature was specified in this Spec.

Resources

Docs: https://mathiasbynens.be/notes/es-regexp-proposals#matchAllhttps://v8.dev/features/string-matchall

No linked samples

Spec-compliant shadow blur-radius

Historically, Blink's blur-radius interpretation has been at odds with both the CSS and Canvas2D specs: Blink shadows cover about half the expected area (see linked bug). With this change Gaussian blur sigma is now computed as 1/2 blur-radius, as mandated by spec. Blink's shadow implementation now matches FireFox and Safari. #

This feature was specified in this Spec.

Resources

Docs: https://www.w3.org/TR/css-backgrounds-3/#shadow-blurhttps://html.spec.whatwg.org/multipage/canvas.html#when-shadows-are-drawn

No linked samples

Transform list interpolation

Chrome will improve how CSS transforms are handled to reduce cases where a matrix interpolation fallback is used. An interpolation is an intermediate transformation. Sometimes interpretation of the CSS rule requires falling back to a matrix to accomplish the interpolation, and this can produce visual results other than what the web developer intends. To mitigate this, the spec was changed to reduce the number of situations when this can occur. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: wpt/css/css-transforms/animation/list-interpolation-expected.txtwpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt

Treat Document Level Wheel/Mousewheel Event Listeners as Passive

The wheel/mousewheel event listeners that are registered on document level targets (window.document, window.document.body, or window) will be treated as passive if not specified as otherwise and calling preventDefault() inside such listeners will be ignored. This is the wheel version of the scrolling intervention which is shipped in Chrome 56: https://developers.google.com/web/updates/2017/01/scrolling-intervention #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1dLxnzyixmR9MeHXE75Uz2nIVA0PaEjN4W3V_-df0sYI/edit?usp=sharinghttps://github.com/sahel-sh/Document-level-passive-wheel-event-listeners/blob/master/Explainer.md

No linked samples

Turn RTCRtpContributingSource from an interface into a dictionary

The specification requires RTCRtpContributingSource to be a dictionary, but it was previously shipped as an interface. With this change RTCRtpContributingSource will no longer have a prototype and getContributingSources() will create a new set of objects with each call. #

This feature was specified in this Spec.

Windows Web Authentication APIs

This feature integrates Chrome on Windows with the Windows WebAuthn platform APIs. This enables talking to FIDO U2F and CTAP authenticators for 2-factor authentication over USB, BLE, NFC via the Web Authentication API. This additionally adds support for the Windows Hello platform authenticator for 2-factor and user-verifying authentication. #

This feature was specified in this Spec.

XHR: Use the response URL for responseURL and documents

XHR now uses the response URL rather than the request URL for responseURL and responseXML. These are only different if a service worker provided the response. If the service worker does respondWith(fetch(url)), then responseURL is url and responseXML.URL is url. #

This feature was specified in this Spec.

XSLT: Use the response URL as the base URL

The base URL of XSLT stylesheets is now the response URL of the stylesheet rather than the request URL. These are only different if a service worker provided the response. If the service worker does respondWith(fetch(url)), the base URL becomes url. #

This feature was specified in this Spec.

document.visibilityState set to “hidden” when WebContents is occluded

Thanks to the WebContents Occlusion feature in Chromium, the Page Visibility Web API will now reflect accurately the visibility state of web pages, especially when they are occluded. In other words, the document.visibilityState value will be “hidden” when browser tab/window is covered by one or multiple window(s). #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1tPuJE0Vws7oskjjqrawNfMkwFtGxyHV33yQagiplVfY/edit

No linked samples

imagesrcset and imagesizes attributes on link rel=preload

Add imagesrcset and imagesizes attributes to <link rel=preload as=image>, that correspond to the srcset and sizes attributes of HTMLImageElement. We are using imagesizes here instead of sizes because it already has a different meaning for HTMLLinkElement in the rel=icon case. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1wob4u9AER1kmUodqIEp78BuziSJChBl54A5ZRXPRCUI/edit#

Samples: https://irori.github.io/imagesrcset-demo/

Origin Trials in-progress in 73

This release of Chrome had 4 new origin trials.

Auto Picture-in-Picture

Video in installed Progressive Web Apps (PWAs) will enter and exit picture-in-picture automatically when a document's visibility changes. Web apps for video meetings will benefit by allowing picture-in-picture when users switch back and forth between web apps and other applications or tabs. This is currently not possible because a user gesture is required to enter picture-in-picture. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2019/02/chrome-73-media-updates#auto-piphttps://github.com/WICG/picture-in-picture/issues/111

Samples: https://googlechrome.github.io/samples/auto-picture-in-picture/

Feature Policy violation reporting

Enable reporting of feature policy violations through the Reporting API. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/feature-policy/blob/master/reporting.md

No linked samples

Skip Ad in Picture-in-Picture window

Show a “Skip Ad” button in Picture-in-Picture window that notifies websites when user a interacts with it. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2019/02/chrome-73-media-updates#skipadhttps://github.com/WICG/mediasession/pull/203

Samples: https://googlechrome.github.io/samples/picture-in-picture/skip-ad.html

WebRTC audio jitter buffer RTX handling

Enables functionality in the audio jitter buffer in WebRTC to adapt the delay to retransmitted packets. #

This feature was specified in this Spec.

Resources

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

No linked samples

Flagged features in 73

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

CanvasRenderingContext2D.getContextAttributes()

This method allows web developers to read back the ContextAttributes consumed by the platform and compare them to what were requested. Shipping this method will allow lining up with WebGL's homonymous method. [1] https://cs.chromium.org/chromium/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl?l=142 #

This feature was specified in this Spec.

Resources

Docs: https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-canvas-getcontextattributes

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

RTCQuicTransport & RTCQuicStream

A standalone API using the QUIC transport protocol to exchange arbitrary data with remote peers. This provides a generic multiple-way transport that doesn't use the full PeerConnection stack designed for media purposes. The base API is shared with WebTransport. The difference is the RTCQuicTransport is P2P and uses ICE. For discussion on the webtransport see: https://discourse.wicg.io/t/webtransport-proposal/3508 https://github.com/WICG/web-transport #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/12oNEcgjAjQERMvATCVCWpoTxNU47NRUzxCK5g0FysTk/edit?usp=sharing

No linked samples

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 73

This release of Chrome had 1 features deprecated.

Sending custom per-request user-agent to HTTP proxies in CONNECT requests

When establishing an HTTPS connection over an HTTP/HTTPS/H2/QUIC proxy, we send a CONNECT request with its own set of headers. Currently, if the original HTTPS request had a custom user-agent string, we would send that with the CONNECT request, rather than the default user-agent header. We plan to remove this behavior, and just use the configured global user-agent header. #

This feature was specified in this Spec.

Removed features in 73

This release of Chrome had 2 features removed.

EXPLAIN and REINDEX support in WebSQL

EXPLAIN's output is not guaranteed to be stable over SQLite versions, so developers cannot rely on it. REINDEX is only useful when collation sequence definitions change, and Chrome only uses the built-in collation sequences. #

This feature was specified in this Spec.

Resources

Docs: https://www.sqlite.org/lang_explain.htmlhttps://www.sqlite.org/lang_reindex.html

No linked samples

Remove isomorphic decoding of URL fragment identifier

When Chrome opens a URL with a fragment id, it decodes %xx and applies isomorphic-decode [1] to it, then tries to find an element with the decoding result as an ID in some cases. No other browsers do this, and it's not defined by the standard. For example, if a user opens example.com/#%F8%C0, Chrome 1. searches the page for an element with id="%F8%C0" 2. If it’s not found, it searches the page for an element with id="&#xF8;&#xC0;" [1] https://infra.spec.whatwg.org/#isomorphic-decode #

This feature was specified in this Spec.