Use when ensuring accessible gluestack-ui implementations. Covers WAI-ARIA patterns, screen reader support, keyboard navigation, focus management, and WCAG 2.1 AA compliance.
View on GitHubTheBushidoCollective/han
jutsu-gluestack
February 3, 2026
Select agents to install to:
npx add-skill https://github.com/TheBushidoCollective/han/blob/main/frameworks/gluestack/skills/gluestack-accessibility/SKILL.md -a claude-code --skill gluestack-accessibilityInstallation paths:
.claude/skills/gluestack-accessibility/# gluestack-ui - Accessibility
Expert knowledge of building accessible user interfaces with gluestack-ui, ensuring WCAG 2.1 AA compliance across React and React Native platforms.
## Overview
gluestack-ui components are built with accessibility in mind, following WAI-ARIA guidelines and providing built-in support for screen readers, keyboard navigation, and focus management. This skill covers best practices for maintaining and enhancing accessibility.
## Key Concepts
### Built-in Accessibility
gluestack-ui components include accessibility features out of the box:
```tsx
// Button automatically has role="button" and handles focus
<Button onPress={handlePress}>
<ButtonText>Submit</ButtonText>
</Button>
// Modal manages focus trap and escape key handling
<Modal isOpen={isOpen} onClose={onClose}>
<ModalContent>
<ModalBody>Content</ModalBody>
</ModalContent>
</Modal>
// Form controls link labels to inputs
<FormControl>
<FormControlLabel>
<FormControlLabelText>Email</FormControlLabelText>
</FormControlLabel>
<Input>
<InputField />
</Input>
</FormControl>
```
### Accessibility Props
React Native accessibility props supported by gluestack-ui:
```tsx
<Pressable
accessibilityLabel="Close dialog"
accessibilityHint="Closes the current dialog and returns to the previous screen"
accessibilityRole="button"
accessibilityState={{ disabled: isDisabled }}
accessible={true}
onPress={onClose}
>
<Icon as={CloseIcon} />
</Pressable>
```
### ARIA Attributes for Web
For web platforms, use ARIA attributes:
```tsx
import { Platform } from 'react-native';
<Button
{...(Platform.OS === 'web' && {
'aria-label': 'Close dialog',
'aria-describedby': 'dialog-description',
'aria-expanded': isExpanded,
})}
onPress={handlePress}
>
<ButtonText>Toggle</ButtonText>
</Button>
```
## Screen Reader Support
### Meaningful Labels
Provide descriptive labels for interactive elements:
```tsx
// Bad: No context for screen reader users
<B