- Dec 5, 2025
- Parsed from source:Dec 5, 2025
- Detected by Releasebot:Dec 12, 2025
What's new in Dev Tools, Chrome 143
DevTools MCP server launches v0.11.0 with new prompts referencing Elements and Network panels, extended console messages, keyboard event debugging, accessibility snapshots, and cache-free page reloads plus reusable Chrome profiles. It adds exportable traces with resources and source maps, starting-style support, masonry editor, Lighthouse 13, and preview channels.
What's new
We landed various improvements for the DevTools MCP server and released v0.11.0.
- When prompting in your MCP client (Gemini CLI, Cursor, ...) you can now reference elements and network requests selected in the Elements and Network panels
- The list_console_messages tool now also includes issues surfaced in the Issues panel
- The new press_key tool can now be used to debug keyboard events unrelated to form elements
- Accessibility tree snapshots can now be saved to disk
- Pages can now be reloaded, with the cache optionally ignored
- Configure the --user-data-dir flag to use an existing Chrome profile
See the public changelog on GitHub for the full list of changes and bug fixes, and learn more about the DevTools MCP server in the announcement blog post.
Improved trace sharing
When exporting a performance trace you can now include additional data in the exported file to ease further debugging for your future self or a colleague. You can now choose to include the following:
- Resource content: A copy of all HTML, CSS, and JavaScript files (excluding extension scripts)
- Script source maps: Mappings to authored code, allowing you to see original function names and source files.
Learn about what to share, and what to better keep private in our updated documentation.
We'd like to thank our colleagues at Microsoft with whose collaboration this was achieved, and who led the early work for this.Support for @starting-style
The Elements panel now has support for debugging the new CSS @starting-style rule, which is essential for creating entry animations.
You can now see a starting-style adorner in the Elements tree next to relevant elements, toggle the element's starting-style state by clicking the pill, and inspect and debug the @starting-style block in the Styles tab.Editor widget for display: masonry
If you experiment with CSS Masonry layout can now use the same editor widget as familiar from display: flex and grid layouts to quickly toggle through various alignment options in masonry layouts.
Lighthouse 13
The Lighthouse panel now runs Lighthouse 13. With this milestone, the work of unifying performance insights across DevTools and Lighthouse concludes.
Learn more in the announcement blog post. To learn what Lighthouse is useful for, and how it connects to the Performance panel in DevTools, see Lighthouse: Optimize your website.Download the preview channels
Consider using the Chrome Canary, Dev, or Beta as your default development browser. These preview channels give you access to the latest DevTools features, let you test cutting-edge web platform APIs, and help you find issues on your site before your users do!
Get in touch with the Chrome DevTools team
Use the following options to discuss the new features, updates, or anything else related to DevTools.
- Submit feedback and feature requests to us at crbug.com.
- Report a DevTools issue using the More options > Help > Report a DevTools issue in DevTools.
- Tweet at @ChromiumDev.
- Leave comments on What's new in DevTools YouTube videos or DevTools Tips YouTube videos.
What's new in DevTools
A list of everything that has been covered in the What's new in DevTools series.
Original source Report a problem - Dec 5, 2025
- Parsed from source:Dec 5, 2025
- Detected by Releasebot:Dec 6, 2025
What's new in Dev Tools, Chrome 143
DevTools MCP server launches v0.11.0 with new prompts linking Elements and Network, improved console messages, and a press_key tool for keyboard events. Accessibility snapshots save to disk, pages can reload with cache control, and a user-data-dir option. Also trace export, starting-style support, masonry editor, Lighthouse 13, and Canary channels.
What's new in DevTools
We landed various improvements for the DevTools MCP server and released v0.11.0.
- When prompting in your MCP client (Gemini CLI, Cursor, ...) you can now reference elements and network requests selected in the Elements and Network panels
- The list_console_messages tool now also includes issues surfaced in the Issues panel
- The new press_key tool can now be used to debug keyboard events unrelated to form elements
- Accessibility tree snapshots can now be saved to disk
- Pages can now be reloaded, with the cache optionally ignored
- Configure the --user-data-dir flag to use an existing Chrome profile
See the public changelog on GitHub for the full list of changes and bug fixes, and learn more about the DevTools MCP server in the announcement blog post.
Improved trace sharing
When exporting a performance trace you can now include additional data in the exported file to ease further debugging for your future self or a colleague. You can now choose to include the following:
- Resource content: A copy of all HTML, CSS, and JavaScript files (excluding extension scripts)
- Script source maps: Mappings to authored code, allowing you to see original function names and source files.
Learn about what to share, and what to better keep private in our updated documentation.
We'd like to thank our colleagues at Microsoft with whose collaboration this was achieved, and who led the early work for this.Support for @starting-style
The Elements panel now has support for debugging the new CSS @starting-style rule, which is essential for creating entry animations.
You can now see a starting-style adorner in the Elements tree next to relevant elements, toggle the element's starting-style state by clicking the pill, and inspect and debug the @starting-style block in the Styles tab.Editor widget for display: masonry
If you experiment with CSS Masonry layout can now use the same editor widget as familiar from display: flex and grid layouts to quickly toggle through various alignment options in masonry layouts.
Lighthouse 13
The Lighthouse panel now runs Lighthouse 13. With this milestone, the work of unifying performance insights across DevTools and Lighthouse concludes.
Learn more in the announcement blog post. To learn what Lighthouse is useful for, and how it connects to the Performance panel in DevTools, see Lighthouse: Optimize your website.Download the preview channels
Consider using the Chrome Canary, Dev, or Beta as your default development browser. These preview channels give you access to the latest DevTools features, let you test cutting-edge web platform APIs, and help you find issues on your site before your users do!
Get in touch with the Chrome DevTools team
Use the following options to discuss the new features, updates, or anything else related to DevTools.
- Submit feedback and feature requests to us at crbug.com.
- Report a DevTools issue using the More options > Help > Report a DevTools issue in DevTools.
- Tweet at @ChromiumDev.
- Leave comments on What's new in DevTools YouTube videos or DevTools Tips YouTube videos.
What's new in DevTools
A list of everything that has been covered in the What's new in DevTools series.
Original source Report a problem - Dec 3, 2025
- Parsed from source:Dec 3, 2025
- Detected by Releasebot:Dec 12, 2025
Chrome 144 beta
Chrome beta update delivers a sweeping set of web platform improvements across CSS, WebGPU, WebXR and new user controls including a declarative geolocation element and extended view transitions with waitUntil. It also flags Privacy Sandbox deprecations coming soon.
CSS and UI
CSS anchor positioning with transforms
If an anchor-positioned element is tethered to an anchor that has a transform (or is contained by an element with a transform), the browser resolves anchor() and anchor-size() functions against the bounding box of the transformed anchor.CSS find-in-page highlight pseudos
Exposes find-in-page search result styling as the ::search-text pseudo-element, which is a highlight pseudo-element like those used for selection and spelling errors. This lets you change the foreground and background colors or add text decorations. This is especially useful if the browser defaults have insufficient contrast with the page colors or are otherwise unsuitable.
Learn more on the Igalia blog in Find-in-Page Highlight Styling.Don't use aria-details for anchor positioning
The code to create aria-details relationships for non-popover use cases of anchor positioning was likely a mistake. Since popovers and other semantic relationships do create aria-details, and the remaining use cases are likely non-semantic, Chrome now doesn't create these relationships in the non-semantic cases.@scroll-state scrolled support
Lets you style descendants of containers based on the most recent scrolling direction.
Example:.scrolling-up { translate: 80px 0; transition: 0.4s translate; } html { container-type: scroll-state; } @container scroll-state(scrolled: top) { .scrolling-up { translate: 0 0; } }Respect overscroll-behavior for keyboard scrolls
When you set overscroll-behavior to a value other than auto, the browser shouldn't perform scroll chaining. Chrome respects this for mouse or touch scrolling; however, keyboard scrolls ignored it. This change ensures keyboard scrolling also respects overscroll-behavior.Respect overscroll-behavior on non-scrollable scroll containers
The overscroll-behavior property applies to all scroll container elements, regardless of whether those elements have overflowing content or are user scrollable. You can use overscroll-behavior to prevent scroll propagation on an overflow: hidden backdrop or an overflow: auto element without needing to consider whether it is overflowing.Non-tree-scoped container-name matching
The browser ignores tree-scope when matching container-name for @container queries.
Previously, container-name matching for @container queries used tree-scoped names or references. This meant the same name wouldn't match if the @container rule and the container-type property originated from different trees, for example, if the container-type declaration came from an inner shadow tree.
With this change, container-name values match regardless of the @container rule or container-type declaration origins.SVG2 CSS cascading
Aligns the Chrome implementation with the SVG2 specification for matching CSS rules in element trees.
Selectors match against the instantiation elements instead of the originating element subtree. This means selectors no longer match ancestor and sibling elements outside the cloned subtree. More importantly, state selectors like :hover now match in instances.Web APIs
XRVisibilityMaskChange
Adds an XRVisibilityMaskChange event that provides a list of vertices and indices to represent the mesh of the visible portion of the user's viewport. This data can be used to confidently limit the amount of the viewport drawn to, which improves performance. To better support this event, XRView objects are also given unique identifiers to enable easier pairing with the associated masks. This is an extension to the core WebXR specification.
Expose onanimationcancel event to GlobalEventHandlers
CSS Animations Level 1 extends the GlobalEventHandlers interface, defined in the HTML specification, by declaring four new event handlers: onanimationstart, onanimationiteration, onanimationend, and onanimationcancel.
Only the onanimationcancel event handler was missing from the GlobalEventHandlers IDL.
For more information, see the CSS Animations Level 1 specification and the HTML specification's GlobalEventHandlers section.View Transitions waitUntil() method
The ViewTransition automatically constructs a pseudo-element tree to display and animate participating elements in the transition. Per the specification, this subtree is constructed when the view transition starts animating and is destroyed when the animations associated with all view transition pseudo-elements are in the finished state (or more precisely, in a non-running, non-paused state).
This works for a majority of cases and provides a seamless experience for developers. However, for more advanced cases, this is insufficient because developers sometimes want the view transition pseudo-tree to persist beyond the animation finish state.
One example is tying view transitions with Scroll-Driven Animations. When the animation is controlled by a scroll timeline, the subtree shouldn't be destroyed when the animations finish because scrolling back can still animate the pseudo elements.
To enable advanced uses of view transition, this intent adds a waitUntil() function on the ViewTransition object that takes a promise. This promise delays destruction of the pseudo-tree until it is settled.The element
Introduces the element, a declarative, user-activated control for accessing the user's location. It streamlines the user and developer journey by handling the permission flow and directly providing location data to the site, often eliminating the need for a separate JavaScript API call.
This addresses the long-standing problem of permission prompts triggered directly from JavaScript without a strong signal of user intent. By embedding a browser-controlled element in the page, the user's click provides a clear, intentional signal. This provides a better prompt user experience and, crucially, a recovery path for users who have previously denied the permission.
Note: This feature was previously developed and tested in an origin trial as the more generic element. Based on feedback from developers and other browser vendors, it has evolved into the capability-specific element for a more tailored and powerful developer experience.WebGPU: subgroup_id feature
The subgroup_id and num_subgroups built-in values are available when the subgroups extension is enabled.WebGPU: Uniform buffer standard layout
Uniform buffers declared in WGSL shaders are no longer required to have 16-byte alignment on array elements or to pad nested structure offsets to a multiple of 16 bytes.The Temporal API
The Temporal API in ECMA262 provides standard objects and functions for working with dates and times. Date has been a long-standing issue in ECMAScript. Temporal, a global Object that acts as a top-level namespace (for example, Math), bringing a modern date and time API to the ECMAScript language. For a detailed breakdown of motivations, see Fixing JavaScript Date: Getting Started.Support ping, hreflang, type and referrerPolicy for SVGAElement
Adds support for ping, hreflang, type, and referrerPolicy attributes on SVGAElement, aligning its behavior with HTMLAnchorElement for consistent link handling across HTML and SVG.The clipboardchange event
The clipboardchange event fires whenever the system clipboard contents are changed by a web app or any other system application. This lets web apps, for example, remote desktop clients, keep their clipboards synchronized with the system clipboard. It provides an efficient alternative to polling the clipboard (using JavaScript) for changes.User-Agent Client Hints ch-ua-high-entropy-values permissions policy
Adds support for a ch-ua-high-entropy-values Permissions Policy that lets a top-level site restrict which documents can collect high-entropy client hints using the navigator.userAgentData.getHighEntropyValues() JavaScript API.
Restricting collection of high-entropy hints over HTTP is already possible with existing per-client-hint Permissions Policies.Mirroring of RTL MathML operators
Adds support for character-level and glyph-level mirroring when rendering MathML operators in RTL mode.
When using RTL mode, some operators can be mirrored by changing them to another code point (for example, a right parenthesis becomes a left parenthesis). This is character-level mirroring, with equivalences defined by Unicode's Bidi_Mirrored property.
Some operators have no appropriate mirroring character. Glyph-level mirroring applies in this case, with the rtlm font feature, where another glyph can replace it in a mirrored context. Some existing implementations mirror the original glyph directly, but this might change the meaning for asymmetrical characters, such as the clockwise contour integral.Multicast Support for the Direct Sockets API for Isolated Web Apps
This feature lets Isolated Web Apps subscribe to multicast groups, receive UDP packets from them, and specify additional parameters when sending UDP packets to multicast addresses.Performance and Event Timing: InteractionCount
The Event Timing API is part of the Performance Timeline and measures the performance of user interactions. Certain events have an interactionId value assigned, which is useful for grouping related interactions based on common physical user inputs or gestures.
This feature adds performance.interactionCount, which is the total number of interactions that have occurred on the page.
In particular, this feature is useful for computing the Interaction to Next Paint (INP) metric value, which requires knowing the total number of interactions to compute a high percentile score (p98 for pages with more than 50 total interactions).
This feature has been specified for a long time, was prototyped in Chromium previously but never shipped, is part of Interop 2025, and is already available in other browsers.
Note: There is already a more powerful performance.eventCounts map for specific events, but it is not possible to accurately map event counts to interaction counts.Interoperable pointer and mouse boundary events after DOM changes
After an event target is removed from the DOM, the logical target of the pointer, as implied by the Pointer and Mouse boundary events (that is, over, out, enter, and leave events), must be the nearest ancestor still attached to the DOM.
Chrome has been tracking a node even after it is removed from the DOM. As a result, if the pointer moves to a new node B after the hit-test node A is removed from the DOM, the boundary event sequence (pointerover, pointerout, pointerenter, pointerleave events, and the corresponding mouse events) implied a pointer movement from A to B. Per the new consensus, the event sequence implies a pointer movement from the "parent of A" to B.Pointer Lock on Android
Provides access to raw mouse movement by locking the target of mouse events to a single element and hiding the mouse cursor. The Pointer Lock API is already supported on desktop, this launch is for support on Android.RTCDegradationPreference enum value maintain-framerate-and-resolution
maintain-framerate-and-resolution disables WebRTC's internal video adaptation. This lets the application implement its own adaptation logic and prevents interference from the internal adaptation.WebAuthn Signal API on Android and iOS
Allow WebAuthn relying parties to report information about existing passkeys back to credential storage providers, so that incorrect or revoked credentials can be updated or removed from provider and system UI.
This feature was already available on desktop, and is now shipping on Android and iOS.
Also, the signal API now supports a safety mechanism for Google Password Manager passkeys on all supported platforms. Previously, when a relying party signaled that a credential was unknown or removed, the passkey was permanently deleted. Now, Google Password Manager hides the passkey instead of deleting it. Passkeys can be recovered by calling signalAllAcceptedCredentials with a list of previously hidden passkeys.New origin trials
In Chrome 144, you can opt into the following origin trials.
Enhanced Canvas TextMetrics
Expands the TextMetrics Canvas API to support selection rectangles, bounding box queries, and glyph cluster-based operations.
This functionality enables complex text editing applications with accurate selection, caret positioning, and hit testing. Additionally, cluster-based rendering facilitates sophisticated text effects, such as independent character animations and styling.Deprecations and removals
This version of Chrome introduces the deprecations and removals listed in this section. Visit ChromeStatus.com for lists of planned deprecations, current deprecations, and previous removals.
Deprecate the Topics API
The Topics API is an API to enable ad-targeting based on a user's general browsing interests, without exposing their exact browsing history.
Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove the Topics API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).Deprecate the Protected Audience API
The Protected Audience API provides a method of interest-group advertising without third-party cookies or user tracking across sites.
Following the announcement that Chrome will maintain its current approach to third-party cookies, the team is deprecating and planning to remove the Protected Audience API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).Deprecate the Shared Storage API
The Shared Storage API is a privacy-preserving web API to enable storage that is not partitioned by first-party site.
Following the announcement that Chrome will maintain its current approach to third-party cookies, the team is deprecating and planning to remove the Shared Storage API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).Deprecate the Attribution Reporting API
The Attribution Reporting API is an API designed to measure ad conversions without third-party cookies or user tracking across sites.
Following the announcement that Chrome will maintain its current approach to third-party cookies, the team is planning to deprecate and remove the Attribution Reporting API (along with other Privacy Sandbox APIs).Deprecate the Private Aggregation API
The Private Aggregation API is a generic mechanism for measuring aggregate, cross-site data in a privacy-preserving manner. It was originally designed for a future without third-party cookies.
Following the announcement that Chrome will maintain its current approach to third-party cookies, the team is deprecating and planning to remove the Private Aggregation API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page). This API is only exposed through the Shared Storage and Protected Audience APIs, which are also planned for deprecation and removal. Therefore, no additional work is required for Private Aggregation.Deprecate Related Website Sets
Related Website Sets provide a framework for developers to declare relationships among sites, to enable limited cross-site cookie access for specific, user-facing purposes. This is facilitated through the use of the Storage Access API and document.requestStorageAccessFor (see next section).
Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove Related Website Sets (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).Deprecate document.requestStorageAccessFor
The requestStorageAccessFor API is an extension to the Storage Access API that allows a top-level site to request access to unpartitioned ("first-party") cookies on behalf of embedded sites. Browsers would have discretion to grant or deny access, with mechanisms like Related Website Sets membership as a potential signal. This would allow for use of the Storage Access API by top-level sites.
Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove requestStorageAccessFor (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).Deprecate savedTabGroups as individual value in SyncTypesListDisabled
The SyncTypesListDisabled enterprise policy lets administrators disable the synchronization of the savedTabGroups data type on desktop platforms. On mobile platforms, however, Tab Groups synchronization is already managed by the tabs data type. To align desktop behavior with mobile and simplify sync management, the individual savedTabGroups data type is deprecated and is no longer an individually customizable value within the SyncTypesListDisabled policy.
Warning: From Chrome 144, if your SyncTypesListDisabled policy disables either tabs or savedTabGroups, both data types are considered disabled. The savedTabGroups value is entirely removed from the list of supported data types for this policy. For administrators who have saved tab groups disabled and intend to keep this behavior, explicitly disable the tabs data type.Externally loaded entities in XML parsing
Original source Report a problem
Chrome synchronously fetches external XML entities or DTDs and incorporates them into parsing under specific circumstances. This functionality will be removed.
http/tests/security/contentTypeOptions/xml-external-entity.xml provides an example: External entities can be defined in the trailing part of the DOCTYPE statement and refer to resources that are synchronously loaded and included as context when parsing XML.
Another syntax example is a DOCTYPE that, using the SYSTEM keyword followed by a URL pointing to a DTD, contains additional entity definitions.
Such external load requests are passed up from the parser.
According to the W3C XML specification, non-validating processors are not required to read external entities.
The team plans to deprecate loading of external entity definitions in XML documents that don't use XSLT. - Dec 3, 2025
- Parsed from source:Dec 3, 2025
- Detected by Releasebot:Dec 4, 2025
Chrome 144 beta
Chrome's latest beta brings a wave of web platform updates from CSS and Web APIs to UX improvements across Android, Linux, macOS, Windows, and ChromeOS. Expect new elements like geolocation, view transitions waitUntil, find-in-page styling, ARIA tweaks, and several deprecations aimed at Privacy Sandbox.
Unless otherwise noted, the following changes apply to the latest Chrome beta channel release for Android, ChromeOS, Linux, macOS, and Windows. To learn more about these features, see the provided links or the list on ChromeStatus.com. Download the latest version from Google.com for desktop or from Google Play Store on Android.
CSS and UI
CSS anchor positioning with transforms
If an anchor-positioned element is tethered to an anchor that has a transform (or is contained by an element with a transform), the browser resolves anchor() and anchor-size() functions against the bounding box of the transformed anchor.
CSS find-in-page highlight pseudos
Exposes find-in-page search result styling as the ::search-text pseudo-element, which is a highlight pseudo-element like those used for selection and spelling errors. This lets you change the foreground and background colors or add text decorations. This is especially useful if the browser defaults have insufficient contrast with the page colors or are otherwise unsuitable.
Learn more on the Igalia blog in Find-in-Page Highlight Styling.Don't use aria-details for anchor positioning
Don't use aria-details for anchor positioning
The code to create aria-details relationships for non-popover use cases of anchor positioning was likely a mistake. Since popovers and other semantic relationships do create aria-details, and the remaining use cases are likely non-semantic, Chrome now doesn't create these relationships in the non-semantic cases.@scroll-state scrolled support
Lets you style descendants of containers based on the most recent scrolling direction.
Example:.scrolling-up { translate: 80px 0; transition: 0.4s translate; } html { container-type: scroll-state; } @container scroll-state(scrolled: top) { .scrolling-up { translate: 0 0; } }Respect overscroll-behavior for keyboard scrolls
Respect overscroll-behavior for keyboard scrolls
When you set overscroll-behavior to a value other than auto, the browser shouldn't perform scroll chaining. Chrome respects this for mouse or touch scrolling; however, keyboard scrolls ignored it. This change ensures keyboard scrolling also respects overscroll-behavior.Respect overscroll-behavior on non-scrollable scroll containers
Respect overscroll-behavior on non-scrollable scroll containers
The overscroll-behavior property applies to all scroll container elements, regardless of whether those elements have overflowing content or are user scrollable. You can use overscroll-behavior to prevent scroll propagation on an overflow: hidden backdrop or an overflow: auto element without needing to consider whether it is overflowing.Non-tree-scoped container-name matching
Non-tree-scoped container-name matching
The browser ignores tree-scope when matching container-name for @container queries.
Previously, container-name matching for @container queries used tree-scoped names or references. This meant the same name wouldn't match if the @container rule and the container-type property originated from different trees, for example, if the container-type declaration came from an inner shadow tree.
With this change, container-name values match regardless of the @container rule or container-type declaration origins.SVG2 CSS cascading
Aligns the Chrome implementation with the SVG2 specification for matching CSS rules in element trees.
Selectors match against the instantiation elements instead of the originating element subtree. This means selectors no longer match ancestor and sibling elements outside the cloned subtree. More importantly, state selectors like :hover now match in instances.Web APIs
XRVisibilityMaskChange
Adds an XRVisibilityMaskChange event that provides a list of vertices and indices to represent the mesh of the visible portion of the user's viewport. This data can be used to confidently limit the amount of the viewport drawn to, which improves performance. To better support this event, XRView objects are also given unique identifiers to enable easier pairing with the associated masks. This is an extension to the core WebXR specification.
Expose onanimationcancel event to GlobalEventHandlers
Expose onanimationcancel event to GlobalEventHandlers
CSS Animations Level 1 extends the GlobalEventHandlers interface, defined in the HTML specification, by declaring four new event handlers: onanimationstart, onanimationiteration, onanimationend, and onanimationcancel.
Only the onanimationcancel event handler was missing from the GlobalEventHandlers IDL.
For more information, see the CSS Animations Level 1 specification and the HTML specification's GlobalEventHandlers section.View Transitions waitUntil() method
View Transitions waitUntil() method
The ViewTransition automatically constructs a pseudo-element tree to display and animate participating elements in the transition. Per the specification, this subtree is constructed when the view transition starts animating and is destroyed when the animations associated with all view transition pseudo-elements are in the finished state (or more precisely, in a non-running, non-paused state).
This works for a majority of cases and provides a seamless experience for developers. However, for more advanced cases, this is insufficient because developers sometimes want the view transition pseudo-tree to persist beyond the animation finish state.
One example is tying view transitions with Scroll-Driven Animations. When the animation is controlled by a scroll timeline, the subtree shouldn't be destroyed when the animations finish because scrolling back can still animate the pseudo elements.
To enable advanced uses of view transition, this intent adds a waitUntil() function on the ViewTransition object that takes a promise. This promise delays destruction of the pseudo-tree until it is settled.The element
The element
Introduces the element, a declarative, user-activated control for accessing the user's location. It streamlines the user and developer journey by handling the permission flow and directly providing location data to the site, often eliminating the need for a separate JavaScript API call.
This addresses the long-standing problem of permission prompts triggered directly from JavaScript without a strong signal of user intent. By embedding a browser-controlled element in the page, the user's click provides a clear, intentional signal. This provides a better prompt user experience and, crucially, a recovery path for users who have previously denied the permission.
Note: This feature was previously developed and tested in an origin trial as the more generic element. Based on feedback from developers and other browser vendors, it has evolved into the capability-specific element for a more tailored and powerful developer experience.WebGPU: subgroup_id feature
The subgroup_id and num_subgroups built-in values are available when the subgroups extension is enabled.
WebGPU: Uniform buffer standard layout
Uniform buffers declared in WGSL shaders are no longer required to have 16-byte alignment on array elements or to pad nested structure offsets to a multiple of 16 bytes.
The Temporal API
The Temporal API in ECMA262 provides standard objects and functions for working with dates and times. Date has been a long-standing issue in ECMAScript. Temporal, a global Object that acts as a top-level namespace (for example, Math), bringing a modern date and time API to the ECMAScript language. For a detailed breakdown of motivations, see Fixing JavaScript Date: Getting Started.
Support ping, hreflang, type and referrerPolicy for SVGAElement
Adds support for ping, hreflang, type, and referrerPolicy attributes on SVGAElement, aligning its behavior with HTMLAnchorElement for consistent link handling across HTML and SVG.
The clipboardchange event
The clipboardchange event fires whenever the system clipboard contents are changed by a web app or any other system application. This lets web apps, for example, remote desktop clients, keep their clipboards synchronized with the system clipboard. It provides an efficient alternative to polling the clipboard (using JavaScript) for changes.
User-Agent Client Hints ch-ua-high-entropy-values permissions policy
Adds support for a ch-ua-high-entropy-values Permissions Policy that lets a top-level site restrict which documents can collect high-entropy client hints using the navigator.userAgentData.getHighEntropyValues() JavaScript API.
Restricting collection of high-entropy hints over HTTP is already possible with existing per-client-hint Permissions Policies.Mirroring of RTL MathML operators
Adds support for character-level and glyph-level mirroring when rendering MathML operators in RTL mode.
When using RTL mode, some operators can be mirrored by changing them to another code point (for example, a right parenthesis becomes a left parenthesis). This is character-level mirroring, with equivalences defined by Unicode's Bidi_Mirrored property.
Some operators have no appropriate mirroring character. Glyph-level mirroring applies in this case, with the rtlm font feature, where another glyph can replace it in a mirrored context. Some existing implementations mirror the original glyph directly, but this might change the meaning for asymmetrical characters, such as the clockwise contour integral.Multicast Support for the Direct Sockets API for Isolated Web Apps
This feature lets Isolated Web Apps subscribe to multicast groups, receive UDP packets from them, and specify additional parameters when sending UDP packets to multicast addresses.
Performance and Event Timing: InteractionCount
The Event Timing API is part of the Performance Timeline and measures the performance of user interactions. Certain events have an interactionId value assigned, which is useful for grouping related interactions based on common physical user inputs or gestures.
This feature adds performance.interactionCount, which is the total number of interactions that have occurred on the page.
In particular, this feature is useful for computing the Interaction to Next Paint (INP) metric value, which requires knowing the total number of interactions to compute a high percentile score (p98 for pages with more than 50 total interactions).
This feature has been specified for a long time, was prototyped in Chromium previously but never shipped, is part of Interop 2025, and is already available in other browsers.
Note: There is already a more powerful performance.eventCounts map for specific events, but it is not possible to accurately map event counts to interaction counts.Interoperable pointer and mouse boundary events after DOM changes
After an event target is removed from the DOM, the logical target of the pointer, as implied by the Pointer and Mouse boundary events (that is, over, out, enter, and leave events), must be the nearest ancestor still attached to the DOM.
Chrome has been tracking a node even after it is removed from the DOM. As a result, if the pointer moves to a new node B after the hit-test node A is removed from the DOM, the boundary event sequence (pointerover, pointerout, pointerenter, pointerleave events, and the corresponding mouse events) implied a pointer movement from A to B. Per the new consensus, the event sequence implies a pointer movement from the "parent of A" to B.Pointer Lock on Android
Provides access to raw mouse movement by locking the target of mouse events to a single element and hiding the mouse cursor. The Pointer Lock API is already supported on desktop, this launch is for support on Android.
RTCDegradationPreference enum value maintain-framerate-and-resolution
maintain-framerate-and-resolution disables WebRTC's internal video adaptation. This lets the application implement its own adaptation logic and prevents interference from the internal adaptation.
WebAuthn Signal API on Android and iOS
Allow WebAuthn relying parties to report information about existing passkeys back to credential storage providers, so that incorrect or revoked credentials can be updated or removed from provider and system UI.
This feature was already available on desktop, and is now shipping on Android and iOS.
Also, the signal API now supports a safety mechanism for Google Password Manager passkeys on all supported platforms. Previously, when a relying party signaled that a credential was unknown or removed, the passkey was permanently deleted. Now, Google Password Manager hides the passkey instead of deleting it. Passkeys can be recovered by calling signalAllAcceptedCredentials with a list of previously hidden passkeys.New origin trials
In Chrome 144, you can opt into the following origin trials.
Enhanced Canvas TextMetrics
Expands the TextMetrics Canvas API to support selection rectangles, bounding box queries, and glyph cluster-based operations.
This functionality enables complex text editing applications with accurate selection, caret positioning, and hit testing. Additionally, cluster-based rendering facilitates sophisticated text effects, such as independent character animations and styling.Deprecations and removals
This version of Chrome introduces the deprecations and removals listed in this section. Visit ChromeStatus.com for lists of planned deprecations, current deprecations, and previous removals.
Deprecate the Topics API
The Topics API is an API to enable ad-targeting based on a user's general browsing interests, without exposing their exact browsing history.
Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove the Topics API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).Deprecate the Protected Audience API
The Protected Audience API provides a method of interest-group advertising without third-party cookies or user tracking across sites.
Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove the Protected Audience API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).Deprecate the Shared Storage API
The Shared Storage API is a privacy-preserving web API to enable storage that is not partitioned by first-party site.
Following the announcement that Chrome will maintain its current approach to third-party cookies, the team is deprecating and planning to remove the Shared Storage API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).Deprecate the Attribution Reporting API
The Attribution Reporting API is an API designed to measure ad conversions without third-party cookies or user tracking across sites.
Following the announcement that Chrome will maintain its current approach to third-party cookies, the team is planning to deprecate and remove the Attribution Reporting API (along with other Privacy Sandbox APIs).Deprecate the Private Aggregation API
The Private Aggregation API is a generic mechanism for measuring aggregate, cross-site data in a privacy-preserving manner. It was originally designed for a future without third-party cookies.
Following the announcement that Chrome will maintain its current approach to third-party cookies, the team is deprecating and planning to remove the Private Aggregation API (along with certain other technologies, as outlined on the Privacy Sandbox feature status page). This API is only exposed through the Shared Storage and Protected Audience APIs, which are also planned for deprecation and removal. Therefore, no additional work is required for Private Aggregation.Deprecate Related Website Sets
Related Website Sets provide a framework for developers to declare relationships among sites, to enable limited cross-site cookie access for specific, user-facing purposes. This is facilitated through the use of the Storage Access API and document.requestStorageAccessFor (see next section).
Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove Related Website Sets (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).Deprecate document.requestStorageAccessFor
The requestStorageAccessFor API is an extension to the Storage Access API that allows a top-level site to request access to unpartitioned ("first-party") cookies on behalf of embedded sites. Browsers would have discretion to grant or deny access, with mechanisms like Related Website Sets membership as a potential signal. This would allow for use of the Storage Access API by top-level sites.
Following the announcement that Chrome will maintain its current approach to third-party cookies, we are now deprecating and planning to remove requestStorageAccessFor (along with certain other technologies, as outlined on the Privacy Sandbox feature status page).Deprecate savedTabGroups as individual value in SyncTypesListDisabled
Deprecate savedTabGroups as individual value in SyncTypesListDisabled
The SyncTypesListDisabled enterprise policy lets administrators disable the synchronization of the savedTabGroups data type on desktop platforms. On mobile platforms, however, Tab Groups synchronization is already managed by the tabs data type. To align desktop behavior with mobile and simplify sync management, the individual savedTabGroups data type is deprecated and is no longer an individually customizable value within the SyncTypesListDisabled policy.
Warning: From Chrome 144, if your SyncTypesListDisabled policy disables either tabs or savedTabGroups, both data types are considered disabled. The savedTabGroups value is entirely removed from the list of supported data types for this policy. For administrators who have saved tab groups disabled and intend to keep this behavior, explicitly disable the tabs data type.Externally loaded entities in XML parsing
Chrome synchronously fetches external XML entities or DTDs and incorporates them into parsing under specific circumstances. This functionality will be removed.
Original source Report a problem
http/tests/security/contentTypeOptions/xml-external-entity.xml provides an example: External entities can be defined in the trailing part of the DOCTYPE statement and refer to resources that are synchronously loaded and included as context when parsing XML.
Another syntax example is a DOCTYPE that, using the SYSTEM keyword followed by a URL pointing to a DTD, contains additional entity definitions.
Such external load requests are passed up from the parser.
According to the W3C XML specification, non-validating processors are not required to read external entities.
The team plans to deprecate loading of external entity definitions in XML documents that don't use XSLT. - Dec 2, 2025
- Parsed from source:Dec 2, 2025
- Detected by Releasebot:Dec 2, 2025
Chrome 143
Chrome 143 stable delivers a broad platform update with CSS anchors, new background-position syntax, font-language-override, and updated Web App and FedCM features. It also boosts WebGPU, WebTransport, ICU 77, and Isolated Web Apps; plus manifest and privacy improvements.
Release Notes
Stable release date: December 2nd, 2025
Unless otherwise noted, the following changes apply to Chrome 143 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.CSS and UI
CSS anchored fallback container queries
Introduces @container anchored(fallback) to style descendants of anchor positioned elements based on which of position-try-fallbacks is applied.
Such queries can be used to style an anchored element's tether or its animations, based on how the anchor and the anchored element are positioned relative to each other.
Tracking bug #417621241 | ChromeStatus.com entry | SpecSide-relative syntax for background-position-x/ y longhands
Side-relative syntax for background-position-x/y longhands
Defines the background image's position relative to one of its edges.
This syntax provides a more flexible and responsive mechanism to define the background image position, instead of using fixed values that need to be adapted to the window or frame size.
This feature is applied also to the -webkit-mask-position property to ensure webcompat levels are the same.
Tracking bug #40468636 | ChromeStatus.com entry | SpecImplement CSS property font-language-override
Implement CSS property font-language-override
Introduces support for font-language-override CSS property. The property allows developers to override the system language used for OpenType glyph substitution by specifying a four-character language tag directly in CSS.
This enables fine-grained typographic control, particularly useful for multilingual content or fonts with language-specific glyph variants.
Tracking bug #41170551 | ChromeStatus.com entry | SpecWeb App Manifest: specify update eligibility
Specify an update eligibility algorithm in the manifest specification. This makes the update process more deterministic and predictable, giving the dev more control over whether (and when) updates should apply to existing installations, and allowing removal of the update check throttle that user agents currently need to implement to avoid wasting network resources.
Tracking bug #403253129 | ChromeStatus.com entryDevice
Gamepad ongamepadconnected and ongamepaddisconnected event handler attributes
Gamepad ongamepadconnected and ongamepaddisconnected event handler attributes
Adds ongamepadconnected and ongamepaddisconnected event handlers to the WindowEventHandlers interface mixin.
This enables support for the following event handler attributes:- window.ongamepadconnected
- document.body.ongamepadconnected
- window.ongamepaddisconnected
- document.body.ongamepaddisconnected
Tracking bug #40175074 | ChromeStatus.com entry | Spec
DOM
Allow more characters in JavaScript DOM APIs
The HTML parser lets elements and attributes have a wide variety of valid characters and names, but the JavaScript DOM APIs to create the same elements and attributes are more strict and don't match the parser.
This change relaxes the validation of the JavaScript DOM APIs to match the HTML parser.
Tracking bug #40228234 | ChromeStatus.com entry | SpecGraphics
WebGPU: Texture component swizzle
Allows GPUTextureViews to rearrange or replace the color components from texture's red/green/blue/alpha channels when accessed by a shader.
Tracking bug #414312052 | ChromeStatus.com entry | SpecJavaScript
ICU 77 (supporting Unicode 16)
The Unicode support library ICU (International Components for Unicode) is upgraded from version 74.2 to 77.1, adding support for Unicode 16 and updating locale data. Two changes could pose some risk for web applications that assume a specific format from the Intl JS APIs:
- The default Italian number formatting changed to omit the thousand separator for 4-digit numbers. For example new Intl.NumberFormat("it").format(1234) will return 1234 instead of 1.234. The old behavior can be achieved with the useGrouping parameter for the Intl.NumberFormat constructor.
- In some English locales (en-AU, en-GB, and en-IN), a comma was added after full-length weekdays, for example, changing Saturday 30 April 2011 to Saturday, 30 April 2011. Web applications should avoid relying on the precise formatting of dates and they may change again in future.
Tracking bug #421834885 | ChromeStatus.com entry | Spec
EditContext: TextFormat underlineStyle and underlineThickness
The EditContext API shipped with a bug in Chrome where the TextFormat object supplied by the textformatupdate event provides incorrect values for the underlineStyle and underlineThickness properties. Before Chrome 143 the possible values are None, Solid, Dotted, Dashed, Squiggle and None, Thin, Thick. However the specification lists none, solid, dotted, dashed, wavy and none, thin, thick.
The correct values as specified are now implemented from Chrome 143.
Tracking bug #354497121 | ChromeStatus.com entry | SpecDataTransfer property for insertFromPaste, insertFromDrop and insertReplacementText input events
DataTransfer property for insertFromPaste, insertFromDrop, and insertReplacementText input events
Populate the dataTransfer property on input events with an inputType of insertFromPaste, insertFromDrop, and insertReplacementText to provide access to clipboard and drag-drop data during editing operations in contenteditable elements.
The dataTransfer object contains the same data that was available during the beforeinput event.
This feature only applies to contenteditable elements. For form controls (textarea, input), the behavior remains unchanged—the data property contains the inserted text and dataTransfer remains null.
Tracking bug #401593412 | ChromeStatus.com entry | SpecFedCM: Support structured JSON responses from IdPs
Allows Identity Providers (IdPs) to return structured JSON objects instead of plain strings to Relying Parties (RPs) using the id_assertion_endpoint.
This change simplifies integration for developers by eliminating the need to manually serialize and parse JSON strings. It enables more dynamic and flexible authentication flows, allowing RPs to interpret complex responses directly and support varied protocols like OAuth2, OIDC, or IndieAuth without out-of-band agreements.
Tracking bug #346567168 | ChromeStatus.com entry | SpecNetwork
WebTransport Application Protocol Negotiation
WebTransport Application Protocol Negotiation allows negotiation of the protocol used by the web application within the WebTransport handshake.
A web application can specify a list of application protocols offered when constructing a WebTransport object, which are then conveyed to the server using HTTP headers; if the server picks one of those protocols, it can indicate that within response headers, and that reply is available within the WebTransport object.
Tracking bug #416080492 | ChromeStatus.com entry | SpecPerformance
Speculation rules: mobile eager eagerness improvements
Speculation rules: mobile eager eagerness improvements
On mobile, eager eagerness speculation rules prefetches and prerenders now trigger when HTML anchor elements are in the viewport for a short time.
Tracking bug #436705485 | ChromeStatus.com entry | SpecWebRTC
WebRTC RTP header extension behavior change
Implements a change to the specification that ensures that subsequent offer or answer does not permute the header extensions negotiated unless the user wants that to happen.
Tracking bug #439514253 | ChromeStatus.com entry | SpecIsolated Web Apps
Web Smart Card API for Isolated Web Apps
Available on Isolated Web Apps (IWA) only. Enables smart card (PC/SC) applications to move to the Web platform. It gives them access to the PC/SC implementation (and card reader drivers) available in the host OS.
Administrators can control the availability of this API either:- Globally—using the DefaultSmartCardConnectSetting policy.
- Per-application—using the SmartCardConnectAllowedForUrls and SmartCardConnectBlockedForUrls policies.
Tracking bug #1386175 | ChromeStatus.com entry | Spec
Origin trials
Digital Credentials API (issuance support)
This feature lets issuing websites (for example, a university, government agency, or bank) to securely initiate the provisioning (issuance) process of digital credentials directly into a user's mobile wallet application. On Android, this capability uses the Android IdentityCredential CredMan system (Credential Manager). On Desktop, it uses cross-device approaches using the CTAP protocol similar to Digital Credentials presentation.
Origin Trial | Tracking bug #378330032 | ChromeStatus.com entry | SpecWeb Install API
Provides the ability to install a web app. When invoked, the website installs either itself, or another site from a different origin, as a web app (depending on the provided parameters).
Origin Trial | Tracking bug #333795265 | ChromeStatus.com entry | SpecDeprecations and removals
Deprecate XSLT
XSLT v1.0, which all browsers adhere to, was standardized in 1999. In the meantime, XSLT has evolved to v2.0 and v3.0, adding features, and growing apart from the version frozen into browsers. This lack of advancement, coupled with the rise of JavaScript libraries and frameworks that offer more flexible and powerful DOM manipulation, has led to a significant decline in the use of client-side XSLT. Its role within the web browser has been largely superseded by JavaScript-based technologies, such as JSON and React.
Chromium uses the libxslt library to process these transformations, and libxslt was unmaintained for around 6 months of 2025. Libxslt is a complex, aging C codebase of the type notoriously susceptible to memory safety vulnerabilities like buffer overflows, which can lead to arbitrary code execution. Because client-side XSLT is now a niche, rarely-used feature, these libraries receive far less maintenance and security scrutiny than core JavaScript engines, yet they represent a direct, potent attack surface for processing untrusted web content. Indeed, XSLT is the source of several recent high-profile security exploits that continue to put browser users at risk. For these reasons, Chromium (along with both other browser engines) plans to deprecate and remove XSLT from the web platform. For more details, see Removing XSLT for a more secure browser.
ChromeStatus.com entryDeprecate 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, minimum day in the first week), and text direction hour cycle used in the locale.
Changes in Stage 3 of the specification moves several getters to functions. These are now being updated in Chrome to match the specification.
Tracking bug #42203770 | ChromeStatus.com entry | SpecFedCM Privacy Enforcement for Client Metadata
To address cross-site identity correlation risks in the FedCM API, Identity Providers (IdPs) that use client_metadata within their FedCM configuration are required to implement the direct endpoints format in the .well-known/web-identity file. This mandate ensures that both accounts_endpoint and login_url are explicitly defined whenever a client_metadata_endpoint is present. This approach strengthens privacy protections by preventing relying parties from exploiting metadata to correlate user identities across multiple sites.
In Chrome 143 (Warning Phase): If client_metadata_endpoint exists but accounts_endpoint or login_url are missing, the browser will display console warnings. This gives IdPs time to update configurations.
ChromeStatus.com entry | SpecFedCM-Migration of nonce to params field and renaming of IdentityCredentialError code attribute to error
FedCM-Migration of nonce to params field and renaming of IdentityCredentialError code attribute to error
Original source Report a problem
Migration of nonce to params field: The nonce parameter in navigator.credentials.get() is moving from a top-level field to the params object for better API design, extensibility, and maintainability. This structured approach simplifies parsing for Identity Providers, supports future-proofing without versioning, and aligns with modern API patterns. For Relying Parties, the impact is minimal—they provide the same nonce value in a new location.
In Chrome 143 (Warning Phase): nonce accepted both at top level and inside params. Top-level usage triggers a console warning.
Rename code to error in IdentityCredentialError: The code attribute in IdentityCredentialError is renamed to error for clearer semantics, better developer experience, and alignment with web standards. This change reduces ambiguity and avoids conflicts with DOMException.code. Additionally, error.code becomes error.error, retaining its DOMString type.
In Chrome 143 (Warning Phase): Both error and code attributes are supported. Using code triggers a console warning, guiding developers to migrate.
Tracking bug #427474985 | ChromeStatus.com entry | Spec - Dec 2, 2025
- Parsed from source:Dec 2, 2025
- Detected by Releasebot:Dec 12, 2025
Chrome 143
Chrome 143 stable lands with a wave of updates across CSS, WebGPU, and internationalization. New features include anchored container queries, flexible background-position syntax, font-language-override, and enhanced Web App/Manifest behavior, plus privacy and performance tweaks.
Stable release date: December 2nd, 2025
Unless otherwise noted, the following changes apply to Chrome 143 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.CSS and UI
CSS anchored fallback container queries
Introduces @container anchored(fallback) to style descendants of anchor positioned elements based on which of position-try-fallbacks is applied.
Such queries can be used to style an anchored element's tether or its animations, based on how the anchor and the anchored element are positioned relative to each other.
Tracking bug #417621241 | ChromeStatus.com entry | SpecSide-relative syntax for background-position-x/ y longhands
Defines the background image's position relative to one of its edges.
This syntax provides a more flexible and responsive mechanism to define the background image position, instead of using fixed values that need to be adapted to the window or frame size.
This feature is applied also to the -webkit-mask-position property to ensure webcompat levels are the same.
Tracking bug #40468636 | ChromeStatus.com entry | SpecImplement CSS property font-language-override
Introduces support for font-language-override CSS property. The property allows developers to override the system language used for OpenType glyph substitution by specifying a four-character language tag directly in CSS.
This enables fine-grained typographic control, particularly useful for multilingual content or fonts with language-specific glyph variants.
Tracking bug #41170551 | ChromeStatus.com entry | SpecWeb App Manifest: specify update eligibility
Specify an update eligibility algorithm in the manifest specification. This makes the update process more deterministic and predictable, giving the dev more control over whether (and when) updates should apply to existing installations, and allowing removal of the update check throttle that user agents currently need to implement to avoid wasting network resources.
Tracking bug #403253129 | ChromeStatus.com entry
Device
- Gamepad ongamepadconnected and ongamepaddisconnected event handler attributes
Adds ongamepadconnected and ongamepaddisconnected event handlers to the WindowEventHandlers interface mixin.
This enables support for the following event handler attributes:
• window.ongamepadconnected
• document.body.ongamepadconnected
• window.ongamepaddisconnected
• document.body.ongamepaddisconnected
Tracking bug #40175074 | ChromeStatus.com entry | Spec
DOM
- Allow more characters in JavaScript DOM APIs
The HTML parser lets elements and attributes have a wide variety of valid characters and names, but the JavaScript DOM APIs to create the same elements and attributes are more strict and don't match the parser.
This change relaxes the validation of the JavaScript DOM APIs to match the HTML parser.
Tracking bug #40228234 | ChromeStatus.com entry | Spec
Graphics
- WebGPU: Texture component swizzle
Allows GPUTextureViews to rearrange or replace the color components from texture's red/green/blue/alpha channels when accessed by a shader.
Tracking bug #414312052 | ChromeStatus.com entry | Spec
JavaScript
ICU 77 (supporting Unicode 16)
The Unicode support library ICU (International Components for Unicode) is upgraded from version 74.2 to 77.1, adding support for Unicode 16 and updating locale data. Two changes could pose some risk for web applications that assume a specific format from the Intl JS APIs:- The default Italian number formatting changed to omit the thousand separator for 4-digit numbers. For example new Intl.NumberFormat("it").format(1234) will return 1234 instead of 1.234. The old behavior can be achieved with the useGrouping parameter for the Intl.NumberFormat constructor.
- In some English locales (en-AU, en-GB, and en-IN), a comma was added after full-length weekdays, for example, changing Saturday 30 April 2011 to Saturday, 30 April 2011. Web applications should avoid relying on the precise formatting of dates and they may change again in future.
Tracking bug #421834885 | ChromeStatus.com entry | Spec
EditContext: TextFormat underlineStyle and underlineThickness
The EditContext API shipped with a bug in Chrome where the TextFormat object supplied by the textformatupdate event provides incorrect values for the underlineStyle and underlineThickness properties. Before Chrome 143 the possible values are None, Solid, Dotted, Dashed, Squiggle and None, Thin, Thick. However the specification lists none, solid, dotted, dashed, wavy and none, thin, thick.
The correct values as specified are now implemented from Chrome 143.
Tracking bug #354497121 | ChromeStatus.com entry | SpecDataTransfer property for insertFromPaste, insertFromDrop and insertReplacementText input events
Populate the dataTransfer property on input events with an inputType of insertFromPaste, insertFromDrop, and insertReplacementText to provide access to clipboard and drag-drop data during editing operations in contenteditable elements.
The dataTransfer object contains the same data that was available during the beforeinput event.
This feature only applies to contenteditable elements. For form controls (textarea, input), the behavior remains unchanged—the data property contains the inserted text and dataTransfer remains null.
Tracking bug #401593412 | ChromeStatus.com entry | SpecFedCM: Support structured JSON responses from IdPs
Allows Identity Providers (IdPs) to return structured JSON objects instead of plain strings to Relying Parties (RPs) using the id_assertion_endpoint.
This change simplifies integration for developers by eliminating the need to manually serialize and parse JSON strings. It enables more dynamic and flexible authentication flows, allowing RPs to interpret complex responses directly and support varied protocols like OAuth2, OIDC, or IndieAuth without out-of-band agreements.
Tracking bug #346567168 | ChromeStatus.com entry | Spec
Network
- WebTransport Application Protocol Negotiation
WebTransport Application Protocol Negotiation allows negotiation of the protocol used by the web application within the WebTransport handshake.
A web application can specify a list of application protocols offered when constructing a WebTransport object, which are then conveyed to the server using HTTP headers; if the server picks one of those protocols, it can indicate that within response headers, and that reply is available within the WebTransport object.
Tracking bug #416080492 | ChromeStatus.com entry | Spec
Performance
- Speculation rules: mobile eager eagerness improvements
On mobile, eager eagerness speculation rules prefetches and prerenders now trigger when HTML anchor elements are in the viewport for a short time.
Tracking bug #436705485 | ChromeStatus.com entry | Spec
WebRTC
- WebRTC RTP header extension behavior change
Implements a change to the specification that ensures that subsequent offer or answer does not permute the header extensions negotiated unless the user wants that to happen.
Tracking bug #439514253 | ChromeStatus.com entry | Spec
Isolated Web Apps
- Web Smart Card API for Isolated Web Apps
Available on Isolated Web Apps (IWA) only. Enables smart card (PC/SC) applications to move to the Web platform. It gives them access to the PC/SC implementation (and card reader drivers) available in the host OS.
Administrators can control the availability of this API either:
• Globally—using the DefaultSmartCardConnectSetting policy.
• Per-application—using the SmartCardConnectAllowedForUrls and SmartCardConnectBlockedForUrls policies.
Tracking bug #1386175 | ChromeStatus.com entry | Spec
Origin trials
Digital Credentials API (issuance support)
This feature lets issuing websites (for example, a university, government agency, or bank) to securely initiate the provisioning (issuance) process of digital credentials directly into a user's mobile wallet application. On Android, this capability uses the Android IdentityCredential CredMan system (Credential Manager). On Desktop, it uses cross-device approaches using the CTAP protocol similar to Digital Credentials presentation.
Origin Trial | Tracking bug #378330032 | ChromeStatus.com entry | SpecWeb Install API
Provides the ability to install a web app. When invoked, the website installs either itself, or another site from a different origin, as a web app (depending on the provided parameters).
Origin Trial | Tracking bug #333795265 | ChromeStatus.com entry | Spec
Deprecations and removals
Deprecate XSLT
XSLT v1.0, which all browsers adhere to, was standardized in 1999. In the meantime, XSLT has evolved to v2.0 and v3.0, adding features, and growing apart from the version frozen into browsers. This lack of advancement, coupled with the rise of JavaScript libraries and frameworks that offer more flexible and powerful DOM manipulation, has led to a significant decline in the use of client-side XSLT. Its role within the web browser has been largely superseded by JavaScript-based technologies, such as JSON and React.
Chromium uses the libxslt library to process these transformations, and libxslt was unmaintained for around 6 months of 2025. Libxslt is a complex, aging C codebase of the type notoriously susceptible to memory safety vulnerabilities like buffer overflows, which can lead to arbitrary code execution. Because client-side XSLT is now a niche, rarely-used feature, these libraries receive far less maintenance and security scrutiny than core JavaScript engines, yet they represent a direct, potent attack surface for processing untrusted web content. Indeed, XSLT is the source of several recent high-profile security exploits that continue to put browser users at risk. For these reasons, Chromium (along with both other browser engines) plans to deprecate and remove XSLT from the web platform. For more details, see Removing XSLT for a more secure browser.
ChromeStatus.com entryDeprecate 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, minimum day in the first week), and text direction hour cycle used in the locale.
Changes in Stage 3 of the specification moves several getters to functions. These are now being updated in Chrome to match the specification.
Tracking bug #42203770 | ChromeStatus.com entry | SpecFedCM Privacy Enforcement for Client Metadata
To address cross-site identity correlation risks in the FedCM API, Identity Providers (IdPs) that use client_metadata within their FedCM configuration are required to implement the direct endpoints format in the .well-known/web-identity file. This mandate ensures that both accounts_endpoint and login_url are explicitly defined whenever a client_metadata_endpoint is present. This approach strengthens privacy protections by preventing relying parties from exploiting metadata to correlate user identities across multiple sites.
In Chrome 143 (Warning Phase): If client_metadata_endpoint exists but accounts_endpoint or login_url is missing, the browser will display console warnings. This gives IdPs time to update configurations.
ChromeStatus.com entry | SpecFedCM-Migration of nonce to params field and renaming of IdentityCredentialError code attribute to error
FedCM-Migration of nonce to params field and renaming of IdentityCredentialError code attribute to error
Migration of nonce to params field: The nonce parameter in navigator.credentials.get() is moving from a top-level field to the params object for better API design, extensibility, and maintainability. This structured approach simplifies parsing for Identity Providers, supports future-proofing without versioning, and aligns with modern API patterns. For Relying Parties, the impact is minimal—they provide the same nonce value in a new location.
In Chrome 143 (Warning Phase): nonce accepted both at top level and inside params. Top-level usage triggers a console warning.
Rename code to error in IdentityCredentialError: The code attribute in IdentityCredentialError is renamed to error for clearer semantics, better developer experience, and alignment with web standards. This change reduces ambiguity and avoids conflicts with DOMException.code. Additionally, error.code becomes error.error, retaining its DOMString type.
In Chrome 143 (Warning Phase): Both error and code attributes are supported. Using code triggers a console warning, guiding developers to migrate.
Tracking bug #427474985 | ChromeStatus.com entry | Spec
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Original source Report a problem
Last updated 2025-12-02 UTC. - Nov 19, 2025
- Parsed from source:Nov 19, 2025
- Detected by Releasebot:Nov 19, 2025
What's New in WebGPU (Chrome 143)
WebGPU introduces texture component swizzle so shaders can remap red, green, blue, and alpha with a four-character swizzle. It also removes bgra8unorm read-only storage texture usage. Dawn updates fix a Vulkan 3D texture clear error. Chrome 143 coverage highlights these changes.
It's now possible to rearrange or replace the color components from texture's red, green, blue, and alpha channels when accessed by a shader.
When the "texture-component-swizzle" feature is available in a GPUAdapter, request a GPUDevice with this feature, and create a GPUTextureView by calling createView() with a new swizzle option. This value is a string of length four, with each character mapping to the view's red, green, blue, and alpha components, respectively. Each character can be either:- "r": Take its value from the red channel of the texture.
- "g": Take its value from the green channel of the texture.
- "b": Take its value from the blue channel of the texture.
- "a": Take its value from the alpha channel of the texture.
- "0": Force its value to 0.
- "1": Force its value to 1.
See the following snippet and chromestatus entry.
const adapter = await navigator.gpu.requestAdapter(); if (!adapter.features.has("texture-component-swizzle")) { throw new Error("Texture component swizzle support is not available"); } // Explicitly request texture component swizzle support. const device = await adapter.requestDevice({ requiredFeatures: ["texture-component-swizzle"], }); // ... Assuming myTexture is a GPUTexture with a single red channel. // Map the view's red, green, blue components to myTexture's red channel // and force the view's alpha component to 1 so that the shader sees it as // a grayscale image. const view = myTexture.createView({ swizzle: "rrr1" }); // Send the appropriate commands to the GPU...Remove bgra8unorm read-only storage texture usage
As previously announced, using "bgra8unorm" format with read-only storage textures is now removed. The WebGPU specification explicitly disallows this, and its prior allowance in Chrome was a bug, as this format is intended for write-only access and is not portable. See issue 427681156.
Dawn updates
A validation error raised when clearing a 3D texture in Vulkan has been fixed. See issue 443950688.
This covers only some of the key highlights. Check out the exhaustive list of commits.What's New in WebGPU
A list of everything that has been covered in the What's New in WebGPU series.
Chrome 143
- Texture component swizzle
- Remove bgra8unorm read-only storage texture usage
- Dawn updates
- Nov 19, 2025
- Parsed from source:Nov 19, 2025
- Detected by Releasebot:Dec 12, 2025
What's New in WebGPU (Chrome 143)
WebGPU introduces texture component swizzle for shaders, allowing per-channel remapping and grayscale views via swizzle strings. It also removes bgra8unorm read-only storage texture usage, with Dawn fixes and Chrome 143 highlights tied to the update.
Texture component swizzle
It's now possible to rearrange or replace the color components from texture's red, green, blue, and alpha channels when accessed by a shader.
When the "texture-component-swizzle" feature is available in a GPUAdapter, request a GPUDevice with this feature, and create a GPUTextureView by calling createView() with a new swizzle option. This value is a string of length four, with each character mapping to the view's red, green, blue, and alpha components, respectively. Each character can be either:- "r": Take its value from the red channel of the texture.
- "g": Take its value from the green channel of the texture.
- "b": Take its value from the blue channel of the texture.
- "a": Take its value from the alpha channel of the texture.
- "0": Force its value to 0.
- "1": Force its value to 1.
See the following snippet and chromestatus entry.
const adapter = await navigator.gpu.requestAdapter(); if (!adapter.features.has("texture-component-swizzle")) { throw new Error("Texture component swizzle support is not available"); } // Explicitly request texture component swizzle support. const device = await adapter.requestDevice({ requiredFeatures: ["texture-component-swizzle"], }); // ... Assuming myTexture is a GPUTexture with a single red channel. // Map the view's red, green, blue components to myTexture's red channel // and force the view's alpha component to 1 so that the shader sees it as // a grayscale image. const view = myTexture.createView({ swizzle: "rrr1" }); // Send the appropriate commands to the GPU...Remove bgra8unorm read-only storage texture usage
As previously announced, using "bgra8unorm" format with read-only storage textures is now removed. The WebGPU specification explicitly disallows this, and its prior allowance in Chrome was a bug, as this format is intended for write-only access and is not portable. See issue 427681156.
Dawn updates
A validation error raised when clearing a 3D texture in Vulkan has been fixed. See issue 443950688.
This covers only some of the key highlights. Check out the exhaustive list of commits.
What's New in WebGPU
A list of everything that has been covered in the What's New in WebGPU series.
Chrome 143
- Texture component swizzle
- Remove bgra8unorm read-only storage texture usage
- Dawn updates
- Oct 28, 2025
- Parsed from source:Oct 28, 2025
- Detected by Releasebot:Oct 28, 2025
What's new in Dev Tools, Chrome 142
DevTools unlocks AI-assisted coding in Console and Sources, a beefed up MCP server with Node.js 20 support and new pagination, Gemini-driven performance chat, and a movable drawer UI. Plus AI access from anywhere, Google Developer Program badges, and broader storage inspection across workers.
You can now get AI-generated type-ahead suggestions in the Console and Sources panels.
To enable this feature, go to Settings > AI Innovations and toggle Code suggestions.
Important: This feature is rolled out over time and may not be available for you yet. Restrictions based on age, location, and language may apply. To learn more, see AI assistance requirements.
Enhancements for the Dev Tools MCP server
Since launching the public preview of the DevTools MCP server with v0.2.1, we landed various improvements with contributions from the community and released v0.9.0.
- Node.js support has been extended down to Node.js 20.
- Network requests and console messages can be paginated to save tokens and filtered based on request type (for example, scripts, stylesheets, images) and message type (log, warning, error).
- Screenshots can be output to a specific path and in various formats.
- Configurable tool categories let you organize which capabilities are exposed, reducing unnecessary noise.
- You can now pass launch arguments to the Chrome instance used by the MCP server.
See the public changelog on GitHub for the full list of changes and bug fixes, and learn more about the DevTools MCP server in the announcement blog post.
Quicker access to AI assistance
DevTools now includes more links that open AI assistance. The Ask AI context menu item has been renamed to Debug with AI and amended with direct actions AI can help you with, based on context.
With the additional new button in the top-right corner of DevTools you can open AI assistance from anywhere within DevTools.Debug the full performance trace with Gemini
After recording a trace in the Performance panel, you can now chat about the full trace, related Performance insights, and field data with Gemini without selecting specific context in advance, all within the same conversation. This lets you look at performance issues more holistically before diving deeper.
After identifying a potential problem with the help of Gemini, you can seamlessly select a more specific context item like a trace event or a Performance insight for closer inspection and continue the same chat.
Likewise, all insights in Performance > Insights are now available for you to chat about with Gemini.Toggle drawer orientation
The drawer can now also be moved to the side. This lets you view panels side-by-side instead of stacked. Right-click a panel name in the main tab bar and select Move to drawer to move the selected panel to the drawer.
Add additional panels to the drawer from ⋮ > More Tools.Google Developer Program
The Google Developer Program is now integrated into DevTools, with direct links for profile management and new badges to earn.
Important: This feature is rolled out over time and might not be available for you yet.
Badges are an opt-in feature. To enable badges, go to Settings > Preferences > Account and toggle Earn badges.Miscellaneous highlights
These are some of the many notable fixes and improvements in this release:
- The Application panel now supports storage inspection for all worker types, including Service Workers, Shared Workers, and Dedicated Workers.
- :target-current is now shown in the Styles panel.
- The Network panel can now filter requests based on a new Is ad-related boolean.
Download the preview channels
Consider using the Chrome Canary, Dev, or Beta as your default development browser. These preview channels give you access to the latest DevTools features, let you test cutting-edge web platform APIs, and help you find issues on your site before your users do!
Get in touch with the Chrome DevTools team
Use the following options to discuss the new features, updates, or anything else related to DevTools.
- Submit feedback and feature requests to us at crbug.com.
- Report a DevTools issue using the More options > Help > Report a DevTools issue in DevTools.
- Tweet at @ChromiumDev.
- Leave comments on What's new in DevTools YouTube videos or DevTools Tips YouTube videos.
What's new in DevTools
A list of everything that has been covered in the What's new in DevTools series.
Original source Report a problem - Oct 28, 2025
- Parsed from source:Oct 28, 2025
- Detected by Releasebot:Oct 28, 2025
Chrome 142
Chrome 142 delivers major UI and API refinements across platforms. Expect smoother view transitions, new document.activeViewTransition, expanded CSS selectors, SVG download support, WebGPU gains, and stronger local network safeguards plus parity and security updates.
CSS and UI
Stable release date: October 28th, 2025
Unless otherwise noted, the following changes apply to Chrome 142 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
Absolute positioning for the ::view-transition element
View transitions use a pseudo subtree of the element, with ::view-transition being the root of that transition. Previously, the ::view-transition element was specified to have position: fixed. The CSS Working Group resolved to make this position: absolute and so Chrome now reflects that change.
This change shouldn't be noticeable because this element's containing block remains the snapshot containing block in either the absolute or fixed case. The only noticeable difference is in getComputedStyle.
Tracking bug #439800102 | ChromeStatus.com entry | Specactive View Transition property on document
The View Transitions API lets developers start visual transitions between different states. The primary SPA entry point is startViewTransition(), which returns a transition object. This object contains several promises and functionality to track transition progress, and lets you manipulate transitions, for example, by skipping the transition or modifying its types.
From Chrome 142, developers no longer need to store this object. A document.activeViewTransition property represents this object, or null if no transition is ongoing.
This also applies to MPA transitions, where the object is only available through pageswap and pagereveal events. In this update, document.activeViewTransition is set to this object for the duration of the transition.
Tracking bug #434949972 | ChromeStatus.com entry | Spec:target-before and :target-after pseudo-classes
These pseudo-classes match scroll markers that are before or after the active marker (matching :target-current) within the same scroll marker group, as determined by flat tree order:- :target-before: Matches all scroll markers that precede the active marker in the flat tree order within the group.
- :target-after: Matches all scroll markers that follow the active marker in the flat tree order within the group.
Tracking bug #440475008 | ChromeStatus.com entry | Spec
Range syntax for style container queries and if()
Chrome enhances CSS style queries and the if() function by adding support for range syntax.
It extends style queries beyond exact value matching (for example, style(--theme: dark)). Developers can use comparison operators (such as > and <) to compare custom properties, literal values (for example, 10px or 25%), and values from substitution functions like attr() and env(). For a valid comparison, both sides must resolve to the same data type. It is limited to the following numeric types: , , , , , , and .
Tracking bug #408011559 | ChromeStatus.com entry | SpecInterest Invokers (the interestfor attribute)
Mobile and desktop parity for select element rendering modes
By using the size and multiple attributes, the element can be rendered as an in-page listbox or a button with a popup. However, these modes don't have consistent availability across mobile and desktop Chrome. In-page listbox rendering is unavailable on mobile, and a button with a popup is unavailable on desktop when the multiple attribute is present.
This update adds the listbox to mobile and a multi-select popup to desktop, and ensures that opt-ins with the size and multiple attributes result in the same rendering mode across mobile and desktop. The changes are summarized as follows:- When the size attribute has a value greater than 1, in-page rendering is always used. Mobile devices ignored this before.
- When the multiple attribute is set with no size attribute, in-page rendering is used. Mobile devices previously used a popup instead of an in-page listbox.
- When the multiple attribute is set with size=1, a popup is used. Desktop devices previously used an in-page listbox.
Tracking bug #439964654 | ChromeStatus.com entry | Spec
Support download attribute in SVG element
This feature introduces support for the download attribute on the SVGAElement interface in Chromium, aligning with the SVG 2 specification. The download attribute enables authors to specify that the target of an SVG hyperlink should be downloaded rather than navigated to, mirroring the behavior already supported in HTMLAnchorElement. This enhancement promotes interoperability across major browsers and ensures consistent behavior between HTML and SVG link elements, thereby improving developer experience and user expectations.
Tracking bug #40589293 | ChromeStatus.com entry | SpecGraphics
WebGPU: primitive_index feature
WebGPU adds a new optional capability that exposes a new WGSL shader built-in, primitive_index. It provides a per-primitive index to fragment shaders on supported hardware, similar to the vertex_index and instance_index built-ins. The primitive index is useful for advanced graphical techniques, such as virtualized geometry.
Tracking bug #342172182 | ChromeStatus.com entry | SpecWebGPU: Texture formats tier1 and tier2
Extend GPU texture format support with capabilities like render attachment, blending, multisampling, resolve and storage_binding.
Tracking bug #445725447 | ChromeStatus.com entry | SpecWeb APIs
FedCM—Support showing third-party iframe origins in the UI
Before Chrome 142, FedCM always showed the top-level site in its UI.
This works well when the iframe is conceptually first-party (for example, foo.com might have an iframe foostatic.com, which is not meaningful to the user).
But if the iframe is actually third-party, it is better to show the iframe origin in the UI so users better understand who they are sharing their credentials with. For example, a photo editor might be embedded in a book publishing web app and might want to let users access files they stored before with the photo editor. This capability is now available.
Tracking bug #390581529 | ChromeStatus.com entry | SpecStricter *+json MIME token validation for JSON modules
Reject JSON module script responses whose MIME type's type or subtype contains non-HTTP token code points (for example, spaces) when matched with *+json. This aligns with the MIME Sniffing specification and other engines. It is part of the Interop2025 modules focus area.
Tracking bug #440128360 | ChromeStatus.com entry | SpecWeb Speech API contextual biasing
This feature enables websites to support contextual biasing for speech recognition by adding a recognition phrase list to the Web Speech API.
Developers can provide a list of phrases as well as updating them to apply a bias to the speech recognition models in favor of those phrases. This helps improve accuracy and relevance for domain-specific and personalized speech recognition.
ChromeStatus.com entry | SpecMedia session: add reason to enterpictureinpicture action details
Adds enterPictureInPictureReason to the MediaSessionActionDetails sent to the enterpictureinpicture action in the Media Session API. This allows developers to distinguish between enterpictureinpicture actions triggered explicitly by the user (e.g. from a button in the user agent) and enterpictureinpicture actions triggered automatically by the user agent due to the content becoming occluded.
Tracking bug #446738067 | ChromeStatus.com entry | SpecSecurity
Local network access restrictions
Chrome 142 restricts the ability to make requests to the user's local network, gated behind a permission prompt.
A local network request is any request from a public website to a local IP address or loopback, or from a local website (for example, an intranet) to loopback. Gating the ability for websites to perform these requests behind a permission mitigates the risk of cross-site request forgery attacks against local network devices such as routers, and reduces the ability of sites to use these requests to fingerprint the user's local network.
This permission is restricted to secure contexts. If granted, the permissions additionally relaxes mixed content blocking for local network requests (since many local devices are not able to obtain publicly trusted TLS certificates for various reasons).
Learn more in New permission prompt for Local Network Access.
Tracking bug #394009026 | ChromeStatus.com entry | SpecUser input
Interoperable pointerrawupdate events exposed only in secure contexts
The PointerEvents specification restricted pointerrawupdate to secure contexts in 2020, hiding both the event firing and the global event listeners from insecure contexts. Through this feature, Chrome will match the updated specification and become interoperable with other major browsers.
Tracking bug #404479704 | ChromeStatus.com entry | SpecSticky user activation across same-origin renderer-initiated navigations
This feature preserves the sticky user activation state after a page navigates to another same-origin page. The lack of user activation in the post-navigation page prevents some use cases like showing virtual keyboards on auto-focus, and this has been a blocker for the developers who want to build MPAs over SPAs.
Note: Browser-initiated navigation requests (reload, history navigation, typed URL in address bar) are not covered by this feature.
Tracking bug #433729626 | ChromeStatus.com entry | SpecOrigin trials
Device Bound Session Credentials
A way for websites to securely bind a session to a single device.
Original source Report a problem
It lets servers have a session be securely bound to a device. The browser will renew the session periodically as requested by the server, with proof of possession of a private key.
Origin Trial | Device Bound Session Credentials: Second origin trial begins | ChromeStatus.com entry | Spec