I want to build an expo dev client that I can reuse with different react native apps. I understand the dev process, but what about distribution. When I release each app separately, how do I specify to use my expo dev client instead of the default expo runtime?
hi there! is this like a whitelabeled app type of scenario, where all of the apps will just be some configuration changes? i don’t have quite enough information to guide you from this question yet
Exactly! The white labeled apps will have native configuration requirements and react native UI/UX changes with the same native features.
I think I might have figured it out reading through the docs. I was thinking I needed to go the bare route but actually it might be more of a custom managed route with the config plugins.
I can create custom config plugins that will configure the native apps automatically during the prebuild process. Then I could reuse the expo dev client for each of the other projects without needing a native build until I’m ready to release the apps.
In these app directories, I will have identical dependencies and config plugin that will setup the native config files automatically which means I shouldn’t need to commit the ios/android directory since it can generate all the necessary native files each release.
This should get me close to what I want. Developers don’t have to worry about the native build because they can use the expo dev client that I generate from the base app. Releasing is a little heavier than expected but I do like the idea of coding each native configuration in code to make it reproducible.
Let me know your thoughts. Thanks!
When I release each app separately, how do I specify to use my expo dev client instead of the default expo runtime?
When you build on eas we do not include
default expo runtime, basically the entire build process is expo eject with some additional configuration andxcode/android build. When you are building dev client situation is the same, only difference is that it’s built in a debug mode and there is additional dev client code there. I’m not really sure what is a problem with app distribution, each app will have native runtime depending on what modules you have in package.json, if you want to have the same state you need to keep those packages in sync between different apps
If you want to build one dev client you can build it for any of the apps, if native dependencies are the same client created this way should work with any app.