Skip Link Missing
Critical - WCAG Level A
What the issue is:
A “skip link” is a keyboard-accessible link typically placed at the very start of the page that allows keyboard and screen reader users to bypass repeated navigation (headers, menus) and jump straight to the main content. The missing skip link means users must tab through every navigation item on every page load, which is time-consuming and painful.
Why it matters:
This is a failure of WCAG Success Criterion 2.4.1 (Bypass Blocks) (Level A). Keyboard-only users, screen reader users, and people with cognitive disabilities or motor impairments rely on a predictable way to get to the primary content quickly. Without it, usability and efficiency drop dramatically and users may abandon tasks.
How to fix it:
Add a focusable skip link as the first focusable element inside the <body>.
The link should point to a visible landmark or an element with a unique id (for example href="#main-content").
Ensure the target element is a semantic landmark (<main> or an element with role="main") and has tabindex="-1" if it is not normally focusable—this ensures browsers will move focus there.
Make the skip link visually hidden by default but clearly visible when focused (do not use display:none or visibility:hidden).
Example technique: position it off-screen and move it into view on :focus or use clip-path.
Place the link before any navigation so it is the first tab stop.
Best practices:
Use text like “Skip to main content” and localize it.
Prefer native <main> rather than role="main" where possible.
Ensure skip links appear for all top-level pages (each store page) and work after client-side route changes in SPAs (update the id or restore focus).
Test with keyboard-only navigation and screen readers.
Common mistakes:
Hiding the skip link with display:none or aria-hidden
Placing it after the navigation so it isn’t the first focusable element
Not making the target focusable (no tabindex="-1")
Relying solely on JavaScript without fallback
Using vague link text like “Skip” that lacks context.