Home Articles Sizes & Review TestFlight Missing Compliance: How to Fix It with ITSAppUsesNonExemptEncryption (Export Compliance Explained)

Table of contents

  • Quick nav

Was this helpful?

Share it with someone who needs it.

TestFlight Missing Compliance: How to Fix It with ITSAppUsesNonExemptEncryption (Export Compliance Explained)

A
AppShot Maker
10/25/2026
TestFlight Missing Compliance: How to Fix It with ITSAppUsesNonExemptEncryption (Export Compliance Explained)

Why builds show "Missing Compliance"

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:

  • When you submit to TestFlight or the App Store, your build is uploaded to a server in the United States.
  • If you distribute outside the U.S. or Canada, your app is subject to U.S. export laws, regardless of where your company is based.
  • If your app uses, accesses, contains or implements encryption, that counts as exporting encryption software — and you also have to meet the import rules of the countries where you distribute.

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.

Two ways to fix it

MethodHowBest for
Answer manuallyApp Store Connect → TestFlight → click Manage next to the build and answer the encryption questionsOccasional uploads, quick one-off fixes
Declare in Info.plistAdd the ITSAppUsesNonExemptEncryption key so future builds skip the questionsOngoing 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.

Should the key be NO or YES?

Apple's description of ITSAppUsesNonExemptEncryption is clear:

Your situationValue
The app — including every third-party library it links — uses no encryptionNO
It only uses forms of encryption exempt from export compliance documentationNO
It uses non-exempt encryptionYES, 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.

Adding the key in different projects

Native Xcode project

In your target's Info tab, under Custom iOS Target Properties, add:

  • Key: App Uses Non-Exempt Encryption (raw key ITSAppUsesNonExemptEncryption)
  • Type: Boolean
  • Value: NO (or YES, depending on your situation)

If you edit the Info.plist source directly:

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

Flutter

Edit ios/Runner/Info.plist and add the two lines above.

React Native / Expo

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.

When you need encryption documentation

If your app uses non-exempt encryption — a custom encryption protocol, for example — the flow is:

  1. Upload the required encryption documentation in App Store Connect as instructed;
  2. Once Apple reviews and approves it, you receive a code;
  3. Put that code in Info.plist under ITSEncryptionExportComplianceCode;
  4. Keep 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.

Tips for automated uploads

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:

  1. Confirm the key is present in the Info.plist inside the built .app, so a build script or environment config hasn't overwritten it.
  2. Keep targets and environments consistent — make sure Debug, Release and every scheme use an Info.plist that includes the key.
  3. Re-check after adding SDKs — when you bring in an encryption, VPN, messaging or payments library, confirm the value still holds.
  4. Write down your reasoning in project docs — why you chose NO or YES — so teammates and future releases can verify it.

FAQ

QuestionAnswer
I added the key but still see Missing ComplianceMake 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

Takeaway

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.

Ready to design your store screenshots?

Try AppShotMaker and turn raw captures into store-ready screenshots in minutes.