mirror of
https://github.com/vercel/flags.git
synced 2026-09-19 03:49:23 +08:00
c7a56d6a66
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Flags SDK — PostHog Adapter
The PostHog adapter for Flags SDK supports dynamic server side feature flags powered by PostHog.
Setup
Install the adapter
pnpm i @flags-sdk/posthog
Example Usage
import { flag } from "flags/next";
import { postHogAdapter } from "@flags-sdk/posthog";
export const marketingGate = flag<boolean>({
// The key in PostHog
key: "my_posthog_flag_key_here",
adapter: postHogAdapter,
});
Environment variables
Always required, read by postHogAdapter:
# Regional API host, determines where your data lives
POSTHOG_HOST=https://us.i.posthog.com # or https://eu.i.posthog.com
# Settings > Project > Project API Key
POSTHOG_PROJECT_API_KEY=phc_...
Optional, opts postHogAdapter into local evaluation:
# Settings > Project > Feature flags secret key
POSTHOG_SECRET_KEY=phs_...
For the Flags Explorer, read by getProviderData only:
# Settings > User > Personal API keys
POSTHOG_PERSONAL_API_KEY=phx_...
# Settings > Project > Project ID
POSTHOG_PROJECT_ID=521742
Evaluation modes
- Remote (default): with only
POSTHOG_PROJECT_API_KEYandPOSTHOG_HOSTset, each evaluation calls PostHog. No background polling; request volume scales with traffic. Recommended for serverless. - Local: set
POSTHOG_SECRET_KEY(phs_...) to opt in.posthog-nodepolls flag definitions (~30s) and evaluates in-process for lower latency. Polling runs per warm server process and counts against your PostHog feature flag request quota regardless of user traffic.
POSTHOG_PERSONAL_API_KEY is used only by the Flags Explorer (getProviderData) and
does not enable local evaluation.
Runtimes
| Runtime | Supported |
|---|---|
| Node | ✅ |
| Edge Runtime | ❌ |
Note: posthog-node does not support the Edge Runtime.
To use with Routing Middleware and precompute, read more: Middleware now supports Node.js
Documentation
View more PostHog documentation at posthog.com.