Configuration
To use Flagship in a Cloudflare Worker, add a Flagship binding to your Wrangler configuration file. The binding gives your Worker access to env.FLAGS, which provides methods to evaluate feature flags.
Add the flagship block to your Wrangler configuration file with a binding name and your app ID.
{ "flagship": { "binding": "FLAGS", "app_id": "<APP_ID>", },}[flagship]binding = "FLAGS"app_id = "<APP_ID>"Replace <APP_ID> with the app ID from your Flagship app. If you have not created an app yet, refer to the Get started guide. The binding field sets the name you use to access Flagship in your Worker code (for example, env.FLAGS).
A single Worker can bind to multiple Flagship apps. Use the array form to define more than one binding:
{ "flagship": [ { "binding": "FLAGS", "app_id": "<APP_ID_1>", }, { "binding": "EXPERIMENT_FLAGS", "app_id": "<APP_ID_2>", }, ],}[[flagship]]binding = "FLAGS"app_id = "<APP_ID_1>"
[[flagship]]binding = "EXPERIMENT_FLAGS"app_id = "<APP_ID_2>"Each binding is available as a separate property on the env object (for example, env.FLAGS and env.EXPERIMENT_FLAGS).
After adding the binding, run npx wrangler types to generate TypeScript types. This creates the Env interface with each binding typed as Flagship.
interface Env { FLAGS: Flagship; EXPERIMENT_FLAGS: Flagship;}Call evaluation methods on env.FLAGS to resolve flag values at runtime. Each method accepts a flag key, a default value, and an optional evaluation context.
export default { async fetch(request, env) { const isEnabled = await env.FLAGS.getBooleanValue("my-feature", false, { userId: "user-42", });
return new Response(isEnabled ? "Feature is on" : "Feature is off"); },};export default { async fetch(request: Request, env: Env): Promise<Response> { const isEnabled = await env.FLAGS.getBooleanValue("my-feature", false, { userId: "user-42", });
return new Response(isEnabled ? "Feature is on" : "Feature is off"); },};Refer to the binding API reference for the full list of methods.