Over-the-Air Updates: Ship Fixes Without App Store Review

How we use Expo OTA and CodePush to deploy bug fixes and features instantly—no waiting for Apple/Google approval.

AJ Patatanian
AJ Patatanian
5 min read
Over-the-Air Updates: Ship Fixes Without App Store Review

Critical bug in production. Users are crashing.

Option 1: Submit to App Store, wait 2-7 days for review.
Option 2: Push OTA update, fixed in 15 minutes.

We chose Option 2.

What Are OTA Updates?

Over-the-air updates let you update JavaScript code without app store approval.

What you CAN update:

  • Bug fixes
  • UI changes
  • API endpoint changes
  • Feature flags

What you CANNOT update:

  • Native code (Swift/Kotlin)
  • App permissions
  • Binary changes

Expo Updates

# Deploy update to all users
expo publish

# Or target specific release channel
expo publish --release-channel production-v1

Users get updates:

  • On next app launch
  • In background (silently)

CodePush (Microsoft)

import codePush from "react-native-code-push";

const App = () => {
  // Check for updates on app start
  codePush.sync({
    updateDialog: true,
    installMode: codePush.InstallMode.IMMEDIATE
  });
  
  return <MainApp />;
};

export default codePush(App);

Real-World Use Case

Kallie Snake bug: Score not saving after game over.

Fix deployed:

  1. Push code fix to GitHub (5 min)
  2. CI/CD builds OTA bundle (3 min)
  3. CodePush distributes to users (instant)
  4. 95% of users updated within 24 hours

Total time: 8 minutes (vs 3-7 days for app store)

Rollout Strategies

1. Staged Rollout

// 10% of users first
codePush.sync({ deploymentKey: "10-percent" });

// If no crashes after 24h, roll out to 100%
codePush.sync({ deploymentKey: "production" });

2. A/B Testing

const userId = getUserId();
const variant = userId % 2 === 0 ? "A" : "B";

codePush.sync({ deploymentKey: variant });

Cost

Expo Updates: Free
CodePush: Free (up to 500 MAU), then $0.01/user/month

Limitations

  • Can't update native modules
  • Users must be online to receive updates
  • Apple requires "small changes only" (no major features)

Want instant updates for your app?
Deploy with OTA

Ready to Build Something?

Let's discuss your next project. Mobile apps, AI integration, or custom development.

Contact Us
AJ Patatanian

Written by AJ Patatanian

Senior full-stack engineer with expertise in React Native, AI/ML, and cloud architecture. Building production apps at SERA Industries.

More articles →