1
0
Fork 0
mirror of https://gitlab.com/bramw/baserow.git synced 2025-02-05 21:39:51 +00:00
bramw_baserow/docs/development/feature-flags.md
2024-09-23 10:00:36 +00:00

80 lines
1.8 KiB
Markdown

# Feature flags
Baserow uses basic feature flags currently to allow unfinished features to be merged
and/or released.
## Available Feature Flags
Add/remove features flags to the list below:
## Enabling feature flags
To enable specific feature flags set the environment variable
`FEATURE_FLAGS=feature1,feature2,feature3`. Using `dev.sh` this would look like:
```bash
FEATURE_FLAGS=feature1,feature2,feature3 ./dev.sh xyz
```
You could also use a docker-compose `.env` file and set the FEATURE_FLAGS variable in
there.
## Enabling all feature flags
Use the `*` feature flag to enable every single feature flag without having to specify
each one.
```bash
FEATURE_FLAGS=* ./dev.sh xyz
```
## Naming convention
Feature flags should be:
1. Alphanumeric with dashes.
2. Not start or end with spaces (flags from the env variable will be trimmed for ease of
use).
3. Unique per feature.
## Creating a feature flag
### In the Backend
```python
# Add variable with feature flag to baserow.core.feature_flag in format
# FF_<FEATURE_NAME> = "feature_name"
# i.e.
FF_FEATURE1 = "feature1"
# In your feature file import flag you need and feature flag function
from baserow.core.feature_flag import FF_FEATURE1, feature_flag_is_enabled
# Use to check if feature is enabled
if feature_flag_is_enabled(FF_FEATURE1):
# do the feature
# or if you want to raise exception if the feature is not enabled
feature_flag_is_enabled(FF_FEATURE1, raise_if_disabled=True)
```
### In the Web-frontend
```javascript
// add feature flag variable in @core/plugins/featureFlags.js in format
// FF_<FEATURE_NAME> = "feature_name"
// i.e.
export const FF_FEATURE1 = "feature1";
methods: {
someComponentMethod()
{
if (this.$featureFlagIsEnabled(FF_FEATURE1)){
// do the feature
}
}
}
```