DEV Community

Turbopush
Turbopush

Posted on • Originally published at docs.turbopush.org

What Are Over-The-Air Updates and Why They Matter for React Native

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:

  1. Initial Install: User downloads your app from the App Store. The app contains a native shell and a JavaScript bundle.

  2. Update Check: When the app launches, it checks a remote server for new JavaScript bundles.

  3. Download: If a new bundle is available and compatible with the native shell, it downloads in the background.

  4. Apply: The new bundle replaces the old one, either immediately or on the next app restart.

  5. 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)   │
                          └─────────────────┘
Enter fullscreen mode Exit fullscreen mode

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)