What the rejection says
Guideline 2.1 – Performance – App Completeness
We discovered one or more bugs in your app. Specifically, the app crashed on launch / displayed an error message / we were unable to sign in…
Apple usually attaches a crash log or a screenshot and the device and iOS version they used. Read those first.
What Apple actually means
From 2.1(a): “Submissions to App Review… should be final versions with all necessary metadata and fully functional URLs included; placeholder text, empty websites, and other temporary content should be scrubbed before submission. Make sure your app has been tested on-device for bugs and stability before you submit it, and include demo account info (and turn on your back-end service!) if your app includes a login.”
From 2.1(b): “If you offer in-app purchases in your app, make sure they are complete, up-to-date, visible to the reviewer and functional.”
Why AI-built apps hit it so often
- Environment variables that only exist in the preview. Supabase URL and keys, API base URLs and Firebase config are set in the builder’s preview but missing or wrong in the release build. The app opens and immediately fails.
- Free-tier backends that sleep or pause. Paused Supabase projects, sleeping Replit deployments and cold-starting serverless functions time out when the reviewer taps in.
- Firebase config missing from the iOS target. Common with FlutterFlow and Expo builds. A missing or mismatched
GoogleService-Info.plistcrashes on launch. - No demo account, or one that needs email verification the reviewer can’t complete.
- AI placeholder content left in: “Lorem ipsum”, “Coming soon”, sample users, dead buttons that were never wired up.
- Sign-up flows that need an SMS code, an invite or an approval step with no way around them for review.
How to fix it
- Read Apple’s attachment. Crash log, device model, iOS version. Symbolicate the crash in Xcode Organizer if you can.
- Reproduce on a real device with the TestFlight build, not the simulator or the builder preview. Delete the app first so you start clean.
- Check production config. Every environment variable, API URL, bundle ID and Firebase or Supabase file for the release build.
- Keep the backend awake during review. Upgrade off the pausing tier, or make sure nothing sleeps between submission and approval.
- Create a demo account that works immediately: no email verification, no 2FA, pre-filled with realistic data. Put it in App Review Information in App Store Connect.
- Remove every placeholder and every button that does nothing. Hide unfinished features rather than showing them.
- Make IAPs reachable or say in the notes exactly how to get to them.
What to write back to App Review
Hello App Review,
Thank you for the report. The crash was caused by [missing production
configuration for X / backend timeout / specific bug]. We have fixed it in
build [version (build)], tested on [device] running iOS [version].
Demo account (no verification required):
Email: [email]
Password: [password]
In-app purchases can be found at [exact path, e.g. Settings > Upgrade].
How we handle a 2.1
We pull the crash log, reproduce it on a real device, fix the production configuration or the bug, set up a demo account that works on first try, and resubmit with notes that answer the reviewer’s question before they ask it. Most 2.1 fixes are done in one or two days.
Questions
The app works fine for me. Why did it crash for the reviewer?
What is ‘Guideline 2.1 – Information Needed’?
My app needs a real account and I can’t share one.
Apple says it can’t find my in-app purchases.
Last reviewed 2026-09-23. Guideline quotes are from Apple’s App Review Guidelines; Apple can change them at any time.

