Skip to main content
By the end of this guide, you have a header-redesign flag with two variants, a rule that serves a variant to a test user, and code that resolves the flag. The guide has these steps:
  1. Create a client for the website so that it can resolve flags.
  2. Create a flag for the header design, and define its schema.
  3. Create variants of the header.
  4. Use the flag in the website to control the header.
  5. Force a variant for a user to test a specific variant.
  6. Test resolving the flag with an evaluation context.
Each step shows how to do it with AI first, then in the Confidence app.
Do it with AI. Connect the Confidence MCP servers to your AI assistant, then run the whole guide with one prompt:

Before You Begin

This video gives a quick overview of how feature flags work in 2 minutes and 10 seconds.
Use this guide to set up a flag that you resolve, but without changing anything in your code. This way, you can use the traffic the flag receives to set up and run A/B tests or rollouts using the A/B test quickstart or the rollout quickstart. Since the resolved flag value isn’t used in your code, nothing changes for your users.

Choose a Resolution Method That Fits Your Application

You can resolve a Confidence feature flag in two ways: by using Confidence’s managed resolver or hosting your own self-hosted resolver. Read more about the resolution options in the documentation.

Create a Client

You must associate all feature flags with at least one client. A client can, for example, be a backend service or a website. Clients use flags to deliver different user experiences. To resolve flags, a client must authenticate with Confidence using client credentials.
Confidence includes a default client that has the same name as your Confidence account. You can use this client, or create a more specific one for web feature flags in this quickstart.
The assistant uses the Flags MCP tools listClients, createClient, and getClientSecret.
You have now created a web client, and created the associated client credentials. These credentials are later used to resolve the flag.

Create a Flag

Flags let Confidence control the behavior of your application. For example, use a flag to control which machine learning model serves a recommendation, the number and size of tiles on a page, or a call to action message and its position on a sign-up page. For this tutorial, create a flag that controls the color and size of a header. The flag value has a schema. The value of a flag isn’t a single value, but a key-value map of properties. To avoid errors and make flags easier to work with, Confidence requires you to define a schema for the flag value. The schema describes the shape of the flag value by defining properties and their data types. In this guide, your flag controls the design of a header on a website. The design consists of color and size, so your flag needs two properties: color and size.
The assistant uses the Flags MCP tool createFlag, which sets the client and schema in one call.
When you create the flag, you associate the flag with a specific client. This means only that client can resolve the header-redesign flag. Limiting which flags are available to which clients is valuable for several reasons. For example, it prevents exposing flags to clients that run in uncontrolled environments such as mobile apps or server-side web apps. It also saves resources when resolving flags in batch (for example, at app start) by restricting resolution to only the relevant flags. Now that you defined the schema, you can create variants that have specific values for the color and size properties.

Create Variants

The two variants for the header redesign are black with size 14, and blue with size 16.
The assistant uses the Flags MCP tool addFlagVariant.
The two variants are now created, but they’re not yet reaching any user. To test your flag, use an individual targeting rule next.

Use the Flag

When resolving a flag into a value, you specify a default value. This default value applies if a user doesn’t match or isn’t assigned by a rule. The following sections show how to integrate the Confidence SDKs and set the default value for the header-redesign flag to color green and size 10. To have your AI assistant write the integration code for your stack, ask it:
The assistant uses the Docs MCP tool getCodeSnippetAndSdkIntegrationTips. To write the code yourself, follow the next sections.

Install Dependencies

You first need to install the necessary dependencies.

Initialize Confidence

With dependencies installed, you can now create a Confidence provider for your platform and connect it to the OpenFeature SDK. You only need to do this once, preferably on app startup.

Access the Flag

You can access the flag and its values using dot notation for nested properties.
The code snippets above set two fields in the context: the user_id and the plan this user is on, in this case premium. You can use the plan field in the context to create targeted rules. For example, with this information in the evaluation context, an A/B test can include only users on the premium plan as its target audience. This video gives a quick overview how targeting and evaluation contexts work in 2 minutes and 10 seconds.
If you were to run the code above you would only get the default values for the flag. Nothing tells the client that it should return any other value. To do so, you need to create flag variants and a rule that returns a variant.

Force a Variant For a User

To try out a variant, you can force it for a user with a specific user ID. You do this by creating an individual targeting rule on the flag. Individual targeting rules let you target specific attribute values, such as a list of user IDs. For example, you can add the identifiers of your team members so only your team can test the new experience in its early stages.
The assistant uses the Flags MCP tool addOverrideRule.
If you re-run the code that fetches the flag value you now see that the flag resolves to a value other than the default.

Force all Variant For 50% of Employees

You can create a conditional targeting rule with a targeting audience that includes a subset of the users in that audience. For example, you can create a conditional targeting rule that targets 50% of the users in the "plan": "employee" audience. This way, provided that all employees have their plan set to employee, you can test the new experience on a subset of your colleagues.
The assistant uses the Flags MCP tool addTargetingRule.
Since you now have two rules, the rules evaluate in the order of the list on the flag page. If a user is eligible for the first rule, it returns a variant for the user. If not, Confidence evaluates if the user is eligible for the second rule. In this case, since only the user with ID user-test-id is eligible for the individual targeting rule, Confidence evaluates eligibility for the second rule for everyone else. The second rule, in turn, only targets users on the employee plan. Change the priority of the rules by dragging the rule cards into the desired order and clicking save.

Test Flag Resolution

Test that the rule you expect returns a variant. You give an evaluation context and see which variant the flag resolves to.
The assistant uses the Flags MCP tool resolveFlag. Expect the new-style variant.
Most of the SDKs also output log messages that redirect you to the resolve tester specifically for the flag evaluation that the SDK performed. The link has a message with the prefix:
See resolves for <flagName> in Confidence:
To share a specific test run with someone, copy the URL and send it as a link. The link directs them to the Resolve tester with all context data preserved.

Create a Metric

Set up a metric to measure the impact of your flags

Launch a Rollout

Gradually release your feature to users

Launch an A/B Test

Run an experiment to compare variants

Flags Reference

Deep dive into feature flag concepts and configuration