Chrome version: 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
This release of Chrome had 17 new features.
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.
Samples: https://davmila.github.io/demo-animation.progress/tda/index.htmlhttps://davmila.github.io/demo-animation.progress/sda/index.html
Adds the Atomics.pause method to hint the CPU that the current code is executing a spinlock. #
This feature was specified in this Spec.
Docs: https://github.com/tc39/proposal-atomics-microwait/blob/main/README.md
No linked samplesComplex 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.
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. TAG review: https://github.com/w3c/csswg-drafts/issues/11039 #
This feature was specified in this Spec.
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.
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
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.
This features adds a DOM primitive (Node.prototype.moveBefore) that allows moving elements around a DOM tree, without resetting the element's state. 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.
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.
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.
Docs: https://docs.google.com/document/d/1d6YoPvk0rdNBQaZcoFP-V5u4CBjgahvmnVsZpbn0Gmo/edit?usp=sharing
Samples: https://developer.chrome.com/blog/file-system-observer#demo
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.
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: - 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.
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.
Samples: https://storage-access-headers-demo.glitch.me
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.
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.
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.
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.
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
This release of Chrome had 0 new origin trials.
This release of Chrome had 10 are available behind a flag.
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.
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.
Samples: https://codepen.io/JanMiksovsky/pen/OBjzeY?editors=1000#0
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.
Samples: http://lopsided-motion.glitch.me/text-select-bug.htmlhttps://codepen.io/JRJurman/pen/gOqvxXz
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.
Docs: https://docs.google.com/document/d/1uTJifh_erMX4_CTKgKljlj9O4SAmGam5W61FBHeasGI/edit?usp=sharing
No linked samplesLCP (Largest-Contentful-Paint) is a visual loading metric that measures the time it took for the largest contentful element to be painted on the screen. Right now, LCP measures the paint time for the image's last paint, regardless of whether the image is animated. It also ignores auto-playing videos as LCP candidates. We propose to include paint time of the first frame in same-origin or Timing-Allow-Origin enabled animated images in LCP candidate entries, as well as expose videos similarly. #
This feature was specified in this Spec.
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.
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.
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.
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.
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.
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.
This release of Chrome had 1 features deprecated.
The maxInterStageShaderComponents limit is being removed due to a combination of factors: - Redundancy with maxInterStageShaderVariables: This limit already serves a similar purpose, controlling the amount of data passed between shader stages. - Minor Discrepancies: While there are slight differences in how the two limits are calculated, these differences are minor and can be effectively managed within the maxInterStageShaderVariables limit. - Simplification: Removing maxInterStageShaderComponents streamlines the shader interface and reduces complexity for developers. Instead of managing two separate limits (that both apply simultaneously but with subtle differences), they can focus on the more appropriately named and comprehensive maxInterStageShaderVariables. https://github.com/gpuweb/gpuweb/pull/4783 The goal is to fully remove it in Chrome 135. #
This feature was specified in this Spec.
This release of Chrome had 0 features removed.