Zum Inhalt springen

Breaking Changes

Diese Dokumentation erklärt, wie Sie Breaking Changes in Ihrer App mit versionierten Channels handhaben. Dieser Ansatz ermöglicht es Ihnen, verschiedene Versionen Ihrer App zu pflegen, während Sie sicherstellen, dass Nutzer kompatible Updates erhalten.

Angenommen, Sie haben:

  • App-Version 1.2.3 (alte Version) – verwendet den production-Channel
  • App-Version 2.0.0 (neue Version mit Breaking Changes) – verwendet den v2-Channel
  • Live update 1.2.4 (kompatibel mit 1.2.3)
  • Live update 2.0.1 (kompatibel mit 2.0.0)

Empfohlener Ansatz: Lege einen defaultChannel für jede Major-Version. So kannst du Updates gezielt an bestimmte Nutzergruppen pushen, ohne auf dynamische Channel-Zuweisung angewiesen zu sein.

// Version 1.x releases
defaultChannel: 'v1'
// Version 2.x releases
defaultChannel: 'v2'
// Version 3.x releases (future)
defaultChannel: 'v3'

1. Channel für neue Version erstellen

Abschnitt: „1. Channel für neue Version erstellen“
Terminalfenster
# Create channel for version 2.x
npx @capgo/cli channel add v2

2. Capacitor Config für Version 2.0.0 anpassen

Abschnitt: „2. Capacitor Config für Version 2.0.0 aktualisieren“

Aktualisiere deine Capacitor-Konfiguration, bevor du Version 2.0.0 für den App Store baust:

capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'Example App',
plugins: {
CapacitorUpdater: {
// ... other options
defaultChannel: 'v2' // All 2.0.0 users will use v2 channel
}
}
};
export default config;

Erstelle separate Git-Branches, um die Kompatibilität zwischen App-Versionen zu erhalten:

Terminalfenster
# Create and maintain a branch for version 1.x updates
git checkout -b v1-maintenance
git push origin v1-maintenance
# Your main branch continues with version 2.x development
git checkout main

Wichtig: Schiebt niemals JavaScript-Bundles auf ältere Apps, die native code/APIs erwarten, die sie nicht besitzen. Baut Updates immer vom passenden Branch:

  • v1-maintenance-Branch: Für Updates auf 1.x-Apps (Produktionskanal)
  • main-Branch: Für Updates auf 2.x-Apps (v2-Kanal)
Terminalfenster
# For 1.x updates: Build from v1-maintenance branch
git checkout v1-maintenance
# Make your 1.x compatible changes here
npx @capgo/cli bundle upload --channel production
# For 2.x updates: Build from main branch
git checkout main
# Make your 2.x changes here
npx @capgo/cli bundle upload --channel v2
Terminalfenster
# Allow apps to self-assign to v2 channel
npx @capgo/cli channel set v2 --self-assign

Version 2.0.0 bauen und im App Store bereitstellen. Alle Nutzer, die diese Version herunterladen (egal ob neue Nutzer oder bestehende, die upgraden), nutzen automatisch den v2-Channel, da er im App-Bundle konfiguriert ist.

Wenn Sie Version 3.0.0 mit weiteren Breaking Changes veröffentlichen:

Terminalfenster
# Create channel for version 3.x
npx @capgo/cli channel add v3
// capacitor.config.ts for version 3.0.0
const config: CapacitorConfig = {
// ...
plugins: {
CapacitorUpdater: {
defaultChannel: 'v3' // Version 3.x users
}
}
};

Jetzt kannst du Updates an jede Version senden:

  • production channel → Nutzer von Version 1.x
  • v2 channel → Nutzer von Version 2.x
  • v3 channel → Nutzer von Version 3.x

Sobald alle Nutzer auf Version 2.x migriert sind (rechne mit 3–4 Monaten):

  1. Entfernen defaultChannel aus deiner Capacitor Konfiguration
  2. Lösche den v2-Channel:
Terminalfenster
npx @capgo/cli channel delete v2
  1. Lösche den v1-maintenance-Branch:
Terminalfenster
git branch -d v1-maintenance
git push origin --delete v1-maintenance

Teste Updates vor dem Deployment immer gründlich in jedem Channel

Version-1.x-Updates weiter pflegen

Abschnitt: „Wartung von Version 1.x-Updates“

Um Updates zu senden, die mit Version 1.x kompatibel sind:

  1. Wechsle in den Branch v1-maintenance:
Terminalfenster
git checkout v1-maintenance
  1. Nimm deine Änderungen vor und committe:
Terminalfenster
# Make 1.x compatible changes
git add .
git commit -m "Fix for v1.x"
git push origin v1-maintenance
  1. Build erstellen und in den Production-Channel hochladen:
Terminalfenster
npx @capgo/cli bundle upload --channel production

Wenn du es nutzt Breaking Changes um Channel-Routing und Staged Rollout zu planen, verbinde es mit Kanäle für die Implementierungsdetails in Channels, Kanäle für die Implementierungsdetails in Channels, Kanäle für die Implementierungsdetails in Channels, Beta-Testing-Lösung für den Produkt-Workflow in der Beta-Testing-Lösung, und Version-Targeting-Lösung für den Produkt-Workflow in der Version-Targeting-Lösung.