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 Native avec le Datadog Feature Flags SDK. Les Datadog Feature Flags offrent 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 Native 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 Native.
Prérequis
React Native version 0.65 ou ultérieure
iOS version 13 ou ultérieure
Android niveau d’API 23 ou ultérieur
Le - Datadog React Native SDK (@datadog/mobile-react-native) doit être initialisé en premier.
Installation
Installez le Datadog React Native SDK, le fournisseur OpenFeature et le SDK OpenFeature React à l’aide de votre gestionnaire de paquets préféré :
Si vous utilisez React Native version 0.68 ou supérieure, utilisez Java 17. Si vous utilisez React Native version 0.67 ou inférieure, utilisez Java version 11.
Dans votre fichier android/build.gradle, spécifiez kotlinVersion pour éviter les conflits entre les dépendances Kotlin :
build.gradle
buildscript{ext{kotlinVersion="1.8.21"}}
Initialiser le SDK
Le fournisseur Datadog OpenFeature pour React Native nécessite que le Datadog React Native SDK principal soit initialisé en premier, suivi de l’activation de Feature Flags. Pour créer un jeton client, consultez Jetons client.
Option 1 : Utilisation du composant DatadogProvider
Si vous utilisez le composant DatadogProvider pour l’initialisation du SDK, activez les Feature Flags dans le rappel onInitialized :
Option 2 : Utilisation de l’initialisation impérative
Si vous initialisez le SDK de manière impérative, activez les Feature Flags une fois l’initialisation terminée :
import{DdSdkReactNative,DdFlags,CoreConfiguration}from'@datadog/mobile-react-native';import{DatadogOpenFeatureProvider}from'@datadog/mobile-react-native-openfeature';import{OpenFeature}from'@openfeature/react-sdk';(async()=>{constconfig=newCoreConfiguration('<CLIENT_TOKEN>','<ENVIRONMENT_NAME>','<APPLICATION_ID>');config.site='';awaitDdSdkReactNative.initialize(config);// Enable Feature Flags after core SDK initialization
awaitDdFlags.enable();// Set the Datadog provider with OpenFeature
constprovider=newDatadogOpenFeatureProvider();OpenFeature.setProvider(provider);})();
L'envoi des données d'évaluation des Feature Flags à Datadog est automatiquement activé lors de l'utilisation du SDK Feature Flags. Fournissez rumIntegrationEnabled et trackExposures des paramètres à l' DdFlags.enable() appel pour configurer ce comportement.
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.
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é. L’évaluation des flags est locale et instantanée : le SDK utilise des données mises en cache localement, donc aucune requête réseau n’est effectuée lors de l’évaluation des flags.
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é.
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)
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 Native :
import{Suspense}from'react';import{View}from'react-native';import{DatadogProvider,DatadogProviderConfiguration,DdFlags}from'@datadog/mobile-react-native';import{DatadogOpenFeatureProvider}from'@datadog/mobile-react-native-openfeature';import{OpenFeature,OpenFeatureProvider,useBooleanFlagValue}from'@openfeature/react-sdk';constconfig=newDatadogProviderConfiguration('<CLIENT_TOKEN>','<ENVIRONMENT_NAME>',trackingConsent,{rumConfiguration:{applicationId:'<APPLICATION_ID>',},// ...
},);// Wrap your app with the DatadogProvider and OpenFeatureProvider.
exportdefaultfunctionAppWithProviders() {// Based on your auth state.
constuser=getCurrentUser();return(<DatadogProviderconfiguration={config}onInitialized={async()=>{awaitDdFlags.enable();constprovider=newDatadogOpenFeatureProvider();constevaluationContext={targetingKey: user.id,region: user.country,};OpenFeature.setProvider(provider,evaluationContext);}}><Suspensefallback={<Loading/>}><OpenFeatureProvidersuspendUntilReady><App/></OpenFeatureProvider></Suspense></DatadogProvider>);}// Use feature flags in your components
functionApp() {constshowNewFeature=useBooleanFlagValue('new_feature',false);return(<View>{showNewFeature?<NewFeature/>:<ExistingFeature/>}</View>);}
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() :
import{OpenFeature}from'@openfeature/react-sdk';// When a user logs in
functiononUserLogin(user){OpenFeature.setContext({targetingKey: user.id,email: user.email,plan: user.plan,});}
Configurer les options de Feature Flags
Passez les options de configuration à DdFlags.enable() pour personnaliser le comportement de Feature Flags :
awaitDdFlags.enable({// Send flag evaluation data to RUM for session analysis (default: true)
rumIntegrationEnabled: true,// Track flag exposures for analytics (default: true)
trackExposures: true,});
rumIntegrationEnabled
Lorsque true (par défaut), les évaluations des Feature Flags sont suivies dans RUM, ce qui permet de les corréler avec les sessions utilisateur. Cela permet des analyses telles que « Les utilisateurs de la variante B rencontrent-ils plus d’erreurs ? ».
trackExposures
Lorsque true (par défaut), le SDK enregistre automatiquement un événement d’exposition lorsqu’un Feature Flag est évalué. Ces événements contiennent des métadonnées sur le Feature Flag auquel il a été accédé, la variante qui a été servie et dans quel contexte : Ils sont envoyés à Datadog afin que vous puissiez analyser l’adoption des fonctionnalités.
Exigences relatives aux attributs de contexte
Les attributs du contexte d'évaluation doivent être des valeurs primitives plates (chaînes, nombres, booléens). Les objets et tableaux imbriqués ne sont pas pris en charge et seront supprimés du contexte d'évaluation.
Utilisez des attributs plats dans votre contexte d’évaluation :
// These attributes will be dropped from the evaluation context with a console warning.
OpenFeature.setContext({targetingKey:'user-123',user:{id:'user-123'},// nested object - NOT SUPPORTED
features:['beta','analytics']// array - NOT SUPPORTED
});
Tests
Vous pouvez effectuer des tests sur un environnement de test Datadog dédié avec le DatadogOpenFeatureProvider 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, qui est déjà installé pour React Native Feature Flags.
La structure des indicateurs du SDK Web nécessite variants, defaultVariant et disabled. Utilisez setProviderAndWait avant de rendre les composants afin que les hooks ne s’évaluent pas par rapport au fournisseur par défaut.
Dépannage
Aucun Feature Flag renvoyé
Si les évaluations de Feature Flags renvoient des valeurs par défaut :
Vérifiez que le SDK Datadog React Native est initialisé avant d’appeler DdFlags.enable().
Confirmez que DdFlags.enable() est terminé avant de définir le fournisseur OpenFeature.
Vérifiez que le contexte d’évaluation est défini avant d’évaluer les Feature Flags.
Confirmez que le Feature Flag existe et est activé dans votre dashboard Datadog Feature Flags.
Erreurs d’installation de pod iOS
Si use_frameworks! est activé dans votre Podfile, vous pourriez rencontrer des erreurs lors de pod install. Modifiez votre Podfile pour installer le pod du SDK en tant que bibliothèque statique :