Aller au contenu

Feature flags (SDK)

Pour la création de flags, le ciblage et la mécanique de rollout, lisez le guide des feature flags. Cette page décrit la surface du SDK.

// Vérification booléenne — false tant que les flags ne sont pas chargés, false pour les clés inconnues
if (kilden.isFeatureEnabled('new-checkout')) {
renderNewCheckout();
}
// Valeur complète — flag booléen ou clé de variante d'un flag multivarié
const variant = kilden.getFeatureFlag('pricing-test'); // true | false | "variant-b" | undefined
isFeatureEnabled(key: string): boolean;
getFeatureFlag(key: string): boolean | string | undefined;

Les flags sont chargés depuis POST {apiHost}/decide à l’init et mis en cache en mémoire pour la durée de la session. Aucun des deux getters ne bloque jamais :

  • isFeatureEnabled renvoie false tant que les flags ne sont pas chargés.
  • getFeatureFlag renvoie undefined tant que les flags ne sont pas chargés — vous pouvez donc distinguer « désactivé » (false) de « pas encore chargé » (undefined). Chaque flag du projet est présent dans chaque réponse (les inactifs comme false), donc une clé absente après le chargement signifie que le flag n’existe pas.
kilden.onFeatureFlags((flags) => {
// flags : Record<string, boolean | string>
setupUi(flags['new-checkout'] === true);
});

Le callback se déclenche au premier chargement des flags, à chaque rechargement, et immédiatement si vous vous abonnez alors qu’ils sont déjà chargés. Utilisez-le pour éviter de faire le rendu avant que les flags soient connus.

Les flags se rechargent automatiquement après identify() et reset() — l’évaluation dépend du distinct id, donc le SDK converge tout de suite vers les valeurs du nouvel identifiant. Comme le bucketing hache le distinct id, un utilisateur proche d’une frontière de rollout peut légitimement changer de côté en passant d’anonyme à identifié ; voir le guide pour comprendre pourquoi.

Il n’y a pas d’option de bootstrap : la première évaluation d’un chargement de page est toujours un appel asynchrone à /decide. Conditionnez l’UI dépendante des flags sur onFeatureFlags plutôt que de supposer des valeurs au démarrage.

Le premier accès à un flag par session — via l’un ou l’autre getter — émet un événement $feature_flag_called avec $flag_key et $flag_value, qui alimente les graphiques d’exposition dans le panel. La déduplication est indexée sur $session_id et survit aux rechargements de page ; elle se réinitialise quand la session est régénérée. Les clés de flags inconnues n’émettent rien.

En opt-out, /decide n’est pas appelé ; les valeurs en cache continuent de répondre.