Minimum iOS in Info.plist does not match the binary
Check PB-36 · App Store Review Guideline 2.1 · Review warning · verified 2026-09-16
Why App Review rejects under Guideline 2.1
2.1 is the single most common rejection because it is a catch-all: crashes, dead links, placeholder content, a demo account that does not work, a feature the description promises but the build does not have. The reviewer runs the app on a real device for a few minutes and reports whatever breaks. The frustrating part is that most 2.1 rejections are mechanical and visible in the build before you upload: a framework that was not embedded (crash on launch), a support URL that returns 404, a leftover localhost address from development. Fix what they named, then look for what they did not name — on the next round they only re-check the diff.
How to fix it
Info.plist MinimumOSVersion, the executable's deployment target (LC_BUILD_VERSION minos) and every embedded framework's MinimumOSVersion must agree. When a framework requires a newer iOS than the app declares, the app installs on older devices and dies at launch with "Symbol not found" / "Library not loaded"; App Review tests on the oldest iOS you declare and rejects under 2.1. Xcode: set one iOS Deployment Target at the project level and let all targets inherit it; for CocoaPods add `platform :ios, 'X.Y'` to the Podfile and re-run `pod install`; for SPM packages check their minimum platform. Expo/EAS: set `expo-build-properties` → ios.deploymentTarget in app.json (or `ios.deploymentTarget` in Podfile.properties.json), then `npx expo prebuild --clean` and rebuild.
How RejectProof detects it
The scan reads your .ipa in the browser (or locally with npx rejectproof): Info.plist, entitlements, the privacy manifest, embedded frameworks and the executable itself. Check PB-36 reports the exact evidence it found — the key, the symbol, the file or the URL — so you can confirm it in your own project before changing anything. Nothing is uploaded; only a small redacted summary is sent to build the report, and you see it first.
Related Guideline 2.1 checks
- PB-30 Development server references left in the build
- PB-33 Dead links inside the app
- PB-34 Embedded framework missing — crash on launch
- PB-35 Missing arm64 slice / unsupported architecture
- PB-42 WKWebView links open in a new window but nothing handles the popup
- PB-43 Localized resources shipped but CFBundleLocalizations not declared