Browser-specific bindings for OpenFeature (wraps @datadog/openfeature-core)
npm install @datadog/openfeature-browserWe do not recommend pinning to an exact _preview_ version:
Use the preview tag for the latest preview version:
``bash`
npm install @datadog/openfeature-browser@preview
This will install the latest _preview_ version.
You can also install a specific _preview_ version:
`bash`
npm install @datadog/openfeature-browser@0.1.0-preview.x
The main entry point is DatadogProvider, which is a provider for the OpenFeature Web SDK.
`javascript
import { DatadogProvider } from '@datadog/openfeature-browser'
import { OpenFeature } from '@openfeature/web-sdk'
// Initialize the provider
const provider = new DatadogProvider({
clientToken: 'your-datadog-client-token',
enableExposureLogging: true,
enableFlagEvaluationTracking: true,
site: 'datadoghq.com',
})
// Set the provider
await OpenFeature.setProvider(provider)
// Get a client and evaluate flags
const client = OpenFeature.getClient()
const flagValue = await client.getBooleanValue('my-flag', false)
`
`javascript
const provider = new DatadogProvider({
// Required
clientToken: 'pub_...', // Your Datadog client token
site: 'datadoghq.com', // Datadog site (datadoghq.com, datadoghq.eu, etc.)
env: 'production', // Environment
// Optional Datadog configuration
service: 'my-service', // Service name
version: '1.0.0', // Application version
applicationId: 'app-id', // Your application ID for RUM attribution
// Enable exposure logging
enableExposureLogging: true,
// Enable flag evaluation tracking
enableFlagEvaluationTracking: true,
})
`
`javascript
const client = OpenFeature.getClient()
// Boolean flags
const showFeature = await client.getBooleanValue('show-new-feature', false)
// String flags
const theme = await client.getStringValue('app-theme', 'light')
// Number flags
const timeout = await client.getNumberValue('request-timeout', 5000)
// Object flags
const config = await client.getObjectValue('feature-config', {})
`
Context must be set globally before flag evaluation and affects all subsequent evaluations:
`javascript
// Set global context (async operation)
await OpenFeature.setContext({
targetingKey: 'user-123',
user: { id: 'user-123', email: 'user@example.com' },
})
// Now evaluate flags with the context
const result = await client.getBooleanDetails('premium-feature', false)
console.log(result.value) // Flag value
console.log(result.reason) // Evaluation reason
``
https://www.datadoghq.com/legal/eula