Skip to content
← All posts

By Specita

TestFlight Missing Compliance: how to clear it for good

Why a TestFlight build shows Missing Compliance, how to answer the export questions, and which Info.plist setting stops the prompt on every future upload.

A paper form with three ink strips and one empty square, beside a terracotta clay stamp.

TestFlight shows Missing Compliance when Apple doesn't yet have your app's encryption answers for that build. Testers can't get the build until you provide them. Open the build in the TestFlight tab, click Manage, and answer the export compliance questions. To stop the prompt on future builds, declare your encryption use in the app's Info.plist.

It takes about a minute to clear for one build. It costs more when a build lands on a Friday evening, a client is waiting, and the only person with the right role has gone home. So the Info.plist step is worth doing once.

The steps below follow Apple's documentation. We did not test them on a live build, and this article isn't legal advice on export regulations.

How to clear Missing Compliance for one build

You need the Account Holder, Admin, or App Manager role. If the person who uploaded the build has the Developer role, they'll need someone else to answer.

  1. In App Store Connect, open Apps and select the app.
  2. Click the TestFlight tab.
  3. In the sidebar under Builds, click the platform.
  4. In the Build column, click the app icon or build string for the affected build.
  5. Click Manage beside the build to answer the questions, or Choose File to upload documentation that was already approved.
  6. Click Provide Export Compliance Information and answer the questions.

If no documentation is required, click Save. If documentation is required, click Go to App Encryption Page to upload your file.

How to stop seeing it on every build

Add the ITSAppUsesNonExemptEncryption key to your Info.plist:

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

Apple says that specifying encryption settings in the Info.plist removes the need to answer the questions with each submission. Set the value to false only if your app doesn't use encryption or qualifies for an exemption. Setting it to make the prompt go away, without checking, is a false statement to Apple.

If your app does need documentation, Apple gives you a key value after you upload the file. Enter that value in Xcode, and the questions go away for later submissions.

In a Flutter project the key goes in ios/Runner/Info.plist. In an Expo project, set it through your iOS infoPlist configuration so that it survives regeneration of the native project.

Does your app use encryption?

Probably, in some form. Apple's export compliance overview says the determination applies to apps that use, access, contain, implement, or incorporate encryption. Its examples include standard encryption algorithms, crypto functionality in Apple's operating system, and proprietary or non-standard algorithms.

Using encryption doesn't always mean that you need to file documents. Many apps fall under exemptions, but you are the one who has to determine that. Apple is direct on this point: reviewing the Export Administration Regulations is your responsibility, as are the liabilities if you misread them or claim an exemption inaccurately.

Your appWhat to do
Clearly uses no encryption beyond what you have checked is exemptAnswer the questions, then set the Info.plist key to false
Uses proprietary or non-standard encryptionRead Apple's guidance on documentation. You may need to upload it
You aren't sureAsk whoever handles legal review for the product before you commit a value

Agencies should get the answer from the client, since the client owns the app and the legal exposure. Record the decision in the project so nobody has to work it out again.

Why the status keeps coming back

A manual answer applies to that build. Your next upload brings the prompt back unless the Info.plist key is in place. Check these if you have added the key and still see it:

  • The key is in the Info.plist of the target you actually archive. Projects with several targets or flavors can have more than one file.
  • Your build tool isn't regenerating the file and dropping the key.
  • The uploaded build really came from the commit that added the key.

You can check the last point by comparing the build number in App Store Connect with your CI run.

If the build is in another state

Missing Compliance is one of several reasons a build isn't reaching testers. If the status is still Processing, see TestFlight build stuck processing. If the build is cleared but external testers can't see it, the build may be waiting on TestFlight beta app review.

Make it part of your release setup

One line in the template for new projects saves a lot of messages. Add the Info.plist decision to your project setup checklist, make sure two people in the team hold a role that can answer the questions, and treat it as a line in your app release checklist.

Specita's App Store Connect integration connects with an API key you create for a limited, non-admin role and maps each iOS app to its product, so release records stay in one place for the team. The App Store Connect guide covers setup.

Apple guidance checked on November 4, 2026.