Aller au contenu

Breaking changes

Cette documentation explique comment gérer les breaking changes dans votre application à l'aide de canaux versionnés. Cette approche vous permet de maintenir différentes versions de votre application tout en garantissant que les utilisateurs reçoivent des mises à jour compatibles.

Supposons que vous ayez :

  • Version de l'app 1.2.3 (ancienne version) – utilise le canal production
  • Version de l'app 2.0.0 (nouvelle version avec breaking changes) – utilise le canal v2
  • Live update 1.2.4 (compatible avec 1.2.3)
  • Live update 2.0.1 (compatible avec 2.0.0)

Stratégie : utilisez toujours defaultChannel pour les versions majeures

Section intitulée « Stratégie : toujours utiliser defaultChannel pour les versions majeures »

Approche recommandée : Définissez un defaultChannel pour chaque version majeure. Cela vous permet de toujours envoyer des mises à jour à des groupes d’utilisateurs spécifiques, sans dépendre de l’attribution dynamique des canaux.

// Version 1.x releases
defaultChannel: 'v1'
// Version 2.x releases
defaultChannel: 'v2'
// Version 3.x releases (future)
defaultChannel: 'v3'
Fenêtre de terminal
# Create channel for version 2.x
npx @capgo/cli channel add v2

2. Mettre à jour la config Capacitor pour la version 2.0.0

Section intitulée « 2. Config de Capacitor pour la version 2.0.0 »

Mettez à jour votre configuration Capacitor avant de compiler la version 2.0.0 pour le store :

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;

Créez des branches git distinctes pour maintenir la compatibilité entre les versions de l'app :

Fenêtre de terminal
# 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

Critique : N'envoyez jamais de bundles JavaScript vers des apps plus anciennes qui attendent des code/API natives qu'elles n'ont pas. Buildez toujours vos mises à jour depuis la branche appropriée :

  • branche v1-maintenance: Pour les mises à jour des apps 1.x (canal production)
  • branche main: Pour les mises à jour des apps 2.x (canal v2)
Fenêtre de terminal
# 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
Fenêtre de terminal
# Allow apps to self-assign to v2 channel
npx @capgo/cli channel set v2 --self-assign

Compilez et déployez la version 2.0.0 sur le store. Tous les utilisateurs qui téléchargent cette version (nouveaux utilisateurs ou utilisateurs existants qui mettent à jour) utiliseront automatiquement le canal v2, car il est configuré dans le bundle de l'app.

Lorsque vous publiez la version 3.0.0 avec plus de breaking changes :

Fenêtre de terminal
# 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
}
}
};

Now you can push updates to any version:

  • production canal → utilisateurs de la version 1.x
  • v2 canal → utilisateurs de la version 2.x
  • v3 canal → utilisateurs de la version 3.x

Une fois que tous les utilisateurs ont migré vers la version 2.x (comptez 3 à 4 mois) :

  1. Supprimer defaultChannel de votre config Capacitor
  2. Supprimez le canal v2 :
Fenêtre de terminal
npx @capgo/cli channel delete v2
  1. Supprimez la branche v1-maintenance :
Fenêtre de terminal
git branch -d v1-maintenance
git push origin --delete v1-maintenance

Testez toujours minutieusement les mises à jour dans chaque canal avant le déploiement

Pour envoyer des mises à jour compatibles avec la version 1.x :

  1. Basculez sur la branche v1-maintenance :
Fenêtre de terminal
git checkout v1-maintenance
  1. Faites vos modifications et commitez :
Fenêtre de terminal
# Make 1.x compatible changes
git add .
git commit -m "Fix for v1.x"
git push origin v1-maintenance
  1. Compiler et envoyer vers le canal de production :
Fenêtre de terminal
npx @capgo/cli bundle upload --channel production

Si vous utilisez Breaking changes pour planifier le routage des canaux et le déploiement progressif, connectez-l’avec Canaux pour les détails d'implémentation des canaux, Canaux pour les détails d'implémentation des canaux, Canaux pour les détails d'implémentation des canaux, Solution de bêta-test pour le workflow produit de la Solution de bêta-test, et Solution de ciblage de version pour le workflow produit de la Solution de ciblage de version.