Chrome version: 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 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
This release of Chrome had 25 new features.
A ::column pseudo element, which allows applying a limited set of styles to the generated fragments. Specifically, this would be limited to styles which do not affect the layout, and thus can be applied post-layout.
Allow the creation of interactive scroll buttons as pseudo-elements, e.g. .scroller { overflow: auto; } .scroller::scroll-button(inline-start) { content: "<"; } .scroller::scroll-button(inline-end) { content: ">"; } These should be focusable, behaving as a button (including their UA styles). When activated, a scroll should be performed in the direction by some amount. When it is not possible to scroll in that direction, they should be disabled (and styled via :disabled), otherwise they are enabled (and styled via :enabled). Selector allows to define buttons in four logical directions: block-start, block-end, inline-start, inline-end; as well as four physical directions: up, down, left, right. #
This feature was specified in this Spec.
::scroll-marker and ::scroll-marker-group for scrolling containers: Pseudo elements that allow to create a set of focusable markers for all of the associated items within the scrolling container. #
This feature was specified in this Spec.
Add MediaStreamTrack support to the Web Speech API. The Web Speech API is a web standard API that allows developers to incorporate speech recognition and synthesis into their web pages. Currently, the Web Speech API uses the user's default microphone as the audio input. MediaStreamTrack support allows websites to use the Web Speech API to caption other sources of audio including remote audio tracks.
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1LHGtO6A-U4OFQpG9LXUf1_4Elerpv1rncNCbHnmA7zY/edit?usp=sharing
No linked samplesThe interactivity property specifies whether an element and its flat tree descendants (including text runs) are inert or not. Making an element inert affects whether it can be focused, edited, selected, and searchable by find-in-page. It also affects whether it is visible in the accessibility tree. The syntax is: interactivity: auto | inert
This feature was specified in this Spec.
The overflow-inline and overflow-block CSS properties allow setting overflow in inline and block direction relative to the writing-mode. In a horizontal writing-mode overflow-inline maps to overflow-x, while in a vertical writing-mode it maps to overflow-y. #
This feature was specified in this Spec.
Add support for the concept of "remembered scroll offset" - see https://drafts.csswg.org/css-anchor-position-1/#scroll When a positioned element has a default anchor, and is tethered to this anchor at one edge, and against the original containing block at the other edge, the scroll offset will be taken into account when it comes to sizing the element. This way a developer can use all visible space (using `position-area`) for the anchored element when the document is scrolled at a given scroll offset. In order to avoid layout (resizing the element) every time the document is scrolled (which is undesired behavior, and also bad for performance), what will be used is a so-called "remembered scroll offset", rather than always using the current scroll offset. The remembered scroll offset is updated at a so-called "anchor recalculation point", which is either: - When the positioned element is initially displayed - When a different position option (`position-try-fallbacks`) is chosen #
This feature was specified in this Spec.
shape() allows responsive free-form shapes in clip-path. The author can define a series of verbs, roughly equivalent to the verbs in path(), but where the verbs accept responsive units (e.g. % or vw), as well as any CSS values such as custom properties or rather than pixel-values. See https://drafts.csswg.org/css-shapes-2/#shape-function #
This feature was specified in this Spec.
Srcdoc context documents are currently not service worker clients and not covered by their parent’s service worker. That results in some discrepancies (e.g. Resource Timing reports the URLs that these document load, but service worker doesn’t intercept them). This aims to fix the discrepancies by creating service worker clients for srcdoc iframes and make them inherit parent's service worker controller. #
This feature was specified in this Spec.
This feature allows for ARIA relationship attributes to be reflected in IDL as element references rather than DOMStrings. This implements the IDL attributes in the ARIAMixin (https://w3c.github.io/aria/#ARIAMixin) interface with a type of Element or FrozenArray<Element>, with the exception of ariaOwnsElements. This allows authors to use element references directly, rather than ID strings, when setting values for ARIA relationship attributes. These can be used on Elements directly, or on ElementInternals for custom elements (https://html.spec.whatwg.org/multipage/custom-elements.html#accessibility-semantics). #
This feature was specified in this Spec.
Docs: https://github.com/WICG/aom/blob/gh-pages/explainer.md#reflecting-element-referenceshttps://github.com/whatwg/html/pull/3917
No linked samplesFenced frames or URN iframes, if loaded through an API like Protected Audience or Shared Storage, can send out reporting beacons automatically if some event occurs (currently only top-level navigation beacons are supported). We previously tweaked this feature to allow cross-origin documents loaded in the root fenced frame's tree to send automatic beacons if opted in, but still kept the restriction that only frames that are same-origin to the origin loaded by the API could set the data that would be sent as part of the beacon. This feature expands that functionality to allow the cross-origin document to set the data that will be used in the automatic beacon. To allow this while still preserving privacy, both the fenced frame root document and the cross-origin subframe document must explicitly opt in. This is the same opt in shape as other cross-origin FFAR features. Specifically, the root frame must opt in via the "Allow-Fenced-Frame-Automatic-Beacons" header, and the cross-origin subframe setting the data must opt in via the 'crossOriginExposed' parameter in the call to setReportEvent...().
This feature was specified in this Spec.
Adds the Float16Array typed array. Number values are rounded to IEEE fp16 when writing into Float16Array instances. #
This feature was specified in this Spec.
Adding command and commandfor attributes to <button> elements would allow authors to assign behaviour to buttons in a more accessible and declarative way, while reducing bugs and simplifying the amount of JavaScript pages are required to ship for interactivity. Buttons with commandfor and command attributes will - when clicked, touched, or enacted via keypress - dispatch a CommandEvent on the element referenced by commandfor, with some default behaviours such as opening dialogs and popovers. #
This feature was specified in this Spec.
Adds support for <link rel="facilitated-payment" href="..."> as a hint that the browser should notify registered payment clients about a pending push payment. #
Docs: https://bit.ly/html-payment-link-dd
No linked samplesWhen a navigation is initiated by an Element (i.e., a link click or a form submission), the sourceElement property on the NavigateEvent will be the initiating element. #
This feature was specified in this Spec.
Allows to style pseudo elements that are nested inside other pseudo elements. So far, support is defined for: ::before::marker ::after::marker With ::column::scroll-marker being supported in the future. #
This feature was specified in this Spec.
NotRestoredReasons API has been launched as part of PerformanceNavigationTiming API. This PR specified the names of the reasons that User Agents can choose to expose. https://github.com/whatwg/html/pull/10154 This entry is about chromium changing the names of the reasons so that they match the ones specified. List of changes: "extension-messaging", "pending-permission-request", "not-main-frame", "frame-navigating", "timeout", "cookie-disabled", "cookie-removed", "printing", "web-database", "injected-javascript", "injected-stylesheet" -> "masked" "response-method-not-get"->"request-method-not-get" "serviceworker-version-activation" -> "serviceworker-version-activated" "serviceworker-added-after-bfcache" -> "serviceworker-added" "serviceworker-unregistration" -> "serviceworker-unregistered" "unload-handler" -> "unload-listener" "session-restored" -> null #
This feature was specified in this Spec.
Observables are a popular reactive-programming paradigm to handle an asynchronous stream of push-based events. They can be thought of as Promises but for multiple events, and aim to do what Promises did for callbacks/nesting. That is, they allow ergonomic event handling by providing an Observable object that represents the asynchronous flow of events. You can "subscribe" to this object to receive events as they come in, and call any of its operators/combinators to declaratively describe the flow of transformations through which events go. This is in contrast with the imperative version, which often requires complicated nesting with things like `addEventListener()`. For more on this, see the examples in the explainer. The big selling point for native Observables is their integration with EventTarget — its proposed `when()` method that returns an Observable which is a "better" `addEventListener()`. See https://github.com/WICG/observable and https://twitter.com/domfarolino/status/1684921351004430336. See the spec https://wicg.github.io/observable/ and the design doc: https://docs.google.com/document/d/1NEobxgiQO-fTSocxJBqcOOOVZRmXcTFg9Iqrhebb7bg/edit. #
This feature was specified in this Spec.
Currently setInterval with a value less than 1 is clamped to 1. This intent removes that restriction. Before: setInterval(..., 0) -> 1ms delay. After: setInterval(..., 0) -> 0ms delay. Notes: * This has no effect on the 4ms clamping for nested calls to timeouts. * setTimeout clamping was removed in a previous intent. #
Modify the service worker Client.url property to ignore document URL changes via history.pushState() and other similar history APIs. The Client.url property is intended to be the creation URL of the HTML document which ignores such changes. #
This feature was specified in this Spec.
The SVGAElement interface in SVG 2.0 allows manipulation of <a> elements similar to HTML anchor elements. Supporting the rel and relList attributes enhances security and privacy for developers. This alignment with HTML anchor elements ensures consistency and ease of use across web technologies. #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1ejVVjucwrfzXSk-W8r5TPMbzk6F25D-eUkD6YInOJFE/edit?tab=t.0
No linked samplesThis feature consists in exposing to the Web some timestamps that are present in WebRTC encoded frames transmitted via RTCPeerConnection. The timestamps in question are: -Capture timestamp: the timestamp when a frame was originally captured -Receive timestamp: the timestamp when a frame was received #
This feature was specified in this Spec.
Update the HTTP request on CORS redirect by removing the request-body-headers and body if the method has changed, and updating the referrer policy. These request updates align with the Fetch spec and match the behavior implemented by Firefox and Safari to improve compatibility. #
This feature was specified in this Spec.
fetchLater() is a JavaScript API to request a deferred fetch. Once called in a document, a deferred request is queued by the browser in the PENDING state, and will be invoked by the earliest of the following conditions: * The document is destroyed. * After a user-specified time. For privacy reason, all pending requests will be flushed upon document entering bfcache no matter how much time is left. * Browser decides it's time to send it. The API returns a FetchLaterResult that contains a boolean field "activated" that may be updated to tell whether the deferred request has been sent out or not. On successful sending, the whole response will be ignored by browser, including body and headers. Nothing at all should be processed or updated, as the page may have already be gone. Note that from the point of view of the API user, the exact send time is unknown. #
This feature was specified in this Spec.
Docs: https://github.com/WICG/pending-beacon/blob/main/docs/fetch-later-api.mdhttps://docs.google.com/document/d/1U8XSnICPY3j-fjzG35UVm6zjwL6LvX6ETU3T8WrzLyQ/edit#heading=h.ms1oipx914vf
Samples: https://github.com/WICG/pending-beacon/blob/main/docs/fetch-later-api.md#key-scenarios
In https://chromestatus.com/feature/5174306712322048 we've added dynamic safe area insets which can change as the user interacts with the device. This proposal amends the general safe area feature to add max-area-safe-inset-* variants of the variables which do not change and represent the maximum possible safe area inset. The use case this solves is to avoid needing to relayout the page in cases where the footer (for example) can simply slide as the safe area inset value grows, as opposed to changing size. #
This feature was specified in this Spec.
This release of Chrome had 4 new origin trials.
To enhance user security and combat session cookie theft, Chrome is introducing [Device Bound Session Credentials (DBSC)](https://developer.chrome.com/docs/web-platform/device-bound-session-credentials). This feature allows websites to bind a user's session to their specific device, which makes it significantly more difficult for stolen session cookies to be used on other machines. #
This feature was specified in this Spec.
This feature adds an `interestfor` attribute to <button> and <a> elements. This attribute adds "interest" behaviors to the element, such that when the user "shows interest" in the element, actions are triggered on the target element, such as showing a popover. The user agent will handle detecting when the user "shows interest" in the element, via methods such as hovering the element with a mouse, hitting special hotkeys on the keyboard, or long-pressing the element on touchscreens. When interest is shown or lost, an `InterestEvent` will be fired on the target, which have default actions in the case of popovers - showing and hiding the popover. #
This feature was specified in this Spec.
This feature provides web developers with a mechanism to verify the provenance of resources they depend upon, creating a technical foundation for trust in a site's dependencies. In short: servers can sign responses with a Ed25519 key pair, and web developers can require the user agent to verify the signature using a specific public key. This offers a helpful addition to URL-based checks offered by Content Security Policy on the one hand, and Subresource Integrity's content-based checks on the other. #
This feature was specified in this Spec.
This extends speculation rules syntax to allow developers to specify the target_hint field. This field provides a hint to indicate a target navigable where a prerendered page will eventually be activated. For example, when _blank is specified as a hint, a prerendered page can be activated for a navigable opened by window.open(). The field has no effect on prefetching. The specification allows this field to accept any strings that are valid as navigable target name or keyword as the value, but this launch supports only one of "_self" or "_blank" strings. If the hint is not specified, it's treated like "_self" is specified. #
This feature was specified in this Spec.
Samples: https://prerender2-specrules.glitch.me
This release of Chrome had 10 are available behind a flag.
Correct the error type thrown during WebAuthn credential creation for 'payment' credentials. Due to a historic specification mismatch, creating a 'payment' credential in a cross-origin iframe without a user activation would throw a SecurityError instead of a NotAllowedError, which is what is thrown for non-payment credentials. This is a breaking change, albeit a niche one. Code that previously detected the type of error thrown (e.g., `e instanceof SecurityError`) would be affected. Code that just generally handles errors during credential creation (e.g. `catch (e)`) will continue to function correctly. #
This feature was specified in this Spec.
This feature exposes **find-in-page** search result styling to authors as a highlight pseudo-element, like selection and spelling errors. This allows authors to change the foreground and background colors or add text decorations, which can be especially useful if the browser defaults have insufficient contrast with the page colors or are otherwise unsuitable. #
This feature was specified in this Spec.
Docs: https://github.com/Igalia/explainers/blob/main/css/find-in-page/README.md
No linked samplesTo enhance user security and combat session cookie theft, Chrome is introducing [Device Bound Session Credentials (DBSC)](https://developer.chrome.com/docs/web-platform/device-bound-session-credentials). This feature allows websites to bind a user's session to their specific device, which makes it significantly more difficult for stolen session cookies to be used on other machines. #
This feature was specified in this Spec.
Web applications may suffer from bimodal distribution in page load performance due to factors outside of the application’s control. For example, when a user agent first launches in a "cold start" scenario, it must perform many expensive initialization tasks that compete for system resources. Browser extensions can also affect performance, since some extensions run additional code on every page you visit, increasing CPU usage and slowing response times. Likewise, when a machine is already busy with intensive tasks, web pages may load more slowly as a result. In these scenarios, content the web app attempts to load will be in competition with other work happening on the system. This makes it difficult to detect if performance issues exist within web applications themselves, or because of external factors. Teams we have worked with have been surprised at the difference between real-world dashboard metrics and what they observe in page profiling tools. Without more information, it is challenging for developers to understand if (and when) their applications may be misbehaving or are simply being loaded in a contended period. A new ‘confidence’ field on the PerformanceNavigationTiming object will enable developers to discern if the navigation timings are representative for their web application. #
This feature was specified in this Spec.
Samples: https://mwjacksonmsft.github.io/pwa/perfentry/index.html
Extend the Notifications API to allow installed PWA's to send incoming call notifications - i.e., notifications with call-styled buttons and a ringtone. This extension will help VoIP web apps to create more engaging experiences by making it easier for users to easily recognize a calling notification and answer it. Besides that, this feature will help bridge the gap between native and web implementations of apps that have them both. #
This feature was specified in this Spec.
Docs: https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/Notifications/notifications_actions_customization.mdhttps://issues.chromium.org/issues/40246169
Samples: https://microsoftedge.github.io/Demos/incoming-call-notifications
The <canvas> DOM element, like all DOM elements, accepts a `lang` attribute that is used to define language specific treatment for font selection (when fonts have locale specific glyphs). Browsers respect this attribute. However, when an OffscreenCanvas is created there is no way to set locale information, possibly resulting in a state where an offscreen canvas produces rendered results that differ from the canvas in which it's output is used. This feature adds a `lang` IDL attribute to CanvasTextDrawingStyles to give developers direct control over the language for the text drawing and metrics. #
This feature was specified in this Spec.
Samples: https://blogs.igalia.com/schenney/canvas-localization-support
Enables the HTTP disk cache to use the No-Vary-Search response header to share a cache entry between URLs that differ only in the query parameters. Developers can use No-Vary-Search to specify query parameters that have no impact on the user experience. A common example might be an id used to track conversions. Supporting this header in the HTTP disk cache means that if the user later goes back to that same page without the conversion id, it can be used or revalidated from the cache rather than having to be fetched from scratch from the network. Previously, No-Vary-Search support shipped for the navigation prefetch cache, prefetch and prerender speculation rules, and prerender. This launch makes it generally available to any feature that uses the HTTP disk cache. #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1RS3q6qZ7-k9CvZsDYseGOXzcdQ9fGZ6YYnaW7fTPu7A/edit
No linked samplesChrome 142 introduces a shift in the process isolation policy from locking processes to a site like `https://example.com` to locking them to a specific origin, such as, `https://foo.example.com`. To further enhance security, Chrome is moving to a more granular process isolation model called **Origin Isolation**. Previously, Chrome used **Site Isolation**, which grouped different origins from the same site (for example, `https://a.example.com` and `https://b.example.com`) into a single renderer process. With **Origin Isolation**, each individual origin (for example, `https://foo.example.com`) will be isolated in its own renderer process. This change strengthens Chrome's security architecture by better aligning process boundaries with the web's fundamental origin-based security model, offering greater protection against potential vulnerabilities within sites. **Potential performance considerations**: While each individual process will be smaller, this increase in process granularity may lead to higher overall memory and CPU usage. To balance security and performance, Origin Isolation will be enabled by default only on devices with at least 4GB of RAM. **Enterprise Control**: Admins can control this feature using the [OriginKeyedProcessesEnabled](https://chromeenterprise.google/policies/#OriginKeyedProcessesEnabled) policy.
RegExp.escape is a static method that takes a string and returns an escaped version that may be used as a pattern inside a regular expression. For example, copied from the proposal explainer: ``` const str = prompt("Please enter a string"); const escaped = RegExp.escape(str); const re = new RegExp(escaped, 'g'); // handles reg exp special tokens with the replacement. console.log(ourLongText.replace(re)); ```
This feature was specified in this Spec.
Adds an additional cryptographic signature over Secure Payment Confirmation assertions and credential creation. The corresponding private key is not synced across devices. This helps web developers meet requirements for device binding for payment transactions. #
This feature was specified in this Spec.
Docs: https://github.com/w3c/secure-payment-confirmation/issues/271https://github.com/w3c/secure-payment-confirmation/pull/286https://github.com/w3c/secure-payment-confirmation/pull/296
Samples: https://rsolomakhin.github.io/pr/spc-sync
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.
navigator.xr.supportsSession was replaced in the WebXR spec by the navigator.xr.isSessionSupported method in September of 2019 after receiving feedback on the API shape from the TAG. It has been marked as deprecated in Chromium since then, producing a console warning redirecting developers to the updated API. Usage of the call is very low, as shown here: https://chromestatus.com/metrics/feature/timeline/popularity/2416 Additionally, all major frameworks that are used to build WebXR content have been confirmed to have been updated to use the newer call.
This feature was specified in this Spec.
This release of Chrome had 1 features removed.
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 #
This feature was specified in this Spec.