• Home
  • Integrations
  • SDKs
  • Guides
  • API docs
No results for ""
EXPAND ALL

EDIT ON GITHUB

Configuration

Read time: 5 minutes
Last edited: Jan 25, 2022

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.

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, but we strongly recommend against it. Many features such as targeting rules, flag statuses, and the Users dashboard depend on regularly receiving analytic events.

Details about each SDK's configuration are available in the SDK-specific sections below:

  • Client-side SDKs
  • Server-side SDKs

Client-side SDKs

This feature is available in the following client-side SDKs:

.NET (client-side)

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 = LaunchDarkly.Client.Configuration
.Builder("YOUR_SDK_KEY")
.EventFlushInterval(TimeSpan.FromSeconds(2))
.Build();
LdClient client = LdClient.Init(config, user);

To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.

Android

This code sample shows you how to configure the client connect and flush interval parameters:

LDConfig ldConfig = new LDConfig.Builder()
.mobileKey("YOUR_MOBILE_KEY")
.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)

This code sample shows you how to configure the event queue capacity and flush interval parameters:

struct LDConfig *config = LDConfigNew("YOUR_MOBILE_KEY");
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.

Flutter

This code sample shows you how to configure the client connect and flush interval parameters:

LDConfig ldConfig = LDConfigBuilder('YOUR_MOBILE_KEY')
.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

This code sample shows you how to configure the client connection timeout and event flush interval parameters:

LDConfig *ldConfig = [[LDConfig alloc] initWithMobileKey:@"YOUR_MOBILE_KEY"];
ldConfig.connectionTimeout = 10.0;
ldConfig.eventFlushInterval = 30.0;

To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.

JavaScript

This code sample shows you how to create a custom configuration object to pass custom parameters to the client:

var client = LDClient.initialize('YOUR_CLIENT_SIDE_ID', user, options = {
allAttributesPrivate: true
});

To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.

Node.js (client-side)

This code sample shows you how to create a custom configuration object to pass custom parameters to the client:

const options = {
flushInterval: 10000,
allAttributesPrivate: true
};
const client = LaunchDarkly.initialize('YOUR_CLIENT_SIDE_ID', user, options);

For a full guide to the available configuration options, read LDOptions in the TypeScript reference.

React Native

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": "YOUR_MOBILE_KEY",
"connectionTimeoutMillis": 3000
};
await client.configure(config, user);

To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.

Roku

This code sample shows you how to create a configuration object:

REM for a legacy Roku application
config = LaunchDarklyConfig("YOUR_MOBILE_KEY")
REM for a SceneGraph Roku Application
config = LaunchDarklyConfig("YOUR_MOBILE_KEY", 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)

This code sample shows you how to pass custom parameters to the client by creating a custom configuration object:

var config = Configuration.Builder("YOUR_SDK_KEY")
.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

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)

Finish setting up your configuration client before you call `LDClientInit`

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("YOUR_SDK_KEY");
LDConfigSetEventsCapacity(config, 1000);
LDConfigSetEventsFlushInterval(config, 30000);

For a complete list of configuration options, read the SDK's API docs.

Erlang

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("YOUR_SDK_KEY", #{stream => false})

% With a custom instance name
ldclient:start_instance("YOUR_SDK_KEY", my_instance, #{stream => false})

Go

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 "gopkg.in/launchdarkly/go-server-sdk.v5"
"gopkg.in/launchdarkly/go-server-sdk.v5/ldcomponents"
)
var config ld.Config
config.Events = ldcomponents.SendEvents().FlushInterval(10 * time.Second)
client := ld.MakeCustomClient("YOUR_SDK_KEY", config, 5 * time.Second)

To learn more about the configuration options, read Config.

Haskell

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.Config
import Data.Function ((&))
config :: Config
config = (makeConfig "YOUR_SDK_KEY")
& configSetEventsCapacity 1000
& configSetFlushIntervalSeconds 30

To learn more about the specific user properties that are available in this SDK, read the SDK's API docs.

Java

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("YOUR_SDK_KEY", 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 4.x version.

Lua

This code sample shows you how to pass custom parameters to the client by creating a custom configuration object.

Finish setting up your configuration client before you call `LDClientInit`

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 = YOUR_SDK_KEY,
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)

This code sample shows you how to pass custom parameters to the client by creating a custom configuration object:

var config = {"timeout": 3};
client = LaunchDarkly.init("YOUR_SDK_KEY", config);

To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.

PHP

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.

Sending events in PHP

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("YOUR_SDK_KEY", array("cache" => $cacheStorage, "connect_timeout" => 3));

For a complete list of customizable parameters, read the documentation for the LDClient constructor.

Python

This code sample shows you how to pass custom parameters to the client by creating a custom configuration object:

config = Config(sdk_key='YOUR_SDK_KEY', 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

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("YOUR_SDK_KEY", config)

To learn more about the specific configuration options that are available in this SDK, read the SDK's API docs.

Rust

This code sample shows you how to pass custom parameters to the client by creating a custom configuration object:

let config = ConfigBuilder::new("YOUR_SDK_KEY")
.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.