Chrome 149

Stable release date: June 2nd, 2026

Unless otherwise noted, the following changes apply to Chrome 149 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.

CSS and UI

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

Clip text overflow on user interaction

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

Remove explicit border color UA stylesheet rule for tables

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

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