Spike: expo as deliver mechanism #2057
Replies: 5 comments
-
More context on EAS build: |
Beta Was this translation helpful? Give feedback.
-
On hold pending stabilisation of functionality that lets you add custom native dependencies. Expo was used in the past and deemed unsatisfying given the limitations that was there at that point. |
Beta Was this translation helpful? Give feedback.
-
@bodymindarts @cem2ran our current build system (fastlane) have also support for building multiples app (it is mentioned that SunApps maintains hundred of apps from the same codebase): https://github.com/fastlane/examples/tree/master/SunApps |
Beta Was this translation helpful? Give feedback.
-
Fastlane will work just fine yes. What I explained @bodymindarts was what I'm currently using for white-labeling and that if I were to start with a new project I'd go with Expo even with something like Galoy that uses custom modules. Brought Expo up as an option as it now allows for the use of custom native modules as per the linked articles without sacrificing the niceties that Expo provides. The complexity of multiple/white-labeled apps in my mind lies in figuring out how do you customize iOS and Android configurations. The two approaches I'm aware of is:
I have a feeling that the following step in the SunApps example may be doing this: 🤷♂️ https://github.com/fastlane/examples/blob/e82ae4c9ef4102c25855a78f0d22c3a7854150cf/SunApps/Fastfile#L28 I would start by defining a json file or directory per app containing assets, colors, features, app store description, screenshots and configuration needed for each app. On CI I would have job per app running in parallel. This allows you to easily see if any app builds and deploys fail*. For each job I would define an environment variable e.g. * I currently lack this in my setup as I'm running each build sequentially and need to look at the build logs to determine that everything was built and deployed successfully. Having this as CI jobs I'd know quite visibly and be alerted when it fails. |
Beta Was this translation helpful? Give feedback.
-
As far as I have understood so far expo would give us the following benefits:
OTOH the existing rollout mechanism is already setup and support for multi-app builds are possible with fastlane / circle ci. |
Beta Was this translation helpful? Give feedback.
-
Problem:
develop a scalable way to deliver the galoy mobile app to multiple communities with their own custom branding / skins.
Possible solution:
https://expo.dev is an attractive framework for delivering react-native apps that provides OTA updates out of the box. This would enable us to add new communities to the app dynamically without needing to upload multiple apps to the App Store.
There are multiple options for how to choose the correct 'skin' for the app. The user could choose it at login, the login itself could be associated with a specific instance or a custom download link might transfer the information. The paid for delivery service from expo also makes it possible to have multiple releases of the app that are pre-skinned without significant additional complexity.
All of these things are doable with 'vanilla' react-native but it looks like moving to expo would be the best way to achieve this goal. as it removes a lot of the boilerplate and other complexities.
EDIT:
Expo was used in the past and deemed unsatisfying given the limitations that was there at that point. Potentially to be revisited when integration of native libraries is stabilised.
Beta Was this translation helpful? Give feedback.
All reactions