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 119

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

Enabled by default in 119

This release of Chrome had 20 new features.

:user-valid and :user-invalid CSS pseudo-classes

The :user-invalid and the :user-valid pseudo-classes represent an element with incorrect or correct input, respectively, but only after the user has significantly interacted with it. This is similar to :valid and :invalid, but with the added constraint that these pseudo-classes only match after the user has interacted with the element. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://developer.mozilla.org/en-US/docs/Web/CSS/:user-valid

CSS Relative Color Syntax (RCS)

The relative color syntax allows developers to define colors by modifying the parameters of other colors. For example: oklab(from magenta calc(l * 0.8) a b); Will result in an oklab magenta that is 80% as light. https://www.w3.org/TR/css-color-5/#relative-colors #

This feature was specified in this Spec.

CaptureStartFocusBehavior enum value "focus-capturing-application"

The Screen Capture API lets the user select a tab, window, or screen to capture as a media stream. Using the existing CaptureController setFocusBehavior() method, web apps control whether the captured tab or window will be focused when capture starts, or whether the browser will leave focus with whichever surface last had focus. The new enum value "focus-capturing-application" allows web apps to give a hint to the browser that the capturing page prefers to remain focused. The old value “no-focus-switch” now indicates that the application prefers that the user agent not change focus, leaving focus with whichever surface last had focus following the user's interaction with the user agent and/or operating system. In Chrome’s current implementation, this means leaving the capturing application focused. In the future, if Chrome adopts the macOS picker, it could behave differently on Mac. This behavior could prove useful for a11y-conscious applications that prefer to minimize the number of focus-changes a user experiences, as those can be challenging for users with screen-readers. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/conditional-focus/blob/main/README.md

No linked samples

Clip-path geometry-box values

Clip-path supports <geometry-box> values to control the clip's reference box, making clip-path easier to use. These box values can be used alongside basic shapes (for example, clip-path: circle(50%) margin-box), or they can be used alone to clip to the specified box (for example, clip-path: content-box). #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://pr.gg/clip-path-geometry-box-examples.html

Clip-path xywh() and rect() values

Support the xywh() and rect() values on clip-path, which make it easier to specify rectangular or rounded-rectangular clips. #

This feature was specified in this Spec.

Cookie Expires/Max-Age attribute upper limit for prior storage

Since M104 cookies newly created or updated with an expiration date would have that date capped at no more than 400 days in the future. This same limit will now be retroactively applied to cookies already in storage to cap their expiration dates to no more than 400 days after the first time Chrome M119+ starts up and does a one time database migration. The impact of this change will not be felt by users until at least 400 days after M119 is released, and then only for existing cookies that have not been updated in that period. #

This feature was specified in this Spec.

Disallow unknown import attributes

Throw an error when using unknown keys in import attributes (formerly known as import assertions), such as "import 'x' assert { unknown: 'val' }`, rather than ignoring them. The only accepted attribute remains "type". #

This feature was specified in this Spec.

DisplayMediaStreamOptions monitorTypeSurfaces

When getDisplayMedia() is called, the browser offers the user a choice of display surfaces: tabs, windows, or monitors. Using the monitorTypeSurfaces option, the web application may now hint to the browser if it prefers to include display surfaces whose type is monitor among the choices offered to the user. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/eladalon1983/screen-share-explainers/blob/main/monitorTypeSurfaces_Explainer.md

Samples: https://screen-sharing-controls.glitch.me

Horizontal rules inside select elements

This feature makes the HTML parser allow <hr> tags inside <select> tags. These <hr> elements create horizontal borders in between <option> elements in the listbox popup. #

This feature was specified in this Spec.

Private Aggregation API bundled enhancements

We're planning a few bundled changes to Private Aggregation: - Null report fixes: Currently reports with no contributions are inadvertently dropped. This change ensures that, when a context ID is specified, a null report is sent even if budget is denied. Separately, it fixes a bug causing budget to always be denied for null reports. - Debug mode eligibility changes: Currently, debug mode is always available. This change only allows debug mode for callers that are allowed access to third-party cookies, silently dropping the debug mode otherwise. Note that this will allow debug mode to automatically sunset when third-party cookies are deprecated. - Padding report payloads: To avoid the payload size being dependent on the number of contributions, we will pad it with 'null' contributions to a fixed length. **Note**: this change will also affect Attribution Reporting reports. - Reducing delay: When a context ID is specified, we remove the randomized 10-60 minute delay, which is superfluous as a report is always sent in this case. Instead, we just wait until the Shared Storage operation timeout. Note this is a recreation of https://chromestatus.com/feature/5205079858085888 which had the wrong feature type. #

