Basic accessibility — VoiceOver/TalkBack labels, Dynamic Type, sufficient contrast
Why it matters
Apple has tightened accessibility enforcement since iOS 17, and WCAG 2.2 SC 1.1.1 (non-text content) and SC 1.4.4 (resize text) apply to mobile apps under Section 508 §502.3.1 for any app serving government contracts or enterprise clients. allowFontScaling={false} is the single most common AI-generated accessibility anti-pattern: the AI produces it to prevent layout overflow, but it globally disables iOS Dynamic Type, making the app unusable for the 20% of iOS users who increase their system font size. VoiceOver users with zero accessibilityLabel props encounter an app where the screen reader reads raw component type names — 'button', 'button', 'image' — with no navigable context.
Severity rationale
Medium because total absence of accessibility labels and disabled font scaling make the app functionally unusable for screen reader users, which Apple increasingly flags in review, and which creates legal exposure under ADA and Section 508 for enterprise distribution.
Remediation
Add accessibilityLabel to every tappable element and replace all allowFontScaling={false} instances:
// Before — screen reader reads "button"
<TouchableOpacity onPress={openSettings}>
<Image source={icons.gear} allowFontScaling={false} />
</TouchableOpacity>
// After — screen reader reads "Open settings"
<TouchableOpacity
onPress={openSettings}
accessibilityLabel="Open settings"
accessibilityRole="button"
>
<Image source={icons.gear} />
</TouchableOpacity>
To find all allowFontScaling={false} instances: grep -r 'allowFontScaling={false}' src/. Remove them all — if a layout breaks with large fonts, fix the layout with flexWrap or numberOfLines instead of disabling scaling.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the App Store Policy & Content Compliance Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- wcag:2.2 · 1.1.1 — Non-text Content — text alternatives for images and controls
- wcag:2.2 · 1.4.3 — Contrast (Minimum) — 4.5:1 for normal text
- wcag:2.2 · 1.4.4 — Resize Text — text can be resized up to 200% (Dynamic Type)
- section-508:2018-refresh · 502.3.1 — Section 508 — Assistive Technology Interoperability
- external · apple-accessibility-guidelines — Apple Human Interface Guidelines — Accessibility
Taxons
History
- 2026-04-18·v1.0.0·Initial import from app-store-policy-compliance·automated