feature toggle client for node

Usage no npm install needed!

<script type="module">
  import hobknobClientNodejs from 'https://cdn.skypack.dev/hobknob-client-nodejs';



A node client to retrieve feature toggles stored in Etcd.

Build Status



npm install hobknob-client-nodejs


var Client = require('hobknob-client-nodejs');

var client = new Client("application-name", {
    etcdHost: "",
    etcdPort: 4001,
    cacheIntervalMs: 60000

client.on("error", function(err) {

client.on("updated-cache", function(togglesChanged){
    console.log('updated-cache' + JSON.stringify(togglesChanged)); // contains an array of toggles that changed in the last update

client.initialise(function(err) {

        throw err;

    console.log(client.getOrDefault("toggle2", true));

Important Note

The "error" event must be subscribed to, otherwise errors will cause the application to exit

client.on("error", function(err) { });


Feature toggles are stored in Etcd using the following convention: http://host:port/v2/keys/v1/toggles/applicationName/toggleName


Client(applicationName, [config])

Creates a new feature toggle client

var Client = require("hobknob-client-nodejs");
var client = new Client("application-name", { etcdHost: "" });
  • applicationName the name of the application used to find feature toggles
  • config (optional)
    • etcdHost (default: "")
    • etcdPort (default: 4001)
    • cacheIntervalMs interval for the cache update, which loads all the applications toggles into memory (default: 60000)

.on(eventName, callback)

Subscribes to events emitted by the client.

  • eventName - name of the event to listen to (see below for possible event names)
  • callback - callback that is called with different arguments per event when the event is fired (see below for event callbacks)


  • error - function(err){ }` // required, will return a javascript error object
  • updated-cache - function(togglesChanged){ }` // optional, will return a list of toggles that changed in the last update


client.on('updated-cache', function(toggles){

// output
  { name: 'mytoggle', old: false, new: true },

.getOrDefault(toggleName, [secondaryKey], defaultValue)

Gets the value of a feature toggle (true or false) if exists, otherwise return the default value (true or false)

var isFeatureToggle1Enabled = client.getOrDefault('featureToggle1', false);
  • toggleName - the name of the toggle, used with the application name to get the feature toggle value
  • secondaryKey - [optional] used when accessing a multi feature-toggle (e.g. client.getOrDefault('domainFeature', 'com', false))
  • defaultValue - the value to return if the toggle value is not found or if there is an error


Gets the values for all features for the application.

var features = client.getAll();

  "feature1": "true",
  "feature2": "false",
  "domFeature/com": "true",
  "domFeature/couk": "false"