You shipped a Flutter release. A day later, users hit a bug: a crash on one screen, a wrong API URL, a broken checkout. The fix is one line of Dart.
The normal path is a new build, an upload, a store review that can take hours or days, and then waiting for users to actually install the update. For a production bug, that's too slow.
This post shows how to send that Dart fix straight to the app already installed on users' phones, on iOS and Android, with over-the-air (OTA) updates.
What is an OTA update for Flutter?
An OTA update (also called code push) sends changed Dart code to the installed app. The app checks for an update when it opens, downloads it in the background, and runs the new code at the next launch. The store build stays the same.
What you can change: any Dart code. Business logic, API calls, widgets, layouts, text, translations, even new screens and classes.
What still needs a store release: native code (Swift, Kotlin, Java, Objective-C), new plugins, images and fonts, and permissions.
Step by step
I'll use OverPush, a code push service for Flutter that I've been building. It has a free tier, so you can try this on a real app.
1. Install the CLI and connect your project
curl -fsSL https://overpush.in/install.sh | bash
overpush login
overpush init
flutter pub add overpush
That adds one small config file and one dependency line. No changes to main.dart, no native code.
2. Release to the store once
overpush release android
overpush release ios
Submit those builds to Google Play and the App Store the way you always do. Every later fix is checked against exactly what shipped.
3. Fix the bug and push the update
overpush patch android --rollout-percent 10
overpush patch ios --rollout-percent 10
10% of devices get it first. Watch installs and failures on the dashboard, then raise the rollout to 100%.
What if the fix itself is broken?
- Every update is signed with your app's own key, and the app only accepts updates signed with it.
- If an update stops the app from starting, the phone goes back to the store version on its own, even offline.
- You can roll an update back for everyone with one command.
Is this allowed by Apple and Google?
Apple's guidelines allow an app to download code that changes its behaviour as long as it doesn't change the app's main purpose. Google Play applies its policy differently to different kinds of apps, so check the current policy for yours. On both stores the safe rule is the same: use OTA updates for fixes and improvements, not to turn your app into something reviewers didn't see.
Try it
- Website: https://overpush.in
- Getting started guide: https://docs.overpush.in/getting-started.html
- Free for 5,000 patch installs a month
If you ship Flutter apps in production, I'd love to hear what would stop you from using code push, or what you'd need from it. Drop a comment!
Top comments (0)