ADR-0014 · Navigation API Replaces History
Status: Accepted
Use the Navigation API exclusively for SPA navigation. The History API fallback was removed — unsupported browsers fall back to full server rendering (which already works).
Why
The Navigation API gives one navigate event for every kind of navigation: clicks, form GETs, programmatic navigate(), back/forward. History API needed ~50 lines of click interception (composedPath traversal for shadow DOM, modifier-key checks, target='_blank' bailout, popstate plumbing) plus form submission handling on top.
Real-world Navigation API support is ~96% (mostly Chromium and Safari). The remaining ~4% don't crash — they just do a real page navigation, which is what they'd do without JavaScript anyway. Trading a small fallback for ~10× less code was an obvious win.