@featureflip/node-sdk
Node.js SDK for Featureflip - evaluate feature flags locally with near-zero latency. Built on top of @featureflip/sdk with Node.js-specific defaults.
Installation
npm install @featureflip/node-sdk
Quick Start
import { FeatureflipClient } from '@featureflip/node-sdk';
const client = await FeatureflipClient.create({
sdkKey: 'your-sdk-key',
});
const enabled = client.boolVariation('my-feature', { user_id: '123' }, false);
if (enabled) {
console.log('Feature is enabled!');
}
await client.close();
Configuration
const client = await FeatureflipClient.create({
sdkKey: 'your-sdk-key',
baseUrl: 'https://eval.featureflip.io',
streaming: true,
pollInterval: 30000,
flushInterval: 30000,
flushBatchSize: 100,
initTimeout: 10000,
maxStreamRetries: 5,
});
The SDK key can also be set via the FEATUREFLIP_SDK_KEY environment variable.
Evaluation
const context = { user_id: '123', email: 'user@example.com' };
const enabled = client.boolVariation('feature-key', context, false);
const tier = client.stringVariation('pricing-tier', context, 'free');
const limit = client.numberVariation('rate-limit', context, 100);
const config = client.jsonVariation('ui-config', context, { theme: 'light' });
Detailed Evaluation
const detail = client.variationDetail('feature-key', { user_id: '123' }, false);
console.log(detail.value);
console.log(detail.reason);
console.log(detail.ruleId);
Event Tracking
client.track('checkout-completed', { user_id: '123' }, { total: 99.99 });
client.identify({ user_id: '123', email: 'user@example.com', plan: 'pro' });
await client.flush();
Testing
Use forTesting() to create a client with predetermined flag values -- no network calls.
const client = FeatureflipClient.forTesting({
'my-feature': true,
'pricing-tier': 'pro',
});
client.boolVariation('my-feature', {}, false);
client.stringVariation('pricing-tier', {}, 'free');
Features
- Local evaluation - Near-zero latency after initialization
- Real-time updates - SSE streaming with automatic polling fallback
- Event tracking - Automatic batching and background flushing
- Test support -
forTesting() factory for deterministic unit tests
- TypeScript - Full type definitions included
- Node.js optimized - Uses native
http module for SSE and HTTP
Requirements
License
MIT