CSS

AccentColor & AccentColorText follows accent-color value Link copied!

AccentColor and AccentColorText reflect the element's effective accent-color value instead of only platform-provided system accent colors.

This allows CSS to reference the same colors used by accent-color styling, making it easier to keep custom styling consistent with form controls and other accented UI. It aligns Chromium's behavior with the CSS Color Module Level 4 specification.

CSS flow-start and flow-end alignment keywords Link copied!

It was resolved in the CSSWG that we should introduce the flow-start/end keywords as value aliases for the existing flex-start/end keywords. These are needed for alignment in the case of placement reversals.

flow-start in CSS Grid-Lanes would indicate the starting edge of the container at which placement begins, which is useful in the case where placement is reversed (fill-reverse, track-reverse, discussed in this CSSWG issue: [css-grid-3][masonry] item-flow row vs. column in masonry layouts · Issue #12803 · w3c/csswg-drafts). Because these are acting as value aliases, we expect flex-start/end to follow the logical directions in Grid Lanes, as well, which will expand the definition of these keywords from only applying special behavior in flexbox to applying to any layout mode whose logical start/end is different from its physical start/end.

For serialization, if either flex-start/end or flow-start/end is used, the returned serialized value should be flow-start/end.

Scroll snap for single-axis scroll containers Link copied!

This feature lets a single-axis scroll container (for example, one with overflow: auto clip) handle scroll snap area propagation and alignment separately for each axis.

Single-axis scroll containers are now supported (https://chromestatus.com/feature/5067363861004288). Without this feature, such a container captures a snap area on both axes, even the axis it can't scroll. The snap area then can't align on that axis.

With this feature, if a snap area sets alignment on both axes, the single-axis container handles only the axis it scrolls. The other axis goes up to the nearest ancestor scroll container that scrolls in that direction.

object-fit and object-position apply to SVG documents in <object> and <embed> Link copied!

SVG documents loaded through <object> or <embed> are sized and positioned inside the element's content box according to the CSS object-fit and object-position properties, the same way <img> content is.

Previously Chrome ignored both properties for embedded SVG documents and always stretched the document viewport to the whole content box.

Capabilities (Fugu)

HTML install element Link copied!

Chrome can now trigger a request for the browser to install a web app, given a manifest URL and optional manifest ID. The <install> element enables cross-origin web app installation without JavaScript and provides a better developer experience than handling beforeinstallprompt events. The element is launching in parallel with navigator.install(), the imperative entry point to the same installation capability.

Admins can control this in two ways:

  1. Enterprise policy, WebAppInstallByUserEnabled, can disable user web app installs broadly, including installs initiated via navigator.install() and <install>.
  2. Permissions policy, web-app-installation, can allow or disallow use of this feature on origins that the enterprise controls (for example, internal sites/iframes).

Web Install API Link copied!

Starting in Chrome 158, the new Web Install API allows websites to prompt users to install a web app, given a manifest URL and optional manifest ID. The navigator.install() method enables cross-origin web app installation and provides a better developer experience than handling beforeinstallprompt events. This API is launching in parallel with the <install> element, a declarative entry point to the same installation capability.

Admins can control this in two ways:

  1. Enterprise policy, WebAppInstallByUserEnabled, would disable user web app installs broadly, including installs initiated via navigator.install() and <install>. Or
  2. Permissions policy, web-app-installation, can allow or disallow use of this feature on origins that the enterprise controls (for example, internal sites/iframes).

Multimedia

OfflineAudioContext incremental rendering Link copied!

This feature adds an incremental rendering mechanism to OfflineAudioContext so that the audio graph data can be incrementally processed rather than allocating the whole audio buffer up front. By incrementally delivering the data using data chunks, there is no need to have high memory requirements for the user's machine when processing high amounts of data.

Miscellaneous

Permissions Policy: focus-without-user-activation Link copied!

Gives embedders control over programmatic focus from embedded content via the focus-without-user-activation permissions policy. When the policy is denied for the initiating frame, programmatic focus changes (from element.focus(), autofocus, window.focus(), and the focusing steps for dialogs and popovers) are blocked unless that frame has transient user activation or focus is already within its subtree. This does not prevent dialogs or popovers from opening. User-initiated focus such as clicking or tabbing is never affected.

The policy can be set via a Permissions-Policy HTTP response header or the iframe allow attribute. Focus delegation is supported: a parent frame that has focus can programmatically pass focus to a child iframe, even if the child has the policy denied, and once a frame has focus it can move focus within its own subtree.

closest-corner and farthest-corner radii for circle() and ellipse() basic shapes Link copied!

The circle() and ellipse() CSS basic-shape functions accept the closest-corner and farthest-corner radius keywords, in addition to the existing closest-side and farthest-side. These keywords resolve to the Euclidean distance from the shape center to the nearest or farthest corner of the reference box, matching the long-standing behavior of radial-gradient(). They work in clip-path, shape-outside, and offset-path, so the same shape syntax accepted by gradients now works for shapes.

CL: https://chromium-review.googlesource.com/c/chromium/src/+/7767079

Network / Connectivity

Spec-compliant XML MIME type detection Link copied!

To fully align with Web standards, Chrome is updating how it detects XML MIME types. Chrome will now recognize valid MIME types whose subtype ends in +xml as XML across Chrome and Android WebView, including non-application types such as text/example+xml and image/example+xml.

For these responses, PerformanceResourceTiming.contentType returns application/xml. The value for image/svg+xml remains unchanged.

Enterprise web applications that rely on previous contentType values may observe behavior changes. Chrome Actor also uses this shared XML classification for dangerous MIME type navigation checks, so it may block navigations to additional non-application +xml responses. Admins should check whether their applications depend on these MIME types or the previous contentType values.

WebTransport anticipated concurrent incoming streams Link copied!

Allows WebTransport applications to indicate how many incoming streams they expect to have open at once. Constructor hints configure the initial QUIC stream allowance, reducing the risk that a server that needs high stream concurrency is blocked by the initial stream limit.

WebTransport keying material export Link copied!

Adds WebTransport.exportKeyingMaterial(), which allows an application to derive cryptographic keying material bound to an established WebTransport session.

The method accepts application provided binary label and context values and a requested output length and returns a Promise<Uint8Array>. Chromium supports label and context values up to 255 bytes and output lengths from 1 through 4096 bytes.

For WebTransport over HTTP/3, Chromium includes the WebTransport CONNECT stream ID in the TLS exporter context. This ensures that separate WebTransport sessions derive different keying material even when they share the same underlying HTTP/3 connection.

WebTransport receive stream Link copied!

Adds the standardized WebTransportReceiveStream interface, a ReadableStream subclass used for incoming unidirectional streams and the readable side of bidirectional streams. Its getStats() method returns per-stream byte counters: bytesReceived reports bytes received from the network, while bytesRead reports bytes delivered to the application.

WebTransport reliability attributes Link copied!

Adds the WebTransport.reliability instance attribute and static WebTransport.supportsReliableOnly attribute. These APIs indicate whether the user agent supports WebTransport over exclusively reliable connections and whether an established session supports unreliable transport such as datagrams.

In Chromium, reliability initially returns "pending" and changes to "supports-unreliable" after an HTTP/3 WebTransport connection is established.  Since Chromium does not currently support HTTP/2 fallback,  WebTransport.supportsReliableOnly returns false; any successfully established session uses HTTP/3 and supports unreliable datagrams.