Learn R Programming

featureflag

The featureflag package provides a feature flag (also called as feature toggles, feature switches) implementation for R. Feature flags allow developers to turn functionalities on and off based on configuration.

If you are interested in learning more about feature flags, check out those great resources:

Installation

The featureflag package is available on CRAN and can be installed with:

install.packages("featureflag")

Install the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("szymanskir/featureflag")

Examples

Simple example

The featureflag package currently supports the following types of feature flags:

  • bool feature flags - simple on and off flags
  • percentage feature flags - flags that are randomly enabled/disabled based on the configured percentage
  • time period feature flags - flags that are enabled during a specified time period e.g. from 2020-01-01 10:00:00 until 2020-02-01 10:00:00
library(featureflag)

my_feature_flag <- create_bool_feature_flag(TRUE)

if (is_enabled(my_feature_flag)) {
  print("My feature is enabled!")
} else {
  print("My feature is not enabled!")
}

if and if/else helpers

featureflag provides helpers that allow you to omit boilerplate code such as if or if/else. They can be replace by the usage of feature_if or feature_ifelse accordingly:

feature_ifelse(
  my_feature_flag,
  print("My feature is enabled!"),
  print("My feature is not enabled!")
)

Shiny example

The source code of all examples is available in the examples folder of the repository.

Feature flags can be especially useful when developing shiny applications. The example below shows how feature flags can be used to turn parts application on and off – in this case an extra instance of the counter module.

FLAGS <- list(
    extra_counter_flag = create_bool_feature_flag(value = FALSE)
)


ui <- fluidPage(
    counterButton("counter1", "Always Visible Counter"),

    feature_if(FLAGS$extra_counter_flag, {
        counterButton("flagged_counter", "Flagged Counter")
    })
)

server <- function(input, output, session) {
    counterServer("counter1")

    feature_if(FLAGS$extra_counter_flag, {
        counterServer("flagged_counter")
    })
}

Defining feature flags in configuration files

The featureflag package can also be used in combination with the config package by using the R code execution feature:

default:
  extra_counter_flag: !expr featureflag::create_bool_feature_flag(value = TRUE)

test:
  extra_counter_flag: !expr featureflag::create_bool_feature_flag(value = TRUE)

production:
  extra_counter_flag: !expr featureflag::create_bool_feature_flag(value = FALSE)

Create your own feature flag

You can create feature flags that are turned on based on your own custom criteria. The procedure on how to define your own feature flag is presented in this tutorial

Copy Link

Version

Install

install.packages('featureflag')

Monthly Downloads

230

Version

0.2.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Ryszard Szymanski

Last Published

March 22nd, 2025

Functions in featureflag (0.2.0)

is_enabled

Checks if the given feature flag is enabled.
is_enabled.env_var_feature_flag

Checks if the given environment variable feature flag is enabled
is_enabled.time_period_feature_flag

Checks if the given bool feature flag is enabled
create_bool_feature_flag

Creates an instance of a bool feature flag with the specified bool value.
feature_ifelse

Evaluates one or the other expression based on whether the feature flag is enabled.
create_connect_user_feature_flag

Creates an instance of a connect feature flag that is enabled for specific users
create_percentage_feature_flag

Creates an instance of a percentage feature flag with a specified chance of being enabled
create_env_var_feature_flag

Creates an instance of a feature flag that is enabled based on an environment variable
create_time_period_feature_flag

Creates an instance of a time period feature flag.
feature_if

Evaluates the provided expression if the feature flag is enabled.
create_connect_group_feature_flag

Creates an instance of a connect feature flag that is enabled for specific groups
create_feature_flag

Creates the base of a feature flag.
is_enabled.percentage_feature_flag

Checks if the given percentage flag is enabled
is_enabled.connect_group_feature_flag

Checks if the given connect group feature flag is enabled
is_enabled.connect_user_feature_flag

Checks if the given connect user feature flag is enabled
is_enabled.bool_feature_flag

Checks if the given bool feature flag is enabled