Skip to content

Releases: launchdarkly/dotnet-core

LaunchDarkly-ServerSdk-8.11.0-beta.1

19 Dec 21:44

Choose a tag to compare

Pre-release

This release contains support for our second generation flag delivery protocol, also known as data-saving mode.

It is available via nuget: https://www.nuget.org/packages/LaunchDarkly.ServerSdk/8.11.0-beta.1

This SDK version will operate using our first generation flag delivery protocol unless configured specifcally to use our new protocol.

In the SDK support for the new protocol is defined by a DataSystem. Configuring a DataSystem will enable the use of the new protocol.

The DataSystem includes a more sophisticated configuration for initializers, which are a means of getting an initial SDK payload, and synchronizers which keep the SDK up to date.

Configuration

There are a number of pre-defined configurations available for the data system depending on the SDK deployment.

Default

This is the LaunchDarkly recommended default setting for the data system. This configuration uses a two-phase strategy for initialization (getting you) as well as including fallbacks for synchronization.

The SDK will attempt to get an initial payload by making a single poll to our polling endpoints, and then will keep that payload up to date via streaming. If that initial polling process fails, then the SDK can still initialize via streaming once it enters its synchronization phase. Similarly, in the synchronization phase, the SDK can fallback to polling if it experiences issues with streaming.

var config = Configuration.Builder("your-sdk-key")
    .DataSystem(Components.DataSystem().Default())
    .Build();

Polling Only or Streaming Only

The SDK can be configured to only use polling, or only use streaming. This isn't the recommended mode, and in this mode there are not as many fallbacks available.

Polling:

var config = Configuration.Builder(Environment.GetEnvironmentVariable("LAUNCHDARKLY_SDK_KEY"))
    .DataSystem(Components.DataSystem().Polling())
    .Build();

Streaming:

var config = Configuration.Builder(Environment.GetEnvironmentVariable("LAUNCHDARKLY_SDK_KEY"))
    .DataSystem(Components.DataSystem().Streaming())
    .Build();

Note that in streaming only mode polling may still be used if we need to disable our second generation protocol. In this case the data system will receive a request to fallback to our v1 protocol and it will use polling to do so.

With a Persistent Store

When configured with a persistent store the SDK uses the same strategy for initialization and synchronization as Default, but with the addition of a persistent store.

If flags are evaluated before the SDK has finished initializing, then cached values can be used from the store. Once the SDK initialization process completes flags are kept up to date in a memory cache, and persisted into the store. Flags are always maintained in memory after initialization, versus our previous implementation which used a TTL on each item.

When using a persistent store you will need to use our persistence integrations.

Using a redis persistent store:

var config = Configuration.Builder(Environment.GetEnvironmentVariable("LAUNCHDARKLY_SDK_KEY"))
    .DataSystem(Components.DataSystem().PersistentStore(Components.PersistentDataStore(Redis.DataStore())))
    .Build();

Daemon Mode

When using daemon mode the SDK doesn't request a flag payload from LaunchDarkly. Instead it depends on flags being written to a persistent store instance by the relay proxy.

In this mode configuration is read from a store as needed and cached in memory with a TTL. The TTL determines how fresh the data for any given item will be.

Using a redis persistent store:

var config = Configuration.Builder(Environment.GetEnvironmentVariable("LAUNCHDARKLY_SDK_KEY"))
    .DataSystem(Components.DataSystem().Daemon(Components.PersistentDataStore(Redis.DataStore())))
    .Build();

Known Issues

  • When a persistent store experiences an outage while the SDK is attempting to write to it, then when that store later recovers it may not be updated to the current state. The in-memory state of the SDK will still contain all updates it has received.

LaunchDarkly.ServerSdk: v8.10.4

10 Nov 21:02
21cfe9f

Choose a tag to compare

8.10.4 (2025-11-10)

Bug Fixes

  • Use thread-safe hash for big segments hashing. (#180) (06196d8)

This PR was generated with Release Please. See documentation.

LaunchDarkly.ServerSdk.DynamoDB: v5.0.0

22 Oct 14:09
d5a0d86

Choose a tag to compare

5.0.0 (2025-10-22)

⚠ BREAKING CHANGES

  • Drop support for AWSSDK.DynamoDB v3 (#173)

Features


This PR was generated with Release Please. See documentation.

LaunchDarkly.ServerSdk.DynamoDB: v4.0.2

22 Oct 00:06
37bda9e

Choose a tag to compare

4.0.2 (2025-10-21)

Bug Fixes


This PR was generated with Release Please. See documentation.

LaunchDarkly.ServerSdk.DynamoDb: v4.0.1

21 Oct 20:35
6f09504

Choose a tag to compare

4.0.1 (2025-10-21)

Bug Fixes

  • Prevent using incompatible AWS version (#171) (5496a64)

This PR was generated with Release Please. See documentation.

LaunchDarkly.ServerSdk.Telemetry: v1.4.0

07 Oct 15:47
d07ebd5

Choose a tag to compare

1.4.0 (2025-10-06)

Features

  • add all available attributes to a span (#167) (7350aac)

This PR was generated with Release Please. See documentation.

LaunchDarkly.ServerSdk: v8.10.3

29 Sep 15:50
e2ed7ac

Choose a tag to compare

8.10.3 (2025-09-29)

Bug Fixes

LaunchDarkly.ClientSdk: v5.5.4

29 Sep 16:28
902ac71

Choose a tag to compare

5.5.4 (2025-09-29)

Bug Fixes


This PR was generated with Release Please. See documentation.

LaunchDarkly.CommonSdk: v7.1.1

26 Sep 22:05
696303e

Choose a tag to compare

7.1.1 (2025-09-26)

Bug Fixes

  • Add validation format check for SDK key (#163) (02c6ed7)

LaunchDarkly.ServerSdk: v8.10.2

25 Sep 17:25
c5528d3

Choose a tag to compare

8.10.2 (2025-09-25)

Bug Fixes