Example usage of the JavaScript (Node) SDK prior to v6
A code example of how to use the Optimizely Feature Experimentation JavaScript (Node) SDK to evaluate feature flags, activate A/B tests, or feature tests.
After installing the JavaScript (Node) SDK, import the Optimizely library, get your project's datafile, and create a client. Use the client to evaluate flag rules like A/B tests and flag deliveries.
This example walks through the following three key steps:
-
Evaluate a flag with the key
product_sortusing thedecidemethod. This also sends a decision event to Optimizely to record that the user was exposed to the experiment. -
Run code based on the flag result. The SDK evaluates your flag rules and determines which variation the user is in. You can either:
- Check the flag's enabled state and read a configuration variable (
sort_method) to determine which experience the user gets. - Check the flag variation directly and run the corresponding control or treatment code.
- Check the flag's enabled state and read a configuration variable (
-
Track a conversion event called
purchasedto measure the experiment's impact. ThetrackEventmethod ties the purchase back to the A/B test and sends it to Optimizely so it displays on your Experiment Results page.
const { createInstance } = require('@optimizely/optimizely-sdk');
const optimizely = createInstance({
sdkKey: '<YOUR_SDK_KEY>' // Provide the sdkKey of your desired environment here
});
if (optimizely) {
optimizely.onReady().then(({ success, reason }) => {
if (!success) {
throw new Error(reason);
}
const attributes = { logged_in: true };
const user = optimizely.createUserContext('user123', attributes);
if (!user) {
throw new Error('failed to create user context');
}
const decision = user.decide('product_sort');
const variationKey = decision['variationKey'];
if (variationKey === null) {
console.log(' decision error: ', decision['reasons']);
}
const enabled = decision['enabled'];
if (enabled) {
const sortMethod = decision.variables['sort_method'];
// execute code for sort method value
}
if (variationKey === 'control') {
// Execute code for control variation
} else if (variationKey === 'treatment') {
// Execute code for treatment variation
}
// Track an event
user.trackEvent('purchased');
}).catch((err) => {
// handle error
});
} else {
// there was an error creating the instance, handle error
};
Updated 12 days ago
