ITMS-90683: Missing purpose string in Info.plist β "Invalid Bundle" email after upload
Cause
Your binary references a protected API (camera, photos, location, microphone, Bluetooth, contactsβ¦) without the matching NS...UsageDescription key in Info.plist. Usually it's not your code β an embedded SDK (image picker, analytics, ad SDK) links the framework, and Apple's static scan flags it during post-upload processing.
Fix
- Read the rejection email β it names the exact missing key, e.g.
NSCameraUsageDescription. - Add the key with a specific explanation ("We use the camera to scan receipts"), even if the feature comes from an SDK you don't actively use β the string must still make sense to a user.
- Native / RN bare: target β
Infotab in Xcode (writesInfo.plist). - Expo:
app.jsonβexpo.ios.infoPlist. - Flutter:
ios/Runner/Info.plist.
- Native / RN bare: target β
- Bump the build number, rebuild, re-upload. You cannot patch an uploaded build.
- Audit all SDKs for other required purpose strings now to avoid a second round-trip.