Chrome Release Summary

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

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

Enabled by default in 133

This release of Chrome had 20 new features.

Animation.overallProgress

Adds an "overallProgress" property to the JavaScript class Animation[1]. This property provides authors with a convenient and consistent representation of how far along an animation has advanced across its iterations and regardless of the nature of its timeline[2]. [1] https://developer.mozilla.org/en-US/docs/Web/API/Animation [2] https://developer.mozilla.org/en-US/docs/Web/API/AnimationTimeline #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://davmila.github.io/demo-animation.progress/tda/index.htmlhttps://davmila.github.io/demo-animation.progress/sda/index.html

Atomics.pause

Adds the Atomics.pause method to hint the CPU that the current code is executing a spinlock. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/tc39/proposal-atomics-microwait/blob/main/README.md

No linked samples

CSP hash reporting for scripts

Complex web application often need to keep tabs of the subresources that they download, for security purposes. In particular, upcoming industry standards and best practices (e.g. PCI-DSS v4) require that web applications keep an inventory of all the scripts they download and execute. This feature builds on CSP and the Reporting API to report the URLs and hashes (for CORS/same-origin) of all the script resources that the document loads. #

This feature was specified in this Spec.

CSS :open pseudo-class

The :open pseudo-class matches <dialog> and <details> when they are in their open state, and matches <select> and <input> when they are in modes which have a picker and the picker is showing. #

This feature was specified in this Spec.

CSS Scroll State Container Queries

Use container queries to style descendants of containers based on their scroll state. The query container is either a scroll container, or an element affected by the scroll position of a scroll container. The following states can be queried: - Whether a sticky positioned container is stuck to one of the edges of the scroll box (stuck) - Whether a scroll snap aligned container is currently snapped horizontally or vertically (snapped) - Whether a scroll container can be scrolled in a queried direction (scrollable) A new container-type:scroll-state is introduced to allow such containers to be queried. For instance: #sticky { position: sticky; container-type: scroll-state; } @container scroll-state(stuck: top) { #sticky-child { font-size: 75% } } #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://codepen.io/argyleink/pen/JjqVzxqhttps://codepen.io/argyleink/pen/rNgbbOPhttps://codepen.io/argyleink/pen/wvbZZWPhttps://codepen.io/argyleink/pen/zYbEdGmhttps://codepen.io/argyleink/pen/vYPzdGphttps://codepen.io/argyleink/pen/PoMJvXN

CSS text-box, text-box-trim, and text-box-edge

To achieve optical balance of text content, the text-box-trim and text-box-edge properties, along with the text-box shorthand property, make finer control of vertical alignment of text possible. The text-box-trim property specifies the sides to trim, above or below, and the text-box-edge property specifies how the edge should be trimmed. These properties allow developers to control vertical spacing precisely by using the font metrics. Note that the `ideographic` and `ideographic-ink`, two values for the text-box-edge property for CJK, are deferred to future releases due to open issues currently under discussion. #

This feature was specified in this Spec.

DOM State-Preserving Move

This features adds a DOM primitive (moveBefore) that allows moving elements around a DOM tree, without resetting the element's state. This function would be available on ParentNodes, like Element, Document, DocumentFragment. When moving instead of removing/inserting, following state such as the following is preserved: - IFrames remain loaded - Active element remains focus - Popovers, fullscreen, modal dialogs remain open - CSS transitions and animations carry on #

This feature was specified in this Spec.

Expose attributionsrc attribute on

For Attribution Reporting, the attributionsrc attribute was already unintentionally processed on <area> elements due to code shared with <a>, which intentionally supported that attribute. For completeness, we expose the attribute on <area> with identical syntax and semantics to <a> and without changing the previous processing: When an <area> tag with an attributionsrc attribute is navigated, the foreground request may register navigation sources and, if the attribute is non-empty, one or more background requests will likewise be able to register navigation sources. #

This feature was specified in this Spec.

FileSystemObserver interface

The FileSystemObserver interface notifies websites of changes to the file system. Sites observe changes to files and directories, to which the user has previously granted permission, in the user's local device (as specified in WICG/file-system-access) or in the Bucket File System (as specified in whatwg/fs), and are notified of basic change info, such as the change type. #

This feature was specified in this Spec.

Resources

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

Samples: https://developer.chrome.com/blog/file-system-observer#demo

Multiple import maps

Import maps currently have to load before any ES module and there can only be a single import map per document. That makes them fragile and potentially slow to use in real-life scenarios: Any module that loads before them breaks the entire app, and in apps with many modules the become a large blocking resource, as the entire map for all possible modules needs to load first. This feature is to enable multiple import maps per document, by merging them in a consistent and deterministic way. #

