3 ms·
Show HN: Featurevisor – Git-based feature flags and experiments management
Why?
- Decouple application deployment from releases
How it works:
- Make changes to your features and segments (YAMLs) via Pull Requests
- Generate datafile (JSON file) in CI/CD workflow and upload to your CDN
- Fetch datafile in your application runtime and consume with SDKs
Supports:
- Feature flags: boolean flags
- Experimentation: a/b tests
- Segments: targeting traffic with conditions
- Variables: namespaced under each feature and conditional
- Gradual rollouts: avoid big bang releases, go from 0% to 100%
- Consistent bucketing: same user sees same variation
- Multiple environments: prod, staging, test, and more
- Force bucketing: allow testers to force enable/disable for themselves only
- Tagging: resulting in smaller datafiles for your application(s)
- Tracking: integration with any analytics tool
- Status site generator: for human friendly status reporting
- SDKs: for Node.js and browser environments, Kotlin/Swift planned for future
- rektide 3y agoThe typescript types subpackage was a pretty nice high level overview of what to expect here.https://github.com/fahad19/featurevisor/blob/main/packages/types/src/index.ts https://github.com/fahad19/featurevisor/blob/main/packages/t... This is definitely a neat effort. I started JSON dumping feature flags at work on a regular basis, so that is my main tool for scrubbing through & seeing what happened. The ability to keep building really neat tools around these paradigms is so infinite. Simon Willison's git-history is notablehere, which was submitted earlier today. https://news.ycombinator.com/item?id=35690942 https://news.ycombinator.com/item?id=35690942 Personally I really think git (especially when going ham with good CoW filesystems) is the most notably interesting database coming at us from the future.
- fahad19 3y agoThanks for the kind feedback! As I kept building it, I realized I can also extract all the history of changes belonging to all features/segments/attributes in the repo and show them nicely via the static site generator as well, which serves as a status report for your wider team/organization. You can see the screenshots here: https://featurevisor.com/docs/site/#screenshots https://featurevisor.com/docs/site/#screenshots
- deleted 3y ago[deleted]
- asabla 3y agoThis looks super interesting! Any plans on expanding documentation and support for more frameworks and/or languages?
- fahad19 3y agothank you! I have just announced the React integration here: https://twitter.com/fahad19/status/1650580700687376399 https://twitter.com/fahad19/status/1650580700687376399 You can find more docs here: https://featurevisor.com/docs/react/ https://featurevisor.com/docs/react/ I will explore NextJS and how Featurevisor can be utilized at both SSR and SSG level as well. While of course working on adding more tests, and tagging a v1.0 stable release soon. Regarding Swift (for iOS) and Kotlin (for Android) SDKs, I am not so sure if I will attempt those myself. But I am asking around in my network for help there, and would like to have official cross-platform SDK support.
- esafak 3y agoDo you support exclusions, to ensure interacting experiments do not intersect?
- fahad19 3y agoit's one of the first things that a data scientist friend of mine asked. Featurevisor SDK is stateless, in the sense that it evaluates features against given attributes and the content of the currently parsed datafile. if we want to have native support of exclusions in the SDK, it has to become stateful on its own. either in memory, device level, or having a backend service that's aware of the session to go cross-device. therefore, it currently does not support it. but I am open to exploring an API for it in future. as a work around, what can be done for now is to track manually whenever a feature is activated (SDK has onActivation handler), and then pass that knowledge as an attribute when evaluating another feature. The second feature can then have a `not` operator in its segments to exclude itself in that case. Links that can help: Activation: https://featurevisor.com/docs/sdks/#activation https://featurevisor.com/docs/sdks/#activation `not` operator: https://featurevisor.com/docs/segments/#not https://featurevisor.com/docs/segments/#not
- esafak 3y agoI would not adopt a platform that did not support exclusions. I think you should create a marketing page explaining the ways you are superior to the competition. Right now I would pick https://www.growthbook.io/ https://www.growthbook.io/
- fahad19 3y agoMutually exclusive experiments are now supported via latest Featurevisor v0.16: https://featurevisor.com/docs/groups/ https://featurevisor.com/docs/groups/
- fahad19 3y agothis is really good feedback. thanks for this. for now, I have created this GitHub Issue for adding support for exclusions: https://github.com/fahad19/featurevisor/issues/60 https://github.com/fahad19/featurevisor/issues/60
- Owen69 3y ago[dead]