Sharing pre-release versions of your app
The typical means of distribution for a mobile app is through the Apple App Store and/or Google Play Store, but this isn't the best way to share pre-production builds. During the development process you'll want share your progress with both technical and non-technical stakeholders of the project to gather feedback and test it, and there are several approaches you can take for doing this.
If you are using the Expo Managed workflow, you can share your application with your team through the Expo Go app. Expo Go is the easiest option to set up, doesn't require a paid Apple Developer account, and works the same on both platforms. Your users will launch the application through Expo Go rather than from an app icon though, so if that experience is important to you, consider Interal Distribution
or TestFlight for iOS
- Publish the latest version of your project to Expo's servers by running
- Invite your teammate to the Expo account that owns the project.
- Have them download the Expo Go app onto their device.
- They'll be able to open your application from the Profile tab of their Expo Go app.
If you want to share outside of Expo Go, Android and iOS both offer ways to install a build of your application directly on devices. This gives you full control of putting specific builds on devices, allowing you to iterate quickly and have multiple builds of your application available for review at the same time.
To share your application to Android devices, you must build an APK (Android application package file) of your project. APKs can be installed directly to an Android device over USB, by downloading the file over the web or through an email or chat app, once the user accepts the security warning for installing an app that has not gone through Play Store review. AAB (Android app bundle) binaries of your application must be distributed through the Play Store.
Apple offers Ad Hoc provisioning profiles
to distribute your app to test devices once they have been registered to your Apple Developer account. This method requires a paid Apple Developer account and that account will only be able to use this method to distribute to at most 100 iPhones per year.
You will need to know the UDID (Unique Device Identifier) of each device that will install your application, which may be challenging if you are trying to share with someone who is not a developer. Adding a new device will require a rebuild of your application.
Setting up Ad Hoc certificates correctly can be intimidating if you haven't done it before, and tedious even if you have. If you're using EAS Build
, which is optimized for Expo and React Native projects, we'll handle the time-consuming parts of setting up Ad Hoc credentials for you.
If your app is only intended to be used internally and will not be distributed through the App Store, you should use Enterprise distribution. Unlike Ad Hoc Distribution, there is no limit to the number of devices that can install your application, and you will not need to manage the UDIDs of each device. Enterprise Distribution requires membership in the more expensive Apple Developer Enterprise Program
, which requires your organization to be a legal entity and go through Apple's verification process.
TestFlight is another option to distribute your application to iOS devices. TestFlight also requires a paid Apple Developer account, but allows you to share your application with up to 10,000 users that can be invited with their email or a public link. This method requires you to upload your application
to App Store Connect and wait for the automated review before you can share a build. If you intend to ship new builds frequently, investing the time to set up Ad Hoc distribution will be worthwhile.