Chrome Release Summary

Chrome version: 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

Chrome 136

Enabled (10) | Origin Trial (5) | Behind a flag (7) | Deprecated (0) | Removed (0)

Enabled by default in 136

This release of Chrome had 10 new features.

AudioContext Interrupted State

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.

CSS dynamic-range-limit property

Enables a page to limit the maximum brightness of HDR content. #

This feature was specified in this Spec.

Resources

No linked docs

Samples: https://ccameron-chromium.github.io/hdr-headroom-limit/example.html

Fluent Scrollbars.

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 feature was specified in this Spec.

H265 (HEVC) codec support in WebRTC

This newer codec has increased compression efficiency (higher quality per bitrate) relative to VP8/VP9/H264 and very strong hardware support going back over a decade. This translates into improved visual experience, increased battery life and reduced risk of performance issues. The codec is already 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). This codec is already available in WebCodecs (M130) and MediaRecorder APIs (soon). Support will be queryable via MediaCapabilities API. Safari has already shipped support in WebRTC. #

This feature was specified in this Spec.

H26x Codec support updates for MediaRecorder

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. #

This feature was specified in this Spec.

Incorporating navigation initiator into the HTTP cache partition key

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. #

This feature was specified in this Spec.

Permissions Policy reports for iframes

Introduces 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.

Unprefixed print-color-adjust

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.

Use DOMPointInit for getCharNumAtPosition, isPointInFill, isPointInStroke

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.

Web Authentication Conditional Create (Passkey Upgrades)

WebAuthn Conditional Create requests let websites "upgrade" existing password credentials to a passkey. #

This feature was specified in this Spec.

Origin Trials in-progress in 136

This release of Chrome had 5 new origin trials.

Call stacks in crash reports from unresponsive web pages

This feature captures the JS call stack when a web page becomes unresponsive due to JavaScript code running an infinite loop or other very long computation. This helps developers to identify the cause of the unresponsiveness and fix it more easily. The JS call stack is included in the crash reporting API when the reason is unresponsive. #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/19DpvHIiYbmB9wgIP0BdI4vOnfVLcAZFmfIAml7SqRQA/edit?usp=sharing

No linked samples

Captured Surface Control

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.

Resources

Docs: https://docs.google.com/document/d/10UojDvTJ6ojBEOP7cgBIIaE7WZEfes_Qv1eN3A2A0nM/edit?usp=sharing

Samples: https://captured-surface-control.glitch.me

Deprecate getters of Intl Locale Info

Intl Locale Info API is a Stage 3 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 ship our implementation in m99 (https://chromestatus.com/feature/5566859262820352 ) . But later on the propose made some change in Stage 3 and move several getters to functions. We need to remove the deprecated getters and relaunch the renamed functions #

This feature was specified in this Spec.

Resources

Docs: https://docs.google.com/document/d/1BSpa-LKE69LL1g5CHZ3G06XEfffauwS24atfSUQiIDY/edit

Samples: https://github.com/tc39/proposal-intl-locale-info

Explicit Compile Hints with Magic Comments

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.

FedCM multi IDP in single get() call and remove add accounts in passive mode

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.

Flagged features in 136

This release of Chrome had 7 are available behind a flag.

Blob URL Partitioning: Fetching/Navigation

As a continuation of Storage Partitioning, Chromium will implement partitioning of Blob URL access by Storage Key (top-level site, frame origin, and the has-cross-site-ancestor boolean), with the exception of top-level navigations which will remain partitioned only by frame origin. This behavior is similar to what’s currently implemented by both Firefox and Safari, and aligns Blob URL usage with the partitioning scheme used by other storage APIs as part of Storage Partitioning. In addition, Chromium will enforce noopener on renderer-initiated top-level navigations to Blob URLs where the corresponding site is cross-site to the top-level site performing the navigation. This aligns Chromium with similar behavior in Safari, and the relevant specs have been updated to reflect these changes. This change can be temporarily reverted by setting the PartitionedBlobURLUsage policy. The policy will be deprecated when the other storage partitioning related enterprise policies are deprecated. #

This feature was specified in this Spec.

CSP require-sri-for for scripts

The `require-sri-for` directive gives developers the ability to assert that every resource of a given type needs to be integrity checked. If a resource of that type is attempted to be loaded without integrity metadata, that attempt will fail and trigger a CSP violation report. This intent covers the "script" value of this directive. #

This feature was specified in this Spec.

CSS 'stretch' sizing keyword

A keyword for CSS sizing properties (e.g. 'width', 'height') that allows elements to grow to exactly fill their containing block's available space. It is similar to '100%', except the resulting size is applied to the element's margin box instead of the box indicated by 'box-sizing'. Using this keyword allows the element to keep its margins while still being as large as possible. An unprefixed version of '-webkit-fill-available'. #

This feature was specified in this Spec.

Ignore Letter Spacing in Cursive Scripts

In this feature, adding logic to ignore the letter-spacing setting for cursive scripts, even if specified by the web author as per spec, to ensure that letter spacing does not break words. To ensure letter spacing does not break words in cursive scripts, the UA should ignore the letter-spacing setting specified by the web author. If possible, the UA may apply letter spacing by translating the extra space into cursive elongation or compression. If the UA cannot expand text without breaking cursive connections, it must treat each word as a single typographic unit for letter-spacing. Proper cursive elongation or compression varies based on script, typeface, language, word location, line location, implementation complexity, font capabilities, and calligraphic preferences. It may involve shortening ligatures, swash variants, contextual forms, or elongation glyphs such as U+0640 ـ ARABIC TATWEEL, or other microtypography. Authors should avoid applying letter-spacing to cursive scripts unless they are prepared to accept non-interoperable results. Cursive scripts do not allow gaps between letters for justification or letter-spacing. Included Unicode scripts are Arabic, Hanifi Rohingya, Mandaic, Mongolian, N’Ko, Phags Pa, and Syriac. #

This feature was specified in this Spec.

Language support for CanvasTextDrawingStyles

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.

Resources

No linked docs

Samples: https://blogs.igalia.com/schenney/canvas-localization-support

Partitioning :visited links history

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.

Resources

Docs: https://github.com/explainers-by-googlers/Partitioning-visited-links-history

No linked samples

RegExp.escape

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.

Deprecations and Removals

Deprecation policy

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.

Deprecated features in 136

This release of Chrome had 0 features deprecated.

Removed features in 136

This release of Chrome had 0 features removed.