Stable release date: July 28th, 2026
Unless otherwise noted, the following changes apply to Chrome 151 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS and UI
Animation accessor on animation and transition events
Adds a read-only animation attribute to the AnimationEvent and TransitionEvent interfaces. This attribute returns the associated Animation object that triggered the event.
Tracking bug #40929813 | ChromeStatus.com entry | Spec
CSS ruby-overhang property
Adds support for the ruby-overhang CSS property. The property accepts auto, spaces, or none keywords to control the overhang of ruby annotation text. Per the CSS Working Group specification, none is aliased to spaces, which lets text overhang only over whitespace and CJK punctuation. This prevents unnecessary layout gaps while preserving text readability.
Tracking bug #366873207 | ChromeStatus.com entry | Spec
Change the position-anchor initial value to normal
Changes the initial value of the position-anchor CSS property from none to normal to align with the specification and other browsers. The normal value behaves like none if the position-area CSS property is none, and otherwise behaves as auto.
No auto-rewind for AnimationTrigger play methods
When an animation associated with an AnimationTrigger has already run to completion, invoking the play, play-forwards, or play-backwards trigger actions will no longer cause the animation to restart or auto-rewind.
Tracking bug #519573765 | ChromeStatus.com entry | Spec
DOM and HTML
Declarative shadow DOM: shadowrootslotassignment attribute
Adds the shadowrootslotassignment attribute to the <template> element, which lets declarative shadow roots use manual slot assignment. Previously, this option was only available imperatively by using attachShadow({slotAssignment: "manual"}). The attribute accepts named (the default, preserving existing behavior) and manual, and is reflected by the shadowRootSlotAssignment property on HTMLTemplateElement.
Tracking bug #493315747 | ChromeStatus.com entry | Spec
XML parsing in Rust for non-XSLT scenarios
To improve browser security and protect against memory-related vulnerabilities, Chrome is updating its XML parsing engine to a memory-safe Rust implementation for common scenarios where XSLT is not required. This update eliminates potential memory corruption bugs while maintaining full compatibility with web specifications. The new parser handles DOMParser, XMLHttpRequest.responseXML, standalone SVG image documents, and external SVG image resources.
Tracking bug #466303347 | ChromeStatus.com entry | Spec
Performance and networking
Cross-origin redirect timing opt-in
Enables servers to opt in to having their cross-origin redirects measured by the destination origin of a navigation. This lets developers measure and optimize redirect latency for navigations under their control.
Tracking bug #521861828 | ChromeStatus.com entry | Spec
Navigation: Ignore duplicate navigations
Prevents an ongoing navigation from being unnecessarily canceled by a new, identical navigation initiated in rapid succession. This optimization improves performance and user experience by avoiding wasted network resources on duplicate requests caused by accidental double-clicks.
Tracking bug #366060351 | ChromeStatus.com entry | Spec
PerformanceSoftNavigation and InteractionContentfulPaint performance entries
Adds soft-navigation and interaction-contentful-paint entry types to the performance timeline to track interaction-driven performance in single-page applications (SPAs). The interaction-contentful-paint entry reports on new contentful paints within parts of the page modified by a user interaction, helping developers understand interaction loading latency even across asynchronous fetch requests. The soft-navigation entry reports same-document history state changes initiated by interactions, establishing a new time origin to attribute subsequent performance data to the active route rather than the initial document URL.
Tracking bug #1338390 | ChromeStatus.com entry | Spec
Permission policy merger: direct-sockets-private with local-network and loopback-network
Replaces the existing direct-sockets-private permission policy with more granular local-network and loopback-network permission policies. Isolated Web App manifests now require these specific policies to enable Direct Sockets connections to local or loopback network addresses, providing developers with more precise control over network access and making network requirements transparent in the manifest.
Speculation rules: form_submission field
Extends speculation rules syntax to let developers specify the form_submission field for prerendering. This directs the browser to prepare the prerender as a form submission so that it can be activated by real form submission navigations, such as search forms resulting in a GET request navigation.
Tracking bug #346555939 | ChromeStatus.com entry | Spec
textStream() for Response, Request, and Blob
Adds a textStream() method to interfaces that represent a byte stream (Request, Response, and Blob). This provides a convenient shorthand equivalent to piping the byte stream through a TextDecoderStream().
Tracking bug #514448226 | ChromeStatus.com entry | Spec
Media, Sensors, and Input
Capability element: <usermedia> MVP
Introduces the declarative <usermedia> capability element, a browser-controlled control for starting and interacting with media streams. By embedding a browser-controlled element in the page, a user click provides a clear, intentional signal before triggering permission prompts. This improves the prompt user experience and provides a straightforward recovery path for users who have previously denied the permission.
Tracking bug #443013457 | ChromeStatus.com entry | Spec
DeviceOrientation events permission request API
Lets web developers call DeviceOrientationEvent.requestPermission() and DeviceMotionEvent.requestPermission() to ask the user agent for device orientation and motion data to be shared with the page. These static methods return a promise that resolves to either granted or denied based on whether the user has allowed sensor data sharing.
Tracking bug #947112 | ChromeStatus.com entry | Spec
Wheel event momentum
Exposes a momentum boolean attribute on wheel events to identify events generated by native platform scrolling inertia. After a user lifts their finger from a trackpad following a fling interaction, native platforms continue firing wheel events to simulate inertia. The momentum attribute differentiates these simulated events from physical trackpad interactions, letting developers ignore fling events or customize rich fling effects.
Tracking bug #40704952 | ChromeStatus.com entry | Spec
Accessibility and Web Speech
aria-actions attribute
Adds support for the aria-actions attribute. For UI patterns where secondary actions are placed within composite interactive widgets, the aria-actions attribute lets developers expose these secondary action buttons directly to assistive technologies for improved discoverability.
Tracking bug #514751946 | ChromeStatus.com entry | Spec
Web Speech API: Unspoken punctuation
Adds the unspokenPunctuation boolean attribute to the SpeechRecognition interface of the Web Speech API. When enabled (true), this attribute directs the speech recognition engine to automatically infer and insert punctuation marks (such as periods, commas, and question marks) based on natural pauses, grammatical structure, and prosody, without requiring explicit spoken punctuation commands.
Tracking bug #514764702 | ChromeStatus.com entry | Spec
Artificial Intelligence
LanguageDetector support for Traditional vs. Simplified Chinese
Adds two new detectable language codes, zh-Hant (Traditional Chinese) and zh-Hans (Simplified Chinese), to the Language Detector API. Detection results that previously returned zh will now return one of these more specific values.
Tracking bug #519251262 | ChromeStatus.com entry | Spec
Origin trials
Algorithm updates in WebCrypto
Adds post-quantum cryptography algorithms and a common symmetric AEAD algorithm to the Web Cryptography API, enabling developers to access browser-provided implementations of NIST-standardized quantum-resistant algorithms: ML-KEM (768, 1024), ML-DSA (44, 65, 87), ChaCha20-Poly1305, and X-Wing.
Origin Trial | Tracking bug #450627017 | ChromeStatus.com entry | Spec
Declarative Performance Observer
Proposes a reliable, browser-resident telemetry system that reports performance metrics from navigation initiation to page termination using a declarative HTTP response header. This ensures telemetry data is captured even in scenarios where the request fails due to network errors or if the renderer process is terminated by the operating system.
Tracking bug #505208781 | ChromeStatus.com entry
Prefetch activation beacon
Introduces the on-prefetch-activation HTTP response header, enabling servers to specify a telemetry endpoint that the browser notifies whenever a prefetched resource is used for a navigation. This gives developers a reliable signal to measure the precision and performance impact of their prefetch strategies.
Origin Trial | Tracking bug #499814382 | ChromeStatus.com entry | Spec
WebRTC Data Channel: SCTP Negotiation Acceleration Protocol
Accelerates WebRTC Data Channel establishment by embedding Stream Control Transmission Protocol (SCTP) initialization parameters directly within the Session Description Protocol (SDP) offer/answer exchange. This reduces data channel setup time by up to two network round-trip times.
Origin Trial | Tracking bug #426480601 | ChromeStatus.com entry | Spec
Deprecations and removals
Chrome 151 removes support for macOS 12
Chrome 150 is the last release to support macOS 12. Starting with Chrome 151, macOS 13 or later is required. On Macs running macOS 12, Chrome will continue to function and display an infobar warning, but will no longer receive security or feature updates.
Remove [LegacyNoInterfaceObject] from FontFaceSet IDL
Removes [LegacyNoInterfaceObject] from the FontFaceSet IDL so that FontFaceSet is properly exposed as a global property on the window object. Because no constructor is defined in the IDL, calling new FontFaceSet() from JavaScript now throws a TypeError: Illegal constructor, matching the specification and aligning with Firefox and Safari.