App Store

    TestFlight: Waiting for Review vs Ready to Test (Public Link & Approval)

    App Store Connect showing a TestFlight build moving from Waiting for Review to Ready to Test with the public link status.

    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.

    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.

    StatusMeaningPublic link active?
    ProcessingThe binary is being validatedNo
    Waiting for ReviewIn the Beta App Review queueNo
    In ReviewA reviewer is evaluating the buildNo
    Ready to TestApproved for external, available for internalYes, for external testers
    RejectedAn issue was foundNo

    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.

    SituationWhat to do firstEscalate?
    Under 48 hours in Waiting for ReviewWait, it is normalNo
    Public link inactive, build still in reviewWait for Ready to TestNo
    You need to test right nowAdd an internal testerNo
    Over 48 hours with no changeCheck details, then contact supportYes
    Status shows RejectedFix it per the Resolution CenterVia 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.
    • #testflight
    • #waiting for review
    • #ready to test
    • #public link
    • #beta app review

    Frequently asked questions

    What is the difference between Waiting for Review and Ready to Test?
    Waiting for Review means your build is in the Beta App Review queue and testers cannot install it, and your public link is inactive. Ready to Test means the build is installable: for external testers it passed Beta App Review, and for internal testers it is available without review. They are consecutive steps in the same flow.
    Why is my public TestFlight link inactive?
    Because the build behind it has not reached Ready to Test. A public link distributes to external testers, which requires an approved build, so while the build is Processing, Waiting for Review, or In Review, the link does not work. It becomes active once the build passes Beta App Review and shows Ready to Test.
    Why did my external build trigger a review?
    Because adding a build to an external group automatically submits it for Beta App Review. External testing distributes your app outside your team, so Apple reviews the build first. A build that was instantly available to internal testers will show Waiting for Review once you add external testers; that is expected, not an error.
    Does Ready to Test mean my app is approved?
    For an external build, it means the build passed Beta App Review, so it is cleared for beta distribution, but not for the App Store, which is a separate, fuller review. For an internal build, Ready to Test implies no review at all; it just means the build is available to your internal testers. Never read it as App Store approval.
    Does resubmitting reset the review?
    Yes. Uploading a new build of the same version replaces the one in review and restarts Beta App Review, so you lose your place in the queue. Resubmit only to fix a real problem. If the build is fine and just waiting, leave it, and add an internal tester if you need to test immediately.
    How do I avoid a rejection that resets the status?
    Fix predictable issues before you submit, since a rejection sends your build back from review to the start. A scanner like PTKD.com (https://ptkd.com) checks your .ipa for unjustified permissions, cleartext traffic, and embedded secrets, mapped to OWASP MASVS. It does not speed up review, but it removes findings that would reset your status.

    Keep reading

    Scan your app in minutes

    Upload an APK, AAB, or IPA. PTKD returns an OWASP-aligned report with copy-paste fixes.

    Try PTKD free