Hardening release: everything found in the full-codebase review is fixed, tested, and documented.
Fixed
- Navigation guards run on the initial page load — deep links can no longer bypass
beforeEach - Router supersession — rapid navigation can no longer render a stale page against the wrong URL
- Guard cancellation no longer remounts the current page or risks a navigate loop; preempted navigations no longer leak unhandled
AbortErrorrejections useFetch: stale-request race onloadingfixed; caller-supplied abort signals honoured;reset()aborts in-flight requestsuseForm: asyncvalidate()is awaited, and double-submits during a pending async validate are ignored- Reactive
useMetatitles are cleared by the router on every navigation (no more watcher leaks) - Inactive nav links no longer render
aria-current="undefined"(was announced as current by screen readers) - Blocked
localStorageno longer crashes the app at startup
Added
- JSDoc +
checkJstyping across the codebase — full IntelliSense with zero build-step changes;npm run typecheckenforced in CI - Reactive document-title demo via
useMetaon the user detail page - CI runs typecheck + unit + E2E on every push and PR; Dependabot keeps npm and Actions current
- New unit tests for guards, supersession,
useMeta, and abort handling — suite now 95 unit + 30 E2E
Changed
npm testis now one-shot (npm run test:watchfor watch mode)src/components/index.jsbarrel removed — import components directly- Docs: browser-support table, initial-load guard behaviour,
useFetch reset()/delay, asyncvalidate, troubleshooting and Why Quiver guides - Dev dependencies and GitHub Actions bumped via Dependabot
See CHANGELOG.md for the full list.