Guideline 4.0
Guideline 4.0 - Design: App Does Not Include iOS Features
Our Take
Apple rejected your app because it does not leverage iOS platform capabilities. Even if your app is not a web wrapper, Apple may reject it if it ignores standard iOS design patterns, system features, and platform conventions. This includes missing support for features like Dynamic Type, Dark Mode, multitasking on iPad, system share sheets, standard gestures, or accessibility support. Apple wants apps to feel at home on iOS.
Resolution Guide
Add Dynamic Type support
Replace hardcoded font sizes with .preferredFont(forTextStyle:) in UIKit or .font(.body) / .font(.headline) in SwiftUI. Test at the largest and smallest text sizes in Settings → Accessibility → Display & Text Size.
Support Dark Mode
Use semantic colors (.label, .systemBackground, .secondarySystemGroupedBackground) instead of hardcoded .white and .black. In SwiftUI, use Color.primary, Color(.systemBackground), etc. Test by toggling Appearance in Settings.
Enable swipe-to-go-back
If using UINavigationController, this works automatically. If you’ve overridden it or use a custom navigation solution, restore the interactivePopGestureRecognizer.
Support multitasking on iPad
Enable all multitasking orientations in your target’s General settings. Ensure your layouts adapt to Split View and Slide Over sizes using Auto Layout or SwiftUI’s adaptive layout.
Use the system share sheet
Replace custom share implementations with UIActivityViewController or SwiftUI’s .sheet with ShareLink.
Add accessibility labels
Ensure all interactive elements have meaningful accessibilityLabel values. Test with VoiceOver enabled.
Implement pull-to-refresh
For scrollable content, add UIRefreshControl or SwiftUI’s .refreshable modifier.
List integrated features in reviewer notes
Explicitly state which iOS features you’ve added when resubmitting.
Example Rejection Email
Consider Appealing
Appeals can work if your app already supports several iOS features and the reviewer missed them. List every iOS feature you support with screenshots or a short video demo. If the rejection is vague, ask for specific details through the Resolution Center before investing in changes.
Before & After
// Hardcoded colors and fonts — no Dark Mode or Dynamic Type
Text("Welcome")
.font(.system(size: 24))
.foregroundColor(.black)
.background(Color.white)
// Semantic colors and Dynamic Type
Text("Welcome")
.font(.title)
.foregroundStyle(.primary)
.background(Color(.systemBackground))
What changed: Using semantic text styles (.title, .body, .caption) enables Dynamic Type automatically. Semantic colors (.primary, .systemBackground) adapt to Dark Mode without any additional code.
// Custom share with no system integration
Button("Share") {
copyToClipboard(url)
showToast("Link copied!")
}
// System share sheet with full iOS integration
ShareLink(item: url) {
Label("Share", systemImage: "square.and.arrow.up")
}
What changed: ShareLink (iOS 16+) presents the standard system share sheet, giving users access to AirDrop, Messages, Mail, and all their installed sharing extensions.
Community Solutions · 0
Sign in to share your solution.
More Guideline 4 (Design) rejections
- 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
- Guideline 4.0 - Design: Crowded or Poor Layout