Accessibility Standards
Both applications follow:- WCAG 2.2 - Web Content Accessibility Guidelines
- ARIA - Accessible Rich Internet Applications
- React Aria - Adobe’s accessibility-first component library
React Aria Components
The monorepo uses React Aria Components, which provide built-in accessibility features:- Keyboard navigation
- Screen reader support
- Focus management
- ARIA attributes
- Touch/pointer interactions
WCAG 2.2 Compliance
Level A (Minimum)
1.1.1 Non-text Content
1.1.1 Non-text Content
Provide text alternatives for images:
2.1.1 Keyboard Accessible
2.1.1 Keyboard Accessible
All functionality must be keyboard accessible:
3.1.1 Language of Page
3.1.1 Language of Page
Specify the page language:
4.1.2 Name, Role, Value
4.1.2 Name, Role, Value
Use semantic HTML and proper ARIA:
Level AA (Recommended)
1.4.3 Contrast (Minimum)
1.4.3 Contrast (Minimum)
Ensure sufficient color contrast:
- Normal text: 4.5:1 ratio
- Large text (18pt+): 3:1 ratio
2.4.7 Focus Visible
2.4.7 Focus Visible
Ensure keyboard focus is visible:
3.2.4 Consistent Navigation
3.2.4 Consistent Navigation
Semantic HTML
Use proper HTML elements for their intended purpose:ARIA Best Practices
When to Use ARIA
ARIA should be used when HTML semantics are insufficient:Common ARIA Patterns
- Modals/Dialogs
- Tabs
- Tooltips
- Traps focus within dialog
- Returns focus on close
- Adds proper ARIA attributes
- Handles ESC key
Forms Accessibility
Labels and Inputs
Always associate labels with inputs:Error Handling
Provide clear, accessible error messages:Keyboard Navigation
Expected Behaviors
Tab/Shift+Tab
Navigate between focusable elements
Enter/Space
Activate buttons and links
Arrow Keys
Navigate within composite widgets (menus, tabs, lists)
Escape
Close modals, menus, and popovers
Focus Management
Screen Reader Support
Announcing Dynamic Content
Use live regions for dynamic updates:Visually Hidden Content
Provide context for screen readers:Testing for Accessibility
Automated Testing
Use accessibility testing libraries:Manual Testing
Keyboard Navigation
- Tab through all interactive elements
- Verify focus indicators are visible
- Test all keyboard shortcuts
- Ensure no keyboard traps
Screen Reader Testing
Test with:
- NVDA (Windows)
- JAWS (Windows)
- VoiceOver (macOS/iOS)
- TalkBack (Android)
Zoom and Magnification
- Test at 200% zoom
- Verify content reflows properly
- Check for horizontal scrolling
- Ensure text remains readable
Browser Extensions
axe DevTools
Comprehensive accessibility testing in Chrome DevTools
WAVE
Visual feedback on accessibility issues
Lighthouse
Built-in Chrome accessibility audits
Accessibility Insights
Microsoft’s accessibility testing tools
Accessibility Checklist
Semantic HTML
- Use proper heading hierarchy (h1 → h6)
- Use semantic elements (nav, main, article, aside)
- Use native form controls
- Provide skip links for navigation
Keyboard Support
- All interactive elements are keyboard accessible
- Tab order is logical
- Focus indicators are visible
- No keyboard traps
Visual Design
- Sufficient color contrast (4.5:1 for normal text)
- Text is resizable to 200%
- No information conveyed by color alone
- Focus indicators are clearly visible
Screen Readers
- All images have alt text
- Forms have proper labels
- Dynamic content is announced
- Page title is descriptive
Resources
WCAG 2.2
Official Web Content Accessibility Guidelines
Learn Accessibility
Google’s comprehensive accessibility course
React Aria
Adobe’s accessible component library
A11y Project
Community-driven accessibility resources
WebAIM
Web accessibility training and resources
Inclusive Components
Patterns for accessible components
Best Practices
Design for accessibility from the start
Design for accessibility from the start
- Include accessibility in design mockups
- Consider keyboard navigation in UX flows
- Plan for screen reader announcements
- Test early and often
Use React Aria Components
Use React Aria Components
Leverage the built-in accessibility features:
- Automatic ARIA attributes
- Keyboard navigation
- Focus management
- Screen reader support
Test with real users
Test with real users
- Recruit users with disabilities for testing
- Get feedback on actual usage patterns
- Understand real-world barriers
- Iterate based on user feedback
Document accessibility features
Document accessibility features
- Note keyboard shortcuts in documentation
- Explain screen reader behavior
- Provide accessibility statements
- Keep documentation up to date
