# Guideline 4.0 - Design: Broken Layout on iPad

**Guideline:** 4.0 · **Store:** Apple App Store · **Risk:** low · **Difficulty:** medium · **Typical turnaround:** 4-8 hours

Canonical URL: https://appstorereject.com/rejections/apple/4/guideline-40-design-broken-layout-on-ipad

## Description

Your app did not display correctly when reviewed on iPad. Common issues include a letterboxed iPhone-only layout, elements overlapping or stretching incorrectly on larger screens, missing landscape orientation support, and failure to adapt to Split View or Slide Over multitasking modes. This is especially frustrating for iOS developers who only support iPhone since reviewers always review all apps on iPads. If your app is available on iPad (including via iPhone compatibility mode), Apple expects it to use the full screen and adapt to different size classes.

## Common variations

- App runs in iPhone compatibility mode (letterboxed) on iPad
- Layout elements overlap or are mispositioned in landscape orientation
- App does not support Split View or Slide Over on iPad
- Content is stretched to fill iPad screen without adapting the layout
- Navigation designed for iPhone (bottom tab bar) does not translate well to iPad

## Example rejection email

```
We noticed that your app did not run as expected when reviewed on iPad running iPadOS 17.4.

Specifically, the app does not appear to be optimized for iPad. The layout appears stretched and does not make use of the additional screen space. Elements overlap in landscape orientation, and the app does not support multitasking. Next Steps: Please revise your app to ensure it runs as expected on iPad and provides a great user experience on all supported devices.
```

## Resolution steps

## How to Fix Broken Layout on iPad

1. **Enable iPad as a deployment target** — In Xcode, go to your target’s General tab → Deployment Info and check iPad. Ensure the `UIDeviceFamily` key in Info.plist includes `2` (iPad).

2. **Support all orientations** — Enable all four orientations (portrait, landscape left/right, upside down for iPad) in your target settings. Test each one.

3. **Use adaptive layouts** — Replace fixed-width constraints with flexible ones. In SwiftUI, use `GeometryReader`, `.frame(maxWidth:)`, and horizontal size class detection:

   ```swift
   @Environment(\.horizontalSizeClass) var sizeClass
   ```

   In UIKit, use Auto Layout with proper constraints and size class overrides in Interface Builder.

4. **Adopt sidebar navigation on iPad** — On larger screens, replace the bottom tab bar with a `NavigationSplitView` (SwiftUI) or `UISplitViewController` (UIKit) that shows a sidebar.

5. **Support multitasking** — Ensure `UISupportsFullScreen` is NOT set to `YES` in Info.plist (this disables multitasking). Test your app in 1/3, 1/2, and 2/3 Split View widths.

6. **Test on multiple iPad sizes** — Test on iPad mini, iPad Air, and iPad Pro 12.9″ in the simulator. Each has different point dimensions.

7. **Leverage extra space** — Use multi-column layouts, larger touch targets, and richer detail views on iPad. Don’t just scale up the iPhone layout.

8. **Include iPad screenshots in App Store Connect** — Add iPad-specific screenshots to show reviewers the optimized experience.

## Appeal guidance

If your app is iPhone-only by design, you can appeal and explain why iPad optimization is not applicable — but Apple may still require basic compatibility. If your app is marked as Universal, fix the layout rather than appealing.

## Before / after examples

**Before:** // Fixed-width layout that breaks on iPad
VStack {
    Text("Dashboard")
    ScrollView {
        VStack(spacing: 12) {
            ForEach(items) { item in
                ItemRow(item: item)
                    .frame(width: 375) // iPhone width hardcoded
            }
        }
    }
}
**After:** // Adaptive layout using NavigationSplitView for iPad
struct ContentView: View {
    @Environment(\.horizontalSizeClass) var sizeClass
    @State private var selectedItem: Item?

    var body: some View {
        NavigationSplitView {
            List(items, selection: $selectedItem) { item in
                ItemRow(item: item)
            }
            .navigationTitle("Dashboard")
        } detail: {
            if let selectedItem {
                ItemDetailView(item: selectedItem)
            } else {
                Text("Select an item")
                    .foregroundStyle(.secondary)
            }
        }
    }
}
**Why it works:** NavigationSplitView automatically provides a sidebar + detail layout on iPad and collapses to a stack on iPhone. Remove all hardcoded widths and let the system manage the available space.

## Common questions

**Can you appeal a 4.0 rejection?**

If your app is iPhone-only by design, you can appeal and explain why iPad optimization is not applicable — but Apple may still require basic compatibility. If your app is marked as Universal, fix the layout rather than appealing.

**How long does this typically take to fix?**

Typical turnaround is 4-8 hours (difficulty: medium). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-40-design-broken-layout-on-ipad*