TestFlight processing normally takes from a few minutes to about an hour, so a wait under an hour is routine. It does not literally loop forever, but a missing Info.plist key, most often the export compliance declaration ITSAppUsesNonExemptEncryption, can leave a build waiting for an answer so that it appears to hang. First confirm the delay is not just Apple's processing or a backlog by checking the build status and Apple's system status. Re-upload only after several hours with no movement, after adding any missing key, and always with a higher build number, since repeated uploads just add to the queue.
Short answer
Processing usually finishes in minutes to about an hour, so treat anything under an hour as normal. A missing Info.plist key does not create a true infinite loop, but a missing ITSAppUsesNonExemptEncryption declaration can leave a build waiting on the export-compliance question, which looks like a hang; adding the key resolves it, per Apple's export compliance documentation. Before re-uploading, confirm the build reached App Store Connect and check Apple's system status for a processing incident. Re-upload only after several hours with no change, after fixing a likely cause, and with a higher build number. Repeated uploads do not speed anything up.
How long should processing take?
Processing normally takes from a few minutes to about an hour. Most builds finish within ten to fifteen minutes, and anything under an hour is well within the routine range, so a build that has been processing for that long is not stuck in any meaningful sense. Apple does not publish a guaranteed processing time, so treat these figures as typical behavior rather than a promise.
Beyond an hour, it is worth looking closer, and beyond several hours something is usually holding the build. The distinction matters because the right response changes with time: under an hour you wait, over several hours you investigate. Noting when the build entered processing gives you a reliable reference so you can tell a normal wait from a genuine stall instead of relying on how long it feels.
Does a missing Info.plist key cause it to hang?
Not as a literal endless loop, but effectively yes in one common case: a missing export-compliance declaration. When your Info.plist lacks the ITSAppUsesNonExemptEncryption key, App Store Connect needs an answer to the encryption question before the build becomes usable, and until that is provided the build can sit in a waiting state that reads as a hang. Adding the key, set to the honest value for your app, removes that hold.
Other missing or incorrect configuration can also stall or fail processing, such as missing required icons, an invalid binary, or bad entitlements, though these more often cause processing to fail with an error than to hang silently. The practical takeaway is that a build which never moves is frequently waiting on the export-compliance answer, so adding ITSAppUsesNonExemptEncryption is one of the first things to try when processing appears stuck.
How to check the status
Before doing anything else, confirm where the build actually is. Open App Store Connect and check that the build appears and shows a processing status, which tells you it reached Apple rather than failing to upload. If it is not there at all, the problem is the upload, not processing, and you address that instead.
Then check for an Apple-side issue. Apple's system status page shows whether App Store Connect and build processing are operating normally, and a known incident there explains a delay that is not your fault and that re-uploading will not fix. Checking both, your build's presence and Apple's status, separates the cases where you should wait from the ones where you should act, which prevents wasted re-uploads.
Other causes of a long processing
Beyond a missing export-compliance key, a few other things lengthen processing. An Apple-side backlog during busy periods slows every build, and there is nothing to do but wait it out. A large binary naturally takes longer to process than a small one. An invalid or improperly signed binary can stall or fail, as can missing required assets like app icons.
None of these are fixed by refreshing the page or re-uploading the same build repeatedly. The ones you control are configuration and validity: a complete Info.plist, correct signing, and required assets present. The ones you do not control, like a backlog, simply need patience. Distinguishing between them is why checking Apple's status and your build's configuration comes before any decision to re-upload.
When should you re-upload?
Re-upload when the build has been stuck for several hours, Apple's system status is clear, and you have a reason to believe a fix will help, such as adding a missing Info.plist key or correcting the binary. In that situation a fresh upload with the fix applied is the right move. Re-uploading also requires a higher build number, since Apple will reject a re-upload that reuses the same version and build number.
Do not re-upload out of impatience while still inside the normal window, and do not upload the same build repeatedly. Each genuine upload adds another item for Apple to process, so rapid re-uploads lengthen the wait rather than shortening it. The disciplined sequence is to wait through the normal window, check status and configuration, apply a fix if one is warranted, and only then re-upload once with a bumped build number.
Causes and fixes
Matching the symptom to the cause tells you whether to wait or act. The table below pairs the common situations with their fixes.
| Symptom | Likely cause | What to do |
|---|---|---|
| Stuck under an hour | Normal processing | Wait |
| Waiting on the encryption answer | Missing ITSAppUsesNonExemptEncryption | Add the key, then re-upload |
| Stuck several hours | Apple backlog or invalid binary | Check system status, then re-upload |
| Processing then fails | Bad binary or missing assets | Fix the build and re-upload |
| Every build hangs the same way | A systemic configuration issue | Fix the Info.plist or signing |
Read your case against the table before acting. A build stuck under an hour needs nothing, a build waiting on encryption needs the Info.plist key, and a build stuck for hours needs a status check before any re-upload.
Troubleshooting checklist
Working through the problem in order avoids wasted uploads. The checklist below covers the steps.
| Check | Action | Done? |
|---|---|---|
| System status | Check Apple's system status for an incident | [ ] |
| Build present | Confirm the build reached App Store Connect | [ ] |
| Export key | Add ITSAppUsesNonExemptEncryption to the Info.plist | [ ] |
| Wait threshold | Only act after several hours with no change | [ ] |
| Re-upload | Bump the build number and re-upload if needed | [ ] |
The steps people skip are checking Apple's status and adding the export-compliance key, which together explain most stalls that are not simply the normal wait. Do those before re-uploading, and re-upload only once with a higher build number rather than repeatedly.
Scan before you re-upload
If you are going to re-upload anyway, it is a good moment to make sure the build will actually clear review afterward, since a re-upload that later gets rejected costs you another processing and review cycle. Security and privacy issues are a common cause of those rejections, and they are cheaper to catch before you upload than after.
A scanner like PTKD.com analyzes your .ipa and reports findings ordered by severity and mapped to OWASP MASVS, so you fix issues like unjustified permissions, cleartext traffic, or embedded secrets before the build goes up again. To be clear about the boundary: PTKD does not speed up Apple's processing or add the missing Info.plist key for you. It reduces the chance that a re-uploaded build, once it finally processes, is rejected for something you could have caught first.
What to take away
- TestFlight processing normally takes minutes to about an hour, so treat anything under an hour as normal and act only after several hours.
- A missing Info.plist key does not loop forever, but a missing ITSAppUsesNonExemptEncryption declaration can leave a build waiting on the encryption question; adding it resolves that hang.
- Check that the build reached App Store Connect and review Apple's system status before assuming the delay is yours to fix.
- Re-upload only after several hours, after applying a real fix, and always with a higher build number; repeated uploads just add to the queue.
- Scan the build with PTKD.com before re-uploading so a later rejection does not cost another processing cycle.




