Flipper is an MIT-licensed Ruby and Rails library that gives applications control over who has access to features, letting teams enable or disable functionality for everyone, specific actors, groups, a percentage of actors, or a percentage of time.
What it is
Flipper is a feature flag library for the Ruby and Rails ecosystem. It ships as the flipper gem, and applications pair it with a storage adapter such as flipper-active_record so that flag state lives in a data store the application already runs. The README describes it as beautiful, performant feature flags for Ruby and Rails, and states that regardless of which data store is in use, Flipper can performantly store feature flags. Checks happen in application code through Flipper#enabled?, which takes a feature name and an optional actor.
The concrete problem it solves is flag management without leaving the application. Rather than toggling behaviour by hand or reasoning about state in IRB consoles and separate application UIs, Flipper provides a consistent API for enabling and disabling features, plus configuration from the console or a web UI. The README frames the goal as putting control over feature access in the developer's hands, and its Cloud pitch explicitly notes the alternative it removes: no need to bounce around from different application UIs or IRB consoles. All features are disabled by default, so enabled state must be granted explicitly.
Key capabilities
- Enable a feature for everyone with
Flipper.enable :search.
- Target specific actors with
Flipper.enable_actor :search, current_user, or groups with Flipper.enable_group :search, :admin.
- Roll out gradually with
Flipper.enable_percentage_of_actors :search, 2, or gate on a percentage of time.
- Gate application code on a feature with
Flipper.enabled?(:search, current_user), which returns a boolean for the feature and actor.
- Store flags in the data store of choice via adapters, including
flipper-active_record and backends covered by the topic list: Memcached via Dalli, Mongo, MySQL, Postgres, and Redis.
- Configure flags from the console or from a web UI.
- Expose flags over HTTP, reflected in the
api and http topics.
Who uses it and how
- Rails applications that need per-user or per-group feature gating while keeping flag reads inside their own process.
- Teams running on infrastructure they already operate, choosing a storage adapter such as
flipper-active_record or a Memcached, Redis, Mongo, MySQL, or Postgres backend rather than adding new infrastructure solely for flags.
- Organisations that adopt Flipper Cloud for multiple environments such as production, staging, or per-continent setups, where every environment inherits from production by default.
- Teams that need shared visibility: personal environments that inherit from production and can be modified without affecting colleagues, per-project permissions, and limits on who may touch a particular environment such as production.
- Groups that require change governance, using audit history of every feature change and who made it, plus single-click rollback to any point in that history.
Getting started
Add gem 'flipper' to the Gemfile along with a storage adapter such as gem 'flipper-active_record', then run bundle; alternatively install directly with gem install flipper. A hosted route also exists through Flipper Cloud, which documents setup at flippercloud.io/docs.
How it compares
The facts provided do not list paid products that this project replaces, and no directly comparable open-source flagging tool is named. Flipper Cloud is the vendor's own complementary offering rather than a competing product, adding multiple environments, personal environments, permissions, audit history, and rollbacks on top of the open-source library. Among similar tools, the registry entry therefore stands on its own.
When to use it โ and when not to
A self-hoster must run and maintain a storage backend for flag state, choosing among adapters and data stores such as Active Record, Memcached, Redis, Mongo, MySQL, or Postgres, and must wire the appropriate adapter gem into the application. Teams that want environment cascading, team permissions, audit history, and rollbacks without operating any of that themselves should look at Flipper Cloud instead, since those capabilities are described as Cloud features rather than library features. The README excerpt is promotional in tone and defers substantial detail to the external documentation site, so prospective users should read flippercloud.io/docs before committing; the project is actively maintained, with a last push on 2026-09-16, 3,969 stars, 441 forks, and 33 open issues under the MIT licence.
project readme (upstream, from github) โ read inline

Website | Documentation | Examples | Chat | Twitter | Ruby.social
Flipper
Beautiful, performant feature flags for Ruby and Rails.
Flipper gives you control over who has access to features in your app.
- Enable or disable features for everyone, specific actors, groups of actors, a percentage of actors, or a percentage of time.
- Configure your feature flags from the console or a web UI.
- Regardless of what data store you are using, Flipper can performantly store your feature flags.
- Use Flipper Cloud to cascade features from multiple environments, share settings with your team, control permissions, keep an audit history, and rollback.
Control your software — don't let it control you.
Installation
Add this line to your application's Gemfile:
gem 'flipper'
You'll also want to pick a storage adapter, for example:
gem 'flipper-active_record'
And then execute:
$ bundle
Or install it yourself with:
$ gem install flipper
Subscribe & Ship
๐ Subscribe - we'll send you short and sweet emails when we release new versions (examples).
Merch
Do you deploy on Fridays? ๐ Get the tee.
Getting Started
Use Flipper#enabled? in your app to check if a feature is enabled.
# check if search is enabled
if Flipper.enabled?(:search, current_user)
puts 'Search away!'
else
puts 'No search for you!'
end
All features are disabled by default, so you'll need to explicitly enable them.
# Enable a feature for everyone
Flipper.enable :search
# Enable a feature for a specific actor
Flipper.enable_actor :search, current_user
# Enable a feature for a group of actors
Flipper.enable_group :search, :admin
# Enable a feature for a percentage of actors
Flipper.enable_percentage_of_actors :search, 2
Read more about getting started with Flipper and enabling features.
Flipper Cloud
Like Flipper and want more? Check out Flipper Cloud, which comes with:
- multiple environments — production, staging, per continent, whatever you need. Every environment inherits from production by default and every project comes with a project overview page that shows each feature and its status in each environment.
- personal environments — everyone on your team gets a personal environment (that inherits from production) which they can modify however they want without stepping on anyone else's toes.
- permissions — grant access to everyone in your organization or lockdown each project to particular people. You can even limit access to a particular environment (like production) to specific people.
- audit history — every feature change and who made it.
- rollbacks — enable or disable a feature accidentally? No problem. You can roll back to any point in the audit history with a single click.
- maintenance — we'll keep the lights on for you. We also have handy webhooks and background polling for keeping your app in sync with Cloud, so our availability won't affect yours. All your feature flag reads are local to your app.
- everything in one place — no need to bounce around from different application UIs or IRB consoles.

Cloud is super simple to integrate with Rails (demo app), Sinatra or any other framework.
We also have a free plan that you can use forever.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature)
- Run the tests (
bundle exec rake). Check out Docker-Compose if you need help getting all the adapters running.
- Commit your changes (
git commit -am 'Added some feature')
- Push to the branch (
git push origin my-new-feature)
- Create new Pull Request
Releasing
- Update the version in
lib/flipper/version.rb and commit.
- Tag and push:
git tag v1.x.x && git push origin v1.x.x
- GitHub Actions builds and publishes all gems to RubyGems automatically.
- Edit and publish the draft GitHub Release.
Brought To You By