Skip to content

Browser support

Required, no fallback: the Popover API, inert, and clip-path: path(). That puts the floor at roughly Chrome 117, Safari 17.5 and Firefox 129.

The spotlight is written as clip-path: shape() where the browser has it (Chrome 137+, Safari 18.4+, Firefox 141+) and as path() elsewhere. The geometry is identical, but the shape() form sidesteps a Chromium bug: its compositor mis-sizes the mask while a path() transition runs, so the dim covers only part of the viewport until the spotlight lands. On Chromium builds older than 137 that glitch is still visible during step changes.

CSS anchor positioning is the one piece that isn’t everywhere yet (Chrome 125+, Safari 26+, Firefox 147+), and the one piece with a fallback. strategy: 'auto' uses the native tether where it exists and a measured positioner everywhere else. It also verifies the anchor actually resolved, and falls back mid-step if it didn’t.

import { supportsAnchorPositioning } from '@cmunns/guidepost';
supportsAnchorPositioning(); // true on the native path

the live demo tells you which path your browser is on.