React Native meets CodePush
3 min readCodePush is a cloud service from Microsoft that gives us the ability to instantly push updates to a react-native application. Ideal for addressing bugs and introducing small features.
Getting started
Install the code-push
command line tool and create an account. 👇
Create a CodePush application
In order to associate our application with CodePush we have to register it. This process needs to be done one time per each platform.
Having said that, if you ship to iOS and Android, you'll end up with two CodePush applications codepush-iOS
codepush-android
, with their own deployment keys respectively. 🔑
Integration
Add react-native-code-push
as a dependency to your project and then link it 📦. At the time of linking you'll be asked for the deployment key obtained from registering your application on CodePush.
Provide the Production key
if you don't want a Staging
environment, incase you need it setup multi-deployment.
Now it's time to CodePush-ify our application. Basically we have to wrap our app root component with the codePush HOC. 🔫
Release and Deploy
Once you have integrated CodePush, the simplest way to deploy a production build, is to use the code-push release-react
command: 🚀
If you work with Staging
and Production
environments, first you need to ship 🚢 a staging release and then promote it to production.
After making a deployment, you can list the install metrics and metadata of the update. 📈
Update and Install policies
By default, CodePush will check for updates on every app start, if an update is available, it will be silently downloaded and installed the next time the app is restarted ⬇️. The check frequency can be modified as well as the install policy.
Demo
I've created a demo application for this post, to show how CodePush works. CodePushRN is installed in Release
mode into my iOS Simulator in order to emulate a real use case.
The first time we open the app, as you can see at the metrics screenshot, CodePush checks for updates and silently downloads a new one. As I said before, on the next app start the update will be installed. 💯
Limitations
Modifications of the native code such as
AppDelegate.m
,MainActivity.java
and others cannot be distributed via code push. Those changes require a re-build of the binary. ⚒On iOS the bug fixes and features released with CodePush should maintain the app's original/presented purpose. ⚠️ Section 3.3.2 Apple developer agreement.
Enjoyed the article? 😍