Guideline 4.0
Guideline 4.0 - Design: Non-Standard Controls or Android-Style UI
Our Take
Apple rejected your app because it uses UI controls and navigation patterns from Android or other platforms rather than standard iOS conventions. This includes hamburger menus instead of tab bars, Material Design-style floating action buttons, Android-style toggle switches, bottom navigation with Android styling, or back arrows pointing to the left (←) instead of the iOS chevron (<). Apple expects apps to feel native to iOS and follow platform conventions.
Resolution Guide
**Replace hamburger menu with a tab bar** — iOS users expect primary navigation via a `UITabBarController` or SwiftUI `TabView` at the bottom of the screen. Move your top-level sections into tab bar items (limit to 5 or fewer).
**Remove floating action buttons** — FABs are an Android Material Design pattern. On iOS, place primary actions in the navigation bar (as a trailing bar button) or as a prominent button within the content area:
```swift
.toolbar {
ToolbarItem(placement: .primaryAction) {
Button(action: createNew) {
Image(systemName: "plus")
}
}
}
```
**Use native iOS toggles** — Replace any custom toggle that mimics Material Design with the standard `Toggle` (SwiftUI) or `UISwitch` (UIKit). These automatically match the iOS look and feel including the green/gray color scheme.
**Fix back button styling** — Use `NavigationStack` / `UINavigationController` which provides the correct iOS back chevron (`<`) automatically. Do not use custom left arrow (←) icons.
**Adopt iOS-standard list styling** — Use `List` with `.listStyle(.insetGrouped)` for settings screens instead of Material card views or flat Android-style lists.
**Review the iOS HIG control catalog** — Reference the Human Interface Guidelines > Components section to find the iOS-native equivalent for every Android pattern in your app.
**Test the "does it feel native?" bar** — Hand the app to an iOS user unfamiliar with your app. If they notice the UI feels "different" or "Android-like," keep refining.
Example Rejection Email
Consider Appealing
Appeals rarely succeed for this rejection. Apple feels strongly about platform consistency. If your app is cross-platform and you need to ship quickly, focus on the most visible issues first: replace the hamburger menu with a tab bar and remove the FAB. Those two changes often resolve the rejection.
Before & After
// Android-style: hamburger menu + floating action button
struct ContentView: View {
@State private var showDrawer = false
var body: some View {
ZStack {
NavigationDrawer(isOpen: $showDrawer) {
MenuItems()
}
VStack {
HStack {
Button(action: { showDrawer.toggle() }) {
Image(systemName: "line.3.horizontal") // hamburger
}
Spacer()
}
Spacer()
// Floating action button
HStack {
Spacer()
Button(action: addItem) {
Image(systemName: "plus")
.frame(width: 56, height: 56)
.background(Color.blue)
.clipShape(Circle())
}
.padding()
}
}
}
}
}
// iOS-native: tab bar + navigation bar action
struct ContentView: View {
var body: some View {
TabView {
NavigationStack {
ItemListView()
.navigationTitle("Items")
.toolbar {
ToolbarItem(placement: .primaryAction) {
Button(action: addItem) {
Image(systemName: "plus")
}
}
}
}
.tabItem { Label("Items", systemImage: "list.bullet") }
NavigationStack {
SettingsView()
.navigationTitle("Settings")
}
.tabItem { Label("Settings", systemImage: "gear") }
}
}
}
What changed: Replace the hamburger menu with a TabView for top-level navigation and move the floating action button into the navigation bar using .toolbar. This matches what iOS users expect.
// Material Design toggle
Toggle("Notifications", isOn: $enabled)
.toggleStyle(MaterialToggleStyle()) // custom Android-like style
// Standard iOS toggle
Toggle("Notifications", isOn: $enabled)
// Uses default iOS toggle style — no custom style needed
What changed: Remove any custom toggle styles that mimic Material Design. The default SwiftUI Toggle uses the standard iOS switch appearance with the green/gray color scheme users expect.
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