Guideline 4.0

Guideline 4.0 - Design: App Does Not Include iOS Features

Medium RiskMedium DifficultyTypical Fix: 1-2 weeks0 Reports
Also known as:App does not support Dynamic Type or text size accessibility settingsApp does not support Dark Mode and always displays a light interfaceApp does not use standard iOS gestures (swipe-to-go-back, pull-to-refresh)App does not support multitasking or Split View on iPadApp uses completely custom navigation instead of standard UIKit/SwiftUI patterns

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

01

**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.


02

**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.


03

**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`.


04

**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.


05

**Use the system share sheet** — Replace custom share implementations with `UIActivityViewController` or SwiftUI’s `.sheet` with `ShareLink`.


06

**Add accessibility labels** — Ensure all interactive elements have meaningful `accessibilityLabel` values. Test with VoiceOver enabled.


07

**Implement pull-to-refresh** — For scrollable content, add `UIRefreshControl` or SwiftUI’s `.refreshable` modifier.


08

**List integrated features in reviewer notes** — Explicitly state which iOS features you’ve added when resubmitting.


Example Rejection Email

From:Apple App Review Team
Subject:Guideline 4.0 - Design: App Does Not Include iOS Feature
We noticed an issue in your app that contributes to a lower quality user experience than Apple users expect: - Your app did not include iOS features. Specifically, your app does not support Dynamic Type, Dark Mode, or standard iOS gestures such as swipe-to-go-back. We encourage you to review the iOS Human Interface Guidelines and consider integrating features that iOS users have come to expect.

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.

Generate Appeal

Before & After

Before — Rejected

// Hardcoded colors and fonts — no Dark Mode or Dynamic Type

Text("Welcome")

.font(.system(size: 24))

.foregroundColor(.black)

.background(Color.white)

After — Approved

// 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.

Before — Rejected

// Custom share with no system integration

Button("Share") {

copyToClipboard(url)

showToast("Link copied!")

}

After — Approved

// 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

View all Guideline 4 rejections