Google Chrome Release Notes
Last updated: Jan 13, 2026
- Jan 13, 2026
- Date parsed from source:Jan 13, 2026
- First seen by Releasebot:Jan 13, 2026
Chrome 144
Chrome 144 stable lands with a flush of web platform updates from find-in-page highlights to new CSS, SVG, WebGPU, and API enhancements. It blends developer-focused improvements with UX tweaks like geolocation element and view transitions, signaling a robust release.
Stable release date: January 13th, 2026
Unless otherwise noted, the following changes apply to Chrome 144 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
Want just the highlights? Check out New in Chrome 144.
CSS and UI
CSS find-in-page highlight pseudos
This feature exposes find-in-page search result styling to authors as a highlight pseudo-element, similar to selection and spelling errors. This lets developers change foreground and background colors or add text decorations. This is especially useful if browser defaults have insufficient contrast with page colors or are otherwise unsuitable.
Tracking bug #339298411 | ChromeStatus.com entry | SpecNon-tree-scoped container-name matching
Ignore tree-scope when matching container-name for @container queries.
Previously, container-name matching for container queries used tree-scoped names or references for matching. This meant the same name didn't match if the @container rule and the container-type property originated from different trees, such that the container-type declaration came from an inner shadow tree.
With this change, container names match regardless of @container rule or container-type declaration origins.
Tracking bug #440049800 | ChromeStatus.com entry | SpecCSS anchor positioning with transforms
When an anchor-positioned element is tethered against an anchor that has a transform (or is contained by an element with a transform), resolve anchor() and anchor-size() functions against the bounding box of the transformed anchor.
Tracking bug #382294252 | ChromeStatus.com entry | SpecCSS caret-shape property
The caret's shape in native applications is most commonly a vertical bar, an underscore, or a rectangular block. Additionally, the shape often varies depending on the input mode, for example, insert or replace. The CSS caret-shape property lets sites choose one of these shapes for the caret inside editable elements, or leave the choice to the browser. The recognized property values are auto, bar, block, and underscore.
Tracking bug #353713061 | ChromeStatus.com entry | SpecSVG2 CSS cascading
Align the Chrome implementation with the SVG2 specification for matching CSS rules in element trees.
Match selectors 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, for example, :hover, now start matching in instances.
Tracking bug #40550039 | ChromeStatus.com entry | SpecRespect 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 currently have overflowing content or are user scrollable. Developers can use overscroll-behavior to prevent scroll propagation on an overflow: hidden backdrop or an overflow: auto element without considering whether it will currently be overflowing.
ChromeStatus.com entry | SpecRespect 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. The browser respects this for mouse or touch scrolling, but keyboard scrolls ignored it. This change makes keyboard scrolling also respect overscroll-behavior.
Tracking bug #41378182 | ChromeStatus.com entry | Spec@scroll-state scrolled support
@scroll-state scrolled support
Lets developers style descendants of containers based on the most recent scrolling direction.
Tracking bug #414556050 | 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 position relative to one of its edges.
This syntax gives developers more flexible and responsive mechanisms to define the background image position, instead of using fixed values that need adaptation to the window or frame size.
This feature also applies to the -webkit-mask-position property to ensure web compatibility.
Tracking bug #40468636 | ChromeStatus.com entry | SpecView transitions waitUntil() method
View transitions waitUntil() method
View transitions automatically construct 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 most 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 a scroll timeline controls the animation, the subtree shouldn't be destroyed when the animations finish because scrolling back should 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 settles.
Tracking bug #346976175 | ChromeStatus.com entry | SpecDevice
XRVisibilityMaskChange
Adds an XRVisibilityMaskChange event that provides a list of vertices and a list of indices to represent the mesh of the visible portion of the user's viewport. This data can then limit the amount of the viewport drawn to, which improves performance. To better support this event, XRView objects are also given unique identifiers to allow easier pairing with the associated masks. This extends the core WebXR specification.
Tracking bug #450538226 | ChromeStatus.com entry | SpecDOM
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. This often eliminates the need for a separate JavaScript API call.
This addresses the long-standing problem of permission prompts triggering 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 enables a better prompt UX and, crucially, provides a recovery path for users who 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 evolved into the capability-specific element to provide a more tailored and powerful developer experience.
Tracking bug #435351699 | ChromeStatus.com entry | SpecGraphics
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.
Tracking bug #452662924 | ChromeStatus.com entry | SpecWebGPU: subgroup_id feature
WebGPU: subgroup_id feature
The subgroup_id and num_subgroups built-in values are available when the subgroups extension is enabled.
Tracking bug #454654255 | ChromeStatus.com entry | SpecJavaScript
Temporal in ECMA262
The Temporal API in ECMA262 is a new API that provides standard objects and functions for working with dates and times. Date has been a long-standing pain point in ECMAScript. This proposes Temporal, a global Object that acts as a top-level namespace (similar to Math), which brings a modern date and time API to the ECMAScript language.
Tracking bug #detail?id=11544 | ChromeStatus.com entry | SpecSupport ping, hreflang, type, and referrerPolicy for SVGAElement
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.
Tracking bug #40589293 | ChromeStatus.com entry | SpecMirroring of RTL MathML operators
Supports character-level and glyph-level mirroring when rendering MathML operators in right-to-left 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, for example, the clockwise contour integral.
Tracking bug #40120782 | ChromeStatus.com entry | SpecThe clipboardchange event
The clipboardchange event fires whenever a web app or any other system application changes the system clipboard contents. 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.
Tracking bug #41442253 | ChromeStatus.com entry | SpecPermissions
User-Agent Client Hints ch-ua-high-entropy-values permissions policy
User-Agent Client Hints ch-ua-high-entropy-values permissions policy
Adds support for a ch-ua-high-entropy-values permissions policy that enables a top-level site to restrict which documents can collect high-entropy client hints with the navigator.userAgentData.getHighEntropyValues() JavaScript API.
Restricting collection of high-entropy hints over HTTP is possible through existing per-client-hint permissions policies.
Tracking bug #385161047 | ChromeStatus.com entry | SpecPerformance
Performance and Event Timing: interactionCount
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 to them. This is useful for grouping related interactions based on common physical user inputs or gestures.
This feature adds a performance.interactionCount property, which is the total number of interactions that occurred on the page.
In particular, this feature is useful for computing the Interaction to Next Paint (INP) metric value. This 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 a long time ago but never shipped, is part of Interop 2025, and is available in other browsers.
Note: A more powerful performance.eventCounts map for specific events exists, but you can't accurately map event counts to interaction counts.
ChromeStatus.com entry | SpecUser input
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), should be the nearest ancestor still attached to the DOM.
The PEWG recently reached consensus on this behavior.
Chrome tracked a node even after it was 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. As per the new consensus, the event sequence implies a pointer movement from the "parent of A" to B.
Tracking bug #1147998 | ChromeStatus.com entry | SpecPointer 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.
Tracking bug #40290045 | ChromeStatus.com entry | SpecWebRTC
RTCDegradationPreference enum value maintain-framerate-and-resolution
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.
From the WebRTC MediaStreamTrack Content Hints specification:
Maintain framerate and resolution regardless of video quality. The user agent shouldn't prefer reducing the framerate or resolution for quality and performance reasons, but might drop frames before encoding if necessary not to overuse network and encoder resources.
Tracking bug #450044904 | ChromeStatus.com entry | SpecIsolated Web Apps (IWA)
Multicast Support for Direct Sockets API.
This feature lets Isolated Web Apps (IWAs) subscribe to multicast groups, receive User Datagram Protocol (UDP) packets from them, and specify additional parameters when sending UDP packets to multicast addresses.
ChromeStatus.com entry | SpecOrigin trials
Enhanced Canvas API TextMetrics
Enhanced Canvas API TextMetrics
Expands the TextMetrics Canvas API to support selection rectangles, bounding box queries, and glyph cluster-based operations.
This new functionality enables complex text editing applications with accurate selection, caret positioning, and hit testing. Additionally, cluster-based rendering facilitates sophisticated text effects, for example, independent character animations and styling.
Origin Trial | Tracking bug #341213359 | ChromeStatus.com entry | SpecContext-aware media elements
Context-aware media elements, are a declarative, user-activated control for accessing the starting and interacting with media streams.
This addresses the long-standing problem of permission prompts being 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 enables a much better prompt UX and, crucially, provides 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 capability-specific elements to provide a more tailored and powerful developer experience.
Origin Trial | Tracking bug #443013457 | ChromeStatus.com entry | SpecDeprecations and removals
Deprecate and remove: 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 Chrome's announcement that the current approach to third-party cookies will be maintained, Chrome plans to deprecate and remove the Private Aggregation API (along with certain other Privacy Sandbox APIs, 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.
ChromeStatus.com entry | SpecDeprecate and Remove: Shared Storage API
The Shared Storage API is a privacy-preserving web API that enables storage not partitioned by a first-party site.
Following Chrome's announcement that the current approach to third-party cookies will be maintained, Chrome plans to deprecate and remove the Shared Storage API (along with certain other Privacy Sandbox APIs, as outlined on the Privacy Sandbox feature status page).
Tracking bug #462465887 | ChromeStatus.com entry | SpecDeprecate and Remove Protected Audience
The Protected Audience API provides a method of interest-group advertising without third-party cookies or user tracking across sites.
Following Chrome's announcement that the current approach to third-party cookies will be maintained, Chrome plans to deprecate and remove the Protected Audience API (along with certain other Privacy Sandbox APIs, as outlined on the Privacy Sandbox feature status page).
ChromeStatus.com entry | SpecExternally loaded entities in XML parsing
Chrome synchronously fetches external XML entities or DTDs and incorporates them into parsing under specific circumstances. This document proposes removing this functionality.
Original source Report a problem
For example, http/tests/security/contentTypeOptions/xml-external-entity.xml shows how external entities can be defined in the trailing part of the DOCTYPE statement. These entities then 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, points to a DTD that contains additional entity definitions.
The parser passes up such external load requests.
According to the XML specification, non-validating processors are not required to read external entities.
Chrome plans to deprecate loading external entity definitions in XML documents that don't use XSLT.
Tracking bug #455813733 | ChromeStatus.com entry | Spec - Jan 7, 2026
- Date parsed from source:Jan 7, 2026
- First seen by Releasebot:Jan 9, 2026
What's New in Web GPU (Chrome 144)
Chrome’s WebGPU update adds WGSL extensions subgroup_id and uniform_buffer_standard_layout, improves Linux WebGPU support for Intel Gen12+ and boosts writeBuffer/writeTexture performance, plus Dawn updates and Android Kotlin bindings. A concise What’s New roundup shows shipped features.
WGSL subgroup_id extension
The WGSL language extension subgroup_id lets you use the following new built-in values in workgroups when the subgroups extension is enabled:
- subgroup_id: Provides the ID of an invocation's subgroup within the current workgroup.
- num_subgroups: Reports the number of subgroups present in the workgroup.
Previously, to index memory using subgroup invocation IDs, you had to reconstruct a subgroup ID (typically through atomic operations) to avoid overlapping memory accesses. You can now use subgroup_id to fill the other half of that equation. Because this functionality is not available on the D3D backend yet, it's emulated there. It should be safe to create an equivalence to local_invocation_index as subgroup_invocation_id + subgroup_size * subgroup_id. Note that there might be cases where subgroups are not full.
This language extension can be feature-detected using navigator.gpu.wgslLanguageFeatures. It's recommended to use a requires-directive to signal the potential for non-portability with requires subgroup_id; at the top of your WGSL shader code. See the following example and the intent to ship.WGSL uniform_buffer_standard_layout extension
The WGSL language extension uniform_buffer_standard_layout lets uniform buffers use the same memory layout constraints as storage buffers, which makes it easier to share data structures in both kinds of buffers. This means uniform buffers are no longer required to have 16-byte alignment on array elements, or to pad nested structure offsets to a multiple of 16 bytes.
This language extension can be feature-detected using navigator.gpu.wgslLanguageFeatures. It's recommended to use a requires-directive to signal the potential for non-portability with requires uniform_buffer_standard_layout; at the top of your WGSL shader code. See the following example and the intent to ship.WebGPU on Linux
The Chrome team is carefully rolling out WebGPU for Linux, starting with support for Intel Gen12+ GPUs but with a tentative plan to expand it to more devices (AMD, NVIDIA). This implementation uses an architecture where WebGPU uses Vulkan and the rest of Chromium stays on OpenGL, exercising existing well known good code paths. See issue 442791440.
Faster writeBuffer and writeTexture
writeBuffer() and writeTexture() have been optimized in Chrome, resulting in performance gains up to 2X better than the previous version, depending on the size of the data being transferred. This change affects all users of the Dawn Wire implementation as well. See issue 441900745.
Dawn updates
The Android GPU team has published the first alpha release of Kotlin bindings for WebGPU on Android available using Jetpack. The androidx.webgpu package gives Android developers access to a modern GPU API using Kotlin, bypassing the legacy issues of OpenGL or the complexity of Vulkan—an exciting development for the ecosystem!
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 144
- WGSL subgroup_id extension
- WGSL uniform_buffer_standard_layout extension
- WebGPU on Linux
- Faster writeBuffer and writeTexture
- Dawn updates
All of your release notes in one place
Join Releasebot and get updates from Google and hundreds of other software products.
- Jan 6, 2026
- Date parsed from source:Jan 6, 2026
- First seen by Releasebot:Jan 7, 2026
What's new in DevTools, Chrome 144
Chrome DevTools 2025 ships a new Request conditions panel with per‑request throttling, font-feature edits, and adopted stylesheets for easier debugging. It also introduces auto connection for the MCP server, AI assisted debugging, and a revamped Performance panel with real world data.
In Chrome 144 the team shipped a highly anticipated feature to the Chrome DevTools MCP server, the new Request conditions panel and improvements for debugging fonts and adopted stylesheets..
This concludes the remarkable list of features we shipped throughout 2025. Want to see if you missed any of them? Then check out the highlights following or browse through our past editions of What's new in DevTools.
Dev Tools MCP server updates
We landed various fixes for the DevTools MCP server and released v0.12.1. This version introduces a key new feature, auto connection, which enables you to re-use an existing browser session. With auto connection, you can start debugging yourself in Chrome, and then point DevTools MCP to the same Chrome instance to pick up where you left off.
Learn more about auto connection for DevTools MCP in the related blog post. See the public changelog on GitHub for the full list of changes and bugfixes.
Individual network request throttling
The Network request blocking panel has been renamed to Request conditions. Alongside blocking requests, this panel now also lets you throttle individual requests.
Open the panel from ⋮ > More Tools > Request Conditions. Toggle the Enable blocking and throttling checkbox to enable request blocking. Click the + button to add a new text pattern. Click the icon to discard all rules.
Learn how to throttle individual network requests in the updated docs.
Edit @font-face and @font-feature-values rules
@font-face and @font-feature-values are now shown in the Styles panel and can be edited from there.
Adopted stylesheets in the Elements panel
The Elements panel now shows adopted stylesheets under shadow roots and document roots. This makes it easier for those working with constructed stylesheets to find stylesheets affecting their elements and to debug styles, especially when they unexpectedly don't apply.
What was new in DevTools 2025
AI innovations
Starting with Console insights, AI innovations by now have become an integral part of Chrome DevTools with the AI assistance panel being the main hub for context-aware AI-assisted debugging. With Code suggestions in the Console and Sources panels and auto annotations from Gemini in your Performance traces, DevTools offers a comprehensive set of AI-powered tools to streamline your workflows.
- End-to-end styling fixes: Ask Gemini to fix CSS issues and, combined with Workspaces, save those changes directly back to your source files on disk.
- Ask about performance: You can now discuss a full performance trace with AI assistance, or deep-dive into any Performance insight, or use Gemini to annotate a trace.
- Visual debugging: The AI assistance panel became multimodal, letting you upload images or take screenshots to help Gemini understand and help you debug visual glitches.
Performance
We redesigned the Performance panel to make performance debugging less overwhelming and more actionable. For example, a recorded trace now comes with curated insights that help you identify bottlenecks faster and navigate traces faster. Other improvements include the following:
- Actionable insights: We introduced a robust set of Performance Insights, identifying specific issues like LCP by phase, Layout shift culprits, and Document request latency.
- Real-world context: We integrated Field data and CrUX data directly into the Performance panel, allowing you to validate lab results against real user experiences.
- Framework context: Angular v20 and React v19.2 are now using the Extensibility API. Understanding main thread bottlenecks becomes easier with a direct view of your component tree. Shoutout to our partnership with the Angular and React team!
- Improved collaboration: Sharing traces became easier with the ability to annotate traces and options to export resource content and source maps, ensuring a colleague or your future self have all the context they need.
Web Platform
DevTools kept pace with the evolving web platform, adding dedicated tooling for the latest CSS specifications while improving the developer experience for established features.
We added deep tracing for complex CSS variable chains, Baseline availability to property tooltips, and just recently introduced debugging support for complex entry animations using the @starting-style rule and a visual editor for the new display: masonry layout.
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 @ChromeDevTools.
- Leave comments on What's new in DevTools YouTube videos or DevTools Tips YouTube videos.
- Dec 5, 2025
- Date parsed from source:Dec 5, 2025
- First seen 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
- Date parsed from source:Dec 5, 2025
- First seen 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
- Date parsed from source:Dec 3, 2025
- First seen 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
- Date parsed from source:Dec 3, 2025
- First seen 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
- Date parsed from source:Dec 2, 2025
- First seen 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. - Dec 2, 2025
- Date parsed from source:Dec 2, 2025
- First seen 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 - Nov 19, 2025
- Date parsed from source:Nov 19, 2025
- First seen 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