WCAG 2.1 AA — release blocker
Collapsible must satisfy these on every render before it ships.
Web (React DOM)
- Trigger renders
aria-expandedreflecting the current state. - Content region has
role="region"and is linked to the trigger viaaria-controls. - When closed, content is removed from the accessibility tree (not just visually hidden).
Keyboard
| Key | Action |
|---|---|
Enter / Space | Toggle the collapsible open/closed. |
Tab | Move focus to and from the trigger. |
React Native
- Trigger renders a
PressablewithaccessibilityRole="button"andaccessibilityState={{ expanded }}. - Content visibility toggles based on state.
Reduced motion
Height animation uses CSS transitions; prefers-reduced-motion is respected by the user agent.
Audit checklist
- Trigger announces expanded/collapsed state
- Content not in tab order when collapsed
- Enter/Space toggles from trigger
- Disabled state prevents interaction and is announced