Summary
ErrorPage wraps Button (which always renders a native ) inside , producing invalid ... nesting used by every error/not-found page in the app. This creates duplicate/ambiguous tab stops and unpredictable screen-reader announcement.
Affected files
src/components/ui/ErrorPage.tsx
Tasks
- Replace the nesting with a single semantic element (an anchor styled as a button, or Button rendering as an anchor via an
as/href prop).
- Verify all consumers (not-found, server-error, onboarding/error, profile/error, dashboard/error, unauthorized, forbidden) render valid markup.
Acceptance criteria
Suggested labels
a11y, bug
Notes
Sourced from the 2026-07-25 round-2 follow-up audit of the frontend codebase at commit 779e531, run after the first 60-issue audit batch (#525-#584) was substantially resolved. Verified against current file content at time of writing.
Summary
ErrorPage wraps Button (which always renders a native ) inside , producing invalid ... nesting used by every error/not-found page in the app. This creates duplicate/ambiguous tab stops and unpredictable screen-reader announcement.
Affected files
src/components/ui/ErrorPage.tsxTasks
as/hrefprop).Acceptance criteria
Suggested labels
a11y,bugNotes
Sourced from the 2026-07-25 round-2 follow-up audit of the frontend codebase at commit
779e531, run after the first 60-issue audit batch (#525-#584) was substantially resolved. Verified against current file content at time of writing.