Skip to content

[ Guideline 2.1 · Performance – App Completeness ]

Guideline 2.1 App Completeness: crashes, dead backends and missing demo accounts

Short answer

2.1 means the reviewer couldn’t use your app as submitted. It crashed, a screen was empty, the login didn’t work, or they couldn’t find your in-app purchases. With AI-built apps the cause is almost always that the production build is set up differently from the preview: missing environment variables, a free-tier backend that went to sleep, or no demo account.

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.plist crashes 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

  1. Read Apple’s attachment. Crash log, device model, iOS version. Symbolicate the crash in Xcode Organizer if you can.
  2. Reproduce on a real device with the TestFlight build, not the simulator or the builder preview. Delete the app first so you start clean.
  3. Check production config. Every environment variable, API URL, bundle ID and Firebase or Supabase file for the release build.
  4. Keep the backend awake during review. Upgrade off the pausing tier, or make sure nothing sleeps between submission and approval.
  5. 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.
  6. Remove every placeholder and every button that does nothing. Hide unfinished features rather than showing them.
  7. 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?
Reviewers use a clean device, often on a newer iOS version, on a network outside your region, with no prior login. Test the exact TestFlight build on a real device after deleting the app, and check your crash logs in App Store Connect and Xcode Organizer.
What is ‘Guideline 2.1 – Information Needed’?
It isn’t a rejection of the app itself. The reviewer needs something from you: a demo account, an explanation of a feature, or details about your business model. Answer it precisely in Resolution Center; you usually don’t need a new build.
My app needs a real account and I can’t share one.
Apple allows a built-in demo mode in place of a demo account, but only with prior approval, and it must show the app’s full features. Ask in your review notes.
Apple says it can’t find my in-app purchases.
Under 2.1(b), every IAP you configured must be visible and working in the build. If one is intentionally hidden, for example only shown after onboarding, explain where to find it in the review notes.

Last reviewed 2026-09-23. Guideline quotes are from Apple’s App Review Guidelines; Apple can change them at any time.

Next step

Stuck in App Review? Send us the message.

Tell us what you built it with and paste Apple’s rejection. You get a plain-English diagnosis and a fixed price within one business day.