Evaluate Loglune feature flags with @loglune/sdk
@loglune/sdk is the evaluation client for Loglune: send an evaluation context, get back every feature flag's result (or one flag's) and the evaluation record a bug report carries. The Loglune server evaluates; the package sends the request and returns the server's answer.
Install
The SDK requires Node.js 22 or later, or any runtime with a global fetch.
npm install @loglune/sdkEvaluate flags for a user
Mint an SDK key under SDK keys at /app/author, then create a client with it.
import { createLogluneClient } from '@loglune/sdk';
const loglune = createLogluneClient({ sdkKey: process.env.LOGLUNE_SDK_KEY });
const { result, record } = await loglune.evaluateOne('new-checkout', {
key: userId,
attributes: { plan: 'pro' }
});| Option | Required | Meaning |
|---|---|---|
sdkKey | yes | the SDK key |
version | no | a published version to evaluate (replay); absent evaluates the current version |
baseUrl | no | the Loglune origin (default https://loglune.com) |
fetch | no | a fetch implementation (default the global fetch) |
| Call | Returns |
|---|---|
evaluateAll(context) | { results, record }, one result per flag |
evaluateOne(flagKey, context) | { result, record }; result.reason.kind is flagNotFound when the version lacks the flag |
Attach record to a bug report. The record holds the version, an opaque context key (never the raw key), the results, the instant and the attribute names (never their values).
Errors
A refusal throws LogluneError with the fields of the server's answer: status, error, reason, hint (what to do next), retryAfter and issues (the fields to fix). A network failure throws the fetch error.
Use Loglune as an OpenFeature provider
import { OpenFeature } from '@openfeature/server-sdk';
import { createLogluneClient } from '@loglune/sdk';
import { createLogluneProvider } from '@loglune/sdk/openfeature';
await OpenFeature.setProviderAndWait(
createLogluneProvider({ client: createLogluneClient({ sdkKey: process.env.LOGLUNE_SDK_KEY }) })
);@openfeature/server-sdk is an optional peer dependency of @loglune/sdk; install it only to use the @loglune/sdk/openfeature entry.
Replay a past flag state in CI
import { runReplayRegression } from '@loglune/sdk/ci-replay';
const report = await runReplayRegression(
{ sdkKey: process.env.LOGLUNE_SDK_KEY, version: 42, at: '2026-08-22T14:07:00Z' },
[{ context: { key: 'user-1', attributes: { plan: 'pro' } }, expect: { 'new-checkout': 'on' } }]
);
if (!report.ok) process.exit(1);runReplayRegression evaluates each case against the pinned version at at, unless the case sets evaluatedAt. report.ok is false when any flag resolved to another variation or is missing, and the example then exits with code 1 to fail the CI step.