A production grade feature flagging service.
The key to agile feature management. Use this service to update flags on the fly, do dark releases, run experiments, toggle functionality, and more!
Prerequisites
Getting started
- Install the npm package.
$ npm i fflag-ms
- Initialize the module.
const FeatureFlags = require('fflag-ms');
const ff = new FeatureFlags({
rapidAPIKey: 'xxx',
namespace: 'my-app'
});
By default this will automatically fetch flags every 1 minute. You can set the refreshIntervalMS
value to change this.
- Use the our web interface to manage keys. Or use the sdk to manage flags.
...
await ff.put({
timeoutMS: 30000,
flag2: true,
flag3: {
nested: {
object: 1
}
},
});
...
- Reference feature flag keys.
// Get timeoutMS value from feature flags, default to 10000 if not found.
ff.get('example-timeoutMS', 10000);
Config values
-
rapidAPIKey
- REQUIRED
- This is your application key generated on the RapidAPI dashboard.
-
namespace
- REQUIRED
- All flags must be associated to a namespace, if you are unsure, set this to something generic like
general
. - These will be treated as case-insensitive.
-
baseUrl
- OPTIONAL - defaults to
https://feature-flags2.p.rapidapi.com
- The baseURL of the API requests, you should never have to change this.
- OPTIONAL - defaults to
-
showConsoleErrors
- OPTIONAL - defaults to
true
- If you wish to mute all error logs from this module, set this to
false
.
- OPTIONAL - defaults to
-
refreshIntervalMS
- OPTIONAL - defaults to
60000
- Number of milliseconds between fetching for flags from the server.
- This value cannot be less than 1 minute, it will be ignored.
- Setting this to
-1
will allow you to disable auto-fetching, where you will be required to call -
fetch()
manually.
- OPTIONAL - defaults to
Examples
Disabling auto-fetch, manual fetching
const FeatureFlags = require('fflag-ms');
const ff = new FeatureFlags({
rapidAPIKey: 'xxx',
namespace: 'my-app',
refreshIntervalMS: -1
});
...
// Fetch manually - an async method, updates local cache.
await ff.fetch();
...
// Get method is not async, uses local cache.
ff.get('example-timeoutMS', 10000);