ESC
Type to search guides, tutorials, and reference documentation.
Verified by Garnet Grid

Mobile App Accessibility

Build mobile apps that work for everyone. Covers screen reader support, dynamic type, color contrast, touch target sizing, and the accessibility patterns that make native apps usable by the 1 billion people worldwide with disabilities.

Mobile accessibility is not optional — it is a legal requirement in many jurisdictions and a moral imperative everywhere. More than 1 billion people worldwide have a disability that affects how they use technology. Building accessible apps is not about adding features for a minority — it is about building products that work for everyone, including users with temporary impairments and situational limitations.


Platform Accessibility APIs

iOS (UIAccessibility):
  VoiceOver: Screen reader (built in, gesture-based)
  Dynamic Type: System-wide font scaling
  Switch Control: External switch devices
  Voice Control: Voice-driven navigation
  
  Key properties:
    accessibilityLabel: What is this element?
    accessibilityHint: What will happen if I activate it?
    accessibilityTraits: Is it a button, link, header, image?
    accessibilityValue: Current value (slider, toggle state)
    isAccessibilityElement: Should VoiceOver see this?

Android (AccessibilityService):
  TalkBack: Screen reader (built in, gesture-based)
  Font size: System-wide text scaling
  Switch Access: External switch devices
  Voice Access: Voice-driven navigation
  
  Key properties:
    contentDescription: What is this element?
    importantForAccessibility: Should TalkBack see this?
    accessibilityLiveRegion: Announce dynamic changes
    labelFor: Associate label with input

React Native:
  accessible: Mark as accessibility element
  accessibilityLabel: Screen reader label
  accessibilityRole: "button", "link", "header", "image"
  accessibilityState: { disabled, selected, checked, busy }
  accessibilityHint: What will happen
  accessibilityLiveRegion: "polite" or "assertive"

Touch Target Sizing

Minimum touch target sizes:

WCAG 2.2 AA: 24×24 CSS pixels (minimum)
WCAG 2.2 AAA: 44×44 CSS pixels (recommended)
Apple HIG: 44×44 points
Material Design: 48×48 dp

Common violations:
  ✗ Close button: 16×16 (too small)
  ✗ Link text: "here" (tiny tap target)
  ✗ Icon-only buttons: 24×24 without padding
  ✗ List items with no padding between rows

Fixes:
  ✓ Minimum 44×44pt hit area (padding counts!)
  ✓ 8pt minimum spacing between touch targets
  ✓ Full-row tap targets for list items
  ✓ Generous padding on interactive elements

Anti-Patterns

Anti-PatternConsequenceFix
No accessibilityLabel on imagesScreen reader says “image” or filenameDescriptive labels for all meaningful images
Decorative images marked accessibleScreen reader noise on irrelevant imagesisAccessibilityElement = false for decorative
Color-only status indicatorsColor blind users cannot distinguish statesIcons + color + text for all status indicators
Hard-coded font sizesDynamic Type / font scaling does not workUse system-relative font sizes
No skip navigationScreen reader reads entire header on every screenGrouping, headers, and skip navigation

Accessibility is quality engineering. The same patterns that make apps accessible — clear labels, logical structure, sufficient contrast, adequate touch targets — also make apps better for every user. Build accessibility in from the start; retrofitting it is 10x more expensive.

Jakub Dimitri Rezayev
Jakub Dimitri Rezayev
Founder & Chief Architect • Garnet Grid Consulting

Jakub holds an M.S. in Customer Intelligence & Analytics and a B.S. in Finance & Computer Science from Pace University. With deep expertise spanning D365 F&O, Azure, Power BI, and AI/ML systems, he architects enterprise solutions that bridge legacy systems and modern technology — and has led multi-million dollar ERP implementations for Fortune 500 supply chains.

View Full Profile →