Shorebird lets you push Dart code updates directly to your users' devices without going through app store review. Fix bugs, update text, and ship tweaks in minutes instead of days.
For the full reference, see the Shorebird docs.
Install
Install the Shorebird CLI. This is a command-line tool that runs alongside the Flutter CLI to build, release, and patch your app.
# Mac / Linux
curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/shorebirdtech/install/main/install.sh -sSf | bash
# Verify it installed correctly
shorebird --versionCreate a Shorebird account (free tier available):
shorebird loginInitialize
Run this inside your Flutter project root. It creates a shorebird.yamlfile with a unique app ID that links your project to Shorebird's servers. Commit this file to version control so your team can push patches too.
shorebird initCreate a Release
A release is the base version of your app that users download from the store. It is similar to flutter build, but Shorebird registers the build so it can send patches to it later. Create a release for each platform:
# Android (produces an .aab file)
shorebird release android
# iOS (produces an .ipa file)
shorebird release iosUpload the output file to the respective app store (Google Play Console or App Store Connect) and submit it for review as usual.
Push a Patch
Once your release is live and users have installed it, you can push Dart code changes without a new store submission. Make your code changes first, then run:
# Android
shorebird patch android
# iOS
shorebird patch iosShorebird compares your current code against the release and creates a small diff. The next time users open the app, Shorebird downloads the patch in the background. The update applies on the following app restart (not immediately, so nothing changes mid-session).
Check Status
See all your releases and which patches are active:
# List all releases
shorebird releases list
# List patches for a specific release
shorebird patches list --release-version 1.0.0Rollback
If a patch causes problems, delete it. Users will revert to the previous patch (or the original release if no patches remain) on their next app restart.
shorebird patches delete --patch-number 2Limitations
Shorebird patches only Dart code. It works by replacing the compiled Dart snapshot, which is why the following cannot be patched:
- Native code changes — modifications to Swift, Kotlin, or platform-specific files require a new store release.
- New native plugins — adding a package that includes native code (like a camera plugin) requires a new release.
- Asset changes — new images, fonts, or other assets bundled with the app require a new release.
- Version targeting — patches only apply to the specific release version they were created for. Users on v1.0.0 get v1.0.0 patches; users on v1.1.0 get v1.1.0 patches.
Workflow
The typical development flow with Shorebird:
- Build and test your app normally with Flutter
- Create a Shorebird release:
shorebird release android - Upload to the store and wait for approval
- Discover a bug or need a quick text change
- Fix the Dart code locally
- Push a patch:
shorebird patch android - Users get the fix on their next app restart