各言語・フレームワーク向けのSDK統合方法
npm install @feature-flags/node-sdkimport FeatureFlags from '@feature-flags/node-sdk';
const client = new FeatureFlags({
sdkKey: process.env.FF_SDK_KEY,
// Optional: stream for real-time updates
streaming: true,
});
await client.waitForInitialization();
// Boolean flag
const isEnabled = await client.variation(
'new-payment-flow',
{ userId: 'usr_abc123', plan: 'pro' },
false // default
);
// String flag (A/B test)
const buttonCopy = await client.variation(
'checkout-button-copy',
{ userId: 'usr_abc123' },
'Buy Now'
);
// Number flag
const maxItems = await client.variation(
'max-items-per-cart',
{ userId: 'usr_abc123' },
50
);pip install feature-flags-sdkimport feature_flags
client = feature_flags.Client(
sdk_key=os.environ['FF_SDK_KEY']
)
client.initialize()
# Boolean flag
is_enabled = client.variation(
'new-payment-flow',
{'user_id': 'usr_abc123', 'plan': 'pro'},
False # default
)
if is_enabled:
return render_new_checkout()npm install @feature-flags/reactimport { FeatureFlagsProvider, useFlag } from '@feature-flags/react';
// Wrap your app
function App() {
return (
<FeatureFlagsProvider
sdkKey={process.env.NEXT_PUBLIC_FF_SDK_KEY}
context={{ userId: user.id, plan: user.plan }}
>
<YourApp />
</FeatureFlagsProvider>
);
}
// Use in components
function Checkout() {
const newFlow = useFlag('new-payment-flow', false);
if (newFlow) {
return <NewCheckoutFlow />;
}
return <LegacyCheckout />;
}# Evaluate a flag via REST API
curl -X POST https://your-domain.com/api/v1/flags/evaluate \
-H "Authorization: Bearer ff_live_your_sdk_key" \
-H "Content-Type: application/json" \
-d '{
"flag_key": "new-payment-flow",
"context": {
"userId": "usr_abc123",
"plan": "pro"
}
}'
# Response:
# { "value": true, "reason": "TARGETING_RULE_MATCH" }/api/v1/flagsプロジェクト内のフラグ一覧を取得
/api/v1/flags/evaluateコンテキストに基づいてフラグを評価
/api/v1/flags新規フラグを作成
/api/v1/flags/:key/environments/:env環境設定を更新(有効/無効、ルール)