This feature was specified in this Spec.

Remove Chrome Welcome page triggering via initial prefs first run tabs

Including "chrome://welcome" in the "first_run_tabs" property of the "initial_preferences" file will now have no effect. This is removed because that page is redundant with the First Run Experience that triggers on desktop platforms. See https://www.chromium.org/administrators/configuring-other-preferences for more context on the "initial_preferences" file. #

This feature was specified in this Spec.

Resource timing: revert responseStart change and introduce firstResponseHeadersStart

Resource timing: - responseStart returns the first response, either early hints (interim) or final - Expose the final response headers (2xx/4xx/5xx) time as finalResponseHeadersStart. #

This feature was specified in this Spec.

Secure Rust Font Stack

The Rust font stack for Chrome integrates the Fontations font libraries into Chromium as a safe replacement for FreeType (https://github.com/googlefonts/fontations/). This project is a collaboration between Chrome and Google Fonts. By replacing FreeType we make font processing in Chrome safer and more reliable and move from a C codebase to a modern set of efficient and ergonomic Rust libraries for font processing in Chrome. We reduce the engineering time needed to keep FreeType secure and spend less time having to address incoming issues found by Fuzzers. We open up the possibility of unsandboxing font processing code. We move to relying on a shared codebase for font processing in Chrome and font production in Google Fonts. Internal document: http://go/rust-fontstack-chrome #

This feature was specified in this Spec.

Storage Access Headers

Offers an alternate way for authenticated embeds to opt in for unpartitioned cookies. These headers indicate whether unpartitioned cookies are (or can be) included in a given network request, and allow servers to activate 'storage-access' permissions they have already been granted. Giving an alternative way to activate the 'storage-access' permission allows usage by non-iframe resources, and can reduce latency for authenticated embeds. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://storage-access-headers-demo.glitch.me

Support creating ClipboardItem with Promise

The ClipboardItem, which is the input to the async clipboard write method, now accepts string values in addition to Blobs in its constructor. ClipboardItemData can be a Blob, a string, or a Promise that resolves to either a Blob or a string. #

This feature was specified in this Spec.

Web Authentication API: PublicKeyCredential’s getClientCapabilities() method

getClientCapabilities() method allows to determine which WebAuthn features are supported by the user's client. The method returns a list of supported capabilities, allowing developers to tailor authentication experiences and workflows based on the client's specific functionality. #

This feature was specified in this Spec.

WebAssembly Memory64

The memory64 proposal adds support for linear WebAssembly memories with size larger than 2^32 bits. It provides no new instructions, but instead extends the existing instructions to allow 64-bit indexes for memories and tables. #

This feature was specified in this Spec.

WebGPU: 1-component vertex formats (and unorm8x4-bgra)

Adds additional vertex formats not present in the initial release of WebGPU due to lack of support or old macOS versions (which are no longer supported by any browser). The 1-component vertex formats lets applications request only the necessary data when previously they had to request at least 2x more for 8 and 16-bit data types. The unorm8x4-bgra format makes it slightly more convenient to load BGRA-encoded vertex colors while keeping the same shader. #

This feature was specified in this Spec.

X25519 algorithm of the Web Cryptography API

The "X25519" algorithm provides tools to perform key agreement using the X25519 function specified in [RFC7748]. The "X25519" algorithm identifier can be used in the SubtleCrypto interface to access the implemented operations: generateKey, importKey, exportKey, deriveKey and deriveBits. #

This feature was specified in this Spec.

Resources

Docs: https://github.com/WICG/webcrypto-secure-curves/blob/main/explainer.mdhttps://docs.google.com/document/d/1fDTUY3HVAXehi-eSfbi7nxh8ZPw4MpSKM8U1fMdqJlU/edit?tab=t.0#heading=h.9w6b5q5ro96v

Samples: https://github.com/WICG/webcrypto-secure-curves/blob/main/explainer.md

popover=hint

The Popover API (https://chromestatus.com/feature/5463833265045504) specifies the behavior for two values of the `popover` attribute: `auto` and `manual`. This feature describes a third value, `popover=hint`. Hints, which are most often associated with "tooltip" type behaviors, have slightly different behaviors. Primarily, the difference is that `hint`s are subordinate to `auto`s when opening nested stacks of popovers. So it is possible to open an unrelated `hint` popover while an existing stack of `auto` popovers stays open. The canonical example is that a <select> picker is open (popover=auto) and a hover-triggered tooltip (popover=hint) is shown. That action does not close the <select> picker. #

This feature was specified in this Spec.

Origin Trials in-progress in 133

This release of Chrome had 0 new origin trials.

Flagged features in 133

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

Expose coarsened cross-origin renderTime in elment timing/LCP (regardless of TAO)

All element-timing and LCP performance entries would have a non-zero renderTime, even if they are cross-origin without Timing-Allow-Origin. All presentation timestamps (renderTime, paint timing start time, event timing end time) will be coarsened to a 4ms multiple to mitigate the risk of reading cross-origin image information. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1VxgMf1wlWzB4ViAW4ohkOe3AT0wQZKk7hC3IVq-cuw0/edit?tab=t.0#heading=h.fmic3y1ir4

No linked samples

Fix mouse focus for slotted elements in Shadow DOM

Currently, mouse-triggered event will traverse up to the parent or shadow host to find fallback element to receive mouse focus. This doesn't make sense for slotted content, where we expect the fallback element to receive focus to be the assigned slot, instead of its parent. This is fixed by changing that step to traverse the Flat Tree. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://codepen.io/JanMiksovsky/pen/OBjzeY?editors=1000#0

Fix text selection on Shadow DOM with delegatesFocus

A shadow host with delegatesFocus set to true will delegate its focus to its first focusable child. On a mouse click event, the child will receive focus and the event will be marked as handled. No further event dispatching is done. This is a problem because the steps to handle text selection afterward are not ran and the selection does not recognize the focused element as part of the selection. We fix this by continuing event handling even after an element was delegate focused and update how selection recognizes having focus in a shadow tree. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: http://lopsided-motion.glitch.me/text-select-bug.htmlhttps://codepen.io/JRJurman/pen/gOqvxXz

Freezing on Energy Saver

When Energy Saver is active, Chrome will freeze a "browsing context group" that has been hidden and silent for >5 minutes if any subgroup of same-origin frames within it exceeds a CPU usage threshold, unless it: - Provides audio- or video-conferencing functionality (detected via microphone, camera or screen/window/tab capture or an RTCPeerConnection with an 'open' RTCDataChannel or a 'live' MediaStreamTrack). - Controls an external device (detected via usage of Web USB, Web Bluetooth, Web HID or Web Serial). - Holds a Web Lock or an IndexedDB connection that blocks a version update or a transaction on a different connection. - Participates in the freezing opt-out origin trial. Freezing consists of pausing execution. It is formally defined in the Page Lifecycle API. The CPU usage threshold will be calibrated to freeze approximately 10% of background tabs when Energy Saver is active. ** Note: The origin trial is to opt-out from freezing, not to activate it. ** #

This feature was specified in this Spec.

Resources

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

No linked samples

Popover invoker and anchor positioning improvements

This chromestatus represents the following related set of changes, which were resolved in https://github.com/whatwg/html/pull/9144#issuecomment-2195095228 and landed in https://github.com/whatwg/html/pull/10728: 1. add an imperative way to set invoker relationships between popovers: popover.showPopover({source}) 2. invoker relationships create implicit anchor element references. #

This feature was specified in this Spec.

Popover nested inside invoker shouldn't re-invoke it

In this case: ``` <button popovertarget=foo>Activate <div popover id=foo>Clicking me shouldn't close me</div> </button> ``` clicking the button properly activates the popover, however, clicking on the popover itself after that should **not** close the popover. It currently does because the popover click bubbles to the `<button>` and activates the invoker, which toggles the popover closed. This chromestatus tracks changing the behavior so that clicking on the nested popover does not re-invoke itself. {Note: this likely should have been created as a "No developer-visible change" chromestatus entry, but it's too late now.} #

This feature was specified in this Spec.

Remove five-minute rule

Previously, when a resource was prefetched using <link rel=prefetch>, we ignored its cache semantics (namely max-age and no-cache) for the first use within 5 minutes, to avoid refetching. Now, we remove this special case and use normal HTTP cache semantics. This means web developers need to include appropriate caching headers (i.e. Cache-Control or Expires) to see benefits from <link rel=prefetch>. This also affects the nonstandard <link rel=prerender>. This fixes a bug with speculation rules prefetch, where non-2xx responses were cached. However, it does not start requiring caching headers for speculation rules prefetch, since they are intended for navigational prefetching and thus have different caching needs than the normal HTTP cache. #

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 133

This release of Chrome had 0 features deprecated.

Removed features in 133

This release of Chrome had 0 features removed.