Distribute iOS apps to testers using the Firebase CLI

You can distribute builds to testers using the Firebase CLI. The CLI tool lets you specify testers and release notes for a build, and distributes the build accordingly.

Before you begin

If you haven't already, add Firebase to your Apple project.

If you aren't using any other Firebase products, you only have to create a project and register your app. However, if you decide to use additional products in the future, be sure to complete all of the steps on the page linked above.

Step 1. Build your app

When you're ready to distribute a pre-release version of your app to testers, build a signed distribution archive. You can use your normal build process as long as you meet the following requirements:

  • To distribute your app beyond your development team, you must use either an Ad Hoc or your Enterprise distribution profile.
  • If your app uses Game Center, APNs (and by extension, Cloud Messaging), or iCloud, make sure your provisioning profile uses an explicit app ID, and not a wildcard ID.
  • If you are using an Ad Hoc distribution profile, include the unique device IDs (UDIDs) of your testers' devices. As new iOS testers enroll in your test program, you will need to update the provisioning profile with their devices' UDIDs. See Register additional tester devices.
  • If you have made code changes since the last build (that is, you aren't rebuilding only to update the registered devices), update the build target's user-visible version number (Version) and unique build number (Build).

When the build completes, it saves an IPA file and some log files in the folder you specify. You distribute the IPA file to your testers in the following steps.

Step 2. Distribute your app to testers

To distribute your app to testers, upload the IPA file using the Firebase CLI:

  1. Install or update to the latest version of the Firebase CLI (we recommend downloading the standalone binary for the CLI specific to your OS). Make sure to sign in and test that you can access your projects.
  2. In the App Distribution page of the Firebase console, select the app you want to distribute, then click Get started.
  3. Run the appdistribution:distribute command to upload your app and distribute it to testers. Use the following parameters to configure the distribution:

    appdistribution:distribute options

    Required: Your app's Firebase App ID. You can find the App ID in the Firebase console, on the General Settings page.

    --app 1:1234567890:ios:0a1b2c3d4e5f67890

    A refresh token that's printed when you authenticate your CI environment with the Firebase CLI (read Use the CLI with CI systems for more information).

    --token "$FIREBASE_TOKEN"

    Release notes for this build.

    You can either specify the release notes directly:

    --release-notes "Text of release notes"

    Or, specify the path to a plain text file:

    --release-notes-file "/path/to/release-notes.txt"

    The email addresses of the testers you want to invite.

    You can specify the testers as a comma-separated list of email addresses:

    --testers "ali@example.com, bri@example.com, cal@example.com"

    Or, you can specify the path to a plain text file containing a comma-separated list of email addresses:

    --testers-file "/path/to/testers.txt"

    The tester groups you want to invite (refer to Manage testers). Groups are specified using group aliases, which you can look up in the Firebase console.

    You can specify the groups as a comma-separated list:

    --groups "qa-team, trusted-testers"

    Or, you can specify the path to a plain text file containing a comma-separated list of group names:

    --groups-file "/path/to/groups.txt"

    A flag you can include to print verbose log output.

    For example:

    firebase appdistribution:distribute test.ipa  \
        --app 1:1234567890:ios:0a1b2c3d4e5f67890  \
        --release-notes "Bug fixes and improvements" --testers-file testers.txt

    In addition to distributing releases, you can also use appdistribution:testers:add and appdistribution:testers:remove to invite new testers or remove existing testers from your Firebase project. Once a tester has been added to your Firebase project, you can add them to individual releases. Once you remove a tester, they will no longer have access to releases in your project. Note that testers who are recently removed can still retain access to your releases for a window of time.

    For example:

    firebase appdistribution:testers:add anothertester@email.com moretesters@email.com
    firebase appdistribution:testers:remove anothertester@email.com moretesters@email.com

    Tester emails must be separated by a space. You can also specify testers using --file /path/to/testers.txt.

Once you distribute your build, it becomes available in the App Distribution dashboard of the Firebase console for 150 days (five months). When the build is 30 days from expiring, an expiration notice appears in both the console and your tester's list of builds on their test device.

Testers who haven't been invited to test the app receive email invitations to get started, and existing testers receive email notifications that a new build is ready to test (read the tester set up guide for instructions on how to install the test app). You can monitor the status of each tester-whether they accepted the invitation and whether they downloaded the app-in the Firebase console.

Testers have 30 days to accept an invitation to test the app before it expires. When an invitation is 5 days from expiring, an expiration notice appears in the Firebase console next to the tester on a release. An invitation can be renewed by resending it using the drop-down menu on the tester row.

Step 3. Register additional devices

When testers accept an invitation to test a build not signed with an Enterprise profile, they are asked for permission to share their device's identifier with you. If they agree, App Distribution collects the UDID from the device and notifies you of the UDID by email.

When you receive one of these emails, update your provisioning profile with the UDID and distribute a new build to your testers by following these steps:

  1. Add the devices to your Apple developer portal.
    • Option 1: Import the device UDIDs as a CSV file.

      In the Testers & Groups tab of the App Distribution dashboard, select All testers, then click Export Apple UDIDs to download a CSV file. Next, import the file into your Apple developer account using the Register Multiple Devices option. Refer to Apple's documentation to learn more.

      Note that your Apple developer account may only allow you to import a limited number of devices per year.

    • Option 2: Collect and enter the UDIDs by email.

      On the Add Devices page of the Apple developer portal, register the new UDID specified in the email you received.

  2. Add the registered devices to your provisioning profile.
  3. Download the provisioning profile and use it to rebuild your app. If you are rebuilding only to update the registered devices, don't update the build number or version.
  4. Re-distribute your app from the Firebase console or CLI. If you have already distributed a build with the same build number and version, only users of newly-registered devices receive notification emails.