CodePush 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.
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-android, with their own deployment keys respectively. 🔑
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.
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
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.
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. 💯
Modifications of the native code such as
MainActivity.javaand 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? 😍