Imagine shipping a critical bug fix to your mobile app and having it reach users within minutes—not days or weeks waiting for App Store review. That's the power of Over-The-Air (OTA) updates, and it's changing how mobile developers ship software.
In this article, we'll explore what OTA updates are, how they work in React Native, and why they're becoming essential for modern mobile development. We'll also compare pricing between major OTA platforms to help you make an informed decision.
What Exactly Are OTA Updates?
Over-The-Air updates allow you to push new code directly to users' devices without going through the traditional app store submission process. Instead of uploading a new binary to Apple or Google, waiting for review, and hoping users update their apps, you can deploy changes instantly.
Think of it like deploying a web application. When you push changes to your website, users see them immediately on their next visit. OTA updates bring this same workflow to mobile apps.
What you can update OTA:
- JavaScript code and logic
- React components and screens
- Styles and layouts
- Images and assets bundled with your code
What you cannot update OTA:
- Native code (Swift, Kotlin, Objective-C, Java)
- Native dependencies and libraries
- App permissions and capabilities
- App Store metadata (name, icon, screenshots)
How OTA Updates Work in React Native
React Native apps consist of two parts: the native shell (compiled code that runs on the device) and the JavaScript bundle (your React components, business logic, and UI code).
When you build a React Native app, your JavaScript code gets bundled into a single file that the native shell loads at runtime. Here's where OTA updates come in:
Initial Install: User downloads your app from the App Store. The app contains a native shell and a JavaScript bundle.
Update Check: When the app launches, it checks a remote server for new JavaScript bundles.
Download: If a new bundle is available and compatible with the native shell, it downloads in the background.
Apply: The new bundle replaces the old one, either immediately or on the next app restart.
Rollback Safety: If the new bundle crashes, most OTA systems automatically rollback to the previous working version.
┌─────────────────────────────────────────────────────────────┐
│ User's Device │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ Native Shell │ ←── │ JavaScript Bundle (OTA) │ │
│ │ (App Store) │ │ - React Components │ │
│ │ │ │ - Business Logic │ │
│ └─────────────────┘ │ - Styles & Assets │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↑
│ Download new bundle
│
┌─────────────────┐
│ OTA Server │
│ (Turbopush) │
└─────────────────┘
This architecture is what makes React Native uniquely suited for OTA updates. Unlike fully native apps where every change requires recompilation, React Native's JavaScript-based approach allows for dynamic code updates.
Why OTA Updates Matter
1. Speed to Market
App Store review can take anywhere from 24 hours to several days. For critical bug fixes, that delay can mean lost users, revenue, or even legal issues. OTA updates bypass this entirely—deploy a fix in seconds, not days.
2. Reduced User Friction
Users don't always update their apps. Some have automatic updates disabled, others ignore update notifications, and many simply forget. With OTA updates, users get the latest version automatically, ensuring everyone runs your best code.
3. A/B Testing and Feature Flags
Want to test a new feature with 10% of users before rolling it out to everyone? OTA platforms often include rollout controls that let you gradually deploy changes and rollback instantly if something goes wrong.
4. Cost Efficiency
Every app store submission has costs: developer time for testing, QA cycles, and the opportunity cost of waiting. OTA updates streamline this process, letting your team focus on building features instead of managing releases.
5. Emergency Response
When a critical bug hits production, every minute counts. OTA updates let you deploy a hotfix immediately, without waiting for app store approval or hoping users update manually.
What is Turbopush?
Turbopush is a modern Over-The-Air update platform built specifically for React Native applications. Whether you're using bare React Native or Expo, Turbopush integrates seamlessly with your existing workflow.
Key features:
- Universal React Native support — Works with bare React Native, Expo, and the New Architecture (Fabric + TurboModules)
- Gradual rollouts — Release to 10%, 50%, or any percentage of users before going full
- Instant rollbacks — Revert problematic updates with a single command
- Rich analytics — Track install rates, version adoption, and user metrics in real-time
Pricing Comparison: Turbopush vs Expo Updates
When choosing an OTA platform, pricing is a crucial factor. Let's compare Turbopush and Expo Updates (EAS Update) across different app sizes.
Understanding the Pricing Models
Expo Updates charges based on Monthly Active Users (MAUs)—the number of unique users who download at least one update during a billing period. Multiple downloads by the same user count as a single MAU.
Turbopush charges based on updates delivered—each time a user downloads an update, it counts as one update. This model is often more cost-effective because you only pay for actual usage.
Expo Updates Pricing
| Plan | Monthly Cost | MAUs Included |
|---|---|---|
| Free | $0 | 1,000 MAUs |
| Starter | $19 | 3,000 MAUs |
| Production | $199 | 50,000 MAUs |
| Enterprise | $1,999 | 1,000,000 MAUs |
Overage pricing: If you exceed your plan's MAU limit, Expo charges per additional MAU on a tiered scale starting at $0.005/MAU for the first 197K extra, decreasing to $0.00085/MAU at scale (100M+).
Turbopush Pricing
| Plan | Monthly Cost | Releases | Updates |
|---|---|---|---|
| Free | $0 | 20 | 2,500 |
| Startup | $15 | 100 | 50,000 |
| Growth | $40 | 400 | 1,000,000 |
| Business | $90 | Unlimited | Unlimited |
Real-World Scenarios
Let's analyze three realistic scenarios to see how costs compare:
Scenario 1: Early-Stage Startup
10,000 active users, 3 releases per month
With Expo Updates:
- 10,000 MAUs exceeds Starter plan (3,000 MAUs)
- Starter + overage: $19 + (7,000 × $0.005) = $54/month
With Turbopush:
- 10,000 users × 3 releases = 30,000 updates/month
- Startup plan includes 50,000 updates
- Required plan: Startup at $15/month
- 20,000 updates remaining — room to grow or ship more releases
| Platform | Monthly Cost |
|---|---|
| Expo Updates | $54 |
| Turbopush | $15 |
| Annual Savings | $468 |
Scenario 2: Growing Product
20,000 active users, 3 releases per month
With Expo Updates:
- 20,000 MAUs exceeds Starter plan (3,000 MAUs)
- Starter + overage: $19 + (17,000 × $0.005) = $104/month
- (Production at $199 would be more expensive)
With Turbopush:
- 20,000 users × 3 releases = 60,000 updates/month
- Growth plan includes 1,000,000 updates
- Required plan: Growth at $40/month
- 940,000 updates remaining — 94% headroom for growth
| Platform | Monthly Cost |
|---|---|
| Expo Updates | $104 |
| Turbopush | $40 |
| Annual Savings | $768 |
Scenario 3: Scaling Application
100,000 active users, 4 releases per month
With Expo Updates:
- 100,000 MAUs exceeds Production plan (50,000 MAUs)
- Production + overage: $199 + (50,000 × $0.005) = $449/month
- (Starter + overage would be $504, so Production is better)
With Turbopush:
- 100,000 users × 4 releases = 400,000 updates/month
- Growth plan includes 1,000,000 updates
- Required plan: Growth at $40/month
- 600,000 updates remaining — room to 2.5x your user base
| Platform | Monthly Cost |
|---|---|
| Expo Updates | $449 |
| Turbopush | $40 |
| Annual Savings | $4,908 |
Why the Difference?
The key insight is that Turbopush's generous update limits mean you're paying for actual delivery, not user count. Even when accounting for Expo's overage pricing, a scaling app with 100,000 users pushing 4 releases per month pays $40/month with Turbopush vs $449/month with Expo—that's 91% savings.
The difference becomes even more significant at scale. Turbopush's Business plan at $90/month offers unlimited releases and updates, providing completely predictable costs regardless of how much you ship or how many users you have.
No Hidden Costs: Storage & Bandwidth Included
One often-overlooked aspect of OTA pricing is storage and bandwidth. With Expo Updates and other OTA platforms, you pay extra for these:
- Storage: $0.05 per GB after your plan's limit (20 GB on Starter, 1 TB on Production)
- Bandwidth: $0.10 per GB after your plan's limit (10 GB on Starter, 100 GB on Production)
These costs can add up quickly, especially if your app bundles assets or you're shipping frequent updates to a large user base. A single 5 MB update to 100,000 users consumes ~500 GB of bandwidth—that's $40 in bandwidth alone on top of your base plan.
Turbopush includes storage and bandwidth in all plans. No surprise charges, no metering your bundle sizes, no worrying about how many assets you're shipping. Your monthly cost is exactly what you see in your plan—nothing more.
Getting Started with Turbopush
Ready to add OTA updates to your React Native app? Getting started with Turbopush takes less than 30 minutes. Our step-by-step guide walks you through everything: creating your account, installing the SDK, configuring your app, and shipping your first update.
Whether you're using bare React Native or Expo, we have dedicated guides for each setup.
The entire setup typically takes less than 30 minutes, and the productivity gains are immediate.
Read the Getting Started Guide →
Conclusion
OTA updates represent a fundamental shift in how mobile apps are developed and deployed. By decoupling your JavaScript code from app store releases, you gain the speed and flexibility that web developers have enjoyed for years.
Whether you're fixing a critical bug, testing a new feature, or simply iterating faster, OTA updates remove friction from your development workflow. And with platforms like Turbopush offering generous pricing tiers, there's never been a better time to adopt this technology.
The question isn't whether you should use OTA updates—it's how quickly you can get started.
Ready to ship faster?
Happy shipping! 🚀
Top comments (0)