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 94

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

Enabled by default in 94

This release of Chrome had 15 new features.

Align transform-style: preserve-3d and perspective property with the spec

Align the behavior of transform-style: preserve-3d (which allows child elements to participate in the same 3D scene) and the perspective property (which applies a perspective transform to child elements) with the spec by making them apply only to child elements. Before this change, Chromium applies both of these effects based on the containing block hierarchy rather than the DOM tree, and also allows them to extend through elements without transform-related properties on them. #

This feature was specified in this Spec.

CSS Overflow: scrollbar-gutter

The "scrollbar-gutter" property provides control over the presence of scrollbar gutters (the space which may be reserved to display a scrollbar), allowing authors to prevent layout changes as content expands while avoiding unwanted visuals when scrolling isn't needed. Note that the presence of the scrollbars themselves is determined by the "overflow" property and the decision of whether to use classical or overlay scrollbars is up to the User Agent. #

This feature was specified in this Spec.

Canvas color management

Formalize that the default color space for 2D canvases and ImageData is sRGB. Clarify that 2D canvas is fully color managed (that all inputs are converted to the canvas color space). These were previously convention and not clearly specified. Add parameters to specify a non-sRGB color space when creating a 2D canvas or an ImageData. Add support for the Display P3 color space for these parameters. #

This feature was specified in this Spec.

Feature Policy: display-capture

Implement the display-capture feature policy from the Screen Capture spec. https://w3c.github.io/permissions/#dom-permissionname-display-capture This policy allows restricting access to the getDisplayMedia() API in embedded resources. #

This feature was specified in this Spec.

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

ImageDecoder API extension for WebCodecs

The ImageDecoder API intends to provide web authors random access to decoded images (as ImageBitmap) for each frame in a given image. The returned ImageBitmap objects can be used for drawing to canvas or WebGL (as well as any other future ImageBitmap use cases). Since the API is not bound to the DOM it may also be used in workers. #

Resources

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

No linked samples

JS Self-Profiling API

Adds a web-exposed sampling profiler for measuring client JavaScript execution time. Gathering JS profiles from real users can help developers debug slow observed performance without the need for invasive manual instrumentation. #

This feature was specified in this Spec.

Resources

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

Samples: https://wicg.github.io/js-self-profiling/#examples

MediaStreamTrack Insertable Streams (a.k.a. Breakout Box)

This feature defines an API surface for manipulating raw media carried by MediaStreamTracks such as the output of a camera, microphone, screen capture, or the decoder part of a codec and the input to the decoder part of a codec. It uses WebCodecs interfaces to represent raw media frames and exposes them using streams, similarly to the way the WebRTC Insertable Streams spec exposes encoded data from RTCPeerConnections. #

This feature was specified in this Spec.

Resources

Docs: https://alvestrand.github.io/mediacapture-transform/https://github.com/w3c/mediacapture-insertable-streams/blob/main/explainer.md

Samples: https://webrtc.github.io/samples/src/content/insertable-streams/video-processing/

Return fixed lists for navigator.plugins and navigator.mimeTypes

With the removal of Flash, there is no longer the need to return anything for navigator.plugins and navigator.mimeTypes. These APIs were used primarily for a) probing for Flash player support, or b) fingerprinting. Some sites use these APIs to probe for PDF viewer support. With this change, these arrays will return fixed lists containing a standard list of PDF viewer plugins. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://output.jsbin.com/nebaruc

Richer Install UI for PWAs

Gives developers the ability to add more data (descriptions and screenshots) to their PWA install dialog and gives users more insight into the apps they are about to install. #

This feature was specified in this Spec.

Scheduling APIs: Prioritized scheduler.postTask

Userspace tasks often have varying degrees of importance (related to user experience), but the Platform lacks a unified API to schedule prioritized work. The postTask API allows developers to schedule tasks (javascript callbacks) with a native browser scheduler at 3 levels of priority: user-blocking, user-visible, and background. It also exposes a TaskController, which can be used to dynamically cancel tasks and change their priority. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1Apz-SD-pOagGeyWxIpgOi0ARNkrCrELhPdm18eeu9tw/edit?usp=sharing

Samples: https://github.com/WICG/scheduling-apis/blob/main/explainers/prioritized-post-task.mdhttps://github.com/WICG/main-thread-scheduling/tree/master/sample-code

VirtualKeyboard API

