Passer au contenu

Comportement des mises à jour

Quand vous publiez une mise à jour Capgo, vous voulez la livrer vite, sans casser l’expérience utilisateur. Cette page explique le comportement par défaut, puis les options avancées.

Par défaut, Capgo applique ce flux :

  1. Au lancement, le plugin vérifie si une mise à jour est disponible.
  2. Si oui, elle est téléchargée en arrière-plan.
  3. Une fois le téléchargement terminé, Capgo attend que l’application passe en arrière-plan ou soit fermée.
  4. Au prochain lancement, la nouvelle version est activée.

Ce mode minimise les interruptions : pas de popup intrusive, pas d’attente forcée en plein usage.

Appliquer la mise à jour entre deux sessions permet de :

  • éviter d’interrompre l’utilisateur pendant une action
  • garder une expérience stable en session
  • déployer fréquemment sans effet brutal

Point d’attention : si l’utilisateur passe rapidement en arrière-plan puis revient, un état non sauvegardé peut être perdu.

Bonnes pratiques :

  • sauvegarder l’état fréquemment
  • restaurer l’état au retour en foreground
  • éviter les mises à jour trop lourdes et trop fréquentes

Si vous avez besoin d’un contrôle fin (ex : synchronisation avec un changement serveur), utilisez setMultiDelay :

import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setMultiDelay({
delayConditions: [
{
kind: 'date',
value: '2023-06-01T00:00:00.000Z',
},
{
kind: 'background',
value: '60000',
},
],
});

Exemple : la mise à jour n’est installée qu’après la date indiquée ET après au moins 60s en background.

Conditions disponibles :

  • date: attendre une date/heure
  • background: attendre une durée minimale en background
  • nativeVersion: exiger une version native minimale
  • kill: attendre l’événement de fermeture de l’app

Appliquer immédiatement avec directUpdate

Section titled “Appliquer immédiatement avec directUpdate”

Pour des correctifs critiques, vous pouvez appliquer la mise à jour dès qu’elle est téléchargée via directUpdate.

directUpdate se configure dans capacitor.config.ts (pas en runtime JS). Valeurs possibles :

  • false (défaut): flux standard
  • 'atInstall': mise à jour immédiate uniquement à l’installation / mise à jour store
  • 'onLaunch': immédiate à l’installation, mise à jour store ou relance après fermeture
  • 'always': immédiate dans tous les cas
  • true (déprécié): équivalent à 'always'
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: true,
directUpdate: 'always',
autoSplashscreen: true,
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false,
},
},
};
export default config;

Depuis les versions récentes du plugin, autoSplashscreen simplifie la gestion visuelle :

  • le splash est masqué automatiquement après application
  • le splash est aussi masqué si aucune mise à jour n’est nécessaire

Si vous avez besoin d’un contrôle complet, laissez autoSplashscreen: false et gérez manuellement :

import { CapacitorUpdater } from '@capgo/capacitor-updater';
import { SplashScreen } from '@capacitor/splash-screen';
CapacitorUpdater.addListener('appReady', () => {
SplashScreen.hide();
});
CapacitorUpdater.notifyAppReady();

Si vous activez directUpdate :

  • conservez launchAutoHide: false
  • activez keepUrlPathAfterReload: true
  • sauvegardez/restaurez l’état utilisateur
  • testez les transitions (flicker, perte de route, reprise de session)

Dans la plupart des cas, le comportement par défaut reste le meilleur compromis entre rapidité de diffusion et stabilité UX.