In the past 2 years, I've worked on 9 React Native apps, and I've tried many different ways to test new features. All possibilities have advantages and drawbacks, so here they are.
Dev Only Local Testing Don't do any setup. Just test thoroughly and quickly after building the new feature, and release to production right after you tested it and it works. The drawback is that it can't be tested by many beta testers, and it's prone to mistakes. Also, it costs a lot of effort to test features thoroughly, while just testing it for a while by more people is almost effortless.
Using Wireless Live Reload Use Pure Expo (migrate if needed) and let BETA testers test the app by running the packager and scanning the QR Code. This can work with as many devices as you want, as long as they're connected to the same WiFi network.
Using a BETA tester Role You could make the functionality that makes it possible to give users the role 'Beta Tester'. If they have this, they can turn on and off beta features in their settings. This way you can slowly phase in and out new features (and even test beta features by segments of users to see how they like it). You won't need a different app for this. It'll take some setup, but in the long term, it'll be very easy to add features gradually.
Setup A Beta Channel within Expo If you have pure Expo it's very easy to setup a beta channel. You don't have to build, deploy and release the app every time you add something native (because you can't). You don't even have to do it once. You can just let users log into your Expo account and check out the app from within expo
Setup a Beta Channel with ExpoKit This is the above scenario. This way means we have to build/deploy/release the BETA APP every time something native changes. This means twice as much of time is wasted on these time-consuming things.
Secret Developer Mode Create a secret local developer role that makes it possible to enable certain features locally. For example, if you press 10 times on a certain Icon, then 2 times longpress, and then 5 times again, the
devmodeis activated. Now, you get an extra settings screen that makes it possible to enable and disable new features locally on your device. This is better because we don't need a different channel. One drawback of this is that there is no way of knowing that the user is really a dev. For backend driven features that require a lot of security, we need to add a developer-role to the user to limit access to certain new api's.
Personally, I'm for the 5th option. Least setup and most flexibility, but of course, it depends on your use case. You decide.
Subscribe to Karsens
Get the latest posts delivered right to your inbox