Teams wählen in der Regel eine der drei Ansätze für mobile Umgebungen:
- Zwei App-IDs (Produktion + Vorproduktion)
- Eine App-ID + dynamische Umgebungswechsel
- Eine App-ID + Capgo-Kanäle
Die ersten beiden können funktionieren, aber sie erzeugen langfristige Reibungsverluste. In realen Teams ist das Capgo-Kanalmodell in der Regel das sauberste.
Warum duplizierte App-IDs lästig werden
Verwendung von com.myapp und com.myapp.beta scheint einfach, aber Sie erhalten schnell Duplikate:
- Zwei Releasepipelines
- Zwei Satze von Push-IDs, Deep-Links und Berechtigungszuordnungen
- Zwei Analytics- und Crash-Identitäten
- Divergente Konfiguration und inkonsistente Verhalten zwischen Umgebungen
Sie enden damit, zwei Produkte über Geschäftsplattformen, Teams und interne QA-Anweisungen zu verwalten.
Weshalb die Konfiguration bei Laufzeit oft verwirrend ist
Das Muster „eine App-ID + Laufzeit-Switch“ bedeutet normalerweise, dass Ihre App Umgebungsvariablen oder Flags bei der Startzeit liest und APIs, Schlüssel und Aktualisierungsverhalten dynamisch umleitet.
Dies funktioniert, bis:
- Die QA-Abteilung umgeht die beabsichtigten Flüsse, weil die Konfigurationszustände veraltet sind.
- Jemand verwendet den falschen Endpunkt in der Produktion.
- Umweltverschiebungen verursachen schwierig zu reproduzierende Fehler.
- Sie müssen auf einem Benutzergerät „welche Konfigurationsversion verwendet dieser Binary?“ debuggen.
Diese Komplexität wächst mit jedem Release und ist dort, wo Teams an Geschwindigkeit verlieren.
Die Capgo-Methode: Eine App-ID, viele Kanäle
Capgo macht die Umgebungssteuerung explizit über Kanäle:
- Bewahre eine Produktions-App-ID im App Store / Play.
- Versende eine native Binärdatei für die „shell“ (bis native Änderungen eine wahre Rebuild erfordern).
- Routiere das Verhalten durch Kanal, nicht durch duplizierte App-Identität.
In der Praxis bedeutet dies:
production: Alle Benutzerstaging: interne QA und Release-Kandidatenbeta: eingeladene Testerhotfix: Notfall-Patch-Track
Dein TestFlight/Play-internal-Test-App kann auf "forever" bleiben.
Du kannst JS/CSS/Asset-Updates dort wiederholt durchführen ohne eine neue native App zu veröffentlichen. staging forever.
You do JS/CSS/asset updates there repeatedly through Capgo without publishing a new native app.
1) Native Release-Baseline
1) __CAPGO_KEEP_0__
Ihr letzter natives Binary bleibt für viele JS Iterationen gleich:
bun run build
bunx cap sync
# generate Xcode/Android Studio archives as usual
Sie bauen nur das natives Binary neu, wenn Sie tatsächlich native Oberfläche geändert haben.
2) Verwenden Sie dedizierte Kanäle für Umgebungen
Veröffentlichen Sie Updates mit Kanälen:
bun run build
bunx @capgo/cli deploy --channel staging
Testen Sie auf QA, beheben Sie Probleme, dann promoten Sie:
bunx @capgo/cli promote vX.Y.Z --channel production
Wenn Sie explizite Versionsnummern bevorzugen:
bunx @capgo/cli deploy vX.Y.Z --channel staging
bunx @capgo/cli promote vX.Y.Z --channel production
3) Halten Sie TestFlight “immer pre-prod”
In iOS-Workflows bedeutet dies, dass Ihr TestFlight-Build mit pre-produktiven Updates verbunden bleiben kann:
- Keine häufigen natives Einreichungen für jede JS-Änderung.
- QA validiert immer nahe an der Produktion code über den Staging-Kanal.
- Produktionsbenutzer erhalten nur die von der Produktion kanalisierten Pakete.
4) Verwenden Sie Kanalwechsel nur für kontrollierte Workflows
Für fortgeschrittene Teams: Expose kontrollierte Kanalwechsel für QA/Admin-Benutzer:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({
channel: 'staging',
triggerAutoUpdate: true
});
Dies ist optional. Die meisten Teams verwenden Kanalzuweisungen aus der Dashboard und wechseln nur den Kanal für interne Benutzer, nicht alle Kunden.
Betriebscheckliste
- Einziges App-ID (keine Duplikate von Produktions-/Staging-IDs)
- Ein Baseline-Native-Build-Pipeline
- Kanalzuweisungen dokumentiert (
staging,beta,production,hotfix) - Promotion Path wird in CI/CD erzwungen
- Natives Rebuild nur bei echten Native-Änderungen
- Rückgängigmachung wird regelmäßig getestet
Praktischer Nutzen
Diese Vorgehensweise entfernt Umgebungsdrift, reduziert Build-Churn und beschleunigt Fixes:
- QA erhält realistische Binärdateien (kein fiktiver "Staging-App"-Identität)
- Ihr TestFlight-Pfad bleibt stabil,
- Ihr Team vermeidet das „Zwei-App-ID-Debt“
- Sie können viele JS-only-Fixes über Capgo schnell durchführen.
Das Ergebnis ist eine einfachere Governance: weniger Artefakte, saubere Telemetrie und weniger Überraschungen in der Release-Operation.
Bleiben Sie bei Capgo Environment Best Practices: Staging mit einem Mobile App ID weiterhin
Wenn Sie "__CAPGO_KEEP_0__ Environment Best Practices: Staging mit einem Mobile App ID" verwenden, um Kanalrouten und gestaffelte Rollout zu planen, verbinden Sie es mit "Channels", Capgo Environment Best Practices: Staging with One Mobile App ID Channels für die Implementierungsdetails in Channels, Channels Wenn Sie "__CAPGO_KEEP_0__ Environment Best Practices: Staging mit einem Mobile App ID" verwenden, um Kanalrouten und gestaffelte Rollout zu planen, verbinden Sie es mit "Channels", für die Implementierungsdetails in Channels, Kanäle __CAPGO_KEEP_0__ Beta-Testlösung __CAPGO_KEEP_0__ Versionziel-Lösung __CAPGO_KEEP_0__