Quickstart
This walks you from a fresh feat account to a flag your application reads. Five minutes if you copy the snippets.
1. Create an organization
Section titled “1. Create an organization”Sign up at console.feat.so and create your first organization. An organization is a tenant boundary; everything inside it (projects, members, flags) is isolated from every other organization.
2. Create a project and an environment
Section titled “2. Create a project and an environment”Inside the organization, create a project. A project holds your flags. Most teams want one project per product surface.
Every project starts with a production environment. Add a development environment alongside it. You can add more later (staging, qa, regional, per-engineer) at any time. Each environment has its own state for every flag, independently.
3. Create a flag
Section titled “3. Create a flag”In the project, click Feature flags then New flag. Give it a key (checkout-v2) and pick a value type:
- Boolean for simple on/off switches.
- String, number, or JSON when the flag needs to carry a value, like a variant name or a configuration object.
Add two variations. For a boolean flag, those are true and false. The dashboard creates them for you.
Save the flag. It exists in every environment in the project, with targeting turned off by default.
4. Get an SDK key
Section titled “4. Get an SDK key”Open the Environments tab, pick your development environment, then API keys then New key. Pick the key type that matches where you want to read the flag:
- Server key (
feat_sdk_…) for backend code: Node, Go, Python, Ruby, Workers. - Mobile key (
feat_mob_…) for iOS, Android, or other mobile clients. - Client-side ID (
feat_cs_…) for browser JavaScript.
The dashboard shows the full token once. Copy it now; you cannot see it again.
See API keys for what each type can and cannot do.
5. Read the flag
Section titled “5. Read the flag”This example uses Node.js. Other languages follow the same shape; see SDKs overview.
npm install @feathq/js-sdkimport { FeatClient } from "@feathq/js-sdk";
const client = new FeatClient({ apiKey: process.env.FEAT_SERVER_KEY!, dataPlaneUrl: "https://data.feat.so",});
await client.ready();
const result = await client.evaluate("checkout-v2", false, { targetingKey: "user-123", user: { plan: "pro", email: "alice@example.com" },});
console.log("checkout-v2:", result.value);Run it. The flag returns false, because targeting is off and the off-variation is false.
6. Turn the flag on for one user
Section titled “6. Turn the flag on for one user”Back in the dashboard, open the flag in your development environment.
Turn targeting on. Add an individual target: pick the user context kind and add the key user-123. Set it to serve the true variation.
Save. Run your script again. It now returns true for user-123 and false for anyone else.
You have shipped your first flag.
What to do next
Section titled “What to do next”- Targeting rules cover how to serve different values to groups (paying customers, internal users, a region).
- Percentage rollouts cover progressive launches: 10% of users, then 50%, then 100%.
- Segments let you name a group of users once and reuse it across flags.
- The OpenFeature provider is the route to keep your code portable across vendors.