Implementing Shorebird for Flutter App Updates
Imagine you ship a critical bug in your Flutter app. App Store review takes 48 hours. Users crash, and you can't push a fix quickly. Shorebird solves this in minutes — without re-review. We've integrated Shorebird in 15+ projects, some handling over 50,000 MAU, and guarantee stability.
Flutter had no analogue to React Native CodePush — until Shorebird. Dart code compiles to native instructions that can't be replaced with a JS bundle. Shorebird solved this via a custom Dart runtime with patch support: changes in Dart code are packed into a compact diff (10–100 KB) and loaded on device without Store Review.
How Shorebird Updates Dart Code Without Re-review?
Shorebird embeds a modified Dart VM in the app. On launch, the VM checks for a patch on Shorebird servers. If available, it downloads and applies it. The patch contains only changed Dart objects, not the whole bundle. This fundamentally differs from CodePush: it changes compiled Dart code, not interpreted JS.
What can and cannot be updated via Shorebird
Can be updated:
- All Dart/Flutter code
- Dart dependencies (pub packages) if pure Dart
Cannot be updated:
- Native plugins (platform channels with Kotlin/Swift code)
- Assets (images, fonts) — not yet supported
- Changes to AndroidManifest.xml / Info.plist
Why Shorebird Is Better Than CodePush?
Shorebird surpasses CodePush in patch size by 10x — instead of a whole JS bundle (1–5 MB), you send a diff (10–100 KB). Plus, Shorebird works at the Dart VM level, providing deeper integration with the Flutter ecosystem. Unlike CodePush, Shorebird doesn't require an interpreter — patches are applied to compiled code.
| Criterion | Shorebird | CodePush | Standard Store Update |
|---|---|---|---|
| Patch size | 10–100 KB | 1–5 MB | Full bundle (30–100 MB) |
| Delivery time | Seconds | Minutes | Hours (review) |
| Flutter support | Yes | No | Yes |
| Review needed | No | No | Yes |
Additional time and cost table:
| Method | Time to users | Support cost |
|---|---|---|
| Shorebird | 1–2 seconds | Minimal (patches) |
| CodePush | 1–5 minutes | Medium (bundles) |
| Store update | 24–72 hours | High (full release) |
Installation and First Release
# Install CLI curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/shorebirdtech/shorebird/main/install.sh -sSf | bash # Initialize in project shorebird init # First release (full build + upload to Shorebird) shorebird release android shorebird release ios After shorebird init, a shorebird.yaml file with app_id appears in the project. This file is committed to the repository.
A Shorebird release is a full app build. The artifact uploaded to Play Store / App Store must contain the Shorebird runtime.
Creating a Patch
# Patch for Android shorebird patch android --release-version 1.2.3+42 # Patch for iOS shorebird patch ios --release-version 1.2.3+42 --release-version — version to apply the patch to. Users on version 1.2.3+42 will receive the patch automatically on next launch.
CI/CD Integration
# .github/workflows/shorebird-patch.yml name: Shorebird Patch on: push: branches: [hotfix/*] jobs: patch: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: flutter-version: '3.x' - uses: shorebirdtech/setup-shorebird@v1 with: cache: true - name: Create patch run: | shorebird patch android \ --release-version ${{ inputs.release_version }} env: SHOREBIRD_TOKEN: ${{ secrets.SHOREBIRD_TOKEN }} SHOREBIRD_TOKEN is created via shorebird login:ci — similar to Fastlane's firebase login:ci.
Monitoring and Rollback
Shorebird Console provides patch statistics: percentage of devices that received the patch, crash rate after application. Rollback: shorebird patch rollback android --patch-number 5 — Shorebird stops serving the patch to new devices, already updated devices will get the previous version on next launch.
What's Included in the Work
We perform the full Shorebird implementation cycle:
- Audit Flutter dependencies for compatibility (native components, assets)
- Integrate Shorebird SDK and configure
shorebird.yaml - First release via Shorebird (instead of standard
flutter build) - Set up CI/CD for automatic patches
- Test patch delivery on devices
- Implement monitoring and rollback procedures
- Documentation and team training
Our experience: 5 years in Flutter development, 50+ completed projects, certified Flutter developers. We guarantee stable Shorebird operation in production.
Timelines and Cost
Implementation timeline — from 2 to 3 days depending on project complexity. Cost is calculated individually after an audit — contact us for an estimate. We also offer post-release support and patch optimization consulting.
For apps with very strict security requirements (financial, medical), you need to check platform policies: according to App Store Review Guidelines Section 3.3.2, downloading executable code via an interpreter is forbidden, but Shorebird argues that patches are not new code but modifications of existing code. We help coordinate this with reviewers.
Get a Shorebird consultation — write to us, we'll evaluate your project and propose the best solution.







