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 91

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

Enabled by default in 91

This release of Chrome had 21 new features.

Align performance API timer resolution to cross-origin isolated capability

Currently `performance.now()` and related timestamps are coarsened based on site isolation status. This change will align their coarsening based on cross-origin isolation capability, regardless of platform. That would decrease their resolution on desktop from 5 microseconds to 100 microseconds in non-isolated contexts. It would also increase their resolution on Android from 100 microseconds to 5 microseconds in cross-origin isolated contexts, where it's safe to do so. #

This feature was specified in this Spec.

Block HTTP port 10080

Connections to HTTP, HTTPS or FTP servers on port 10080 will fail. This is a mitigation for the NAT Slipstream 2.0 attack. It helps developers by keeping the web platform safe for users.

This feature was specified in this Spec.

CSS custom counter styles

The CSS @counter-style rule allows web authors to specify and use custom counter styles in list markers and CSS counters. This helps web internationalization. #

This feature was specified in this Spec.

Resources

Docs: https://bit.ly/2Gm1oMC

No linked samples

Class static initializer blocks

The classic static block proposal adds the ability for JavaScript classes to have one or more static initialization blocks. These blocks are initialized once per evaluation of the class definition. ``` class C { static s_field; static { this.s_field = doSomeInitialization(); } } ``` #

This feature was specified in this Spec.

Clipboard: read-only files support

This proposes to expose read-only files on the clipboard to renderers using a similar approach to drag-and drop. Renderers will have access to read files from the clipboard, but not write files to the clipboard. For files on the clipboard, renderers will have read-only access. async function onPaste(e) { let file = e.clipboardData.files[0]; let contents = await file.text(); } #

This feature was specified in this Spec.

Resources

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

No linked samples

Critical-CH, a Client Hint reliability mechanism

Adds support for a new HTTP response header, Critical-CH to indicate that if a particular Client Hint header was not received and could have been sent, a new request should be made that includes the particular Client Hint header. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/client-hints-infrastructure/blob/master/reliability.md

No linked samples

Disable Double Tap to Zoom when mobile viewport is set

Disables Double Tap to Zoom (DTZ) when meta viewport tag is set to optimize the web page for mobile devices. In some situations Chrome enables DTZ even if the meta viewport tag is specified correctly which is unexpected to web developers. Having DTZ enabled introduces a 300ms delay between touchend and click events which degrades the user experience on mobile devices.DTZ should be disabled in all cases when a proper meta viewport tag is specified. #

Resources

Docs: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/speed/metrics_changelog/2021_05_fid.md#disable-double_tap_to_zoom-on-mobile-viewports

No linked samples

ES Modules for service workers ('module' type option)

JavaScript will support modules in service workers. Setting 'module' type by the constructor's type attribute, worker scripts are loaded as ES modules and the import statement is available on worker contexts. #

This feature was specified in this Spec.

Resources

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

No linked samples

Ergonomic brand checks for private fields

This JavaScript feature adds the capability for testing the existence of a private field in an object: "#foo in obj" Proposal: https://github.com/tc39/proposal-private-fields-in-in The feature has reached Stage 3 in TC39. #

This feature was specified in this Spec.

GravitySensor API

Expose the GravitySensor API, which provides a 3-axis reading of the gravity force, to users. #

This feature was specified in this Spec.

Honor media HTML attribute for link icon

The link element’s “media” attribute will be honored for link[rel="icon"] so that web developers can define multiple equally appropriate icons based on a media query (dark and light modes for instance). The last one that matches will be picked. Browsers don’t currently honor the media attribute for link[rel="icon"] even though the HTML specification says they should. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://media-link.glitch.me

Import Assertions

Import Assertions are an inline syntax for module import statements to pass on more information alongside the module specifier. The syntax is as follows (shown here is the proposed method for importing a JSON module): import json from "./foo.json" assert { type: "json" }; #

This feature was specified in this Spec.

JSON Modules

JSON modules allow statically importing JSON instead of consuming JSON dynamically through fetch(). JSON modules, like JavaSCript modules, are fetched using “cors” mode and strict MIME type checking. They also share the same module import syntax, for example: import data from "./resource.json”. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/SyntheticModules/designDoc.mdhttps://groups.google.com/a/chromium.org/d/topic/blink-dev/ojwkySW-bpQ/discussion

No linked samples

Managed configuration for Web Applications

This new API will help clients who are still using Chrome Apps to migrate to the Web, by using a simliar API to chrome.storage.managed Extensions API. #

This feature was specified in this Spec.

Resources

Docs: http://go/pwa-api-config-dd

No linked samples

Run PWA on OS Login

Provides a mechanism to allow users to configure a Progressive Web Application (PWA) to be launched automatically when a user logs in to the operating system. #

Resources

Docs: Pending

No linked samples

