# Guideline 4.0 - Design: Splash Screen Misuse or Slow Launch

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

Canonical URL: https://appstorereject.com/rejections/apple/4/guideline-40-design-splash-screen-misuse-or-slow-launch

## Description

Apple rejected your app because the launch screen (splash screen) violates their guidelines. This can mean the launch screen includes advertising, branding beyond a simple logo, text content, or loading indicators. It can also mean the app takes too long to reach an interactive state after launch. Apple requires the launch screen to be a static placeholder that closely resembles the first screen of your app, creating the illusion of a fast launch.

## Common variations

- Launch screen displays a large company logo and tagline
- Launch screen shows a loading spinner or progress bar
- Launch screen includes advertising or promotional content
- App intentionally delays launch to show branding for several seconds
- Launch screen appearance does not match the first screen of the app

## Example rejection email

```
Your app displays a launch screen that includes advertising, branding, or text that is not part of the initial user interface.

Specifically, your app's launch screen displays your company logo, tagline, and a loading spinner for approximately 4 seconds before showing the main interface. The launch screen should provide a simple placeholder that closely matches the first screen of your app, as described in the Human Interface Guidelines. Next Steps: Please revise your launch screen and ensure your app launches promptly.
```

## Resolution steps

## How to Fix Splash Screen Misuse or Slow Launch

1. **Redesign your LaunchScreen.storyboard** — The launch screen should be a static representation of your app's first screen. Include the same background color, navigation bar placeholder, and tab bar outline — but no dynamic content, text, or images that change.

2. **Remove branding from the launch screen** — A small, centered app icon is acceptable but a full logo, tagline, or company name is not. If your app opens to a feed, make the launch screen look like an empty version of that feed.

3. **Remove artificial delays** — Delete any `sleep()`, `DispatchQueue.asyncAfter`, or `Timer` that holds the launch screen visible. The system should transition to your first view controller as soon as it's ready.

4. **Optimize app startup time** — Move heavy initialization (network requests, database migrations, analytics setup) to background queues. The main thread must reach `viewDidAppear` quickly:

   ```swift
   func application(_ application: UIApplication,
       didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
       // Only essential, synchronous setup here
       DispatchQueue.global().async {
           self.heavyInitialization()
       }
       return true
   }
   ```

5. **Remove loading spinners from the launch screen** — LaunchScreen.storyboard does not support animations or dynamic content. If you need a loading state, show it on your first view controller after launch, not on the launch screen.

6. **Test launch time** — Use Xcode's Time Profiler and the `DYLD_PRINT_STATISTICS` environment variable to measure launch time. Aim for under 400ms to the first frame.

7. **Match the launch screen to your app's first screen** — If your app opens to a tab bar with a white background, the launch screen should show the same tab bar outline and white background.

## Appeal guidance

Do not appeal this rejection. The fix is simple and Apple is consistent about enforcing launch screen guidelines. Even if you feel your branding is minimal, remove it and resubmit — it is not worth the appeal delay.

## Before / after examples

**Before:** <!-- LaunchScreen.storyboard: branded splash with logo and tagline -->
<viewController>
    <view>
        <imageView image="company_logo"
            contentMode="scaleAspectFit"
            centerX="superview" centerY="superview" />
        <label text="Your Tagline Here"
            font="system 18"
            centerX="superview"
            top="logo.bottom + 16" />
        <activityIndicatorView style="medium"
            centerX="superview"
            top="tagline.bottom + 24" />
    </view>
</viewController>
**After:** <!-- LaunchScreen.storyboard: matches the app's first screen -->
<viewController>
    <view backgroundColor="systemBackground">
        <!-- Empty navigation bar placeholder -->
        <view backgroundColor="systemBackground"
            top="safeArea.top" height="44"
            leading="superview" trailing="superview" />
        <!-- Empty content area matching the main feed layout -->
        <view backgroundColor="secondarySystemBackground"
            top="navBar.bottom" bottom="tabBar.top"
            leading="superview" trailing="superview" />
        <!-- Tab bar placeholder -->
        <view backgroundColor="systemBackground"
            bottom="safeArea.bottom" height="49"
            leading="superview" trailing="superview" />
    </view>
</viewController>
**Why it works:** The launch screen should be a static skeleton of your app's first screen — same background colors, navigation bar shape, and tab bar outline. No logos, no text, no spinners. This creates the illusion of an instant launch.

## Common questions

**Can you appeal a 4.0 rejection?**

Do not appeal this rejection. The fix is simple and Apple is consistent about enforcing launch screen guidelines. Even if you feel your branding is minimal, remove it and resubmit — it is not worth the appeal delay.

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

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

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-40-design-splash-screen-misuse-or-slow-launch*