Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().
Présentation
Cette page décrit comment instrumenter votre application React avec le Datadog Feature Flags SDK. Datadog Feature Flags offre un moyen unifié de contrôler à distance la disponibilité des fonctionnalités dans votre application, d’expérimenter en toute sécurité et de proposer de nouvelles expériences en toute confiance.
Le Datadog Feature Flags SDK pour React est basé sur OpenFeature, un standard ouvert pour la gestion des feature flags. Ce guide explique comment installer le SDK, configurer le fournisseur Datadog et évaluer les feature flags dans vos composants React.
Installation
Installez le Datadog OpenFeature provider et l’OpenFeature React SDK en utilisant votre gestionnaire de paquets préféré :
Créez une instance DatadogProvider et enregistrez-la auprès d’OpenFeature. Faites cela le plus tôt possible dans votre application, avant le rendu de vos composants React. Pour la configuration en direct de Browser Feature Flags, applicationId, clientToken, site et env sont requis. Pour créer un jeton client, consultez Jetons client.
Browser Feature Flags n'est pas pris en charge pour le site Datadog sélectionné ().
import{DatadogProvider}from'@datadog/openfeature-browser';constprovider=newDatadogProvider({// Required
// applicationId is a unique identifier to distinguish multiple frontend applications.
// This should match the app ID you provide to your RUM SDK.
applicationId:'<APPLICATION_ID>',// Required
clientToken:'<CLIENT_TOKEN>',site:'',env:'<ENV_NAME>',});
Définir le contexte d’évaluation
Définissez à qui ou à quoi l’évaluation de l’indicateur s’applique en utilisant un contexte d’évaluation. Le contexte d’évaluation inclut des informations sur l’utilisateur ou la session utilisées pour déterminer quelles variantes d’indicateur doivent être renvoyées. Référencez ces attributs dans vos règles de ciblage pour contrôler qui voit chaque variante.
Datadog Feature Flags nécessite que les attributs du contexte d'évaluation soient des valeurs primitives plates : chaînes de caractères, nombres et booléens. Ne transmettez pas d'objets ou de tableaux imbriqués ; ils ne sont pas pris en charge et peuvent entraîner la perte des données d'exposition.
Définissez le fournisseur avec le contexte d’évaluation :
Le targetingKey est utilisé comme sujet de randomisation pour le ciblage basé sur le pourcentage. Lorsqu'un indicateur cible un pourcentage de sujets (par exemple, 50 %), le targetingKey détermine dans quel « compartiment » un utilisateur se trouve. Les utilisateurs ayant le même targetingKey reçoivent toujours la même variante pour un indicateur donné.
Enveloppez votre application
Enveloppez votre application avec le composant OpenFeatureProvider. Cela rend les Feature Flags disponibles pour tous les composants enfants via le contexte React.
Le SDK OpenFeature React fournit des hooks pour évaluer les Feature Flags au sein de vos composants. Chaque hook renvoie la valeur du Feature Flag en fonction du contexte d’évaluation que vous avez configuré.
Feature Flags booléens
Utilisez useBooleanFlagValue(key, defaultValue) pour les Feature Flags qui représentent des conditions activées/désactivées ou vrai/faux :
Utilisez useStringFlagValue(key, defaultValue) pour les Feature Flags qui permettent de choisir entre plusieurs variantes ou chaînes de configuration :
La prise en charge intégrée de suspense vous permet d’éviter d’afficher les composants avec des indicateurs de fonctionnalité jusqu’à ce que l’initialisation du fournisseur soit terminée, ou lorsque le contexte change. Passez { suspend: true } dans les options du hook pour utiliser cette fonctionnalité.
Par exemple :
import{useBooleanFlagValue}from'@openfeature/react-sdk';import{Suspense}from'react';functionContent(){// Display a loading message if the component uses feature flags and the provider is not ready
return(<Suspensefallback={"Loading..."}><WelcomeMessage/></Suspense>);}functionWelcomeMessage(){constshowNewMessage=useBooleanFlagValue('show-new-welcome-message',false,{suspend:true});return(<>{showNewMessage?(<p>Welcome!You'reseeingthenewexperience.</p>):(<p>Welcomeback!</p>)}</>);}
Détails de l’évaluation des Feature Flags
Lorsque vous avez besoin de plus que la simple valeur du Feature Flag, utilisez les hooks de détail. Celles-ci renvoient à la fois la valeur évaluée et les métadonnées expliquant l’évaluation :
useBooleanFlagDetails(key, defaultValue)
useStringFlagDetails(key, defaultValue)
useNumberFlagDetails(key, defaultValue)
useObjectFlagDetails(key, defaultValue)
Par exemple :
import{useStringFlagDetails}from'@openfeature/react-sdk';functionPaywallLayout(){constdetails=useStringFlagDetails('paywall_layout','control');console.log(details.value);// Evaluated value (for example: "A", "B", or "control")
console.log(details.variant);// Variant name, if applicable
console.log(details.reason);// Description of why this value was chosen
return<Layoutvariant={details.value}/>;}
Les détails des indicateurs vous aident à déboguer le comportement d’évaluation et à comprendre pourquoi un utilisateur a reçu une valeur donnée.
Exemple complet
Voici un exemple complet montrant comment configurer et utiliser Datadog Feature Flags dans une application React :
import{Suspense}from'react';import{DatadogProvider}from'@datadog/openfeature-browser';import{OpenFeatureProvider,OpenFeature,useBooleanFlagValue}from'@openfeature/react-sdk';// Initialize the Datadog provider
constprovider=newDatadogProvider({applicationId:'<APPLICATION_ID>',clientToken:'<CLIENT_TOKEN>',site:'',env:'<ENV_NAME>',});// Set the evaluation context
constevaluationContext={targetingKey:'user-123',user_id:'123',user_role:'admin',};OpenFeature.setProvider(provider,evaluationContext);// Wrap your app with the OpenFeatureProvider and Suspense for loading state
functionApp(){return(<Suspensefallback={<Loading/>}><OpenFeatureProvidersuspendUntilReady><Page/></OpenFeatureProvider></Suspense>);}// Use feature flags in your components
functionPage(){constshowNewFeature=useBooleanFlagValue('new_feature',false);return(<div>{showNewFeature?<NewFeature/>:<ExistingFeature/>}</div>);}
Mettre à jour le contexte d’évaluation
Pour mettre e0 jour le contexte d’e9valuation apre8s l’initialisation (par exemple, lorsqu’un utilisateur se connecte), utilisez OpenFeature.setContext() :
// When a user logs in
awaitOpenFeature.setContext({targetingKey:user.id,user_id:user.id,email:user.email,plan:user.plan,});
Configurer les options du fournisseur de navigateur
Le fournisseur React utilise le fournisseur de navigateur Datadog, qui prend également en charge ces paramètres optionnels :
Option
Par défaut
Utilisation
enableExposureLogging
true
Envoyer les événements d’exposition vers l’ingestion d’expositions.
enableFlagEvaluationTracking
true
Envoyer la télémétrie d’évaluation agrégée.
enableRumFeatureFlagTracking
true
Ajouter les évaluations d’indicateurs aux événements RUM lorsque le RUM Browser est disponible. L’activation de cette option peut augmenter le nombre d’événements facturés par RUM.
flagEvaluationTrackingInterval
10000 ms
Intervalle de vidage pour la télémétrie d’évaluation.
initialFlagsConfiguration
non défini
Fournissez des données précalculées correspondant au contexte comme solution de secours en cas d’échec de récupération. Consultez Données de secours précalculées initiales.
flaggingProxy
non défini
Récupérer les indicateurs via un proxy au lieu de site.
customHeaders
non défini
Ajouter des en-têtes aux requêtes de récupération d’indicateurs.
overwriteRequestHeaders
false
Remplacer les en-têtes de requête par défaut par customHeaders.
DatadogProvider reste le fournisseur de navigateur recommandé pour les applications React. Pour la distribution de configuration appartenant à l’application ou l’évaluation de règles locales lors de changements de contexte, consultez Browser Rules-Based Evaluation. Cette configuration avancée nécessite un rafraîchissement explicite de la configuration et une gestion du cycle de vie du suivi.
Tests
Vous pouvez effectuer des tests sur un environnement de test Datadog dédié avec le DatadogProvider réel, ou le remplacer par le TypedInMemoryProvider d’OpenFeature pour contrôler directement les valeurs des feature flags dans le code de test. Cette section présente l’approche en mémoire, qui permet de garder les tests hermétiques et hors ligne. TypedInMemoryProvider est exporté depuis @openfeature/web-sdk ; installez-le en tant que dépendance de développement et enregistrez-le avant de rendre les composants à tester :
La structure des indicateurs du SDK Web nécessite variants, defaultVariant et disabled. Utilisez setProviderAndWait (et non setProvider) pour éviter les courses de suspense lorsque le test rend immédiatement des composants protégés par des feature flags. Pour les tests de composants qui montent un arbre React, @openfeature/react-sdk exporte également un composant OpenFeatureTestProvider qui enveloppe les enfants avec un fournisseur en mémoire — consultez la documentation de l’OpenFeature React SDK pour plus de détails.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: