Guideline 4.0
Guideline 4.0 - Design: Hard to Read Typography
Our Take
Apple flagged your app for hard-to-read text or typography. This can mean font sizes are too small, line spacing is too tight, decorative fonts are used for body text, text color lacks contrast against its background, or the app does not respect the user’s Dynamic Type preferences. Apple expects text to be legible at a glance and comfortable to read for extended periods.
Resolution Guide
**Increase minimum font size** — Body text should be at least 17pt (the iOS default for `.body` style). Supporting text should be no smaller than 13pt. Never go below 11pt for any user-facing text.
**Replace decorative fonts for body text** — Use the system font (San Francisco) or a high-legibility typeface for all body text, labels, and instructional copy. Reserve decorative fonts for titles or branding only.
**Adopt Dynamic Type** — Use `UIFont.preferredFont(forTextStyle:)` in UIKit or SwiftUI’s built-in text styles (`.body`, `.headline`, `.caption`). This automatically scales text to the user’s preferred size.
**Improve line spacing** — Ensure line height is at least 1.2× the font size. In SwiftUI, use `.lineSpacing()` modifier. In UIKit, set `paragraphStyle.lineSpacing`.
**Check color contrast** — Ensure a minimum contrast ratio of 4.5:1 for body text and 3:1 for large text (18pt+). Use Xcode’s Accessibility Inspector or an online contrast checker.
**Test at all Dynamic Type sizes** — In the iOS Simulator, go to Settings → Accessibility → Display & Text Size and test your app at the smallest and largest (including accessibility sizes) settings.
**Resubmit with reviewer notes** — Mention that you’ve improved typography and support Dynamic Type.
Example Rejection Email
Consider Appealing
Appeals are unlikely to succeed for typography rejections because the fix is simple and fast. Only appeal if you believe the reviewer misidentified the screen or your typography already meets HIG standards — in that case, provide exact font sizes and contrast ratios.
Before & After
// Hardcoded tiny font with decorative typeface
Text(article.body)
.font(.custom("Papyrus", size: 12))
.lineSpacing(0)
.foregroundColor(Color.gray)
// System body style with Dynamic Type and proper spacing
Text(article.body)
.font(.body)
.lineSpacing(4)
.foregroundStyle(.primary)
What changed: The .body text style defaults to 17pt San Francisco and automatically scales with Dynamic Type. Using .primary foreground ensures proper contrast in both light and dark mode.
Community Solutions · 0
Sign in to share your solution.
More Guideline 4 (Design) rejections
- Guideline 4.0 - Design: App Does Not Include iOS Features
- Guideline 4.0 - Design: App Looks Like a Website
- Guideline 4.0 - Design: Apple Pay Button Not Following Guidelines
- Guideline 4.0 - Design: Blurry Icons or Low-Resolution Assets
- Guideline 4.0 - Design: Broken Layout on iPad
- Guideline 4.0 - Design: Content Clipped by Notch or Safe Area