Published: May 27, 2025
Chrome 137 is rolling out now, and this post shares some of the key features from the release. Read the full Chrome 137 release notes.
Highlights from this release:
Use reading-flow
and reading-order
to ensure a logical tab
order through complex layouts. The CSS if()
function provides a concise
way to express conditional values. JavaScript Promise Integration
(JSPI) lets WebAssembly applications integrate with JavaScript promises.
CSS reading-flow
and reading-order
The reading-flow
CSS property controls the order that elements in a flex,
grid, or block layout are exposed to accessibility tools and how they get
focused using linear sequential navigation methods. This solves a longstanding
problem with grid and flex layouts, where the tab order can become disconnected
to the order that the items are laid out.
It takes one keyword value, with a default of normal
, which keeps the behavior
of ordering elements in DOM order. To use it inside a flex container, set its
value to either flex-visual
or flex-flow
. To use it inside a grid container,
set its value to either grid-rows
, grid-columns
, or grid-order
.
The reading-order
CSS property lets you manually override the order of items
within a reading flow container. To use this property inside a grid, flex, or
block container, set the reading-flow
value on the container to source-order
and set the individual item's reading-order
to an integer value.
To learn more read Use CSS reading-flow
for logical sequential focus
navigation.
CSS if()
function
The CSS if()
function provides a concise way to express conditional values. It
accepts a series of condition-value pairs, delimited by semicolons. The function
evaluates each condition sequentially and returns the value associated with the
first true condition. If none of the conditions evaluate to true, the function
returns an empty token stream.
div {
color: var(--color);
background-color: if(style(--color: white): black; else: white);
}
.dark {
--color: black;
}
.light {
--color: white;
}
<div class="dark">dark</div>
<div class="light">light</div>
WebAssembly JavaScript Promise Integration (JSPI)
JavaScript Promise Integration (JSPI) is an API that lets WebAssembly applications integrate with JavaScript promises.
It allows a WebAssembly program to act as the generator of a promise, and it allows the WebAssembly program to interact with promise-bearing APIs.
In particular, when an application uses JSPI to call a promise-bearing (JavaScript) API, the WebAssembly code is suspended; and the original caller to the WebAssembly program is given a promise that will be fulfilled when the WebAssembly program finally completes.
And more!
Of course there's plenty more:
- As a continuation of Storage Partitioning, Chrome has implemented partitioning of Blob URL access by storage key.
- Canvas floating point pixel formats are now implemented.
offset-path: shape()
is supported so you can use responsive shapes to set the animation path.
Further reading
This covers only some key highlights. Check the following links for additional changes in Chrome 137.
- Release notes for Chrome 137.
- What's new in Chrome DevTools (137).
- ChromeStatus.com updates for Chrome 137.
- Chrome release calendar.
Subscribe
To stay up to date, subscribe to the Chrome Developers YouTube channel, and you'll get an email notification whenever we launch a new video. Or follow us on X or LinkedIn for new articles and blog posts.
As soon as Chrome 138 is released, we'll be right here to tell you what's new in Chrome!