---
title: "Code Push for Flutter: App Updates Without App Store | Shorebird Guide"
canonical_url: "https://robocitrus.com/en/blog/code-push-updates-ohne-app-store"
last_updated: 2026-02-28
locale: en
meta:
  description: "Update Flutter apps instantly with Shorebird Code Push, no App Store review. Setup guide, store compliance, pros & cons. Real production experience."
  "og:description": "Update Flutter apps instantly with Shorebird Code Push, no App Store review. Setup guide, store compliance, pros & cons. Real production experience."
  "og:title": "Code Push for Flutter: App Updates Without App Store | Shorebird Guide"
---

RoboCitrus - Home

![Code Push: Ship Flutter Updates Without the App Store](https://robocitrus.com/cdn-cgi/image/w=2048,q=75/images/blog/code-push-flutter.webp)

# **Code Push: Ship Flutter Updates Without the App Store**

[![Maximilian Flechtner](https://robocitrus.com/cdn-cgi/image/q=75/images/about-me-maximilian-image.webp)**Maximilian Flechtner**](https://robocitrus.com/en/about)

Published:February 28, 2026

1 min read

[**Flutter**](https://robocitrus.com/en/blog/tags/flutter) [**App Development**](https://robocitrus.com/en/blog/tags/app development) [**DevOps**](https://robocitrus.com/en/blog/tags/devops) [**Mobile**](https://robocitrus.com/en/blog/tags/mobile)

## In short - Shorebird Code Push: Dart code updates in seconds instead of days - OTA updates are store-compliant as long as you don't change core app functionality - Native code (Swift, Kotlin, plugins) can't be updated via Code Push - Free up to 5,000 patch installs/month, then $20/month - Best for hotfixes, critical bug fixes, and rapid iterations ---

Friday, 5:00 PM. Your app is live, 10,000 users are actively using it, and you discover a critical bug. The normal path: develop fix, create build, upload to App Store, wait for review. **Minimum 24-48 hours with Apple, often longer.**

With Code Push? Push the fix, 5 minutes later all users have the update. No store review, no waiting.

Sounds too good to be true? It's not. But there are limitations you need to know about.

## What is Code Push Anyway?

Code Push (or Over-the-Air Updates, OTA) allows you to deliver app code directly to users, bypassing the App Store or Play Store. The app checks at startup (or at defined intervals) whether an update is available, downloads it in the background, and activates it on the next restart.

**Important to understand:** Code Push does NOT replace the App Store. You still need store releases for: - New users (they always download from the store) - Native code changes - Major feature updates (store policy)

Code Push is an **additional tool** for rapid iterations and hotfixes.

## Shorebird: The Code Push Solution for Flutter

For React Native, there was **Microsoft CodePush** (via App Center) for years. However, it was **discontinued in March 2025**. For Flutter, the situation was frustrating for a long time, there simply was no production-ready solution.

That changed with [**Shorebird**](https://shorebird.dev/), founded by **Eric Seidel** (former Flutter Team Lead at Google). Shorebird isn't a hack or workaround, it's a clean implementation using a modified Flutter fork.

### How Shorebird Works Technically 1. **You build with Shorebird**, instead of `**flutter build**` you use `**shorebird release**`2. **Shorebird forks Flutter** and replaces parts of the engine with custom code 3. **Patches are diffs**, only changed Dart files are transmitted 4. **On device** an updater runs that checks for updates on app start

The genius part: You continue using your normal Flutter project. No code changes needed (except optionally for manual update control).

## Store Guidelines: What's Allowed?

Good news: **Code Push is officially allowed**, with restrictions.

### Apple App Store (iOS)

> _"Interpreted code may be downloaded to an Application but only so long as such code: (a) does not change the primary purpose of the Application, (b) does not create a store or storefront for other code or applications, and (c) does not bypass signing, sandbox, or other security features of the OS."_ — Apple Developer Program License Agreement, Section 3.3.1b

**Translation:** You can download code as long as: - The app doesn't suddenly do something completely different - You don't build an alternative app store - You don't bypass security mechanisms ### Google Play Store (Android)

> _"An app may not download executable code from a source other than Google Play. This restriction does not apply to code that runs in a virtual machine or an interpreter."_ — Google Play Developer Policy

Since Dart runs in a VM (and Shorebird uses an interpreter on iOS), this is **explicitly allowed**.

### What You Should NOT Do - Submit app as "Calculator" and turn it into a game via Code Push - Unlock paid features without store review - Roll out completely new main features via OTA

**Shorebird's clear statement:** Abuse violates their ToS and leads to account termination.

## Setup Guide: Shorebird in 10 Minutes

### 1. Installation

```
# macOS / Linux
curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/shorebirdtech/install/main/install.sh -sSf | bash

# Windows (PowerShell)
iwr -UseBasicParsing 'https://raw.githubusercontent.com/shorebirdtech/install/main/install.ps1' | iex
```### 2. Login & Initialize Project```
shorebird login
cd your-flutter-project
shorebird init
``` This creates a `**shorebird.yaml**` with your app ID:```
app_id: 12345678-1234-1234-1234-123456789abc
```### 3. Create Release```
# Android
shorebird release android

# iOS  
shorebird release ios
```**Important:** These releases must go to the store! Shorebird doesn't replace store uploads. ### 4. Deploy Patch After users have your app, you can push patches:```
# Fixed a bug? Patch it!
shorebird patch android
shorebird patch ios
``` The patch is immediately available. It downloads on the next app start and activates on the one after that. ### 5. Optional: Manual Update Handling By default, Shorebird checks automatically on app start. For more control:```
import 'package:shorebird_code_push/shorebird_code_push.dart';

final shorebirdCodePush = ShorebirdCodePush();

Future<void> checkForUpdate() async {
  final isUpdateAvailable = await shorebirdCodePush.isNewPatchAvailableForDownload();
  
  if (isUpdateAvailable) {
    await shorebirdCodePush.downloadUpdateIfAvailable();
    // Optional: Notify user and offer app restart
  }
}
```## When Code Push Makes Sense (and When It Doesn't) ### ✅ Perfect Use Cases | **Situation** | **Why Code Push is Ideal** |
| --- | --- | | **Critical bug in production** | Immediate fix instead of 24-48h store review | | **Hotfixes for old versions** | Reach users who don't update manually | | **Rapid iteration** | Daily/weekly deploys without store overhead | | **A/B testing UI changes** | Fast rollout and rollback | | **Compliance fixes** | Roll out GDPR adjustments immediately | ### ❌ Not Suitable For | **Situation** | **Why Not** |
| --- | --- | | **Native plugin updates** | Code Push can only update Dart code | | **New permissions** | Needs native code → store release | | **Major feature releases** | Store policy requires review for "significant changes" | | **Asset updates (large images/videos)** | Technically possible, but not efficient | ## Pros and Cons, Honest Assessment ### Advantages ✅ 1. **Speed**, Patches in minutes instead of days 2. **Rollback**, One click and the last patch is gone 3. **Reach all users**, Even those who never manually update 4. **No downtime**, Update happens in background 5. **CI/CD integration**, `**shorebird patch**` in your pipeline ### Disadvantages ❌ 1. **Dart code only**, Native changes = store release 2. **Costs at scale**, From 50k installs/month: $20+/month 3. **Dependency**, Another service in your infrastructure 4. **~1 MB larger app**, Shorebird updater in bundle 5. **Delayed activation**, Update activates on NEXT start ### Hidden Gotchas 🔍 - **Patch size correlates with code changes**, Large refactors = large patches - **Each patch is a diff to the release**, NOT to the previous patch - **Flutter version must match**, Shorebird tracks Flutter Stable ## Alternatives to Shorebird | **Solution** | **Status** | **For Whom?** |
| --- | --- | --- | | **Microsoft CodePush** | ❌ Discontinued March 2025 | Was for React Native | | **Expo Updates** | ✅ Active | React Native (Expo only) | | **Firebase Remote Config** | ✅ Active | Configuration, NOT code | | **Custom solution** | 🤷 Possible | If you have lots of time | For Flutter, **Shorebird is currently the only production-ready solution**. ## Pricing | **Plan** | **Patch Installs** | **Price** |
| --- | --- | --- | | **Free** | 5,000/month | $0 | | **Pro** | 50,000/month | $20/month | | **Business** | 1,000,000/month | $400/month | | **Enterprise** | Custom | On request | "Patch Install" = One device downloads a patch. 10,000 users with 3 patches/month = 30,000 installs. ## Conclusion: When Should You Use Shorebird?**Definitely YES if:**- You have an app in production - Rapid iteration is important - You've ever waited 2 days for a store review**Not yet if:**- You're still in MVP phase - Your app consists mainly of native code - You have under 1,000 users Code Push isn't a replacement for solid release processes. It's **insurance** for emergencies and an **accelerator** for fast-moving teams. The true value only shows when you need it: Friday, 5:00 PM, critical bug, 10,000 users affected. That's when you'll be glad you can type `**shorebird patch**` instead of waiting all weekend for Apple. ---_Are you using Code Push in your projects? What experiences have you had? [**Let us know**](https://robocitrus.com/contact), we'd love to hear your stories!_[**Craftsman Marketing: Boost Your Online Visibility** Increase your online visibility as a craftsman! Learn how to win more customers with professional web design, SEO & digital solutions. Discover now!](https://robocitrus.com/blog/bedeutung-fuer-handwerker-marketing) [**How to Pitch Your App Idea: Storytelling for Developers** How to present your app idea so investors, clients, and users actually listen. Practical storytelling techniques for developers.](https://robocitrus.com/blog/deine-app-idee-ueberzeugend-verkaufen) ## **Let's Connect! 🚀**### **Ready for your next project? **** Let's get started!**![Maximilian Flechtner - Gründer](https://robocitrus.com/cdn-cgi/image/w=3840,f=png,q=75/images/about-me-maximilian-image.webp) #### **Maximilian Flechtner **[flechtner@robocitrus.com](https://robocitrus.com/mailto:flechtner@robocitrus.com) [ +49 0176 41766223](https://robocitrus.com/tel:+4917641766223) ### **Schedule an appointment** Book your free 30-minute call! Tell me about your vision, and let's plan your digital success together. 💪 [Book your free call now!](https://calendly.com/medienagentur-maximilian-flechtner/30min) [Contact Form](https://robocitrus.com/en/kontakt)