Der beste Live-Update ist der, den die Benutzer kaum bemerken.
Das bedeutet normalerweise drei Dinge:
- Der Download ist klein.
- Der Rollout ist kontrolliert.
- Recovery ist sofortig, wenn etwas schief geht.
Das gleiche "keep OTA lean"-Rat, der in der React Native-Welt funktioniert, gilt auch für Capgo. Die Differenz ist, dass Capgo Capacitor-Teams einige zusätzliche Hebel gibt: Deltas, Kanäle, automatische Rückschritte, Zielgruppenspezifische Updates, und optional End-to-End-Verschlüsselung.
Wenn Sie diese zusammen verwenden, erhalten Sie kleinere Payloads, schnellere Installationen und viel weniger operativen Ballast.
Lean ist wichtig, auch wenn die MAU gleich bleibt
Ein nützliches Capgo-spezifisches Detail: Capgo MAU ist effektiv die Anzahl der monatlich aktiven Geräte, die das Update-Service in den letzten 30 Tagen kontaktiert haben.
Also ist die Verkleinerung eines Bundles nicht hauptsächlich ein Trick, um die MAU-Zählung zu reduzieren. Es ist wichtig, weil es die Teile verbessert, die Benutzer und Teams wirklich spüren:
- Faster downloads on cellular or weak Wi-Fi
- Bessere Erfahrung mit direkten Updates
- Weniger verschwendete Bandbreite bei fehlgeschlagenen oder zurückgezogenen Releases
- Kleinerer Auswirkungsbereich bei der Testung oder Staging eines Releases
Lean Updates sind wirklich um Geschwindigkeit, Sicherheit und Betriebsdisziplin bemüht.
1. Standardmäßig Delta-Updates verwenden
Wenn Sie nur eines tun, tun Sie dies.
Capgo’s Deltas senden Sie nur Dateien, die zwischen den Versionen geändert wurden, anstatt das gesamte Web-Bundle erneut herunterzuladen. Das ist der größte einzelne Gewinn für die Routine-OTA-Leistung.
bun run build
bunx @capgo/cli@latest bundle upload --channel staging --delta
Wenn Ihre QA-Überprüfung abgeschlossen ist:
bunx @capgo/cli@latest bundle upload --channel production --delta
Wenn Sie möchten, dass CI streng bleibt, verwenden Sie --delta-only Damit niemand versehentlich auf volle Bundle-Uploads zurückfällt:
bunx @capgo/cli@latest bundle upload --channel production --delta-only
Nur verwenden --delta-only Wenn Ihr Produktionspool Delta-Updates unterstützt. Bei gemischten Plugin-Versionen können ältere Geräte, die keine manifestbasierte Delta-Lieferung unterstützen, nicht auf dieses Update zugreifen.
Dies ist noch wichtiger, wenn Sie verwenden directUpdate, weil der Zeitraum zwischen „Update gefunden“ und „App neu geladen“ für den Benutzer sichtbar wird.
2. Behandeln Sie Assets wie Assets, nicht wie JavaScript-Beutel
Große Assets sind der Ort, an dem sich OTA-Bundles leise aufblähen.
Einige praktische Regeln:
- Große Bilder oder Medien nicht inline in JavaScript einfügen, wenn ein normales Asset-File getan werden kann.
- Häufig wechselnde Inhalte auf Ihrem eigenen CDN oder API speichern, wenn sie nicht im verschickten App-Bundle leben müssen.
- Bei Marketing-Bildern, Onboarding-Videos und einmaligen Kampagnen-Assets, die jede Release ersetzt werden, vorsichtig sein.
- Stabile Assets bleiben stabil. Mit Delta-Updates werden unveränderte Dateien wieder verwendet anstatt neu heruntergeladen zu werden.
Dies ist eine der einfachsten Möglichkeiten, Capgo schnell zu halten, während sich Ihre App entwickelt. Das schlimmste Muster ist ein kleiner UI-Fix, der Benutzern eine Menge unabhängiger Medien zum Herunterladen zwingt.
3. Halten Sie native Releases für echte native Änderungen bereit.
Capgo aktualisiert die Web-Schicht: HTML, CSS, JavaScript und Assets, die bei Laufzeit geladen werden.
Es ist nicht der richtige Kanal für:
- neue native Plugins
- Änderungen der Berechtigungen
capacitor.config.tsÄnderungen- Alles, was den Zustand des iOS- oder Android-Native-Projekts ändert.
Dieser Punkt ist auch für die Leistung wichtig. Wenn Sie immer wieder wichtige strukturelle Änderungen in den OTA-Kanal schieben, wird Ihre Updatestrategie mit der Zeit schwerer und riskanter.
Verwenden Sie zwei Release-Kanäle absichtlich:
Native-Kanal
Für Änderungen von Plugins, Berechtigungen und nativen Konfigurationen:
bun run build
bunx cap sync
Dann veröffentlichen Sie eine normale Store-Veröffentlichung.
Capgo-Pfad
Für eine sichere Web-Schicht-Iteration:
bun run build
bunx @capgo/cli@latest bundle upload --channel production --delta
Regelmäßig aktualisieren Sie auch Ihre native Basis, wenn Sie kürzlich viele langfristige Assets hinzugefügt haben. Ein frischer Store-Build enthält diese neue Basis, was zukünftige Capgo-Differenzen kleiner hält.
4. Verwenden Sie Kanäle, um die Update-Größe klein zu halten
Ein 'schlanker' Update geht nicht nur um Megabyte. Es geht auch darum, wie viele Geräte das Update erhalten, bevor Sie wissen, dass es gut ist.
Capgo-Kanäle Das Kanalsystem von __CAPGO_KEEP_0__ ist der sauberste Weg, um das zu kontrollieren:
stagingFür QAbetaFür eingeladene Testerproductionfür jedenhotfixfür Notfall-Wiederherstellung
Ein einfacher Workflow sieht so aus:
- Hochladen auf
staging. - Validierung auf echten Geräten.
- Schrittweise ausrollen, sei es über kontrollierte Kanäle oder eine prozentuale Ausrollung.
- Wenn die Gesundheit abnimmt, sofort zurückrollen.
Wenn Ihre App mehrere native Baseline-Versionen im Feld hat, können Sie Kanäle mit Version-Zielsetzungpaaren. Das hält inkompatible oder unnötig schwere Pakete von älteren Binären fern.
Für Teams, die noch enge Review-Schleifen wollen, funktioniert Capgo auch gut für PR-VorschauDas ermöglicht es, dass Produkt, QA und Stakeholder JS-Änderungen ohne Wartezeit auf neue TestFlight- oder Play-internal-Builds testen können.
5. Wenn Sie direkte Updates aktivieren, optimieren Sie die Startzeit.
Die schneller Sie ein Update anwenden möchten, desto disziplinierter muss Ihre Startzeit sein.
Capgo’s Updateverhalten Die Dokumentation empfiehlt es ausdrücklich, Delta-Updates zu pair. directUpdate Das ist die richtige Standard-Einstellung.
Die zweite Sicherheitsvorkehrung ist notifyAppReady().
import { CapacitorUpdater } from '@capgo/capacitor-updater'
CapacitorUpdater.notifyAppReady()
Wenn Ihre App nicht innerhalb der Standardzeit von 10 Sekunden oder innerhalb der Zeit, die Sie in Ihrer __CAPGO_KEEP_0__-Konfiguration festgelegt haben, bereit ist, kann __CAPGO_KEEP_1__ die Bundle als ungültig markieren und die vorherige gute Version wiederherstellen. Diese Rollover-Verhaltensweise ist in der Produktion wünschenswert, bedeutet aber auch, dass Sie die Startzeit sauber halten sollten: notifyAppReady() Rufen Sie appReadyTimeout you set in your Capacitor config, Capgo can mark that bundle invalid and restore the previous good version. That rollback behavior is what you want in production, but it also means you should keep startup clean:
- __CAPGO_KEEP_1__ kann die Bundle als ungültig markieren und die vorherige gute Version wiederherstellen.
notifyAppReady()am richtigen Ort - Vermeide langsames Startzeitverhalten im kritischen Pfad
- Speichere und restauriere den Anwendungsstatus sorgfältig, wenn du sofort neu ladest
- Testiere Szenarien mit schlechter Netzwerkverbindung und geringer Leistung von Geräten, bevor du eine breite Veröffentlichung durchführst
Wenn du es nicht kürzlich gelesen hast, ist die notifyAppReady-Anleitung worth re-reading.
6. Verwende interne Updatekanäle anstatt unnötiger nativer Rebuilds
Einige mobile Teams verbringen viel Zeit damit, Binärdateien für Änderungen zu erstellen, die offensichtlich nur auf der Webseite vorgenommen wurden
Wenn die Änderung:
- Kopieren
- Benutzeroberflächenglättung
- Onboarding-Flow
- Pricing-Screen-Logic
- Analytik-Wiring
- Funktionsschalter
- Anfragen oder API Antwort-Rendering
Dann ist eine Capgo Aktualisierung oft das schnellere Review-Artikel.
Das bedeutet weniger native Rebuilds, weniger TestFlight-Churn und ein engeres Feedback-Schleifen für das Team. Es ist einer der am wenigsten genutzten Vorteile von Capgo: Sie können mehr Review- und QA-Arbeit in die OTA-Spur ohne die native/Web-Grenze zu überschreiten.
Unsere Anleitung zu Staging mit einem mobilen App-ID beschreibt einen praktischen Weg, dies sauber zu halten.
7. Halten Sie Lean getrennt von geheimen
Kleine Pakete und sichere Pakete lösen unterschiedliche Probleme.
Kanäle bestimmen die Berechtigung. Sie machen einen Bundle nicht automatisch vertraulich.
Wenn Sie stärkere Liefergarantien benötigen:
- aktivieren Live-Update-Verschlüsselung,
- nutzen benutzerdefinierte Speicherung oder selbst gehostete Lieferung,
- halten Sie private Schlüssel nur in CI oder sichergestellten Betriebsabläufen auf.
Dadurch wird die Größe der Aktualisierung nicht irrelevant. Es bedeutet nur, dass Sie sich für beide Dimensionen optimieren sollten:
- schlank für Geschwindigkeit
- verschlüsselt für Lieferkontrolle
- Kanäle für die Kontrolle der Veröffentlichung
- Rückgängigmachen für die Wiederherstellung.
A praktische ‘schlanke Capgo’-Workflow
Wenn Sie ein einfaches Standardbetriebsmodell wünschen, verwenden Sie dies:
- Halten Sie native und OTA-Veröffentlichungsstrecken getrennt.
- Hochladen von JS-Änderungen mit
--deltastandardmäßig. - Verwenden Sie
stagingundbetaKanäle vorherproduction. - Beobachten Sie Update-Statistiken und -Protokolle nach der Rollout und nicht nur davor.
- Rufen Sie PRs in installierbare Vorabversionen auf, wenn eine native Build nicht erforderlich ist.
- Vermeiden Sie große, häufig wechselnde Medien, soweit möglich, im Bundle.
- Erfrischen Sie die native Basis nach erheblichem Assetwachstum oder native Änderungen.
- Behandeln Sie
notifyAppReady()und Rollback-Verhalten als Teil der Release-Engineering, nicht als Setup-Trivia.
Diese Combination bleibt länger schnell als der gängige "Upload einfach alles, was geändert wurde"-Ansatz.
Schlussgedanke
Für Capgo-Teams ist "lean and fast" nicht nur ein Problem der Bundle-Größe.
Es ist ein Release-Design-Problem.
Verwenden Sie Delta-Updates für die Payload-Größe, Kanäle für die Rollout-Größe und Rollbacks für die Fehler-Größe. Sobald Sie sich OTA so denken, bleiben Ihre Updates schnell, selbst wenn die App, das Team und die Benutzerbasis größer werden.
Fortsetzen Sie von How to Keep Capgo Updates Lean and Fast
Wenn Sie verwenden How to Keep Capgo Updates Lean and Fast um Kanäle für die Routenplanung und die rollierende Veröffentlichung zu verbinden, Kanäle zur Implementierungsdetail in Kanälen, Kanäle zur Implementierungsdetail in Kanälen, Kanäle zur Implementierungsdetail in Kanälen, Testlösung für Beta-Versionen zur Produktworkflow in Testlösung für Beta-Versionen, und Lösung für Zielversionen zur Produktworkflow in Lösung für Zielversionen.