> For the complete documentation index, see [llms.txt](https://docs.hackle.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hackle.io/en/feature-flag/ff-design.md).

# Designing Feature Flags

Learn the design process for releasing features safely with Feature Flags.

Feature Flags let you flexibly control the scope and pace of a feature release.

Before releasing, design the feature, the audience, and the criteria you will observe. This document walks through the process using a welcome image change as an example.

{% stepper %}
{% step %}

### Define the feature and its states

Clearly decide what experience to show in the on and off states. Typically, the off state keeps the existing feature and the on state serves the new feature.

The developer in charge implements the new feature. They also integrate the Hackle SDK and the Feature Flag evaluation code.

{% hint style="info" %}
**Example**

Company A, which operates a ball sports community, wants to change its welcome image. Concerned about how existing users will react, they serve the new image to a subset of users first.

* **On:** the new welcome image featuring various sports
* **Off:** the existing welcome image prominently featuring a ball
  {% endhint %}
  {% endstep %}

{% step %}

### Decide the release strategy

Decide who will receive the new feature and how much initial traffic to allocate. Also decide how long you will observe the reaction and the criteria for adjusting traffic.

{% hint style="info" %}
**Example**

* **Initial traffic:** show the new image to 10% of users.
* **Observation criteria:** if there is any related reaction within 2\~3 days, review the content.
* **Expansion plan:** if there is no noticeable reaction, increase traffic by 10% each week.
  {% endhint %}
  {% endstep %}

{% step %}

### Review the results and clean up

Adjust traffic while checking user reactions and system health. Once you have collected enough results, decide which experience to apply for good.

You can roll the new feature out to all users or revert to the existing feature. After deciding, ask the developer in charge to clean up the Feature Flag code.

{% hint style="success" %}
See [Create & Configure Feature Flags](/en/feature-flag/create-and-configure.md) for how to configure a Feature Flag. Analyze the results in [Feature Flag Data Analysis](/en/feature-flag/ff-analysis.md).
{% endhint %}
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.hackle.io/en/feature-flag/ff-design.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
