React Native
React Native is a popular open-source framework that allows developers to create mobile applications for both iOS and Android using JavaScript and React. Its central principle is "learn once, write anywhere," enabling a single codebase for both iOS and Android applications.
Expo is a free and open-source toolchain built around React Native. It simplifies the process of building, deploying, and iterating on iOS, Android, and web apps.
CodePush is a cloud service by Microsoft that enables React Native developers to deploy mobile app updates directly to users' devices over the air. It bypasses the traditional app store update cycle, allowing faster, more flexible updates.
Expo has a rich set of prebuilt components and services like build, update, and push notifications, which can speed up the development of mobile apps. It also handles SDK updates, ensuring your app stays up-to-date with the latest improvements and bug fixes.
The combination of React Native, Expo, and CodePush offers several significant advantages:
Code Reuse & Cost-Effectiveness: React Native allows for maintaining a single codebase for both iOS and Android platforms, promoting cost and time efficiency.
Community and Support: React Native has strong community support, which Expo enhances by providing a managed environment, thus reducing setup and maintenance overhead.
Faster Iterations: CodePush facilitates immediate over-the-air updates, allowing rapid deployment of bug fixes and new features without waiting for app store approval.
Expo's Services: Expo's services, including build, update, and push notifications, simplify the release process.
Considering these benefits and our positive experiences during the trial phase, we recommend adopting React Native with Expo and CodePush for our mobile app development.
As with any technology, successful adoption will depend on the specific project requirements and the team's expertise. Therefore, appropriate training and preparation should be prioritized to ensure a smooth transition.
Having come across various challenges in using React Native for native mobile app development in our teams we no longer encourage our teams to use it.
As an alternative we are assessing if we can use Kotlin/Native in this context.