Configuration
Read time: 5 minutes
Last edited: Feb 27, 2023
Overview
This topic explains how to configure various LaunchDarkly SDKs. It gives code samples for each SDK that include different configuration examples. This feature is available for both client-side and server-side SDKs.
A context is a generalized way of referring to the people, services, machines, or other resources that encounter feature flags in your product. Contexts replace another data object in LaunchDarkly: "users." To learn more, read Contexts and segments.
Creating contexts and evaluating flags based on them is supported in the latest major versions of most of our SDKs. For these SDKs, the code samples on this page include the two most recent versions.
Customizing the SDK
You can use the configuration feature to configure certain aspects of your SDK, including flush intervals, timeout periods, and client connect parameters.
You can disable the publication of events for testing purposes. We strongly recommend against disabling events for any other reason because many features depend on regularly receiving analytics events, including targeting rules, flag statuses, and the Contexts or Users lists. To learn more, read Analytics events.
Details about each SDK's configuration are available in the SDK-specific sections below:
Client-side SDKs
This feature is available in the following client-side SDKs:
- .NET (client-side)
- Android
- C/C++ (client-side)
- Electron
- Flutter
- iOS
- JavaScript
- Node.js (client-side)
- React Native
- Roku
.NET (client-side)
Expand .NET (client-side) code sample
This code sample shows you how to create a custom configuration object to pass custom parameters to the client. With it, we've configured the event queue flush frequency.
You can configure Configuration.Builder
:
Configuration config = Configuration.Builder("mobile-key-123abc").Events(Components.SendEvents().FlushInterval(TimeSpan.FromSeconds(2))).Build();LdClient client = LdClient.Init(config, context);
To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.
Android
Expand Android code sample
This code sample shows you how to configure the client connect and flush interval parameters:
LDConfig ldConfig = new LDConfig.Builder().mobileKey("mobile-key-123abc").setConnectionTimeoutMillis(5000).setEventsFlushIntervalMillis(5000).build();
To learn more about the specific configuration options that are available in this SDK, read the Javadoc.
C/C++ (client-side)
Expand C/C++ (client-side) code sample
This code sample shows you how to configure the event queue capacity and flush interval parameters:
struct LDConfig *config = LDConfigNew("mobile-key-123abc");LDConfigSetEventsCapacity(config, 1000);LDConfigSetEventsFlushIntervalMillis(config, 30000);
To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.
Electron
Expand Electron code sample
This code sample shows you how to create a custom configuration object to pass custom parameters to the client:
const options = {allAttributesPrivate: true};const client = LDElectron.initializeInMain('client-side-id-123abc', user, options);
To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.
Flutter
Expand Flutter code sample
This code sample shows you how to configure the client connect and flush interval parameters:
LDConfig ldConfig = LDConfigBuilder('mobile-key-123abc').connectionTimeoutMillis(5000).eventsFlushIntervalMillis(5000).build();
To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.
iOS
Expand iOS code sample
This code sample shows you how to configure the client connection timeout and event flush interval parameters:
var ldConfig = LDConfig(mobileKey: "mobile-key-123abc")ldConfig.connectionTimeout = 10.0ldConfig.eventFlushInterval = 30.0
To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.
JavaScript
Expand JavaScript code sample
This code sample shows you how to create a custom configuration object to pass custom parameters to the client:
const options = { allAttributesPrivate: true };const client = LDClient.initialize('client-side-id-123abc', context, options);
To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.
Node.js (client-side)
Expand Node.js (client-side) code sample
This code sample shows you how to create a custom configuration object to pass custom parameters to the client:
const options = {flushInterval: 10000, // millisecondsallAttributesPrivate: true};const client = LDClient.initialize('client-side-id-123abc', context, options);
For a full guide to the available configuration options, read LDOptions
in the TypeScript reference.
React Native
Expand React Native code sample
This code sample shows you how to create a custom configuration object to pass custom parameters to the client.
The config
object can include a variety of options. mobileKey
is a required property, but all other properties are optional.
Here is an example:
let config = {mobileKey: 'mobile-key-123abc',connectionTimeout: 3000};await client.configure(config, context);
To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.
Roku
Expand Roku code sample
This code sample shows you how to create a configuration object:
REM for a legacy Roku applicationconfig = LaunchDarklyConfig("mobile-key-123abc")REM for a SceneGraph Roku Applicationconfig = LaunchDarklyConfig("mobile-key-123abc", CLIENT_SCENEGRAPH_NODE)
We support the following configuration options for both SceneGraph and non-SceneGraph usage:
config.setAppURI(String)config.setEventsURI(String)config.setStreamURI(String)config.setPollingIntervalSeconds(Integer)config.setOffline(Boolean)config.addPrivateAttribute(String)config.setAllAttributesPrivate(Boolean)config.setEventsCapacity(Integer)config.setEventsFlushIntervalSeconds(Integer)config.setStreaming(Boolean)
Server-side SDKs
This feature is available for the following server-side SDKs:
- .NET (server-side)
- Apex
- C/C++ (server-side)
- Erlang
- Go
- Haskell
- Java
- Lua
- Node.js (server-side)
- PHP
- Python
- Ruby
- Rust
.NET (server-side)
Expand .NET (server-side) code sample
This code sample shows you how to pass custom parameters to the client by creating a custom configuration object:
var config = Configuration.Builder("sdk-key-123abc").Events(Components.SendEvents().FlushInterval(TimeSpan.FromSeconds(2))).Build();var client = new LdClient(config);
For a complete list of configuration options for the client, including proxy settings, timeouts, and streaming/polling options, read the SDK's API documentation for ConfigurationBuilder
.
Apex
Expand Apex code sample
This code sample shows you how to configure the client to redact all user attributes in events:
LDConfig config = new LDConfig.Builder().setAllAttributesPrivate(true).build();
To learn more about the configuration options available for this SDK, read the SDK's API docs.
C/C++ (server-side)
Expand C/C++ (server-side) code sample
You must finish setting up your configuration object before you call LDClientInit
. If you initialize the client before configuration is complete, the SDK will not use anything you provide after initialization.
This code sample shows you how to configure the event queue capacity and flush interval parameters:
struct LDConfig *config = LDConfigNew("sdk-key-123abc");LDConfigSetEventsCapacity(config, 1000);LDConfigSetEventsFlushInterval(config, 30000);
For a complete list of configuration options, read the SDK's API docs.
Erlang
Expand Erlang code sample
This code sample shows you how to pass custom parameters when the client starts with the Options
map parameter. The code in this example turns off streaming, so the SDK connects to LaunchDarkly through polling.
To pass custom parameters:
% Specify options
ldclient:start_instance("sdk-key-123abc", #{stream => false})
% With a custom instance name
ldclient:start_instance("sdk-key-123abc", your_instance, #{stream => false})
Go
Expand Go code sample
This code sample shows you how to pass custom parameters to the client by creating a custom configuration object. The code in this sample configures the event flush interval parameter.
To pass custom parameters:
import (ld "github.com/launchdarkly/go-server-sdk/v6""github.com/launchdarkly/go-server-sdk/v6/ldcomponents")var config ld.Configconfig.Events = ldcomponents.SendEvents().FlushInterval(10 * time.Second)client := ld.MakeCustomClient("sdk-key-123abc", config, 5 * time.Second)
To learn more about the configuration options, read Config
.
Haskell
Expand Haskell code sample
This code sample shows you how to pass custom parameters to the client by creating a custom configuration object. This example configures the event queue capacity and flush interval parameters.
To pass custom parameters:
{-# LANGUAGE OverloadedStrings #-}import LaunchDarkly.Server.Configimport Data.Function ((&))config :: Configconfig = (makeConfig "sdk-key-123abc")& configSetEventsCapacity 1000& configSetFlushIntervalSeconds 30
To learn more about the specific configuration properties that are available in this SDK, read the SDK's API docs.
Java
Expand Java code sample
This code sample shows you how to pass custom parameters to the client by creating a custom configuration object.
In this example, we've configured two properties for HTTP (the connect and socket timeouts), and one property for analytics events (the event flush interval).
To pass custom parameters:
LDConfig config = new LDConfig.Builder().http(Components.httpConfiguration().connectTimeout(Duration.ofSeconds(3)).socketTimeout(Duration.ofSeconds(3))).events(Components.sendEvents().flushInterval(Duration.ofSeconds(10))).build();LDClient client = new LDClient("sdk-key-123abc", config);
For a complete list of configuration options for the client, including proxy settings, timeouts, and streaming/polling options, read the Javadoc for LDConfig.Builder. You can also read the 5.x version.
Lua
Expand Lua code sample
This code sample shows you how to pass custom parameters to the client by creating a custom configuration object.
You must finish setting up your configuration object before you call LDClientInit
. If you initialize the client before configuration is complete, the SDK will not use anything you provide after initialization.
Here, we've configured the event queue capacity and flush interval parameters:
local config = {key = sdk-key-123abc,eventsCapacity = 1000,eventsFlushInterval = 30000}local client = ld.clientInit(config, 1000)
To learn more about configuration options, read the SDK's API docs.
Node.js (server-side)
Expand Node.js (server-side) code sample
This code sample shows you how to pass custom parameters to the client by creating a custom configuration object:
const options = {timeout: 3};client = ld.init('sdk-key-123abc', options);
To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.
PHP
Expand PHP code sample
This code sample uses the cache
option, which passes as an array to the client constructor. There are a few additional options you can set in this array.
We've set the client connect timeout to three seconds in addition to providing a custom cache storage provider.
The LaunchDarkly SDK sends data back to our server to record events from track and variation calls. On our other platforms, this data is sent asynchronously, so that it adds no latency to serving web pages. PHP's shared-nothing architecture makes this difficult.
By default, LaunchDarkly forks an external process that executes curl
to send this data. In practice, we've found that this is the most reliable way to send data without introducing latency to page load times. If your server does not have curl
installed, or has other restrictions that make it impossible to invoke curl
as an external process, you may need to implement a custom EventProcessor
to send events to LaunchDarkly.
Here is an example:
$client = new LaunchDarkly\LDClient("sdk-key-123abc", array("cache" => $cacheStorage, "connect_timeout" => 3));
For a complete list of customizable parameters, read the documentation for the LDClient constructor.
Python
Expand Python code sample
This code sample shows you how to pass custom parameters to the client by creating a custom configuration object:
config = Config(sdk_key='sdk-key-123abc', http=HTTPConfig(connect_timeout=5))ldclient.set_config(config)
The Config
type lets you specify a variety of options. To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.
Ruby
Expand Ruby code sample
This code sample shows you how to configure the behavior of the client by creating a custom configuration object.
The client constructor takes a configuration object as an optional parameter. In this example, we've set the connection timeout to LaunchDarkly to one second, and the read timeout to two seconds.
To create a custom configuration object:
config = LaunchDarkly::Config.new({connect_timeout: 1, read_timeout: 1})client = LaunchDarkly::LDClient.new("sdk-key-123abc", config)
To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.
Rust
Expand Rust code sample
This code sample shows you how to pass custom parameters to the client by creating a custom configuration object:
let config = ConfigBuilder::new("sdk-key-123abc").offline(true).build();let client = Client::build(config).unwrap();
The Config
type lets you specify a variety of options. To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.