Loading...
Microsoft is sunsetting CodePush in March 2025. BundleNudge is the drop-in replacement with the same features you love, plus modern infrastructure and active development.
Microsoft announced the end-of-life for CodePush. Here is what you need to know.
Microsoft announces CodePush will be sunset as part of App Center EOL.
No new CodePush accounts can be created. Existing users can continue.
CodePush servers go offline. All OTA updates stop working.
Switch to BundleNudge and deploy your first update in under 30 minutes.
Every CodePush feature has a direct equivalent in BundleNudge.
| CodePush Feature | BundleNudge Equivalent |
|---|---|
| Deployments (Staging, Production) | Release Channels |
| Rollback | Auto-Rollback on Crash |
| Mandatory Updates | Required Updates Flag |
| Targeted Updates | Targeting Rules (version, device, location) |
| Rollout Percentage | Staged Rollouts (1% → 100%) |
| Release History | Release History + Analytics |
| CLI (code-push release) | CLI (bundlenudge release) |
| Install Modes | Update Strategies (immediate, restart, background) |
Switch from CodePush to BundleNudge in 4 simple steps.
Sign up for free and create your first app in the dashboard.
Remove react-native-code-push and install @bundlenudge/sdk.
Replace CodePush API calls with BundleNudge equivalents (see code comparison below).
Push a test update to your staging channel and verify it works.
See how your CodePush code translates to BundleNudge.
npm install react-native-code-push react-native link react-native-code-push
npm install @bundlenudge/sdk
import codePush from 'react-native-code-push';
const App = () => {
return <MyApp />;
};
export default codePush({
checkFrequency: codePush.CheckFrequency.ON_APP_RESUME,
installMode: codePush.InstallMode.ON_NEXT_RESTART,
})(App);import { BundleNudge } from '@bundlenudge/sdk';
// In your app entry
BundleNudge.configure({
appId: 'your-app-id',
apiKey: 'your-api-key',
checkOnResume: true,
installMode: 'ON_NEXT_RESTART',
});
const App = () => {
return <MyApp />;
};
export default App;import codePush from 'react-native-code-push';
const checkForUpdate = async () => {
const update = await codePush.checkForUpdate();
if (update) {
await update.download();
await update.install(codePush.InstallMode.IMMEDIATE);
}
};import { BundleNudge } from '@bundlenudge/sdk';
const checkForUpdate = async () => {
const result = await BundleNudge.checkForUpdates();
if (result.updateAvailable) {
await BundleNudge.downloadUpdate();
await BundleNudge.applyUpdate({ immediate: true });
}
};code-push release-react MyApp ios --d Production
bundlenudge release --channel production
Beyond just replacing CodePush, here is what you gain.
Regular updates, new features, and responsive support.
Global edge CDN for faster downloads worldwide.
Real-time adoption tracking, crash correlation, and rollback insights.
Deploy on your infrastructure for complete control.
Migrate now and ensure your users continue receiving updates without disruption. Free tier available.
Need help? Contact our migration team for free assistance.