Flags
Feature flags that evaluate in your app. User data never leaves it.
Ship code dark, then turn it on for your team, a segment or a percentage of users, without a deploy. Flags gives you feature flags and remote settings with targeting rules, environments and a full change history.
Your app downloads a small config for its environment and decides every flag locally. Checks are instant, and the attributes you target on stay in your app. Flags is free during the preview and hosted in the EU (Frankfurt).
How it works
Download once, evaluate locally
One client per process. It keeps the config fresh in the background (an unchanged config costs a 304), so every read is local.
import { FlagsClient } from "@productcraft/flags";
// Downloads this environment's config and refreshes it every 60 s.
const flags = new FlagsClient({ sdkKey: process.env.PRODUCTCRAFT_FLAGS_SDK_KEY });
// Evaluated in your process: the user object is never sent anywhere.
const on = await flags.getValue("new_checkout", false, {
identifier: "user-123", // percentage rollouts hash this, so a user keeps their bucket
email: "ada@example.com",
custom: { plan: "pro" },
});Evaluated in your app
User data stays with you
Keeps working when we do not
Targeting
Release to the right people
Rules, segments and rollouts per environment. Turning a flag off in Production is one toggle in the console.
Percentage rollouts
Targeting rules
Segments
Prerequisite flags
Flags and settings
Environments
Operate
Safe to change in production
Protected environments, a full history and webhooks, from the same workspace and API key as the rest of ProductCraft.
Protected environments
History with restore
Signed webhooks
Node, React and OpenFeature
@productcraft/flags for Node.js and the browser, @productcraft/flags-react for React and Next.js, and @productcraft/flags-openfeature if you code against the OpenFeature API.One-step import from ConfigCat
For your AI agents too
Coming from ConfigCat?
The importer copies your setup in one step, and the migration guide maps every concept and SDK call, with a checklist for running both side by side before you switch.
Your first flag, end to end
Enable Flags on your workspace, create a flag, read it from Node, then flip it in the console and watch your app follow. Free during the preview.