Skip to main content

Complete reference for the Flaggr TypeScript client SDK

Client SDK

The Flaggr client SDK provides type-safe feature flag evaluation for TypeScript and JavaScript applications.

Initialization

import { initializeFlaggr } from '@flaggr/client'
 
await initializeFlaggr({
  mode: 'remote',
  apiUrl: 'https://flaggr.dev',
  serviceId: 'my-service',
  apiKey: 'flg_your_api_token',
})

React Hooks

useBooleanFlag

import { useBooleanFlag } from '@flaggr/client'
 
function MyComponent() {
  const isEnabled = useBooleanFlag('dark-mode', false)
  return <div className={isEnabled ? 'dark' : 'light'}>...</div>
}

useStringFlag

import { useStringFlag } from '@flaggr/client'
 
function Banner() {
  const variant = useStringFlag('banner-variant', 'default')
  return <BannerComponent variant={variant} />
}

useNumberFlag

import { useNumberFlag } from '@flaggr/client'
 
function PricingPage() {
  const maxItems = useNumberFlag('cart-limit', 10)
  return <Cart maxItems={maxItems} />
}

useObjectFlag

import { useObjectFlag } from '@flaggr/client'
 
interface ThemeConfig {
  primary: string
  radius: number
}
 
function App() {
  const theme = useObjectFlag<ThemeConfig>('theme-config', {
    primary: '#3b82f6',
    radius: 8,
  })
  return <ThemeProvider config={theme}>...</ThemeProvider>
}

Event Subscriptions

onFlagChange

Listen for real-time flag updates:

import { onFlagChange } from '@flaggr/client'
 
const unsubscribe = onFlagChange('my-flag', (newValue) => {
  console.log('Flag changed:', newValue)
})
 
// Clean up
unsubscribe()

onProviderReady

Wait for the SDK to be fully initialized:

import { onProviderReady } from '@flaggr/client'
 
onProviderReady(() => {
  console.log('Flaggr SDK is ready')
})

onConnectionStateChange

Monitor the connection to the Flaggr backend:

import { onConnectionStateChange, ConnectionState } from '@flaggr/client'
 
onConnectionStateChange((state) => {
  if (state === ConnectionState.CONNECTED) {
    console.log('Connected to Flaggr')
  }
})

Evaluation Context

Pass user attributes for targeted flag evaluation:

import { setEvaluationContext } from '@flaggr/client'
 
setEvaluationContext({
  targetingKey: 'user-123',
  email: 'alice@example.com',
  plan: 'enterprise',
  region: 'au',
})

Context attributes are matched against targeting rules defined in the dashboard.

Bootstrap (SSR)

For server-rendered applications, bootstrap flag values to avoid flicker:

// Server-side
const flags = await evaluateAllFlags(serviceId)
 
// Pass to client via script tag
<script
  dangerouslySetInnerHTML={{
    __html: `window.__FLAGGR_BOOTSTRAP__ = ${JSON.stringify(flags)}`
  }}
/>

The SDK automatically picks up bootstrap data when available.

OpenFeature Integration

Use Flaggr as an OpenFeature provider:

import { OpenFeature } from '@openfeature/web-sdk'
import { FlaggrWebProvider } from '@flaggr/client'
 
const provider = new FlaggrWebProvider({
  apiUrl: 'https://flaggr.dev',
  serviceId: 'my-service',
  apiKey: 'flg_your_api_token',
})
 
await OpenFeature.setProviderAndWait(provider)
 
const client = OpenFeature.getClient()
const value = await client.getBooleanValue('my-flag', false)