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 68

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

Enabled by default in 68

This release of Chrome had 24 new features.

ARIA 1.1

Implement the changes in version 1.1 of the Accessible Rich Internet Applications (WAI-ARIA) 1.1 spec. #

This feature was specified in this Spec.

Accept two values in the overflow shorthand

The overflow shorthand will accept two values making it possible to set overflow-x and overflow-y to different values. If two values are specified, the first is overflow-x and the second is overflow-y. This property previously only accepted one value, meaning that a developer who wanted to set them to different values was forced to write longhand statements for both. Changing the shorthand reduces complexity by allowing developers to specify both in a single statement. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/CSS/overflowhttps://github.com/w3c/csswg-drafts/issues/2484

No linked samples

AnimationEvent.pseudoElement

AnimationEvent.pseudoElement is a string that starts with "::", containing the name of the pseudo-element the animation runs on. If the animation is running on the element, then it is an empty string. #

This feature was specified in this Spec.

Block tab-under navigations

A tab-under is when a page both opens a popup to some destination (usually where the user wants to go) AND navigates the opener page to some third party content (usually an advertisement). Chrome will block these navigations and show native UI to the user so they can follow the redirect just in case. #

This feature was specified in this Spec.

DOMMatrix setTransform/getTransform on 2D Canvas

Adding setTransform(DOMMatrix2DInit) and getTransform() to CanvasRenderingContext2D. #

This feature was specified in this Spec.

Fetch API: Credentials mode default to "same-origin"

A Request object’s credentials mode defaults to “omit” in Chrome right now. A spec change recently changed the default to “same-origin”, thus providing credentials to same-origin requests instead of omitting them. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://fetch-event-echo.glitch.me

Filtered elements establish containing blocks

According to the spec draft: “A value other than none for the filter property results in the creation of a containing block for absolute and fixed positioned descendants unless the element it applies to is a document root element in the current browsing context.” #

This feature was specified in this Spec.

Freeze task queues in background on Android

All freezable task queues (beyond timers and loading) in blink scheduler will be frozen when a renderer has been in the background after a grace time of 5 minutes on Android. Many sites continue activity, even after their app has been in background for over 5 minutes. This consumes non-trivial amount of CPU and network bandwidth, and hurts the responsiveness of the foreground app, especially on mobile. This intervention completes freezing background work on mobile. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/10D2uvOVxBZ2YhcwtK1XOb6CClminPpqAeS82KOVT7hk/edit#https://wicg.github.io/page-lifecycle/spec.html

No linked samples

GamePad API vibration extension

Update the Standard Gamepad spec to include a rumble-style haptic feedback device and extend the Gamepad API to support vibration effects. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1jPKzVRNzzU4dUsvLpSXm1VXPQZ8FP-0lKMT-R_p-s6g

No linked samples

HTTP/2 push header validation

Do not serve HTTP/2 pushed streams to requests that do not match with respect to the Vary header or range parameters. #

This feature was specified in this Spec.

Resources

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

No linked samples

High Resolution Time Stamp for Gamepad

Change Gamepad.timestamp to use a DOMHighResTimeStamp, a high resolution monotonic time with microsecond resolution. Timestamps are measured as offsets from the navigationStart attribute of the PerformanceTiming interface. #

This feature was specified in this Spec.

Improve Cache Management for Service Worker Scripts

The HTTP cache will be ignored when requesting updates to the service worker. Requests for importScripts will still go through the HTTP cache. But this is just the default. A new registration option, ServiceWorkerRegistration.updateViaCache is available that offers control over this behavior. #

This feature was specified in this Spec.

Resources

Docs: * (Once written) https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/updateViaCache* https://github.com/w3c/ServiceWorker/issues/893

No linked samples

Keyboard Lock

While in fullscreen, this API allows apps to receive keys that are normally handled by the system or the browser like Cmd/Alt-Tab, or Esc. Users can escape keyboard lock (and fullscreen) by holding the Esc key for two seconds. #

