---
title: Feature Flags
hide_title: true
sidebar_position: 2
version: 1
---

import featureFlags from '../_versioned_data/static/feature-flags.json';

export const FlagTable = ({ flags }) => (
  <table>
    <thead>
      <tr>
        <th>Flag</th>
        <th>Default</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      {flags.map(flag => (
        <tr key={flag.name}>
          <td>
            <code>{flag.name}</code>
          </td>
          <td>
            <code>{flag.default ? 'True' : 'False'}</code>
          </td>
          <td>
            {flag.description}
            {flag.docs && (
              <>
                {' '}
                (<a href={flag.docs}>docs</a>)
              </>
            )}
          </td>
        </tr>
      ))}
    </tbody>
  </table>
);

# Feature Flags

Superset uses feature flags to control the availability of features. Feature flags allow
gradual rollout of new functionality and provide a way to enable experimental features.

To enable a feature flag, add it to your `superset_config.py`:

```python
FEATURE_FLAGS = {
    "ENABLE_TEMPLATE_PROCESSING": True,
}
```

## Lifecycle

Feature flags progress through lifecycle stages:

| Stage           | Description                                                                    |
| --------------- | ------------------------------------------------------------------------------ |
| **Development** | Experimental features under active development. May be incomplete or unstable. |
| **Testing**     | Feature complete but undergoing testing. Usable but may contain bugs.          |
| **Stable**      | Production-ready features. Safe for all deployments.                           |
| **Deprecated**  | Features scheduled for removal. Migrate away from these.                       |

---

## Development

These features are experimental and under active development. Use only in development environments.

<FlagTable flags={featureFlags.flags.development} />

---

## Testing

These features are complete but still being tested. They are usable but may have bugs.

<FlagTable flags={featureFlags.flags.testing} />

---

## Stable

These features are production-ready and safe to enable.

<FlagTable flags={featureFlags.flags.stable} />

---

## Deprecated

These features are scheduled for removal. Plan to migrate away from them.

<FlagTable flags={featureFlags.flags.deprecated} />

---

## Adding New Feature Flags

When adding a new feature flag to `superset/config.py`, include the following annotations:

```python
# Description of what the feature does
# @lifecycle: development | testing | stable | deprecated
# @docs: https://superset.apache.org/docs/... (optional)
# @category: runtime_config | path_to_deprecation (optional, for stable flags)
"MY_NEW_FEATURE": False,
```

This documentation is auto-generated from the annotations in
[config.py](https://github.com/apache/superset/blob/master/superset/config.py).