The virtual keyboard is the on-screen keyboard used for input in scenarios where a hardware keyboard may not be available. The VirtualKeyboard interface has APIs to provide authors with more control over when the virtual keyboard is shown or hidden. It also fires events with the size of the virtual keyboard when it occludes content in the page. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/VirtualKeyboardPolicy/explainer.mdhttps://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/VirtualKeyboardAPI/explainer.mdhttps://docs.google.com/document/d/1I0LUNxK_gP5IaNQsbYN6gL6Zpm71XzduCKkublU5o5Q/edit?usp=sharing

No linked samples

WebCodecs

Provides efficient, low-level access to built-in (software and hardware) media encoders and decoders. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/web-codecs/blob/master/explainer.md

No linked samples

flex-basis honors keywords 'content' and 'min/max/fit-content'

You can now specify the keywords 'content', 'min-content', 'max-content', or 'fit-content' as the value of the 'flex-basis' property and its 'flex' shorthand. 'content' makes flex base size use the default sizing rules as if 'flex-basis' and preferred size property ('width' or 'height') are both 'auto', ignoring any specified 'width' or 'height' in the main axis dimension when 'flex-basis' is 'auto'. The other keywords are same as usual and give more options for specifying the flex base size. #

This feature was specified in this Spec.

preferCurrentTab

We introduce a dictionary member to MediaStreamConstraints called preferCurrentTab. It's a boolean defaulting to false. When getDisplayMedia() is called with preferCurrentTab=true, the browser should offer the current tab as the most prominent capture source. #

This feature was specified in this Spec.

Origin Trials in-progress in 94

This release of Chrome had 6 new origin trials.

103 Early Hints for Navigation

Support 103 Early Hints informational responses during top-level frame navigation. When a 103 response includes link headers Chromium tries to preload specified resources (including modulepreload) or preconnect to specified origins before the final response is received. This gives Web developers a way to optimize Core Web Vitals such as Largest Contentful Paint (LCP). #

This feature was specified in this Spec.

Resources

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

Samples: https://early-hints.fastlylabs.com/

New Canvas 2D API

Updated functionality for the Canvas2D API. Adds nine new features/functions to CanvasRenderingContext2D: - "ContextLost" and "ContextRestored" events - "willReadFrequently" option for canvases where lots of readback is expected - More CSS text modifier support - A reset function - A roundRect draw primitive - Conic gradients - Better support for SVG filters https://github.com/fserb/canvas2d #

Resources

Docs: https://github.com/GoogleChromeLabs/puppy-content/blob/puppy/content/en-US/api/canvasrenderingcontext2d/CanvasRenderingContext2D.md

No linked samples

Restrict "private network requests" for subresources from public websites to secure contexts.

Requires that private network requests for subresources from public websites may only be initiated from a secure context. Examples include internet to intranet requests and internet to loopback requests. This is a first step towards fully implementing Private Network Access: https://wicg.github.io/private-network-access/ #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1x1a1fQLOrcWogK3tpFBgQZQ5ZjcONTvD0IqqXkgrg5I/edit#heading=h.7nki9mck5t64

No linked samples

Same-origin prerendering triggered by the speculation rules API

Prerendering loads a web page before it is needed, so that when the actual navigation to that page occurs, it can be shown instantly. #

This feature was specified in this Spec.

Resources

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

Samples: https://prerender2-specrules.glitch.me

WebGPU

WebGPU is the successor to the WebGL and WebGL 2 graphics APIs for the Web. It provides modern features such as “GPU compute” as well as lower overhead access to GPU hardware and better, more predictable performance. WebGPU is developed by the “GPU for the Web” W3C community group. #

This feature was specified in this Spec.

Resources

Docs: https://gpuweb.github.io/gpuwebhttps://gpuweb.github.io/gpuweb/wgslhttps://gpuweb.github.io/gpuweb/explainer

Samples: https://github.com/austinEng/webgpu-samples

WebGPU on Android

WebGPU is the successor to the WebGL and WebGL 2 graphics APIs for the Web. It provides modern features such as “GPU compute” as well as lower overhead access to GPU hardware and better, more predictable performance. WebGPU is developed by the “GPU for the Web” W3C community group. WebGPU previously launched on Windows, MacOS, and ChromeOS in M113. See https://chromestatus.com/feature/6213121689518080 for details.

