| name | accessibility |
| description | Review React Native code for screen-reader support, labels and roles, touch targets, focus order, colour contrast, and dynamic type. Use when building UI, reviewing components, or auditing a screen for accessibility. |
| version | 1.0.1 |
| platforms | ["ios","android"] |
| react-native-version | 0.76+ |
| tags | ["react-native","accessibility","a11y","screen-reader"] |
Accessibility Skill
Applicability
- Platforms: iOS and Android
- React Native: 0.76+ (New Architecture interop assumed unless a checklist item says otherwise)
When to Use
- Building or reviewing any interactive UI
- Auditing a screen for screen-reader and assistive-technology support
- Verifying an app meets accessibility expectations before release
Guidance
Labels & Roles
Incorrect:
<TouchableOpacity onPress={onDelete}>
<Icon name="trash" />
</TouchableOpacity>
Correct:
<TouchableOpacity
onPress={onDelete}
accessibilityLabel="Delete item"
accessibilityRole="button"
hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }}
>
<Icon name="trash" />
</TouchableOpacity>
Touch & Focus
Visual
Verification
Pitfalls
- Labels that describe the element type ("button") instead of its purpose ("Delete item") give screen-reader users no useful information.
- Forgetting
accessibilityState={{ disabled: true }} on a disabled control means the screen reader still announces it as an active button.
- Relying on colour alone (e.g. red for error) excludes colour-blind users; pair it with an icon or text.
- Fixed font sizes break layouts when users increase system text size — test at large dynamic type settings.