Client router
Navigate to the second page and back. With JS on it is a soft swap (no full reload, scroll restored); open the network tab to see only a fragment fetched, prefetched on hover. With JS off the same links do full-page navigations. Nothing was imported to get this.
Or drive it from JS with navigate() / revalidate():
Plain link: /features/client-router/second. The router is on, so this soft-navigates (no full reload). Toggle it off, then click again to watch the browser do a full page load.
Opt out app-wide with { "webjs": { "clientRouter": false } },
or per-link with data-no-router (use it for
auth flows like /logout that must reset
in-memory state).