---
title: "Code Push: Flutter-Updates ohne App Store veröffentlichen"
description: "Mit Shorebird Code Push Flutter-Apps sofort updaten, ohne App Store Review. Setup-Guide, Store-Richtlinien, Vor- & Nachteile. Production-Erfahrungen aus echten Projekten."
canonical_url: "https://robocitrus.com/blog/code-push-updates-ohne-app-store"
last_updated: "2026-07-19T00:12:31.833Z"
---

## Kurz zusammengefasst

- Shorebird Code Push: Dart-Code-Updates in Sekunden statt Tagen
- OTA-Updates sind Store-konform, solange du keine grundlegenden App-Funktionen änderst
- Native Code (Swift, Kotlin, Plugins) geht nicht per Code Push
- Kostenlos bis 5.000 Patch-Installs/Monat, danach ab $20/Monat
- Am besten für Hotfixes, kritische Bug-Fixes und schnelle Iterationen

---

Freitag, 17:00 Uhr. Die App ist live, 10.000 User nutzen sie aktiv, und du entdeckst einen kritischen Bug. Der normale Weg: Fix entwickeln, Build erstellen, zum App Store hochladen, auf Review warten. **Minimum 24-48 Stunden bei Apple, oft länger.**

Mit Code Push? Fix pushen, 5 Minuten später haben alle User das Update. Kein Store-Review, keine Wartezeit.

Klingt zu gut um wahr zu sein? Ist es nicht. Aber es gibt Einschränkungen, die du kennen musst.

## Was ist Code Push überhaupt?

Code Push (oder Over-the-Air Updates, OTA) ermöglicht es, App-Code direkt an Nutzer auszuliefern, ohne den Umweg über App Store oder Play Store. Die App prüft beim Start (oder zu definierten Zeitpunkten), ob ein Update verfügbar ist, lädt es im Hintergrund herunter und aktiviert es beim nächsten Neustart.

**Wichtig zu verstehen:** Code Push ersetzt NICHT den App Store. Du brauchst weiterhin Store-Releases für:

- Neue User (die laden immer aus dem Store)
- Native Code-Änderungen
- Größere Feature-Updates (Store-Policy)

Code Push ist ein **zusätzliches Tool** für schnelle Iterationen und Hotfixes.

## Shorebird: Die Code Push Lösung für Flutter

Für React Native gab es jahrelang **Microsoft CodePush** (via App Center). Das wurde jedoch **im März 2025 eingestellt**. Für Flutter war die Situation lange Zeit frustrierend, es gab schlicht keine Production-ready Lösung.