This feature was specified in this Spec.

Resources

Docs: https://web.dev/keyboard-lock/

Samples: (see explainer)

Make PointerEvent.fromElement and PointerEvent.toElement null

PointerEvents won't report non-standard and inconsistent values for fromElement and toElement fields. Instead, they will always report null (like Edge and Firefox). In MouseEvents (from which PointerEvents inherit these fields), .fromElement and .toElement are non-standard, and have been inconsistent among major browsers for many years. Moreover, we have standard and consistent alternatives already: .target and .relatedTarget. Recently the PointerEvents spec has been updated accordingly. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/w3c/pointerevents/issues/167

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

Page Lifecycle API

With large numbers of web apps (and tabs) running, critical resources such as memory, CPU, battery, network etc easily get oversubscribed, leading to a bad end user experience. Web lifecycle is a proposal to enable system initiated Tab Discarding and CPU Stopping -- to effectively manage resources for optimal user experience. See explainer: https://github.com/spanicker/web-lifecycle/blob/master/README.md #

This feature was specified in this Spec.

Resources

Docs: https://github.com/spanicker/web-lifecycle/blob/master/README.md

No linked samples

Payment Handler API

The API helps to develop new payment apps in web standard ways (e.g. service worker). If using them, payment app providers can provide simplified payment methods and user experiences. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://rsolomakhin.github.io/pr/apps/

RTCRtpSender: get/setParameters()

The get/setParameters() methods return or update the RTCRtpSender object's current parameters for how the RTCRtpSender.track property is encoded and transmitted to a remote RTCRtpReceiver. These methods enable you to change encoding parameters for WebRTC streams such as the maximum transmission bitrate without doing any SDP munging or renegotiation. #

This feature was specified in this Spec.

Require user gesture for framebusting in cross-origin iframes

Summary Content in an <iframe> can generally navigate the top level browsing context unless explicitly forbidden by the sandbox attribute (sometimes called 'framebusting'). Restrict this ability to content that is processing a user gesture, unless it is same-origin to the parent. Motivation Framebusting was originally used by content that wanted to prevent being placed in an <iframe> but it's being abused. There are other, more specific tools to accomplish the original use case. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/interventions/issues/16

No linked samples

Support 'x' as a resolution unit

CSS Values and Units Module Level 4 defines a new resolution unit called 'dot per pixel' for support of high-resolution displays. This change adds 'x' as a synonym for the existing abbreviation, 'dppx'. #

This feature was specified in this Spec.

Unified touch adjustment

Touch adjustment will adjust the TouchEvent and the corresponding PointerEvent target to a best target within the touch area. TouchEvent coordinates will not be changed. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://github.com/w3c/touch-events/issues/93

Unprefix CSS "grab" and "grabbing" Values for Cursor Property

These values change the mouse cursor to an open hand or closed hand to indicate that something can be grabbed or is currently grabbed. Prefixed versions of these properties have been supported since Chrome 1, with Windows support added in Chrome 22. With this change Chrome will support the standard, unprefixed versions of these values. #

This feature was specified in this Spec.

Resources

Docs: https://developer.mozilla.org/en-US/docs/Web/CSS/cursor

Samples: https://test.csswg.org/harness/test/css-ui-3_dev/single/cursor-009/format/html5/https://test.csswg.org/harness/test/css-ui-3_dev/single/cursor-010/format/html5/

WebAudio: Add User Selectable Automation Rate for AudioParams

Gives each AudioParam a new attribute, automationRate that allows the user to select whether the AudioParam is either "a-rate" or "k-rate". Most but not all AudioParams allow changing the rate (as given in the spec). For example, BiquadFilterNode with default "a-rate" automation is very expensive to compute due to the complex relationship between the parameters and the filter coefficients. If this fast automation is not needed (the most typical case), the parameters can be set to "k-rate". #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WebAudio/web-audio-api/issues/1269https://github.com/WebAudio/web-audio-api/pull/1521

