Live demo

SPA router

The links below navigate without a full page reload. The router intercepts the click, fetches the next page, swaps this <main>, and updates the URL — animated with the View Transitions API. It's pure progressive enhancement: turn JS off and every link is an ordinary navigation. Read how it works →

What just happened

ready

Click an in-site link. Watch the URL change and the content cross-fade — but notice the page never blanks out or re-runs the header. That's a client-side swap, not a reload.

Navigations handled this session: 0

    Smooth navigation, zero build step.

    One native ES module, modern browser APIs, no dependencies.