My colleague Spatie wrote a great post about rethinking our frontend setup at Spatie.

Browsers are quietly catching up to what we use shadcn and Radix for. Native dialogs, the Popover API, CSS Anchor Positioning, Invoker Commands... the platform is learning to do the heavy lifting.

The Popover API (Baseline 2025) makes dropdowns and menus declarative. Just a button with popovertarget and a div with popover. The browser handles top layer, light dismiss, and escape key. No JS needed.

And Invoker Commands let buttons control dialogs with just HTML attributes: commandfor + command. Open a modal, close it, all without event listeners.

CSS Anchor Positioning is the one that could really shake things up. Every tooltip, dropdown, and popover needs positioning logic: overflow handling, flipping, staying anchored on scroll. That's why Floating UI exists.

With anchor positioning, the browser handles all of it. position-try-fallbacks makes the browser pick the first position that fits. Zero JavaScript measuring or repositioning.

We're not ripping out shadcn tomorrow. But we're starting to ask: what if our base components leaned on the browser instead of wrapping library primitives?

Less JS shipped, fewer dependencies, and accessibility handled by the browser itself.

Full write-up on our blog: https://spatie.be/blog/rethinking-our-frontend-future-at-spatie

Rethinking our frontend future at Spatie

Native HTML/CSS features like dialog, the Popover API, CSS Anchor Positioning, and customizable selects are catching up to what libraries like shadcn and Radix provide. Here's what changed, what's possible now, and how it might reshape how we build frontend components at Spatie.

@freekmurze can only approve what you are doing here.
Now the final straw is to use Alpine Ajax (or similar) to replace Vue/React and you’ll increase developer joy 10x.
@freekmurze I was confronted with the 'EU accessibility directive' for government websites a few years back.
While investigating the possible approaches for WCAG compliance, we arrived at that time at a similar conclusion : don't re-build what's native in the browser, doing so will get you in a rabbit hole without end in sight.
Thank you for sharing this information, I'll keep an eye out for when browser support reaches critical mass