Accessibility Module
Every app deserves to be usable by everyone. The Accessibility module makes building inclusive iOS apps effortless with pre-defined labels, SwiftUI modifiers, and comprehensive support for iOS accessibility features.Package location:
Packages/DesignSystem/Sources/DesignSystem/Accessibility/Overview
The Accessibility module is part of the DesignSystem package and provides ready-to-use accessibility features that work seamlessly with VoiceOver, Dynamic Type, Reduce Motion, and High Contrast modes.50+ VoiceOver Labels
Pre-defined labels for common UI patterns
Dynamic Type
Text scales beautifully with user preferences
Reduce Motion
Respects motion sensitivity settings
High Contrast
Colors adapt for better readability
Quick Start
VoiceOver Labels
One line for full accessibility:Dynamic Type Support
Text scales beautifully with user preferences:Reduce Motion
Respects users who experience discomfort with animations:High Contrast Mode
Colors adapt automatically for users who need more contrast:File Structure
Pre-Defined Labels
The module includes 50+ pre-defined VoiceOver labels:Chat Labels
Chat Labels
- Send button
- Message input
- Message bubble
- Typing indicator
- Attachment button
- Voice input
Authentication Labels
Authentication Labels
- Sign in button
- Sign up button
- Email field
- Password field
- Social login buttons
- Forgot password
Settings Labels
Settings Labels
- Settings row
- Toggle switch
- Navigation link
- Destructive actions
- Theme picker
Navigation Labels
Navigation Labels
Common Patterns
Common Patterns
- Loading indicator
- Error message
- Success message
- Empty state
- Refresh control
Adding Custom Labels
1. Define Your Label
2. Apply to Views
SwiftUI Modifiers
.saiAccessible(_:)
Apply a pre-defined accessibility label:
.saiAccessibilityHidden()
Hide decorative elements from VoiceOver:
.saiScaledFont(size:weight:relativeTo:)
Dynamic Type-aware font sizing:
.saiReducedMotionAnimation(_:)
Motion-sensitive animation:
.saiContrastAwareForeground(normal:highContrast:)
High contrast color adaptation:
Debug Tools
Accessibility Audit
Run accessibility audits during development:- Missing accessibility labels
- Touch targets smaller than 44x44 points
- Insufficient color contrast
- Non-scaling text
Testing Accessibility
Unit Tests
UI Tests
Manual Testing
1
Enable VoiceOver
Settings → Accessibility → VoiceOver → On
2
Navigate your app
Swipe right to move through elements
3
Verify announcements
Listen for clear, helpful descriptions
4
Test Dynamic Type
Settings → Display → Text Size → Largest
Best Practices
Label all interactive elements
Buttons, links, and controls need labels
Hide decorative images
Use
.saiAccessibilityHidden() for backgroundsProvide meaningful hints
Describe what happens when activated
Test with real users
Accessibility users find issues you miss
