Google Chrome Updates & Release Notes
98 updates curated from 99 sources by the Releasebot Team. Last updated: Jun 5, 2026
- 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 All of your release notes in one feed
Join Releasebot and get updates from Google and hundreds of other software products.
- 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 - May 5, 2026
- Date parsed from source:May 5, 2026
- First seen by Releasebot:May 14, 2026
Chrome 148 Bookmark collections drop down
Google Chrome releases Chrome 148 with major web platform updates for CSS, media, performance, networking, WebGPU, WebRTC, and web authentication, plus Android support for Web Serial and SharedWorker and new origin trials for emerging APIs and AI-powered capabilities.
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 6, 2026
What's new in Dev Tools (Chrome 148)
Google Chrome adds deeper DevTools and accessibility updates, making the full-page accessibility tree the default, surfacing ad provenance and crash report context, and improving Speculation Rules debugging. It also expands Network, WebAuthn, and agent tooling with reliability fixes and new diagnostics.
Dev Tools for Agents
The Chrome DevTools MCP server and CLI have been updated to version 0.24.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.
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 6, 2026
Chrome 148 Bookmark collections drop down
Google Chrome releases Chrome 148 for Android, ChromeOS, Linux, macOS, and Windows with broad CSS, web API, and performance upgrades, plus Android support for Web Serial and SharedWorker. It also adds new origin trials for emerging web features and on-device AI.
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
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
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 - Apr 22, 2026
- Date parsed from source:Apr 22, 2026
- First seen by Releasebot:May 24, 2026
What's New in Web GPU (Chrome 147-148)
Google Chrome releases WebGPU and WGSL updates, adding the linear_indexing extension for simpler compute shader indexing, expanding Linux WebGPU support to modern NVIDIA drivers on Wayland, and bringing new Dawn adapter property queries.
WGSL linear_indexing extension
The WGSL language extension linear_indexing lets you use the following built-in values in workgroups:
- global_invocation_index: The current invocation's linear position within the total compute shader grid. A u32 input value calculated based on the global_invocation_id, workgroup_size, and num_workgroups.
- workgroup_index: The linear position of the current workgroup within the overall compute shader grid. A u32 input value where all invocations within the same workgroup share the same index.
The extension addresses manual index calculation from 3D coordinates, which is a repetitive, error-prone process. By moving this logic into the language itself, WGSL improves code readability and eliminates common repetitive calculations.
This language extension can be feature-detected using navigator.gpu.wgslLanguageFeatures. See the following example and the intent to ship.
WebGPU on Linux NVIDIA
Following the earlier rollout of WebGPU on Linux, support is expanding to include modern NVIDIA drivers (2024-05) on Wayland. See issue 442791440.
Dawn updates
The wgpu::FeatureName::AdapterPropertiesDRM, only available on Vulkan, lets you query Linux DRM information about the adapter. See Dawn CL 299575.
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 147-148 Highlights:
- WGSL linear_indexing extension
- WebGPU on Linux NVIDIA
- Dawn updates
- Apr 22, 2026
- Date parsed from source:Apr 22, 2026
- First seen by Releasebot:Apr 24, 2026
What's New in Web GPU (Chrome 147-148)
Google Chrome adds WGSL linear_indexing for simpler compute shader indexing, expands WebGPU on Linux to modern NVIDIA drivers on Wayland, and brings Dawn updates for querying Linux DRM adapter properties.
WGSL linear_indexing extension
The WGSL language extension linear_indexing lets you use the following built-in values in workgroups:
- global_invocation_index: The current invocation's linear position within the total compute shader grid. A u32 input value calculated based on the global_invocation_id, workgroup_size, and num_workgroups.
- workgroup_index: The linear position of the current workgroup within the overall compute shader grid. A u32 input value where all invocations within the same workgroup share the same index.
The extension addresses manual index calculation from 3D coordinates, which is a repetitive, error-prone process. By moving this logic into the language itself, WGSL improves code readability and eliminates common repetitive calculations.
This language extension can be feature-detected using navigator.gpu.wgslLanguageFeatures. See the following example and the intent to ship.
[Code example omitted for brevity]
WebGPU on Linux NVIDIA
Following the earlier rollout of WebGPU on Linux, support is expanding to include modern NVIDIA drivers (2024-05) on Wayland. See issue 442791440.
Dawn updates
The wgpu::FeatureName::AdapterPropertiesDRM, only available on Vulkan, lets you query Linux DRM information about the adapter. See Dawn CL 299575.
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 147-148
- WGSL linear_indexing extension
- WebGPU on Linux NVIDIA
- Dawn updates
- Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:May 26, 2026
Chrome 147
Google Chrome releases Chrome 147 with major CSS and SVG upgrades, new WebXR and JavaScript capabilities, stronger local network access protections, improved autofill and preload support, and a Rust-based XML parser for safer parsing.
CSS and UI
Element-scoped view transitions
Exposes element.startViewTransition() on arbitrary HTML elements. The element establishes a scope for the transition, which means that the transition pseudo-elements are affected by ancestor clips and transforms, and multiple transitions on separate elements can run concurrently.
CSS contrast-color()
CSS contrast-color() function helps meet contrast requirements for accessibility. It can be used anywhere in CSS where a color value is expected. It takes a color value argument and returns either 'black' or 'white', depending on which provides the highest contrast against the color argument.
Timeline named range scroll
This feature expands the set of named ranges for view timelines by adding a scroll range to the existing set of entry, exit, cover, and contain.
CSS border-shape property
The CSS border-shape property lets you create non-rectangular borders with any arbitrary shape, for example, a polygon, circle, or shape(). Although border-shape accepts the same shapes as clip-path, it is fundamentally different. border-shape defines the shape of the border, decorates it, and clips only the inside. border-shape has two variants: one that strokes a shape and another that fills between two shapes.
CSSPseudoElement interface
The CSSPseudoElement interface represents a pseudo-element in JavaScript. CSSPseudoElement is returned from Element.pseudo(type), where type is currently ::after, ::before, or ::marker. CSSPseudoElement is a proxy object that represents a pseudo-element. Unlike a pseudo-element, a CSSPseudoElement always exists. It has attributes and methods including type (string representing the pseudo-element's type), element (the pseudo-element's ultimate originating element), parent (the pseudo-element's originating element), and pseudo(type) method to retrieve nested pseudo-elements.
Pseudo target on events
Specific events now include a .pseudoTarget, which is either CSSPseudoElement (if the interaction was with a pseudo-element) or null. This provides more specific information about the event origin, e.g., indicating that a ::after pseudo-element was clicked, not just the ultimate originating element (Event.target). Event.target remains unchanged.
Decouple *-width and *-style properties
Chrome 147 aligns with updated CSS specifications for the behavior of the border-width, outline-width, and column-rule-width properties. Previously, if the corresponding border-style, outline-style, or column-rule-style was set to none or hidden, the computed width was forced to 0px regardless of the specified value. Now, computed values always reflect the author-specified values, independent of the *-style property. Resolved values from getComputedStyle() for outline-width and column-rule-width also reflect specified values. This change aligns Chrome with Firefox and WebKit.
Support path attribute on SVG element
Adds support for the path attribute on the SVG element. This lets developers define text path geometry inline using SVG path data and reduces the need for separately defined elements. The element resolves its text path geometry with rules prioritizing path attribute over href attribute, consistent with SVG 2 specification and other browser engines.
Device
WebXR Plane Detection
The WebXR Plane Detection API lets sites retrieve the set of planes detected in the user's environment. This is less work for developers and more powerful than using the depth-sensing WebXR feature. Semantic labeling information is exposed when available, providing better knowledge about the world.
DOM
JSON and style support for link rel=modulepreload
Adds support for JSON and style module types as destinations. Previously, only script-like module scripts were supported. Now style modules and JSON modules can be preloaded.
XML Parsing in Rust for non XSLT scenarios
Implements the Rust XML parser for scenarios where no XSLT processing is required. This improves security by eliminating memory corruption bugs in XML parsing, replacing libxml2 (written in C) with a safe alternative. XSLT is being deprecated, but safe Rust XML parsing can be used where XSLT is not required.
Graphics
WebXR Layers
WebXR Layers offers a more efficient way to draw immersive content. It supports native color and depth textures, texture arrays, and different layer types managed by the system compositor.
JavaScript
Math.sumPrecise
Implements a TC39 proposal to add a method to sum multiple values in JavaScript. Adds an iterable-taking Math.sumPrecise method that returns the sum of the values in the iterable using a more precise algorithm than naive summation.
Network / Connectivity
Request.isReloadNavigation attribute
Adds the read-only boolean attribute isReloadNavigation to the Fetch API's Request interface. It indicates whether the current navigation request was initiated as a user-triggered reload (e.g., Refresh button, location.reload(), or history.go(0)). This signal is primarily exposed on the Request object within a Service Worker's FetchEvent.
Performance
Update Device Memory API limits
Updates to a new set of possible values for the Device Memory API: Android: 1, 2, 4, 8; Others: 2, 4, 8, 16, 32. These replace old values of 0.25, 0.5, 1, 2, 4, and 8. This reduces fingerprinting risks at the lower end and allows better usage and segmenting of high-end devices.
Local Network Access (LNA)
Local Network Access restrictions on service worker WindowClient.navigate()
Adds LNA restrictions to WindowClient.navigate() calls to prevent websites from unilaterally making requests to local networks and devices. Uses WindowClient as the initiator to determine if navigation is an LNA request. Applies only if the WindowClient being navigated is a subframe; no LNA restrictions on main frame navigations currently.
Local network access restrictions for WebTransport
Restricts ability to make requests to the user's local network using WebTransport, gated behind a permission prompt. Local network requests are those from public websites to local IP or loopback, or from local websites to loopback. Permission is restricted to secure contexts.
Local network access restrictions for WebSockets
LNA restrictions now include WebSockets. WebSockets connections to local addresses trigger permission prompts. Current LNA enterprise policies still apply.
Isolated Web Apps (IWA)
Web Printing API
Enables deeper integration with printer-related functionality in Isolated Web Apps. Provides JavaScript methods to query local printers, submit print jobs, and manage print job options and status, relying on Internet Printing Protocol (IPP) specifications.
Origin trials
Prerender cross-origin iframes
Prerenders cross-origin iframes using an opt-in response header Supports-Loading-Mode: prerender-cross-origin-frames.
Autofill event
Adds an autofill event that lets developers modify forms to fit autofilled data and notify the browser when done.
WebNN
Enables web applications and frameworks to take advantage of native OS services for machine learning and underlying hardware capabilities, helping implement consistent, efficient, and reliable ML experiences on the web.
Deprecations and removals
Remove Inline XSLT for production of SVG
Deprecates and removes inline XSLT processing for SVG production, a special case of XSLT processing considered virtually non-existent on the web. Rolls out in sync with experimental testing of the Rust-based XML parser; not immediately deployed to 100% in Chrome 147.
Original source - Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:May 14, 2026
Chrome 147
Google Chrome 147 releases a broad set of web platform upgrades across CSS, SVG, WebXR, JavaScript, networking, and security. It adds new view transitions, contrast-color(), SVG textPath path support, stronger local network access protections, and fresh APIs for autofill, WebNN, and precise math.
Unless otherwise noted, the following changes apply to Chrome 147 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS and UI
Element-scoped view transitions
Exposes element.startViewTransition() on arbitrary HTML elements. The element establishes a scope for the transition, which means that the transition pseudo-elements are affected by ancestor clips and transforms, and multiple transitions on separate elements can run concurrently.
CSS contrast-color()
This function helps you meet contrast requirements for accessibility.
You can use the contrast-color() function anywhere in CSS where a color value is expected. It takes a color value argument and returns either 'black' or 'white', depending on which provides the highest contrast against the color argument.
Timeline named range scroll
This feature expands the set of named ranges for view timelines by adding a scroll range to the existing set of entry, exit, cover, and contain.
CSS border-shape property
The CSS border-shape property lets you create non-rectangular borders with any arbitrary shape, for example, a polygon, circle, or shape().
Although border-shape accepts the same shapes as clip-path, it is fundamentally different. border-shape defines the shape of the border, decorates it, and clips only the inside.
border-shape has two variants: one that strokes a shape and another that fills between two shapes.
CSSPseudoElement interface
The CSSPseudoElement interface represents a pseudo-element in JavaScript.
CSSPseudoElement is returned from Element.pseudo(type), where type is currently ::after, ::before, or ::marker.
CSSPseudoElement is a proxy object that represents a pseudo-element. Unlike a pseudo-element, a CSSPseudoElement always exists.
The CSSPseudoElement has the following attributes and methods:
- The type attribute is a string that represents the pseudo-element's type.
- The element attribute is the pseudo-element's ultimate originating element.
- The parent attribute is the pseudo-element's originating element (either Element or CSSPseudoElement for nested pseudo-elements).
- The pseudo(type) method retrieves nested pseudo-elements.
Pseudo target on events
Specific events now include a .pseudoTarget, which is either CSSPseudoElement (if the interaction was with a pseudo-element) or null.
This provides more specific information about the event origin. For example, it indicates that a ::after pseudo-element was clicked, not just the ultimate originating element (Event.target). Note that Event.target remains unchanged, so the event only has extra information about pseudo-element interaction.
The events are UIEvent, AnimationEvent, and TransitionEvent.
mouseover, mouseout, mouseenter, mouseleave, and their pointer* counterparts are not yet supported.
Decouple *-width and *-style properties
Chrome 147 aligns with updated CSS specifications for the behavior of the border-width, outline-width, and column-rule-width properties. Previously, if the corresponding border-style, outline-style, or column-rule-style was set to none or hidden, the computed width of these properties was forced to 0px, regardless of the specified value.
With this change, the computed values of border-width, outline-width, and column-rule-width always reflect the author-specified values, independent of the *-style property. Additionally, the resolved values (as returned by getComputedStyle()) for outline-width and column-rule-width also reflect the specified values.
This change aligns Chrome with Firefox and WebKit, which have already implemented this behavior.
Support path attribute on SVG element
This change adds support for the path attribute on the SVG element. This lets developers define text path geometry inline using SVG path data and reduces the need for separately defined elements.
The element resolves its text path geometry using the following rules:
- If both path and href are present, geometry is resolved from the path attribute.
- If only the path attribute is present and parses successfully, the inline path definition is used.
- If the path attribute is absent or fails to parse, and an href attribute is provided, the referenced element is used as a fallback.
- Existing href-only behavior is preserved without change.
This implementation follows the SVG 2 specification's definition of the path attribute on . The resolution behavior is consistent with other browser engines, which improves interoperability and standards compliance. Note: When both path and href are specified on , path now takes precedence, according to the SVG 2 specification.
Device
WebXR Plane Detection
The WebXR Plane Detection API lets sites retrieve the set of planes detected in the user's environment. This is less work for developers and more powerful than using the depth-sensing WebXR feature. For example, planes such as walls that are occluded by objects can still be fully represented if the system is aware of the wall's boundaries. A depth map would show the wall, but objects in front of it would break it up, potentially obscuring the wall's full scope. Furthermore, semantic labeling information is exposed when the device is aware of such labels and they fit into predefined categories, which provides better knowledge about the world.
DOM
JSON and style support for link rel=modulepreload
Adds support for JSON and style module types as destinations.
is already supported in Chromium (see Chromestatus feature), but it currently only supports preloading script-like module scripts. This feature addresses a functionality gap because JSON and CSS module scripts are supported in Chromium elsewhere but not as destinations. You can preload style modules with and JSON modules with .XML Parsing in Rust for non XSLT scenarios
Implements the Rust XML parser for scenarios where no XSLT processing is required.
The Rust XML parser improves security by eliminating memory corruption bugs in XML parsing. It replaces the use of libxml2 (written in C) with a safe alternative.
We are deprecating XSLT. While this process continues, you can already use safe Rust XML parsing in scenarios where XSLT is not required.
Graphics
WebXR Layers
WebXR Layers offers a more efficient way to draw immersive content.
In addition to supporting native color and depth textures and texture arrays, it also provides support for different layer types that the system compositor manages (as opposed to JavaScript).
JavaScript
Math.sumPrecise
Implements a TC39 proposal to add a method to sum multiple values in JavaScript.
Add an iterable-taking Math.sumPrecise method that returns the sum of the values in the iterable using a more precise algorithm than naive summation.
Network / Connectivity
Request.isReloadNavigation attribute
Adds the read-only boolean attribute isReloadNavigation to the Fetch API's Request interface. This attribute indicates whether the current navigation request was initiated as a user-triggered reload (for example, using the Refresh button, location.reload(), or history.go(0)). This signal is primarily exposed on the Request object within a Service Worker's FetchEvent.
Performance
Update Device Memory API limits
Updates to a new set of possible values for the Device Memory API:
- Android: 1, 2, 4, 8
- Others: 2, 4, 8, 16, 32 These values replace the old values of 0.25, 0.5, 1, 2, 4, and 8, which have grown outdated.
This reduces fingerprinting risks at the lower end because device capabilities have improved since these were set. It also allows better usage and segmenting of high-end devices, as developers requested.
Local Network Access (LNA)
For more information about LNA, see Local Network Access.
Local Network Access restrictions on service worker WindowClient.navigate()
Local Network Access (LNA) restrictions were recently added to prevent websites from unilaterally making requests to local networks and local devices. These restrictions were added for service worker-initiated fetch requests but not for navigations that service workers perform through WindowClient.navigate().
This launch closes this gap by adding LNA restrictions to WindowClient.navigate() calls. It uses the WindowClient as the initiator of the navigation to determine if the navigation is an LNA request.
This only applies if the WindowClient being navigated is a subframe. Chrome does not currently enforce any LNA restrictions on main frame navigations.
Local network access restrictions for WebTransport
Restricts the ability to make requests to the user's local network using WebTransport, which is gated behind a permission prompt.
A local network request is any request from a public website to a local IP address or loopback, or from a local website (for example, an intranet) to loopback. Gating websites' ability to perform these requests behind a permission reduces sites' ability to use these requests to fingerprint the user's local network.
This permission is restricted to secure contexts.
Local network access restrictions for WebSockets
Local Network Access (LNA) restrictions are expanding to include WebSockets. WebSockets connections to local addresses now trigger permission prompts.
All current LNA enterprise policies still apply to the LNA WebSockets restrictions (LocalNetworkAccessAllowedForUrls, LocalNetworkAccessBlockedForUrls, and LocalNetworkAccessRestrictionsTemporaryOptOut).
Isolated Web Apps (IWA)
Web Printing API
This API enables deeper integration with printer-related functionality in Isolated Web Apps.
This API targets Isolated Web Apps only and follows the Isolated Web Apps process.
This API provides a set of JavaScript methods that let developers query local printers, submit print jobs to the most appropriate printers, and manage print job options and status. To represent these concepts, it relies on attribute names and semantics from the Internet Printing Protocol (IPP) specifications.
Origin trials
Prerender cross-origin iframes
Prerenders cross-origin iframes using an opt-in response header.
Browsers now prerender all cross-origin frames if the top-level frame's HTTP response includes Supports-Loading-Mode: prerender-cross-origin-frames.
Autofill event
Autofill is a key web feature that reduces friction for millions of users every day. However, getting autofill to work reliably with dynamic forms across multiple implementations requires significant effort.
This feature adds an autofill event that lets developers modify their forms to fit the autofilled data and notify the browser when they have done so.
WebNN
WebNN enables web applications and frameworks to take advantage of native operating system services for machine learning and the underlying hardware capabilities available on a user's computer. This helps implement consistent, efficient, and reliable ML experiences on the web.
Deprecations and removals
Remove Inline XSLT for production of SVG
A specially crafted XML file might contain an XSL stylesheet that transforms generic XML data into an SVG file.
For example, see gist.github.com.
This is a special case of XSLT processing that, according to recently introduced use counters XSLPIInSVGImage (UseCounter ID 5777) and XSLPIInSVGStandaloneDoc (UseCounter ID 5778), we consider virtually non-existent on the web. We want to deprecate and remove it before fully phasing out XSLT.
This rolls out in sync with experimental testing of the Rust-based XML parser. This won't immediately deploy to 100% in Chrome 147.
Original source - Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:Apr 23, 2026
What's new in Dev Tools (Chrome 147)
Google Chrome 147 adds automatic AI context selection, upgrades Gemini code suggestions to full code completion, modernizes Device Mode, and automatically decodes compressed network bodies. It also improves speculative loads, regex filtering, accessibility, and other DevTools workflows.
Chrome 147 introduces automatic context selection for AI assistance, upgrades code suggestions to full code completion, modernizes the Device Mode toolbar, brings automatic decoding of compressed network bodies, and several other enhancements.
Automatic context selection in AI assistance
One of the top feature requests for AI assistance was the ability to ask more open-ended questions. A new context selection agent now lets you ask questions without prior context selected, for example:
- "What are the slowest network requests on this page?" Previously, this wasn't possible as you had to select a specific network request.
- "What performance issues exist on the page?" DevTools will now automatically record a trace with your selected settings to answer this.
- "How do I use the animation panel?" or "Where is the high contrast setting in DevTools?", providing direct help with DevTools itself.
As part of this change, AI assistance can now also automatically switch context. It will intelligently update the context based on your actions when the chat is empty, while respecting your manual selections once a conversation has started.
DevTools for Agents
The Chrome DevTools MCP server and CLI have been updated to version 0.21.0, bringing significant improvements for multi-agent workflows, new auditing capabilities through Lighthouse, and an enhanced set of skills.
Key features added since the last update include:
- Integrated Lighthouse audits: You can now run Lighthouse audits directly through MCP, enabling automated performance and quality checks within your agentic workflows.
- Memory Leak Detection skill: Added a new skill for detecting memory leaks using the take_memory_snapshot tool.
- Accessibility skill improvements: The accessibility debugging skill has been refined to better leverage Lighthouse and provide more robust output.
- General usage skills: Dedicated skills for how to use the Chrome DevTools MCP server or the CLI, and how to troubleshoot installations help your agent make the most out of DevTools for agents.
- Multi-agent workflow support: The introduction of pageId routing allows multiple agents to precisely target and interact with specific browser pages in parallel.
To start using these features, check out the GitHub repository with detailed release notes.
Code generation
In Chrome 142 we introduced code suggestions by Gemini in the Console and Sources panels. With Chrome 147 this capability gets upgraded to full code generation.
To generate code, type a natural language comment describing the logic you need (for example, // Loop to check all img elements for valid alt attributes) and press Cmd+I (Mac) or Ctrl+I (Windows/Linux) to start generating.
Refreshed Device Mode toolbar
The Device Mode toolbar has been modernized to provide a more consistent and streamlined experience:
- Standardized Controls: Device selection, zoom levels, and Device Pixel Ratio (DPR) now use standard DevTools UI components, improving usability.
- Streamlined Zoom: The zoom menu is now cleaner, with the "Fit to window" option integrated directly into the percentage list. "Auto-adjust zoom" has been moved to its own dedicated toolbar button.
- Orientation Lock Support: DevTools now handles the screen.orientation.lock() API in device emulation. When a page locks the orientation, the emulated device rotates automatically to match the locked orientation, and the manual rotate button is disabled while the lock is active.
Chromium issues: 40807290
Decoded compressed bodies
Diagnosing issues with compressed resources is now much easier. Previously, if an HTTP request used Content-Encoding: gzip or deflate, the Payload view in the Network panel would show garbled binary data instead of the decoded content.
In Chrome 147, DevTools automatically decodes these compressed bodies, displaying the readable content directly under Payload.
Additionally, the request listing now includes Transfer Size information, providing a clearer picture of data usage over the wire - a detail also utilized by the AI Assistant to select requests better.
Chromium issues: 356158096
Regular expression filters for styles
You can now use regular expressions in the filter bars for the Styles, Computed, and Properties panels. Click the new Regular expression toggle button (.*) to enable. Then for example type padding|border to highlight all padding and border properties.
Chromium issue: 40706727
Speculative loads enhancements
Debugging preloading is more robust with new features in the Application > Speculative loads panel:
- Text Filtering: You can now filter the list of rules and attempts using free text or keyed filters (e.g., url:, action:, status:), with support for AND logic between multiple terms.
- Clear Button: A new clear button lets you reset the preloading model and clear the displayed rules and attempts.
- HTTP Status Codes: For failed prefetches, DevTools now shows the actual HTTP status code (e.g., 404) in both the status column and details pane, instead of a generic failure message.
Chromium issues: 479524246, 40926909
Miscellaneous
These are some noteworthy fixes and features in this release:
- Console: When all inline stack frames of an error are ignore-listed but the call stack contains non-ignored frames, a toggle now appears to help you focus on actionable code while hiding noisy library traces (379788109).
- Performance: The sidebar state (open/closed) is now persisted; if you close the sidebar, it stays closed across subsequent recordings (437340219).
- Settings: DevTools can now prompt you to restart the browser through an infobar when toggling certain experimental settings.
- Object Inspection: A new "Show all" context menu option in object views lets you toggle the visibility of nullish (null or undefined) properties (41187256).
- Elements: The "ad" adorner is no longer restricted to iframes and can now be shown for arbitrary elements tagged as ad-related by the backend (485493202).
- Instruction nodes: Processing Instruction nodes (like ) are now visible and editable in the DOM tree (484891675).
Accessibility
This release brings several accessibility refinements:
- Performance: The title help button in the performance metric cards is now always visible and keyboard-accessible, rather than only appearing on hover (487613506).
- Sources: Event listener breakpoints can now be checked or unchecked using the Space key (478890182).
- Settings: The Home and End keys now work for navigating to the first and last items of the shortcut list (481747256).
- Lighthouse: Improved screen reader announcements for category groups checkboxes (477643909).
- Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:Apr 23, 2026
Chrome 147
Google Chrome ships a broad 147 stable update with new CSS and SVG capabilities, richer pseudo-element and event support, WebXR plane detection and layers, safer Rust XML parsing, stronger local network access protections, plus new APIs for JavaScript, Fetch, printing, autofill, and WebNN.
Unless otherwise noted, the following changes apply to Chrome 147 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS and UI
Element-scoped view transitions
Exposes element.startViewTransition() on arbitrary HTML elements. The element establishes a scope for the transition, which means that the transition pseudo-elements are affected by ancestor clips and transforms, and multiple transitions on separate elements can run concurrently.
CSS contrast-color()
This function helps you meet contrast requirements for accessibility.
You can use the contrast-color() function anywhere in CSS where a color value is expected. It takes a color value argument and returns either 'black' or 'white', depending on which provides the highest contrast against the color argument.
Timeline named range scroll
This feature expands the set of named ranges for view timelines by adding a scroll range to the existing set of entry, exit, cover, and contain.
CSS border-shape property
The CSS border-shape property lets you create non-rectangular borders with any arbitrary shape, for example, a polygon, circle, or shape().
Although border-shape accepts the same shapes as clip-path, it is fundamentally different. border-shape defines the shape of the border, decorates it, and clips only the inside.
border-shape has two variants: one that strokes a shape and another that fills between two shapes.
CSSPseudoElement interface
The CSSPseudoElement interface represents a pseudo-element in JavaScript.
CSSPseudoElement is returned from Element.pseudo(type), where type is currently ::after, ::before, or ::marker.
CSSPseudoElement is a proxy object that represents a pseudo-element. Unlike a pseudo-element, a CSSPseudoElement always exists.
The CSSPseudoElement has the following attributes and methods:
- The type attribute is a string that represents the pseudo-element's type.
- The element attribute is the pseudo-element's ultimate originating element.
- The parent attribute is the pseudo-element's originating element (either Element or CSSPseudoElement for nested pseudo-elements).
- The pseudo(type) method retrieves nested pseudo-elements.
Pseudo target on events
Specific events now include a .pseudoTarget, which is either CSSPseudoElement (if the interaction was with a pseudo-element) or null.
This provides more specific information about the event origin. For example, it indicates that a ::after pseudo-element was clicked, not just the ultimate originating element (Event.target). Note that Event.target remains unchanged, so the event only has extra information about pseudo-element interaction.
The events are UIEvent, AnimationEvent, and TransitionEvent.
mouseover, mouseout, mouseenter, mouseleave, and their pointer* counterparts are not yet supported.
Decouple *-width and *-style properties
Chrome 147 aligns with updated CSS specifications for the behavior of the border-width, outline-width, and column-rule-width properties. Previously, if the corresponding border-style, outline-style, or column-rule-style was set to none or hidden, the computed width of these properties was forced to 0px, regardless of the specified value.
With this change, the computed values of border-width, outline-width, and column-rule-width always reflect the author-specified values, independent of the *-style property. Additionally, the resolved values (as returned by getComputedStyle()) for outline-width and column-rule-width also reflect the specified values.
This change aligns Chrome with Firefox and WebKit, which have already implemented this behavior.
Support path attribute on SVG element
This change adds support for the path attribute on the SVG element. This lets developers define text path geometry inline using SVG path data and reduces the need for separately defined elements.
The element resolves its text path geometry using the following rules:
- If both path and href are present, geometry is resolved from the path attribute.
- If only the path attribute is present and parses successfully, the inline path definition is used.
- If the path attribute is absent or fails to parse, and an href attribute is provided, the referenced element is used as a fallback.
- Existing href-only behavior is preserved without change.
This implementation follows the SVG 2 specification's definition of the path attribute on . The resolution behavior is consistent with other browser engines, which improves interoperability and standards compliance. Note: When both path and href are specified on , path now takes precedence, according to the SVG 2 specification.
Device
WebXR Plane Detection
The WebXR Plane Detection API lets sites retrieve the set of planes detected in the user's environment. This is less work for developers and more powerful than using the depth-sensing WebXR feature. For example, planes such as walls that are occluded by objects can still be fully represented if the system is aware of the wall's boundaries. A depth map would show the wall, but objects in front of it would break it up, potentially obscuring the wall's full scope. Furthermore, semantic labeling information is exposed when the device is aware of such labels and they fit into predefined categories, which provides better knowledge about the world.
DOM
JSON and style support for link rel=modulepreload
Adds support for JSON and style module types as destinations.
is already supported in Chromium (see Chromestatus feature), but it currently only supports preloading script-like module scripts. This feature addresses a functionality gap because JSON and CSS module scripts are supported in Chromium elsewhere but not as destinations. You can preload style modules with and JSON modules with .XML Parsing in Rust for non XSLT scenarios
Implements the Rust XML parser for scenarios where no XSLT processing is required.
The Rust XML parser improves security by eliminating memory corruption bugs in XML parsing. It replaces the use of libxml2 (written in C) with a safe alternative.
We are deprecating XSLT. While this process continues, you can already use safe Rust XML parsing in scenarios where XSLT is not required.
Graphics
WebXR Layers
WebXR Layers offers a more efficient way to draw immersive content.
In addition to supporting native color and depth textures and texture arrays, it also provides support for different layer types that the system compositor manages (as opposed to JavaScript).
JavaScript
Math.sumPrecise
Implements a TC39 proposal to add a method to sum multiple values in JavaScript.
Add an iterable-taking Math.sumPrecise method that returns the sum of the values in the iterable using a more precise algorithm than naive summation.
Network / Connectivity
Request.isReloadNavigation attribute
Adds the read-only boolean attribute isReloadNavigation to the Fetch API's Request interface. This attribute indicates whether the current navigation request was initiated as a user-triggered reload (for example, using the Refresh button, location.reload(), or history.go(0)). This signal is primarily exposed on the Request object within a Service Worker's FetchEvent.
Performance
Update Device Memory API limits
Updates to a new set of possible values for the Device Memory API:
- Android: 1, 2, 4, 8
- Others: 2, 4, 8, 16, 32 These values replace the old values of 0.25, 0.5, 1, 2, 4, and 8, which have grown outdated.
This reduces fingerprinting risks at the lower end because device capabilities have improved since these were set. It also allows better usage and segmenting of high-end devices, as developers requested. For more information, see Device Memory issue.
Local Network Access (LNA)
For more information about LNA, see Local Network Access.
Local Network Access restrictions on service worker WindowClient.navigate()
Local Network Access (LNA) restrictions were recently added to prevent websites from unilaterally making requests to local networks and local devices. These restrictions were added for service worker-initiated fetch requests but not for navigations that service workers perform through WindowClient.navigate().
This launch closes this gap by adding LNA restrictions to WindowClient.navigate() calls. It uses the WindowClient as the initiator of the navigation to determine if the navigation is an LNA request.
This only applies if the WindowClient being navigated is a subframe. Chrome does not currently enforce any LNA restrictions on main frame navigations.
Local network access restrictions for WebTransport
Restricts the ability to make requests to the user's local network using WebTransport, which is gated behind a permission prompt.
A local network request is any request from a public website to a local IP address or loopback, or from a local website (for example, an intranet) to loopback. Gating websites' ability to perform these requests behind a permission reduces sites' ability to use these requests to fingerprint the user's local network.
This permission is restricted to secure contexts.
Local network access restrictions for WebSockets
Local Network Access (LNA) restrictions are expanding to include WebSockets. WebSockets connections to local addresses now trigger permission prompts.
All current LNA enterprise policies still apply to the LNA WebSockets restrictions (LocalNetworkAccessAllowedForUrls, LocalNetworkAccessBlockedForUrls, and LocalNetworkAccessRestrictionsTemporaryOptOut).
Isolated Web Apps (IWA)
Web Printing API
This API enables deeper integration with printer-related functionality in Isolated Web Apps.
This API targets Isolated Web Apps only and follows the Isolated Web Apps process.
This API provides a set of JavaScript methods that let developers query local printers, submit print jobs to the most appropriate printers, and manage print job options and status. To represent these concepts, it relies on attribute names and semantics from the Internet Printing Protocol (IPP) specifications.
Origin trials
Prerender cross-origin iframes
Prerenders cross-origin iframes using an opt-in response header.
Browsers now prerender all cross-origin frames if the top-level frame's HTTP response includes Supports-Loading-Mode: prerender-cross-origin-frames.
Autofill event
Autofill is a key web feature that reduces friction for millions of users every day. However, getting autofill to work reliably with dynamic forms across multiple implementations requires significant effort.
This feature adds an autofill event that lets developers modify their forms to fit the autofilled data and notify the browser when they have done so.
WebNN
WebNN enables web applications and frameworks to take advantage of native operating system services for machine learning and the underlying hardware capabilities available on a user's computer. This helps implement consistent, efficient, and reliable ML experiences on the web.
Deprecations and removals
Remove Inline XSLT for production of SVG
A specially crafted XML file might contain an XSL stylesheet that transforms generic XML data into an SVG file.
For example, see gist.github.com.
This is a special case of XSLT processing that, according to recently introduced use counters XSLPIInSVGImage (UseCounter ID 5777) and XSLPIInSVGStandaloneDoc (UseCounter ID 5778), we consider virtually non-existent on the web. We want to deprecate and remove it before fully phasing out XSLT.
This rolls out in sync with experimental testing of the Rust-based XML parser. This won't immediately deploy to 100% in Chrome 147.
Original source - Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:Apr 7, 2026
What's new in Dev Tools (Chrome 147)
Google Chrome releases DevTools upgrades in Chrome 147, including automatic context selection for AI assistance, full code generation, a refreshed Device Mode toolbar, automatic decoding of compressed network bodies, and broader debugging and accessibility improvements.
Chrome 147 introduces automatic context selection for AI assistance, upgrades code suggestions to full code completion, modernizes the Device Mode toolbar, brings automatic decoding of compressed network bodies, and several other enhancements.
Automatic context selection in AI assistance
One of the top feature requests for AI assistance was the ability to ask more open-ended questions. A new context selection agent now lets you ask questions without prior context selected, for example:
- "What are the slowest network requests on this page?" Previously, this wasn't possible as you had to select a specific network request.
- "What performance issues exist on the page?" DevTools will now automatically record a trace with your selected settings to answer this.
- "How do I use the animation panel?" or "Where is the high contrast setting in DevTools?", providing direct help with DevTools itself.
As part of this change, AI assistance can now also automatically switch context. It will intelligently update the context based on your actions when the chat is empty, while respecting your manual selections once a conversation has started.
DevTools for Agents
The Chrome DevTools MCP server and CLI have been updated to version 0.21.0, bringing significant improvements for multi-agent workflows, new auditing capabilities through Lighthouse, and an enhanced set of skills.
Key features added since the last update include:
- Integrated Lighthouse audits: You can now run Lighthouse audits directly through MCP, enabling automated performance and quality checks within your agentic workflows.
- Memory Leak Detection skill: Added a new skill for detecting memory leaks using the take_memory_snapshot tool.
- Accessibility skill improvements: The accessibility debugging skill has been refined to better leverage Lighthouse and provide more robust output.
- General usage skills: Dedicated skills for how to use the Chrome DevTools MCP server or the CLI, and how to troubleshoot installations help your agent make the most out of DevTools for agents.
- Multi-agent workflow support: The introduction of pageId routing allows multiple agents to precisely target and interact with specific browser pages in parallel.
To start using these features, check out the GitHub repository with detailed release notes.
Code generation
In Chrome 142 we introduced code suggestions by Gemini in the Console and Sources panels. With Chrome 147 this capability gets upgraded to full code generation.
To generate code, type a natural language comment describing the logic you need (for example, // Loop to check all img elements for valid alt attributes) and press Cmd+I (Mac) or Ctrl+I (Windows/Linux) to start generating.
Refreshed Device Mode toolbar
The Device Mode toolbar has been modernized to provide a more consistent and streamlined experience:
- Standardized Controls: Device selection, zoom levels, and Device Pixel Ratio (DPR) now use standard DevTools UI components, improving usability.
- Streamlined Zoom: The zoom menu is now cleaner, with the "Fit to window" option integrated directly into the percentage list. "Auto-adjust zoom" has been moved to its own dedicated toolbar button.
- Orientation Lock Support: DevTools now handles the screen.orientation.lock() API in device emulation. When a page locks the orientation, the emulated device rotates automatically to match the locked orientation, and the manual rotate button is disabled while the lock is active.
Chromium issues: 40807290
Decoded compressed bodies
Diagnosing issues with compressed resources is now much easier. Previously, if an HTTP request used Content-Encoding: gzip or deflate, the Payload view in the Network panel would show garbled binary data instead of the decoded content.
In Chrome 147, DevTools automatically decodes these compressed bodies, displaying the readable content directly under Payload.
Additionally, the request listing now includes Transfer Size information, providing a clearer picture of data usage over the wire - a detail also utilized by the AI Assistant to select requests better.
Chromium issues: 356158096
Regular expression filters for styles
You can now use regular expressions in the filter bars for the Styles, Computed, and Properties panels. Click the new Regular expression toggle button (.*) to enable. Then for example type padding|border to highlight all padding and border properties.
Chromium issue: 40706727
Speculative loads enhancements
Debugging preloading is more robust with new features in the Application > Speculative loads panel:
- Text Filtering: You can now filter the list of rules and attempts using free text or keyed filters (e.g., url:, action:, status:), with support for AND logic between multiple terms.
- Clear Button: A new clear button lets you reset the preloading model and clear the displayed rules and attempts.
- HTTP Status Codes: For failed prefetches, DevTools now shows the actual HTTP status code (e.g., 404) in both the status column and details pane, instead of a generic failure message.
Chromium issues: 479524246, 40926909
Miscellaneous
These are some noteworthy fixes and features in this release:
- Console: When all inline stack frames of an error are ignore-listed but the call stack contains non-ignored frames, a toggle now appears to help you focus on actionable code while hiding noisy library traces (379788109).
- Performance: The sidebar state (open/closed) is now persisted; if you close the sidebar, it stays closed across subsequent recordings (437340219).
- Settings: DevTools can now prompt you to restart the browser through an infobar when toggling certain experimental settings.
- Object Inspection: A new "Show all" context menu option in object views lets you toggle the visibility of nullish (null or undefined) properties (41187256).
- Elements: The "ad" adorner is no longer restricted to iframes and can now be shown for arbitrary elements tagged as ad-related by the backend (485493202).
- Instruction nodes: Processing Instruction nodes (like ) are now visible and editable in the DOM tree (484891675).
Accessibility
This release brings several accessibility refinements:
- Performance: The title help button in the performance metric cards is now always visible and keyboard-accessible, rather than only appearing on hover (487613506).
- Sources: Event listener breakpoints can now be checked or unchecked using the Space key (478890182).
- Settings: The Home and End keys now work for navigating to the first and last items of the shortcut list (481747256).
- Lighthouse: Improved screen reader announcements for category groups checkboxes (477643909).
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.
Similar to Google Chrome with recent updates:
- Claude updates93 release notes · Latest May 28, 2026
- Claude Code updates336 release notes · Latest Jun 4, 2026
- ChatGPT updates171 release notes · Latest Jun 2, 2026
- Anthropic updates44 release notes · Latest Jun 2, 2026
- Codex updates177 release notes · Latest Jun 4, 2026
- OpenAI Models updates47 release notes · Latest May 28, 2026