OpenFeature provider for Node.js (server-side) SDK
Read time: 3 minutes
Last edited: Aug 26, 2024
Overview
This topic documents how to get started with the LaunchDarkly OpenFeature provider for the Node.js (server-side) SDK.
LaunchDarkly's OpenFeature providers are open source. In addition to this reference guide, we provide source, API reference documentation, and a sample application:
Resource | Location |
---|---|
OpenFeature Provider API documentation | Provider API docs |
GitHub repository | openfeature-dotnet-server |
Sample application | Sample OpenFeature Node.js (server-side) provider application |
Published module | npm |
Get started
The LaunchDarkly OpenFeature provider for the Node.js (server-side) SDK is intended for use in multi-user systems such as web servers and application. It is not intended for use in desktop and embedded systems applications.
Follow these instructions to start using the LaunchDarkly OpenFeature provider for the Node.js (server-side) SDK in your application.
Version compatibility
The LaunchDarkly OpenFeature provider for the Node.js (server-side) SDK is compatible with the OpenFeature Node.js SDK v1.x.
The provider is compatible with Node.js 18 and above.
Install the provider
First, install the LaunchDarkly and OpenFeature packages:
npm install @openfeature/server-sdknpm install @launchdarkly/node-server-sdknpm install @launchdarkly/openfeature-node-server
Next, import the OpenFeature and LaunchDarkly namespaces in your application code:
import { OpenFeature } from '@openfeature/server-sdk';import { LaunchDarklyProvider } from '@launchdarkly/openfeature-node-server';
Initialize the provider
After you install and import the provider, create a single, shared instance of LaunchDarklyProvider
. Specify your SDK key here to authorize your application to connect to a particular environment within LaunchDarkly.
Here's how:
await OpenFeature.setProviderAndWait(new LaunchDarklyProvider("sdk-key-123abc"));const client = OpenFeature.getClient();
The LaunchDarkly Node.js (server-side) provider uses an SDK 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.
Construct a context
A context is a generalized way of referring to the people, services, machines, or other resources that encounter feature flags in your product. The OpenFeature specification calls these evaluation contexts.
In the LaunchDarkly provider, contexts:
- always have a particular context kind. If you do not specify a kind, the provider treats the context as having a "user" kind. To specify a different kind, including a multi-context, you must include a
kind
attribute. - must have a targeting key. This is optional in the OpenFeature specification, but LaunchDarkly requires a key for evaluation. You can specify this using
targetingKey
, as in the OpenFeature specification, orkey
, which is the typical LaunchDarkly identifier for the targeting key.
Here are examples of a context:
const context = {targetingKey: "user-key-123abc", // Could also use "key" instead of "targetingKey".};
For additional examples, read OpenFeature specific considerations in the provider GitHub repository.
Evaluate a context
To evaluate feature flags for a context, use the OpenFeature Evaluation API. For example:
const flagValue = await client.getBooleanValue("flag-key-123abc", false, context);
Access the LaunchDarkly client
You may need access to the LDClient
from within the LaunchDarkly Node.js (server-side) SDK if you are working on use cases not supported by OpenFeature, such as migration flags or sending custom events.
To access the LDClient
, use getClient()
:
const ldClient = provider.getClient();