Single Page Application (SPA) Accessibility Checklist
Accessibility checklist for React, Vue, Angular, and other SPA frameworks. Covers client-side routing, focus management, dynamic content, ARIA live regions, and state management.
Detailed Explanation
SPA Accessibility Audit
Single Page Applications (SPAs) built with React, Vue, Angular, and similar frameworks introduce accessibility challenges that traditional server-rendered pages do not have. Client-side routing, dynamic DOM updates, and component-based architecture require specific attention.
SPA-Specific Accessibility Issues
Client-Side Routing
- Page navigation does not trigger browser's native page load announcement
- Users must be informed that content has changed
- Focus must be managed when navigating between "pages"
- Browser history (back button) must work correctly
Dynamic Content Updates
- Content added or removed from the DOM after initial load
- AJAX responses that modify page content
- Real-time notifications and alerts
- Loading states and progress indicators
Routing Accessibility Checklist
- Announce route changes — Use an aria-live region or move focus to announce navigation
- Update page title — Document title should change with each route
- Manage focus — Move focus to the new content area (h1 or main) after navigation
- Update URL — Ensure the URL reflects the current view for bookmarking and sharing
- Handle back button — Browser back should navigate to previous view with correct focus
Framework-Specific Considerations
React
- Use React Helmet for dynamic page titles
- Use
useRef+focus()for focus management after route changes - Use React portals for modals to maintain DOM order
- Use
aria-liveregions for state change announcements
Vue
- Use vue-router's
afterEachhook for focus management - Use Vue's
<Teleport>for modals - Use
v-ifcarefully — removed elements lose focus
Angular
- Use Angular's Title service for dynamic titles
- Use
@angular/cdkfor accessible overlays and focus trap - Use
LiveAnnouncerservice for screen reader announcements
Dynamic Content Checklist
- Loading spinners have accessible labels (
aria-label="Loading") - Skeleton screens are announced or hidden from screen readers
- Success/error messages use
aria-live="polite"orrole="alert" - Infinite scroll has a keyboard-accessible "Load more" alternative
- Virtual/windowed lists maintain accessibility tree correctly
Use Case
SPA accessibility auditing is critical for modern web applications. React, Vue, and Angular developers should use this checklist during development and code review. Front-end architects should establish SPA accessibility patterns (routing announcements, focus management) as part of the application scaffold.
Try It — Accessibility Audit Checklist
Perceivable
Operable
Understandable
Robust
50 criteria shown · Click the status badge to cycle through Pass / Fail / N/A / Untested