Chrome Release Summary

Chrome version: 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 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 88

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

Enabled by default in 88

This release of Chrome had 16 new features.

Align with Gecko and spec on grouping properties

The CSS transforms level 2 spec requires that any grouping property causes the used value of transform-style to be flat. Chromium applies grouping for some of the specified grouping properties, but not all. This change tracked here will add: * clip * clip-path * mask * backdrop-filter * isolation #

This feature was specified in this Spec.

Anchor target=_blank implies rel=noopener by default

To mitigate "tab-napping" attacks, in which a new tab/window opened by a victim context may navigate that opener context, the HTML standard changed to specify that anchors that target _blank should behave as if |rel="noopener"| is set. A page wishing to opt out of this behavior may set |rel="opener"|. #

This feature was specified in this Spec.

CSS Automatic Hyphenation for Windows/Linux/ChromeOS

Blink supports `manual` and `none` values of the CSS `hyphens` property since M55, but `auto`, which enables the automatic hyphenation, is supported only on Android and Mac. This feature enables `hyphens: auto` on Windows, Linux, and ChromeOS by downloading dictionary files used in Android Open Source Project. The previous feature entry for M55 is https://www.chromestatus.com/features/5642121184804864 #

This feature was specified in this Spec.

CSS Selectors 4 Pseudo-Classes :is(), :where()

The matches-any pseudo-class, :is(), is a functional pseudo-class taking a selector list as its argument. It represents an element that is represented by its argument. #

This feature was specified in this Spec.

CSS Selectors 4: Complex :not()

Allows complex selectors inside the :not() pseudo class, such as :not(.a + .b .c). #

CSS aspect-ratio property

Normally, only certain replaced elements have an aspect ratio, particularly images. For them, if only one of width and height is specified, the other can be computed from it using the intrinsic aspect ratio. This property allows explicitly specifying an aspect ratio for any other element to get similar behavior. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://codepen.io/una/pen/BazyaOM

Don't clear adoptedStyleSheets on adoption to/from <template>

When adopting a shadow root into a <template> document from a document that the <template> is in (or vice versa), we will no longer clear its adoptedStyleSheets.

ElementInternals.shadowRoot attribute

A new attribute on ElementInternals, 'shadowRoot', allows custom elements to access their own ShadowRoot, regardless of open/closed status. Additionally, further restrictions are added to the attachInternals() API to ensure that custom elements get the first chance to attach the ElementInternals interface. With this change, the attachInternals() function will throw an exception if called prior to the custom element constructor being run. #

This feature was specified in this Spec.

Limit characters allowed in extensions in File System Access API file pickers

To improve security, the File System Access API's showOpenFilePicker() and showSaveFilePicker() methods will limit what characters are allowed in extensions for accepted file types. Specifically only A-Z, a-z, 0-9, + and . will be allowed, extensions can't end in .local or .lnk, and can't be more than 16 characters long.

This feature was specified in this Spec.

Make "type" optional in WakeLock.request()

Implement https://github.com/w3c/screen-wake-lock/pull/291, which makes the "type" parameter in WakeLock.request() optional and defaulting to "screen", which is the only allowed value at the moment. In other words, the following two lines would do the exact same thing: navigator.wakeLock.request() navigator.wakeLock.request("screen") #

This feature was specified in this Spec.

Origin-keyed agent clusters

Origin-keyed agent clusters allows developers to opt in to giving up certain cross-origin same-site access capabilities — namely synchronous scripting via document.domain, and postMessage()ing WebAssembly.Module instances. This gives the browser more flexibility in implementation technologies. In particular, in Chrome, we will use this as a hint to put the origin in its own process, subject to resource or platform limitations. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://origin-agent-cluster-demo.dev/

Permissions-Policy header

The Permissions-Policy HTTP header replaces the existing Feature-Policy header for controlling delegation of permissions and powerful features. The header uses a structured syntax, and allows sites to more tightly restrict which origins can be granted access to features. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/webappsec-feature-policy/blob/master/permissions-policy-explainer.md

No linked samples

RTCRtpTransceiver.stop()

Transceivers allow the sending and/or receiving of media in WebRTC. Stopping a transceiver makes it permanently inactive. #

This feature was specified in this Spec.

Resources

Docs: N/A

No linked samples

Shared Array Buffers (SABs) on Android

Adds the JavaScript type SharedArrayBuffer to Android gated behind COOP/COEP. The concept of a SharedArrayBuffer is that a message to a worker, is posted but instead of copying the content of the array just a reference to it is shared, so that all have the same view on the shared chunk of data in the memory. This feature is only targeting Android - https://www.chromestatus.com/feature/4570991992766464 handles all other platforms #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBufferhttps://docs.google.com/document/d/1tXfF0sdMQJPtwc2qEGF_V_z5xiCkP3ayS5ByRz6Rc-A/edit?ts=5f236efa

No linked samples

WebXR dynamic viewport scaling

Applications can optionally render to a subset of the WebXR viewport, using a scale factor that can be changed every animation frame. This is intended to be more efficient than resizing the full framebuffer which requires reallocation, and the UA can supply a recommended scale factor based on internal heuristics. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/immersive-web/webxr/blob/master/explainer.md#dynamic-viewport-scaling

Samples: https://vps3a.glitch.me/https://modelviewer.dev/examples/webxr.html

path() support in clip-path CSS property

So far clip-path only supported other basic shapes (circle, ellipse, polygon, url). This adds support for path() as a value as specified in https://drafts.csswg.org/css-shapes-1/#funcdef-path, for example: clip-path: path(oddeven, 'M 5 5 h 100 v 100 Z') would clip the element with a triangle. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path

Origin Trials in-progress in 88

This release of Chrome had 2 new origin trials.

Idle Detection

The Idle Detection API notifies developers when a user is idle, indicating such things as lack of interaction with the keyboard, mouse, screen, activation of a screensaver, locking of the screen, or moving to a different screen. A developer-defined threshold triggers the notification. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/idle-detection/https://github.com/WICG/idle-detection/blob/main/mdn-drafts/QUICK-REFERENCE.md

Samples: https://web.dev/idle-detection/https://github.com/WICG/idle-detection/blob/master/HOWTO.mdhttps://reillyeon.github.io/scraps/idle.html

WebXR AR Lighting Estimation

Allows sites to query for estimates of the environmental lighting conditions within WebXr sessions. This exposes both spherical harmonics representing the ambient lighting, as well as a cubemap texture representing "reflections".

This feature was specified in this Spec.

Resources

Docs: https://github.com/immersive-web/lighting-estimation/blob/master/lighting-estimation-explainer.md

Samples: https://storage.googleapis.com/chromium-webxr-test/latest.html?target=proposals/lighting-estimation.html

Flagged features in 88

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 88

This release of Chrome had 0 features deprecated.

Removed features in 88

This release of Chrome had 1 features removed.

Flash Player Support

Remove support for Flash Player from Chromium in alignment with Adobe's planned end of life on January 12th, 2021. #