mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-02-06 05:40:09 +00:00
80 lines
1.8 KiB
Markdown
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
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|