Software

What Is TestFlight? How to Beta Test Your iOS App Before Launch

Talha Aslan 19 min read 3 views

Short answer

What is TestFlight and what is it used for?

TestFlight is Apple's beta testing service. It lets you distribute prerelease builds of iOS, iPadOS, macOS, tvOS, watchOS or visionOS apps to people you invite. Testers install your app through the TestFlight app, try it on real devices and send you screenshot feedback and crash reports.

Keep reading for the full details and examples

TestFlight is Apple's official way to put your iOS app in real hands before it reaches the App Store. In this guide, Talha Aslan and team walk through the workflow we use on client projects: internal testing, external testing, Beta App Review, invite options, build expiry, feedback collection and the mistakes that slow launches down.

In short, TestFlight takes the build you archive in Xcode and opens it to a controlled audience. A build is simply the installable package of your app. As a result, your chosen testers find the bugs, not your paying customers. Apple's TestFlight page describes the service for apps, games and App Clips.

It is not only a bug hunt, though. For example, you can check whether a new checkout screen makes sense, whether the notification prompt appears at the right moment, or how many taps a sign-up takes. In other words, one channel covers both technical testing and experience testing.

Why should you beta test your app before launch?

An app that looks perfect in the Simulator can behave differently on a real phone. Screen sizes, older OS versions, weak mobile data, Low Power Mode and language settings rarely show up in the Simulator. Therefore a short round on real devices with real people cuts down store rejections and harsh first reviews.

Many App Review problems are things a beta round would catch anyway: crashing screens, a broken demo account, empty pages. We collected the usual suspects in our guide on the most common app rejection reasons. A solid TestFlight round closes most of that list before you submit.

On our projects, testing is part of the release plan, not an afterthought. Through our mobile app development service, we build your app, run the TestFlight rounds and take it to the store for you. If your own team handles the work, the steps below will help you set up the same rhythm.

What is the difference between internal and external testing in TestFlight?

TestFlight recognizes two kinds of testers. Internal testers are team members with a user account in your App Store Connect team. External testers can be anyone else: customers, volunteers, partners. Apple's TestFlight overview lists a cap of 100 internal and 10,000 external testers; check the current figures on that page.

