What are the top feature flags projects on GitHub? Let’s find out.
If you are into open-source software, GitHub is probably the go-to place to find interesting projects you can use for free and contribute to.
Feature flags tools are no exception. We have listed below the top 10 feature toggle repositories on github.com ranked by popularity.
If you want to explore alternatives that scale better and are suitable for more use cases, read our article about feature flag implementation journey where we answer the question: should I build or buy a feature flag platform.
For a comprehensive overview of what feature flags are, refer to our feature flagging guide.
1. Unleash/unleash
Unleash is the open-source feature management platform. It provides a great overview of all feature toggles/flags across all your applications and services. Unleash enables software teams all over the world to take full control on how they deploy new functionality to end users.
https://github.com/Unleash/unleash
2. Fetlife/rollout
Fast feature flags based on Redis.
https://github.com/fetlife/rollout
3. jnunemaker/flipper
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.
https://github.com/jnunemaker/flipper
4. uber/piranha
Piranha is a tool to automatically refactor code related to stale flags. At a higher level, the input to the tool is the name of the flag and the expected behavior, after specifying a list of APIs related to flags in a properties file. Piranha will use these inputs to automatically refactor the code according to the expected behavior.
This repository contains four independent versions of Piranha, one for each of the four supported languages: Java, JavaScript, Objective-C and Swift.
https://github.com/uber/piranha
5. checkr/flagr
Flagr is an open source Go service that delivers the right experience to the right entity and monitors the impact. It provides feature flags, experimentation (A/B testing), and dynamic configuration. It has clear swagger REST APIs for flags management and flag evaluation.
https://github.com/checkr/flagr
6. markphelps/flipt
Flipt is an open source, on-prem feature flag application that allows you to run experiments across services in your environment. Flipt can be deployed within your existing infrastructure so that you don’t have to worry about your information being sent to a third party or the latency required to communicate across the internet.
Flipt supports use cases such as:
- Simple on/off feature flags to toggle functionality in your applications
- Rolling out features to a percentage of your customers
- Using advanced segmentation to target and serve users based on custom properties that you define
https://github.com/markphelps/flipt
7. ff4j/ff4j
FF4j, is an implementation of the Feature Toggle pattern for Java. It provides a rich set of features:
- Enable and disable features at runtime – no deployments.
- Enable features not only with flag values but also drive access with roles and groups.
- Implement custom predicates to evaluate if a feature is enabled.
- Keep your code clean and readable: Avoid nested if statements but use annotations.
- Each action (create, update, delete, toggles) can be traced and saved in the audit trail for troubleshooting.
- Administrate FF4j (including features and properties) with the web UI.
- Wide choice of databases technologies to store your features, properties and events.
- (Distributed) Cache Evaluating predicates may put pressure on DB (high hit ratio).
8. togglz/togglz
Togglz is another implementation of the Feature Toggles pattern for Java.
- Modular setup. Select exactly the components of the framework you want to use. Besides the main dependency, install specific integration modules if you are planning to integrate Togglz into a web application (Servlet environment) or if you are using CDI, Spring, Spring Boot, JSF.
- Straight forward usage. Just call the isActive() method on the corresponding enum to check if a feature is active or not for the current user.
- Admin console. Togglz comes with an embedded admin console that allows you to enable or disable features and edit the user list associated with every feature.
- Activation strategies. They are responsible for deciding whether an enabled feature is active or not. Activation strategies can, for example, be used to activate features only for specific users, for specific client IPs or at a specified time.
- Custom Strategies. Besides the built-in default strategies, it’s easy to add your own strategies. Togglz offers an extension point that allows you to implement a new strategy with only a single class.
- Feature groups. To make sure you don’t get lost in all the different feature flags, Togglz allows you to define group for feature that are just used for a visual grouping in the admin console.
https://github.com/togglz/togglz
9. jason-roberts/FeatureToggle
Simple, reliable feature toggles in .NET
https://github.com/jason-roberts/FeatureToggle
10. tompave/fun_with_flags
FunWithFlags is an OTP application that provides a 2-level storage to save and retrieve feature flags, an Elixir API to toggle and query them, and a web dashboard as control panel.
It stores flag information in Redis or a relational DB (PostgreSQL or MySQL, with Ecto) for persistence and synchronization across different nodes, but it also maintains a local cache in an ETS table for fast lookups. When flags are added or toggled on a node, the other nodes are notified via PubSub and reload their local ETS caches
https://github.com/tompave/fun_with_flags