Send Out Your React Native App with Ad Hoc

Zalmy Muskal
3 min readNov 13, 2020

I wrote a blog previously on how to upload your React Native app to TestFlight. But what happens if you want to send your app out to get tested by people that aren’t on your team?

So there are a couple of options that Apple allows. One of them is sending out your app to be beta tested. This requires your app to be sent to Apple for review. After your app has been approved you can invite people or groups to beta test the app through their email or invite (you are using TestFlight so it works the same way). Apple lets you have up to 10,000 testers.

Then there is Ad-hoc. Maybe you aren’t ready for your app to be reviewed by Apple. This is where Ad-hoc distribution comes in.

Apple lets you have 100 devices with Ad-hoc. You just need an Ad-hoc ipa to distribute the app and a way for them to download the app. The catch is the 100 devices need to registered which means you will need their phone's UDID number. Trying to explain to a tester how to find the UDID can be annoying. The easiest thing to do is send them this link. Another thing to keep in mind is once a device is registered you can’t remove the device until your new membership year.

Ok, So how do I create and send Ad-hoc distribution?

Register the device

On your Apple Developer account go to the Certificates, Identifiers & Profiles section.

Go to the devices section and click the add button.

Choose what platform you are on. Add the device name (whatever you want). Add the device UDID number.

Creating a new profile

Now go to the profile section and click the add button.

Under ‘Distribution’ choose Ad Hoc.

Choose your app's ID.

Select your distribution certificate.

Select all the devices you would want to include.

Add the name of your choice and click generate.

Generate your ipa

If you already have an xcarchive then you can just use that and skip this next step. If you don’t follow on.

You want to open up Xcode and on the menu go to Product > Destination > Generic IOS Device.
Then click on Product > Archive.
This will create an xcarchive in ~/Library/Developer/Xcode/Archives .

Open up the xcarchive in Xcode’s Organizer.

Click on Distribute App.

Choose Ad Hoc.

For App thinning choose none. As for the additional options you can play around with them. I am rebuilding from Bitcode and Strip Swift Symbols. I am not creating a manifest since I will be distributing with Firebase.

Choose your distribution certificate and the Ad hoc profile we created.

Once it is finished export it to a folder of your choosing.


Now that we have an ipa of our app it is time for distribution. There are different ways to distribute your app but for this tutorial, I am using Firebase. If you don’t have a Firebase project then you might want to use a different method.

On Firebase’s menu go to App Distribution.

On the top make sure that ios is selected.

Drag and drop the ipa.

Add testers and write release notes.

They will get a notification with instructions on how to download the app.


If doing all this is tedious and you want to add to our previous code in Fastlane to automate this whole process, you can. (You will still need to add the UDID’s manually.) First, you want to add Firebase to Fastlane.

In the root of the /ios directory run fastlane add_plugin firebase_app_distribution .

Next, you want to authenticate with Firebase. There are three ways to do this.
1. Sign in to your Google Account via the plugin’s login action
2. Use Firebase service account credentials
3. Sign in using the Firebase CLI

Next in your Fastfile you want to add the adhoc lane

Finally, if you want, you can create another lane to run the beta and then the adhoc, one after the other.

I hope this makes things easier for you. Happy coding!