TestFlight Tutorial: iOS Beta Testing

Tom Elliott
Learn how to use TestFlight to beta test your iOS apps!

Learn how to beta test your iOS apps!

Update note: This tutorial has been updated by Tom Elliott. The original tutorial was written by Dani Arnaout.

TestFlight Beta Testing is an Apple product that makes it easy to invite users to test your iOS, watchOS and tvOS apps before you release them into the App Store. This TestFlight tutorial will walk you through integrating TestFlight into your own apps.

This is one of those rare tutorials where you don’t have to code — just follow through the steps in this tutorial and you’ll be up and running with TestFlight in no time! :]

Getting Started

Don’t have an app right now but still want to proceed with this tutorial? No problem! Download our beloved Flappy Felipe project and use that as you follow along. Make sure you change the bundle ID of the app to your own unique ID; for example, com.yourname.FlappyFelipe.

This tutorial assumes that your app is set up for provisioning, and has an app ID created in both the developer portal and on iTunes Connect.

This setup is outside the scope of this tutorial, but you should be able to use automatic provisioning as described in Setting up Xcode to automatically manage your provisioning profiles, and create a record in iTunes by following the instructions in Create an iTunes Connect Record for TestFlight Beta Testing in the iTunes Connect Developer Guide.

Submitting your Build to iTunes Connect

Open up your project in Xcode, make sure you have a correct Bundle Identifier, that your Team ID is set, and that you’ve chosen the automatic Distribution Certificate Code Signing Identity:

AA- Code Signing

Choose Product\Archive from the top toolbar:

2- Product Archive

Once Xcode finishes archiving your project, click the shiny blue Upload to App Store… button:

3- Archive

Now you need to choose your development team:

4- Choose Team

Finally, click Upload:

5- Submit

Wait for a few minutes as your build uploads. Grab a coffee, perhaps, or if you have a slow internet connection, go grab a bite. Or two. Or three. :]


Once you’re done, you should receive a success message like the following:


That’s all the work required for Xcode. Your beta build is now available on iTunes Connect, and that’s where you’ll be doing the rest of the work to set up TestFlight.

Create and Enable Testers to Beta Test Apps

Your build is ready for testing, but who’s going to test it?

Apple defines two types of testers for Test Flight:

  • Internal Tester: This is an iTunes Connect user that has an Admin, Technical, App Manager, Developer, or Marketer role with access to your app. This is usually a team member or a client you’re developing an app for. You can add up to 25 internal testers.
  • Note: Apple are in the process of deprecating the Technical role in favour of the App Manager role. At the time of writing both roles are available. If you have existing users with the Technical role you should start migrating them over to the App Manager role. New users should be created with the App Manager role.
  • External Tester: This is any user outside of your team that wants to test your app. An external tester has no access to your iTunes Connect account in any way, and can only download and install the app. You can add up to 2000 external testers.

Before your external developers can test your app, you have to submit your app to be reviewed by Apple, just as you would with a normal App Store submission. These reviews tend to go faster than normal app reviews (although don’t count on it), and once it’s approved you can let external developers test your app. Internal testers, on the other hand, are instantaneously able to test new builds.

You’ll learn more about external testers later, but for now, let’s focus on internal testers.

To add an internal tester, head to the Users and Roles section in iTunes Connect:

10 - Users and roles

On the Users and Roles screen, click the + button to add a new user:

11- Users

Fill in your new user info and click Next:

15- Roles

You’ll need to use a unique email address for your new user. If you don’t have a second email account, you can usually append +whateveryouwant to the first part of your email address, and the email will still get delivered to you. For example tom+mytestaccount@razeware.com.

Now you need to assign roles for the user. In most cases, you’ll want to choose App Manager. You can read more about the privileges for each role and choose the appropriate one for your user.

Note: The number of different roles and permissions can be a bit daunting! When it comes to Test Flight, use this handy table to help you.

Admin App Manager Developer Marketer Sales
Can be an Internal Tester
Can Upload a Build
Can Submit a Build for External Testing

Once that’s done, click Next:

16- Roles

Choose the type of notifications you want your new testers to receive, then click Save:

17- notifications

Your user is now created, but as the message indicates, that user first needs to verify his or her email address before the account will show in iTunes Connect.

Creating a new internal beta tester is only the first part of the process. The remaining step is to invite this particular tester to test your latest build.

It’s time to enable your app for testing — so the tester actually has something to test! :]

Starting Beta Testing

To start beta testing of your app, go to the My Apps section on the iTunes Connect home page and click on your app:

20- connect

Select the Activity tab and you’ll find your latest build. Make sure it is no longer marked as processing. If it is, go make another cup of coffee and come back later. :]


Next, click on the TestFlight tab, then Internal Testing in the left hand menu. Click Select Version to Test and choose the version you just uploaded. Finally, click Start Testing and, in the confirmation pop-up, Start Testing again.

Start Testing
All selected testers will now receive an email that lets them download and install this build from the TestFlight app. There are detailed instructions on how to do that in the last section of this tutorial.

