Migrate from App Center CodePush
CodePush retired.
Your OTA pipeline doesn't have to.
Microsoft shut down App Center CodePush in March 2025. PatchForge keeps the same mental model — channels, releases, staged rollouts — and adds the signing, diffing, and health scores it never had. Most teams switch in an afternoon.
Same concepts, new names
You already know how PatchForge works
| In CodePush | In PatchForge |
|---|---|
| Deployment (Staging / Production) | Channel |
| appcenter codepush release-react | patchforge-cli release |
| Deployment key | appKey (public, per app) |
| codePush() HOC / sync() | PatchForge.getInstance().initialize() |
| Rollout percentage | Staged rollout, 1 → 100%, device-stable |
| Promote between deployments | Deploy the same release to another channel |
The actual diff
Three changes, one afternoon
- 01Create your PatchForge application in the dashboard and copy its appKey.
- 02Swap the CodePush SDK for @zimbstech/patchforge-react-native and call initialize() at startup.
- 03Point CI at the PatchForge CLI — one command publishes, signs, and deploys.
migration.diff
// before- import codePush from 'react-native-code-push';- export default codePush(App);// after+ import { PatchForge } from '@zimbstech/patchforge-react-native';+ await PatchForge.getInstance().initialize({ appKey: 'pf_…' });✓ same UX for your users — updates just keep arrivingSide by side
What you gain in the move
| Feature | App Center CodePush | PatchForge |
|---|---|---|
| Status in 2026 | Retired March 2025 | Actively maintained |
| Self-serve signup | ||
| Signed bundles, verified on-device | ||
| Differential patch downloads | ||
| Staged rollout by % | ||
| Release health & crash-free rate | Limited | Per release, live |
| CI/CD automation | ||
| Bandwidth billing | Metered | Never billed (fair use) |
Ship your next hotfix through PatchForge
Free tier, no card required. Your first OTA update is minutes away.