Tooling

Mobile — Accessibility

VoiceOver, TalkBack, Accessibility Inspector, Accessibility Scanner, axe for hybrid.

Accessibility on mobile is a per-platform discipline; the tooling is mostly first-party from Apple and Google. For web a11y see accessibility-testing. For wrapping web apps see Mobile Packaging.

iOS

  • VoiceOver — Apple's screen reader; the primary a11y test surface.
  • Accessibility Inspector (Xcode) — audits, missing labels, color contrast, dynamic type.
  • Dynamic Type — system-wide text scaling; SwiftUI handles it natively if you avoid hardcoded fonts.
  • Voice Control — voice navigation; test number / name overlays don't conflict.
  • Switch Control — alternative input; rare but important to support.
  • Reduce Motion / Reduce Transparency — respect user prefs.
  • Accessibility traits in SwiftUI (accessibilityLabel, accessibilityHint, accessibilityValue, .accessibilityElement).

Android

  • TalkBack — Google's screen reader.
  • Accessibility Scanner — Google-published app; scans live screens for missing labels, low contrast, small touch targets.
  • Switch Access — Android's alternative input.
  • Live Transcribe / Live Caption — system-level.
  • Compose semanticsModifier.semantics, contentDescription, Modifier.clearAndSetSemantics.
  • espresso-accessibility — automated a11y checks in Espresso tests.

Cross-platform

  • react-native-a11y / react-native ARIA props — RN exposes most platform a11y APIs.
  • accessibility plugins for Flutter — Semantics widget; Flutter Semantics tree maps to native.
  • react-native-aria (Adobe) — accessible primitives library.

Hybrid / WebView (Capacitor / Tauri Mobile)

  • axe-core — WebView a11y audits; works in Capacitor / Tauri Mobile shells.
  • eslint-plugin-jsx-a11y — catches obvious issues at lint time.
  • WCAG 2.2 / 2.1 — your hybrid app's web layer should meet WCAG; native chrome (status bar, sheet handles) gets handled by the shell.

Touch target size

  • iOS HIG: minimum 44×44pt.
  • Android Material: minimum 48×48dp.
  • Compose / SwiftUI surface warnings for small targets; use Accessibility Scanner / Inspector.

Color contrast / dynamic type

  • Contrast (Apple — built into Accessibility Inspector) and Stark plugin for Figma — see design-handoff.
  • Test with Increase Contrast (iOS) and High Contrast Text (Android).
  • Test with Maximum Dynamic Type (iOS) and Largest Font Size (Android).

Testing automation

  • espresso-accessibility — Android.
  • Accessibility Audit in XCUITest — iOS 17+, runs WCAG-shape checks.
  • axe-core for WebViews — hybrid.
  • EAA (European Accessibility Act) — June 2025 enforcement; commercial apps in the EU must meet accessibility requirements.
  • ADA Title III (US) — applied to mobile apps in case law.
  • Section 508 (US federal procurement).

Pick this if…

  • iOS, default: VoiceOver test pass + Accessibility Inspector + XCUITest accessibility audits.
  • Android, default: TalkBack + Accessibility Scanner + espresso-accessibility.
  • Hybrid / Capacitor: axe-core in your web a11y CI.
  • Cross-platform RN/Flutter: lean on each platform's first-party tools; both surface the underlying APIs.

On this page