If you're here, you probably just found out that Microsoft is sunsetting CodePush. Or maybe you've been dealing with CodePush reliability issues and you're finally ready to switch.
Either way, you need a replacement—and fast.
This guide covers the best CodePush alternatives in 2026, with honest pros and cons for each. We'll help you pick the right one based on your stack and needs.
Why Is CodePush Being Deprecated?
Microsoft acquired CodePush in 2016 as part of their App Center platform. For years, it was the go-to solution for pushing over-the-air updates to React Native apps.
But in 2024, Microsoft announced they're winding down App Center, including CodePush. The writing was on the wall:
- Fewer updates and bug fixes
- Growing reliability issues
- No major features in years
If you're still on CodePush, migration isn't optional—it's a matter of when, not if.
What to Look for in a CodePush Replacement
Before we compare options, here's what matters:
- Update speed — How fast do updates reach users?
- Reliability — Does it work consistently?
- Setup complexity — How hard is the migration?
- Platform support — React Native? Flutter? Native?
- What you can update — JS only? UI? Native code?
- Pricing — Especially as you scale
- Long-term viability — Will this exist in 2 years?
Different teams have different priorities. A startup might optimize for speed; an enterprise might prioritize reliability and support.
The 5 Best CodePush Alternatives
1. Expo Updates (Best for Expo Projects)
What it does: Push JavaScript bundle updates to Expo and React Native apps over-the-air.
Best for: Teams already using Expo or willing to adopt it.
Pros:
- Tight Expo integration — Works seamlessly with Expo's ecosystem
- EAS Update — Expo's managed service handles hosting and delivery
- Good reliability — Actively maintained, well-documented
- Free tier — Generous limits for small teams
Cons:
- Expo lock-in — Requires Expo's build system (or "bare" workflow with caveats)
- JS only — Can't update native modules
- Setup for bare React Native — More complex if you're not using managed Expo
Pricing: Free tier: 1,000 updates/month. Production: $99/month for 10,000 updates. Scale: Custom.
Migration difficulty: ⭐⭐ (Easy if already on Expo, Medium otherwise)
Verdict: If you're on Expo, this is the obvious choice. If you're on bare React Native, evaluate whether adopting Expo's tooling makes sense.
2. Shorebird (Best for Flutter)
What it does: Code push for Flutter apps. Update Dart code without app store releases.
Best for: Flutter teams who want CodePush-like functionality.
Pros:
- Built for Flutter — Not a React Native tool awkwardly adapted
- Active development — Backed by former Flutter team members
- Patch-based updates — Small, fast downloads
- Good documentation — Clear migration guides
Cons:
- Flutter only — Won't help React Native teams
- Newer product — Less battle-tested than alternatives
- Dart limitations — Same restrictions as CodePush (interpreted code only)
Pricing: Hobby: Free (1 app, 5,000 patches/month). Pro: $20/month per app. Team: Custom.
Migration difficulty: ⭐⭐ (Straightforward for Flutter)
Verdict: The clear choice for Flutter teams. No reason to look elsewhere if you're in the Flutter ecosystem.
3. Server-Driven UI / Pyramid (Best for Frequent UI Changes)
What it does: Instead of pushing code updates, your app fetches UI definitions from a server. Change the server, change the app instantly.
Best for: Teams shipping UI changes frequently (weekly or more). Teams running heavy A/B tests. E-commerce, media, and content apps.
Pros:
- Instant updates — Changes appear in seconds, not minutes
- Update more than JS — Change layouts, screens, flows, navigation
- A/B testing built-in — Server decides what UI to show
- No store restrictions — You're not pushing code, just data
- Framework agnostic — Works with React Native, Flutter, native iOS/Android
Cons:
- Different paradigm — Requires thinking about UI differently
- Can't update logic — Business logic still lives in app code
- Learning curve — New concepts (DSL, component mapping)
Pyramid Specifics: Managed infrastructure (no servers to maintain), simple DSL, React Native SDK ready, iOS/Android SDKs coming soon.
Pricing: Early access: Free during beta. Production: Contact for pricing.
Migration difficulty: ⭐⭐⭐ (Moderate — requires some architecture changes)
Verdict: If your bottleneck is UI changes (not business logic), server-driven UI is more powerful than code push. Pyramid makes it accessible without building your own infrastructure.
4. Hot Reload / Custom OTA (DIY Option)
What it does: Roll your own code push system using Metro bundler and custom hosting.
Best for: Teams with specific requirements that off-the-shelf tools don't meet. Large teams with dedicated infrastructure engineers.
Pros:
- Full control — Build exactly what you need
- No vendor lock-in — You own everything
- Customizable — Integrate with existing systems
Cons:
- Engineering cost — Weeks to months of development
- Maintenance burden — You're responsible for reliability
- Security risks — Easy to introduce vulnerabilities
- No support — You're on your own
Migration difficulty: ⭐⭐⭐⭐⭐ (Hard — significant engineering investment)
Verdict: Only consider this if you have unusual requirements AND a team that can build and maintain it. For most teams, the alternatives above are better investments.
5. Feature Flags (Supplement, Not Replacement)
What it does: Toggle features on/off remotely. Change behavior without deploying.
Popular tools: LaunchDarkly, Firebase Remote Config, Split, Statsig
Best for: Gradual rollouts, A/B tests, kill switches for buggy features.
Pros:
- Instant changes — Flip a switch, behavior changes
- Mature tooling — Well-established products
- Good analytics — Track feature impact
- Easy setup — SDKs for every platform
Cons:
- Can't add features — Only toggle what's already in the app
- Not a true replacement — Still need app updates for new code
- Complexity creep — Too many flags become unmaintainable
Migration difficulty: ⭐ (Easy — but doesn't fully replace CodePush)
Verdict: Use feature flags alongside another solution, not instead of CodePush. They're great for rollouts and experiments but can't add new functionality.
Comparison Table
| Solution | Best For | Update Speed | What You Can Update | Migration |
|---|---|---|---|---|
| Expo Updates | Expo projects | Minutes | JavaScript code | Easy-Medium |
| Shorebird | Flutter apps | Minutes | Dart code | Easy |
| Pyramid (SDUI) | Frequent UI changes | Seconds | UI layouts, screens | Medium |
| DIY OTA | Custom requirements | Varies | JavaScript code | Hard |
| Feature Flags | Rollouts, toggles | Instant | Pre-built features only | Easy |
Decision Framework: Which One Should You Pick?
Choose Expo Updates if:
- You're already using Expo
- You primarily need JavaScript bug fixes
- You want managed hosting without building infrastructure
Choose Shorebird if:
- You're building with Flutter
- You want the closest thing to CodePush for Dart
Choose Pyramid / Server-Driven UI if:
- You ship UI changes weekly or more
- You want to update more than just JavaScript
- You're tired of release cycles limiting your iteration speed
- You want instant updates (seconds, not minutes)
Choose DIY OTA if:
- You have unusual requirements off-the-shelf tools can't meet
- You have dedicated infrastructure engineers
- You're willing to maintain it long-term
Choose Feature Flags if:
- You mainly need to toggle existing features
- You want to supplement (not replace) CodePush
Common Migration Questions
Q: How long does migration take?
A: Expo Updates: 1-3 days. Shorebird: 1-2 days. Pyramid: 1-2 weeks (includes architecture changes). DIY: 2-6 months.
Q: Can I migrate gradually?
A: Yes. Most teams run CodePush and the new solution in parallel during transition. Pyramid specifically supports gradual rollout where only some screens are server-driven.
Q: Will my existing updates stop working?
A: Not immediately. CodePush will continue working until Microsoft fully shuts it down. But waiting until the last minute means rushing the migration.
Our Recommendation
For most React Native teams, the choice comes down to:
If you're on Expo: Use Expo Updates. It's the path of least resistance.
If you're on bare React Native AND want more than bug fixes: Consider Pyramid. Server-driven UI gives you instant updates for your entire UI layer, not just JavaScript patches.
If you're on Flutter: Use Shorebird.
The key question is: What are you actually trying to update?
- Bug fixes and small JS changes → OTA updates (Expo, Shorebird)
- UI layouts, screens, and flows → Server-driven UI (Pyramid)
- Feature toggles → Feature flags (supplement to the above)
Related Articles
Ready to Migrate?
Stop waiting for CodePush to die. Start your migration now while you have time to do it right.
Join the Pyramid Waitlist Try the DSL PlaygroundLast updated: March 2026. We'll keep this guide current as the ecosystem evolves.