Why this happens
When you upload a new build to App Store Connect, Apple flags it with a yellow warning reading Missing Compliance before you can distribute it to external testers on TestFlight. In some cases, it also prevents internal testers from downloading the build.
This status appears because United States export administration regulations require Apple to track software products that use cryptography. Because almost all modern iOS apps incorporate HTTPS networking, TLS, or authentication frameworks, your app technically uses encryption.
If your project does not explicitly declare whether it uses non-exempt encryption, App Store Connect halts automated TestFlight distribution. It waits for you to either provide compliance documentation or confirm that your encryption qualifies for standard exemptions.
How to fix it
1. Add ITSAppUsesNonExemptEncryption to Info.plist (Recommended)
The most permanent solution is to define the export compliance key directly in your app’s bundle settings. Once defined, App Store Connect never asks for manual compliance answers on future uploads.
If your app only uses standard encryption (such as URLSession over HTTPS, standard Apple crypto APIs like CryptoKit, or normal web traffic), your app qualifies for an exemption under U.S. Export Administration Regulations.
Option A: Editing Info.plist as Source Code
Right-click your Info.plist file in Xcode’s Project Navigator, choose Open As > Source Code, and paste this key-value pair inside the top-level <dict> block:
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
Option B: Editing via the Target Property List
- Select your project in the Xcode Project Navigator.
- Choose your application target under Targets.
- Open the Info tab.
- Hover over any row in the Custom iOS Target Properties table and click the + (plus) button.
- In the dropdown, type or select
App Uses Non-Exempt Encryption(the raw key isITSAppUsesNonExemptEncryption). - Set the Type to
Booleanand the Value toNO.
Save the file, increment your build number, and upload a new archive. TestFlight will process the build and immediately make it ready for testing without triggering the Missing Compliance status.
2. Clear the Warning Manually in App Store Connect
If you have already uploaded a build and do not want to compile and upload a new version, you can clear the warning directly through the App Store Connect web interface.
- Log in to App Store Connect using an account with the Admin, App Manager, or Developer role.
- Go to Apps and select your application.
- Click the TestFlight tab at the top.
- In the left sidebar, choose the relevant platform (such as iOS).
- Locate the build displaying the yellow triangle with the
Missing Compliancelabel. - Click Provide Export Compliance Information (or click the warning icon).
- A questionnaire modal will appear. It asks:
* Does your app use encryption? Select Yes if your app makes network calls over HTTPS.
* Does your app qualify for any of the exemptions provided in Category 5, Part 2 of the U.S. Export Administration Regulations? Select Yes if you only use standard networking (HTTPS/TLS) or standard system cryptography. - Click Start Internal Testing or Save.
The status changes from Missing Compliance to Ready to Test, allowing you to assign the build to tester groups immediately.
3. Handle Proprietary or Non-Exempt Encryption
If your application uses proprietary cryptographic algorithms, non-standard encryption protocols, or functions that do not fall under standard consumer exemptions, you cannot simply set ITSAppUsesNonExemptEncryption to NO.
In this scenario:
- Add the key to
Info.plistwith a value oftrue:
<key>ITSAppUsesNonExemptEncryption</key>
<true/>
- In App Store Connect, open the TestFlight tab and select the build.
- When prompted for compliance information, answer the questions according to your custom implementation.
- Upload your Commodity Classification Automated Tracking System (CCATS) documentation provided by the U.S. Bureau of Industry and Security (BIS).
- Wait for Apple’s export compliance review team to approve the documentation before distributing the build.
How to prevent it
- Add
ITSAppUsesNonExemptEncryption=NOto your target’s base configuration or template project whenever creating a new app. - If you manage configuration through XcodeGen or Tuist, declare
ITSAppUsesNonExemptEncryption: falsein your project definition files. - If you use Fastlane, configure the
upload_to_testflightorpilotaction withskip_waiting_for_build_processing: falseand verify yourInfo.plistcontains the compliance flag to avoid stuck automated pipelines.
FAQ
Does using HTTPS count as non-exempt encryption?
No. Standard network communications using HTTPS, TLS, or standard authentication mechanisms qualify for exemptions under Category 5, Part 2 of the U.S. Export Administration Regulations. You can safely set ITSAppUsesNonExemptEncryption to false if your app only relies on standard secure network requests.
Can internal testers install a build marked with Missing Compliance?
Internal testers can sometimes install the build if you manually answer the compliance prompt in App Store Connect. However, public or external TestFlight groups cannot receive any invitations or install builds until the compliance status is resolved.
Why does the warning reappear after uploading a new version?
The warning reappears on every single upload if you only resolve it using the App Store Connect web interface. To stop the prompt permanently, you must add the ITSAppUsesNonExemptEncryption key to your project’s Info.plist in Xcode.
Parts of this guide are adapted from content licensed under CC BY-SA 4.0; this article is shared under the same license.
