-
Forgetting Semantic HTML
Mistake: Overusing <div>s and <span>s.
Problem: Screen readers struggle without meaningful HTML structure.
Fix: Use <button>, <main>, <nav>, <section>, etc. to give content context. Semantic markup improves accessibility and SEO.
-
Missing alt Attributes on Images
Mistake: <img src=”logo.png”> with no alt.
Problem: Screen readers announce file names, not useful descriptions.
Fix: Add descriptive alt text or use alt=”” for decorative images.
-
Non-Accessible Custom Components
Mistake: Building dropdowns, modals, or tabs without roles/keyboard support.
Problem: Mouse-only interactions exclude many users.
Fix: Add ARIA roles, support Tab/Enter, or use Vue accessibility libraries.
-
Ignoring Focus Management
Mistake: Modals open but focus remains in the background.
Problem: Screen reader and keyboard users get lost.
Fix: Move focus into modals when they open and return it to the trigger when they close.
-
Low Colour Contrast
Mistake: Stylish text that fails WCAG contrast rules.
Problem: Users with visual impairments can’t read content.
Fix: Aim for a 4.5:1 contrast ratio. Use tools like WebAIM’s Contrast Checker.
-
Not Labeling Form Inputs
Mistake: Using placeholders instead of labels.
Problem: Placeholders disappear, labels don’t.
Fix: Always pair <label> with <input>.
-
Overusing v-if for Dynamic Content
Mistake: Adding/removing elements with v-if in ways that screen readers can’t track.
Problem: Users miss updates.
Fix: Use aria-live regions for dynamic updates. Consider v-show for content that should stay in the DOM.
-
Not Handling Keyboard Events
Mistake: Click handlers only.
Problem: Keyboard users can’t trigger actions.
Fix: Use real <button> elements, or add @keyup.enter support.
-
Skipping Skip Links
Mistake: Forcing users to tab through entire menus.
Problem: Keyboard navigation becomes frustrating.
Fix: Add a “Skip to Content” link at the top of your Vue app.
-
Not Testing with Real Assistive Tech
Mistake: Assuming it’s fine because it “looks okay.”
Problem: Many accessibility issues are invisible.
Fix: Test with screen readers (VoiceOver, NVDA), use only keyboard navigation, and run Lighthouse or axe scans.
Overall, accessibility in Vue apps is about more than just compliance – it’s about inclusion, usability, and better SEO. By fixing these 10 common mistakes, you’ll make your Vue apps easier to use for everyone, meet WCAG accessibility guidelines and improve SEO, since semantic HTML and accessible components are search-engine friendly. Accessibility is not a “nice-to-have”, it’s essential. Start small, test often, and your Vue apps will become more inclusive with every commit.