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 71

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

Enabled by default in 71

This release of Chrome had 21 new features.

'left' and 'right' values for the 'text-underline-position' property

CSS3 Text Decoration spec adds new properties that implement new text decoration styling features such as lines, color, and style. This feature adds support for 'left' and 'right' values of the 'text-underline-position' property. The property itself shipped in Chrome 57. Currently, in vertical flow for Chinese and Japanese, which side the underline appears on is not the same across browsers. This enhancement fixes that. #

This feature was specified in this Spec.

:host, :host-context, and ::slotted specificity

Chrome did not count the specificity for the :host() and :host-context() pseudo classes themselves. ::slotted() did not count the specificity for its arguments. This was not specified until [1] was resolved. From M71 Chrome ships specificity calculations per spec for Shadow DOM v1. The old behavior is kept for v0 for compatibility with existing content. [1] https://github.com/w3c/csswg-drafts/issues/1915 Bugs: https://crbug.com/888042 https://crbug.com/857415 #

This feature was specified in this Spec.

Resources

Docs: https://drafts.csswg.org/css-scoping/#host-selectorhttps://drafts.csswg.org/css-scoping/#slotted-pseudo

No linked samples

Add FullscreenOptions

Adds the ability to customize the requestFullscreen API with FullscreenOptions on Android. This allows developers to chose between making the navigation bar visible versus a completely immersive mode where no user agent controls are shown until a gesture is performed. Some developers may prefer that the navigation bar be visible when entering fullscreen mode as it can be difficult for users to determine how to exit fullscreen mode. Some browsers such as Samsung also make this the default. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/dtapuska/fullscreenhttps://github.com/whatwg/fullscreen/issues/123

No linked samples

Async touchpad pinch zoom events

Async touchpad pinch zoom events are for improving the page pinch zoom performance. Currently, the touchpad pinch zoom exposes a control wheel event that allows JS to cancel it. With this change, if the user doesn't make a pinch action on the touchpad, effectively canceling the control wheel event, then following control wheel events are not cancelable. But JavaScript does not know which ctrl wheel is the first one in the sequence, so if you want to cancel pinch zoom, you need to cancel all of t #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1Mou2PDOHcWqCcNQ3p-PaGjJddDulF6uQh-MBmTYGcEw/edit#heading=h.xgjl2srtytjt

No linked samples

COLR/CPAL font support

