Chrome Release Summary

Chrome version: 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 108

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

Enabled by default in 108

This release of Chrome had 15 new features.

Android OSK resizes visual viewport by default + opt-out

The Android On-Screen Keyboard resizes the visual viewport by default rather than the initial containing block. Authors can opt out of this using the new "interactive-widget" meta-viewport key. #

This feature was specified in this Spec.

CSS Overflow for replaced elements

This change allows developers to use the existing `overflow` property with replaced elements that paint outside the content-box. Paired with `object-view-box` this can be used to create an image with a custom glow or shadow applied, with proper ink-overflow behavior like a CSS shadow would have. #

This feature was specified in this Spec.

CSS Values and Units Module Level 4: Small/Large/Dynamic/Logical viewport units

Support for sv* units, lv* units, dv* units and the logical vi/vb units. #

This feature was specified in this Spec.

CSS break-after, break-before and break-inside support

With LayoutNGPrinting shipped, we finally have full LayoutNG support everywhere. This also includes support for break avoidance between siblings. We've had support for the modern fragmentainer break controlling properties break-after, break-before and break-inside for some years already (in addition to the old page-break-before, page-break-after and page-break-inside properties). However, without LayoutNG, Blink didn't support the 'avoid' value on the break-before and break-after properties. This is supported in LayoutNG block fragmentation. #

This feature was specified in this Spec.

Deprecate and remove window.defaultStatus and window.defaultstatus

These two APIs originally were used to modify/control the "status bar" text at the bottom of browser windows. However, they have never had any actual effect on Chrome's status bar, and they are not standardized attributes. Gecko has not supported these attributes since version 23; WebKit still supports these attributes. The related window.status attribute *is* standardized, but also must never have an impact on the window status bar (https://html.spec.whatwg.org/multipage/window-object.html#dom-window-status). The window.status attribute is not being modified with this launch. #

This feature was specified in this Spec.

Last Baseline Item Alignment

This feature allows developers to align items within either flex or grid layout by their last baseline, instead of their first. This is done via the following properties: align-items: last baseline; /* flex/grid container */ justify-items: last baseline; /* grid container */ align-self: last baseline; /* flex/grid item */ justify-self: last baseline; /* grid item */ #

This feature was specified in this Spec.

LayoutNG printing

Support printing with LayoutNG, so that we no longer have to print using the legacy engine. Apart from getting the modern and more bugfree LayoutNG experience, this also adds support for the 'avoid' value to the break-before / break-after properties, since that's part of the core LayoutNG block fragmentation implementation that has already shipped (everywhere but printing). This means that we finally use LayoutNG everywhere, and we can soon start removing the legacy engine. #

This feature was specified in this Spec.

MSE in Workers

Enable Media Source Extensions (MSE) API usage from DedicatedWorker contexts to enable improved performance of buffering media for playback by an HTMLMediaElement on the main Window context. By creating a MediaSource object on a DedicatedWorker context, an application may then obtain a MediaSourceHandle from it and transfer that handle to the main thread for use in attaching to an HTMLMediaElement. The context that created the MediaSource object may then use it to buffer media. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/wicg/media-source/blob/mse-in-workers-using-handle/mse-in-workers-using-handle-explainer.mdhttps://goto.google.com/mse-in-workers

Samples: https://tinyurl.com/mse-in-workers-demo

Sec-CH-Prefers-Reduced-Motion User Preference Media Features Client Hints Header

User Preference Media Features Client Hints Header defines a set of HTTP Client Hints headers around user preference media features as defined by Media Queries Level 5. If used as Critical Client Hints, these headers allow servers to make smart choices regarding, e.g., CSS inlining. Sec-CH-Prefers-Reduced-Motion reflects the user's prefers-reduced-motion preference. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://sec-ch-prefers-reduced-motion.glitch.me

Sync methods for SyncAccessHandle in File System Access API

Updates asynchronous methods (flush(), getSize(), truncate()) in SyncAccessHandle in File System Access API to synchronous methods. SyncAccessHandle currently has a mix of sync and async methods, hindering the performance and the usability, especially for applications porting c/c++ to Wasm. This update will bring consistency in the API usage and improve the performance for Wasm-based libraries. #

This feature was specified in this Spec.

Variable COLRv1

COLRv1 color vector fonts have been released in Chrome 98 https://developer.chrome.com/blog/colrv1-fonts/ but this initial release supported only static functionality of the COLRv1 table. The COLRv1 specification defines integration with OpenType Variations which allows modifying font properties of gradients and transforms by means of changing variable axis parameters. This second step brings support for such variations to COLRv1. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://roettsch.es/var_colrv1.html

Wildcards in Permissions Policy Origins

