Node Provider

Get Started

An OpenFeature Provider is a pluggable integration layer that connects the OpenFeature SDK to a specific feature flag management system (e.g., VWO or custom in-house solutions). OpenFeature is an open-source standard for feature flagging, designed to provide a vendor-agnostic approach, enabling organizations to switch between feature flagging tools without rewriting application code.

This VWO OpenFeature Provider for Node helps you integrate Feature Experimentation systems into your Node.js-based server applications.

GitHub Repo

Check this out

Published on NPM

Check this out

OpenFeature Ecosystem

Check this out

OpenFeature Docs

Check this out

🚧

Note

This library is intended to be used in server-side contexts and has not been evaluated for use on mobile devices.

Requirements

Node.js 12+

SDK Installation

# via npm

npm install vwo-openfeature-provider-node --save

# via yarn

yarn add vwo-openfeature-provider-node

Usage

const OpenFeature = require('@openfeature/server-sdk').OpenFeature;
const VWOProvider = require('vwo-openfeature-provider-node').VWOProvider;
const vwo = require('vwo-fme-node-sdk');

async function start() {
  const vwoClient = await vwo.init({
    sdkKey: '',
    accountId: ''
  });
  const context = {
    user: {
      id: 'unique-user-id',
    },
  };

  const provider = new VWOProvider(vwoClient);
  OpenFeature.setProvider(provider);

  const newClient = OpenFeature.getClient();
  newClient.setContext(context);

  console.log(
    'BOOLEAN',
    await newClient.getBooleanValue(
      'unique-feature-key',
      false,
      Object.assign({}, context, { key: 'boolean_variable' }),
    ),
  ); //pass 'key' if you want to fetch value of a specific variable. Otherwise it will return feature on/off
  console.log(
    'STRING',
    await newClient.getStringValue('unique-feature-key', '', Object.assign({}, context, { key: 'string-variable' })),
  ); //will return undefined without key
  console.log(
    'NUMERIC',
    await newClient.getNumberValue('unique-feature-key', 10, Object.assign({}, context, { key: 'number-variable' })),
  ); //will return undefined without key
  console.log(
    'FLOAT',
    await newClient.getNumberValue('unique-feature-key', 10.0, Object.assign({}, context, { key: 'float-variable' })),
  ); //will return undefined without key
  console.log(
    'JSON',
    await newClient.getObjectValue('unique-feature-key', {}, Object.assign({}, context, { key: 'json-variable' })),
  ); //pass 'key' if you want to fetch value of a specific variable of type JSON. Otherwise it will return all the variables.
}

start();

API Details

API

Arguments

Argument Description

API Description

new VWOProvider(vwoClient)

vwoClient (VWO SDK instance)

vwoClient: The initialized VWO SDK client instance.

Creates a new instance of VWOProvider, which integrates VWO with OpenFeature.

OpenFeature.setProvider(provider)

provider (Instance of VWOProvider)

provider: The VWO provider instance that will handle feature flag evaluations.

Sets the provider for OpenFeature, enabling it to evaluate feature flags using VWO.

client.setContext(context)

context: object

context: Contains user details (e.g., { user: { id: 'unique-user-id' } }).

Sets the evaluation context for feature flag evaluations, helping with user-based targeting.

client.getBooleanValue

featureKey: string,
defaultValue: boolean, context: object

featureKey: The unique key representing the feature flag.

defaultValue: The fallback boolean value if the flag evaluation fails.
context: The evaluation context containing user details and an optional key to fetch a specific variable.

Fetches the boolean value of a feature flag. If key is present in context, it retrieves a specific variable; otherwise, it returns whether the feature is enabled.

client.getStringValue

featureKey: string, defaultValue: string, context: object

featureKey: The unique key representing the feature flag.

defaultValue: The fallback string value if the flag evaluation fails.
context: The evaluation context with user details and optional key to fetch a specific variable.

Fetches the string value of a feature flag. Requires key in context to return a specific variable's value; otherwise, returns undefined.

client.getNumberValue

featureKey: string, defaultValue: number, context: object

featureKey: The unique key representing the feature flag.

defaultValue: The fallback numeric value if the flag evaluation fails.
context: The evaluation context with user details and optional key to fetch a specific variable.

Fetches the numeric value of a feature flag. Requires key in context to return a specific variable's value; otherwise, returns undefined.

client.getObjectValue

featureKey: string, defaultValue: object, context: object

featureKey: The unique key representing the feature flag.

defaultValue: The fallback JSON object if the flag evaluation fails.
context: The evaluation context with user details and optional key to fetch a specific variable.

Fetches the JSON object value of a feature flag. If key is provided in context, it retrieves a specific variable value; otherwise, it returns all JSON variables.