COLR/CPAL fonts are one type of OpenType color fonts. These fonts compose layers of vector outline glyphs and color palette information into the final colored glyph. With this change, Chrome will support 3 color font formats cross-platform, the other two being CBDT/CBLC and SBIX. Because they are vector based, COLR/CPAL fonts provide for faster downloads and require less storage. An example of a COLR/CPAL font is the Twemoji color font (https://github.com/mozilla/twemoji-colr). #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://pixelambacht.nl/chromacheck/https://github.com/mozilla/twemoji-colr

CSS gradient color stop double-position syntax

Add support for CSS Image Values 4 color stop position syntax. Currently, repeating colors require explicit positions, for example: linear-gradient(45deg, black 25%, black 50%, white 50%, white 75%) To simplify the definition of solid color bands, css-images-4 allows specifying up to two positions for a color: linear-gradient(45deg, black 25% 50%, white 50% 75%) #

This feature was specified in this Spec.

Resources

No linked docs

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

Call capture event listeners in capturing phase at shadow hosts

Call capture event listeners in capturing phase at shadow hosts. Per the discussion of https://github.com/whatwg/dom/issues/685, Blink will align the event dispatch behavior to other browsers; Call capture event listeners in capturing phase at shadow hosts. #

This feature was specified in this Spec.

ImageCapture support for exposureTime constraint

Image Capture API has a means to set exposureMode to manual which is not useful if you cannot set the exposure time (aka shutter speed, aka exposure duration). This change provides an interface for getting the exposure time range values as well as setting the exposure time in time units. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/mediacapture-image/issues/199https://github.com/w3c/mediacapture-image/pull/200

Samples: https://codepen.io/rijuB/pen/eKwLXB

IndexedDB database enumeration

IndexedDB databases() returns a list of all databases accessible by the origin of the current frame. The return value is a Promise that resolves with a list of IDBDatabaseInfo objects (currently just dictionaries of database name and version). #

This feature was specified in this Spec.

Resources

Docs: Explainer: https://andreas-butler.github.io/idb-databases/EXPLAINER

No linked samples

Intl.RelativeTimeFormat

Intl.RelativeTimeFormat helps libraries and frameworks format relative time in a localized fashion by providing internationalized messages for date and time fields, using a customary local word or phrase when available. For example, calling its format() method with -5 and 'day' would return the string '5 days ago'. Intl.RelativeTimeFormat is available behind a flag in Firefox 58. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2018/10/intl-relativetimeformat

No linked samples

Permission API: "persistent-storage" property

The "persistent-storage" property is a new permission for the Permission API. The permission state can already be queried with navigator.storage.persisted(), with this change navigator.permissions.query({name:"persistent-storage"}) can be used as well. #

This feature was specified in this Spec.

Resources

Docs: https://storage.spec.whatwg.org/#persistence

No linked samples

Permission Delegation

Currently, iframes on the web can make permission requests and users will be shown permission prompts that contain the origin of the iframe. Making permission decisions for iframes and managing previous decisions is complicated and confusing. To address this problem, we propose that users only ever be required to make permission decisions about the top level origin of a website. It is then up to the top level website to delegate permission to the various iframes which it embeds, if it chooses. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1x5QejvpyQ71LPWhMLsaM1lWCfSsBsSQ8Dap9kJ6uLv0/edit?ts=5b857603#heading=h.ib6rctasbt3y

No linked samples

Picture-in-Picture (PiP)

The Picture-in-Picture API allows websites to create a floating video window that is always on top of other windows so that users may continue consuming media while they interact with other sites or applications on their device. This change only applies to <video> elements. #

This feature was specified in this Spec.

Resources

Docs: https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picturehttps://github.com/WICG/picture-in-picture/blob/master/explainer.md

Samples: https://googlechrome.github.io/samples/picture-in-picture/https://github.com/GoogleChromeLabs/picture-in-picture-chrome-extension

Rename Intl.DateTimeFormat.prototype.formatToParts type "dayperiod" to "dayPeriod"

This change corrects a non-compliant type in the formatToParts implementation. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts

No linked samples

TextEncoderStream and TextDecoderStream APIs

Text encoding and decoding will support streams to enable you to easily convert streams of binary data to text and vice-versa. An example of its usefulness is with readable streams. With a non-stream Response object, response.Body.text() returns text. There is no equivalent for the ReadableStream returned by Response.Body, which can only return bytes. With the new API a streaming response body may be converted to text as so: Response.Body.pipeThrough(new TextDecoderStream()). #

This feature was specified in this Spec.

Resources

Docs: https://github.com/ricea/encoding-streams/blob/master/stream-explainer.md

No linked samples

Unprefixed Fullscreen API

The fullscreen API has features for entering, and exiting fullscreen mode as well as event handlers for monitoring such changes. A prefixed version of the API has been supported since Chrome 15. This update adds an unprefixed version of the API. #

This feature was specified in this Spec.

Web Authentication getTransports

The W3C Web Authentication API[1] provides an official replacement for the internal extension that Chrome ships to implement the FIDO U2F API for security keys. The getTransports call is part of the current level two draft[2] and provides transport (e.g. USB, NFC, etc) information without wedging it into the attestation certificate, which is the current practice. [1] https://w3c.github.io/webauthn/ [2] https://github.com/w3c/webauthn/commit/11d549048ac5e462a4f9f44499032302adb29800 #

This feature was specified in this Spec.

WebAssembly PostMessage

Extends WebAssembly to support PostMessage of WebAssembly.Module objects to Web Workers. To clarify, this is scoped to just Web Workers (same process, different thread), and not extended to cross-process scenarios (such as cross-origin postMessage, or shared web workers). #

This feature was specified in this Spec.

WebAudio: MediaElement and MediaStream nodes defined only for AudioContext

Chrome historically allowed creation of MediaElementAudioSourceNode's, MediaStreamAudioSourceNode's, and MediaStreamAudioDestinationNode's using an OfflineAudioContext. This does not comply with the spec; these nodes should only be available for an AudioContext. The behavior with an OfflineAudioContext is not well-defined and contrary to the real-time nature of the nodes themselves. Thus, only allow these nodes to be constructed for an AudioContext. #

This feature was specified in this Spec.

Resources

Docs: https://webaudio.github.io/web-audio-api/#mediaelementaudiosourcenodehttps://webaudio.github.io/web-audio-api/#mediastreamaudiosourcenodehttps://webaudio.github.io/web-audio-api/#mediastreamtrackaudiosourcenodehttps://webaudio.github.io/web-audio-api/#mediastreamaudiodestinationnode

No linked samples

globalThis

`globalThis` enables a universal mechanism to access the global object even in strict functions or modules, regardless of the platform. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/tc39/proposal-global

No linked samples

queueMicrotask

Adds a new method, queueMicrotask() that allows direct queueing of a callback to run as a microtask. Microtasks are callbacks that run just before the current task ends. Current examples are callbacks for promises that resolve immediately. This method is available on the window and worker objects. See the explainer: https://github.com/fergald/docs/blob/master/explainers/queueMicrotask.md #

This feature was specified in this Spec.

Resources

Docs: https://github.com/whatwg/html/issues/512https://github.com/fergald/docs/blob/master/explainers/queueMicrotask.md

No linked samples

Origin Trials in-progress in 71

This release of Chrome had 0 new origin trials.

Flagged features in 71

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

Autoplay Policy for Web Audio

Web Audio will follow the rules of the autoplay policy already followed by other parts of Chrome able to produce sound. When an AudioContext is created, it will start as suspended if it wasn’t allowed to play. Calling resume() will only start the AudioContext if it is allowed to play. Furthermore, a previously blocked AudioContext will automatically be resumed if start() is called on a connected node after the document is user activated. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://mounirlamouri.github.io/sandbox/autoplay/webaudio.html

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 71

This release of Chrome had 0 features deprecated.

Removed features in 71

This release of Chrome had 6 features removed.

Deprecate and Remove URL.createObjectURL for MediaStream

This API has been deprecated in 2013 and superseded by assigning streams to srcObject. #

This feature was specified in this Spec.

Remove SpeechSynthesis.speak without user activation

This deprecation will cause speechSynthesis.speak to immediately fire an error if the document has not received user activation. This API is being abused by sites since it is one of the only remaining APIs which didn't adhere to autoplay policies in Chrome. This was deprecated in Chrome 70. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: http://cr.kungfoo.net/speech/immediately-speak.html

Remove importScripts() of new scripts after service worker installation.

Until this deprecation, a service worker could use importScripts() to import any script at any time. After this change, a service worker can only importScripts() in two cases: - Before installation finishes (from the initial execution of the service worker until it reaches the `installed` state). - After installation finishes, only for scripts that were already imported in the previous phase. #

This feature was specified in this Spec.

Remove prefixed WebKitAnimationEvent interface

The prefixed WebKitAnimationEvent interface will be removed. It is a non-standard alias for the widely supported AnimationEvent interface (https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent). For interoperability between browsers, web developers should use the standard AnimationEvent instead. #

This feature was specified in this Spec.

Remove prefixed WebKitTransitionEvent interface

The prefixed WebKitTransitionEvent interface will be removed. It is a non-standard alias for the widely supported TransitionEvent interface (https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent). For interoperability between browsers, web developers should use the standard TransitionEvent instead. #

This feature was specified in this Spec.

document.origin

The document.origin property will be deprecated and removed in Chromium, and then likely also removed from the DOM Standard. This property was only ever implemented in Chromium and WebKit. It is redundant with self.origin which can be used in both window and worker contexts and has wider support. #

This feature was specified in this Spec.

Resources

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

No linked samples