No results for ""
EXPAND ALL
  • Home
  • API docs

.NET SDK reference (client-side)

Read time: 6 minutes
Last edited: Oct 30, 2024
Recent major versions

Version 5 of the .NET (client-side) SDK introduces support for .NET 7 and MAUI, and drops support for Xamarin. To learn more about upgrading, read .NET (client-side) SDK 4.x to 5.0 migration guide.


Version 4 of the .NET (client-side) SDK introduces optional automatic collection of environment attributes. To learn more about upgrading, read .NET (client-side) SDK 3.x to 4.0 migration guide.


Version 3 of the .NET (client-side) SDK replaces users with contexts. A context is a generalized way of referring to the people, services, machines, or other resources that encounter feature flags in your product. To learn more about upgrading, read .NET (client-side) SDK 2.x to 3.0 migration guide and Best practices for upgrading users to contexts.

Overview

This topic documents how to get started with the client-side .NET SDK, and links to reference information on all of the supported features.

SDK quick links

LaunchDarkly's SDKs are open source. In addition to this reference guide, we provide source, API reference documentation, and sample applications:

ResourceLocation
SDK API documentationSDK API docs
GitHub repository.NET (client-side) SDK
Sample applications.NET (client-side)
Published moduleNuGet
For use in mobile, desktop, and embedded client applications only

This SDK is intended for use in single-user mobile, desktop, and embedded applications. If you have a .NET application and want to set up LaunchDarkly on the server-side, read the server-side .NET SDK reference.

To learn more about LaunchDarkly's different SDK types, read Client-side, server-side, and edge SDKs.

Get started

After you complete the Get started process, follow these instructions to start using the LaunchDarkly SDK in your application:

  • Understand version compatibility
  • Install the SDK
  • Initialize the client
  • Evaluate a flag

Understand version compatibility

Starting with version 5, the .NET (client-side) SDK supports Microsoft's .NET 7 and MAUI.

The LaunchDarkly .NET (client-side) SDK is compatible with Android version 5.0 and higher and with iOS version 11.0 and higher. It is also compatible with any other platform that supports .NET Standard version 2.0 or higher, although the .NET Standard version lacks some mobile-specific features such as detecting network connectivity.

If you use Xamarin, you cannot use version 5 of the LaunchDarkly .NET (client-side) SDK. You must migrate to MAUI to continue using the LaunchDarkly SDK. To learn more about migrating, read Microsoft's documentation on how to Upgrade from Xamarin to .NET.

Install the SDK

To start using the client-side .NET SDK:

Next, import the LaunchDarkly packages in your application code:

Initialize the client

After you install the dependency, initialize the LaunchDarkly client by creating a single, shared instance of LdClient. To create a client instance, you need your environment's mobile key. This authorizes your application to connect to a particular environment within LaunchDarkly.

The .NET (client-side) SDK uses a mobile key

The .NET (client-side) SDK uses a mobile key. Keys are specific to each project and environment. They are available from the Environments list for each project. To learn more about key types, read Keys.


Mobile keys are not secret and you can expose them in your client-side code without risk. However, never embed a server-side SDK key into a client-side application.

We recommend calling the client initialization method with a timeout of 0-5 seconds. This means your application blocks for a short period of time, until the SDK retrieves the latest feature flags from LaunchDarkly. We recommend that you do not set the timeout parameter for more than five seconds.

Here's how:

You can also initialize the SDK asynchronously. As with the Init method, we recommend that you do not set the timeout parameter for more than five seconds.

Older versions of the SDK allow you to initialize the SDK asynchronously without a timeout option. We do not recommend this because initializing without a timeout option will cause your app never to load if there is a connectivity problem.

To initialize asynchronously:

For a complete list of the specific LdClient configuration options available in this SDK, read Configuration.

LdClient must be a singleton

It's important to make LdClient a singleton for each LaunchDarkly project. The client instance maintains internal state that allows LaunchDarkly to serve feature flags without making any remote requests. Do not instantiate a new client with every request.

If you have multiple LaunchDarkly projects, you can create one LDClient for each. In this situation, the clients operate independently. For example, they do not share a single connection to LaunchDarkly.

Android requires AccessNetworkState permission

Android requires the AccessNetworkState permission and you must configure it in the Android project. To learn more about how to implement this requirement, read Microsoft's MAUI Connectivity documentation.

Evaluate a flag

After you create the client, you can use it to check which variation a particular context will receive for a given feature flag.

Here's how:

Making feature flags available to this SDK

You must make feature flags available to mobile SDKs before the SDK can evaluate those flags. If an SDK tries to evaluate a feature flag that is not available, the context will receive the fallback value for that flag.

To make a flag available to this SDK, check the SDKs using Mobile key checkbox during flag creation, or on the flag's settings page. To make all of a project's flags available to this SDK by default, check the SDKs using Mobile key checkbox on your project's Flag settings page.

Using the Relay Proxy

You can configure the client-side .NET SDK to connect to the Relay Proxy as follows:

Shut down the client

Shut down the client when your application terminates. To learn more, read Shutting down.

Data collection

To learn more about data collection within this SDK and implications on submissions to the Apple App Store, read the Apple App Store data collection policy.

Supported features

This SDK supports the following features: