Docs/SDKs/

SDKs Overview

Choose the right Flagpool SDK for your platform and language

Flagpool provides native SDKs for all major platforms and languages. Every SDK implements the same evaluation logic and passes 72+ conformance tests, guaranteeing identical behavior across your entire stack.

Available SDKs

SDKPackageTypeStatus
JavaScript / TypeScript@flagpool/js-sdkServer & ClientStable
React@flagpool/reactClientStable
Pythonflagpool-sdkServerStable
Gogithub.com/AstroDigital-flagpool/flagpool-go-sdkServerStable
Javaio.flagpool:flagpool-java-sdkServerStable
C# / .NETFlagpool.SdkServerStable

Server-side vs client-side

Server-side SDKs (JavaScript/Node.js, Python, Go, Java, C#) run in trusted environments where secrets are safe. They are ideal for API servers, microservices, background jobs, and server-rendered applications.

Client-side SDKs (React, JavaScript in the browser) run in untrusted environments. The API key is visible in the bundle, but this is safe because the CDN payload contains only flag definitions and encrypted target lists — never sensitive data. User context stays local and is never sent to Flagpool.

Common features

All Flagpool SDKs share these capabilities:

  • Local evaluation — flags are evaluated in-memory, no network call per check (< 1ms)
  • Deterministic rollouts — same user always gets the same flag value
  • Offline support — SDKs cache flags locally and work without connectivity
  • Real-time updates — configurable polling keeps flags fresh
  • Target list decryption — encrypted target lists are decrypted client-side
  • Analytics — opt-in evaluation tracking with batched, async reporting
  • Debugging — inspect flag state, analytics buffers, and evaluation context

Quick start

Install the SDK for your language:

# JavaScript / TypeScript
npm install @flagpool/js-sdk

# React
npm install @flagpool/react

# Python
pip install flagpool-sdk

# Go
go get github.com/AstroDigital-flagpool/flagpool-go-sdk

# Java (Maven)
# Add to pom.xml — see Java SDK page

# C# / .NET
dotnet add package Flagpool.Sdk

Initialize the client:

import { FlagpoolClient } from '@flagpool/js-sdk'

const client = new FlagpoolClient({
  projectId: 'your-project-id',
  apiKey: 'env_your-api-key',
  decryptionKey: 'tlk_your-decryption-key',
  context: { userId: 'user-123' },
})

await client.init()

if (client.isEnabled('new-feature')) {
  // Feature is enabled for this user
}

Configuration options

OptionRequiredDescription
projectIdYesYour Flagpool project ID
apiKeyYesEnvironment-specific API key
decryptionKeyYesKey for decrypting target lists and computing CDN URL
contextNoUser attributes for targeting and rollouts
pollingIntervalNoHow often to check for updates (default: 30s)
analytics.enabledNoEnable evaluation tracking (default: false)

Cross-SDK consistency

Flagpool guarantees that the same user with the same context always receives the same flag value, regardless of which SDK evaluates it:

React SDK:    isEnabled('feature') → true
Python SDK:   is_enabled('feature') → True
Go SDK:       IsEnabled("feature")  → true
Java SDK:     isEnabled("feature")  → true
C# SDK:       IsEnabled("feature")  → true

✅ Identical result guaranteed

This is enforced through shared conformance tests covering hash algorithms, rule evaluation, operator behavior, and edge cases.

Next steps

Start Managing Feature Flags Today

Join teams who trust Flagpool to deliver features safely and efficiently.

No credit card required • Cancel anytime