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 13 new features.
RTCDataChannel.send(Blob) is now implemented and the onMessage event can now optionally receive data of type Blob using the binaryType attribute. In addition to supporting sending strings and ArrayBuffers, you can chose to send a Blob instead as long as its size is below the SCTP transport maxMessageSize as indicated in the WebRTC specification. Using the binaryType attribute set to "blob", the onMessage event data attribute will be of type Blob instead of the currently supported ArrayBuffer. #
This feature was specified in this Spec.
Replaces the inset-area() function with inset-area values directly within position-try-fallbacks. This means that you now just write e.g. position-try-fallbacks:top instead of position-try-fallbacks:inset-area(top).
This feature was specified in this Spec.
The CSS interpolate-size property allows a page to opt in to animations and transitions of CSS intrinsic sizing keywords such as auto, min-content, fit-content, etc., in the cases where we can animate those keywords. The CSS calc-size() function is a CSS function similar to calc(), but that also supports operations on exactly one supported sizing keyword. Currently supported sizing keywords are auto, min-content, max-content, fit-content, and (for flex-basis) content. Other sizing keywords that may be supported in the future include stretch (currently supported as prefixed -webkit-fill-available) and contain. This function is used to represent the values in the middle of the animations allowed by the interpolate-size property. #
This feature was specified in this Spec.
This exposes WebDriver commands for creating, removing and updating pressure source samples for so called "virtual pressure sources": pressure sources that do not depend on underlying hardware or operating system support and can be used for testing. #
This feature was specified in this Spec.
Dynamically change the safe area inset based on the shown ration for the browser controls. This is used when to keep the web contents from the display cutout area when Chrome is drawing edge to edge. Why this is important: 1. When Chrome draws edge to edge, bottom controls in the web contents can be covered by bottom system bars. This feature will place web elements using safe-area-insets* to place their controls gradually (e.g. m.youtube.com) 2. Similar feature behavior is already available for Chrome on iOS[1] and other browsers (e.g. Safari on iOS). We are aligning Chrome on Android to parity with the iOS behavior as part of this change. 3. safe-area-inset* is an established feature since Chrome M69. This feature is available to all platform; at the moment only Android would put cutout into viewport, but developers can use the env() variables on all platforms the same way and we would set it if another platform did intrude into the viewport. Detailed design & implementation, please see crbug.com/324436581 [1] Chrome on iOS behavior: https://drive.google.com/file/d/19kaNBAr8RFQ0X9odMjx4g-t28lnCHSS_/view?usp=drive_link #
This feature was specified in this Spec.
Samples: https://drive.google.com/file/d/1IhIiYMaG5bK2n-ufahEqkQwcPTok7sFe/view?usp=drive_link
Intl.DurationFormat API is a TC39 ECMA402 proposal See https://github.com/tc39/proposal-intl-duration-format for the proposal The proposal advanced to Stage 3 on 2021-10 Spec: https://tc39.es/proposal-intl-duration-format/ #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1UMwkeeiqVyVNhNW8CS1vwN9g2cIH0AryaU16DT-vGg0/edit
Samples: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DurationFormat
Modifies the Private Aggregation API to merge histogram contributions with the same bucket and filtering ID before embedding in the aggregatable report's encrypted payload. Private Aggregation imposes a limit on the number of contributions that can be embedded in a single aggregatable report, with any additional contributions being dropped. By merging together contributions where possible, we can get additional utility out of the limit. Note that, ignoring the dropping of excess contributions, merging these sorts of contributions should not have any impact on the final outputs (i.e. summary reports). #
This feature was specified in this Spec.
The CSSWG resolved to rename this property from `inset-area` to `position-area`. See the CSSWG discussion here: https://github.com/w3c/csswg-drafts/issues/10209#issuecomment-2221005001 Chrome disagrees with this change, but would like to ship an interoperable implementation. We will ship the new property name, `position-area`, as a synonym for `inset-area` first. Then after a suitable amount of time, we will remove `inset-area`. The latter removal will be done under a separate Intent.
This feature was specified in this Spec.
Snap Events allow developers reliably listen for when the "snap target" of a scroller changes and perform style adjustments as desired. CSS scroll snap points are often used as a mechanism to create scroll interactive "selection" components, where selection is determined with javascript intersection observers and a scroll end guestimate. By creating built-in events, the invisible state will become actionable, at the right time, and always correct. This feature adds two JavaScript events: scrollsnapchange and scrollsnapchanging. Scrollsnapchange lets developers know, at the completion of a scroll operation (including snapping), that the element to which a scroller is snapped has changed. Scrollsnapchanging gives developers a hint, during a scroll operation, that the user agent intends to snap the scroll container to a new snap target based on the scrolling input so far. #
This feature was specified in this Spec.
Enables trusted applications to bypass security restrictions in the WebUSB API. The WebUSB specification defines a blocklist of vulnerable devices and a table of protected interfaces classes that are blocked from access through WebUSB. With this feature, Isolated Web Apps with permission to access the "usb-unrestricted" Permission Policy feature will be allowed to access blocklisted devices and protected interface classes. #
This feature was specified in this Spec.
The backdrop-filter CSS property applies one or more filters to the "backdrop" of an element. The "backdrop" basically means all of the painted content that lies behind the element. A common filter is a blur allowing designers to construct "frosted glass" dialog boxes, video overlays, translucent navigation headers, and more. This was initially implemented the same way as a regular blur, but sampling beyond the edges of the element allowed colors from the edges to bleed in. The spec was changed to sample pixels outside the backdrop edges by duplicating the pixels at the edge. This however, results in extreme flickering of content as it enters the backdrop edge. The latest spec change mirrors the backdrop when sampling beyond the edge which allows for a smooth gradual introduction of new colors at the edges without overweighting on single lines of color. #
This feature was specified in this Spec.
Adds tone mapping parameters to the WebGPU canvas configuration, and adds options of "standard" (the current behavior of restricting content to the SDR range of the display) as the default, and "extended" (not imposing this restriction) as a new behavior. This allows WebGPU content to use the full range of a display. #
This feature was specified in this Spec.
Docs: https://github.com/ccameron-chromium/webgpu-hdr/blob/main/EXPLAINER.md
Samples: https://ccameron-chromium.github.io/webgpu-hdr/example.html
Provides a method for yielding control to the browser, which can be used to break up long tasks. Awaiting the promise returned by scheduler.yield() causes the current task to yield, continuing in a new browser task. This can be used to improve responsiveness issues caused by long tasks. Continuations are prioritized to mitigate performance problems of existing alternatives. #
This feature was specified in this Spec.
This release of Chrome had 3 new origin trials.
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
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. #
A high-performance Canvas 2D triangle mesh API that can be used to batch-render a large number of textured triangles. This will enable advanced texture mapping and geometry deformation effects in a 2D context. #
Samples: https://github.com/fserb/canvas2D/blob/master/spec/mesh2d.mdhttps://demos.skia.org/demo/mesh2d
This release of Chrome had 15 are available behind a flag.
Adds the contentType field to PerformanceResourceTiming to hold a string corresponding to the content type of the fetched resource as returned by the server. #
This feature was specified in this Spec.
We propose to block access to IP address 0.0.0.0 in advance of PNA completely rolling out. Chrome is deprecating direct access to private network endpoints from public websites as part of the Private Network Access (PNA) specification (https://developer.chrome.com/blog/private-network-access-preflight/). Services listening on the localhost (127.0.0.0/8) are considered private according to the specification (https://wicg.github.io/private-network-access/#ip-address-space-heading). Chrome's PNA protection (rolled out as part of https://chromestatus.com/feature/5436853517811712) can be bypassed using the IP address 0.0.0.0 to access services listening on the localhost on macOS and Linux. This can also be abused in DNS rebinding attacks targeting a web application listening on the localhost. Since 0.0.0.0 is not used in practice (and should not be used), but was overlooked during https://chromestatus.com/feature/5436853517811712, we're deprecating it separately from the rest of the private network requests deprecation. #
This feature was specified in this Spec.
The CSSWG resolved to rename the `inset-area` property to `position-area`. See the CSSWG discussion here: https://github.com/w3c/csswg-drafts/issues/10209#issuecomment-2221005001. The new property name, `position-area`, as a synonym for `inset-area` shipped via https://chromestatus.com/feature/6567965055778816. This entry is for deprecation and removal of the `inset-area` property. #
This feature was specified in this Spec.
Support box-decoration-break:clone both for inline fragmentation (line layout) and block fragmentation (pagination for printing, multicol). Traditionally in Blink, only box-decoration-break:slice (the initial value) has been supported for block fragmentation, whereas for inline fragmentation, box-decoration-break:clone was also supported, but only when using the prefixed -webkit-box-decoration-break property. See https://drafts.csswg.org/css-break/#break-decoration #
This feature was specified in this Spec.
A JavaScript API for detecting the language of text, with confidence levels. An important supplement to translation is language detection. This can be combined with translation, e.g. taking user input in an unknown language and translating it to a specific target language. Browsers today often already have langauge detection capabilities, and we want to offer them to web developers through a JavaScript API, supplementing the translation API. An enterprise policy (GenAILocalFoundationalModelSettings) is available to disable the underlying model downloading which would render this API unavailable.
This feature was specified in this Spec.
This feature adds an AudioContext.playbackStats attribute which returns an AudioPlaybackStats object. This object provides audio playback statistics such as average latency, minimum/maximum latency, underrun duration, and underrun count. This API allows web applications to monitor audio playback quality and detect glitches. Note: This feature was previously tracked as AudioContext.playoutStats. It has been renamed to AudioContext.playbackStats to align with the final Web Audio API specification. The old name is supported as a deprecated alias for backward compatibility. #
This feature was specified in this Spec.
The CSSWG resolved to rename this property from `inset-area` to `position-area`. See the CSSWG discussion here: https://github.com/w3c/csswg-drafts/issues/10209#issuecomment-2221005001 Chrome disagrees with this change, but would like to ship an interoperable implementation. We will ship the new property name, `position-area`, as a synonym for `inset-area` first. Then after a suitable amount of time, we will remove `inset-area`. The latter removal will be done under a separate Intent.
This feature was specified in this Spec.
The Rewriter API transforms and rephrases input text in requested ways, backed by an on-device AI language model. Developers may use this API to remove redundancies within a text in order to fit into a word limit, rephrase messages to suit the intended audience or to be more constructive if a message is found to use toxic language, rephrasing a post or article to use simpler words and concepts and more. An enterprise policy (GenAILocalFoundationalModelSettings) is available to disable the underlying model downloading which would render this API unavailable. #
This feature was specified in this Spec.
Samples: https://chrome.dev/web-ai-demos/writer-rewriter-api-playgroundhttps://ai.etiennenoel.com/rewriter-api
Support of `sideways-rl` and `sideways-lr` keywords for `writing-mode` CSS property is added. They are vertical writing modes, and all letters are sideways. #
This feature was specified in this Spec.
Summarizer API is a JavaScript API for producing summaries of input text, backed by an AI language model. Browsers and operating systems are increasingly expected to gain access to a language model. By exposing this built-in model, we avoid every website needing to download their own multi-gigabyte language model, or send input text to third-party APIs. The summarizer API in particular exposes a high-level API for interfacing with a language model in order to summarize multilingual inputs for a variety of use cases, in a way that does not depend on the specific language model in question. An enterprise policy (GenAILocalFoundationalModelSettings) is available to disable the underlying model downloading which would render this API unavailable. Language support log: - Chrome M139 and earlier only supported 'en' - Chrome M140 added support for 'es' and 'ja' #
This feature was specified in this Spec.
Samples: https://chrome.dev/web-ai-demos/summarization-api-playground
The RTCDataChannel interface is part of the WebRTC standard, and represents a network channel which can be used for bidirectional peer-to-peer transfers of arbitrary data. This feature tracks exposing RTCDataChannel in dedicated workers, and allowing the transfer of RTCDataChannels to them workers. This will help reduce main thread contention and lead to smoother and more reliable WebRTC applications.
This feature was specified in this Spec.
Samples: https://tguilbert-google.github.io/RTCDataChannel/index.html
Functionality added to the WebGPU spec after its first shipment in a browser. Adds the optional GPU feature "dual-source-blending" that enables combining two fragment shader outputs into a single framebuffer. This technique is particularly useful for applications that require complex blending operations, such as those based on Porter-Duff blend modes. By replacing subsequent render passes with a single render pass, dual source blending can enhance performance and flexibility #
This feature was specified in this Spec.
The Writer API can be used for writing new material given a writing task prompt, backed by an on-device AI language model. Developers will be able to use this API to generate textual explanations of structured data, composing a post about a product based on reviews or product description, expanding on pro and con lists into full views and more. An enterprise policy (GenAILocalFoundationalModelSettings) is available to disable the underlying model downloading which would render this API unavailable. #
This feature was specified in this Spec.
Samples: https://chrome.dev/web-ai-demos/writer-rewriter-api-playgroundhttps://ai.etiennenoel.com/writer-api
With this change <meter> elements with `appearance: none` will have a reasonable fallback style that matches Safari and Firefox instead of just disappearing from the page. As well developers will be able to custom style the <meter> elements. A feature flag MeterAppearanceNoneFallbackStyle is available until Chrome 133 to control this feature. #
This feature was specified in this Spec.
Intl Locale Info API is a new Stage ECMAScript TC39 proposal to enhance the Intl.Locale object by exposing Locale information, such as week data (first day in a week, weekend start day, weekend end day, minimun day in the first week), and text direction hour cycle used in the locale. https://github.com/tc39/proposal-intl-locale-info We launch Intl Locale Info API w/ getters but later the proposal changed to rename these getters to functions. We need to deprecate the getter and relaunch the functions . The deprecation of getters is tracked in https://chromestatus.com/feature/5148228059398144 #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1BSpa-LKE69LL1g5CHZ3G06XEfffauwS24atfSUQiIDY/edit?usp=sharing
Samples: https://github.com/tc39/proposal-intl-locale-info?tab=readme-ov-file#high-level-design
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 2 features deprecated.
We propose to block access to IP address 0.0.0.0 in advance of PNA completely rolling out. Chrome is deprecating direct access to private network endpoints from public websites as part of the Private Network Access (PNA) specification (https://developer.chrome.com/blog/private-network-access-preflight/). Services listening on the localhost (127.0.0.0/8) are considered private according to the specification (https://wicg.github.io/private-network-access/#ip-address-space-heading). Chrome's PNA protection (rolled out as part of https://chromestatus.com/feature/5436853517811712) can be bypassed using the IP address 0.0.0.0 to access services listening on the localhost on macOS and Linux. This can also be abused in DNS rebinding attacks targeting a web application listening on the localhost. Since 0.0.0.0 is not used in practice (and should not be used), but was overlooked during https://chromestatus.com/feature/5436853517811712, we're deprecating it separately from the rest of the private network requests deprecation. #
This feature was specified in this Spec.
The Pointer Events Working Group made PointerEvent.getCoalescedEvents() restricted to secure contexts 4+ years ago, which removed the API from insecure contexts. Chrome originally shipped the old behavior and didn't follow the spec change immediately because of compat concerns. We are now removing it from insecure contexts because Chrome usage in insecure contexts turned out to be very low. #
This feature was specified in this Spec.
This release of Chrome had 2 features removed.
The includeShadowRoots argument was a never-standardized argument to the DOMParser.parseFromString() function, which was there to allow imperative parsing of HTML content that contains declarative shadow DOM. This was shipped in M90 [1] as part of the initial shipment of declarative shadow DOM. Since the standards discussion rematerialized in 2023, the shape of DSD APIs changed, including this feature for imperative parsing. (See [2] for more context on the standards situation and recent changes, and see [3] and [4] for other related deprecations.) Now that a standardized version of this API, in the form of setHTMLUnsafe() and parseHTMLUnsafe() will ship in Chrome 124 ([5]), the non-standard includeShadowRoots argument needs to be deprecated and removed. All usage should shift accordingly: Instead of: (new DOMParser()).parseFromString(html,'text/html',{includeShadowRoots: true}); this can be used instead: document.parseHTMLUnsafe(html); [1] https://chromestatus.com/feature/5191745052606464 [2] https://chromestatus.com/feature/5161240576393216 [3] https://chromestatus.com/feature/5081733588582400 [4] https://chromestatus.com/feature/6239658726391808 [5] https://chromestatus.com/feature/6560361081995264 #
This feature was specified in this Spec.
The prototype implementation (which was shipped in 2020 and then shape-changed in 2023) contained a method called `getInnerHTML()` that could be used to serialize DOM trees containing shadow roots. That part of the prototype was not standardized with the rest of declarative shadow dom, and only recently has it reached spec consensus (https://github.com/whatwg/html/issues/8867). As part of that consensus, the shape of the getInnerHTML API changed. This feature represents the deprecation of the old, shipped `getInnerHTML()` method. The replacement is called `getHTML()`, and it shipped in M125. See https://chromestatus.com/feature/5102952270528512 for that feature. #