Aller au contenu principal

Variantes de Flag

Open in QuickMonitoring→ Sites → [Votre Site] → Feature Flags → [Sélectionner un flag] → Variantes

Les flags peuvent avoir plusieurs variantes (pas seulement activé/désactivé) — par exemple control, variante-a, variante-b. Utile pour les tests multivariés et les déploiements progressifs avec des configurations différentes.

Ce que vous verrez​

Lorsqu'un flag est de type Multivariant, l'onglet Variantes de la page de détail du flag affiche :

  • La liste des variantes définies, chacune avec :
    • Clé — identifiant de la variante (ex. control, variante-a)
    • Valeur — chaîne de texte ou objet JSON associé à cette variante
    • Poids — pourcentage d'utilisateurs qui recevront cette variante (la somme doit faire 100 %)
  • Un bouton Ajouter une variante pour créer de nouvelles variantes
  • Un bouton Enregistrer les variantes pour valider les modifications

La variante control est créée automatiquement et représente le comportement par défaut (fonctionnalité désactivée ou configuration de référence).

Comment l'utiliser​

Étape 1 — Créer un flag de type Multivariant​

Lors de la création d'un flag (bouton Nouveau Flag), sélectionnez Multivariant dans le champ Type. Les flags booléens existants ne peuvent pas être convertis en multivariant.

Étape 2 — Définir les variantes​

Dans l'onglet Variantes du flag, cliquez sur Ajouter une variante pour chaque variante souhaitée :

CléValeurPoids
control"" (défaut)50 %
variante-a"bouton-rouge"25 %
variante-b"bouton-vert"25 %

La valeur peut être :

  • Une chaîne simple : "rouge", "layout-compact"
  • Un objet JSON : {"couleur": "rouge", "taille": "large"} — utile pour passer plusieurs paramètres de configuration en une seule évaluation.

Assurez-vous que la somme des poids est exactement 100 %. Le tableau de bord vous affiche la somme actuelle en temps réel.

Étape 3 — Évaluer la variante dans le code​

QMTracker.getFlag() retourne la clé de la variante assignée à l'utilisateur courant :

const variante = await QMTracker.getFlag('test-couleur-bouton');
// variante === 'control' | 'variante-a' | 'variante-b'

switch (variante) {
case 'variante-a':
appliquertheme('rouge');
break;
case 'variante-b':
appliquerTheme('vert');
break;
default:
// 'control' ou valeur inconnue — comportement par défaut
appliquerTheme('bleu');
}

Étape 4 — Utiliser des variantes JSON​

Si vos variantes contiennent des objets JSON, parsez la valeur retournée :

const varianteRaw = await QMTracker.getFlag('config-hero-section');
// varianteRaw === '{"titre": "Essayez gratuitement", "couleur": "violet"}'

try {
const config = JSON.parse(varianteRaw);
document.querySelector('.hero-title').textContent = config.titre;
} catch {
// Utiliser les valeurs par défaut si le JSON est invalide
}

Répartition déterministe des variantes​

L'assignation d'une variante à un utilisateur est déterministe : un utilisateur identifié reçoit toujours la même variante tant que les poids ne changent pas. Cela garantit une expérience cohérente entre les sessions.

Si vous modifiez les poids des variantes, une fraction des utilisateurs peut changer de variante. Évitez de modifier les poids pendant une expérience A/B en cours.

Condition de validation​

Vous obtenez cet achievement lorsque : un flag multivariant avec au moins deux variantes (dont control) est créé et que QMTracker.getFlag() est appelé depuis un navigateur pour ce flag, retournant une clé de variante valide.

Problèmes courants​

La somme des poids n'est pas égale à 100 %. Le tableau de bord affiche une erreur et empêche la sauvegarde si les poids ne totalisent pas 100 %. Ajustez les valeurs de chaque variante jusqu'à atteindre exactement 100 %.

getFlag() retourne null au lieu d'une clé de variante. Cela indique que le flag est désactivé globalement ou que l'utilisateur est exclu du déploiement. Vérifiez l'état du flag et le pourcentage de déploiement dans l'onglet Déploiement.

Mes variantes JSON ne sont pas parsées correctement. getFlag() retourne toujours une chaîne de texte. Si vous stockez du JSON dans la valeur d'une variante, vous devez appeler JSON.parse() manuellement dans votre code.

L'utilisateur change de variante entre deux sessions. Vérifiez que QMTracker.identify() est appelé avec le même userId entre les sessions. Les utilisateurs anonymes (non identifiés) peuvent recevoir des variantes différentes entre les sessions car ils sont assignés par anonymousId, qui peut changer si les cookies sont effacés.