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 24 new features.
The current Web Audio API lacks a mechanism for the User Agent (UA) to interrupt playback for scenarios such as exclusive audio access (VoIP) or when a laptop lid is closed. To address this, we propose adding an "interrupted" state to AudioContextState. This new state would allow the UA to pause playback in these scenarios and enable web applications to respond appropriately. #
This feature was specified in this Spec.
Enables a page to limit the maximum brightness of HDR content. #
This feature was specified in this Spec.
Samples: https://ccameron-chromium.github.io/hdr-headroom-limit/example.html
A Web API that allows Web applications to: 1. Forward wheel events to a captured tab. 2. Read and change the zoom level of a captured tab. #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/10UojDvTJ6ojBEOP7cgBIIaE7WZEfes_Qv1eN3A2A0nM/edit?usp=sharing
Samples: https://captured-surface-control.glitch.me
Expose pixel ratio of the captured surface while screensharing. This feature will help applications to conserve their system resources or adapt the quality/bandwidth trade-off according to the physical and logical resolutions of the captured surface. #
This feature was specified in this Spec.
If a pointer is captured while the `pointerup` event is being dispatched, the `click` event will be dispatched to the captured target instead of the nearest common ancestor of `pointerdown` and `pointerup` events as per the UI Event spec. For uncaptured pointers, the `click` target remains unchanged. #
This feature was specified in this Spec.
Samples: https://codepen.io/mustaqahmed/full/YzawKWW
Allow attaching information about which functions should be eager parsed & compiled in JavaScript files. The information will be encoded as magic comments. We'll first target launching the file-based explicit compile hints, and as a follow up, investigate selecting individual functions for eager compilation. #
This feature was specified in this Spec.
Allows FedCM to show multiple identity providers in the same dialog. This provides developers with a convenient way to present all supported identity providers to users. We are planning to first tackle the simple case of having all providers in the same get() call. We are also removing support for ‘add another account’ in FedCM passive mode. This feature allows showing a ‘use another account’ button alongside other IdP accounts in the chooser. The feature is currently unused, and UX conversations have led us to believe that supporting this leads to a more complicated flow without much benefit. This feature will still work in FedCM active mode. #
This feature was specified in this Spec.
This feature modernizes the Chromium scrollbars (both overlay and non-overlay) on Windows and Linux to fit the Windows 11 Fluent design language. Non-overlay Fluent scrollbars will be enabled by default in Linux and Windows. This change applies to Linux as well because Chromium's Linux scrollbar design has historically been aligned with what ships on Windows. How to expose enabling overlay Fluent scrollbars is still being decided. Visual spec: https://docs.google.com/document/d/1haDpb1QIh2PaLwsQD1i4WHFq_5_jSK3XK9lhgSs4WkM/edit?usp=sharing Design doc: https://docs.google.com/document/d/1GCmz2nbJV1XiopoLHnlrVaHCjhQMdiyDfPN_a22OIjU/edit?usp=sharing Intent to implement: https://groups.google.com/a/chromium.org/g/blink-dev/c/SomQdLx6aEk #
This newer codec has increased compression efficiency (higher quality per bitrate) relative to older generation codecs like VP8 and H264 and very strong hardware support going back over a decade. This translates into increased battery life and reduced risk of performance issues, and, depending on the performance of the underlying hardware encoder, will often improve visual experience in cases where hardware VP9 or AV1 encoders are not available. HEVC is already an industry standard and we should support it in WebRTC when provided by the platform, i.e., if it is available in hardware (we will not provide a software implementation). The codec is already available in WebCodecs (M130) and MediaRecorder APIs (M136). After this change, HEVC will join VP8, H.264, VP9, and AV1 as supported codecs in WebRTC. Support will be queryable via MediaCapabilities API. Safari has already shipped support in WebRTC. #
This feature was specified in this Spec.
Chromium's MediaRecorder API now supports HEVC encoding, introducing the hvc1.* codec string, and adds new codecs (hev1.* and avc3.*) supporting variable resolution video in MP4. Support for HEVC platform encoding was added in WebCodecs in Chromium M130. As a follow-up, support has been added to the MediaRecorder API in Chromium. The API now supports both MP4 and Matroska muxer types with different HEVC and H.264 mime type specifications. HEVC encoding is only supported if the user's device and operating system provide the necessary capabilities.
Chrome’s HTTP cache keying scheme will be updated to include an “is-cross-site-main-frame-navigation” boolean to mitigate cross-site leak attacks involving top-level navigation. Specifically, this will prevent cross-site attacks in which an attacker can initiate a top-level navigation to a given page and then navigate to a resource known to be loaded by the page in order to infer sensitive information via load timing. This change also improves privacy by preventing a malicious site from using navigations to infer whether a user has visited a given site previously. #
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
To eliminate user browsing history leaks, anchor elements are styled as :visited only if they have been clicked from this top-level site and frame origin before. On the browser-side, this means that the VisitedLinks hashtable is now partitioned via "triple-keying", or by storing the following for each visited link: <link URL, top-level site, frame origin>. By only styling links that have been clicked on this site and frame before, the many side-channel attacks that have been developed to obtain :visited links styling information are now obsolete, as they no longer provide sites with new information about users. There is an exception for "self-links", where links to a site's own pages can be styled as :visited even if they have not been clicked on in this exact top-level site and frame origin before. This exemption is only enabled in top-level frames or subframes which are same-origin with the top-level frame. The privacy benefits above are still achieved because sites already know which of its subpages a user has visited, so no new information is exposed. This was a community-requested exception which improves user experience as well. #
This feature was specified in this Spec.
Docs: https://github.com/explainers-by-googlers/Partitioning-visited-links-history
No linked samplesIntroduces a new violation type called "Potential Permissions Policy violation", which will only look at Permissions Policy (including report-only policy) and the allow attribute set in iframes to detect the conflict between Permissions Policy enforced vs permissions propagated to iframes. #
This feature was specified in this Spec.
Protected Audience bidding and scoring scripts that interface with WebAssembly need to efficiently convert string-typed data to (and from) byte arrays (e.g. to pass strings into and out of WebAssembly via the “memory” ArrayBuffer). This provides two standalone functions, protectedAudience.encodeUtf8, and protectedAudience.decodeUtf8 to perform these tasks about an order of magnitude more efficiently than doing it in JavaScript.
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.
In https://github.com/w3c/csswg-drafts/issues/11645#issuecomment-2701601350 it was resolved to replace `string` attr() type with `raw-string`, see: https://drafts.csswg.org/css-values-5/#attr-notation. Change attr() syntax, so that `attr(data-foo string)` will now become `attr(data-foo raw-string)`. #
This feature was specified in this Spec.
This enables developers to add tag field to speculation rules. This optional field can be used to track the source of speculation rules, e.g. to treat them differently at an intermediary server. Any tags associated with a speculation will be sent with the Sec-Speculation-Tags header. #
This feature was specified in this Spec.
The fallback part of a var() function does not validate against the type of the custom property being referenced. #
The print-color-adjust allows adjusting colors in printed web pages. This is the same as Chromium's already-supported -webkit-print-color-adjust, but with a standardized name. The -webkit-prefixed version is not removed. https://developer.mozilla.org/en-US/docs/Web/CSS/print-color-adjust #
This feature was specified in this Spec.
The ProgressEvent has attributes `loaded` and `total` indicating the progress, and their type is `unsigned long long` now. With this feature, the type for these two attributes is changed to `double` instead, which gives the developer more control over the value. For example, the developers can now create a ProgressEvent with the `total` of 1 and the `loaded` increasing from 0 to 1 gradually. This is aligned with the default behavior of the <progress> HTML element if the max attribute is omitted.
This feature was specified in this Spec.
This change brings Chromium code in line with the latest W3C spec for SVGGeometryElement and SVGPathElement in terms of usage of DOMPointInit over SVGPoint for getCharNumAtPosition, isPointInFill, isPointInStroke. The change has already landed: https://chromium-review.googlesource.com/c/chromium/src/+/6284886 Firefox and Safari already have this live making this a fairly safe change to land. Details for both added under Signals for both. #
This feature was specified in this Spec.
WebAuthn Conditional Create allows websites to automatically create passkeys for existing users that have a matching password saved in their password manager. #
This feature was specified in this Spec.
Samples: https://kreichgauer.github.io/passkey-upgrade-demo
Functionality added to the WebGPU spec after its first shipment in a browser. The GPUAdapterInfo isFallbackAdapter boolean attribute indicates if an adapter has significant performance limitations in return for wider compatibility, more predictable behavior, and/or improved privacy. Note that a fallback adapter may not be present on all systems. #
This feature was specified in this Spec.
This release of Chrome had 2 new origin trials.
Adds setPreferredSinkId() to MediaDevices, which enables a top-level frame to override the default audio output device for all audio renderers in the top-level frame and its child frames, including cross-origin child frames. Audio renderers include HTML <media> elements and web audio contexts. #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1xVn0VwLa8w7jwXl6aeOfYn0mYK7zEc4pSmHelHAbi2g/edit?usp=sharing
Samples: https://stevebeckermsft.github.io/repro_pages/set_preferred_sink_id/sample.html
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
This release of Chrome had 10 are available behind a flag.
Dialog elements can be closed through a variety of mechanisms, sometimes developers want to have the ability to prevent closure. To achieve this dialogs fire a cancel event. Originally this was only fired via a close request (e.g. ESC key press), recently a `requestClose()` JS function was added which also fires the cancel event. The 'request-close' command brings that new ability to the declarative invoker commands API. #
This feature was specified in this Spec.
Introduces "rotation: int" and "flip: bool" values to various video related interfaces in WebCodecs so that developers can work with frame sources that have orientation (E.g., Android cameras, certain media). The VideoFrame interface grows the ability to create VideoFrames with arbitrary rotation and flip as well as accessors for this information on the VideoFrame object. The VideoDecoderConfig object gains rotation and flip fields that are emitted on decoded VideoFrame objects automatically. The VideoEncoder class gains mechanisms for passing rotation and flip information from encode() to the VideoDecoderConfig emitted as part of EncodedVideoChunkMetadata. If encode() is called with frames with different orientations a non-fatal exception will be thrown. configure() may be used to reset the allowed orientation. #
This feature was specified in this Spec.
Enable styling corners, on top of the existing border-radius, by expressing the shape/curvature of the corner as a superellipse. This allows shapes like squircles, notches, scoops etc., and animating between them. #
This feature was specified in this Spec.
The HTML spec contains a list of [special rules for H1 tags](https://html.spec.whatwg.org/multipage/rendering.html#sections-and-headings) nested within `article`, `aside`, `nav`, or `section` tags. Chrome 140 deprecates these special rules, because they can cause accessibility issues. For example, they can visually reduce the font size for nested `h1` tags so that they look like `h2` tags, but nothing in the accessibility tree reflects this demotion. #
This feature was specified in this Spec.
Docs: https://github.com/whatwg/html/issues/7867#issue-1218728578
No linked samplesAdds support for phone numbers and usernames, in addition to or instead of a user's full name and email address as identifiers for disambiguating accounts in the account selector. Also, makes these new fields available for websites to affect the disclosure text. #
This feature was specified in this Spec.
A system for creating structured headings within a document. The `headingoffset=` attribute can be added to elements that influences the child `h1`-`h6` elements' heading levels, for example a `headingoffset=1` will mean all `h1` elements will have an effective heading level of 2, and so on. In addition the `:heading` pseudo class will select all headings (tags of `h1` to `h6`) and the `:heading(N)` pseudo class will select headings with an _effective_ level of `N`. This allows for documents with different heading structures (for example user generated content) to be combined to create a well defined heading structure without significantly altering the underlying documents. #
A new mode for navigator.credentials.get() that causes browser sign-in UI to be displayed to the user if there is a passkey or password for the site that is immediately known to the browser, or else rejects the promise with NotAllowedError if there is no such credential available. This allows the site to avoid showing a sign-in page if the browser can offer a choice of sign-in credentials that are likely to succeed, while still allowing a traditional sign-in page flow for cases where there are no such credentials. #
This feature was specified in this Spec.
Docs: https://github.com/w3c/webauthn/wiki/Explainer:-WebAuthn-immediate-mediation
Samples: https://deephand.github.io/webauthn-immediate-demo
The 'core-features-and-limits' feature signifies a WebGPU adapter and device support the core features and limits of the spec. Explainer: https://gist.github.com/greggman/0dea9995e33393c546a4c2bd2a12e50e #
This feature was specified in this Spec.
Functionality added to the WebGPU spec after its first shipment in a browser. A GPUTextureView is now allowed to be used for an externalTexture binding when creating a GPUBindGroup. #
This feature was specified in this Spec.
Functionality added to the WebGPU spec after its first shipment in a browser. The GPUCommandEncoder copyBufferToBuffer() method now includes a simpler way to copy entire buffers using a new overload with optional offsets and size parameters.
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.
canLoadOpaqueURL() was replaced with navigator.canLoadAdAuctionFencedFrame() in 2023, and calling it has resulted in a deprecation console warning ever since pointing developers to the new API. It does not make sense to have the function attached to `HTMLFencedFrameElement` and instead should be attached to the `navigator` object (which contains other fenced frame + ad auction methods).
This release of Chrome had 0 features removed.