Skip to content

ADR 0003 — Channels Capgo choisis par suffixe de bundle id

Contexte

L'app a 3 environnements (dev, staging, production) qui doivent coexister installés sur un même device pour les testeurs et le support. Chaque environnement doit recevoir ses propres OTA via Capgo sans interférer avec les autres.

Décision

  • 3 bundle ids distincts :
    • com.buchard.app.development → channel Capgo dev
    • com.buchard.app.staging → channel Capgo staging
    • com.buchard.app → channel Capgo production
  • Le channel est sélectionné au runtime dans main.ts à partir du suffixe du bundle id récupéré via CapApp.getInfo() :
    ts
    const channel = id.endsWith('.development') ? 'dev'
                  : id.endsWith('.staging') ? 'staging'
                  : 'production'
    CapacitorUpdater.setChannel({ channel })
    (Amendement juillet 2026 : le code d'origine testait .endsWith('.dev'), qui ne matche pas le suffixe réel .development — les installs dev retombaient sur production. Corrigé pour coller au mapping ci-dessus.)
  • Les builds JS sont distincts par environnement (mode Vite + dotenv), donc un bundle d'un channel n'est jamais promu à un autre.

Conséquences

  • ✅ Les testeurs peuvent installer dev + staging + prod côte à côte sur leur device.
  • ✅ Une release prod n'affecte pas les canaux dev/staging.
  • ⚠️ Chaque environnement consomme son propre quota Capgo (3× les uploads).
  • ⚠️ Renommer un environnement = renommer le bundle id ET le channel ET les configs Capgo.
  • Voir aussi docs/capgo-distribution.md.

Contributors

No contributors

Changelog

No recent changes