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 26 new features.
Allows putting 'blocking=render' as an attribute and value to a <script>, <style> or stylesheet <link> to make it explicitly render-blocking. The main usage is to avoid a flash of unstyled content or user interactions with an unmature page caused by, e.g., script-inserted scripts/stylesheets, client-side A/B testing and etc. #
This feature was specified in this Spec.
The :has() pseudo class is a selector that specifies an element which has at least one element that matches the relative selector passed as an argument. #
This feature was specified in this Spec.
Samples: https://css-has.glitch.mehttps://has-pseudo-class-performance.glitch.me
The 'beforeinput' event fires when the value of an <input>, <textarea>, or contenteditable element is about to be modified. Add an 'onbeforeinput' global content attribute to make it easier for developers to use. #
This feature was specified in this Spec.
A pseudo class selector to style dialog element. The :modal pseudo-class represents an element which is in a state that excludes all interaction with elements outside it until it has been dismissed. #
This feature was specified in this Spec.
Container Queries allow authors to style elements according to the size of a container element. It's similar to a @media query, except it evaluates against the size of a container instead of the size of the viewport. #
This feature was specified in this Spec.
The custom highlight API provides a way for web developers to style the text of arbitrary ranges. This is useful in a variety of scenarios, including editing frameworks that wish to implement their own selection, find-on-page over virtualized documents, multiple selections to represent online collaboration, or spellchecking frameworks. #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1vaWiPLA9opz0AObbObuRj3P5zqzoM2ldy0pHkZkJyxo
No linked samplesPlatform cursor size used as default for custom SVG cursors if no specified size. SVG cursors can scale based on the platform accessibility/cursor settings. This can be overridden if the cursor has any specified dimensions. This feature is initially available on Windows only. #
This feature was specified in this Spec.
Hint indicating to the user agent whether the application, upon calling getDisplayMedia() with {systemAudio: true}, wishes *system audio* to be offered to the user. (If not - only offer tab-audio.) #
This feature was specified in this Spec.
Element.checkVisibility() returns true if the element is visible, and false if it is not. It checks a variety of factors that would make an element invisible, including display:none, visibility, content-visibility, and opacity. #
This feature was specified in this Spec.
This exposes the TransformStreamDefaultController class on the global scope. This class already exists and can be accessed using code such as let TransformStreamDefaultController; new TransformStream({ start(c) { TransformStreamDefaultController = c.constructor; } }); This change makes such code unnecessary as now TransformStreamDefaultController just exists on the global scope. #
This feature was specified in this Spec.
Opaque Response Blocking (ORB) is a replacement for Cross-Origin Read Blocking (CORB - https://chromestatus.com/feature/5629709824032768). CORB and ORB are both heuristics that attempt to prevent cross-origin disclosure of “no-cors” subresources. This entry tracks v0.1 of ORB - Chrome's first step toward full ORB implementation. For interop web authors should check Content-Type headers of their resources and indicate multimedia content when needed (e.g. audio/*, application/dash+xml, etc). #
This feature was specified in this Spec.
To achieve parity among the all supporting platforms, we are implementing Prerender2 for Desktop (as an addition to Android). We are going to ship same-origin prerendering triggered by the speculation rules API and Omnibox (same as current triggers for Android). See also [1] Same-origin prerendering triggered by the speculation rules API [1] https://chromestatus.com/feature/5355965538893824 #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1EpLshvc9RRW3vswmXsJGrbCkhlFmxDsWfbvgxmYDTfs
No linked samplesWhen a user overscrolls, all elements on the page (including fixed elements) move in response to the overscroll. This feature prevents fixed elements from moving during overscroll. features=FixedElementsDontOverscroll Spec discussion: https://github.com/w3c/csswg-drafts/issues/6299 #
Improves ergonomics for creating JSON Response objects. The Response constructor allows for creating the body of the response from many types, however it is not possible to directly create a JSON object. The Response.json() static method fills this gap. It returns a Response object with a body consisting the first argument serialized as JSON. The second argument is a ResponseInit option bag as with the Response constructor. #
This feature was specified in this Spec.
Prerendering loads a web page before it is needed, so that when the actual navigation to that page occurs, it can be shown instantly. #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1P2VKCLpmnNm_cRAjUeE-bqLL0bslL_zKqiNeCzNom_w/edit?usp=sharing
Samples: https://prerender2-specrules.glitch.me
The Sanitizer API offers an easy to use and safe by default HTML Sanitizer API, which developers can use to remove content that may execute script from arbitrary, user-supplied HTML content. The goal is to make it easier to build XSS-free web applications. The intended contributions of the Sanitizer API are: Making a sanitizer more easily accessible to web developers; be easy to use and safe by default; and shift part of the maintenance burden to the platform. This is the initial "MVP". #
This feature was specified in this Spec.
Docs: https://web.dev/sanitizerhttps://developer.mozilla.org/en-US/docs/Web/API/HTML_Sanitizer_API
No linked samplesThere is existing HTML syntax to delegate client hints to third-party content which requires client information lost by user agent reduction. Example: <meta name="accept-ch" value="sec-ch-dpr=(https://foo.bar https://baz.qux), sec-ch-width=(https://foo.bar)"> We shipped this syntax in M100 and got belated developer feedback that it’s confusing. We reached the conclusion it’s not too late to change course due to low adoption so far. This intent proposes a replacement syntax with the same feature set. Example: <meta http-equiv="delegate-ch" value="sec-ch-dpr https://foo.bar https://baz.qux; sec-ch-width https://foo.bar"> This proposal also removes the older syntax introduced in M100. #
This feature was specified in this Spec.
Currently, Responsive Image Client Hints provide a way for origins to obtain the viewport’s width. However, no such attribute exists for viewport height. We’ve observed that to optimize the loading of content that appears in viewport, it is essential for the origins to adapt HTML response based on viewport height. #
This feature was specified in this Spec.
When the window controls overlay is enabled for installed desktop web apps, the app's client area is extended to cover the entire window--including the title bar area--and the window control buttons (close, maximize/restore, minimize) are overlaid on top of the client area. The web app developer is responsible for drawing and input-handling for the entire window except for the window controls overlay. #
Docs: https://github.com/WICG/window-controls-overlay/blob/main/explainer.md
Samples: https://amandabaker.github.io/pwa/explainer-example/index.html
Enhances screen label strings provided by the Window Management API: <https://chromestatus.com/feature/5252960583942144> This launch refines the `ScreenDetailed.label` implementation by replacing the current placeholder values (e.g. 'External Display 1') with data sourced from display device EDIDs (e.g. 'HP Z27n') and higher-level OS APIs (e.g. localized descriptions such as 'Built-in Retina Display'). These more accurate labels match those shown by OSes in display settings UI surfaces. The labels are only exposed to sites which have been granted the window-management permission by the user. This revised implementation aligns with the current attribute specification <https://w3c.github.io/window-management/#screen-label> and definitions used for the M93-M96 Origin Trial and the M100 API launch. There is no structural change to the API, only a change in the string content returned by the `ScreenDetailed.label` attribute. #
This feature was specified in this Spec.
Samples: https://michaelwasserman.github.io/window-placement-demo
When a worklet module is fetched, e.g. via CSS.paintWorklet.addModule(), the fetched resource is now available in resource timing and in PerformanceObservers. window.performance.getEntries() or window.performance.getEntriesByType("resource") would also show worklet resources, which were not present there before despite being loaded.
This feature was specified in this Spec.
Allow returning a directory with both read and write permissions in a single prompt for the File System Access API. Currently showDirectoryPicker() always returns a read-only directory (after showing a read access prompt), requiring a second prompt to get write access. This double-prompt is a poor user experience and contributes to confusion and permission fatigue among users. Adds an optional "mode" option to DirectoryPickerOptions which can be specified as either "read" or "readwrite". #
This feature was specified in this Spec.
Fetch upload streaming lets web developers make a fetch with a ReadableStream body. Fetch provides a generic definition of Request and Response objects (and other things involved with network requests). #
This feature was specified in this Spec.
Docs: http://bit.ly/3asqra2
No linked samplesimport.meta.resolve(specifier) returns the URL to which the given specifier would resolve in the context of the current script. That is, it returns the URL that would be imported if you did import(specifier). #
This feature was specified in this Spec.
intercept() works very similarly to the existing navigateEvent.transitionWhile() method, except that instead of taking a mandatory Promise, it takes an optional handler function. We will send a separate Intent to Deprecate and Remove for navigateEvent.transitionWhile(). #
This feature was specified in this Spec.
scroll() works very similarly to the existing restoreScroll() except that it can be called when the navigation is not a traversal. It also allows manually performing the scroll even when not in manual scroll mode. #
This feature was specified in this Spec.
This release of Chrome had 0 new origin trials.
This release of Chrome had 11 are available behind a flag.
Run all timers (with a few exceptions) with a non-zero delay on a regular 8ms aligned wake up (125 Hz), instead of as soon as their delay has passed. This affect DOM timers; On foreground pages, run DOM timers with a non-zero delay on a regular 8ms aligned wake up, instead of as soon as their delay has passed. On background pages, DOM timers already run on a regular 1s aligned wake up (1 Hz), or even less frequently after 5 minutes. #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1OjZoHNvn_vz6bhyww68B_KZBi6_s5arT8xMupuNEnDM/edit
No linked samplesAdds cross-origin iframe support for the FedCM API via a permissions policy. It enables websites to sandbox the scripts from identity providers which trigger the FedCM API in a cross-origin iframe, so that they do not have full control over the whole page. This also allows use cases where it is the iframe itself which requires a sign-in from the user. In both cases, the parent frame must provide the iframe with the permissions policy 'identity-credentials-get'. #
This feature was specified in this Spec.
Samples: https://fedcm-main-frame.glitch.me
Extend the GamepadHapticActuator interface to expose the trigger-rumble capability in the Web for compatible gamepads. This extension will allow web applications that take advantage of the Gamepad API to also vibrate the triggers of gamepad devices that come equipped with this functionality. #
This feature was specified in this Spec.
Samples: https://nondebug.github.io/gamepad-explorer
Enable support for Gamepad API dual-rumble effects through the VibratorManager API added in Android 12. #
This feature was specified in this Spec.
Iframe credentialless give developers a way to load documents in third party iframes using new and ephemeral contexts. Iframe credentialless are a generalization of COEP credentialless to support 3rd party iframes that may not deploy COEP. Like with COEP credentialless, we replace the opt-in of cross-origin subresources by avoiding to load non-public resources. This will remove the constraint that 3rd party iframes must support COEP in order to be embedded in a COEP page and will unblock developers looking to adopt cross-origin-isolation. This way, developers using COEP can now embed third party iframes that do not. #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1poI75BaQ9aqcMGJn_K01-QHsQQbEOwRWvg3Af4VWTmY/edit
Samples: https://anonymous-iframe.glitch.me
Allows developers to ask for permission to use the Device Orientation and Device Motion APIs. Access to these APIs is currently granted by default, and these new functions are part of the long-term plan to require requesting permission before using window.ondevicemotion and window.ondeviceorientation. #
This feature was specified in this Spec.
The “canmakepayment” service worker event lets the merchant know whether the user has a card on file in an installed payment app. It used to silently pass the merchant's origin and arbitrary data to a service worker from payment app origin. This cross-origin communication happened on PaymentRequest construction in JavaScript, did not require a user gesture, and did not show any user interface. This silent data passage has been removed from the "canmakepayment" event (and the Android IS_READY_TO_PAY Intent). #
This feature was specified in this Spec.
Samples: https://rsolomakhin.github.io/pr/apps/romantic-dirt-jaguar
Note: this has launched in Chrome 115 We intend to partition a number of APIs in 3rd party contexts. This effort is focused on partitioning APIs above the network stack. This includes quota-managed storage, service workers, and communication APIs (like BroadcastChannel). See the explainer for more details: https://github.com/wanderview/quota-storage-partitioning/blob/main/explainer.md There is also a deprecation trial available as well as an enterprise policy: https://developer.chrome.com/blog/storage-partitioning-deprecation-trial/ https://chromeenterprise.google/policies/#DefaultThirdPartyStoragePartitioningSetting #
To achieve parity among the all supporting platforms, we are implementing Prerender2 for Desktop (as an addition to Android). We are going to ship same-origin prerendering triggered by the speculation rules API and Omnibox (same as current triggers for Android). See also [1] Same-origin prerendering triggered by the speculation rules API [1] https://chromestatus.com/feature/5355965538893824 #
This feature was specified in this Spec.
Docs: https://docs.google.com/document/d/1EpLshvc9RRW3vswmXsJGrbCkhlFmxDsWfbvgxmYDTfs
No linked samplesThe TLS Encrypted ClientHello (ECH) extension enables clients to encrypt ClientHello messages, which are normally sent in cleartext, under a server’s public key. This allows websites to opt-in to avoid leaking sensitive fields, like the server name, to the network by hosting a special HTTPS RR DNS record. (Earlier iterations of this extension were called Encrypted Server Name Indication, or ESNI.) If your organization’s infrastructure relies on the ability to inspect SNI, for example, filtering, logging, and so on, you should test it. You can enable the new behavior by navigating to chrome://flags and enabling the #encrypted-client-hello flag. If you notice any incompatibilities, you can use the EncryptedClientHelloEnabled enterprise policy to disable support for ECH. #
This feature was specified in this Spec.
Samples: https://tls-ech.dev
Allows web developers to use the WebHID API in service worker contexts in extensions by exposing WebHID API to extension service workers. #
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 0 features deprecated.
This release of Chrome had 2 features removed.
The CSS keyword 'default' is not allowed within CSS custom identifiers, which are used for many types of user-defined names in CSS (for example, names created by @keyframes rules, counters, @container names, custom layout or paint names). This adds 'default' to the list of names that are reserved from being used in custom identifiers, which already reserve 'inherit', 'initial', 'unset', 'revert', and 'revert-layer'. #
This feature was specified in this Spec.
Gesture Scroll DOM events, namely “gesturescrollstart”, “gesturescrollupdate” and “gesturescrollend” are non-standard APIs, which were added to Blink for use in plugins, but it appears they were also exposed to the web unintentionally. Plugins are no longer web-exposed since the deprecation of Google Native Client (NaCl). WebKit Bug: https://bugs.webkit.org/show_bug.cgi?id=92281 Changelog: https://bugs.webkit.org/attachment.cgi?id=155046&action=prettypatch #