Main features
- Features, segments and attributes declared in YAML in a Git repository
- Flags, variations for A/B and multivariate tests, and typed variables
- Percentage rollouts and reusable segment targeting
- Optional environments such as staging and production
- Mutually exclusive experiments
- Test specs that check targeting before a change ships
- Linting and static JSON datafile builds from a CLI
- Catalog website for browsing definitions, dependencies, tests and history
- SDKs for JavaScript, React, Vue, Go, Python, PHP, Ruby, Java, Kotlin, Swift, Rust and Elixir
- OpenFeature providers
What Featurevisor does
Featurevisor manages feature flags, experiment variations and remote configuration declaratively in a Git repository. You describe attributes (the facts about a user or request), segments (reusable conditions) and features in YAML. A feature can have an on/off flag with rollout rules, variations for A/B or multivariate tests, and typed variables for configuration. Global variables have their own targeting.
A Node.js command-line tool lints the project, runs tests and builds static JSON datafiles. Your CI pipeline, for example GitHub Actions, uploads them to a CDN or any web server. Applications fetch the datafile and the SDK evaluates everything locally.
Working in Git
Because the definitions are files, every change goes through your normal code review and has a full history. Featurevisor adds two tools that make this practical:
- Test specs state what particular users should get, such as “Dutch users always get the new checkout”, and fail the build if a change breaks that promise. Bucket positions are fixed in the test, so results do not depend on real user IDs.
- Catalog is a website for browsing the project: every definition, what depends on what, the tests, and the Git history. It can run locally or be exported as a static site for the team, and it has a link that opens a change proposal in GitHub, GitLab or Bitbucket. It never edits definitions itself.
Environments such as staging and production are optional; each produces its own datafile.
How evaluation works
SDKs hold the datafile in memory and evaluate flags, variations and variables against the context your application passes in. Nothing about the user is sent to a server. SDKs exist for JavaScript (with React, React Native, Vue and Next.js integrations), Go, Python, PHP, Ruby, Java, Kotlin, Swift, Rust and Elixir, plus OpenFeature providers for most of those languages.
Self-hosting Featurevisor
There is no service to run. What you need is a Git repository, a CI pipeline to build and upload datafiles, and static hosting for the files. That makes the operating cost close to zero and removes the flag server as a point of failure, since a CDN serves the files.
Hosted version
None, and none is needed: the only infrastructure is static file hosting you already control.
Limitations
There is no dashboard for editing flags. Product managers or support staff who need to change a flag must edit YAML or use the Catalog’s propose-change link and wait for review. A change takes effect only after CI rebuilds the datafiles and applications fetch the new version, so it is slower than a server-pushed kill switch. Experiment results must be measured in your own analytics tool.
Who it suits
Featurevisor suits engineering-led teams that want flags as code with tests and review, and like the idea of serving flags from a CDN instead of operating a flag server. Teams that need instant toggles from a web UI should look at Unleash, Flagsmith or FeatBit; for a file-based approach with a running evaluation service, compare GO Feature Flag and flagd.
Technical details
Built with
- TypeScript
- Node.js
GitHub topics
- ab-testing
- experimentation
- experiments
- feature
- feature-flags
- feature-management
- feature-toggles
- flags
- gitops
- javascript
- nodejs
- react
- reactjs
- segmentation
Reviewed by the OpenSourcePicks editors from the project's repository and documentation. Something out of date? Tell us.