FeatureInternal testingExternal testing
Who joinsApp Store Connect users on your teamPeople without an App Store Connect account
Tester cap (per Apple's page)10010,000
Beta App ReviewNot requiredRequired for the first build
How to inviteAdd team users to a groupEmail invitation or public link
Best useDaily build checks, quick fixesReal user experience, field conditions

In practice, internal testing is the first filter for every new build. External testing, on the other hand, is the dress rehearsal with your real audience. Using both in sequence works best.

What do you need before you start using TestFlight?

A few basics must be in place first. Otherwise your first upload or invitation will stall. Here is our checklist:

  • An Apple Developer Program membership and access to App Store Connect.
  • An app record in App Store Connect with its bundle ID.
  • A valid signing certificate and a provisioning profile that includes the app identifier.
  • An archived build from Xcode or Xcode Cloud, ready to upload.
  • For external testing, a beta description, a feedback email and contact details.
  • A working demo account for the reviewers if your app requires sign-in.

Also, settle team roles early. According to Apple's help pages, inviting external testers requires the Account Holder, Admin or App Manager role. A developer without that role can upload builds but may not manage external groups. That gap causes last-minute waiting.

How do you upload your first build to App Store Connect?

Your first upload starts in Xcode. You archive the app with the Release configuration, then use the Organizer window to distribute it to App Store Connect. If you use Xcode Cloud, you can attach this step to a workflow and automate it.

After the upload, the build goes through processing for a while. You can see it in the TestFlight tab, but you cannot test it yet. Once processing ends, Apple may ask about export compliance, which means declaring how your app uses encryption. Until you answer, the build will not reach testers.

Watch the build number too. You need a higher build number for every new upload; Apple will not accept the same number twice. We keep the version number for what users see and the build number as an internal counter. That way we always know which build a tester was using when a bug appeared.

Finally, builds you upload as TestFlight Internal Only from Xcode can only go to internal groups. Apple states that these builds cannot go to external testing or to customers. So skip that option if you plan an external round.

How do you set up a TestFlight internal testing group step by step?

Internal testing is the fastest layer of TestFlight because it skips Beta App Review. The flow in Apple's help pages looks like this:

  1. Select your app in App Store Connect and open the TestFlight tab.
  2. Click the add button next to Internal Testing in the sidebar, then name the group.
  3. Optionally enable automatic distribution, so new builds from Xcode reach the group on their own.
  4. Add testers; only App Store Connect users appear in the list.
  5. Add a build and fill in What to Test with the tasks for this round.
  6. Testers get an email invitation and install the build through the TestFlight app.

One detail matters here. Apple says you must always add builds from Xcode Cloud to groups manually. So do not assume every build arrives on its own just because automatic distribution is on.

Example scenario: a five person team receives a new build every evening and runs a short check the next morning. That rhythm clears most bugs before anything reaches external testers.

How does TestFlight Beta App Review work for external testing?

The first build you send to external testers goes through TestFlight App Review. Apple checks the build and its metadata against the App Review Guidelines. According to Apple's guide to inviting external testers, the first build needs a full review, while later builds of the same version might not.

When Apple approves the build, users with the Admin role receive an email. If Apple rejects it, the status changes to Rejected and you can read the details under App Review in App Store Connect. Apple also notes that only one build per version can be in review at a time, and that daily submissions have a limit. Check the current limit on the official page.

We treat Beta App Review as a rehearsal for the real store review. A warning you get here will most likely appear again at submission. For instance, a note about duplicated content raises the Guideline 4.3 spam topic early.

In short, see Beta App Review as an early warning system, not a roadblock. Provide the demo account, payment flow details and permission explanations in full at this stage.

What should you write in the Test Information section?

Before external testing starts, App Store Connect asks for test information. Apple's overview lists a beta app description, an explanation of the features to test, and an email address for feedback. You also add contact details for the review team and, when needed, demo account credentials.

Keep the beta description short and plain. A tester should understand what the app does in two sentences. Then make the testing task concrete. Instead of "try everything," write something like "try the new cart screen and pay with a coupon."

Do not skip the review notes either. If your app needs a specific location, hardware or membership, say so clearly. For example, a service app that only works in one region needs a short note on how the reviewer can test each step. Otherwise, the review may take longer.

Finally, use a feedback inbox that someone actually reads. Testers on some older devices can only send feedback by email. An unread address means valuable notes simply disappear.

How do you invite TestFlight testers by email?

Email invitations fit cases where you want to know exactly who is testing. Select the external group and click the add button next to Testers. Then add new testers by email address, choose existing testers or import a CSV file.

Next, the tester opens the invitation email and accepts it with the TestFlight app. According to Apple, the email address of invited testers shows up in the feedback detail view. As a result, you know who sent each note and can follow up with questions.

This method works well for business projects. For instance, if you build an app for a dealer network, you can invite one contact per dealer and sort feedback by region. That said, treat personal data with care. Keep the tester list for testing only and do not share it.

One more tip: split groups by purpose. Separate groups such as sales team, loyal customers and older device owners let you review the same build through different eyes.

When does a public TestFlight link make sense?

A public link lets people join your beta without you knowing their contact details. You can place the link in a newsletter, a social post or on your website. Anyone who taps it joins through TestFlight. So it is a practical choice for a wide test.

When you create the link, you choose between Open to Anyone and Filter by Criteria. Filters let you set a device type and an OS version range. You can also set a tester limit for the link. That way your group does not grow out of control if the link spreads.

However, know the risk. Apple says plainly that anyone can share the link. Therefore, for a product that must stay confidential, prefer email invitations over a public link. You can deactivate the link at any time.

Anonymity matters too. Testers who join through the link appear as anonymous unless they add an email when they send feedback. Still, you can see install dates, sessions and crashes. In practice, the public link is great for numbers and weak for one to one conversations.

How long does a TestFlight build stay available?

According to Apple's TestFlight overview, you can test a build for up to 90 days. After that, the build becomes unavailable for testers. Because policies change, we recommend checking the current value on the official page.

This limit has a practical side effect. In a long beta program, the build on a tester's phone expires quietly. The tester then opens the app, sees it fail and assumes your app is broken. So in long programs, ship a fresh build at regular intervals and remind testers about the deadline.

You can also expire a build early. For example, if you find a serious data bug, it makes sense to expire the old build and send the fixed one. Apple also notes that if you do not expire a build and then submit it to the App Store, invited testers can keep testing it after release.

Put build start dates in your calendar. On our projects, we keep the next build ready about a week before expiry. Testers never face a gap that way.

How do testers install and use your beta app?

The tester side is simple, yet first timers still get stuck. First, they install the free TestFlight app from the App Store. Next, they tap the link in the invitation email or the public link and accept. Your app then appears in TestFlight, ready to install.

After installation, the beta app sits on the home screen like any other app, with a small marker next to its name. Testers can also go back to earlier builds. According to Apple's TestFlight page, a tester can use your shared builds on up to 30 devices; check the current figure there.

We suggest sending testers a short setup note. These three lines prevent most questions:

  • Install the TestFlight app first, then open the invitation link.
  • If the invitation went to a different Apple Account, sign in with that account.
  • If the app does not open, reinstall the latest build from inside TestFlight.

Also note that Apple says Managed Apple Accounts in reserved domains cannot test builds. If your corporate testers use such accounts, ask them to join with a personal Apple Account instead.

How do you collect TestFlight feedback and screenshots?

A key strength of TestFlight is that feedback comes from inside the app. A tester takes a screenshot, marks it up, adds a comment and sends it. You then find these notes in App Store Connect, in the TestFlight tab, under Feedback and Screenshots.

You can filter feedback by platform, app version, build group, build, OS version and device. Each item opens with the full screenshot and comment, and you can download it as a zip file. There is also an option to open screenshot feedback in Xcode.

We sort feedback into three buckets:

  • Blockers: crashes, failed sign-in, payments that never complete.
  • Experience issues: confusing copy, hidden buttons, slow screens.
  • Suggestions: good ideas that this release does not need.

Each morning, the team looks at blockers first and experience issues second. Suggestions go to the roadmap. In addition, Apple offers webhooks that fire when new feedback arrives, plus App Store Connect API endpoints. Use them if you want feedback to flow into your own issue tracker.

How do you read crash reports in TestFlight?

When the app crashes for a tester, TestFlight offers a short prompt to add context. You find these entries under Feedback and Crashes. The table shows submission times and crash details. For each entry, you can download a zip with the crash report and the comment.

Apple's help page says crash reports stay available for download for 120 days. For that reason, download them on time and store them in your own system. Also note that when an app becomes unresponsive and stops, the zip may not include a crash report.

When you read a report, start with the build and the OS version. Then read the tester's comment. A line like "it closed when I added a second item to the cart" gives you context the report alone cannot. If you can reproduce the crash, the fix usually comes fast.

Example scenario: three testers report a crash on the same screen, and all of them run an older OS version. Most likely, the code relies on a system feature that the older version lacks. In short, filters help you narrow the problem down in minutes.

How should you write the What to Test note?

What to Test is the short task note that travels with every build. The clearer this note is, the more useful your feedback becomes. A vague note usually brings back shallow comments like "looks nice."

A good note has three parts: what changed in this build, what you want testers to do, and how they should report problems. Here is a sample note:

  1. This build adds a new sign-up screen and a password reset flow.
  2. Please create a new account, sign out, then reset your password and sign back in.
  3. Take a screenshot and add a short note at every step where you get stuck.

List known bugs in the note as well. That way testers will not keep reporting an issue you already know about. Apple also lets you add localized versions of this note. So if you have testers in several languages, write the note in theirs.

Keep it short. Testers skip long text; a bulleted task list of five lines or fewer works best.

What are the most common TestFlight mistakes?

The issues we see most often are about process rather than code. Here are the frequent ones:

  • Ignoring the export compliance question, so the build sits in Missing Compliance and never reaches testers.
  • Uploading a build as TestFlight Internal Only and then trying to add it to an external group.
  • Uploading again without raising the build number.
  • Giving no demo account for external review, or giving an expired one.
  • Leaving a public link open without limits and leaking a confidential product.
  • Losing track of the 90 day window and leaving testers with an app that will not open.
  • Trying to add someone to an internal group before they become an App Store Connect user.

Most of these take minutes to prevent. Therefore, run a short checklist before every build. If you link automated tests to that checklist, the build that reaches human testers will be cleaner. We compare automation tools in our Selenium vs Cypress vs Playwright guide.

Also, if you do not want to answer the export compliance question on every build, you can declare your encryption use in the app's configuration file. Read Apple's encryption documentation and choose the declaration that fits your case.

Can you reward TestFlight testers?

No. Paying testers or giving them any kind of compensation breaks the rules. Guideline 2.2 of Apple's App Review Guidelines says apps using TestFlight cannot go to testers in exchange for compensation of any kind, including rewards for crowdfunding.

The same guideline makes two further points. First, demos, betas and trial versions belong on TestFlight, not on the App Store. Second, any app you submit for beta distribution should aim for public distribution and follow the guidelines. In other words, TestFlight is not a permanent side door around the store.

Also, when you make significant changes to a beta build, you should submit it to TestFlight App Review before you distribute it. For example, if the payment system or content type changes, do not try to keep it out of review.

So how do you keep testers motivated? Non monetary gestures such as a thank you email, a mention in release notes or a short call with the product team stay within the rules. Still, if you are unsure about a specific idea, read the current guidelines.

How do Google Play testing tracks compare with TestFlight?

If your app ships on both iOS and Android, you need a parallel test setup on each side. Google Play Console offers three testing tracks: internal, closed and open. According to the Play Console Help page, an internal test can have up to 100 testers per app and might skip standard Play policy reviews.

Closed testing goes to people you choose through email lists or Google Groups. Open testing, by contrast, is a wide beta that people can find on Google Play or join through a link. This setup resembles the internal and external split in TestFlight, yet it is not identical. For instance, the opt-in link only appears once the app status is Published.

On cross platform projects, we tie both sides to one calendar. That matters even more when one codebase serves both platforms, an approach we explain in our React Native guide. If Android runs into a removal or policy issue, our Google Play policy appeal guide will help.

In short, read each store's testing rules separately and manage them with one shared checklist.

Example scenario: what does a two week TestFlight plan look like?

The plan below is an example scenario for a mid sized service app. It is a starting frame, not a guarantee. Stretch or shorten it to fit your project.

  1. Days one and two: first build to the internal group and checks on core flows.
  2. Days three and four: a new build with blocker fixes and another internal round.
  3. Day five: first build to the external group and submission to Beta App Review.
  4. After approval: a small group of loyal users invited by email.
  5. Day eight: feedback sorted into three buckets and a fix build.
  6. Day ten: if needed, a wider round through a limited public link.
  7. End of week two: final build, store copy and screenshots, then submission.

The most important part of this plan is a short review at the end of each round. Which bugs closed? Which ones move to the next release? What did testers misunderstand? If you write those answers down, your launch decision rests on data.

Keep talking to testers throughout. A short note with each new build keeps participation alive.

How should you choose your beta testers?

The right testers give you the right feedback. If only your own team tests the app, you hear from people who already know the flow. For that reason, open the external round to people who match your audience but have never seen the product.

We usually split testers into three layers. The first layer is the team and close stakeholders; they catch technical bugs fast. The second layer is loyal customers or frontline staff; they know the real workflow. Finally, the third layer is people seeing the product for the first time; they give the most honest first impression.

Device variety matters as well. If you only test on the newest phones, you miss slowness on older ones. Public link criteria let you filter by OS version, which helps you keep that balance.

A large tester count is not good on its own, either. Twenty engaged testers who answer questions beat hundreds of people who never send feedback.

How do you move from beta testing to the App Store?

When the TestFlight round ends, you have a clean build and real user data. At this point you prepare store listing copy, screenshots, privacy details and review notes. The questions testers asked most often are strong candidates for the first lines of your store description.

Make sure the final build matches the build you tested. An untested last minute change can undo the whole round. If you want to see how we check this discipline when hiring, look at our iOS Swift developer interview questions.

If you want one team to run the whole process, we can help. We build your app, manage the TestFlight rounds and take it to the store. Request a quote through our mobile app development service page, and we will define scope and timeline together.

In short, TestFlight turns launch day from an exam into a planned step when you use it well.

Frequently Asked Questions

Does TestFlight cost anything?
No, testers download the TestFlight app from the App Store for free. However, uploading builds and creating test groups requires an Apple Developer Program membership on your side. Membership fees and terms can change over time, so check the current details on the Apple Developer website. Testers themselves never pay anything to join.
How long does a TestFlight build last?
According to Apple's TestFlight overview, you can test a build for up to 90 days, after which it becomes unavailable for testers. This policy can change, so check the official page. In long beta programs, ship a fresh build before the old one expires so testers never face a gap.
Does internal testing need Beta App Review?
No, builds you add to an internal group do not wait for Beta App Review. Internal testers are team members with App Store Connect accounts. The first build you send to external testers, however, goes through TestFlight App Review. Later builds of the same version might not need a full review.
A tester got the invite but cannot see the app. What should they do?
First, confirm the tester installed the TestFlight app and accepted the invitation with the same Apple Account. Next, check that the build has not expired and belongs to the tester's group. If an external build is still in review, the tester cannot install it yet. Managed corporate Apple Accounts may also be blocked.
How many people can join through a public link?
When you create a public link, you can set a tester limit, and per Apple's guide that limit stays within the external tester cap. You can also add device and OS version criteria. Because anyone can share the link, we recommend email invitations for confidential products. You can deactivate the link whenever you like.
Can I give testers gifts or discounts?
No. Guideline 2.2 of Apple's App Review Guidelines says apps using TestFlight cannot go to testers in exchange for compensation of any kind. Non monetary gestures, such as a thank you email or a mention in release notes, are safer choices. If you are unsure, read the current guidelines on Apple's official page.
  • TestFlight
  • iOS
  • App Store Connect
  • beta testing
  • mobile app
  • app testing
Share:
Talha Aslan

Google Partner digital marketing expert. Hands-on with SEO, Google Ads, web design and e-commerce projects since 2012; every post here comes from that experience.

Next project

Get a quote for your project.

Your brief goes straight to Talha Aslan and team: strategy led by Talha, delivery by an experienced team. We reply the same day and send the scope, timeline and price as a written quote within 1 business day.