Das änderte sich mit [Shorebird](https://shorebird.dev/), gegründet von **Eric Seidel** (ehemaliger Flutter Team Lead bei Google). Shorebird ist kein Hack oder Workaround, sondern eine saubere Implementierung, die einen modifizierten Flutter-Fork nutzt.

### Wie Shorebird technisch funktioniert

1. **Du baust mit Shorebird** statt `flutter build` verwendest du `shorebird release`
2. **Shorebird forkt Flutter** und ersetzt Teile der Engine mit eigenem Code
3. **Patches sind Diffs**, nur die geänderten Dart-Dateien werden übertragen
4. **Auf dem Gerät** läuft ein Updater, der beim App-Start nach Updates sucht

Das Geniale: Du nutzt weiterhin dein normales Flutter-Projekt. Keine Code-Änderungen nötig (außer optional für manuelle Update-Kontrolle).

## Store-Richtlinien: Was ist erlaubt?

Die gute Nachricht: **Code Push ist offiziell erlaubt**, mit Einschränkungen.

### 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

**Übersetzt:** Du darfst Code nachladen, solange:

- Die App nicht plötzlich etwas komplett anderes macht
- Du keinen alternativen App Store baust
- Du keine Sicherheitsmechanismen umgehst

### 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

Da Dart in einer VM läuft (und Shorebird auf iOS einen Interpreter nutzt), ist das **explizit erlaubt**.

### Was du NICHT machen solltest

- App als "Taschenrechner" einreichen und per Code Push ein Spiel draus machen
- Bezahlte Features ohne Store-Review freischalten
- Komplett neue Hauptfunktionen per OTA ausrollen

**Shorebird's klare Ansage:** Missbrauch verstößt gegen ihre ToS und führt zur Account-Sperrung.

## Setup-Guide: Shorebird in 10 Minuten

### 1. Installation

```bash
# 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 & Projekt initialisieren

```bash
shorebird login
cd dein-flutter-projekt
shorebird init
```

Das erstellt eine `shorebird.yaml` mit deiner App-ID:

```yaml
app_id: 12345678-1234-1234-1234-123456789abc
```

### 3. Release erstellen

```bash
# Android
shorebird release android

# iOS  
shorebird release ios
```

**Wichtig:** Diese Releases müssen in den Store! Shorebird ersetzt den Store-Upload nicht.

### 4. Patch deployen

Nachdem User deine App haben, kannst du Patches pushen:

```bash
# Bug gefixt? Patch it!
shorebird patch android
shorebird patch ios
```

Der Patch ist sofort verfügbar. Beim nächsten App-Start wird er heruntergeladen, beim übernächsten Start aktiv.

### 5. Optional: Manuelles Update-Handling

Standardmäßig checkt Shorebird automatisch beim App-Start. Für mehr Kontrolle:

```dart
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: User informieren und App-Neustart anbieten
  }
}
```

## Wann Code Push Sinn macht (und wann nicht)

### ✅ Perfekte Use Cases

<table>
<thead>
  <tr>
    <th>
      Situation
    </th>
    
    <th>
      Warum Code Push ideal ist
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Kritischer Bug in Production
      </strong>
    </td>
    
    <td>
      Sofortiger Fix statt 24-48h Store-Review
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Hotfixes für alte Versionen
      </strong>
    </td>
    
    <td>
      User, die nicht updaten, trotzdem erreichen
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Schnelle Iteration
      </strong>
    </td>
    
    <td>
      Daily/Weekly Deploys ohne Store-Overhead
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        A/B Testing von UI-Änderungen
      </strong>
    </td>
    
    <td>
      Schnelles Rollout und Rollback
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Compliance-Fixes
      </strong>
    </td>
    
    <td>
      DSGVO-Anpassungen sofort ausrollen
    </td>
  </tr>
</tbody>
</table>

### ❌ Nicht geeignet für

<table>
<thead>
  <tr>
    <th>
      Situation
    </th>
    
    <th>
      Warum nicht
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Native Plugin-Updates
      </strong>
    </td>
    
    <td>
      Code Push kann nur Dart-Code updaten
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Neue Permissions
      </strong>
    </td>
    
    <td>
      Braucht nativen Code → Store-Release
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Major Feature Releases
      </strong>
    </td>
    
    <td>
      Store-Policy verlangt Review für "significant changes"
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Asset-Updates (große Bilder/Videos)
      </strong>
    </td>
    
    <td>
      Technisch möglich, aber nicht effizient
    </td>
  </tr>
</tbody>
</table>

## Vor- und Nachteile ehrlich betrachtet

### Vorteile ✅

1. **Geschwindigkeit**, Patches in Minuten statt Tagen
2. **Rollback**, Ein Klick, und der letzte Patch ist weg
3. **Alle User erreichen**, Auch die, die nie manuell updaten
4. **Keine Downtime**, Update passiert im Hintergrund
5. **CI/CD Integration**, `shorebird patch` in der Pipeline

### Nachteile ❌

1. **Nur Dart-Code**, Native Änderungen = Store-Release
2. **Kosten bei Scale**, Ab 50k Installs/Monat: $20+/Monat
3. **Abhängigkeit**, Ein weiterer Service in deiner Infrastruktur
4. **~1 MB größere App**, Shorebird-Updater im Bundle
5. **Verzögertes Aktivieren**, Update wird beim NÄCHSTEN Start aktiv

### Versteckte Gotchas 🔍

- **Patch-Größe korreliert mit Code-Änderungen**, Große Refactorings = große Patches
- **Jeder Patch ist ein Diff zum Release**, NICHT zum vorherigen Patch
- **Flutter-Version muss matchen**, Shorebird trackt Flutter Stable

## Alternativen zu Shorebird

<table>
<thead>
  <tr>
    <th>
      Lösung
    </th>
    
    <th>
      Status
    </th>
    
    <th>
      Für wen?
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Microsoft CodePush
      </strong>
    </td>
    
    <td>
      ❌ Eingestellt März 2025
    </td>
    
    <td>
      War für React Native
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Expo Updates
      </strong>
    </td>
    
    <td>
      ✅ Aktiv
    </td>
    
    <td>
      React Native (Expo only)
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Firebase Remote Config
      </strong>
    </td>
    
    <td>
      ✅ Aktiv
    </td>
    
    <td>
      Konfiguration, NICHT Code
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Eigene Lösung
      </strong>
    </td>
    
    <td>
      🤷 Möglich
    </td>
    
    <td>
      Wenn du viel Zeit hast
    </td>
  </tr>
</tbody>
</table>

Für Flutter ist **Shorebird aktuell die einzige Production-ready Lösung**.

## Kosten

<table>
<thead>
  <tr>
    <th>
      Plan
    </th>
    
    <th>
      Patch Installs
    </th>
    
    <th>
      Preis
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Free
      </strong>
    </td>
    
    <td>
      5.000/Monat
    </td>
    
    <td>
      $0
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Pro
      </strong>
    </td>
    
    <td>
      50.000/Monat
    </td>
    
    <td>
      $20/Monat
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Business
      </strong>
    </td>
    
    <td>
      1.000.000/Monat
    </td>
    
    <td>
      $400/Monat
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Enterprise
      </strong>
    </td>
    
    <td>
      Custom
    </td>
    
    <td>
      Auf Anfrage
    </td>
  </tr>
</tbody>
</table>

"Patch Install" = Ein Gerät lädt einen Patch herunter. 10.000 User mit 3 Patches/Monat = 30.000 Installs.

## Fazit: Wann solltest du Shorebird nutzen?

**Definitiv JA, wenn:**

- Du eine App in Production hast
- Schnelle Iteration wichtig ist
- Du schon mal 2 Tage auf ein Store-Review gewartet hast

**Erstmal NEIN, wenn:**

- Du noch in der MVP-Phase bist
- Deine App hauptsächlich aus nativem Code besteht
- Du unter 1.000 User hast

Code Push ist kein Ersatz für saubere Release-Prozesse. Es ist eine **Versicherung** für den Ernstfall und ein **Beschleuniger** für schnelle Teams.

Der wahre Wert zeigt sich erst, wenn du ihn brauchst: Freitag, 17:00 Uhr, kritischer Bug, 10.000 User betroffen. Dann bist du froh, dass du `shorebird patch` tippen kannst statt ein Wochenende lang auf Apple zu warten.

---

*Nutzt du Code Push in deinen Projekten? Welche Erfahrungen hast du gemacht? Schreib uns, wir sind gespannt auf deine Stories!*
