Transitioning from `height: 0` to `height: auto` has long been a CSS gap — the browser doesn't know how many pixels `auto` will resolve to before rendering, so it can't interpolate between them. Accordion expand animations have relied on faking it with a large `max-height`, the `grid-template-rows: 0fr↔1fr` trick, or measuring `scrollHeight` in JS.
Declaring `interpolate-size: allow-keywords` on `:root` lets the browser treat keyword values like `auto` as transitionable sizes. Then `height: 0 → height: auto` with plain `transition: height .3s` just works — regardless of how tall the actual content turns out to be.
Check caniuse/MDN baseline for support. Without it, the `grid-template-rows: 0fr`↔`1fr` trick (see the Accordion entry) or measuring `scrollHeight` in JS remain the standard fallbacks.
When to use
Animating an accordion or expandable panel with a real height transition, skipping the grid trick or JS measurement.