This feature was specified in this Spec.

Private Aggregation API bundled enhancements

We're planning a few bundled changes to Private Aggregation: - Null report fixes: Currently reports with no contributions are inadvertently dropped. This change ensures that, when a context ID is specified, a null report is sent even if budget is denied. Separately, it fixes a bug causing budget to always be denied for null reports. - Debug mode eligibility changes: Currently, debug mode is always available. This change only allows debug mode for callers that are allowed access to third-party cookies, silently dropping the debug mode otherwise. Note that this will allow debug mode to automatically sunset when third-party cookies are deprecated. - Padding report payloads: To avoid the payload size being dependent on the number of contributions, we will pad it with 'null' contributions to a fixed length. **Note**: this change will also affect Attribution Reporting reports. - Reducing delay: When a context ID is specified, we remove the randomized 10-60 minute delay, which is superfluous as a report is always sent in this case. Instead, we just wait until the Shared Storage operation timeout. Note that a duplicate feature was created for shipping reviews (e.g. Privacy, Security) as this has the incorrect feature type: https://chromestatus.com/feature/5148973702840320 #

This feature was specified in this Spec.

Read Chrome device attributes

Device Attributes Web API is a subset of Managed Device Web API, that provides web applications the capability to query device information (device ID, serial number, location, etc). #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://github.com/WICG/WebApiDevice/blob/master/README.md

Remove Authorization header upon cross-origin redirect

The Fetch standard has updated to remove Authorization header on cross origin redirects. Chrome should follow the spec change. #

This feature was specified in this Spec.

Replace dangling markup in target name to `_blank`

This change replaces the navigable target name (which is usually set by target attribute) to `_blank`, if it contains a dangling markup (i.e. `\n` and `<`). Which fixes a bypass in the dangling markup injection mitigation. #

This feature was specified in this Spec.

Sec-CH-Prefers-Reduced-Transparency 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-Transparency reflects the user's prefers-reduced-transparency preference. #

This feature was specified in this Spec.

Resources

No linked docs

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

Standard compliant URL host punctuation characters

Make Chrome's handling of URL host punctuation characters standard compliant. Examples: Before: > const url = new URL("http://exa(mple.com";); > url.href 'http://exa%28mple.com/&apos; '(' is a forbidden character, however, Chrome permits it wrongly. After: > const url = new URL("http://exa(mple.com";); > => throws TypeError: Invalid URL. Before: > const url = new URL("http://exa!mple.com";); > url.href "http://exa%2Ample.com"; '!' is permitted, but escaping punctuation characters is non-compliant. After: > const url = new URL("http://exa!mple.com";); > url.href "http://exa!mple.com"; Here is a the summary of changes in M119: Notation: - 'ESC': Allowed, but Chrome escapes it, which is non-compliant. - '-': Allowed. - '0': Forbidden. URL will be invalid if the host contains a forbidden character. Warning: SPACE and ASTERISK is still non-compliant. | | Before | After | Standard | |-----+--------+-------+----------| | SPC | ESC | ESC | 0 | | ! | ESC | - | - | | " | ESC | - | - | | # | ESC | 0 | 0 | | $ | ESC | - | - | | & | ESC | - | - | | ' | ESC | - | - | | ( | ESC | - | - | | ) | ESC | - | - | | * | ESC | ESC | - | | + | - | - | - | | , | ESC | - | - | | - | - | #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://chromium-review.googlesource.com/c/chromium/src/+/4875754

User-Agent Client Hints on Android WebView

User-Agent client hints aims to reduce the gaps between Android and Android WebView because Android already supported User-Agent Client hints starting from M89. It also intends to deprecate and replace the User-Agent header in order to reduce the passive fingerprinting surface we expose via HTTP requests. Here we only propagate User-Agent client hints for the major user case, which is that the final custom User-Agent contains WebView default User-Agent. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/client-hints-infrastructure#readmehttps://github.com/WICG/ua-client-hints#explainer-reducing-user-agent-granularity

Samples: https://user-agent-client-hints.glitch.me

