Dynamic Type Support
iOS apps must support Dynamic Type so text scales according to the user's preferred text size setting.
WCAG Reference
Maps to: WCAG 1.4.4 Resize Text | Applies to: WCAG 2.0, WCAG 2.1, WCAG 2.2 Introduced in: WCAG 2.0 | Level: AA | Read the official specification →
What this rule checks
The scanner verifies that text elements use scalable font styles (either system text styles or custom fonts registered with UIFontMetrics) and respond to the user's Dynamic Type preference.
Why it matters
Users with low vision set a larger preferred text size in iOS Settings. If an app uses fixed font sizes, text remains small regardless of the user's preference, defeating the purpose of the system-wide accessibility feature.
Common failure patterns
- hard-coded font sizes (e.g.,
UIFont.systemFont(ofSize: 14)) instead of text styles - custom fonts that are not registered with
UIFontMetricsfor scaling - layouts that break at large text sizes because they use fixed dimensions
- text that scales but containers do not, causing clipping
Remediation guidance
- use
UIFont.preferredFont(forTextStyle:)or register custom fonts withUIFontMetrics - set
adjustsFontForContentSizeCategory = trueon labels and text views - use Auto Layout with constraints that accommodate text growth
- test with all Dynamic Type sizes, including the five Accessibility sizes beyond the standard range
- in SwiftUI, use
.font(.body)or other text styles which scale automatically
