Este producto no es compatible con el sitio Datadog seleccionado. ().
Descripción general
Esta página describe cómo instrumentar su aplicación de React con el SDK de Feature Flags de Datadog. Las Feature Flags de Datadog proporcionan una forma unificada de controlar de forma remota la disponibilidad de funciones en su aplicación, experimentar de forma segura y ofrecer nuevas experiencias con confianza.
El SDK de Feature Flags de Datadog para React está construido sobre OpenFeature, un estándar abierto para la gestión de Feature Flags. Esta guía explica cómo instalar el SDK, configurar el proveedor de Datadog y evaluar Feature Flags en sus componentes de React.
Instalación
Instale el proveedor de OpenFeature de Datadog y el SDK de React de OpenFeature utilizando su gestor de paquetes preferido:
Cree una instancia de DatadogProvider y regístrela con OpenFeature. Haga esto lo antes posible en su aplicación, antes de renderizar sus componentes de React. Para la configuración en vivo de los Browser Feature Flags, se requieren applicationId, clientToken, site y env. Para crear un token de cliente, consulte Client tokens.
Los Browser Feature Flags no son compatibles con el Datadog site seleccionado ().
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>',});
Establezca el contexto de evaluación
Defina a quién o a qué se aplica la evaluación de las Feature Flags mediante un contexto de evaluación. El contexto de evaluación incluye información del usuario o de la sesión utilizada para determinar qué variaciones de las Feature Flags deben devolverse. Haga referencia a estos atributos en sus reglas de segmentación para controlar quién ve cada variante.
Datadog Feature Flags requiere que los atributos del contexto de evaluación sean valores primitivos planos: cadenas, números y booleanos. No pase objetos o arreglos anidados; no son compatibles y pueden provocar que se pierdan los datos de exposición.
Establezca el proveedor junto con el contexto de evaluación:
El targetingKey se utiliza como sujeto de aleatorización para la segmentación basada en porcentajes. Cuando un Feature Flag segmenta un porcentaje de sujetos (por ejemplo, 50%), el targetingKey determina en qué bucket cae un usuario. Los usuarios con el mismo targetingKey siempre reciben la misma variante para un Feature Flag determinado.
Envuelva su aplicación
Envuelva su aplicación con el componente OpenFeatureProvider. Esto hace que Feature Flags estén disponibles para todos los componentes secundarios a través del contexto de React.
El SDK de React de OpenFeature proporciona hooks para evaluar Feature Flags dentro de sus componentes. Cada hook devuelve el valor de Feature Flags según el contexto de evaluación que configuró.
Feature Flags booleanos
Utilice useBooleanFlagValue(key, defaultValue) para Feature Flags que representen condiciones de encendido/apagado o verdadero/falso:
El soporte integrado para suspense le permite evitar mostrar componentes con Feature Flags hasta que se complete la inicialización del proveedor, o cuando el contexto cambia. Pase { suspend: true } en las opciones del hook para usar esta funcionalidad.
Por ejemplo:
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>)}</>);}
Detalles de evaluación de marcadores
Cuando necesite más que solo el valor de Feature Flags, use los hooks de detalle. Estos devuelven tanto el valor evaluado como los metadatos que explican la evaluación:
useBooleanFlagDetails(key, defaultValue)
useStringFlagDetails(key, defaultValue)
useNumberFlagDetails(key, defaultValue)
useObjectFlagDetails(key, defaultValue)
Por ejemplo:
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}/>;}
Los detalles del marcador le ayudan a depurar el comportamiento de evaluación y a entender por qué un usuario recibió un valor determinado.
Ejemplo completo
Aquí tiene un ejemplo completo que muestra cómo configurar y usar Feature Flags de Datadog en una aplicación de 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>);}
Actualizar el contexto de evaluación
Para actualizar el contexto de evaluación después de la inicialización (por ejemplo, cuando un usuario inicia sesión), use OpenFeature.setContext():
// When a user logs in
awaitOpenFeature.setContext({targetingKey:user.id,user_id:user.id,email:user.email,plan:user.plan,});
Configurar las opciones del proveedor del navegador
El proveedor de React utiliza el proveedor de navegador de Datadog, que también admite estos ajustes opcionales:
Opción
Predeterminado
Uso
enableExposureLogging
true
Enviar eventos de exposición a la ingesta de exposiciones.
enableFlagEvaluationTracking
true
Enviar telemetría de evaluación agregada.
enableRumFeatureFlagTracking
true
Agregar evaluaciones de Feature Flags a los eventos de RUM cuando Browser RUM esté disponible. Habilitar esta opción puede aumentar el conteo de eventos facturados de RUM.
flagEvaluationTrackingInterval
10000 ms
Intervalo de vaciado para la telemetría de evaluación.
initialFlagsConfiguration
unset
Proporcione datos precalculados que coincidan con el contexto como alternativa si la obtención falla. Consulte Initial precomputed fallback data.
flaggingProxy
unset
Obtener Feature Flags a través de un proxy en lugar de site.
customHeaders
unset
Agregar encabezados a las solicitudes de obtención de Feature Flags.
overwriteRequestHeaders
false
Reemplazar los encabezados de solicitud predeterminados con customHeaders.
DatadogProvider sigue siendo el proveedor de navegador recomendado para aplicaciones de React. Para la entrega de configuración propiedad de la aplicación o la evaluación de reglas locales a través de cambios de contexto, consulte Evaluación basada en reglas del navegador. Esta configuración avanzada requiere una actualización explícita de la configuración y la gestión del ciclo de vida del seguimiento.
Pruebas
Puede realizar pruebas en un entorno de prueba de Datadog dedicado con el DatadogProvider real, o cambiarlo por el TypedInMemoryProvider de OpenFeature para controlar los valores de las Feature Flags directamente en el código de prueba. Esta sección muestra el enfoque en memoria, que mantiene las pruebas herméticas y sin conexión. TypedInMemoryProvider se exporta desde @openfeature/web-sdk; instálelo como una dependencia de desarrollo y regístrelo antes de renderizar los componentes bajo prueba:
La estructura de Feature Flags del Web SDK requiere variants, defaultVariant y disabled. Utilice setProviderAndWait (no setProvider) para evitar condiciones de carrera de suspense cuando el código de prueba renderice de inmediato los componentes controlados por Feature Flags. Para pruebas de componentes que montan un árbol de React, @openfeature/react-sdk también exporta un componente OpenFeatureTestProvider que envuelve a los hijos con un proveedor en memoria; consulte la documentación del SDK de React de OpenFeature para obtener más detalles.
Lecturas adicionales
Documentación, enlaces y artículos útiles adicionales: