JavaScript SDK
Integrate FlagSync feature flags into web applications.
Overview
The @flagsync/js-sdk
integrates into web applications for client-side feature management and event tracking—ideal for single-user contexts like browser environments.
Installation
Install the SDK with your preferred package manager:
Quickstart
A basic example of using the SDK in a JavaScript application:
Initialization
Get Your SDK Key
Find your client-side SDK key in your workspace settings—safe for web/mobile apps (keep server-side keys private).
Initialize the SDK
Initialize the SDK with your SDK key and a user context (e.g., user ID):
Ensure the key
in FsUserContext
is unique and persistent for accurate MAU tracking and consistent flag evaluations. See User Context Best Practices for details.
Wait for Readiness
Use events or promises to ensure the SDK is ready before evaluating flags:
Promises
Events
This event only fires when using the localstorage
storage type; the default is memory
.
Usage
Evaluate Flags
Evaluate flags with flag()
, which applies targeting rules, rollouts, and defaults for the user context.
An Impression is automatically registered when flag()
is called.
SDK Not Ready
If the SDK isn’t ready, it returns the defaultValue
or control
:
SDK Ready
Once ready, flag()
returns the server-evaluated value:
- Client-side SDKs can bootstrap via
LocalStorage
or an initial flag set—values apply until the SDK is ready. - See Flag Evaluation: Overview.
Track Events
Submit user actions with track()
—use eventValue
for numeric data or properties
for rich context:
There are two types of events:
Numeric Events
Captures measurable data like time or counts.
Property Events
Captures rich context like purchase details.
Create metrics like “Average Purchase Price” from events—see Metrics Overview.
SDK Event Listeners
The SDK emits these events for SDK lifecycle management:
SDK_UPDATE
: Emitted when flags are updatedSDK_READY
: Emitted when the SDK is readySDK_READY_FROM_STORE
: Emitted when flags are loaded from storageERROR
: Emitted when an error occurs during initialization
SDK_UPDATE
does not fire if syncing is disabled.
Error Handling
All exposed errors are normalized to FsServiceError
.
Configuration
Configure the SDK with the FsConfig
interface:
Custom Attributes
Define user attributes for targeting in Flags: User Segments.
Ensure the key
in FsUserContext
is unique and persistent for accurate MAU tracking and consistent flag evaluations. See User Context Best Practices for details.
Flag Syncing
Configure flag update strategies with the sync
object: stream
, poll
, or off
.
By default, flag updates propagate in milliseconds via server-side events (SSE), ensuring the latest values are used in evaluations.
Stream (Default)
Stream updates via SSE—flag updates are reevaluated on the server and sent to the client:
Polling
Poll the server on an interval:
Off
Disable syncing:
Bootstrapping
Initialize the SDK with a set of bootstrap flags:
Bootstrapped values apply before the SDK is ready—see Flag Evaluation: Overview.
Storage
Choose between memory and LocalStorage storage types:
Memory (Default)
LocalStorage
SDK_READY_FROM_STORE
event fires when loading from LocalStorage—no network request needed, but data may be stale. Best Practices
- Wait for SDK readiness before evaluating flags.
- Select a sync strategy (
stream
/poll
/off
) based on your application’s needs. - Add user attributes for targeted feature rollouts.
- Consider bootstrapping for faster initial renders.
Environment Variables
Set the following environment variable:
FLAGSYNC_SDK_KEY
: Your client-side FlagSync SDK key (required)