# Splash screen image exists and is properly sized

- **Pattern:** `ab-001936` (`mobile-store-readiness.visual-assets.splash-screen-configured`)
- **Severity:** high
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-001936
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-001936)

## Why it matters

A missing or undersized splash screen causes two distinct failures: App Store binary rejection (both stores validate that the referenced file exists and meets minimum dimensions) and a jarring white flash during app cold start on devices where the OS cannot scale a too-small image. Expo's required minimum of 1080×1920 matches the baseline 9:16 device ratio; dropping below that introduces pixelation on any mid-range or flagship device. Apple's HIG (apple-hig-launch-screen) and Android's splash screen API (android-splash-screen) both require a launch image to prevent a blank white screen during initialization — omitting it degrades the perceived startup performance that store review teams actively evaluate.

## Severity rationale

High because a broken or absent splash screen reference blocks app store binary validation and produces a visible white flash on every cold start, immediately degrading first-run experience.

## Remediation

Create a 1080×1920 splash image and wire it in `app.json`. The `resizeMode` should be `contain` (not `cover`) to prevent cropping on non-standard aspect ratios.

```json
// app.json
{
  "expo": {
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    }
  }
}
```

For bare React Native iOS, add a `LaunchScreen.storyboard` in Xcode that references the image. For Android, place a drawable in `android/app/src/main/res/drawable/launch_screen.xml`. Confirm the file physically exists at the declared path before submitting — a broken reference causes silent build failure in EAS.

## Detection

- **ID:** `splash-screen-configured`
- **Severity:** `high`
- **What to look for:** Check `app.json` for `splash` field with `image` property. Count all splash screen configuration files found across platforms. Verify the image file exists at the path specified. For Expo, the recommended size is 1080x1920 (9:16 ratio). For React Native, check for splash screen configuration in `ios/[AppName]/LaunchScreen.storyboard` or `android/app/src/main/res/drawable/launch_screen.xml`.
- **Pass criteria:** Splash screen image exists, is referenced correctly in config, and uses a minimum size of at least 1080x1920 pixels or equivalent aspect ratio. The `splash.image` path in `app.json` must resolve to an actual file. Report: "Splash screen at path X with configured resizeMode Y."
- **Fail criteria:** No splash screen image found, path in config is broken, or image size is below 1080x1920 pixels (e.g., 480x640 or smaller). Do NOT pass when a splash config exists in app.json but the image file is missing at the referenced path.
- **Skip (N/A) when:** Never — splash screen is required for app store submission.
- **Detail on fail:** Specify the issue. Example: `"No splash image found at path specified in app.json: assets/splash.png"` or `"Splash image dimensions are 600x800 — recommended 1080x1920 to prevent pixelation on high-DPI devices"`
- **Remediation:** A splash screen displays during app startup while code initializes. Create or provide a splash screen:
  1. Design a 1080x1920 image (portrait orientation, 9:16 ratio) that matches your app's branding
  2. In Expo (app.json):
     ```json
     "splash": {
       "image": "./assets/splash.png",
       "resizeMode": "contain",
       "backgroundColor": "#ffffff"
     }
     ```
  3. For React Native iOS, add a storyboard file or static image set
  4. For React Native Android, add a drawable XML or static image in `res/drawable/`
  5. Use vector graphics (SVG) where possible for better scaling

## External references

- external apple-hig-launch-screen — https://developer.apple.com/design/human-interface-guidelines/launching
- external android-splash-screen — https://developer.android.com/develop/ui/views/launch/splash-screen

Taxons: regulatory-conformance, reference-integrity

HTML version: https://auditbuffet.com/patterns/ab-001936
