App Center is retired: how to keep shipping React Native updates with CodePush
Microsoft retired Visual Studio App Center, and its CodePush service with it. Here is how to keep sending over-the-air updates to your React Native app without changing how your team works.
Microsoft retired Visual Studio App Center on 31 March 2025, and the hosted CodePush service went with it. For many React Native teams, CodePush was the way to fix a bug or change copy without waiting days for store review.
You have two options: run a CodePush server yourself, or move to a hosted service. This post covers what to check either way, and how the move looks with CodeOnAir.
What you need to keep
- Over-the-air JS bundle updates for Android and iOS, per binary version.
- Mandatory vs optional updates, and when they install (right away, on next restart, on resume).
- Staged rollouts — send an update to 10% of users before everyone.
- Automatic rollback — if an update crashes before the app reports it's healthy, the next launch goes back to the previous bundle.
- A CLI for CI, so releases come from your pipeline, not someone's laptop.
Self-hosting vs hosted
Running your own server gives you full control, but you own storage, a CDN for bundle downloads, uptime, security updates and the release dashboard. For most teams the update service isn't the product — a hosted one is less work.
Moving to CodeOnAir CodePush
1. Install the SDK
npm install @codeonair/code-push-react-native
Point your app at the CodePush bundle in MainApplication (Android) and AppDelegate (iOS) — the dashboard shows the exact lines.
2. Sync on every launch
import CodePush from "@codeonair/code-push-react-native";
useEffect(() => {
CodePush.sync({
installMode: CodePush.InstallMode.ON_NEXT_RESTART,
mandatoryInstallMode: CodePush.InstallMode.IMMEDIATE,
});
}, []);
sync() confirms the running update (so it isn't rolled back) and checks for a new one.
3. Release from the CLI or CI
npm install -g @codeonair/code-push-cli
codeonair-codepush release-react shop-android -t 1.0.0 -d "Fix checkout"
Add --mandatory for updates every user must get.
Rules that still apply
Over-the-air updates can change your JavaScript and assets, not native code. Anything that touches native modules, permissions or the app binary still goes through the store. Both Apple and Google allow interpreted-code updates that don't change the app's main purpose.
Move your CodePush in a day: request access — the Free plan includes 1,000 CodePush downloads a month, and every new workspace gets 30 days of Pro.