0.1.0 • Published 5 months ago

@flags-sdk/growthbook v0.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

Flags SDK — GrowthBook Provider

The GrowthBook provider for the Flags SDK contains support for GrowthBook's Feature Flags and Experiments.

Setup

The GrowthBook provider is available in the @flags-sdk/growthbook module. You can install it with

pnpm i @flags-sdk/growthbook

Provider Instance

You can import the default adapter instance growthbookAdapter from @flags-sdk/growthbook:

import { growthBookAdapter } from '@flags-sdk/growthbook';

Example

import { flag } from 'flags/next';
import { growthBookAdapter } from '@flags-sdk/growthbook';

export const summerBannerFlag = feature<boolean>({
  key: 'summer-banner',
  adapter: growthBookAdapter.feature(),
});

Experimentation (A/B Testing)

In order to run GrowthBook experiments, you must define a back-end tracking callback function. This is called every time a user is put into an experiment and can be used to track the exposure event in your analytics system. We recommend defining this callback in your flag definition file (e.g. flags.ts).

import { after } from 'next/server';

growthbookAdapter.setTrackingCallback((experiment, result) => {
  // Safely fire and forget async calls (Next.js)
  after(async () => {
    console.log('Viewed Experiment', {
      experimentId: experiment.key,
      variationId: result.key,
    });
  });
});

In some situations, you may prefer to use a front-end tracking callback. This requires a bit of implementation glue. See the Vercel Next.js + GrowthBook example for details.

Sticky Bucketing

To implement sticky bucketing (required for Bandits), you may create any StickyBucketService instance and apply it to the adapter (recommended in flags.ts). We recommend using our Redis service for ease of implementation.

import { RedisStickyBucketService } from '@growthbook/growthbook';
import Redis from 'ioredis';

const redis = new Redis(process.env.REDIS_CONNECTION_URL);
const redisStickyBucketService = new RedisStickyBucketService({ redis });

growthbookAdapter.setStickyBucketService(redisStickyBucketService);

Documentation

Please check out the GrowthBook provider documentation for more information.