React6 min read
React Accessibility (a11y)
Make React apps accessible to all users.
Sarah Johnson
December 20, 2025
0.0k0
Build accessible React applications.
Semantic HTML
// Good
<button onClick={handleClick}>Click</button>
// Bad
<div onClick={handleClick}>Click</div>
ARIA Labels
<button aria-label="Close menu">
<CloseIcon />
</button>
<nav aria-label="Main navigation">
<ul>...</ul>
</nav>
Focus Management
function Modal({ isOpen, onClose }) {
const closeButtonRef = useRef();
useEffect(() => {
if (isOpen) {
closeButtonRef.current?.focus();
}
}, [isOpen]);
return (
<div role="dialog" aria-modal="true">
<button ref={closeButtonRef} onClick={onClose}>
Close
</button>
</div>
);
}
Keyboard Navigation
function Menu() {
const handleKeyDown = (e) => {
if (e.key === 'Escape') {
closeMenu();
}
if (e.key === 'ArrowDown') {
focusNextItem();
}
};
return <div onKeyDown={handleKeyDown}>...</div>;
}
Testing Accessibility
npm install jest-axe
import { axe } from 'jest-axe';
test('no accessibility violations', async () => {
const { container } = render(<MyComponent />);
const results = await axe(container);
expect(results).toHaveNoViolations();
});
Remember
- Use semantic HTML
- Add ARIA when needed
- Manage focus properly
- Test with screen readers
Next: Learn internationalization!
#React#Accessibility#a11y#Advanced