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
| SDK | Package | Type | Status |
|---|---|---|---|
| JavaScript / TypeScript | @flagpool/js-sdk | Server & Client | Stable |
| React | @flagpool/react | Client | Stable |
| Python | flagpool-sdk | Server | Stable |
| Go | github.com/AstroDigital-flagpool/flagpool-go-sdk | Server | Stable |
| Java | io.flagpool:flagpool-java-sdk | Server | Stable |
| C# / .NET | Flagpool.Sdk | Server | Stable |
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
| Option | Required | Description |
|---|---|---|
projectId | Yes | Your Flagpool project ID |
apiKey | Yes | Environment-specific API key |
decryptionKey | Yes | Key for decrypting target lists and computing CDN URL |
context | No | User attributes for targeting and rollouts |
pollingInterval | No | How often to check for updates (default: 30s) |
analytics.enabled | No | Enable 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
- Quickstart — get your first flag running in 5 minutes
- Architecture & Performance — how the CDN and caching work
- Security Overview — API keys, encryption, and data handling