Overview › Accessibility (a11y)
Accessibility (a11y)
Mixed signal: some accessibilityLabel/Hint usage, but no Dynamic Type, missing traits, VoiceOver gaps.
50
SCORE
Summary
Mixed signal — some accessibilityLabel/accessibilityHint usage but inconsistent, hardcoded font sizes preventing Dynamic Type, missing traits on buttons, VoiceOver focus order issues in onboarding. WCAG 2.2 conformance is poor — same pattern as Android.
WCAG 2.2 conformance
| Criterion | Status | Note |
|---|---|---|
| 1.1.1 Non-text content | PARTIAL | Some accessibilityLabel; UIImageView often missing |
| 1.3.1 Info and relationships | PARTIAL | Some semantic markup; SwiftUI semantic groups inconsistent |
| 1.4.3 Contrast | FAIL | Pallet tokens not contrast-validated |
| 1.4.4 Resize text | FAIL | Hardcoded UIFont sizes; no Dynamic Type |
| 2.4.7 Focus visible | PARTIAL | VoiceOver focus order needs audit |
| 2.5.5 Target size | FAIL | No 44pt minimum target enforcement |
| 4.1.2 Name, role, value | PARTIAL | accessibilityTraits often missing on custom controls |
Findings
CRITICAL
Dynamic Type missing — 1.4.4 FAIL
Hardcoded
UIFont.systemFont(ofSize: 14) patterns across onboarding, location filters, and other screens. Users with Larger Text settings see clipped or overlapping content.Recommendation: Use
UIFont.preferredFont(forTextStyle: .body) in UIKit; .font(.body) in SwiftUI. Add a snapshot test at UIContentSizeCategory.accessibilityExtraExtraExtraLarge.HIGH
Accessibility traits missing on custom controls
Custom buttons made with tap gestures don't inherit
.button trait; VoiceOver users don't hear "button" announcement.Recommendation: Set
accessibilityTraits = .button on custom tappable views; SwiftUI .accessibilityAddTraits(.isButton).HIGH
Touch target size — 2.5.5 FAIL
No 44pt minimum enforcement. Apple HIG mandates 44×44pt minimum for tap targets.
Recommendation: Custom modifier
.minimumTapTarget(); UI test that fails on smaller targets.MEDIUM
VoiceOver focus order in onboarding
Multi-element screens may have non-intuitive focus order.
Recommendation: Use Accessibility Inspector to walk every screen; set
accessibilityElements explicitly where order matters.Findings in this category
Costco iOS · Code Review Report · Generated 2026-05-07 · 88 machine-curated findings