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.
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:
- Push code fix to GitHub (5 min)
- CI/CD builds OTA bundle (3 min)
- CodePush distributes to users (instant)
- 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.
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 →Continue Reading
Building the Future: Cross-Platform Development and AI Integration
From mobile gaming to enterprise security systems, explore how modern development patterns, AI integration, and cloud-native architecture are transforming software delivery. Real insights from building production apps.
Zero-Trust Cloud Security: Lessons from Building Enterprise Tracking Systems
How we secure GPS tracking data for fleet management clients. Deep dive into zero-trust architecture, end-to-end encryption, and preventing location spoofing attacks.