React Native OTA Updates - Strategies After Microsoft CodePush Ends


Introduction
Over-the-Air (OTA) updates have revolutionized how we manage mobile applications, allowing us to deliver fixes and new features directly to users without the hassle of app store submissions. For React Native developers, Microsoft CodePush has been a valuable tool in this arena. However, with its impending deprecation on March 31, 2025, it's time to explore alternatives. This post delves into the world of CodePush, its current workflow, its sunset, and how you can prepare by transitioning to a self-hosted solution.
Understanding CodePush: The Basics
Before diving into the challenges, let's recap how CodePush operates:
Integration :- Developers integrate the CodePush SDK into their React Native app.
Build & Release :- The app is built with CodePush and released to the app store.
Update creation :- Developers make changes to the JavaScript bundle and assets.
Push to CodePush :- Updates are pushed to the CodePush server.
Automatic updates :- The app checks for updates when launched or as configured.
Download and apply :- If an update is available, it's downloaded and applied silently.
Current Codepush workflow
This diagram illustrates the Microsoft CodePush workflow for React Native applications. Here's a brief explanation of each step:
The developer integrates the CodePush SDK into the React Native app.
The app is built and released to the app store.
The developer makes changes to the JavaScript bundle and assets.
These updates are pushed to the CodePush server.
The app on the user's device checks for updates.
If updates are available, they are downloaded to the user's device.
The updates are applied to the app.
The app restarts with the new version.
This approach allowed for rapid deployments and minimal disruption for end-users.
The CodePush Sunset: What It Means
TLDR: Codepush is going to be deprecated on March 31, 2025. You can read more about this here
The Impact of CodePush Deprecation
The announcement of CodePush's deprecation brings several significant implications for development teams:
End of Official Support :- Microsoft will cease providing official support, meaning no more bug fixes, security updates, or feature enhancements.
Security Risks :- Unsupported services can become vulnerable to security exploits, potentially exposing your users.
Compatibility Issues :- Future updates to React Native or other dependencies may create compatibility problems.
Loss of Reliable Updates :- Your ability to rapidly deploy updates may be severely impacted if no alternative is implemented.
Increased App Store Submissions :- Without CodePush, you may need to submit app updates more frequently through traditional app store processes.
Data Migration Concerns :- You'll need a plan to export your update history and statistics before the service shuts down.
CI/CD Disruptions :- Your existing Continuous Integration/Continuous Deployment pipelines will need modifications to incorporate the new solution.
Learning Curve :- You'll need to invest time in learning and implementing an alternative approach.
Potential App Resubmission :- You might have to resubmit your app to app stores with the new mechanism in place.
Cost Implications :- There could be cost factors involved if you move to a paid alternative or set up a self-hosted solution.
User Experience Changes :- You may need to communicate changes to your users if the update process evolves.
Compliance and Legal Considerations :- Changes in the update mechanism might need legal evaluation.
Moving Forward: Your Options
1. Self-Hosted CodePush Solution
Microsoft has open-sourced the CodePush server implementation, allowing teams to host their own update infrastructure. Key considerations for self-hosting include:
Setup Requirements
Azure Blob Storage (or equivalent)
Node.js environment
SSL/TLS certificates for secure communication
Deployment Options
Local Development: Ideal for testing and development
Cloud Deployment: Production-ready setup on Azure or other cloud providers
Pros:
Complete control and customization of the server
Free open-source solution
Cons:
Users are responsible for server maintenance, infrastructure, and keeping the React Native CodePush SDK updated
High costs for cloud resources and bandwidth
Estimated Cost: For an app with 200,000 active users and five monthly updates, costs could range between $600-$800 per month, excluding developer and DevOps expenses
Resources for self hosting
Code push server ( Standalone CodePush server from App Center )
Code push repo ( A cloud service that enables Cordova and React Native developers to deploy mobile app updates directly to their users’ devices )
The CodePush server, located in the api subdirectory, allows developers to build, deploy and manage CodePush updates themselves. For detailed information about the CodePush server, including installation instructions and usage details, please refer to the CodePush Server README
Implementation Steps
Clone the CodePush server repository
Configure environment variables
Set up authentication (GitHub or Microsoft OAuth)
Deploy the server
Update client applications with new server URLs
2. Expo EAS Updates
Expo EAS Updates is a robust solution for Expo-based applications, and it's also available for React Native CLI projects.
Pros:
Excellent support and large ecosystem
Active community with quick updates for new React Native versions
Well-documented migration process
Cons:
Migrating from standard React Native CLI can be complex and may require significant project restructuring
Dependency on the Expo ecosystem
Higher cost compared to other options with potential extra charges for data transfer
Estimated Cost: For 200,000 users, monthly costs range between $1,049-$1,200
For teams using React Native CLI, there's a detailed migration guide available: CodePush to EAS Update on a React Native CLI Project which walks through the process of transitioning from CodePush to EAS Updates, even for non-Expo applications.
3. Revopush
Revopush is a SaaS platform and open-source toolkit specifically designed for a smooth transition from App Center CodePush.
Key Advantages:
100% Compatibility: Claims full compatibility with existing CodePush clients, making migration straightforward
Future-Proof: Commits to ongoing support for future React Native versions with their own React Native CodePush SDK
Full New Architecture Support: Provides complete support for the new React Native architecture
Flexible Deployment: Offers both cloud-based SaaS solution and on-premises deployment options
CI/CD Integration: Supports integration with CI/CD tools like Bitrise CodePush
Migration Support: Free support for all users until March 31, 2025
Cost-Effectiveness: For the same 200,000-user scenario, Revopush's pricing ranges from $30-$90 per month, making it significantly more affordable than other alternatives.
Revopush also ensures seamless compatibility with modern React Native development through their React Native CodePush client, specifically optimized for the new architecture.
4. Other Alternatives
Ethern: A paid SaaS solution offering similar functionality to CodePush with modern features and active development.
BundlePush: A promising new solution that focuses on streamlining and accelerating React Native CLI app deployment with Over-the-Air (OTA) updates. While still in development at the time of this article's publication, it represents an interesting option for teams looking for a CodePush alternative.
Comparison Summary
When choosing your CodePush alternative, consider these factors:
Solution | Migration Ease | Cost (200K users) | Best For |
Self-Hosted CodePush | Moderate | $600-$800/month | Teams wanting full control with DevOps resources |
Expo EAS Updates | Complex | $1,049-$1,200/month | Teams already using Expo or willing to restructure |
Revopush | Easy | $30-$90/month | Teams seeking easiest, most affordable migration |
Migration Recommendations
Based on your specific needs:
Choose Self-Hosted CodePush if you want complete control and have the necessary DevOps resources, despite potential high costs
Choose Expo EAS Updates if you need a reliable, well-supported option and don't mind the higher cost and more involved migration process
Choose Revopush for the easiest, fastest, and most affordable migration with transparent pricing and dedicated migration support
Remember to evaluate these options based on your team's operational capacity, security requirements, budget constraints, and update frequency needs.
Best Practices for Transition
1. Audit current usage
Document your CodePush deployment patterns
Identify critical update scenarios
Map out integration points in your CI/CD pipeline
2. Plan Your Migration
Set clear timelines for testing and implementation
Create fallback plans for critical updates during transition
Consider gradual migration by feature or app segment
3. Security Considerations
Implement proper authentication and authorization
Ensure secure communication channels
Regular security audits of self-hosted solutions
Looking Ahead
While the deprecation of CodePush represents a significant change for the React Native ecosystem, it also presents an opportunity to evaluate and potentially improve your update deployment strategy. Whether you choose to self-host CodePush or adopt an alternative solution, the key is to start planning your transition early.
Remember to consider factors like :-
Your team's operational capacity
Security requirements
Budget constraints
Update frequency needs
By carefully evaluating these aspects, you can select and implement a solution that best fits your organization's needs while maintaining the flexibility and efficiency that made CodePush so valuable.
Additional Resources
For developers looking to dive deeper, here are some valuable resources:
Configuring multiple code push for a single app ( Groww’s react native app uses multi code push approach )
The React Native community has been actively discussing the CodePush deprecation and potential alternatives. You can follow this reddit discussion for more info.
Conclusion
The deprecation of Microsoft CodePush marks a significant transition point for the React Native community. While this change presents challenges, it also opens opportunities for newer, potentially more robust solutions.
The React Native ecosystem has always been dynamic, and this change is another step in its evolution. Whether you choose to self-host CodePush, migrate to EAS Updates, or adopt another solution, the community's collective experience and shared knowledge will be invaluable resources during this transition.
Subscribe to my newsletter
Read articles from Subramanya M Rao directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Subramanya M Rao
Subramanya M Rao
CS Undergrad pursuing Web Development. Keen Learner & Tech Enthusiast.