Guideline 2.1: App completeness
Something in your app was broken, unfinished, or unreachable during review: crashes, placeholder content, or a login screen without a demo account.
What Apple sent you
Guideline 2.1 - Performance - App Completeness We discovered one or more bugs in your app when reviewed on iPhone running the latest iOS. Please note that we were unable to sign in with the demo account credentials you provided in App Store Connect. Complete, working demo credentials are required to review your app.
What it actually means
The reviewer tried to use your app the way a new user would, and something stopped them: a crash, an error, a screen that never loaded, a button that did nothing, or a login screen they couldn't get past because you didn't give them a working test account.
Apple reviews the build you submitted, on a real device, usually on the newest iPhone and iOS. "It works on my phone" doesn't count; "it'll be fixed in the next update" doesn't count. The submitted build has to work, end to end, on its own.
The demo account issue deserves special mention because it's the single most common, and most fixable, version of this rejection. If your app has any sign-in screen, the reviewer needs credentials that work, entered in a specific field in App Store Connect. No credentials, instant rejection, regardless of how good the app is.
Why AI-built apps hit this
AI tools are optimistic: they scaffold screens for features that don't fully exist yet, wire buttons to endpoints that were never deployed, and leave placeholder text in corners you never scrolled to. You tested the two flows you cared about; the reviewer tapped everything.
There's also an environment gap. Your AI-built backend might run fine when you use it, but the reviewer is on a fresh install with no cached session: first-launch bugs, expired API keys, and "works after you log in once" problems all surface during review.
How to fix it
- Read the rejection message for specifics. Apple usually says what broke and sometimes attaches a screenshot in App Store Connect. Fix that exact thing first.
- Set up a demo account if you have any login. Create a real account in
your production app (something like
[email protected]), verify you can sign in with it on a phone that's never run the app, then enter it in App Store Connect → your app → App Review Information → Sign-In Information. - Do a fresh-install test. Delete the app from your phone, reinstall the exact build you're submitting (via TestFlight), and use it as a brand-new user: sign up, tap every tab, every button, every link. Anything that errors, hangs, or says "coming soon": fix it or delete the screen.
- Hunt down placeholders. Search your app for lorem ipsum, "coming soon", stock template text, and empty states that were never designed. Cut unfinished features entirely rather than shipping them half-done; you can add them back in an update.
- Check your backend is production-ready. If your app talks to a server, make sure it's deployed, paid for, and not asleep. Free-tier backends that "cold start" after inactivity are a classic cause of review-time timeouts.
What to write in Resolution Center
Hello,
Thank you for the details. We've addressed the issues from the review:
- [The specific bug Apple named] has been fixed
- We've tested the new build as a fresh install on [device/iOS version]
- Working demo credentials are now provided under App Review Information:
username [demo email], password [password]
A new build ([build number]) has been submitted. Thank you for taking
another look.
[Your name]
How to avoid it next time
Before every submission, run the same ritual: fresh install on a real device, sign up as a new user, touch every screen. Keep the demo account permanently alive; reviewers use it for updates too, and an expired demo password can get an update rejected a year from now. If a feature isn't finished, it doesn't ship; there is no partial credit in App Review.
Related guides: 2.3.1: Hidden or undocumented features (when the reviewer finds something you didn't disclose) and 4.2: Minimum functionality (when the app works but does too little).