Google Chrome Updates & Release Notes
122 updates curated from 123 sources by the Releasebot Team. Last updated: Jul 6, 2026
- Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 6, 2026
Chrome 150
Google Chrome releases Chrome 150 for desktop and Android with a broad wave of CSS, DOM, graphics, security, WebGPU, Web Speech, Web Apps, and WebRTC improvements, including new styling controls, smoother scrolling, PWA origin migration, and stronger worker isolation.
Unless otherwise noted, the following changes apply to Chrome 150 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS and UI
Accent Color and Accent Color Text system colors
The AccentColor and AccentColorText system colors can be used in CSS to access the system accent color specified on the user's device. This lets developers apply native-app-like styling to their web content in contexts where users expect OS theme integration, such as an installed web application. Users must be in an installed web application on the initial profile to see the system accent color rendered.
Allow optional rounding parameter for polygon()
Adds an optional corner-rounding parameter in the polygon() CSS shape function. Developers can specify a length value to round polygon corners without manually computing bezier curves.
Animatable zoom
The CSS zoom property is animatable and interpolates as a . Developers can transition and animate zoom to smoothly scale elements and their layout, complementing existing transform-based scaling.
CSS url() request modifiers
CSS url() functions accept optional request modifiers after the quoted URL string: cross-origin(), integrity(), and referrer-policy(). These modifiers control the fetch behavior of the referenced resource directly from CSS, without requiring changes to HTML markup or JavaScript. For example, background-image: url("image.png" cross-origin(anonymous)) fetches the image using CORS anonymous mode. This gives authors fine-grained control over cross-origin access, subresource integrity, and referrer policy for CSS-loaded resources including images, fonts, SVG references, and imported stylesheets.
CSS text-fit property
Scales the font size of text nodes to perfectly fit the width of its containing box. This property lets developers ensure headlines or dynamic content fill the available horizontal space without manual font-size calculations or complex JavaScript workarounds. It provides a robust, CSS-native solution for responsive typography that maintains visual alignment across different screen sizes and varying text lengths.
CSS background-clip: border-area
Implements the border-area value for the CSS background-clip property, as defined in CSS Backgrounds Level 4. background-clip: border-area clips an element's background to the area painted by its border strokes, taking border-width and border-style into account while ignoring transparency from border-color. This lets developers gradient borders without border-image. WebKit already ships this feature; this implementation brings Chromium to parity.
CSS image() function
The image() function lets authors generate a solid-color image from any color. Its syntax is: image() = image( )
CSS light-dark() with image values
Extends the CSS light-dark() function to accept image values (url(), image-set(), none) in author stylesheets, letting image properties like background-image, list-style-image, border-image-source, cursor, and content automatically switch between images based on the user's preferred color scheme. Previously this was only allowed in UA stylesheets. This aligns with the CSS Color 5 specification and matches Firefox's existing implementation.
Comma-separated container queries
Support multiple queries per @container rule. The @container rule applies if at least one of the queries matches. This makes it possible to have fallback queries for features which are not supported in all browsers.
Expose unprintable areas with CSS
Printers usually have a small area at each of the four edges of a sheet of paper that they are not capable of marking reliably, usually due to the printer's paper handling mechanism. The default page margins are expected to be bigger than these areas, but if authors set margins on their own, and even want to add @page margin boxes (for example, for custom headers and footers), they need a way of telling where it's safe to print and not. The CSS descriptor page-margin-safety can be used to steer clear of such unprintable areas.
flex-wrap: balance
flex-wrap: balance lets developers distribute content between flex-lines so that it appears more balanced (similar to text-wrap: balance).
named-feature() function for CSS @supports
The named-feature() function lets CSS @supports rules query for a small set of specific named features that are not possible to test for using other @supports mechanisms but which are considered highly valuable to test for.
overscroll-behavior: chain
overscroll-behavior now has four values: none, auto, contain and the new value chain. These values affect two independent effects: scroll propagation and local border effect (for example, overscroll stretch).
- none: no propagation, no local effect
- auto: propagation, local effect
- contain: no propagation, local effect
- chain: propagation, no local effect
Support path-length as a CSS property.
This change introduces a new CSS property, path-length, which maps to the existing SVG pathLength presentation attribute. It applies to SVG geometry elements that support pathLength (including , , , , , , and ).
DOM and HTML
Clone into all descendant selectedcontent elements
Several small changes are being made to edge cases of the selectedcontent element:
- When multiple selectedcontent elements are put in a select element at the same time, all of them will be kept up to date instead of only the first one in DOM order.
- Updating the selectedcontent element is deferred when it would run during insertion, removal, or moving steps to fix security issues. The update is deferred by using post-insertion steps or microtasks.
Focusgroup
Provides the ability to declaratively give composite widgets arrow key navigation, a guaranteed tab stop, and last-focused memory, replacing hand-coded roving tabindex scripts.
Out of order streaming
Use and processing instruction ranges (<?marker>, <?start>, and <?end>) to update existing parts of the document without JS.
Parse processing instructions in HTML
Processing instructions (syntax: <?target data>) are an existing DOM construct, exposed in XML, that represents node objects that are not elements but can have some semantic meaning for the processing of a document. Processing instructions are parsed by the HTML parser, and receive an attribute API similar to elements to mutate their data.
popover=hint behavior changes
This change implements a revised and simplified stacking model for the popover=hint attribute and its interactions with popover=auto. Previously, the interactions between these two types of popovers could be complex in some corner case situations (such as nesting auto popovers inside hint popovers), and could lead to unexpected behavior. Under the new model, opening a hint popover does not inadvertently close unrelated auto popovers. Hint popovers are only hidden when their ancestral auto popover is hidden, or when a new, unrelated auto popover is opened. Additionally, developers can safely nest an auto popover inside a hint popover; instead of throwing an exception or breaking the stack, the nested auto popover gracefully "downgrades" and behaves as a hint popover. This supports use cases such as placing a customizable-select within a popover=hint.
To further improve predictability and prevent complex state mutations, we are also tightening the behavior around opening and closing popovers from within the beforetoggle event. There were guards in place for some, but not all, of the possible cases before. This change revamps the mechanism used to detect these cases, so that it should more reliably throw InvalidStateErrors for all such cases. This ensures that popover state management remains stable and prevents looping reentrancy bugs.Programmatic scroll promises
This feature provides a reliable signal for the completion status of a programmatic smooth-scroll. All scroll methods in Element and Window return Promise objects that get resolved on scroll completion, and the resolved value indicates whether the scroll was interrupted or not.
Graphics and media
Disable SVG filters on plugins and iframes
Chrome 150 will prevent SVG filters from being applied to embedded plugins (for example, PDFs) and cross-origin or restricted iframes (for example, sandboxed iframes). When a plugin or iframe would be painted with an SVG filter effect, the effect tree is traversed to find the highest ancestor without SVG filters, and that effect is then applied instead.
WebGPU: Immediates
Adds a new immediate address space in WGSL and a setImmediateData() method on render pass, compute pass, and render bundle encoders that lets developers pass small amounts of frequently-updated data directly to shaders without creating GPU buffer objects or bind groups.
Security and Web Speech
Opaque origin for data: URLs
Chrome 150 updates how dedicated and shared Workers handle data: URLs. Rather than automatically inheriting the security origin of the script or page that created them, these workers are assigned a unique opaque origin.
This alignment with the worker HTML specification enhances security by isolating these workers from the creator's same-origin state, preventing them from accessing sensitive data using mechanisms like BroadcastChannel or same-origin storage. To maintain correct isolation boundaries, these workers still reside within the same storage partition (for example, by preserving the top-level site or nonce) as their creator.Web Speech API: On-Device Recognition Quality
Extends the SpeechRecognition interface by adding a quality property to SpeechRecognitionOptions. This lets developers specify the semantic capability required for on-device recognition (with processLocally: true).
The proposed quality enum supports three levels: command, dictation, and conversation. These map to increasing task complexity and hardware requirements. This lets developers determine if the local device can handle high-stakes use cases (like meeting transcription) or if they should fallback to cloud services.Web Apps
PWA origin migration
When a user installs a Progressive Web App (PWA), its identity and security context are tightly bound to its web origin, for example, app.example.com. This presents a significant challenge for developers who need to change their PWA's origin due to rebranding, domain restructuring, or technical re-architecture. Without origin migration, such a change forces users to manually uninstall the old app and reinstall the new one, leading to a disruptive experience and a potential increase in user loss rate. Chrome 150 introduces a mechanism for developers to seamlessly migrate an installed PWA to a new, same-site origin, preserving user trust and permissions.
The WebAppInstallForceList policy blocks migration. Since enterprise policies around web applications are primarily based on URLs and origins, there is a risk that a migration would bypass certain policies an administrator might have configured. No migration will be offered to the user when an app is force-installed by their enterprise administrator, and instead a banner will be shown explaining this to the user.Origin trials
Email Verification Protocol
The EVP (email verification protocol) helps users create, access and recover accounts by providing cryptographic proof of ownership seamlessly rather than email OTPs manually.
Speculative load measurement
Expose measurement data regarding speculative loads (preloads, prefetches and prerenders) as part of a newly exposed performance.getSpeculations() method. That would enable developers to measure the efficacy of various speculative loading strategies and adapt them accordingly.
WebRTC Diagnostic Logging API
API for WebRTC diagnostic logging.
This API lets an application opt in to diagnostic logging. These logs contain information about the WebRTC activity by the application and are useful for local debugging or to file bugs.
Logs can be optionally uploaded out of band to the browser vendor and can be used for diagnosing bugs. The application gets an ID that can be attached to a bug report, similar to crashes.
Diagnostic logs are enabled with an enterprise policy called WebRtcDiagnosticLogCollectionAllowedForOrigins.Deprecations and removals
There are no deprecations or removals in this release.
Original source - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 5, 2026
Chrome 150
Google Chrome ships a major June 2026 Stable update with broad CSS upgrades, safer popover and scroll behavior, new WebGPU and Speech APIs, PWA origin migration, and stronger security for workers, SVG filters, and data URLs.
Stable release date: June 30th, 2026
Unless otherwise noted, the following changes apply to Chrome 150 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
Want just the highlights? Check out New in Chrome 150.
CSS and UI
Accent Color and Accent Color Text system colors
The AccentColor and AccentColorText system colors can be used in CSS to access the system accent color specified on the user's device. This lets developers apply native-app-like styling to their web content in contexts where users expect OS theme integration, such as an installed web application. Users must be in an installed web application on the initial profile to see the system accent color rendered.
Tracking bug #40229450 | ChromeStatus.com entry | Spec
Allow optional rounding parameter for polygon()
Adds an optional corner-rounding parameter in the polygon() CSS shape function. Developers can specify a length value to round polygon corners without manually computing bezier curves.
Tracking bug #329302249 | ChromeStatus.com entry | Spec
Animatable zoom
The CSS zoom property is animatable and interpolates as a . Developers can transition and animate zoom to smoothly scale elements and their layout, complementing existing transform-based scaling.
Tracking bug #393810951 | ChromeStatus.com entry
CSS url() request modifiers
CSS url() functions accept optional request modifiers after the quoted URL string: cross-origin(), integrity(), and referrer-policy(). These modifiers control the fetch behavior of the referenced resource directly from CSS, without requiring changes to HTML markup or JavaScript. For example, background-image: url("image.png" cross-origin(anonymous)) fetches the image using CORS anonymous mode. This gives authors fine-grained control over cross-origin access, subresource integrity, and referrer policy for CSS-loaded resources including images, fonts, SVG references, and imported stylesheets.
Tracking bug #435625756 | ChromeStatus.com entry | Spec
CSS text-fit property
Scales the font size of text nodes to perfectly fit the width of its containing box. This property lets developers ensure headlines or dynamic content fill the available horizontal space without manual font-size calculations or complex JavaScript workarounds. It provides a robust, CSS-native solution for responsive typography that maintains visual alignment across different screen sizes and varying text lengths.
Tracking bug #417306102 | ChromeStatus.com entry | Spec
CSS background-clip: border-area
Implements the border-area value for the CSS background-clip property, as defined in CSS Backgrounds Level 4. background-clip: border-area clips an element's background to the area painted by its border strokes, taking border-width and border-style into account while ignoring transparency from border-color. This lets developers gradient borders without border-image. WebKit already ships this feature; this implementation brings Chromium to parity.
Tracking bug #329302543 | ChromeStatus.com entry | Spec
CSS image() function
The image() function lets authors generate a solid-color image from any color. Its syntax is: image() = image( )
Tracking bug #510426954 | ChromeStatus.com entry | Spec
CSS light-dark() with image values
Extends the CSS light-dark() function to accept image values (url(), image-set(), none) in author stylesheets, letting image properties like background-image, list-style-image, border-image-source, cursor, and content automatically switch between images based on the user's preferred color scheme. Previously this was only allowed in UA stylesheets. This aligns with the CSS Color 5 specification and matches Firefox's existing implementation.
Tracking bug #491829958 | ChromeStatus.com entry | Spec
Comma-separated container queries
Support multiple queries per @container rule. The @container rule applies if at least one of the queries matches. This makes it possible to have fallback queries for features which are not supported in all browsers.
Tracking bug #41491726 | ChromeStatus.com entry | Spec
Expose unprintable areas with CSS
Printers usually have a small area at each of the four edges of a sheet of paper that they are not capable of marking reliably, usually due to the printer's paper handling mechanism. The default page margins are expected to be bigger than these areas, but if authors set margins on their own, and even want to add @page margin boxes (for example, for custom headers and footers), they need a way of telling where it's safe to print and not. The CSS descriptor page-margin-safety can be used to steer clear of such unprintable areas.
Tracking bug #368070327 | ChromeStatus.com entry | Spec
flex-wrap: balance
flex-wrap: balance lets developers distribute content between flex-lines so that it appears more balanced (similar to text-wrap: balance).
Tracking bug #416755656 | ChromeStatus.com entry | Spec
named-feature() function for CSS @supports
The named-feature() function lets CSS @supports rules query for a small set of specific named features that are not possible to test for using other @supports mechanisms but which are considered highly valuable to test for.
Tracking bug #353715317 | ChromeStatus.com entry | Spec
overscroll-behavior: chain
overscroll-behavior now has four values: none, auto, contain and the new value chain. These values affect two independent effects: scroll propagation and local border effect (for example, overscroll stretch).
- none: no propagation, no local effect
- auto: propagation, local effect
- contain: no propagation, local effect
- chain: propagation, no local effect
Tracking bug #499018879 | ChromeStatus.com entry | Spec
Support path-length as a CSS property.
This change introduces a new CSS property, path-length, which maps to the existing SVG pathLength presentation attribute. It applies to SVG geometry elements that support pathLength (including , , , , , , and ).
Tracking bug #40670251 | ChromeStatus.com entry | Spec
DOM and HTML
Clone into all descendant selectedcontent elements
Several small changes are being made to edge cases of the selectedcontent element:
- When multiple selectedcontent elements are put in a select element at the same time, all of them will be kept up to date instead of only the first one in DOM order.
- Updating the selectedcontent element is deferred when it would run during insertion, removal, or moving steps to fix security issues. The update is deferred by using post-insertion steps or microtasks.
Tracking bug #458113204 | ChromeStatus.com entry | Spec
Focusgroup
Provides the ability to declaratively give composite widgets arrow key navigation, a guaranteed tab stop, and last-focused memory, replacing hand-coded roving tabindex scripts. Example:
<div focusgroup="toolbar wrap" aria-label="Formatting"> <button>Bold</button> <button>Italic</button> <button>Underline</button> </div>ChromeStatus.com entry | Spec
Out of order streaming
Use and processing instruction ranges (<?marker>, <?start>, and <?end>) to update existing parts of the document without JS.
Tracking bug #431374376 | ChromeStatus.com entry | Spec
Parse processing instructions in HTML
Processing instructions (syntax: <?target data>) are an existing DOM construct, exposed in XML, that represents node objects that are not elements but can have some semantic meaning for the processing of a document. Processing instructions are parsed by the HTML parser, and receive an attribute API similar to elements to mutate their data.
Tracking bug #481087638 | ChromeStatus.com entry | Spec
popover=hint behavior changes
This change implements a revised and simplified stacking model for the popover=hint attribute and its interactions with popover=auto. Previously, the interactions between these two types of popovers could be complex in some corner case situations (such as nesting auto popovers inside hint popovers), and could lead to unexpected behavior. Under the new model, opening a hint popover does not inadvertently close unrelated auto popovers. Hint popovers are only hidden when their ancestral auto popover is hidden, or when a new, unrelated auto popover is opened. Additionally, developers can safely nest an auto popover inside a hint popover; instead of throwing an exception or breaking the stack, the nested auto popover gracefully "downgrades" and behaves as a hint popover. This supports use cases such as placing a customizable-select within a popover=hint. To further improve predictability and prevent complex state mutations, we are also tightening the behavior around opening and closing popovers from within the beforetoggle event. There were guards in place for some, but not all, of the possible cases before. This change revamps the mechanism used to detect these cases, so that it should more reliably throw InvalidStateErrors for all such cases. This ensures that popover state management remains stable and prevents looping reentrancy bugs.
Tracking bug #499019927 | ChromeStatus.com entry | Spec
Programmatic scroll promises
This feature provides a reliable signal for the completion status of a programmatic smooth-scroll. All scroll methods in Element and Window return Promise objects that get resolved on scroll completion, and the resolved value indicates whether the scroll was interrupted or not.
Tracking bug #41406914 | ChromeStatus.com entry | Spec
Graphics and media
Disable SVG filters on plugins and iframes
Chrome 150 will prevent SVG filters from being applied to embedded plugins (for example, PDFs) and cross-origin or restricted iframes (for example, sandboxed iframes). When a plugin or iframe would be painted with an SVG filter effect, the effect tree is traversed to find the highest ancestor without SVG filters, and that effect is then applied instead.
Tracking bug #476646486 | ChromeStatus.com entry | Spec
WebGPU: Immediates
Adds a new immediate address space in WGSL and a setImmediateData() method on render pass, compute pass, and render bundle encoders that lets developers pass small amounts of frequently-updated data directly to shaders without creating GPU buffer objects or bind groups.
Tracking bug #366291600 | ChromeStatus.com entry | Spec
Security and Web Speech
Opaque origin for data: URLs
Chrome 150 updates how dedicated and shared Workers handle data: URLs. Rather than automatically inheriting the security origin of the script or page that created them, these workers are assigned a unique opaque origin. This alignment with the worker HTML specification enhances security by isolating these workers from the creator's same-origin state, preventing them from accessing sensitive data using mechanisms like BroadcastChannel or same-origin storage. To maintain correct isolation boundaries, these workers still reside within the same storage partition (for example, by preserving the top-level site or nonce) as their creator.
Tracking bug #40051700 | ChromeStatus.com entry | Spec
Web Speech API: On-Device Recognition Quality
Extends the SpeechRecognition interface by adding a quality property to SpeechRecognitionOptions. This lets developers specify the semantic capability required for on-device recognition (with processLocally: true). The proposed quality enum supports three levels: command, dictation, and conversation. These map to increasing task complexity and hardware requirements. This lets developers determine if the local device can handle high-stakes use cases (like meeting transcription) or if they should fallback to cloud services.
Tracking bug #476168420 | ChromeStatus.com entry | Spec
Web Apps
PWA origin migration
When a user installs a Progressive Web App (PWA), its identity and security context are tightly bound to its web origin, for example, app.example.com. This presents a significant challenge for developers who need to change their PWA's origin due to rebranding, domain restructuring, or technical re-architecture. Without origin migration, such a change forces users to manually uninstall the old app and reinstall the new one, leading to a disruptive experience and a potential increase in user loss rate. Chrome 150 introduces a mechanism for developers to seamlessly migrate an installed PWA to a new, same-site origin, preserving user trust and permissions. The WebAppInstallForceList policy blocks migration. Since enterprise policies around web applications are primarily based on URLs and origins, there is a risk that a migration would bypass certain policies an administrator might have configured. No migration will be offered to the user when an app is force-installed by their enterprise administrator, and instead a banner will be shown explaining this to the user.
Tracking bug #396504527 | ChromeStatus.com entry | Spec
Origin trials
Email Verification Protocol
The EVP (email verification protocol) helps users create, access and recover accounts by providing cryptographic proof of ownership seamlessly rather than email OTPs manually.
Origin Trial | ChromeStatus.com entry | Spec
Speculative load measurement
Expose measurement data regarding speculative loads (preloads, prefetches and prerenders) as part of a newly exposed performance.getSpeculations() method. That would enable developers to measure the efficacy of various speculative loading strategies and adapt them accordingly.
Origin Trial | Tracking bug #481590676 | ChromeStatus.com entry
WebRTC Diagnostic Logging API
API for WebRTC diagnostic logging.
This API lets an application opt in to diagnostic logging. These logs contain information about the WebRTC activity by the application and are useful for local debugging or to file bugs. Logs can be optionally uploaded out of band to the browser vendor and can be used for diagnosing bugs. The application gets an ID that can be attached to a bug report, similar to crashes. Diagnostic logs are enabled with an enterprise policy called WebRtcDiagnosticLogCollectionAllowedForOrigins.
Origin Trial | Tracking bug #481412281 | ChromeStatus.com entry | Spec
Deprecations and removals
There are no deprecations or removals in this release.
Original source All of your release notes in one feed
Join Releasebot and get updates from Google and hundreds of other software products.
- Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Chrome 150
Google Chrome releases a major platform update with broad CSS, DOM, graphics, security, WebGPU, Web Speech, WebRTC, and PWA enhancements. Highlights include new accent color and text-fit styling, smarter popovers and scroll promises, PWA origin migration, and stronger worker isolation.
CSS and UI
Accent Color and Accent Color Text system colors
The AccentColor and AccentColorText system colors can be used in CSS to access the system accent color specified on the user's device. This lets developers apply native-app-like styling to their web content in contexts where users expect OS theme integration, such as an installed web application. Users must be in an installed web application on the initial profile to see the system accent color rendered.
Allow optional rounding parameter for polygon()
Adds an optional corner-rounding parameter in the polygon() CSS shape function. Developers can specify a length value to round polygon corners without manually computing bezier curves.
Animatable zoom
The CSS zoom property is animatable and interpolates as a . Developers can transition and animate zoom to smoothly scale elements and their layout, complementing existing transform-based scaling.
CSS url() request modifiers
CSS url() functions accept optional request modifiers after the quoted URL string: cross-origin(), integrity(), and referrer-policy(). These modifiers control the fetch behavior of the referenced resource directly from CSS, without requiring changes to HTML markup or JavaScript. For example, background-image: url("image.png" cross-origin(anonymous)) fetches the image using CORS anonymous mode. This gives authors fine-grained control over cross-origin access, subresource integrity, and referrer policy for CSS-loaded resources including images, fonts, SVG references, and imported stylesheets.
CSS text-fit property
Scales the font size of text nodes to perfectly fit the width of its containing box. This property lets developers ensure headlines or dynamic content fill the available horizontal space without manual font-size calculations or complex JavaScript workarounds. It provides a robust, CSS-native solution for responsive typography that maintains visual alignment across different screen sizes and varying text lengths.
CSS background-clip: border-area
Implements the border-area value for the CSS background-clip property, as defined in CSS Backgrounds Level 4. background-clip: border-area clips an element's background to the area painted by its border strokes, taking border-width and border-style into account while ignoring transparency from border-color. This lets developers gradient borders without border-image. WebKit already ships this feature; this implementation brings Chromium to parity.
CSS image() function
The image() function lets authors generate a solid-color image from any color. Its syntax is: image() = image( )
CSS light-dark() with image values
Extends the CSS light-dark() function to accept image values (url(), image-set(), none) in author stylesheets, letting image properties like background-image, list-style-image, border-image-source, cursor, and content automatically switch between images based on the user's preferred color scheme. Previously this was only allowed in UA stylesheets. This aligns with the CSS Color 5 specification and matches Firefox's existing implementation.
Comma-separated container queries
Support multiple queries per @container rule. The @container rule applies if at least one of the queries matches. This makes it possible to have fallback queries for features which are not supported in all browsers.
Expose unprintable areas with CSS
Printers usually have a small area at each of the four edges of a sheet of paper that they are not capable of marking reliably, usually due to the printer's paper handling mechanism. The default page margins are expected to be bigger than these areas, but if authors set margins on their own, and even want to add @page margin boxes (for example, for custom headers and footers), they need a way of telling where it's safe to print and not. The CSS descriptor page-margin-safety can be used to steer clear of such unprintable areas.
flex-wrap: balance
flex-wrap: balance lets developers distribute content between flex-lines so that it appears more balanced (similar to text-wrap: balance).
named-feature() function for CSS @supports
The named-feature() function lets CSS @supports rules query for a small set of specific named features that are not possible to test for using other @supports mechanisms but which are considered highly valuable to test for.
overscroll-behavior: chain
overscroll-behavior now has four values: none, auto, contain, and the new value chain. These values affect two independent effects: scroll propagation and local border effect (for example, overscroll stretch).
- none: no propagation, no local effect
- auto: propagation, local effect
- contain: no propagation, local effect
- chain: propagation, no local effect
Support path-length as a CSS property.
This change introduces a new CSS property, path-length, which maps to the existing SVG pathLength presentation attribute. It applies to SVG geometry elements that support pathLength (including , , , , , , and ).
DOM and HTML
Clone into all descendant selectedcontent elements
Several small changes are being made to edge cases of the selectedcontent element:
- When multiple selectedcontent elements are put in a select element at the same time, all of them will be kept up to date instead of only the first one in DOM order.
- Updating the selectedcontent element is deferred when it would run during insertion, removal, or moving steps to fix security issues. The update is deferred by using post-insertion steps or microtasks.
Focusgroup
Provides the ability to declaratively give composite widgets arrow key navigation, a guaranteed tab stop, and last-focused memory, replacing hand-coded roving tabindex scripts.
Out of order streaming
Use and processing instruction ranges (<?marker>, <?start>, and <?end>) to update existing parts of the document without JS.
Parse processing instructions in HTML
Processing instructions (syntax: <?target data>) are an existing DOM construct, exposed in XML, that represents node objects that are not elements but can have some semantic meaning for the processing of a document. Processing instructions are parsed by the HTML parser, and receive an attribute API similar to elements to mutate their data.
popover=hint behavior changes
This change implements a revised and simplified stacking model for the popover=hint attribute and its interactions with popover=auto. Previously, the interactions between these two types of popovers could be complex in some corner case situations (such as nesting auto popovers inside hint popovers), and could lead to unexpected behavior. Under the new model, opening a hint popover does not inadvertently close unrelated auto popovers. Hint popovers are only hidden when their ancestral auto popover is hidden, or when a new, unrelated auto popover is opened. Additionally, developers can safely nest an auto popover inside a hint popover; instead of throwing an exception or breaking the stack, the nested auto popover gracefully "downgrades" and behaves as a hint popover. This supports use cases such as placing a customizable-select within a popover=hint.
To further improve predictability and prevent complex state mutations, we are also tightening the behavior around opening and closing popovers from within the beforetoggle event. There were guards in place for some, but not all, of the possible cases before. This change revamps the mechanism used to detect these cases, so that it should more reliably throw InvalidStateErrors for all such cases. This ensures that popover state management remains stable and prevents looping reentrancy bugs.
Programmatic scroll promises
This feature provides a reliable signal for the completion status of a programmatic smooth-scroll. All scroll methods in Element and Window return Promise objects that get resolved on scroll completion, and the resolved value indicates whether the scroll was interrupted or not.
Graphics and media
Disable SVG filters on plugins and iframes
Chrome 150 will prevent SVG filters from being applied to embedded plugins (for example, PDFs) and cross-origin or restricted iframes (for example, sandboxed iframes). When a plugin or iframe would be painted with an SVG filter effect, the effect tree is traversed to find the highest ancestor without SVG filters, and that effect is then applied instead.
WebGPU: Immediates
Adds a new immediate address space in WGSL and a setImmediateData() method on render pass, compute pass, and render bundle encoders that lets developers pass small amounts of frequently-updated data directly to shaders without creating GPU buffer objects or bind groups.
Security and Web Speech
Opaque origin for data: URLs
Chrome 150 updates how dedicated and shared Workers handle data: URLs. Rather than automatically inheriting the security origin of the script or page that created them, these workers are assigned a unique opaque origin.
This alignment with the worker HTML specification enhances security by isolating these workers from the creator's same-origin state, preventing them from accessing sensitive data using mechanisms like BroadcastChannel or same-origin storage. To maintain correct isolation boundaries, these workers still reside within the same storage partition (for example, by preserving the top-level site or nonce) as their creator.
Web Speech API: On-Device Recognition Quality
Extends the SpeechRecognition interface by adding a quality property to SpeechRecognitionOptions. This lets developers specify the semantic capability required for on-device recognition (with processLocally: true).
The proposed quality enum supports three levels: command, dictation, and conversation. These map to increasing task complexity and hardware requirements. This lets developers determine if the local device can handle high-stakes use cases (like meeting transcription) or if they should fallback to cloud services.
Web Apps
PWA origin migration
When a user installs a Progressive Web App (PWA), its identity and security context are tightly bound to its web origin, for example, app.example.com. This presents a significant challenge for developers who need to change their PWA's origin due to rebranding, domain restructuring, or technical re-architecture. Without origin migration, such a change forces users to manually uninstall the old app and reinstall the new one, leading to a disruptive experience and a potential increase in user loss rate. Chrome 150 introduces a mechanism for developers to seamlessly migrate an installed PWA to a new, same-site origin, preserving user trust and permissions.
The WebAppInstallForceList policy blocks migration. Since enterprise policies around web applications are primarily based on URLs and origins, there is a risk that a migration would bypass certain policies an administrator might have configured. No migration will be offered to the user when an app is force-installed by their enterprise administrator, and instead a banner will be shown explaining this to the user.
Origin trials
Email Verification Protocol
The EVP (email verification protocol) helps users create, access and recover accounts by providing cryptographic proof of ownership seamlessly rather than email OTPs manually.
Speculative load measurement
Expose measurement data regarding speculative loads (preloads, prefetches and prerenders) as part of a newly exposed performance.getSpeculations() method. That would enable developers to measure the efficacy of various speculative loading strategies and adapt them accordingly.
WebRTC Diagnostic Logging API
API for WebRTC diagnostic logging. This API lets an application opt in to diagnostic logging. These logs contain information about the WebRTC activity by the application and are useful for local debugging or to file bugs.
Logs can be optionally uploaded out of band to the browser vendor and can be used for diagnosing bugs. The application gets an ID that can be attached to a bug report, similar to crashes.
Diagnostic logs are enabled with an enterprise policy called WebRtcDiagnosticLogCollectionAllowedForOrigins.
Deprecations and removals
There are no deprecations or removals in this release.
Original source - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jun 30, 2026
Chrome 150
Google Chrome ships Chrome 150 with a broad set of CSS, DOM, WebGPU, Web Speech, PWA, and security updates, including new accent color and text-fit support, popover and scroll improvements, opaque data: URL workers, and PWA origin migration.
Unless otherwise noted, the following changes apply to Chrome 150 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS and UI
Accent Color and Accent Color Text system colors
The AccentColor and AccentColorText system colors can be used in CSS to access the system accent color specified on the user's device. This lets developers apply native-app-like styling to their web content in contexts where users expect OS theme integration, such as an installed web application. Users must be in an installed web application on the initial profile to see the system accent color rendered.
Allow optional rounding parameter for polygon()
Adds an optional corner-rounding parameter in the polygon() CSS shape function. Developers can specify a length value to round polygon corners without manually computing bezier curves.
Animatable zoom
The CSS zoom property is animatable and interpolates as a . Developers can transition and animate zoom to smoothly scale elements and their layout, complementing existing transform-based scaling.
CSS url() request modifiers
CSS url() functions accept optional request modifiers after the quoted URL string: cross-origin(), integrity(), and referrer-policy(). These modifiers control the fetch behavior of the referenced resource directly from CSS, without requiring changes to HTML markup or JavaScript. For example, background-image: url("image.png" cross-origin(anonymous)) fetches the image using CORS anonymous mode. This gives authors fine-grained control over cross-origin access, subresource integrity, and referrer policy for CSS-loaded resources including images, fonts, SVG references, and imported stylesheets.
CSS text-fit property
Scales the font size of text nodes to perfectly fit the width of its containing box. This property lets developers ensure headlines or dynamic content fill the available horizontal space without manual font-size calculations or complex JavaScript workarounds. It provides a robust, CSS-native solution for responsive typography that maintains visual alignment across different screen sizes and varying text lengths.
CSS background-clip: border-area
Implements the border-area value for the CSS background-clip property, as defined in CSS Backgrounds Level 4. background-clip: border-area clips an element's background to the area painted by its border strokes, taking border-width and border-style into account while ignoring transparency from border-color. This lets developers gradient borders without border-image. WebKit already ships this feature; this implementation brings Chromium to parity.
CSS image() function
The image() function lets authors generate a solid-color image from any color. Its syntax is: image() = image( )
CSS light-dark() with image values
Extends the CSS light-dark() function to accept image values (url(), image-set(), none) in author stylesheets, letting image properties like background-image, list-style-image, border-image-source, cursor, and content automatically switch between images based on the user's preferred color scheme. Previously this was only allowed in UA stylesheets. This aligns with the CSS Color 5 specification and matches Firefox's existing implementation.
Comma-separated container queries
Support multiple queries per @container rule. The @container rule applies if at least one of the queries matches. This makes it possible to have fallback queries for features which are not supported in all browsers.
Expose unprintable areas with CSS
Printers usually have a small area at each of the four edges of a sheet of paper that they are not capable of marking reliably, usually due to the printer's paper handling mechanism. The default page margins are expected to be bigger than these areas, but if authors set margins on their own, and even want to add @page margin boxes (for example, for custom headers and footers), they need a way of telling where it's safe to print and not. The CSS descriptor page-margin-safety can be used to steer clear of such unprintable areas.
flex-wrap: balance
flex-wrap: balance lets developers distribute content between flex-lines so that it appears more balanced (similar to text-wrap: balance).
named-feature() function for CSS @supports
The named-feature() function lets CSS @supports rules query for a small set of specific named features that are not possible to test for using other @supports mechanisms but which are considered highly valuable to test for.
overscroll-behavior: chain
overscroll-behavior now has four values: none, auto, contain and the new value chain. These values affect two independent effects: scroll propagation and local border effect (for example, overscroll stretch).
- none: no propagation, no local effect
- auto: propagation, local effect
- contain: no propagation, local effect
- chain: propagation, no local effect
Support path-length as a CSS property.
This change introduces a new CSS property, path-length, which maps to the existing SVG pathLength presentation attribute. It applies to SVG geometry elements that support pathLength (including , , , , , , and ).
DOM and HTML
Clone into all descendant selectedcontent elements
Several small changes are being made to edge cases of the selectedcontent element:
- When multiple selectedcontent elements are put in a select element at the same time, all of them will be kept up to date instead of only the first one in DOM order.
- Updating the selectedcontent element is deferred when it would run during insertion, removal, or moving steps to fix security issues. The update is deferred by using post-insertion steps or microtasks.
Focusgroup
Provides the ability to declaratively give composite widgets arrow key navigation, a guaranteed tab stop, and last-focused memory, replacing hand-coded roving tabindex scripts.
Out of order streaming
Use and processing instruction ranges (<?marker>, <?start>, and <?end>) to update existing parts of the document without JS.
Parse processing instructions in HTML
Processing instructions (syntax: <?target data>) are an existing DOM construct, exposed in XML, that represents node objects that are not elements but can have some semantic meaning for the processing of a document. Processing instructions are parsed by the HTML parser, and receive an attribute API similar to elements to mutate their data.
popover=hint behavior changes
This change implements a revised and simplified stacking model for the popover=hint attribute and its interactions with popover=auto. Previously, the interactions between these two types of popovers could be complex in some corner case situations (such as nesting auto popovers inside hint popovers), and could lead to unexpected behavior. Under the new model, opening a hint popover does not inadvertently close unrelated auto popovers. Hint popovers are only hidden when their ancestral auto popover is hidden, or when a new, unrelated auto popover is opened. Additionally, developers can safely nest an auto popover inside a hint popover; instead of throwing an exception or breaking the stack, the nested auto popover gracefully "downgrades" and behaves as a hint popover. This supports use cases such as placing a customizable-select within a popover=hint.
To further improve predictability and prevent complex state mutations, we are also tightening the behavior around opening and closing popovers from within the beforetoggle event. There were guards in place for some, but not all, of the possible cases before. This change revamps the mechanism used to detect these cases, so that it should more reliably throw InvalidStateErrors for all such cases. This ensures that popover state management remains stable and prevents looping reentrancy bugs.
Programmatic scroll promises
This feature provides a reliable signal for the completion status of a programmatic smooth-scroll. All scroll methods in Element and Window return Promise objects that get resolved on scroll completion, and the resolved value indicates whether the scroll was interrupted or not.
Graphics and media
Disable SVG filters on plugins and iframes
Chrome 150 will prevent SVG filters from being applied to embedded plugins (for example, PDFs) and cross-origin or restricted iframes (for example, sandboxed iframes). When a plugin or iframe would be painted with an SVG filter effect, the effect tree is traversed to find the highest ancestor without SVG filters, and that effect is then applied instead.
WebGPU: Immediates
Adds a new immediate address space in WGSL and a setImmediateData() method on render pass, compute pass, and render bundle encoders that lets developers pass small amounts of frequently-updated data directly to shaders without creating GPU buffer objects or bind groups.
Security and Web Speech
Opaque origin for data: URLs
Chrome 150 updates how dedicated and shared Workers handle data: URLs. Rather than automatically inheriting the security origin of the script or page that created them, these workers are assigned a unique opaque origin.
This alignment with the worker HTML specification enhances security by isolating these workers from the creator's same-origin state, preventing them from accessing sensitive data using mechanisms like BroadcastChannel or same-origin storage. To maintain correct isolation boundaries, these workers still reside within the same storage partition (for example, by preserving the top-level site or nonce) as their creator.
Web Speech API: On-Device Recognition Quality
Extends the SpeechRecognition interface by adding a quality property to SpeechRecognitionOptions. This lets developers specify the semantic capability required for on-device recognition (with processLocally: true).
The proposed quality enum supports three levels: command, dictation, and conversation. These map to increasing task complexity and hardware requirements. This lets developers determine if the local device can handle high-stakes use cases (like meeting transcription) or if they should fallback to cloud services.
Web Apps
PWA origin migration
When a user installs a Progressive Web App (PWA), its identity and security context are tightly bound to its web origin, for example, app.example.com. This presents a significant challenge for developers who need to change their PWA's origin due to rebranding, domain restructuring, or technical re-architecture. Without origin migration, such a change forces users to manually uninstall the old app and reinstall the new one, leading to a disruptive experience and a potential increase in user loss rate. Chrome 150 introduces a mechanism for developers to seamlessly migrate an installed PWA to a new, same-site origin, preserving user trust and permissions.
The WebAppInstallForceList policy blocks migration. Since enterprise policies around web applications are primarily based on URLs and origins, there is a risk that a migration would bypass certain policies an administrator might have configured. No migration will be offered to the user when an app is force-installed by their enterprise administrator, and instead a banner will be shown explaining this to the user.
Origin trials
Email Verification Protocol
The EVP (email verification protocol) helps users create, access and recover accounts by providing cryptographic proof of ownership seamlessly rather than email OTPs manually.
Speculative load measurement
Expose measurement data regarding speculative loads (preloads, prefetches and prerenders) as part of a newly exposed performance.getSpeculations() method. That would enable developers to measure the efficacy of various speculative loading strategies and adapt them accordingly.
WebRTC Diagnostic Logging API
API for WebRTC diagnostic logging. This API lets an application opt in to diagnostic logging. These logs contain information about the WebRTC activity by the application and are useful for local debugging or to file bugs.
Logs can be optionally uploaded out of band to the browser vendor and can be used for diagnosing bugs. The application gets an ID that can be attached to a bug report, similar to crashes.
Diagnostic logs are enabled with an enterprise policy called WebRtcDiagnosticLogCollectionAllowedForOrigins.
Deprecations and removals
There are no deprecations or removals in this release.
Original source - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jun 30, 2026
What's new in Dev Tools (Chrome 150)
Google Chrome releases Chrome 150 with stronger DevTools for agents, richer AI assistance widgets, and full editing support for CSS @container and @function rules. It also improves debugging, tightens security and cross-origin protections, and adds accessibility and performance fixes.
Chrome 150 brings improved memory debugging to DevTools for agents, enhances AI assistance with more widgets, and introduces full editing capabilities for CSS @container and @function rules.
Dev Tools for agents
Across recent releases up to v1.4.0, Chrome DevTools for agents has significantly expanded its agentic browser automation and debugging capabilities.
Key features and improvements since the last release include:
- Memory debugging suite (--experimentalMemory): Agents can now capture and analyze V8 heap snapshots directly to diagnose JavaScript memory leaks and analyze object retention hierarchies.
- Chrome extensions management (--categoryExtensions): Agents can manage extension lifecycles (install, uninstall, reload, list) and capture background service worker console logs for diagnostics.
- Bundled agent skills: The skills/ directory is now published directly in the npm package distribution, enabling MCP client agents to automatically discover and execute specialized browsing and debugging workflows.
- Token and output optimizations: Capping screenshot dimensions at the source reduces token consumption, and experimental TOON (Token-Oriented Object Notation) support optimizes structured data formatting.
- Enhanced navigation and context: list_pages now includes page titles alongside URLs and target IDs for improved multi-tab context selection, while allowedUrlPattern and blockedUrlPattern configuration options enforce strict browsing scope security.
For the most recent updates around DevTools for agents, and to contribute, visit the GitHub repository.
Deeper insights in AI assistance
The AI assistance panel continues to evolve, providing more detail in Agent walkthroughs. Nine additional widgets now feature data from the Lighthouse, Network, Sources and Performance panels. The widgets help you better understand the data used by Gemini when calling the agent tools to retrieve performance events, resource content, network requests and more.
Chromium issues: 460763995
Full editing support for more CSS at-rules
The Styles tab in the Elements panel brings new authoring capabilities for modern CSS features:
- In-place @container rule editing: You can now directly edit container names and query conditions in CSS @container rules, allowing seamless experimentation with responsive container query designs.
- CSS @function rule editing: Added full editing support for custom CSS @function rules.
- @counter-style rule editing: Added code completion for list-style-type properties, linking them directly to their corresponding @counter-style definitions.
- Collapse non-contributing rules: A new preference setting lets you collapse non-contributing CSS style rules, keeping the Styles pane focused strictly on active styles.
Chromium issues: 507611251, 41491726, 480080406, 351662727, 514846131
De-duplicated breakpoints and recursive source map support in Sources
The Sources panel features improved debugging accuracy across complex modern build pipelines:
- Logical breakpoint de-duplication: Breakpoint markers in the gutter are now de-duplicated across code-split bundles and SSR/client compiled templates using closest resolved location mapping. This prevents duplicate breakpoint indicators when debugging code shared across multiple chunks or environments.
- Recursive EvalOrigin and nested source maps: The debugger now supports recursive EvalOrigin structures and nested translation chains across source maps, ensuring accurate stack traces and stepping behavior in multi-stage compilation workflows.
- Go to line keyboard shortcut: Added ALT + G as an additional keyboard shortcut for "Go to line" navigation in the editor, to avoid conflicts with the new Gemini in Chrome shortcut.
- Import attributes formatting: Updated the underlying Acorn parser to support pretty-print formatting for standard JavaScript import attributes syntax.
Chromium issues: 493674242, 485142682, 480172712, 491167992
Security and cross-origin hardening across DevTools
Like many other software products, we recently saw a jump in security reports, many of which were found with the help of AI. The team is constantly reviewing and fixing these issues to keep DevTools safe:
- Self-XSS protections for Live Expressions: Added self-XSS warning dialogs and protection mechanisms when creating Live Expressions in the Console.
- Recorder navigation allowlists and replay verification: The Recorder panel now enforces strict navigation allowlists to prevent navigating to high-privilege pages, alongside strict extension origin verification within replay sections.
- Extension network override restrictions: Network overrides managed by extensions now strictly enforce runtime_blocked_hosts host policies.
- Safe @font-face construction: Refactored @font-face rule generation using the CSSStyleSheet API and safe URL stringification to prevent CSS injection through data URLs.
Other highlights
A collection of smaller improvements and bug fixes in this release:
- Performance: Fixed TraceTree transfer size inflation for cached network requests by forcing transfer size to 0 bytes on identified cache hits.
- Performance: Updated performance formatters to support optional Chrome UX Report (CrUX) deviceScope field data.
- Performance: Enabled horizontal scrolling in Call Tree tables to prevent ellipsis truncation on long file URLs.
- Performance: Fixed broken re-rendering and DOM state corruption in the Insights sidebar across multiple trace files.
- Performance: Migrated timeline invalidation tracking and debug mode settings from experimental flags to standard DevTools settings.
- Network: Reverted incorrect column renaming to restore the Has overrides column and fixed sorting logic for header and content overrides.
- Network: Fixed CSS attr() styling in Server-Timing waterfall bars so per-row generated colors render properly.
- Network: Fixed Copy as cURL command generation for nameless cookies.
- Application: Connected local and session storage items in the Application panel using the new StorageAgent infrastructure.
- Application: Fixed Speculative loads status precedence so URLs that succeed both prefetch and prerender display accurately as "prerendered".
- Application: Surfaced byte-exact value tooltips across columns in Heap Snapshot views.
- Issues: Surfaced the BackUINavigationWouldSkipAd issue type whenever back navigation would skip ad entries.
- Issues: Added support for surfacing email verification request issues (EmailVerificationRequestIssue).
- Lighthouse: Added an Agentic Browsing category checkbox (disabled by default) in the Lighthouse configuration panel and updated the bundled Lighthouse engine to v13.3.0.
Tip:
To learn more about Agentic Browsing read our recent blog post A developer toolkit to make your website agent-ready.Chromium issues: 518021339, 40908621, 517519019, 487755345, 505284391, 465915378, 512908993, 40543651
Accessibility improvements
Chrome 150 brings several enhancements to screen reader announcements, widget structures, and ARIA semantics across DevTools:
- Improved screen reader announcements when selecting tabs and navigating sections within the Styles tab.
- Added descriptive tooltips on dialog close icons and allowed ARIA details and description attributes on tooltips.
- Enforced strict ARIA menuitem roles on context menu items to improve navigation for assistive technologies.
Chromium issues: 510013788
Original source Similar to Google Chrome with recent updates:
- Gemini updates354 release notes · Latest Jul 16, 2026
- Claude updates116 release notes · Latest Jul 14, 2026
- Claude Code updates401 release notes · Latest Jul 20, 2026
- Google Drive updates29 release notes · Latest Jun 30, 2026
- Google Workspace updates51 release notes · Latest Jul 17, 2026
- ChatGPT updates194 release notes · Latest Jul 16, 2026
- Jun 17, 2026
- Date parsed from source:Jun 17, 2026
- First seen by Releasebot:Jun 18, 2026
What's New in Web GPU (Chrome 149-150)
Google Chrome adds WebGPU immediates for fast, direct shader data updates, plus stricter validation for transient attachments to improve memory-efficient rendering. The release also includes Dawn updates and broader WebGPU improvements.
Immediates
Immediates, also known as push constants or root constants, let you pass small amounts of frequently changing data directly to shaders. This process bypasses the overhead of creating GPU buffers and managing bind groups.
Updating uniform buffer bindings for data that changes every draw call—such as a unique object ID or a 3D transformation matrix for hundreds of objects—creates CPU overhead. Inject raw values directly into the pass encoder to avoid writing data to memory and managing GPU lookups.
Immediates provide a fast path for tiny, highly dynamic variables. Use uniform buffers or storage buffers for large arrays of data, complex lighting structures, or massive matrices.
In your WGSL shader, the
<immediate>address space lets you define immediate data that can be passed directly to the pass encoder. CallsetImmediates()in JavaScript before a draw call to provide this data without binding a group. To check for support, feature-detect theimmediate_address_spaceWGSL language extension throughnavigator.gpu.wgslLanguageFeatures. See the following example and the intent to ship.if (!navigator.gpu.wgslLanguageFeatures.has('immediate_address_space')) { throw new Error(`WGSL immediate address space is not available`); } const adapter = await navigator.gpu.requestAdapter(); const device = await adapter.requestDevice(); const module = device.createShaderModule({ code: ` requires immediate_address_space; var<immediate> color: vec4f; @vertex fn vertexMain(@builtin(vertex_index) i : u32) -> @builtin(position) vec4f { const pos = array(vec2f(0, 1), vec2f(-1, -1), vec2f(1, -1)); return vec4f(pos[i], 0, 1); } @fragment fn fragmentMain() -> @location(0) vec4f { return color; }` }); // Create render pass encoder (omitted)... // By using layout: 'auto', WebGPU will automatically infer the `immediateSize` // required by the pipeline layout from the WGSL module. const pipeline = device.createRenderPipeline({ layout: 'auto', vertex: { module }, fragment: { module, targets: [{ format }] }, }); myRenderPassEncoder.setPipeline(pipeline); // Send immediate data to the GPU, then issue a draw call myRenderPassEncoder.setImmediates(0, new Float32Array([255, 0, 0, 255])); myRenderPassEncoder.draw(3); myRenderPassEncoder.end();For a deeper dive into this feature, take a look at WebGPUFundamentals Immediates.
Kudos to the team at Microsoft for their contributions!
Stricter validation for transient attachments
WebGPU recently introduced the TRANSIENT_ATTACHMENT GPUTextureUsage flag, which lets developers create temporary render attachments, such as depth-stencil buffers or multisampled targets. These attachments stay in fast, on-chip tile memory without allocating main VRAM.
Recent updates (#6248 and #6267) refine validation rules to prevent misuse of these memory-efficient texture attachments:
- Due to platform limitations, viewFormats must be an empty array when creating transient textures. Alternative view formats are not needed because transient textures are only for rendering.
- Creating a texture view does not narrow down usage flags. When calling createView() on a transient texture, the view cannot change its usage.
- Transient attachments cannot be used as a resolveTarget inside a render pass.
Dawn updates
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 149-150
- Immediates
- Stricter validation for transient attachments
- Dawn updates
[Further detailed headings and lists for Chrome versions 147 through 113 omitted for brevity since they are link references and not main textual content.]
Original source - Jun 2, 2026
- Date parsed from source:Jun 2, 2026
- First seen by Releasebot:Jul 6, 2026
Chrome 149
Google Chrome releases Chrome 149 Stable with major CSS upgrades, including gap decorations, new shape-outside functions, path-length, and better overflow, clipboard, bfcache, payment, locale, and gamepad support.
Unless otherwise noted, the following changes apply to Chrome 149 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS gap decorations
CSS gap decorations let you style gaps in container layouts like grid and flexbox, similar to column-rule in multiple-column layout. This feature is highly requested by web developers who must use hacks to style the gaps in grid and flexbox layouts today.
It brings new CSS properties like column-rule-inset, row-rule-inset, column-rule-visibility-items, and row-rule-visibility-items, and supports animation of rule width, color, and insets.
CSS gap decorations blog post | Tracking bug #357648037 | ChromeStatus.com entry | Spec
text-overflow: ellipsis interactions
When a user interacts (for example, by editing or using caret navigation) with text that has text-overflow: ellipsis set, the text temporarily switches from ellipsis to clip. This lets the user see and interact with the hidden overflow content. This feature applies to all editable and non-editable elements. For form controls, such as
Original source - Jun 2, 2026
- Date parsed from source:Jun 2, 2026
- First seen by Releasebot:Jul 5, 2026
Chrome 149
Google Chrome releases Chrome 149 with stronger CSS and web platform support, including gap decorations, new shape-outside options, path-length, and improved text overflow behavior. It also adds better privacy, clipboard, Gamepad, WebSocket, Payment Request, and WebAssembly capabilities across desktop and Android.
Unless otherwise noted, the following changes apply to Chrome 149 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS gap decorations
CSS gap decorations let you style gaps in container layouts like grid and flexbox, similar to column-rule in multiple-column layout. This feature is highly requested by web developers who must use hacks to style the gaps in grid and flexbox layouts today.
It brings new CSS properties like column-rule-inset, row-rule-inset, column-rule-visibility-items, and row-rule-visibility-items, and supports animation of rule width, color, and insets.
When a user interacts (for example, by editing or using caret navigation) with text that has text-overflow: ellipsis set, the text temporarily switches from ellipsis to clip. This lets the user see and interact with the hidden overflow content. This feature applies to all editable and non-editable elements. For form controls, such as
Original source - Jun 2, 2026
- Date parsed from source:Jun 2, 2026
- First seen by Releasebot:Jun 5, 2026
What's new in Dev Tools (Chrome 149)
Google Chrome releases Chrome 149 with major AI assistance upgrades, experimental WebMCP debugging tools in DevTools, and CSS code completion in the Styles tab. It also promotes APCA contrast guidelines to stable, improves Device Mode user agent handling, and adds a range of DevTools fixes and workflow boosts.
Chrome 149 brings major upgrades to AI assistance, introduces experimental WebMCP debugging tools in the Application panel, and expands code completion support to CSS.
Dev Tools for agents
The MCP server and CLI of Chrome DevTools for agents are now officially stable! Read the full announcement here.
Key features and new tools added up to the v1.1.1 release include:
- Custom third-party, page-exposed tools: pages can now define custom debugging tools through JavaScript, discoverable and callable by DevTools for agents.
- WebMCP debugging: DevTools for agents can now list and execute WebMCP tools.
- Custom HTTP headers emulation: Adds support for HTTP headers (such as Auth tokens or custom User-Agents) to the emulation tool.
Third-party tools and WebMCP debugging are still experimental and not yet enabled by default. Check the tool reference for info on how to use them. We will provide more documentation on developer.chrome.com once those features are ready for production use.
For the most recent updates around DevTools for agents, and to contribute, visit the GitHub repository. Get started with our documentation or get up to speed with the comprehensive Google I/O video session Supercharge your AI coding workflow with Chrome DevTools for agents.
Tip: With Modern Web Guidance the Chrome team released a set of skills to help coding agents build with the web's newest features, while supporting your Baseline target. Find install instructions in our documentation and learn more in the dedicated Google I/O video session Unlock modern web capabilities in your AI coding workflows.
AI assistance
The AI assistance panel has received a significant user interface update and new tools to improve the conversational experience and provide deeper page insights:
- Agent walkthrough: AI assistance now renders widgets directly within the chat interface instead of plain text Markdown. These widgets cover Core Web Vitals and related insights, LCP elements, LCP breakdown, Bottom-up thread activity, and more. A Reveal link inside the widget brings you to the source of this information inside DevTools.
- Copy to coding agent: Conversations now end with a dedicated button to copy the conversation, either summarized as a prompt, or the verbatim conversation, for you to paste it in your coding agent of choice.
- Upgraded capabilities: AI assistance now has access to Lighthouse and related insights, allowing it to holistically analyze your page and give targeted advice.
- Improved responses: Using Gemini 3 under the hood, and refined preambles, AI assistance gives more concise, and more actionable answers.
- Improved navigation: You can now navigate through your previous chat prompts using the Up Arrow and Down Arrow keys, making it fast and intuitive to refine or re-run previous queries.
Let us know what you think by commenting on the dedicated feedback bug. In favor of Copy to coding agent, we will deprecate support for automated styling fixes through AI assistance, with Chrome 152.
Tip: Learn more about the updates to AI assistance in the dedicated Google I/O video session Break boundaries with Gemini in Chrome DevTools.
WebMCP
This release introduces experimental WebMCP debugging tools within the Application panel sidebar. WebMCP (Web Model Context Protocol) allows web pages to register tools to be used by visiting LLM agents. Learn more about the proposed standard in our documentation.
The new debugging tools lets developers:
- Inspect client-side tools and their schemas.
- Manually run tools execution with custom parameters.
- Track and filter active or pending tool invocation events.
- Monitor execution status and inspect return payloads.
WebMCP is a proposed web standard in early preview. Enable the #devtools-webmcp-support and #enable-webmcp-testing flags on chrome://flags to start experimenting.
Tip: Learn more about WebMCP in the Google I/O video session Build your website for the agentic era.
Code completion for CSS
The Styles tab now features code completion for CSS with Gemini, building on the support for the Console & Sources panels. Enable code suggestions in Settings > AI innovations > Code suggestions.
This helps you to play around with more complex combinations of CSS properties, like gradients or box shadows, without remembering their exact syntax. Or to quickly build out grid- and flex- layouts, relying on multiple related properties.
The toolbar at the bottom of the Styles tab displays the status through a loading spinner. Suggestions update or clear as you type, ensuring that the AI-generated text stays relevant to your manual edits.
APCA color contrast guidelines promoted to stable
The Advanced Perceptual Contrast Algorithm (APCA) contrast calculator has officially left its experimental phase and is now available as a standard preference setting. APCA replaces the legacy AAA/AA contrast guidelines with a modern perceptual contrast model optimized for modern displays and text rendering.
You can now enable or disable APCA guidelines using the checkbox located under Settings > Preferences > Elements > Enable APCA contrast guidelines.
Dynamic Device Mode user agent
The Responsive device mode previously used a hardcoded User Agent string (Android 6.0; Nexus 5). This caused modern websites to degrade functionality or trigger compatibility modes because the reported OS was recognized as over a decade old.
The hard coded user agent has been replaced with a dynamic heuristic that auto-updates based on the current calendar year, ensuring DevTools always reports a plausible, modern environment without requiring manual maintenance.
Other highlights
A collection of smaller improvements and bug fixes in this release:
- Console: Added a Collapse / Expand all toggle button to the Console panel toolbar to quickly expand or collapse all active console groups and stack traces at once.
- Application: Clickable hyperlinks have replaced static text for storage bucket fields in the Application metadata view. Clicking a bucket link automatically navigates to and highlights that specific bucket in the Storage Buckets sidebar panel.
- Application: Re-enabled full storage inspection support for Service Workers after resolving a crash regression.
- Application: Added support for inspecting form_submission prerendering events within the Preloading panel.
- Application: Implemented Device-Bound Session Credentials (DBSC) management, allowing developers to clear or delete active sessions from the context menu or by pressing the Delete or Backspace keys.
- Elements: Highlights on DOM nodes representing hidden issues in the Issues panel now dynamically update (appearing or disappearing) in response to issue filter actions.
- Network: Server-Sent Events (SSE) are now fully serialized and included in HAR exports, enabling ongoing, live event stream captures to be saved and re-imported into DevTools.
- Performance: Fixed Core Web Vitals tracking in the Live Metrics view to pin tracking strictly to the primary frame execution context, preventing dynamic iframe churn from resetting metrics.
- Performance: Upgraded web-vitals to v5.2.0, introducing native upstream fixes for memory leaks during INP monitoring.
- Jun 2, 2026
- Date parsed from source:Jun 2, 2026
- First seen by Releasebot:Jun 3, 2026
Chrome 149
Google Chrome releases a broad stable update for desktop and Android with new CSS gap decorations and shape-outside options, improved text overflow interaction, tighter privacy controls, bfcache WebSocket support, and updates to Clipboard, Payment Request, Intl.Locale, and WebAssembly APIs.
CSS gap decorations
CSS gap decorations let you style gaps in container layouts like grid and flexbox, similar to column-rule in multiple-column layout. This feature is highly requested by web developers who must use hacks to style the gaps in grid and flexbox layouts today.
It brings new CSS properties like column-rule-inset, row-rule-inset, column-rule-visibility-items, and row-rule-visibility-items, and supports animation of rule width, color, and insets.
CSS gap decorations blog post | Tracking bug #357648037 | ChromeStatus.com entry | Spec
When a user interacts (for example, by editing or using caret navigation) with text that has text-overflow: ellipsis set, the text temporarily switches from ellipsis to clip. This lets the user see and interact with the hidden overflow content. This feature applies to all editable and non-editable elements. For form controls, such as
<textarea>and<input>, this behavior is already supported.Tracking bug #40731275 | ChromeStatus.com entry | Spec
This change removes the erroneous border-color: gray CSS rule from the UA stylesheet for the
<table>element. The HTML specification does not contain this rule, and it prevented borders from defaulting to currentColor. Neither Firefox nor WebKit have this gray border color rule in their UA stylesheet, leading to interoperability issues.Tracking bug #494554835 | ChromeStatus.com entry | Spec
Support path() and shape() in shape-outside
Adds support for the path() and shape() shape functions in the CSS shape-outside property. These functions let developers define float exclusion shapes more flexibly and support animation.
Tracking bug #502328208 | ChromeStatus.com entry | Spec
Support rect() and xywh() in shape-outside
Adds support for the rect() and xywh() basic shape functions in the CSS shape-outside property. These functions let developers define float exclusion shapes using rectangle coordinates, aligning Chrome with Firefox and Safari which already support this feature.
Tracking bug #490343453 | ChromeStatus.com entry | Spec
User action pseudo-class top layer boundary
Changes :hover, :active, and :focus-within matching on parents of elements to match only up to the first top layer element in the parent chain. Since top layer elements are typically rendered disconnected from their parent chain visually, it does not make sense to change parent styles when a top layer element is hovered or activated.
Tracking bug #407769114 | ChromeStatus.com entry | Spec
Web app scope system accent color
Restricts access to the system accent color for CSS keywords (AccentColor and AccentColorText) and accent-color: auto to be only within a web app and initial profile context. This limits a significant fingerprinting vector when exposing the user's system colors widely on the web.
Tracking bug #481353056 | ChromeStatus.com entry | Spec
image-rendering: crisp-edges
image-rendering: crisp-edges indicates that image should be scaled in a way that preserves contrast and edges, and which avoids smoothing colors or introducing blur to the image in the process.
Chrome, Firefox, and Safari treat crisp-edges and pixelated as synonyms and implement both using nearest-neighbor scaling.
Tracking bug #41073066 | ChromeStatus.com entry | Spec
Support 'path-length' as a CSS property
Introduces a new CSS property, path-length, which maps to the SVG pathLength presentation attribute. This applies to SVG geometry elements that support pathLength (including
<path>,<circle>,<rect>,<line>,<polyline>,<polygon>, and<ellipse>), allowing authors to specify it in stylesheets, inline styles, and animations.Tracking bug #40670251 | ChromeStatus.com entry | Spec
Web APIs
Intl.Locale.prototype.variants
Adds Intl.Locale.prototype.variants as stated in the ECMA-402 specification, and accepts variants in the options bag in the Intl.Locale constructor.
ChromeStatus.com entry | Spec
Payment Request: Allow payment handlers to report back internal errors
Lets payment handlers accessed using the Payment Request API return distinct errors for "user cancelled" (AbortError) versus "internal payment app error" (OperationError). This lets developers retry or fall back to a different flow when an internal app error occurs, while properly stopping if the user cancels.
Tracking bug #473478138 | ChromeStatus.com entry | Spec
Respect autocorrect="off" for Windows touch keyboard in TSF
Makes Chrome's TSF integration detect and revert touch keyboard autocorrections on Windows when the focused editable element has autocorrect="off" set.
Tracking bug #487613498 | ChromeStatus.com entry | Spec
Selective Clipboard Format Read
Enhances the Asynchronous Clipboard API by deferring actual clipboard data retrieval from the OS until the web application calls getType(). Instead of eagerly fetching all available formats at read() time, the browser now returns ClipboardItem objects with available MIME types but without the underlying data, which reduces CPU usage and improves responsiveness.
Tracking bug #435051711 | ChromeStatus.com entry | Spec
Network and connectivity
Disconnect WebSockets on bfcache entry
Active WebSocket connections no longer prevent a page from entering the Back/Forward Cache (bfcache). By closing connections on bfcache entry instead of marking the document as ineligible, the browser allows pages with active WebSockets to be stored and restored.
Tracking bug #467838624 | ChromeStatus.com entry | Spec
New origin trials
Gamepad event-driven input API
Extends the Gamepad API with a new event-driven model that lets applications receive gamepad input with lower latency. Instead of relying on frequent polling using navigator.getGamepads(), developers can now listen for a rawgamepadinputchange event, which fires whenever new input data is available from the device.
Origin Trial | Tracking bug #40582297 | ChromeStatus.com entry | Spec
Permissions Policy: focus-without-user-activation
Permissions Policy: focus-without-user-activation
Lets embedders control programmatic focus from embedded content with the focus-without-user-activation permissions policy. When the policy is denied for a frame, programmatic focus calls (element.focus(), autofocus, window.focus(), dialog.showModal(), and popover focusing) are blocked unless triggered by user activation.
Origin Trial | Tracking bug #40095111 | ChromeStatus.com entry | Spec
WebAssembly custom descriptors
Lets WebAssembly store data associated with source-level types more efficiently in new "custom descriptor" objects. These custom descriptors can be configured with prototypes for the WebAssembly objects of that source-level type, which lets methods be installed on a WebAssembly object's prototype chain and called directly from JavaScript using normal method call syntax.
Origin Trial | Tracking bug #403372470 | ChromeStatus.com entry | Spec
Original source - May 5, 2026
- Date parsed from source:May 5, 2026
- First seen by Releasebot:Jul 6, 2026
Chrome 148 Bookmark collections drop down
Google Chrome ships Chrome 148 for Android, ChromeOS, Linux, macOS, and Windows with broad web platform upgrades, including new CSS capabilities, media lazy loading, improved drag and pointer behavior, Web Serial on Android, SharedWorker re-enabled on Android, and fresh AI, WebGPU, WebRTC, and web app features.
Stable release date: May 5th, 2026
Unless otherwise noted, the following changes apply to Chrome 148 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
Want just the highlights? Check out New in Chrome 148.
CSS and UI
CSS name-only container queries
A CSS query container can be queried based on its container-name only, and the container does not need any container-type set:
#container { container-name: --foo; } @container --foo { input { background-color: green; } }<div id="container"> <div><input></div> </div>Previously, @container required a container type in addition to the name.
Tracking bug #40287550 | ChromeStatus.com entry | Spec
At-rule: CSS feature detection
This feature adds an at-rule() function to CSS @supports which enables authors to feature-detect support for CSS at-rules.
Tracking bug #40211832 | ChromeStatus.com entry | Spec
Open Font Format avar2 text shaping and glyph rendering
Version 2 of the avar (Axis Variations) table enables font designers to create variable fonts with better control over interpolation. While the original variable font spec handles axes independently, avar2 allows axes to influence one another. This leads to fonts that are easier to use for content authors to use, and enable compact storage.
Avar2 works by using the same familiar concepts of font variations, but applies the variable delta values to the design axis specifications itself. In addition, it lets you do this over a range of multiple axes.
As an example, it lets font designers create "meta sliders" which control multiple variation axes at once, alleviating the user from fine-tuning and finding a useful corner of the font's design space.
Avar2 gives font designers better control over the usable variation space of their font, and lets them coordinate the adjustment of design axes across several axes.
By defining the relationships between axes mathematically within the avar version 2 table, fonts can achieve complex designs with fewer masters, leading to smaller file sizes, because the interpolation is stored more efficiently.
Tracking bug #40246300 | ChromeStatus.com entry | Spec
The revert-rule keyword
The revert-rule keyword rolls back the cascade to the previous rule, similar to how revert-layer rolls back the cascade to the previous layer. For example:
div { color: green; } div { color: revert-rule; /* Effectively green */ }This is especially useful in combination with conditionals, because it lets you eliminate the current rule if some condition is not met:
div { display: if(style(--layout: fancy): grid; else: revert-rule); }Tracking bug #393582263 | ChromeStatus.com entry | Spec
Lazy loading for video and audio elements
Adds the loading attribute to and elements, letting developers defer media resource loading until the element is near the viewport using loading="lazy". This matches the existing lazy loading behavior for and elements, improving page load performance and reducing data usage.
Tracking bug #469111735 | ChromeStatus.com entry | Spec
text-decoration-skip-ink: all
Add support for the all value for the CSS text-decoration-skip-ink property.
The text-decoration-skip-ink property already supports auto and none. The all value extends this by unconditionally applying ink-skipping to all glyphs —including CJK characters—whereas auto leaves CJK characters un-skipped because ink-skipping tends to produce undesirable visual results for ideographic scripts at typical underline positions.
With text-decoration-skip-ink: all, developers who have adjusted text-underline-position or text-underline-offset to avoid clashing with CJK glyphs can explicitly opt in to ink-skipping for those characters as well.
Tracking bug #40675832 | ChromeStatus.com entry | Spec
Correctly set dropEffect for dragEnter, dragLeave, and dragOver events
The drag and drop specifications require the dataTransfer's object dropEffect attribute to have certain predetermined values on dragEnter, dragOver, and dragLeave. Drag enter and drag over should have a dropEffect based on the current effectAllowed, and dragLeave should always have a none dropEffect. Currently, Chromium doesn't adhere to these rules. With the launch of this feature, Chromium will start respecting the specification and assigning the correct values to this attribute so that web developers can start relying on it.
Tracking bug #434151262 | ChromeStatus.com entry | Spec
Pointer event suppression on drag start
According to the HTML spec, when a drag starts the user agent should send the appropriate events to the drag source to indicate that the pointer event stream has ended, and that it shouldn't expect any more events from this pointer. This code had been partially implemented for mouse events and fully implemented for touch drags on Android. With the work in this feature, we aim to fully satisfy this spec requirement on all other platforms. Practically, this means that after a drag has started the drag source will now receive the pointercancel, pointerout, and pointerleave events to indicate that the current event stream has finished.
Tracking bug #452372355 | ChromeStatus.com entry | Spec
Capabilities
Manifest localization
Supports localization of manifest members so apps can adapt their names, descriptions, icons, and shortcuts to the user's language and region. Developers provide localized values in the web app manifest, and the browser automatically selects the appropriate resources based on the user's language settings, introducing language support across different markets.
Learn more in Localization support for web app manifests.
Tracking bug #380491647 | ChromeStatus.com entry | Spec
Web on Android
Web Serial API on Android
The Web Serial API provides an interface for connecting to serial devices, either through a serial port on the user's system or removable USB and Bluetooth devices that emulate a serial port. Now it is supported on Android.
Users, especially in the educational, hobbyist, and industrial sectors, connect peripheral devices to their computers that require custom software to control. For example, robotics are often used to teach computer programming and electronics in schools. This requires software which can upload code to a robot or control it remotely. In an industrial or hobbyist setting a piece of equipment such as a mill, laser cutter or 3D printer is controlled by a program running on a connected computer. These devices are often controlled by small microcontrollers using a serial connection.
For more information, see the Web Serial API guide on web.dev and the Web Serial specification.
Tracking bug #365514951 | ChromeStatus.com entry
SharedWorker on Android
For a long time, SharedWorker has been disabled on Android due to concerns about its unpredictable process lifecycle. SharedWorker instances might terminate unexpectedly, without notifying users or web developers.
However, a recent discussion on GitHub (see the GitHub discussion) suggests that the unpredictable nature of SharedWorker's process lifecycle might not be as significant an issue as previously thought. Based on this, SharedWorker is being re-enabled on Android while this behavior is investigated to ensure a stable and reliable experience.
Tracking bug #40290702 | ChromeStatus.com entry | Spec
Web APIs
WebGPU: linear_indexing feature
This feature adds functionality to the WebGPU spec after its first shipment in a browser.
Adds two new compute shader built-in values for user quality of life. These are implemented for all backends (as polyfills of existing built-in values).
Tracking bug #482840564 | ChromeStatus.com entry | Spec
Web Authentication Immediate UI mode
A new mode for navigator.credentials.get() that causes browser sign-in UI to be displayed to the user if there is a passkey or password for the site that is immediately known to the browser, or else rejects the promise with NotAllowedError if there is no such credential available. This allows the site to avoid showing a sign-in page if the browser can offer a choice of sign-in credentials that are likely to succeed, while still allowing a traditional sign-in page flow for cases where there are no such credentials.
Tracking bug #408002783 | ChromeStatus.com entry | Spec
Get Secure Payment Confirmation capabilities
Adds a new static method to the Payment Request that lets web developers get the capabilities of the browser's implementation of Secure Payment Confirmation.
This helps web developers know what capabilities are available for Secure Payment Confirmation so they can decide whether or not they want to use Secure Payment Confirmation with those capabilities.
Tracking bug #484043990 | ChromeStatus.com entry | Spec
Extended lifetime shared workers
This update adds a new option, extendedLifetime: true, to the SharedWorker constructor. This new option requests that the shared worker be kept alive even after all current clients have unloaded. This lets pages perform asynchronous work that requires JavaScript after a page unloads, without needing to rely on a service worker.
Tracking bug #400473072 | ChromeStatus.com entry | Spec
Prompt API
The Prompt API gives web developers direct access to a browser-provided on-device AI language model. The API design offers fine-grained control, aligned with cloud API shapes, for progressively enhancing sites with model interactions tailored to individualized use cases. This complements task-based language model APIs, for example, Summarizer API, as well as a variety of APIs and frameworks for generalized on-device inference with developer-supplied ML models.
The initial implementation supports text, image, and audio inputs. In addition, response constraints ensure that generated text conforms with predefined regular expression and JSON schema formats.
This supports a variety of use cases, from generating image captions and performing visual searches to transcribing audio, classifying sound events, generating text following specific instructions, and extracting information or insights from multi-modal source material.
Tracking bug #417526788 | ChromeStatus.com entry | Spec
Network and connectivity
IDNA ContextJ rules
IDNA is the mechanism for non-ASCII characters in domain names. It encodes a URL like http://네이버.한국/ as http://xn--950bt9s8xi.xn--3e0b707e/ (a redirect to naver.com).
The URL specification sets the CheckJoiners flag, which enables the ContextJ rules in IDNA2008. This disallows ZWNJ (U+200C ZERO WIDTH NON-JOINER) and ZWJ (U+200D ZERO WIDTH JOINER) in most places in URLs. The implementation passes the UIDNA_CHECK_CONTEXTJ option to ICU, where this rule is implemented.
Tracking bug #40765949 | ChromeStatus.com entry | Spec
Reuse no-store images on same-src reassignment
Allow same-document available-image reuse to bypass Cache-Control: no-store reload when the same src value is reassigned to an element. Previously, Blink would re-fetch the image even though it was already decoded and available in the document. This aligns with existing Gecko and WebKit behavior.
Tracking bug #486562295 | ChromeStatus.com entry | Spec
Performance
ContentType in Resource Timing
Adds the contentType field to PerformanceResourceTiming to hold a string corresponding to the Content-Type HTTP header of the fetched resource as returned by the server.
Tracking bug #1366706 | ChromeStatus.com entry | Spec
WebRTC Datachannel: Always negotiate data channels
Implements a WebRTC extension alwaysNegotiateDataChannels which defines a way for the application to negotiate data channels in the SDP offer before creating a datachannel. This also negotiates the data m= section before any audio or video m sections and uses it as the "offerer-tagged m= section" for BUNDLE.
This means that:
const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true }); const offer = await pc.createOffer();will create an offer with an application m-line in the SDP and that:
const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true }); pc.addTransceiver('audio'); pc.createDataChannel('somechannel'); const offer = await pc.createOffer();will create an offer that negotiates an application m-line followed by an audio m-line in the SDP.
Tracking bug #433898678 | ChromeStatus.com entry | Spec
New origin trials
Declarative CSS module scripts
Declarative CSS Modules Scripts are an extension of the existing script-based CSS Module Scripts. They allow for developers to share declarative stylesheets with shadow roots, including declarative shadow roots. Developers can define inline style modules with
Original source - May 5, 2026
- Date parsed from source:May 5, 2026
- First seen by Releasebot:Jul 5, 2026
Chrome 148 Bookmark collections drop down
Google Chrome releases a broad stable update for Android, ChromeOS, Linux, macOS, and Windows, adding new CSS capabilities, media lazy loading, improved drag and pointer behavior, expanded web APIs, and fresh origin trials for AI, web apps, performance, and rendering.
Stable release date: May 5th, 2026
Unless otherwise noted, the following changes apply to Chrome 148 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS and UI
CSS name-only container queries
A CSS query container can be queried based on its container-name only, and the container does not need any container-type set:
#container { container-name: --foo; } @container --foo { input { background-color: green; } }<div id="container"> <div><input></div> </div>Previously, @container required a container type in addition to the name.
Tracking bug #40287550 | ChromeStatus.com entry | Spec
At-rule: CSS feature detection
This feature adds an at-rule() function to CSS @supports which enables authors to feature-detect support for CSS at-rules.
Tracking bug #40211832 | ChromeStatus.com entry | Spec
Open Font Format avar2 text shaping and glyph rendering
Version 2 of the avar (Axis Variations) table enables font designers to create variable fonts with better control over interpolation. While the original variable font spec handles axes independently, avar2 allows axes to influence one another. This leads to fonts that are easier to use for content authors to use, and enable compact storage.
Avar2 works by using the same familiar concepts of font variations, but applies the variable delta values to the design axis specifications itself. In addition, it lets you do this over a range of multiple axes.
As an example, it lets font designers create "meta sliders" which control multiple variation axes at once, alleviating the user from fine-tuning and finding a useful corner of the font's design space.
Avar2 gives font designers better control over the usable variation space of their font, and lets them coordinate the adjustment of design axes across several axes.
By defining the relationships between axes mathematically within the avar version 2 table, fonts can achieve complex designs with fewer masters, leading to smaller file sizes, because the interpolation is stored more efficiently.
Tracking bug #40246300 | ChromeStatus.com entry | Spec
The revert-rule keyword
The revert-rule keyword rolls back the cascade to the previous rule, similar to how revert-layer rolls back the cascade to the previous layer. For example:
div { color: green; } div { color: revert-rule; /* Effectively green */ }This is especially useful in combination with conditionals, because it lets you eliminate the current rule if some condition is not met:
div { display: if(style(--layout: fancy): grid; else: revert-rule); }Tracking bug #393582263 | ChromeStatus.com entry | Spec
Lazy loading for video and audio elements
Adds the loading attribute to and elements, letting developers defer media resource loading until the element is near the viewport using loading="lazy". This matches the existing lazy loading behavior for and elements, improving page load performance and reducing data usage.
Tracking bug #469111735 | ChromeStatus.com entry | Spec
text-decoration-skip-ink: all
Add support for the all value for the CSS text-decoration-skip-ink property.
The text-decoration-skip-ink property already supports auto and none. The all value extends this by unconditionally applying ink-skipping to all glyphs —including CJK characters—whereas auto leaves CJK characters un-skipped because ink-skipping tends to produce undesirable visual results for ideographic scripts at typical underline positions.
With text-decoration-skip-ink: all, developers who have adjusted text-underline-position or text-underline-offset to avoid clashing with CJK glyphs can explicitly opt in to ink-skipping for those characters as well.
Tracking bug #40675832 | ChromeStatus.com entry | Spec
Correctly set dropEffect for dragEnter, dragLeave, and dragOver events
The drag and drop specifications require the dataTransfer's object dropEffect attribute to have certain predetermined values on dragEnter, dragOver, and dragLeave. Drag enter and drag over should have a dropEffect based on the current effectAllowed, and dragLeave should always have a none dropEffect. Currently, Chromium doesn't adhere to these rules. With the launch of this feature, Chromium will start respecting the specification and assigning the correct values to this attribute so that web developers can start relying on it.
Tracking bug #434151262 | ChromeStatus.com entry | Spec
Pointer event suppression on drag start
According to the HTML spec, when a drag starts the user agent should send the appropriate events to the drag source to indicate that the pointer event stream has ended, and that it shouldn't expect any more events from this pointer. This code had been partially implemented for mouse events and fully implemented for touch drags on Android. With the work in this feature, we aim to fully satisfy this spec requirement on all other platforms. Practically, this means that after a drag has started the drag source will now receive the pointercancel, pointerout, and pointerleave events to indicate that the current event stream has finished.
Tracking bug #452372355 | ChromeStatus.com entry | Spec
Capabilities
Manifest localization
Supports localization of manifest members so apps can adapt their names, descriptions, icons, and shortcuts to the user's language and region. Developers provide localized values in the web app manifest, and the browser automatically selects the appropriate resources based on the user's language settings, introducing language support across different markets.
Learn more in Localization support for web app manifests.
Tracking bug #380491647 | ChromeStatus.com entry | Spec
Web on Android
Web Serial API on Android
The Web Serial API provides an interface for connecting to serial devices, either through a serial port on the user's system or removable USB and Bluetooth devices that emulate a serial port. Now it is supported on Android.
Users, especially in the educational, hobbyist, and industrial sectors, connect peripheral devices to their computers that require custom software to control. For example, robotics are often used to teach computer programming and electronics in schools. This requires software which can upload code to a robot or control it remotely. In an industrial or hobbyist setting a piece of equipment such as a mill, laser cutter or 3D printer is controlled by a program running on a connected computer. These devices are often controlled by small microcontrollers using a serial connection.
For more information, see the Web Serial API guide on web.dev and the Web Serial specification.
Tracking bug #365514951 | ChromeStatus.com entry
SharedWorker on Android
For a long time, SharedWorker has been disabled on Android due to concerns about its unpredictable process lifecycle. SharedWorker instances might terminate unexpectedly, without notifying users or web developers.
However, a recent discussion on GitHub (see the GitHub discussion) suggests that the unpredictable nature of SharedWorker's process lifecycle might not be as significant an issue as previously thought. Based on this, SharedWorker is being re-enabled on Android while this behavior is investigated to ensure a stable and reliable experience.
Tracking bug #40290702 | ChromeStatus.com entry | Spec
Web APIs
WebGPU: linear_indexing feature
This feature adds functionality to the WebGPU spec after its first shipment in a browser.
Adds two new compute shader built-in values for user quality of life. These are implemented for all backends (as polyfills of existing built-in values).
Tracking bug #482840564 | ChromeStatus.com entry | Spec
Web Authentication Immediate UI mode
A new mode for navigator.credentials.get() that causes browser sign-in UI to be displayed to the user if there is a passkey or password for the site that is immediately known to the browser, or else rejects the promise with NotAllowedError if there is no such credential available. This allows the site to avoid showing a sign-in page if the browser can offer a choice of sign-in credentials that are likely to succeed, while still allowing a traditional sign-in page flow for cases where there are no such credentials.
Tracking bug #408002783 | ChromeStatus.com entry | Spec
Get Secure Payment Confirmation capabilities
Adds a new static method to the Payment Request that lets web developers get the capabilities of the browser's implementation of Secure Payment Confirmation.
This helps web developers know what capabilities are available for Secure Payment Confirmation so they can decide whether or not they want to use Secure Payment Confirmation with those capabilities.
Tracking bug #484043990 | ChromeStatus.com entry | Spec
Extended lifetime shared workers
This update adds a new option, extendedLifetime: true, to the SharedWorker constructor. This new option requests that the shared worker be kept alive even after all current clients have unloaded. This lets pages perform asynchronous work that requires JavaScript after a page unloads, without needing to rely on a service worker.
Tracking bug #400473072 | ChromeStatus.com entry | Spec
Prompt API
The Prompt API gives web developers direct access to a browser-provided on-device AI language model. The API design offers fine-grained control, aligned with cloud API shapes, for progressively enhancing sites with model interactions tailored to individualized use cases. This complements task-based language model APIs, for example, Summarizer API, as well as a variety of APIs and frameworks for generalized on-device inference with developer-supplied ML models.
The initial implementation supports text, image, and audio inputs. In addition, response constraints ensure that generated text conforms with predefined regular expression and JSON schema formats.
This supports a variety of use cases, from generating image captions and performing visual searches to transcribing audio, classifying sound events, generating text following specific instructions, and extracting information or insights from multi-modal source material.
Tracking bug #417526788 | ChromeStatus.com entry | Spec
Network and connectivity
IDNA ContextJ rules
IDNA is the mechanism for non-ASCII characters in domain names. It encodes a URL like http://네이버.한국/ as http://xn--950bt9s8xi.xn--3e0b707e/ (a redirect to naver.com).
The URL specification sets the CheckJoiners flag, which enables the ContextJ rules in IDNA2008. This disallows ZWNJ (U+200C ZERO WIDTH NON-JOINER) and ZWJ (U+200D ZERO WIDTH JOINER) in most places in URLs. The implementation passes the UIDNA_CHECK_CONTEXTJ option to ICU, where this rule is implemented.
Tracking bug #40765949 | ChromeStatus.com entry | Spec
Reuse no-store images on same-src reassignment
Allow same-document available-image reuse to bypass Cache-Control: no-store reload when the same src value is reassigned to an element. Previously, Blink would re-fetch the image even though it was already decoded and available in the document. This aligns with existing Gecko and WebKit behavior.
Tracking bug #486562295 | ChromeStatus.com entry | Spec
Performance
ContentType in Resource Timing
Adds the contentType field to PerformanceResourceTiming to hold a string corresponding to the Content-Type HTTP header of the fetched resource as returned by the server.
Tracking bug #1366706 | ChromeStatus.com entry | Spec
WebRTC Datachannel: Always negotiate data channels
Implements a WebRTC extension alwaysNegotiateDataChannels which defines a way for the application to negotiate data channels in the SDP offer before creating a datachannel. This also negotiates the data m= section before any audio or video m sections and uses it as the "offerer-tagged m= section" for BUNDLE.
This means that:
const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true }); const offer = await pc.createOffer();will create an offer with an application m-line in the SDP and that:
const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true }); pc.addTransceiver('audio'); pc.createDataChannel('somechannel'); const offer = await pc.createOffer();will create an offer that negotiates an application m-line followed by an audio m-line in the SDP.
Tracking bug #433898678 | ChromeStatus.com entry | Spec
New origin trials
Declarative CSS module scripts
Declarative CSS Modules Scripts are an extension of the existing script-based CSS Module Scripts. They allow for developers to share declarative stylesheets with shadow roots, including declarative shadow roots. Developers can define inline style modules with
Original source - May 5, 2026
- Date parsed from source:May 5, 2026
- First seen by Releasebot:May 26, 2026
Chrome 148
Google Chrome releases its May 2026 stable update with broad web platform advances, including new CSS query and feature-detection capabilities, stronger media and drag-and-drop behavior, expanded Android support, and new APIs for AI, performance, and web app experiences.
Stable release date: May 5th, 2026
Unless otherwise noted, the following changes apply to Chrome 148 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS and UI
CSS name-only container queries
A CSS query container can be queried based on its container-name only, and the container does not need any container-type set:
#container { container-name: --foo; } @container --foo { input { background-color: green; } }<div id="container"> <div><input></div> </div>Previously, @container required a container type in addition to the name.
Tracking bug #40287550 | ChromeStatus.com entry | Spec
At-rule: CSS feature detection
This feature adds an at-rule() function to CSS @supports which enables authors to feature-detect support for CSS at-rules.
Tracking bug #40211832 | ChromeStatus.com entry | Spec
Open Font Format avar2 text shaping and glyph rendering
Version 2 of the avar (Axis Variations) table enables font designers to create variable fonts with better control over interpolation. While the original variable font spec handles axes independently, avar2 allows axes to influence one another. This leads to fonts that are easier to use for content authors to use, and enable compact storage.
Avar2 works by using the same familiar concepts of font variations, but applies the variable delta values to the design axis specifications itself. In addition, it lets you do this over a range of multiple axes.
As an example, it lets font designers create "meta sliders" which control multiple variation axes at once, alleviating the user from fine-tuning and finding a useful corner of the font's design space.
Avar2 gives font designers better control over the usable variation space of their font, and lets them coordinate the adjustment of design axes across several axes.
By defining the relationships between axes mathematically within the avar version 2 table, fonts can achieve complex designs with fewer masters, leading to smaller file sizes, because the interpolation is stored more efficiently.
Tracking bug #40246300 | ChromeStatus.com entry | Spec
The revert-rule keyword
The revert-rule keyword rolls back the cascade to the previous rule, similar to how revert-layer rolls back the cascade to the previous layer. For example:
div { color: green; } div { color: revert-rule; /* Effectively green */ }This is especially useful in combination with conditionals, because it lets you eliminate the current rule if some condition is not met:
div { display: if(style(--layout: fancy): grid; else: revert-rule); }Tracking bug #393582263 | ChromeStatus.com entry | Spec
Lazy loading for video and audio elements
Adds the loading attribute to and elements, letting developers defer media resource loading until the element is near the viewport using loading="lazy". This matches the existing lazy loading behavior for and elements, improving page load performance and reducing data usage.
Tracking bug #469111735 | ChromeStatus.com entry | Spec
text-decoration-skip-ink: all
Add support for the all value for the CSS text-decoration-skip-ink property.
The text-decoration-skip-ink property already supports auto and none. The all value extends this by unconditionally applying ink-skipping to all glyphs —including CJK characters—whereas auto leaves CJK characters un-skipped because ink-skipping tends to produce undesirable visual results for ideographic scripts at typical underline positions.
With text-decoration-skip-ink: all, developers who have adjusted text-underline-position or text-underline-offset to avoid clashing with CJK glyphs can explicitly opt in to ink-skipping for those characters as well.
Tracking bug #40675832 | ChromeStatus.com entry | Spec
Correctly set dropEffect for dragEnter, dragLeave, and dragOver events
Correctly set dropEffect for dragEnter, dragLeave, and dragOver events
The drag and drop specifications require the dataTransfer's object dropEffect attribute to have certain predetermined values on dragEnter, dragOver, and dragLeave. Drag enter and drag over should have a dropEffect based on the current effectAllowed, and dragLeave should always have a none dropEffect. Currently, Chromium doesn't adhere to these rules. With the launch of this feature, Chromium will start respecting the specification and assigning the correct values to this attribute so that web developers can start relying on it.
Tracking bug #434151262 | ChromeStatus.com entry | Spec
Pointer event suppression on drag start
According to the HTML spec, when a drag starts the user agent should send the appropriate events to the drag source to indicate that the pointer event stream has ended, and that it shouldn't expect any more events from this pointer. This code had been partially implemented for mouse events and fully implemented for touch drags on Android. With the work in this feature, we aim to fully satisfy this spec requirement on all other platforms. Practically, this means that after a drag has started the drag source will now receive the pointercancel, pointerout, and pointerleave events to indicate that the current event stream has finished.
Tracking bug #452372355 | ChromeStatus.com entry | Spec
Capabilities
Manifest localization
Supports localization of manifest members so apps can adapt their names, descriptions, icons, and shortcuts to the user's language and region. Developers provide localized values in the web app manifest, and the browser automatically selects the appropriate resources based on the user's language settings, introducing language support across different markets.
Learn more in Localization support for web app manifests.
Tracking bug #380491647 | ChromeStatus.com entry | Spec
Web on Android
Web Serial API on Android
The Web Serial API provides an interface for connecting to serial devices, either through a serial port on the user's system or removable USB and Bluetooth devices that emulate a serial port. Now it is supported on Android.
Users, especially in the educational, hobbyist, and industrial sectors, connect peripheral devices to their computers that require custom software to control. For example, robotics are often used to teach computer programming and electronics in schools. This requires software which can upload code to a robot or control it remotely. In an industrial or hobbyist setting a piece of equipment such as a mill, laser cutter or 3D printer is controlled by a program running on a connected computer. These devices are often controlled by small microcontrollers using a serial connection.
For more information, see the Web Serial API guide on web.dev and the Web Serial specification.
Tracking bug #365514951 | ChromeStatus.com entry
SharedWorker on Android
For a long time, SharedWorker has been disabled on Android due to concerns about its unpredictable process lifecycle. SharedWorker instances might terminate unexpectedly, without notifying users or web developers.
However, a recent discussion on GitHub (see the GitHub discussion) suggests that the unpredictable nature of SharedWorker's process lifecycle might not be as significant an issue as previously thought. Based on this, SharedWorker is being re-enabled on Android while this behavior is investigated to ensure a stable and reliable experience.
Tracking bug #40290702 | ChromeStatus.com entry | Spec
Web APIs
WebGPU: linear_indexing feature
This feature adds functionality to the WebGPU spec after its first shipment in a browser.
Adds two new compute shader built-in values for user quality of life. These are implemented for all backends (as polyfills of existing built-in values).
Tracking bug #482840564 | ChromeStatus.com entry | Spec
Web Authentication Immediate UI mode
A new mode for navigator.credentials.get() that causes browser sign-in UI to be displayed to the user if there is a passkey or password for the site that is immediately known to the browser, or else rejects the promise with NotAllowedError if there is no such credential available. This allows the site to avoid showing a sign-in page if the browser can offer a choice of sign-in credentials that are likely to succeed, while still allowing a traditional sign-in page flow for cases where there are no such credentials.
Tracking bug #408002783 | ChromeStatus.com entry | Spec
Get Secure Payment Confirmation capabilities
Adds a new static method to the Payment Request that lets web developers get the capabilities of the browser's implementation of Secure Payment Confirmation.
This helps web developers know what capabilities are available for Secure Payment Confirmation so they can decide whether or not they want to use Secure Payment Confirmation with those capabilities.
Tracking bug #484043990 | ChromeStatus.com entry | Spec
Extended lifetime shared workers
This update adds a new option, extendedLifetime: true, to the SharedWorker constructor. This new option requests that the shared worker be kept alive even after all current clients have unloaded. This lets pages perform asynchronous work that requires JavaScript after a page unloads, without needing to rely on a service worker.
Tracking bug #400473072 | ChromeStatus.com entry | Spec
Prompt API
The Prompt API gives web developers direct access to a browser-provided on-device AI language model. The API design offers fine-grained control, aligned with cloud API shapes, for progressively enhancing sites with model interactions tailored to individualized use cases. This complements task-based language model APIs, for example, Summarizer API, as well as a variety of APIs and frameworks for generalized on-device inference with developer-supplied ML models.
The initial implementation supports text, image, and audio inputs. In addition, response constraints ensure that generated text conforms with predefined regular expression and JSON schema formats.
This supports a variety of use cases, from generating image captions and performing visual searches to transcribing audio, classifying sound events, generating text following specific instructions, and extracting information or insights from multi-modal source material.
Tracking bug #417526788 | ChromeStatus.com entry | Spec
Network and connectivity
IDNA ContextJ rules
IDNA is the mechanism for non-ASCII characters in domain names. It encodes a URL like http://네이버.한국/ as http://xn--950bt9s8xi.xn--3e0b707e/ (a redirect to naver.com).
The URL specification sets the CheckJoiners flag, which enables the ContextJ rules in IDNA2008. This disallows ZWNJ (U+200C ZERO WIDTH NON-JOINER) and ZWJ (U+200D ZERO WIDTH JOINER) in most places in URLs. The implementation passes the UIDNA_CHECK_CONTEXTJ option to ICU, where this rule is implemented.
Tracking bug #40765949 | ChromeStatus.com entry | Spec
Reuse no-store images on same-src reassignment
Allow same-document available-image reuse to bypass Cache-Control: no-store reload when the same src value is reassigned to an element. Previously, Blink would re-fetch the image even though it was already decoded and available in the document. This aligns with existing Gecko and WebKit behavior.
Tracking bug #486562295 | ChromeStatus.com entry | Spec
Performance
ContentType in Resource Timing
Adds the contentType field to PerformanceResourceTiming to hold a string corresponding to the Content-Type HTTP header of the fetched resource as returned by the server.
Tracking bug #1366706 | ChromeStatus.com entry | Spec
WebRTC Datachannel: Always negotiate data channels
Implements a WebRTC extension alwaysNegotiateDataChannels which defines a way for the application to negotiate data channels in the SDP offer before creating a datachannel. This also negotiates the data m= section before any audio or video m sections and uses it as the "offerer-tagged m= section" for BUNDLE.
This means that:
const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true }); const offer = await pc.createOffer();will create an offer with an application m-line in the SDP and that:
const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true }); pc.addTransceiver('audio'); pc.createDataChannel('somechannel'); const offer = await pc.createOffer();will create an offer that negotiates an application m-line followed by an audio m-line in the SDP.
Tracking bug #433898678 | ChromeStatus.com entry | Spec
New origin trials
Declarative CSS module scripts
Declarative CSS Modules Scripts are an extension of the existing script-based CSS Module Scripts. They allow for developers to share declarative stylesheets with shadow roots, including declarative shadow roots. Developers can define inline style modules with
Original source - May 5, 2026
- Date parsed from source:May 5, 2026
- First seen by Releasebot:May 24, 2026
What's new in Dev Tools (Chrome 148)
Google Chrome releases Chrome 148 with the full-page accessibility tree as the default, richer DevTools debugging for speculative loads and crash reports, clearer ad provenance tooltips, and new agent-focused DevTools features, plus a range of reliability and workflow improvements.
Dev Tools for agents
The Chrome DevTools MCP server and CLI have been updated to version 0.25.0, with several new features. This release also includes various reliability fixes, such as automatic handling of browser dialogs to prevent script interruptions during tool execution.
Key features added since the last update include:
- Chrome Extension debugging: Agents can now target and debug Chrome extensions, allowing them to inspect extension-specific pages and background scripts directly.
- WebMCP tool calling: New experimental tools enable agents to list and execute WebMCP tools exposed by web pages.
- Agentic browsing in Lighthouse: A new "Agentic Browsing" audit category evaluates whether a site is optimized for the agentic web, such as by validating WebMCP tool registrations.
Experimental: WebMCP is a proposed web standard in early preview. Configure DevTools for agents with the --channel=canary and --categoryExperimentalWebmcp configuration options to test related features.
To start using these and more features, check out the GitHub repository with detailed release notes.
Full accessibility tree by default
The full accessibility tree is officially leaving its experimental phase and remains the default view in the Elements panel. With this transition, the legacy breadcrumb-style accessibility tree has been removed from source in favor of this more comprehensive view.
To streamline the interface, Chrome 148 removes the floating action button previously used to toggle between the DOM and accessibility trees. You can now switch views using a dedicated toggle located within the Accessibility tab in the sidebar.
Speculative loads enhancements
The Speculative loads section got more powerful for debugging preloading:
- Text Filtering: You can now filter the list of rules and attempts using free text or keyed filters (e.g., url:, status:).
- HTTP Status Codes: For failed attempts, the actual HTTP status code (like 404 or 503) is now displayed directly in the grid.
- Form Submissions: The panel now explicitly identifies and displays form_submission as a trigger for preloading.
Crash report context
A new Crash reports section in the Application panel sidebar lets you inspect crash reports generated by the browser. For each report, DevTools now displays a detailed Context grid containing key-value attributes related to the crash, making it easier to correlate crashes with specific frame states or configurations.
Name-only @container queries
DevTools now supports name-only @container queries. Previously, queries without a descriptor (like @container sidebar) might not be properly reflected in the Styles tab. They are now correctly rendered and linkable in the style properties section.
Collapsed non-contributing sections
To reduce clutter, the Styles tab now automatically collapses sections that don't contribute any active declarations. Rules that are empty or contain only overloaded properties (overridden by other rules) will be collapsed by default, while sections with disabled properties remain expanded for easier debugging.
Request order and recommended throttling
- Request # Column: You can now add an optional Request # column to the Network panel. This column displays the absolute order in which requests were initiated and supports sorting.
- Recommended Throttling: The Network panel's throttling drop-down now highlights recommended presets based on real-world field data (CrUX) from your site's users, aligning it with the recommendations already found in the Performance panel.
Ad provenance in adorners
DevTools now provides more transparency into why elements are tagged as ads. When you hover over an ad adorner in the Elements panel, a new tooltip shows the ad provenance.
The tooltip provides context on why the element was identified as an ad, such as:
- Script ancestry: Which scripts were involved in creating the element.
- Filter list rules: The specific rule from a filter list (e.g., EasyList) that matched the element or the resource it loaded.
This helps developers and privacy researchers understand the "why" behind ad tagging and helps in debugging false positives.
Miscellaneous highlights
- Emulation: Fixed a long-standing bug where taking full-page screenshots would occasionally leave the viewport in a "leaked" or broken state.
- WebAuthn: Added support for testing hmac-secret and hmac-secret-mc extensions with virtual authenticators.
- Memory: Improved feedback when manually triggering garbage collection with a new snackbar notification.
- Object Inspection: Removed the show-option-to-expose-internals-in-heap-snapshot experiment; the checkbox is now shown by default.
- May 5, 2026
- Date parsed from source:May 5, 2026
- First seen by Releasebot:May 24, 2026
Chrome 148 Bookmark collections drop down
Google Chrome releases Chrome 148 stable for Android, ChromeOS, Linux, macOS, and Windows with broad web platform upgrades, including new CSS capabilities, improved media loading, tighter spec compliance, Android API support, stronger WebGPU and Web Authentication features, and several origin trials.
Unless otherwise noted, the following changes apply to Chrome 148 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS and UI
CSS name-only container queries
A CSS query container can be queried based on its container-name only, and the container does not need any container-type set:
#container { container-name: --foo; } @container --foo { input { background-color: green; } }<div id="container"> <div><input></div> </div>Previously, @container required a container type in addition to the name.
Tracking bug #40287550 | ChromeStatus.com entry | Spec
At-rule: CSS feature detection
This feature adds an at-rule() function to CSS @supports which enables authors to feature-detect support for CSS at-rules.
Tracking bug #40211832 | ChromeStatus.com entry | Spec
Open Font Format avar2 text shaping and glyph rendering
Version 2 of the avar (Axis Variations) table enables font designers to create variable fonts with better control over interpolation. While the original variable font spec handles axes independently, avar2 allows axes to influence one another. This leads to fonts that are easier to use for content authors to use, and enable compact storage.
Avar2 works by using the same familiar concepts of font variations, but applies the variable delta values to the design axis specifications itself. In addition, it lets you do this over a range of multiple axes.
As an example, it lets font designers create "meta sliders" which control multiple variation axes at once, alleviating the user from fine-tuning and finding a useful corner of the font's design space.
Avar2 gives font designers better control over the usable variation space of their font, and lets them coordinate the adjustment of design axes across several axes.
By defining the relationships between axes mathematically within the avar version 2 table, fonts can achieve complex designs with fewer masters, leading to smaller file sizes, because the interpolation is stored more efficiently.
Tracking bug #40246300 | ChromeStatus.com entry | Spec
The revert-rule keyword
The revert-rule keyword rolls back the cascade to the previous rule, similar to how revert-layer rolls back the cascade to the previous layer. For example:
div { color: green; } div { color: revert-rule; /* Effectively green */ }This is especially useful in combination with conditionals, because it lets you eliminate the current rule if some condition is not met:
div { display: if(style(--layout: fancy): grid; else: revert-rule); }Tracking bug #393582263 | ChromeStatus.com entry | Spec
Lazy loading for video and audio elements
Adds the loading attribute to and elements, letting developers defer media resource loading until the element is near the viewport using loading="lazy". This matches the existing lazy loading behavior for and elements, improving page load performance and reducing data usage.
Tracking bug #469111735 | ChromeStatus.com entry | Spec
text-decoration-skip-ink: all
Add support for the all value for the CSS text-decoration-skip-ink property.
The text-decoration-skip-ink property already supports auto and none. The all value extends this by unconditionally applying ink-skipping to all glyphs —including CJK characters—whereas auto leaves CJK characters un-skipped because ink-skipping tends to produce undesirable visual results for ideographic scripts at typical underline positions.
With text-decoration-skip-ink: all, developers who have adjusted text-underline-position or text-underline-offset to avoid clashing with CJK glyphs can explicitly opt in to ink-skipping for those characters as well.
Tracking bug #40675832 | ChromeStatus.com entry | Spec
Correctly set dropEffect for dragEnter, dragLeave, and dragOver events
Correctly set dropEffect for dragEnter, dragLeave, and dragOver events
The drag and drop specifications require the dataTransfer's object dropEffect attribute to have certain predetermined values on dragEnter, dragOver, and dragLeave. Drag enter and drag over should have a dropEffect based on the current effectAllowed, and dragLeave should always have a none dropEffect. Currently, Chromium doesn't adhere to these rules. With the launch of this feature, Chromium will start respecting the specification and assigning the correct values to this attribute so that web developers can start relying on it.
Tracking bug #434151262 | ChromeStatus.com entry | Spec
Pointer event suppression on drag start
According to the HTML spec, when a drag starts the user agent should send the appropriate events to the drag source to indicate that the pointer event stream has ended, and that it shouldn't expect any more events from this pointer. This code had been partially implemented for mouse events and fully implemented for touch drags on Android. With the work in this feature, we aim to fully satisfy this spec requirement on all other platforms. Practically, this means that after a drag has started the drag source will now receive the pointercancel, pointerout, and pointerleave events to indicate that the current event stream has finished.
Tracking bug #452372355 | ChromeStatus.com entry | Spec
Capabilities
Manifest localization
Supports localization of manifest members so apps can adapt their names, descriptions, icons, and shortcuts to the user's language and region. Developers provide localized values in the web app manifest, and the browser automatically selects the appropriate resources based on the user's language settings, introducing language support across different markets.
Learn more in Localization support for web app manifests.
Tracking bug #380491647 | ChromeStatus.com entry | Spec
Web on Android
Web Serial API on Android
The Web Serial API provides an interface for connecting to serial devices, either through a serial port on the user's system or removable USB and Bluetooth devices that emulate a serial port. Now it is supported on Android.
Users, especially in the educational, hobbyist, and industrial sectors, connect peripheral devices to their computers that require custom software to control. For example, robotics are often used to teach computer programming and electronics in schools. This requires software which can upload code to a robot or control it remotely. In an industrial or hobbyist setting a piece of equipment such as a mill, laser cutter or 3D printer is controlled by a program running on a connected computer. These devices are often controlled by small microcontrollers using a serial connection.
For more information, see the Web Serial API guide on web.dev and the Web Serial specification.
Tracking bug #365514951 | ChromeStatus.com entry
SharedWorker on Android
For a long time, SharedWorker has been disabled on Android due to concerns about its unpredictable process lifecycle. SharedWorker instances might terminate unexpectedly, without notifying users or web developers.
However, a recent discussion on GitHub (see the GitHub discussion) suggests that the unpredictable nature of SharedWorker's process lifecycle might not be as significant an issue as previously thought. Based on this, SharedWorker is being re-enabled on Android while this behavior is investigated to ensure a stable and reliable experience.
Tracking bug #40290702 | ChromeStatus.com entry | Spec
Web APIs
WebGPU: linear_indexing feature
This feature adds functionality to the WebGPU spec after its first shipment in a browser.
Adds two new compute shader built-in values for user quality of life. These are implemented for all backends (as polyfills of existing built-in values).
Tracking bug #482840564 | ChromeStatus.com entry | Spec
Web Authentication Immediate UI mode
A new mode for navigator.credentials.get() that causes browser sign-in UI to be displayed to the user if there is a passkey or password for the site that is immediately known to the browser, or else rejects the promise with NotAllowedError if there is no such credential available. This allows the site to avoid showing a sign-in page if the browser can offer a choice of sign-in credentials that are likely to succeed, while still allowing a traditional sign-in page flow for cases where there are no such credentials.
Tracking bug #408002783 | ChromeStatus.com entry | Spec
Get Secure Payment Confirmation capabilities
Adds a new static method to the Payment Request that lets web developers get the capabilities of the browser's implementation of Secure Payment Confirmation.
This helps web developers know what capabilities are available for Secure Payment Confirmation so they can decide whether or not they want to use Secure Payment Confirmation with those capabilities.
Tracking bug #484043990 | ChromeStatus.com entry | Spec
Extended lifetime shared workers
This update adds a new option, extendedLifetime: true, to the SharedWorker constructor. This new option requests that the shared worker be kept alive even after all current clients have unloaded. This lets pages perform asynchronous work that requires JavaScript after a page unloads, without needing to rely on a service worker.
Tracking bug #400473072 | ChromeStatus.com entry | Spec
Prompt API
The Prompt API gives web developers direct access to a browser-provided on-device AI language model. The API design offers fine-grained control, aligned with cloud API shapes, for progressively enhancing sites with model interactions tailored to individualized use cases. This complements task-based language model APIs, for example, Summarizer API, as well as a variety of APIs and frameworks for generalized on-device inference with developer-supplied ML models.
The initial implementation supports text, image, and audio inputs. In addition, response constraints ensure that generated text conforms with predefined regular expression and JSON schema formats.
This supports a variety of use cases, from generating image captions and performing visual searches to transcribing audio, classifying sound events, generating text following specific instructions, and extracting information or insights from multi-modal source material.
Tracking bug #417526788 | ChromeStatus.com entry | Spec
Network and connectivity
IDNA ContextJ rules
IDNA is the mechanism for non-ASCII characters in domain names. It encodes a URL like http://네이버.한국/ as http://xn--950bt9s8xi.xn--3e0b707e/ (a redirect to naver.com).
The URL specification sets the CheckJoiners flag, which enables the ContextJ rules in IDNA2008. This disallows ZWNJ (U+200C ZERO WIDTH NON-JOINER) and ZWJ (U+200D ZERO WIDTH JOINER) in most places in URLs. The implementation passes the UIDNA_CHECK_CONTEXTJ option to ICU, where this rule is implemented.
Tracking bug #40765949 | ChromeStatus.com entry | Spec
Reuse no-store images on same-src reassignment
Allow same-document available-image reuse to bypass Cache-Control: no-store reload when the same src value is reassigned to an element. Previously, Blink would re-fetch the image even though it was already decoded and available in the document. This aligns with existing Gecko and WebKit behavior.
Tracking bug #486562295 | ChromeStatus.com entry | Spec
Performance
ContentType in Resource Timing
Adds the contentType field to PerformanceResourceTiming to hold a string corresponding to the Content-Type HTTP header of the fetched resource as returned by the server.
Tracking bug #1366706 | ChromeStatus.com entry | Spec
WebRTC Datachannel: Always negotiate data channels
Implements a WebRTC extension alwaysNegotiateDataChannels which defines a way for the application to negotiate data channels in the SDP offer before creating a datachannel. This also negotiates the data m= section before any audio or video m sections and uses it as the "offerer-tagged m= section" for BUNDLE.
This means that:
const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true }); const offer = await pc.createOffer();will create an offer with an application m-line in the SDP and that:
const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true }); pc.addTransceiver('audio'); pc.createDataChannel('somechannel'); const offer = await pc.createOffer();will create an offer that negotiates an application m-line followed by an audio m-line in the SDP.
Tracking bug #433898678 | ChromeStatus.com entry | Spec
New origin trials
Declarative CSS module scripts
Declarative CSS Modules Scripts are an extension of the existing script-based CSS Module Scripts. They allow for developers to share declarative stylesheets with shadow roots, including declarative shadow roots. Developers can define inline style modules with
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official product update announcements from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.