WebAssembly Garbage Collection (WasmGC)

The GC proposal adds efficient support for high-level managed languages to WebAssembly, via struct and array types that enable language compilers targeting Wasm to integrate with a garbage collector in the host VM. In Chrome, enabling this feature implies enabling Typed Function References, which allow function references to be stored in the aforementioned structs and arrays. #

This feature was specified in this Spec.

WebCodecs AudioEncoder bitrateMode

Some audio codecs support specifying the audio encoder bitrate modes. This feature adds a "bitrateMode" flag with a default value of “variable” to WebCodec's AudioEncoderConfig, which mirrors the config option and default already present for VideoEncoderConfig. This flag will allow web authors to choose between encoding audio with a variable bitrate or a constant bitrate. Specific codec encoder implementations might have slightly different terminology (e.g. `CBR` vs `VBR` for Opus), but all of them should map to the general concept of "constant" versus "variable" bitrate. The two options have the following effects: “variable”: allows an audio encoder to increase or lower its bitrate according to the content of the audio it is encoding, in order to preserve bandwidth/binary-size, while still maintaining a target quality. For example, an encoder might lower its bitrate when encoding silence, and revert to a full bitrate when encoding speech. “constant” : forces an audio encoder to maintain the same bitrate, regardless of the audio content. This can be useful when a predictable bandwidth consumption is preferable. As of M119, this flag will affect two codecs on Chromium: Opus and AAC. #

This feature was specified in this Spec.

WebRTC Codec Selection API

This new API extends WebRTC encoding parameters to allow developers to choose a specific negotiated codec to be used for encoding an RTP stream. #

This feature was specified in this Spec.

Origin Trials in-progress in 119

This release of Chrome had 1 new origin trials.

Deprecate and Remove WebSQL

The Web SQL Database standard was first proposed in April 2009 and abandoned in November 2010. Gecko never implemented this feature and WebKit deprecated this feature in 2019. The W3C encouraged those needing web databases to adopt Web Storage or Indexed Database. Ever since its release, it has made it incredibly difficult to keep our users secure. SQLite was not initially designed to run malicious SQL statements, and yet with WebsQL we have to do exactly this. Having to react to a flow of stability and security issues is an unpredictable cost to the storage team. With SQLite over WASM as its official replacement, we want to remove WebSQL entirely. #

This feature was specified in this Spec.

Resources

Docs: https://developer.chrome.com/blog/deprecating-web-sqlhttps://docs.google.com/document/d/1bTj_nDqbdvE102sCm3KuwvN5c_HneLNPl9mmPeUjG4M/edit?usp=sharinghttps://docs.google.com/document/d/1CDdEO65pCIo60NM8CWHNNN7EunJ-wd8v1dGUxTOBJrM/edit?resourcekey=0-R0fxP199QQ-8gnMqzmQyrw

No linked samples

Flagged features in 119

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

Payment handler minimal header UX

This is a refresh of the browser UI associated with the Payment Handler API. Although there are no changes to the API surface with this feature, we'd like to run an origin trial starting in M112 to give payment handler providers a chance to experiment with the new UI ahead of the launch. #

This feature was specified in this Spec.

Resources

Docs: https://crbug.com/1385136

No linked samples

Promise.withResolvers

Promise.withResolvers is a static method that returns a new Promise along with its resolver functions, i.e. `const { promise, resolve, reject } = Promise.withResolvers()`. This is a standard version of a common helper function found in many JS libraries. Historically, some may know it as `defer` or `deferred`. #

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 119

This release of Chrome had 1 features deprecated.

Deprecate non-standard `shadowroot` attribute for declarative shadow DOM

The standards-track `shadowrootmode` attribute, which enables declarative Shadow DOM, was shipped in Chrome 111 [1]. The older, non-standard `shadowroot` attribute is now deprecated. During the deprecation period, both attributes are functional, however the `shadowroot` attribute does not enable the new streaming behavior, whereas `shadowrootmode` allows streaming of content. There is a straightforward migration path: replace `shadowroot` with `shadowrootmode`. The old `shadowroot` attribute is deprecated as of Chrome M112, and it will be removed (no longer supported) in Chrome M119, which goes to Stable on November 1, 2023. [1] https://chromestatus.com/feature/5161240576393216 #

This feature was specified in this Spec.

Removed features in 119

This release of Chrome had 0 features removed.