No linked samples

Worklet: Credentials mode defaults to "same-origin"

Worklet's credentials mode is specified by WorkletOptions on addModule(). Before this change, "omit" is the default credentials mode. This update changes the default credentials mode to "same-origin". #

This feature was specified in this Spec.

customElements.upgrade()

This function upgrades undefined custom elements explicitly. If a custom element is created with the innerHTML setter and its parent node is not connected to a document, the custom element is not upgraded until it's connected. Upgrading such elements explicitly allows developers to handle them in a single way regardless of connectedness. #

This feature was specified in this Spec.

Origin Trials in-progress in 68

This release of Chrome had 0 new origin trials.

Flagged features in 68

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

Feature Policy: layout-animations

This feature policy allows developers to selectively disable certain CSS animations through the Feature-Policy HTTP header or the <iframe> "allow" attribute. Slow and inefficient CSS animations add delays to layout and paint intervals. This policy lets developers restrict layout-related animations on their own web page or on certain third-party origins in embedded contents. #

This feature was specified in this Spec.

Resources

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

Samples: https://feature-policy-demos.appspot.com/animations.html?on

Gamepad polling at 250Hz

Chrome's gamepad polling behavior adds approximately 8 ms of avoidable latency due to the lack of synchronization between the internal polling loop and requestAnimationFrame, where gamepad state is typically used. Increasing the internal polling rate to 250 Hz reduces the added latency to approximately 2 ms when the application also increases its polling rate. #

This feature was specified in this Spec.

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 68

This release of Chrome had 1 features deprecated.

User activation through long-press gesture

The long-press gesture should be considered a user activation because it indicates user's interaction with the page. This would allow a web app to call restricted APIs like navigator.vibrate() on long-press to match native behavior. #

This feature was specified in this Spec.

Resources

No linked docs

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

Removed features in 68

This release of Chrome had 6 features removed.

CSS position values with 3 parts

The object-position and perspective-origin properties should not accept 3 part values like "top right 20%". This also applies for positions in basic shapes and gradients. Valid position values always have 1, 2 or 4 parts. Deprecation of 3-part values is occurred in Chrome 66, and removal occurred in Chrome 68. #

This feature was specified in this Spec.

Deprecate and Remove: negative brightness values in filter

For compliance with specification, filter's brightness() function no longer accepts negative values. #

This feature was specified in this Spec.

Remove Document#selectedStylesheetSet/preferredStylesheetSet

The Document.selectedStylesheetSet/preferredStylesheetSet attributes will be removed because they are non-standard and only implemented by Chrome and WebKit. The standard versions of these attributes were removed from the spec in 2016. #

This feature was specified in this Spec.

Remove document.createTouch

Remove document.createTouch Using new Touch({...}) has been supported in Chrome since M48. #

This feature was specified in this Spec.

Remove: Content initiated top frame navigations to filesystem URLs

We intent to block web pages from loading filesystem: URLs in the top frame. filesystem: URLs are only supported by Chrome. They contain an inner URL which consists of the origin that created the filesystem URL. For example, a filesystem URL created by http://example.com looks like filesystem:http://www.example.com/temporary/file0. The appearance in the omnibox is confusing for users, and there is currently an undisclosed security bug for this. This change does NOT affect file:// URLs. #

This feature was specified in this Spec.

Resources

Docs: https://bugs.chromium.org/p/chromium/issues/detail?id=811558

No linked samples

WEBGL_compressed_texture_atc

This extension provided the AMD_compressed_ATC_texture formats to the web. Hardware support has dwindled to near-zero, so the extension has been deprecated/rejected by the WebGL Working Group. Support for this extension has always been small (as it is hardware-dependent), so no existing applications should be relying on its presence. #

This feature was specified in this Spec.