Les équipes choisissent généralement l'une des trois approches pour les environnements mobiles :
- Deux ID d'application (production + pré-production)
- Un ID d'application + basculement dynamique de l'environnement de runtime
- Un ID d'application + canaux Capgo
Les deux premiers peuvent fonctionner, mais ils créent une friction à long terme. Dans les équipes réelles, le modèle de canal Capgo est généralement le plus propre.
Pourquoi les ID d'applications dupliqués deviennent bruyants
En utilisant com.myapp et com.myapp.beta semble simple, mais vous obtenez rapidement des duplicatas :
- Deux pipelines de mise à jour
- Deux ensembles d'ID de push, de liens profonds et de mappage d'entitlement
- Deux identités d'analytique et de crash
- Un comportement divergent et des configurations et comportements incohérents entre environnements
Vous finissez par gérer deux produits sur les consoles de magasins, les équipes et les instructions de test interne.
Pourquoi la configuration de runtime-switching est souvent embrouillée
Le modèle « un ID d'app + switch de runtime » est généralement synonyme de votre application qui lit les variables d'environnement ou les drapeaux au démarrage et re-routent les API, les clés et le comportement d'actualisation dynamiquement.
Cela fonctionne jusqu'à :
- Le démarrage de la phase de test qualité fait en sorte que les flux prévus soient contournés car l'état de la configuration est obsolète,
- quelqu'un utilise le mauvais endpoint en production,
- le dérive de l'environnement entraîne des bogues difficiles à reproduire,
- vous devez déboguer « quelle version de la configuration est-ce que ce binaire utilise ? » sur un appareil utilisateur.
Cette complexité augmente avec chaque mise à jour et c'est là que les équipes perdent de la vitesse.
The Capgo way: one app ID, many channels
Capgo makes environment control explicit through channels:
- Conservez une seule ID d'application de production dans l'App Store / Play.
- Envoyez une seule version native du « shell » (jusqu'à ce que des changements natives nécessitent une véritable reconstruction).
- Routez le comportement par canal, et non par une identité d'application dupliquée.
En pratique, cela signifie :
production: tous les utilisateursstaging: les candidats à la version de test interne et de mise en productionbeta: les testeurs invitéshotfix: piste de mise à jour d'urgence
Votre application de test interne TestFlight/Play peut rester active staging à jamais.
Vous pouvez mettre à jour JS/CSS/actifs à plusieurs reprises dans Capgo sans publier une nouvelle application native.
Structure recommandée en pratique
1) Base de lancement native
Votre dernier binôme natif reste le même pour de nombreuses itérations de JS :
bun run build
bunx cap sync
# generate Xcode/Android Studio archives as usual
Vous n'avez besoin de reconstruire le binôme natif que lorsque vous avez effectivement changé la surface native.
2) Utilisez des canaux dédiés pour les environnements
Publiez les mises à jour avec des canaux :
bun run build
bunx @capgo/cli deploy --channel staging
Testez sur QA, corrigez les problèmes, puis promouvez :
bunx @capgo/cli promote vX.Y.Z --channel production
Si vous préférez une version explicite :
bunx @capgo/cli deploy vX.Y.Z --channel staging
bunx @capgo/cli promote vX.Y.Z --channel production
3) Gardez TestFlight “toujours pré-prod”
Dans les workflows iOS, cela signifie que votre build TestFlight peut rester associé aux mises à jour de pré-production :
- Aucune soumission native fréquente pour chaque changement JS.
- La validation de QA se produit toujours près de la production code via le canal de mise en scène.
- Seuls les utilisateurs de production reçoivent les paquets de canal de production promus.
4) Utilisez uniquement les commutateurs de canal pour des workflows contrôlés
Pour les équipes avancées, exposez les commutateurs de canal contrôlés pour les utilisateurs QA/admin :
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({
channel: 'staging',
triggerAutoUpdate: true
});
Cela est facultatif. La plupart des équipes utilisent les affectations de canal depuis le tableau de bord et ne changent que le canal pour les utilisateurs internes, pas tous les clients.
Liste de vérification opérationnelle
- Un seul ID d'application (pas de duplicats d'ID de production/mise en scène)
- Une chaîne de pipeline de construction native de base
- La cartographie du canal est documentée (
staging,beta,production,hotfix) - La voie de promotion est appliquée dans CI/CD
- Seul le rebuild natif est effectué en cas de vraies modifications natives
- Le rollback est testé régulièrement
Avantage pratique
Cette approche supprime la dérive de l'environnement, réduit la rotation de construction et accélère les corrections :
- Les QA obtiennent des binaires réalistes (pas d'identité de « staging app » fictive),
- Votre chemin vers TestFlight reste stable,
- Votre équipe évite le « debt d'ID d'application »
- Vous pouvez faire passer rapidement de nombreuses corrections JS uniquement via Capgo.
Le résultat final est une gouvernance plus simple : moins d'artefacts, des données de télémétrie plus propres et moins de surprises dans les opérations de mise en production.