
The first time you upload a build to App Store Connect, there's a good chance TestFlight lists it as Missing Compliance and your testers never get the update. The reason is in Apple's encryption export compliance documentation:
So every new version you submit triggers a set of encryption questions in App Store Connect, and the build sits in Missing Compliance until they're answered. This has nothing to do with whether you build security software; nearly every app runs into it.
| Method | How | Best for |
|---|---|---|
| Answer manually | App Store Connect → TestFlight → click Manage next to the build and answer the encryption questions | Occasional uploads, quick one-off fixes |
| Declare in Info.plist | Add the ITSAppUsesNonExemptEncryption key so future builds skip the questions | Ongoing projects, CI uploads |
A manual answer only applies to that build — you'll be asked again on the next upload. Declaring it in Info.plist is the better long-term fix.
Apple's description of ITSAppUsesNonExemptEncryption is clear:
| Your situation | Value |
|---|---|
| The app — including every third-party library it links — uses no encryption | NO |
| It only uses forms of encryption exempt from export compliance documentation | NO |
| It uses non-exempt encryption | YES, usually with compliance documentation |
Apple's typical example: encryption built into the operating system, such as HTTPS connections made with URLSession, is generally exempt from documentation upload requirements, while proprietary encryption is not. Many ordinary apps only call APIs over HTTPS and store credentials in the system Keychain, which usually falls on the exempt side — but make the final call against Apple's export compliance overview.
One detail people miss: Apple notes that apps using exempt encryption might still need to submit a year-end self-classification report to the U.S. government, whereas apps using non-exempt encryption that provide documentation to Apple don't need that report. Check whether it applies to you, and get professional advice if unsure.
In your target's Info tab, under Custom iOS Target Properties, add:
App Uses Non-Exempt Encryption (raw key ITSAppUsesNonExemptEncryption)If you edit the Info.plist source directly:
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
Edit ios/Runner/Info.plist and add the two lines above.
Bare React Native projects edit ios/<ProjectName>/Info.plist the same way. In an Expo managed project, set ios.config.usesNonExemptEncryption to false in app.json and the build writes it into Info.plist.
After adding the key, archive and upload a new build. Builds already uploaded keep their status, so answer the questions once for those.
If your app uses non-exempt encryption — a custom encryption protocol, for example — the flow is:
ITSEncryptionExportComplianceCode;ITSAppUsesNonExemptEncryption set to YES.If the app uses encryption and will be available in France, the App Store Connect question flow may also ask about a French encryption declaration; follow the prompts.
If you upload with fastlane, Xcode Cloud or another CI pipeline, Missing Compliance stalls the very last step: the build is uploaded, but it can't be distributed to tester groups automatically. With ITSAppUsesNonExemptEncryption in Info.plist, new builds go straight to TestFlight distribution once processing finishes — nobody has to log in and click Manage.
A quick pre-upload check helps:
.app, so a build script or environment config hasn't overwritten it.| Question | Answer |
|---|---|
| I added the key but still see Missing Compliance | Make sure it's a newly uploaded build, and that the key is in the main app target's Info.plist — not an extension or test target |
| Do extensions (widgets, notification extensions) need it too? | Compliance is answered per app build, so setting it in the main app's Info.plist is normally enough; if App Store Connect still asks, answer the prompts |
| What about Firebase or payment SDKs? | The value must account for third-party libraries; most SDKs rely on system HTTPS, but go by each SDK's documentation and your own assessment |
| What if I answer wrong? | Export compliance is a legal obligation, not just a review step; if unsure, find out before you answer |
| Does launching in China involve something similar? | This flow is Apple's process for U.S. export rules. Distributing in mainland China has separate requirements such as app ICP filing; one doesn't replace the other |
Missing Compliance isn't a rejection — App Store Connect is just waiting for your encryption answers. Work out whether your app uses no encryption, exempt encryption or non-exempt encryption, set ITSAppUsesNonExemptEncryption in Info.plist, and future uploads will go straight to TestFlight. Once your builds are flowing and it's time to prepare store assets, AppShot Maker can take care of your App Store screenshots.
Try AppShotMaker and turn raw captures into store-ready screenshots in minutes.