Datadog Feature Flags for server-side applications allow you to remotely control feature availability, run experiments, and roll out new functionality with confidence. Server-side SDKs integrate with the Datadog APM tracer and use Remote Configuration to receive flag updates in real time.
This guide covers the common setup required for all server-side SDKs, including Agent configuration and application environment variables. Select your language or framework to view SDK-specific setup instructions:
Prerequisites
Before setting up server-side feature flags, ensure you have:
Datadog Agent 7.55 or later installed and running
Datadog API key configured
APM tracing enabled in your application
Agent configuration
Server-side feature flags use Remote Configuration to deliver flag configurations to your application. Enable Remote Configuration in your Datadog Agent by setting DD_REMOTE_CONFIGURATION_ENABLED=true or adding remote_configuration.enabled: true to your datadog.yaml.
The Agent polls Datadog for configuration updates at a configurable interval. This interval determines the average time between making a flag change in the UI and the change becoming available to your application.
Configure your application with the standard Datadog environment variables. These are common across all server-side SDKs:
# Required: Service identificationDD_SERVICE=<YOUR_SERVICE_NAME>
DD_ENV=<YOUR_ENVIRONMENT>
DD_VERSION=<YOUR_APP_VERSION>
# Agent connection (if not using default localhost:8126)DD_AGENT_HOST=localhost
DD_TRACE_AGENT_PORT=8126# Enable Remote Configuration in the tracerDD_REMOTE_CONFIG_ENABLED=true
Some SDKs require additional experimental flags to enable feature flagging. See the SDK-specific documentation for details.
Context attribute requirements
Evaluation context attributes must be flat primitive values (strings, numbers, booleans). Nested objects and arrays are not supported and will cause exposure events to be silently dropped.
// These attributes will cause exposure events to be dropped
constevaluationContext={targetingKey:req.session?.userID,company:{id:req.session?.companyID},// nested object - NOT SUPPORTED
roles:['admin','user']// array - NOT SUPPORTED
};
Further reading
Additional helpful documentation, links, and articles: