Getting started
Sign in, create your first flag, read it from your code and turn it on, in about five minutes.
Sign in
Go to app.featflags.io and sign in with Google or GitHub. featflags is for businesses, so continuing accepts the terms and privacy policy.
Your first sign-in creates an organisation on the Free plan, with you as its owner. It’s named after your GitHub organisation if you came through GitHub, otherwise after your email’s domain (Acme for ana@acme.com), and you can rename it on the first setup screen. If a colleague already invited you, or your company lets everyone with an @acme.com address join its organisation, you’re offered that instead, and nothing is created for you.
Everyone can own one Free organisation. Seats and flags are unlimited on every plan, so invite the whole team.
Follow the setup
The app walks a new organisation through a short setup. Every step can be skipped, and it picks up where you left off on any device.
- Organisation: check its name and the address it lives at.
- Project: create your first project. It comes with two environments,
developmentandproduction, and a flag calledwelcome-bannerthat’s off in both. - SDK: copy a snippet for your stack, already filled in with the
developmentenvironment’s key. - First evaluation: the setup waits until featflags hears from your SDK, so you know it’s wired up.
- Invite your team, and pick a plan if Free isn’t enough.
Read the flag from your code
Install the SDK for your language. In a browser app, with TypeScript:
npm install @featflags/js
Then create one client and ask it for the flag:
import { FlagClient } from '@featflags/js'
const flags = new FlagClient({
key: 'pk_…', // the development environment's client key
cdnUrl: 'https://flags.featflags.io',
eventsUrl: 'https://events.featflags.io',
context: { kind: 'user', key: user.id, plan: user.plan },
})
if (flags.bool('welcome-banner', false)) showWelcomeBanner()
The keys are under Environment → Keys in the app. Each environment has two kinds:
- Client keys (
pk_…) for browsers and mobile apps. Anyone can read them from your app, so they only reach flags you mark client-visible. - Server keys (
sk_…) for your servers. They reach every flag, so keep them secret.
false is the fallback: what your code gets if the flag doesn’t exist or featflags can’t be reached before the first answer. The SDK has the flags within a moment of starting and keeps them up to date on its own, so bool never waits for the network.
On a server, use a server key and pass each request’s user to the evaluation instead. Every SDK page shows how: Go, Python, Java, Rust, .NET, Ruby, PHP, Elixir and Node.
Check that it arrived
Load the page or run the code once. SDKs report which variants they served about once a minute, so within a couple of minutes the setup’s First evaluation step ticks over and the flag’s page starts showing evaluations. Nothing about your user is sent: only counts of which variant each flag served.
Turn it on
Open welcome-banner, pick the development environment and turn it on. Your servers have the change within about 5 seconds. Browsers and apps pick it up within a minute, or as soon as the tab or the app comes back into view.
From there you can target it at some users instead of everyone: add a rule (say, plan is pro), or roll it out to a percentage of users. Concepts explains how flags, rules and rollouts fit together.
Next steps
- Pick your SDK and read its page: install, options, and what it does when the network is down.
- Concepts: environments, variants, targeting, segments and keys.
- Release templates to roll out every flag the same way, and experiments to measure what a flag changes.
- Connect your AI assistant to create and change flags for you.