That takes care of internal testers, but what about external testers?

That’s just as easy! First, go to the Test Information tab and fill in your Feedback Email, Marketing URL and Privacy Policy URL. You can choose to add a License Agreement at this stage as well if you wish, but it is not necessary.

30- TestInformation

Next, go to the External Testing tab, click the + button and select Add New Testers:

32- External

Add the email addresses of any external users you want to add. Once you’re finished, click Add to add these testers to your account. All external testers will count toward your 2000 external tester limit:


Click Save.

You now need to select a build (again) for your external testers, and put that build through the Beta App Review.

Note: Why do you need to select the build again? Well you may want your internal and external testers to be testing different builds. For example, your external testers may be testing your next release candidate, but your internal testers are testing your master build. By making you select a build for internal and external testers separately iTunes Connect allows this kind of separation.

Click Add Build To Test, select your build, and then click Next.


Fill in all the fields. Remember – the more information you give Apple the easier it is for them to review your app! Finally, hit Submit.


Your app will be added to the review queue! :]

Note: In my own experience, your first beta app review can take up to 48 hours to be approved. Subsequent beta app reviews are usually much faster.


Once the app has passed Beta App Review you will receive an email with confirmation that your app can now be used by external testers.

Note: A build is only valid for 60 days. If you want your testers to use the app beyond that, you’ll have to upload a new build before the expiration date.

Head back to the External Testing section for your app in iTunes Connect, select the build and hit Save. A dialog will pop up confirming that you are about to notify people. Click Start Testing.


Your external testers will then receive an invitation email similar to the one received by your internal testers as described above.

Note: What happens if invites go missing? Currently there is no easy way to re-send invite emails if they go missing. For internal testers the easiest approach is probably to upload a new build (as it doesn’t have to go through Beta App Review). For external testers you can either remove the user and then re-add the user as a tester, or remove your app from external testing and then quickly re-add it. This second approach will re-send an email invite to all your external testers so be careful! :]

That shows the developer’s perspective of app testing, but what does it look like from the tester’s perspective?

Testing an App

As an internal tester, you need to link your Apple ID to iTunes Connect (external testers can skip to the TestFlight App section below). By now, you should have received an email from iTunes Connect that looks like this:

21- Email

Click on activate your account and follow the supplied steps. Once your account is ready for testing, get your iOS device and go to the Settings app. Scroll down to iTunes & App Store:

19- Settings

Log in with the account you just verified a minute ago. If you’re already logged in with another account, log out first:

20- Log in

TestFlight App

Go to the App Store, and search for the TestFlight app:

21- Search

Download the TestFlight app and launch it.

Note: If you’re required to log in, simply use the same credentials you used to verify your account.

Internal testers will automatically receive an email when new versions of the app are uploaded to iTunes Connect. External testers will receive a similar email after the app has been through Beta App Review and the build has been pushed out to external testers by an Admin or App Manager in iTunes Connect:

24- Invite Email

Open this email on your testing device, then tap Start Testing. This will launch TestFlight and show you the app you need to test. A tester must tap Start Testing on the device they’ll be testing on; otherwise the app won’t be available for download by the tester. Tap Accept, then Install, and wait for the app to download:

25- Accept

The app will be downloaded and appear on your home screen!

That was the hardest part of being a tester. From now on, whenever a new version of this app is available, you’ll see a notification from TestFlight. All you need to do is update your app and run the latest version.

Where to Go From Here?

In this TestFlight tutorial you learned how to upload your test build and invite internal and external testers to your app.

If you’re interested in knowing more about iTunes Connect in general, and beta testing in particular, read through Apple’s TestFlight Beta Testing Documentation. Apple’s Developer site also has a summary page for TestFlight, which includes links to all the relevant documentation as well as a video outlining the TestFlight process.

You can also check out iOS 8 by Tutorials; the final chapter What’s New with iTunes Connect showcases everything you need to know to manage your testing effort.

If you want to take your app deployment to the next level, take a look at our fastlane tutorial, which covers a set of tools that you can use to automate managing iTunes Connect and submitting apps.

I hope you enjoyed this TestFlight tutorial, and if you have any questions or comments, please join the forum discussion below!

Tom Elliott

Tom is an iOS Engineer working for Facebook in their London office. When he's not hacking up new ideas you'll find him on two wheels, spinning along the tarmac or bouncing down the hills :)

Other Items of Interest

Save time.
Learn more with our video courses.

raywenderlich.com Weekly

Sign up to receive the latest tutorials from raywenderlich.com each week, and receive a free epic-length tutorial as a bonus!

Advertise with Us!

PragmaConf 2016 Come check out Alt U

Our Books

Our Team

Video Team

... 27 total!

iOS Team

... 83 total!

Android Team

... 44 total!

Unity Team

... 16 total!

Articles Team

... 4 total!

Resident Authors Team

... 31 total!

Podcast Team

... 7 total!

Recruitment Team

... 8 total!

Illustration Team

... 4 total!