Single <compound-selector> for :host(), :host-context()

The :host() and :host-context() pseudo-classes accept a single <compound-selector> (as opposed to a <compound-selector-list>). #

This feature was specified in this Spec.

Suggested file name and location for the File System Access API

When initially shipping the File System Access API we shipped a bare minimum API surface for showing file and directory pickers. We're now proposing adding a couple of frequently requested (and commonly supported in other file picker APIs) options to let websites provide a couple more opportunities to influence the behavior of the file and directory pickers. In particular we want to let websites give suggestions for the name and location of files and directories that are being saved or loaded. #

This feature was specified in this Spec.

WebAssembly SIMD

WebAssembly SIMD will expose hardware SIMD instructions to WebAssembly applications in a platform-independent way. The SIMD proposal introduces a new 128-bit value type that can be used to represent different types of packed data, and several vector operations that operate on packed data. SIMD can boost performance by exploiting data level parallelism and is also useful when compiling native code to WebAssembly #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WebAssembly/simd/tree/master/proposals/simd

No linked samples

WebOTP API: cross-origin iframe support

Adds support for WebOTP API calls from cross-origin iframes if enabled by a permission policy. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1dR-5-1O3SqAbQCRj_cBaQ7nQD5YlWzExcusmPcO2Xqs/edit?usp=sharing

Samples: https://output.jsbin.com/gilusuq/quiet

WebSockets over HTTP/2

Supports WebSockets over HTTP/2 in Chromium as specified in RFC 8441 https://tools.ietf.org/html/rfc8441. This is only used for secure WebSockets requests, and only when there is already an HTTP/2 connection where the server has already advertised support for WebSockets over HTTP/2 via the HTTP/2 SETTINGS parameter defined in the specification. #

This feature was specified in this Spec.

Resources

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

No linked samples

adaptivePtime property for RTCRtpEncodingParameters

Adds the adaptivePtime property to RTCRtpEncodingParameters(https://w3c.github.io/webrtc-pc/#rtcrtpencodingparameters). This new flag sets a sender in a real-time communication (RTC) system to enable/disable adaptive packet rate. #

This feature was specified in this Spec.

Resources

Docs: https://w3c.github.io/webrtc-extensions/explainer#a-new-flag-in-rtcrtpencodingparameters-for-adaptive-packet-rate

No linked samples

Origin Trials in-progress in 91

This release of Chrome had 5 new origin trials.

Handwriting Recognition API

An API for web applications to make use of advanced handwriting recognition services (e.g. those on operating systems) to recognize text from handwriting drawings (inks) in real time. In this context, handwriting drawing means the temporal and positional information used to describe a human handwriting process. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/handwriting-recognition/blob/main/explainer.md

No linked samples

Network State Partitioning

Partition network state by the network partition key (which consists of top frame site and possibly frame site), to protect against cross-site tracking through the use of side channels. "Network State" here includes connections (H1, H2, H3, websocket), the DNS cache, ALPN/H2 support data, TLS/H3 resumption information, Reporting/NEL configuration and uploads, and Expect-CT information. Explainer: https://github.com/MattMenke2/Explainer---Partition-Network-State/blob/main/README.md #

This feature was specified in this Spec.

Secure payment confirmation

Secure payment confirmation augments the payment authentication experience on the web with the help of WebAuthn. The feature adds a new 'payment' extension to WebAuthn, which allows a relying party such as a bank to create a PublicKeyCredential that can be queried by any merchant origin as part of an online checkout via the Payment Request API using the 'secure-payment-confirmation' payment method. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/secure-payment-confirmation/blob/main/developer-guide.md

No linked samples

WebTransport

WebTransport is a protocol framework that enables clients constrained by the Web security model to communicate with a remote server using a secure multiplexed transport. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/webtransport/https://docs.google.com/document/d/1UgviRBnZkMUq4OKcsAJvIQFX6UCXeCbOtX_wMgwD_es/edit

No linked samples

WebXR Plane Detection API

The feature allows WebXR applications to retrieve data about planes (flat surfaces) present in the user’s environment. This enables AR applications to create a more immersive experiences through the obtained information. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/immersive-web/real-world-geometry/blob/master/plane-detection-explainer.md

Samples: https://storage.googleapis.com/chromium-webxr-test/latest.html?target=proposals/phone-ar-plane-detection-anchors.html

Flagged features in 91

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 91

This release of Chrome had 0 features deprecated.

Removed features in 91

This release of Chrome had 1 features removed.

Remove webkitBeforeTextInserted & webkitEditableContentChanged JS events

The webkitBeforeTextInserted and webkitEditableContentChanged JS events are Blink internal events and are non standard events. There are better replacement of these events which Browser vendors have been actively working on such as Input events(https://w3c.github.io/input-events/). #

This feature was specified in this Spec.