![Rachel Andrew](https://web.dev/images/authors/rachelandrew.jpg) Rachel Andrew Technical Writer [GitHub](https://github.com/rachelandrew) [LinkedIn](https://www.linkedin.com/in/rachelandrew) [Mastodon](https://front-end.social/@rachelandrew) [Bluesky](https://bsky.app/profile/rachelandrew.bsky.social) [Homepage](https://rachelandrew.co.uk)

<br />


Published: September 16, 2026

<br />

Unless otherwise noted, the following changes apply to the newest Chrome beta
channel release for Android, ChromeOS, Linux, macOS, and Windows. Learn more
about these features by using the provided links or by visiting
ChromeStatus.com. Chrome 155 is in beta as of September 16, 2026. You can
download the latest beta version from
[Google.com](https://www.google.com/chrome/beta/) for desktop or from Google
Play Store on Android.

## CSS and UI

### CSS `symbols()`

The CSS `symbols()` function lets authors define a counter style inline instead
of first declaring a named `@counter-style` at-rule. It builds an anonymous
counter style from a list of string symbols plus an optional counting system
(cyclic, numeric, alphabetic, symbolic, or fixed), and is accepted as the
counter style in `list-style-type`, the `list-style` shorthand, `counter()`,
and `counters()`.

### CSS corner shorthand properties

Implements the CSS `corner` shorthand and per-corner sub-shorthands
(`corner-top-left`, `corner-top-right`, `corner-bottom-left`,
`corner-bottom-right`) as well as physical (`corner-top`, `corner-bottom`) and
logical (`corner-block-start`, `corner-block-end`, etc.) edge shorthands. These
allow setting both `border-radius` and `corner-shape` for individual corners in
a single declaration. Additionally, `corners` is retained as a compat alias for
the `corner` shorthand.

This feature also includes caching controls. By default, each `random()`
function resolves to a new, distinct value. Web authors can override this
default by passing a `<random-key>` value as the function's first argument to
control how random values are shared across properties and elements.

### CSS `text-decoration-skip-spaces`

The `text-decoration-skip-spaces` CSS property controls whether text decoration
lines (for example, underlines, overlines, and line-throughs) skip over whitespace
characters. This allows authors to prevent decorations from being drawn under
spaces, which is often more visually appealing.

### CSS `margin-trim`

The `margin-trim` CSS property may be used to omit margins before or after the
first or last child of a container. This is supported on regular block
containers and multicol containers.

> [!NOTE]
> **Note:** A previous version of the spec also applied this for flex and grid containers, but this has been removed.

## JavaScript

### Avoid caching module failures

Currently web developers cannot retry failed module loads, as these failures are
being cached (and retries just result in immediate failures). This change to the
module loading behavior enables failed module loads to be manually retried (for example,
by calling `import()` again), solving real developer (and user) pain when it
comes to using modules over unstable networks.

### Import Text (Text Modules)

A TC39 proposal to add module `import ... with { type: "text" }` statements to
JavaScript. The import attribute loads text data as a string value.

## Web APIs

### Additional windowing controls

Lets web applications with the `window-management` permission
`maximize()`, `minimize()`, and `restore()` their windows, and prevent
resizing through `setResizable()`. Additionally, new CSS media features
`display-state` and `resizable` enable scripts and content to adapt to the
respective window states and resizability. These features improve the usability
of VDI remote application windows in Web clients, especially when it comes to
titlebar window controls. The new functionality enhances existing [Window
Management API](https://chromestatus.com/feature/5252960583942144) features.

### Algorithm updates in WebCrypto

Add support for multiple post-quantum
cryptographic algorithms standardized by NIST to the Web Cryptography API:

- ML-KEM (768, 1024)
- ML-DSA (44, 65, 87)
- ChaCha20-Poly1305
- X-Wing

Additional information can be found in the draft spec: https://wicg.github.io/webcrypto-modern-algos/

### Digital Credentials API (issuance support)

This lets issuing websites (for example, a university,
government agency, or bank) to securely initiate the provisioning (issuance)
process of digital credentials directly into a user's mobile wallet application.
On Android, this capability uses the Android `IdentityCredential` CredMan
system (Credential Manager). On Desktop, it uses cross-device approaches
using the CTAP protocol similar to Digital Credentials presentation.

### JPEG XL decoding support (image/jxl) in blink

Adds support for decoding JPEG XL (`image/jxl`) images in Blink using
[jxl-rs](https://github.com/libjxl/jxl-rs), a memory-safe pure Rust decoder.
JPEG XL is a modern image format standardized as ISO/IEC 18181 that offers
progressive decoding for improved perceived loading performance, support for
wide color gamut, HDR, and high bit depth, and support for animation.

### Pause media playback on not-visible iframes

Adds a `media-playback-while-not-visible` permission policy to let embedders
control whether embedded iframes which are currently hidden. That includes
iframes with the `display` property set to `none`,
`visibility` property set to `hidden`, or
zero-area (width or height equal to `0`). While hidden, attempts made by the
embedded iframe to render audible media will be blocked. When the frame is shown
again the prohibitions should be lifted. This should allow developers to build
more user-friendly experiences and to also improve the performance by letting
the browser handle the playback of content that is not visible to users.

### PredefinedColorSpace `srgb-linear` and `display-p3-linear`

Add `srgb-linear` and `display-p3-linear` color spaces (as defined by CSS) to
`PredefinedColorSpace` for use with canvases.

### Renewed HTML insertion and streaming methods

Expose multiple HTML setting methods that provide a coherent story for
dynamically inserting markup into an existing document:

- Positional methods (`before()`, `after()`, `append()`, `prepend()`, `replaceWith()`) that take HTML as argument, effectively replacing `insertAdjacentHTML()`.
- Streaming methods (`streamAppendHTML()`, `streamAppendHTMLUnsafe()`, etc.) which return a `WritableStream`.
- Passing `{runScripts}` as part of `SetHTMLUnsafeOptions`, mimicking `createContextualFragment` behavior.
- Supporting `createParserOptions` in trusted types, allowing trusted types to override scripting mode and sanitizer.

For more information see the [Declarative Partial Updates documentation](https://developer.chrome.com/docs/web-platform/declarative-partial-updates.md.txt#renewed_html_insertion_and_streaming_methods).

### WebTransport headers and responseHeaders

Adds support for passing custom HTTP request headers using `WebTransportOptions`
and inspecting server response headers through the `WebTransport` instance. This
allows web applications to supply metadata, authentication tokens, and custom
parameters during the initial `CONNECT` handshake and access server-provided
headers once the connection is established.