European Accessibility Act
EAA compliance for Vue.js: WCAG 2.1 AA checklist & fixes
Vue's component model and template syntax give you direct access to native HTML, which is good news for accessibility. The most frequent Vue-specific failures are router-link without focus management, <transition> hiding content from screen readers, and v-html bypassing alt-text checks. Top 3 frontend framework; common in SMB and education sites across Europe.
- Category
- Web framework
- Standard
- WCAG 2.1 Level AA via EN 301 549
- Deadline
- 28 June 2025 (EU consumer services)
- Risk for B2C
- High — public-facing, consumer-billed
What the EAA actually requires from a Vue.js site
Vue's template syntax gives direct access to native HTML, so under the EAA the obligation is about disciplined component authoring rather than fighting the framework. The Vue-specific failures EN 301 549 forces you to close are router-link navigations that never move focus, <transition> leaving stale hidden DOM that screen readers still perceive, and v-html injecting images and controls that bypass alt-text and naming checks. As with any SPA, if you server-render through Nuxt an auditor sees the SSR HTML, so the requirement covers both the initial render and the post-navigation state.
Vue is especially common in European SMB, education, and agency-built sites, which means many in-scope Vue apps are run by smaller organisations facing fixed national fines rather than turnover-percentage penalties. Education and public-sector Vue portals carry an additional layer, since they also fall under the Web Accessibility Directive and EN 301 549 procurement rules on top of the EAA. The practical risk profile is therefore steady enforcement pressure at a moderate fine level rather than the headline percentage penalties aimed at large retailers.
Vue remediation is handled by the front-end team in the component and router layer: a global router.afterEach hook that focuses the h1 on navigation, an announcer utility such as @vue-a11y/announcer for live regions, and eliminating v-html in favour of sanitised, semantic components. Enforce eslint-plugin-vuejs-accessibility in the pipeline and, where the site is Nuxt, scan the SSR-generated HTML. These are targeted code changes, so a single developer can usually close the framework-specific gaps in days.
Top WCAG failures we see on Vue.js sites
Across hundreds of Vue.js scans, the same handful of issues show up over and over. None of them require ripping the theme apart — most are fixable in a few hours by someone comfortable in the platform's editor or template files.
Vue Router does not move focus
Just like React Router, vue-router silently swaps DOM. Add a global afterEach hook that focuses <h1>.
2.4.3 — Level A<transition> attribute bugs
During v-if transitions, the leaving DOM can remain in the tree but visually hidden — screen readers still see it.
4.1.2 — Level Av-html bypasses sanitisation and alt rules
Content rendered via v-html can include images without alt or buttons without names.
1.1.1, 4.1.2 — Level A
Concrete code fixes for Vue.js
Below are copy-paste fixes for the most common Vue.js issues. They assume you have access to your theme code or the platform's custom-code injection panel. If you cannot edit code directly, share these snippets with whoever maintains the site — every one of them is a ten-minute change.
Router focus on every navigation
router.afterEach(() => {
const h1 = document.querySelector('h1');
if (h1) {
h1.setAttribute('tabindex', '-1');
(h1 as HTMLElement).focus();
}
});Restores screen-reader focus context after every Vue Router navigation.
Tools and plugins worth installing first
eslint-plugin-vuejs-accessibility
@vue-a11y/announcer for live regions
How to scan a Vue.js site without missing anything
Automated scanners catch about 30–40% of WCAG issues; the rest need manual review. The good news is that the 30–40% includes the most expensive issues to remediate after the fact, so an automated scan is the cheapest way to get unstuck. Run one before you change a line of theme code.
Scan against the SSR/Nuxt-generated HTML if available.
Run a free public scan against any Vue.js URL right now — no signup, results in 60 seconds.
Frequently asked questions
Is Nuxt better than plain Vue for accessibility?
Marginally — Nuxt's SSR makes the first paint accessible to crawlers and screen readers. The component-level discipline is the same.
Other web framework platforms
EAA compliance for Next.js
The dominant React meta-framework for production sites; chosen by Stripe, Notion, TikTok,
EAA compliance for React
The most-used UI library; the foundation of Next.js, Remix, and most modern SPAs.
EAA compliance for Angular
Enterprise default in many EU public-sector portals; subject to EAA and EN 301 549.
EAA compliance for Astro
Fast-growing meta-framework for content-heavy sites.
All EAA platform guides
Shopify, WordPress, Next.js, Webflow and more
Complete WCAG 2.1 guide
POUR principles, conformance levels, legal requirements
How-to fix recipes
Copy-paste fixes for the most common WCAG failures
Find every accessibility issue on your site in 60 seconds.
Free public scan. No card. AI-generated fixes for every issue we find.