In TestFlight, "Waiting for Review" means your external build is in Apple's Beta App Review queue, and the public TestFlight link is inactive until the build is approved. "Ready to Test" means the build is installable: for external testers it has passed Beta App Review, and for internal testers it is simply available without review. Adding a build to an external group automatically triggers Beta App Review, which is why your external build entered review. "Ready to Test" for an external build means it passed Beta App Review, not that it is approved for the App Store.
Short answer
Waiting for Review is a queue state; Ready to Test is the installable state. Per Apple's TestFlight page, only external testers require Beta App Review, and your public TestFlight link only becomes active once the build reaches Ready to Test, meaning it was approved. An external build enters review because adding it to an external group auto-submits it for Beta App Review. Ready to Test means the build passed that review and testers can install it; it is not the same as full App Store approval. Internal testers skip review entirely and reach Ready to Test in minutes. Resubmitting restarts the review.
Waiting for Review vs Ready to Test: the difference
The two statuses are consecutive steps in the same flow. Waiting for Review means your build finished processing and is queued for Beta App Review, but a reviewer has not opened it, so testers cannot install it yet. Ready to Test means the build is available to install: for external testers it has passed Beta App Review, and for internal testers it needs no review and simply became available.
The practical difference is whether people can test. In Waiting for Review, nothing is installable and your public link is inactive. In Ready to Test, the build is live for the relevant testers and the public link works. Everything you do while waiting is about moving the build from the first state to the second.
Why is my public TestFlight link inactive?
Your public TestFlight link is inactive because the build behind it has not reached Ready to Test yet. A public link distributes to external testers, and external distribution requires an approved build, so while the build is Processing, Waiting for Review, or In Review, the link does not work. It becomes active only once the build is approved and shows Ready to Test.
This is expected, not a bug. If you shared a public link and testers report it is not working, the usual cause is simply that the current build is still in review. Once it clears Beta App Review and reaches Ready to Test, the same link starts working, without any change on your side.
Why did my external build trigger a review?
Your external build triggered a review because adding a build to an external group automatically submits it for Beta App Review. Unlike internal testing, external testing distributes your app to people outside your team, so Apple reviews the build first. You did not have to press a separate submit button; assigning the build to an external group is what starts the review.
This also explains a common surprise: a build that was instantly available to your internal testers suddenly shows Waiting for Review when you add external testers. Nothing went wrong. The same build simply entered the review that external distribution requires, and it will move to Ready to Test once approved.
Does "Ready to Test" mean approved?
For an external build, Ready to Test does mean it passed Beta App Review, so in that sense it is approved for beta distribution. But it does not mean your app is approved for the App Store. Beta App Review is a lighter check than full App Review, so a build that testers can install may still need changes before public release.
For an internal build, Ready to Test does not imply any review at all, because internal builds skip Beta App Review. There, Ready to Test simply means the build is available to your internal testers. So read Ready to Test as clearance for the relevant testing, external or internal, and never as a green light for the App Store.
The status flow
Seeing the full flow makes each status clearer. A build moves from Processing to Waiting for Review to In Review to Ready to Test, with Rejected as the branch if a problem is found. The table below shows each status and whether your public link is active.
| Status | Meaning | Public link active? |
|---|---|---|
| Processing | The binary is being validated | No |
| Waiting for Review | In the Beta App Review queue | No |
| In Review | A reviewer is evaluating the build | No |
| Ready to Test | Approved for external, available for internal | Yes, for external testers |
| Rejected | An issue was found | No |
Knowing where you are in this flow tells you what to expect next and whether your link should work. If the build is anywhere before Ready to Test, an inactive public link and a non-installable build are normal, not a fault to fix.
How long each status takes
Waiting for Review normally lasts a few hours to 48 hours for the first build of a version, and is often faster for later builds of the same version that skip a new review. Processing is usually minutes to about an hour, and In Review is typically minutes to hours once a reviewer starts. Apple does not guarantee a time, so treat any figure as an average.
Internal builds are the exception, reaching Ready to Test within minutes because they skip review. If you need someone testing right now while an external build waits, add them as an internal tester rather than waiting on the external queue.
Does resubmitting reset the review?
Yes. Uploading a new build of the same version to replace the one in review restarts Beta App Review from the beginning, so you lose your place in the queue. Resubmitting out of impatience usually lengthens the wait rather than shortening it.
Resubmit only if you fixed a real problem that would have caused a rejection. If the build is fine and simply waiting, leave it in place. To test immediately without touching the external build, use an internal tester, which keeps your review progress intact.
What to do while stuck
Act based on how long you have waited and what you actually need. The checklist below gives a clear path for each situation.
| Situation | What to do first | Escalate? |
|---|---|---|
| Under 48 hours in Waiting for Review | Wait, it is normal | No |
| Public link inactive, build still in review | Wait for Ready to Test | No |
| You need to test right now | Add an internal tester | No |
| Over 48 hours with no change | Check details, then contact support | Yes |
| Status shows Rejected | Fix it per the Resolution Center | Via Resolution Center |
The most common mistake is treating an inactive public link or a Waiting for Review status as broken when it is simply the normal wait. Confirm the build is genuinely past 48 hours before escalating, and use an internal tester if you need to test in the meantime.
When to escalate
Escalate when you clearly pass 48 hours in Waiting for Review with no movement and none of the ordinary explanations apply. Use Apple's Contact the App Review team page to ask about a review taking longer than expected, including your app name, the build, and the submission time. During the 2026 backlog, some developers reported longer waits, as seen in an Apple Developer Forums thread.
Keep expectations realistic. Escalation is right after a couple of days, but it does not guarantee an instant result, particularly during a general backlog. If you have a deadline, the internal-tester route is a more reliable unblock than hoping an escalation lands in time.
Scan before you submit
A rejection sends your build back from review to the start, so avoiding preventable rejections keeps the flow moving toward Ready to Test. A meaningful share of rejections trace to security and privacy issues: an app requesting permissions it cannot justify, cleartext traffic, or an embedded secret.
A scanner like PTKD.com analyzes your .ipa and returns findings ordered by severity and mapped to OWASP MASVS, so you fix these before you submit for external testing. To be clear about the boundary: PTKD does not speed up Beta App Review, activate your public link, or approve your app. It removes the preventable rejections that reset your status and delay Ready to Test.
What to take away
- Waiting for Review is a queue state with an inactive public link; Ready to Test is the installable state where the link works.
- Your public link is inactive because the build has not been approved yet; it activates at Ready to Test.
- Adding a build to an external group auto-triggers Beta App Review, which is why external builds enter review.
- Ready to Test means the build passed Beta App Review, not that it is approved for the App Store.
- Scan each build with PTKD.com before submitting so a preventable rejection does not reset your status.




