Mobile Application Accessibility Audit by WCAG
WCAG 2.1 (Web Content Accessibility Guidelines) applies to mobile apps through WCAG2ICT — official W3C guidance for applying criteria to non-web technologies. Levels A and AA — minimum and standard threshold for most requirements (government contracts, ADA compliance in USA, EN 301 549 in Europe).
What We Check
Criterion 1.1 — Text Alternatives
All non-text elements (images, icons, icon buttons) must have text alternative. On iOS — accessibilityLabel, on Android — contentDescription. Decorative elements — explicitly marked as skipped (isAccessibilityElement = false, importantForAccessibility="no").
Tool: Accessibility Inspector (Xcode) → Audit → Missing Labels. Android Accessibility Scanner — lists elements without description with screen coordinates.
Criterion 1.3 — Adaptability
Information and structure must not depend only on visual perception ("red button", "button on the right"). Screen reader reading order should match content's logical order. For complex screens with ConstraintLayout or ZStack — focus order must be set explicitly.
Tables: if using UITableView/RecyclerView to display tabular data — column headers must be accessible via header cell's accessibilityLabel, rows linked to headers via accessibilityFrameInContainerSpace or semantics.
Criterion 1.4 — Distinguishability
1.4.3 Contrast (AA): minimum 4.5:1 for normal text, 3:1 for large. Check all text elements, information icons, input field borders.
1.4.4 Text Size Change: Dynamic Type (iOS) / font scaling (Android) support without losing functionality.
1.4.10 Reflow (AA, WCAG 2.1): content must be accessible without horizontal scroll at 400% zoom. On mobile — analog: content at max fontScale must be readable without horizontal scroll.
1.4.11 Non-text Contrast (AA, WCAG 2.1): icons, input field borders, selection indicators — 3:1 relative to neighboring colors.
Criterion 2.1 — Keyboard Control
On mobile — control via Switch Control / Switch Access, external keyboard (iPad + Bluetooth keyboard, Android with HID keyboard). All functions must be accessible without touchscreen. Check Tab navigation, Enter for activation, Escape to close modals.
Criterion 2.4 — Navigation
Focus on modal open should move to its first element, on close — return to trigger element. Screen titles (accessibilityTraits = .header in UIKit, Modifier.semantics { heading() } in Compose) — structure page for screen reader users.
2.4.7 Visible Focus: during Switch Access / keyboard navigation must be visible focus indicator. Custom themes removing UIFocusEffect or system focusRing — problem.
Criterion 3.3 — Input Assistance
Form error messages: "Field required" must be linked to specific field via accessibilityHint or UIAccessibility.post(notification: .announcement). Just red border — invisible to screen reader.
Audit Format
Final report contains:
- Table of WCAG criteria with Pass/Fail/N/A assessment
- Screenshots and description of found violations
- Fix priorities (blocking vs minor)
- Fix recommendations with code examples
| Criterion | Level | Status | Violation Description |
|---|---|---|---|
| 1.1.1 | A | Fail | 14 icons without contentDescription |
| 1.4.3 | AA | Fail | Gray placeholder #9E9E9E on white: 1.9:1 |
| 2.4.3 | A | Pass | Focus order is logical |
| 1.4.4 | AA | Partial | Dynamic Type unsupported in custom cells |
Audit timeframe: 2-3 days for medium-scale application. Optionally — assistance with fixing found violations. Cost calculated after application size assessment.







