Microsoft retired App Center on March 31, 2025. This is the complete playbook to move your React Native CodePush deployment to AppsOnAir: drop-in SDK, 1:1 CLI, zero workflow changes.
Hosted CodePush stopped accepting new releases and serving updates the same day.
AppsOnAir is API-compatible with App Center CodePush. One import change in your App entry file.
appcenter codepush → appsonair-codepush. Same flags, same arguments.
The bulk is audit and validation; the actual code changes take an hour.
AppsOnAir is tested across React Native 0.75 and above, including Bridgeless mode
Patch updates, SHA-256 signing, SOC 2 Type II (WIP), predictable pricing: all included.
Microsoft announced the retirement of Visual Studio App Center in mid-2024 with a hard cutoff of March 31, 2025. That date came and went. If you're reading this in 2026 and you still haven't migrated, your CodePush deployments aren't working, which probably explains why you're here.
Three things stay identical between App Center and AppsOnAir. That's why the migration is fast.
sync(), checkForUpdate(), install modes, mandatory flags: the methods, parameters, and return types match what you wrote against App Center.
release-react, promote, rollback, deployment ls. Every flag, every argument position, every output format your scripts depend on.
Per-platform, per-environment keys. Production and Staging deployments out of the box. Promote releases between them. Your team's mental model carries over completely.
Before diving into the steps, here's the shape of the work. Most teams hit each phase in roughly the time shown below.
Inventory your current App Center setup. Deployment keys, target binary versions, custom SDK options, every CI script that calls the CLI.
SDK package, CLI binary, deployment keys, CI/CD pipeline references. Keep your app's business logic untouched — only the OTA plumbing changes.
Ship a no-op release to 5% of users. Watch error rates and OTA telemetry for an hour. Roll forward to 100% if metrics are clean.
Follow these in sequence. Skipping the audit and going straight to code-changes is how teams introduce avoidable production incidents during migration.
Before you touch any code, document what's running. The audit usually surfaces things you forgot were there: old custom SDK options, update deployment keys in obscure scripts, target binary versions that no one's tracking.
Sign up at app.appsonair.com with your work email. Create a workspace, register your iOS and Android apps separately, then enable CodePush from each app's settings.
Replace the App Center package with the AppsOnAir equivalent and update your import statements. Most apps need a single import change in App.tsx.
Then update your app entry file. Note the import path is the only thing that changes: the API surface is identical.
Install the AppsOnAir CLI globally and authenticate. The command surface mirrors App Center, so muscle memory carries over.
Find-and-replace appcenter codepush with appsonair-codepush across every workflow file. Argument shapes are identical.
This is the proof. Every App Center CodePush command has an exact AppsOnAir equivalent. Bookmark this and run a search-and-replace across your CI repo.
Note the small structural shift: App Center used -a Org/App, AppsOnAir uses App as the first positional argument since workspaces handle org scoping.
No retraining. No re-architecture. No new mental model. Just a swap.
These are the issues that come up in real migrations, in roughly the order you'll hit them.
App Center keys baked into Info.plist or strings.xml are easy to miss.
On RN 0.75 and above with the new architecture, the OTA installs, but the runtime doesn't reload silently.
Build scripts, runbooks, and Slack bot commands often reference the old CLI months after migration.
Users on a store binary that pre-dates the AppsOnAir SDK won't pick up new bundles.
App Center CodePush stopped evolving years before it shut down. AppsOnAir picks up where it left off and adds what modern teams need.
Every appcenter codepush command has a direct AppsOnAir equivalent. CI scripts get a find-and-replace, not a rewrite.
Tested across React Native 0.75 and above, including Bridgeless mode. Documented restart patterns for bridgeless edge cases.
Binary diffing on every release. Typical patches are 5–15% of the full bundle, cutting bandwidth by an order of magnitude vs full-bundle releases.
SOC 2 Type II (WIP) and ISO 27001:2022. SHA-256 bundle integrity verification. Audit-grade logging of every deployment, rollout, and rollback.
Flat tiers without per-update or per-bandwidth-GB charges. Free tier covers production validation. Your bill doesn't compound when your release cadence increases.
AppsOnAir brings together AppSync, CodePush, OTA Distribution, AppLink, and AppRemark to help teams manage updates, distribution, deep linking, feedback, and app operations from one workspace.
Migration time is rarely the headline number, but it's the one that keeps engineering managers up at night. Here's the honest comparison from teams that have done each.
Microsoft retired Visual Studio App Center, including the hosted CodePush service, on March 31, 2025. The CodePush server source code was open-sourced before retirement so teams can self-host or migrate to a managed alternative such as AppsOnAir CodePush.
Most React Native teams complete the migration in under a day. The audit and validation phases take longer than the actual code changes. The SDK and CLI surfaces are 1:1 with App Center, so the migration itself is largely a find-and-replace exercise.
No. AppsOnAir CodePush is API-compatible with App Center CodePush by design. Most teams need a single import change in their App entry file and a deployment-key update. CI/CD scripts get a find-and-replace, not a rewrite.
No. Deployment keys are issued per platform from your AppsOnAir workspace and cannot be reused from App Center. The migration only requires updating the keys in your client SDK config; the rest of your code stays identical. Generate Production and Staging keys for each app from the AppsOnAir dashboard.
App Center CodePush has been retired since March 31, 2025, so this is no longer applicable. If you migrated to a self-hosted CodePush Server first and want to move to AppsOnAir, you can run both temporarily by targeting different binary versions or deployment environments.
Yes. AppsOnAir CodePush is tested across React Native 0.75 and above, including Bridgeless mode. The SDK ships documented restart patterns for bridgeless reload edge cases that occur when the OTA installs successfully but the JavaScript runtime needs explicit re-initialization.
AppsOnAir CodePush has a free tier suitable for production validation, with predictable flat-tier pricing above that. Unlike usage-priced alternatives, there are no per-update or per-bandwidth-GB charges, so your bill doesn't compound when your release cadence increases.