We use Codepush for over-the-air updates to the JavaScript bundle. This allows for app updates without going through store review processes. Only updates to JavaScript code can we updated via Codepush. Changes to native code must go through the normal review/release process.
We have scripts in package.json for common Codepush commands. For any other AppCenter commands, you will need a global install of appcenter-cli
Push everything
yarn codepush: Build and push local JavaScript bundle to Staging iOS and Android
or push individual
yarn codepush-ios: Build and push local JavaScript bundle to Staging iOS
yarn codepush-android: Build and push local JavaScript bundle to Staging Android
Our Staging/Production setup is not really a thing yet. In AppCenter we have Staging/Production deployments for CodePush. "Staging" is not in use in any AppCenter-deployed versions of the app. It's only in place on local iOS builds.
To promote a JS bundle to Production, you must first push it to Staging. This is on purpose to add friction to the process to make sure we’re extra mindful of what we're releasing to users.
Promote everything
yarn codepush-prod: Promote the latest Staging bundle to Production for iOS and Android
or promote individual
yarn codepush-prod-ios: Promote the latest Staging bundle to Production for iOS
yarn codepush-prod-android: Promote the latest Staging bundle to Production for Android
yarn codepush-log: View the release history for Staging and Production deployments for both iOS and Android
yarn codepush-log-ios: View the release history for Staging and Production deployments for iOS
yarn codepush-log-android: View the release history for Staging and Production deployments for iOS
The scripts could be cleaned up by using other files, but for the time being it's working fine for us like this. If we need to expand these much more, I'll probably abstract them.