WCAG 2.1 AA — release blocker
Keyboard
| Key | Action |
|---|---|
Arrow Right | Focus and activate next tab. |
Arrow Left | Focus and activate previous tab. |
Home | Focus and activate first tab. |
End | Focus and activate last tab. |
Tab | Move focus into the active tab panel content. |
Screen reader
TabsListrendersrole="tablist".TabsTriggerrendersrole="tab"witharia-selected.TabsContentrendersrole="tabpanel"withtabIndex={0}andaria-labelledbypointing to its trigger.- Only the active trigger has
tabIndex={0}; others havetabIndex={-1}(roving tabindex pattern).
Focus management
- Pressing
Tabfrom the tab list moves focus into the active panel, not the next tab trigger. - Arrow keys within the tab list wrap around — pressing
Arrow Righton the last tab moves to the first. - Disabled tabs are skipped during arrow key navigation.
React Native
TabsTriggerusesaccessibilityRole="tab"withaccessibilityState={{ selected }}.- Disabled triggers set
accessibilityState={{ disabled: true }}.
Audit checklist
-
role="tablist",role="tab",role="tabpanel"present -
aria-selectedreflects active tab - Arrow keys navigate between triggers
-
Tabmoves focus into the active panel - Disabled tabs skipped in navigation
- 4.5:1 contrast on active and inactive tab text