This feature was specified in this Spec.

Resources

Docs: https://gpuweb.github.io/gpuwebhttps://gpuweb.github.io/gpuweb/wgslhttps://gpuweb.github.io/gpuweb/explainer

Samples: https://github.com/austinEng/webgpu-samples

Flagged features in 94

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

Array and TypedArray findLast and findLastIndex

This is a Stage 3 TC39 proposal that adds the methods findLast and findLastIndex to Array.prototype and the various TypedArray.prototypes. These methods are the "from the end" versions of find and findIndex. #

This feature was specified in this Spec.

Extend Intl.DateTimeFormat timeZoneName Option

Add 4 new values "shortGeneric", "longGeneric", "shortOffset", and "longOffset" for Intl.DateTimeFormat timeZoneName option #

This feature was specified in this Spec.

Resources

Docs: https://github.com/tc39/proposal-intl-extend-timezonenamehttps://tc39.es/proposal-intl-extend-timezonename/https://docs.google.com/presentation/d/1N4QoCxFVM4ZKr9gDnaDDnrHb-5_rPTy-wydp-f90xBMhttps://docs.google.com/presentation/d/1a4cp-Jw_k47iv3oHFDC2rhkNPHbZbTzrZOSVR_4_QlM

No linked samples

HDR CSS Media Queries: dynamic-range

Adds a media query to CSS which allows a page to detect the current display device’s support for HDR. This feature adds the query: 'dynamic-range' which may be one of 'standard' or 'high'. Chrome will resolve this query according to the capabilities of the display device the browser window is currently positioned on, allowing pages to toggle CSS rules accordingly or respond in Javascript via 'window.matchMedia()'. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://willcassella.github.io/blink-hdr/demos/css-dynamic-range.html

Intl.DisplayNames v2

Extend the Intl.DisplayNames API to include "calendar" and "dateTimeField" names and add "languageDisplay" option. see https://github.com/tc39/intl-displaynames-v2 for the proposal The proposal advanced to Stage 3 on 2021-05-25 Spec: https://tc39.es/intl-displaynames-v2/ #

This feature was specified in this Spec.

Resources

Docs: spec: https://tc39.es/intl-displaynames-v2/design doc: https://docs.google.com/document/d/17hQz4nOC7PJYhxc_MU-BRoT6BnYGZv66XlU1iGX0ywQ/edit#

No linked samples

Origin Private File System extension: AccessHandle

The Origin Private File System (OPFS, part of the File System Access API) is augmented with a new surface that brings very performant access to data. This new surface differs from existing ones by offering in-place and exclusive write access to a file’s content. This change, along with the ability to consistently read unflushed modifications and the availability of a synchronous variant on dedicated workers, significantly improves performance and unblocks new use cases. #

PWA manifest unique id - desktop

Define an optional id field in app manifest that's used to globally identify the web app. If the id is not specified, start_url will be used as the default id. #

This feature was specified in this Spec.

Resources

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

No linked samples

Reporting API: Isolate reports per-document and support the Reporting-Endpoints header

Splits the reporting cache into a per-document cache for document-generated reports, and the existing cache for network reports. There is currently a single reporting cache per profile, which means that reports from unrelated documents can potentially be sent in a single request. This also introduces the Reporting-Endpoints HTTP response header for non-persistent configuration of document-generated reports. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1dls0BWp5K-g0tbPUkbm5yEBZ5ye1ErZTz4FB6M62lI8/edit?usp=sharinghttps://docs.google.com/document/d/1RmEz17pGSUQITPoRKV4s3IBgbyHjv-HLZqtVYYZ4lMg/edit?usp=sharing

No linked samples

Same-origin prerendering triggered by the speculation rules API

Prerendering loads a web page before it is needed, so that when the actual navigation to that page occurs, it can be shown instantly. #

This feature was specified in this Spec.

Resources

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

Samples: https://prerender2-specrules.glitch.me

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 94

This release of Chrome had 0 features deprecated.

Removed features in 94

This release of Chrome had 1 features removed.

Application Cache

AppCache was standardized in the Offline Web applications section of the HTML specification. The standard is formally referred to as application caches. New Web applications should be built around Service Workers. Existing applications that use AppCache should migrate to Service Workers. AppCache access was removed from insecure origins in M70. This intent addresses AppCache usage in secure origins. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/appcache-removal/

No linked samples