This feature will add support for wildcard in permissions policy structured like SCHEME://*.HOST:PORT (e.g., https://*.foo.com/) where a valid Origin could be constructed from SCHEME://HOST:PORT (e.g., https://foo.com/). This requires that HOST is at least eTLD+1 (a registrable domain). This means that https://*.bar.foo.com/ works but https://*.com/ won’t (if you want to allow all domains to use the feature, you should just delegate to *). Wildcards in the scheme and port section will be unsupported and https://*.foo.com/ does not delegate to https://foo.com/. Before, a permissions policy might need to look like: permissions-policy: ch-ua-platform-version=(self "https://foo.com" "https://cdn1.foo.com" "https://cdn2.foo.com") With this feature, it could look like: permissions-policy: ch-ua-platform-version=(self "https://foo.com" "https://*.foo.com") Note that https://*.foo.com does not match https://foo.com. #

This feature was specified in this Spec.

aria-brailleroledescription and aria-braillelabel

Add the aria-brailleroledescription and aria-braillelabel attributes. These ARIA attributes can be used to override the role description or accessible name for an element when the output of a screen reader is directed to a braille device, primarily for purposes of brevity. See https://w3c.github.io/aria/#aria-brailleroledescription and https://w3c.github.io/aria/#aria-braillelabel #

This feature was specified in this Spec.

font-tech() and font-format() condition extensions to CSS @supports

The font-tech() and font-format() are extensions to the @supports rule CSS Conditional Syntax enable declarative and programmatic access to feature detection of font stack features. Using these conditions together with @supports allow progressive enhancement of content depending on font format support. In particular with UAs differing in support for color font formats, this is useful for including color font style rule and @font-face definitions only if the user agent supports it. Using JS CSS.supports() calls this is also the first ergonomic way of testing for font stack capabilities on the web without UA sniffing or canvas pixel readback as in Chromacheck (https://pixelambacht.nl/chromacheck/). This feature is closely related to the @font-face src: descriptor syntax extension which was recently discussed and LGTM'ed here: https://groups.google.com/a/chromium.org/g/blink-dev/c/_9k-Ne8FRu4 - the same font format and technology keywords are used and synchronized between these two features. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://github.com/w3c/csswg-drafts/blob/main/css-conditional-5/font-tech-format-explainer.md#use-case-1---progressive-enhancement-with-color-fonts

tech() function support in @font-face src: descriptor

CSS Fonts Level 4 provides additional means of selecting or filtering font resources. The tech() function was introduced, which allows passing in a list of font technologies that this respective font blob requires to function. Based on that, the UA will select the first suitable resource. #

This feature was specified in this Spec.

Origin Trials in-progress in 108

This release of Chrome had 1 new origin trials.

Federated Credentials Management (was WebID)

The Federated Credential Management API allows users to bring their federated identity to login to websites in a manner compatible with improvements to browser privacy. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/fedidcg/FedCM

No linked samples

Flagged features in 108

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

Web Authentication Conditional UI

A new mode for WebAuthn that displays a credential selection UI only if the user has a discoverable credential registered with the Relying Party on their authenticator. The credential is displayed alongside autofilled passwords. This solves the bootstrapping problem when replacing traditional username and password with WebAuthn: websites can fire a WebAuthn call while showing a regular password prompt without worrying about showing a modal dialog error if the device lacks appropriate credentials. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1KzEWP0aoLMZ0asfw6d3-7UHJ6csTtxLA478EgptCvkk

Samples: https://webauthn-conditional-ui-demo.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 108

This release of Chrome had 0 features deprecated.

Removed features in 108

This release of Chrome had 4 features removed.

Deprecate and remove ImageDecoderInit.premultiplyAlpha.

Feature has no observable effects in primary use cases, but may constrain implementations in suboptimal ways. See https://github.com/w3c/webcodecs/issues/508 for a more detailed description. Per consensus of WebCodecs spec editors and lack of usage (0.000000339% - 0.00000687% of page loads per use counter in M106), we propose deprecating and removing this feature starting M108. #

This feature was specified in this Spec.

Removal of navigateEvent.restoreScroll()

restoreScroll() is being replaced by navigateEvent.scroll(). scroll() works identically except that it allows the developer to control scroll timing for non-traverse navigations (i.e., scroll() works when the scroll is not a restore, hence the name change along with the behavior change). #

This feature was specified in this Spec.

Removal of navigateEvent.transitionWhile()

transitionWhile() is being replaced by navigateEvent.intercept() due to design flaws reported by developers. intercept() behaves nearly identically to transitionWhile(), but instead of taking a mandatory Promise parameter, it takes an optional handler function that returns a Promise. This allows the browser to control when handler executes, which is later and more intuitive than what transitionWhile() required. Also, the "default" intercept() case with no handler is much shorter and simpler to write than the "default" transitionWhile() boilerplate. #

This feature was specified in this Spec.

[WebRTC] Deprecate and Remove mediaConstraint's googIPv6

"googIPv6: false" can be used (example: new RTCPeerConnection({}, {mandatory:{googIPv6:false}});) to disable IPv6 support in WebRTC. IPv6 has been enabled by default for many years and we should not be able to disable it. Remove this non-standard API. #

This feature was specified in this Spec.