All rejection guidesGuideline 2.1
2.1
Guideline 2.1 rejection: App Completeness, and how to fix it
The reviewer hit a crash, a broken link, placeholder content, a login they couldn’t get past, or an in-app purchase they couldn’t find.
“We will reject incomplete app bundles and binaries that crash or exhibit obvious technical problems.”
Why apps get rejected for it
- ×A crash on launch or on a common path, often on a device or iOS version you didn’t test.
- ×The app needs a login and there is no demo account in the review notes, or the backend was off.
- ×Placeholder text, “coming soon” screens or buttons that do nothing.
- ×In-app purchases configured in App Store Connect that the reviewer can’t find or buy in the app.
- ×Links in the app or the listing that go to an empty or broken page.
How to fix it
- 01Read the crash log attached to the rejection (or in Xcode Organizer) and reproduce it on the same iOS version.
- 02Test the full flow on a real device with a fresh install and no saved state.
- 03Add a working demo account to the review notes and keep the backend running during review.
- 04Remove or finish every placeholder screen. Hide features that aren’t ready instead of shipping them empty.
- 05Make every configured in-app purchase reachable, or explain in the review notes where it is and why.
What to tell App Review
Say what was broken and what you changed, for example: “The crash on launch on iOS 18 was caused by X and is fixed in build 42. A demo account is in the review notes.” Then submit the new build.
Want a second pair of eyes before you resubmit?
The App Launch Audit checks your app against 2.1 and every other common rejection reason, and gives you a READY / NOT READY report with the exact fixes within 48 hours.
Not affiliated with Apple. The guidelines change; the full text on Apple's site is what counts. Last checked 5 October 2026.