Quickstart
Get your first SignaKit feature flag evaluating in 5 minutes.
Quickstart
In 5 minutes, you'll install the SignaKit SDK, create your first feature flag evaluation, and see it working in your chosen language or framework. SignaKit evaluates flags locally after a single config fetch — there's no network call on the hot decide() path. Pick your platform below and follow the three steps to get your first flag decision logged.
Create a project and copy your SDK key
In the SignaKit dashboard, create a project and navigate to Settings → API Keys. Copy a sk_dev_ key for local development.
Use sk_dev_ keys in development and sk_prod_ keys in production. Never expose a production key in client-side code — use @signakit/flags-browser or @signakit/flags-react for browser environments, which use the same key format.
Install the SDK
npm install @signakit/flags-nodenpm install @signakit/flags-react @signakit/flags-browserpip install signakit-flagsgo get github.com/signakit/flags-golang@latestcomposer require signakit/flags-php
# or for Laravel
composer require signakit/flags-laravel<!-- Maven -->
<dependency>
<groupId>com.signakit</groupId>
<artifactId>flags-java</artifactId>
<version>0.1.0</version>
</dependency># pubspec.yaml
dependencies:
signakit_flags: ^0.1.0npx expo install @signakit/flags-react-nativeInitialize and evaluate
import { createInstance } from '@signakit/flags-node'
// Initialize once at module level — not per request
const client = createInstance({ sdkKey: process.env.SIGNAKIT_SDK_KEY! })
await client.onReady()
const userCtx = client.createUserContext('user-123', { plan: 'pro' })
const decision = userCtx.decide('my-first-flag')
if (decision?.enabled) {
// show the new experience
}import { SignaKitProvider, useFlag } from '@signakit/flags-react'
function App() {
return (
<SignaKitProvider sdkKey="sk_dev_xxxx" userId="user-123">
<MyComponent />
</SignaKitProvider>
)
}
function MyComponent() {
const { enabled } = useFlag('my-first-flag')
return enabled ? <NewExperience /> : <CurrentExperience />
}from signakit_flags import SignaKitClient
client = SignaKitClient(sdk_key="sk_dev_xxxx")
ready = await client.on_ready()
user = client.create_user_context("user-123", {"plan": "pro"})
decision = user.decide("my-first-flag")
if decision and decision.enabled:
# show the new experienceimport (
"context"
"fmt"
"os"
sk "github.com/signakit/flags-golang/signakit"
)
// Initialize once at startup
client, err := sk.NewClient(context.Background(), os.Getenv("SIGNAKIT_SDK_KEY"))
if err != nil {
log.Fatalf("signakit: %v", err)
}
userCtx := client.CreateUserContext("user-123", sk.UserAttributes{"plan": "pro"})
decision := userCtx.Decide("my-first-flag")
if decision != nil && decision.Enabled {
fmt.Println("flag on, variation:", decision.VariationKey)
}use SignaKit\FlagsPhp\SignaKitClient;
// Initialize once (register as a singleton in your DI container)
$client = new SignaKitClient(sdkKey: $_ENV['SIGNAKIT_SDK_KEY']);
$client->initialize();
$userCtx = $client->createUserContext(
userId: 'user-123',
attributes: ['plan' => 'pro'],
);
$decision = $userCtx->decide('my-first-flag');
if ($decision?->enabled) {
echo $decision->variationKey; // e.g. "treatment"
}import 'package:flutter/material.dart';
import 'package:signakit_flags/signakit_flags.dart';
void main() {
runApp(
SignaKitProvider(
sdkKey: 'sk_dev_xxxx',
userId: 'user-123',
attributes: const {'plan': 'pro'},
child: const MyApp(),
),
);
}
// Anywhere in the widget tree:
FlagBuilder(
flagKey: 'my-first-flag',
builder: (context, flag) {
return flag.enabled ? const NewExperience() : const CurrentExperience();
},
)import { SignaKitProvider, useFlag } from '@signakit/flags-react-native'
export default function App() {
return (
<SignaKitProvider sdkKey="sk_dev_xxxx" userId="user-123">
<MyScreen />
</SignaKitProvider>
)
}
function MyScreen() {
const { enabled, loading } = useFlag('my-first-flag')
if (loading) return <ActivityIndicator />
return enabled ? <NewExperience /> : <CurrentExperience />
}View the result in the dashboard
Head to your project's Flags list. SignaKit shows live exposure counts as your SDK fires $exposure events. If you don't see data yet, check that:
- Your SDK key matches the project you're viewing
onReady()returnedsuccess: truebefore callingdecide()- You're looking at the correct environment (dev vs. prod)
Next steps
- Node.js SDK reference → — full API for the server-side SDK
- Concepts: Feature Flags → — how flag evaluation works
- Next.js App Router guide → — full integration walkthrough
Last updated on
Introduction
SignaKit Flags is a developer-first feature flag SDK for gradual rollouts, A/B testing, and audience targeting across 10 platforms — with local evaluation.
Feature Flags: What They Are and How They Work
Learn what feature flags are, why engineering teams use them, and how SignaKit evaluates flags locally for sub-millisecond decisions.