{"id":13876153,"url":"https://github.com/featurevisor/featurevisor","last_synced_at":"2025-05-14T09:06:39.581Z","repository":{"id":113835984,"uuid":"609940147","full_name":"featurevisor/featurevisor","owner":"featurevisor","description":"Feature flags, experiments, and remote config management with version control","archived":false,"fork":false,"pushed_at":"2025-05-12T22:19:15.000Z","size":4321,"stargazers_count":672,"open_issues_count":20,"forks_count":34,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-14T09:05:28.053Z","etag":null,"topics":["ab-testing","experimentation","experiments","feature","feature-flags","feature-management","feature-toggles","flags","gitops","javascript","nodejs","react","reactjs","segmentation","toggles","vue","vuejs"],"latest_commit_sha":null,"homepage":"https://featurevisor.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/featurevisor.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-03-05T17:30:04.000Z","updated_at":"2025-05-07T08:56:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"88f4807d-3bc4-43ea-9a7f-9d8de19d1adc","html_url":"https://github.com/featurevisor/featurevisor","commit_stats":{"total_commits":509,"total_committers":25,"mean_commits":20.36,"dds":0.4086444007858546,"last_synced_commit":"1b655dedd561d1fbc3c157ff09baf16b124af204"},"previous_names":["featurevisor/featurevisor","fahad19/featurevisor"],"tags_count":198,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/featurevisor%2Ffeaturevisor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/featurevisor%2Ffeaturevisor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/featurevisor%2Ffeaturevisor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/featurevisor%2Ffeaturevisor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/featurevisor","download_url":"https://codeload.github.com/featurevisor/featurevisor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254110374,"owners_count":22016391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ab-testing","experimentation","experiments","feature","feature-flags","feature-management","feature-toggles","flags","gitops","javascript","nodejs","react","reactjs","segmentation","toggles","vue","vuejs"],"created_at":"2024-08-06T06:01:04.523Z","updated_at":"2025-05-14T09:06:39.561Z","avatar_url":"https://github.com/featurevisor.png","language":"TypeScript","readme":"[![Featurevisor](./assets/banner-bordered.png)](https://featurevisor.com)\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003e\u003cstrong\u003eFeature management for developers\u003c/strong\u003e\u003c/h3\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003csmall\u003eManage your feature flags and experiments declaratively from the comfort of your Git workflow.\u003c/small\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003c!-- NPM version --\u003e\n  \u003ca href=\"https://npmjs.org/package/@featurevisor/cli\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/@featurevisor/cli.svg\"\n      alt=\"NPM version\" /\u003e\n  \u003c/a\u003e\n  \u003c!-- Discord --\u003e\n  \u003ca href=\"https://discord.gg/8Ka6KZUCX4\"\u003e\n    \u003cimg src=\"https://img.shields.io/discord/1141123659663147008?color=7289DA\u0026logo=discord\u0026logoColor=white\"\n      alt=\"Discord\" /\u003e\n  \u003c/a\u003e\n  \u003c!-- License --\u003e\n  \u003ca href=\"./LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/l/@featurevisor/sdk.svg\"\n      alt=\"License\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003e\n    \u003ca href=\"https://featurevisor.com\"\u003e\n      Website\n    \u003c/a\u003e\n    \u003cspan\u003e | \u003c/span\u003e\n    \u003ca href=\"https://featurevisor.com/docs\"\u003e\n      Documentation\n    \u003c/a\u003e\n    \u003cspan\u003e | \u003c/span\u003e\n    \u003ca href=\"https://github.com/featurevisor/featurevisor/issues\"\u003e\n      Issues\n    \u003c/a\u003e\n    \u003cspan\u003e | \u003c/span\u003e\n    \u003ca href=\"https://featurevisor.com/docs/contributing\"\u003e\n      Contributing\n    \u003c/a\u003e\n    \u003cspan\u003e | \u003c/span\u003e\n    \u003ca href=\"https://github.com/featurevisor/featurevisor/blob/main/CHANGELOG.md\"\u003e\n      Changelog\n    \u003c/a\u003e\n  \u003c/h3\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003csub\u003eBuilt by\n  \u003ca href=\"https://twitter.com/fahad19\"\u003e@fahad19\u003c/a\u003e and\n  \u003ca href=\"https://github.com/featurevisor/featurevisor/graphs/contributors\"\u003e\n    contributors\n  \u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n# What is Featurevisor?\n\nFeaturevisor is a solution for managing your feature flags, experiments, and remote config. It's built for developers, by developers.\n\nWorkflow can be broken down into 3 steps:\n\n- 1️⃣ Manage feature flags, experiments, and remote config in your Git repository\n- 2️⃣ Trigger CI/CD pipeline to generate and upload datafiles (static JSON files) to your CDN\n- 3️⃣ Fetch and evaluate datafiles in your applications using Featurevisor SDKs\n\nMore documentation available at [https://featurevisor.com](https://featurevisor.com).\n\nSupported features:\n\n- 🚩 **Feature flags**: classic on/off switches\n- 🆎 **Experimentation**: a/b and multivariate tests\n- 👥 **Segmentation**: reusable conditions for targeting groups of users\n- ↗️ **Gradual rollouts**: avoid big bang releases, and go from 0% to 100% rollout gradually\n- 🔧 **Variables**: store key/value pairs for remote config namespaced under each feature\n- 🎯 **Consistent bucketing**: makes sure same user gets same variation across devices/sessions\n- 🌏 **Multiple environments**: Go beyond just staging and production to fit your needs\n- 🏷️ **Tagging**: Load only features relevant to your application, avoiding bloat\n- 👁️ **Tracking**: Track experiment activations with your favourite analytics tool\n\nSDK support:\n\n- [JavaScript](https://featurevisor.com/docs/sdks/javascript) (both Node.js and browser environments)\n- [Swift](https://featurevisor.com/docs/sdks/swift/)\n- [React](https://featurevisor.com/docs/react/)\n- [Vue.js](https://featurevisor.com/docs/vue/)\n\nSwift and Kotlin SDKs are coming soon for native apps.\n\n# Quick start\n\nYou are recommended to see a more detailed quick start guide here: [https://featurevisor.com/docs/quick-start/](https://featurevisor.com/docs/quick-start/).\n\nThe whole process can be broken down into 3 steps:\n\n## Step 1: Create a Featurevisor project\n\nUse `npx` to scaffold a new Featurevisor project:\n\n```\n$ mkdir my-featurevisor-project \u0026\u0026 cd my-featurevisor-project\n\n$ npx @featurevisor/cli init\n$ npm install\n```\n\nYou can now create and manage your feature flags, experiments, and remote config in this directory expressed as YAMLs.\n\nSee the building block guides here:\n\n- [Attributes](https://featurevisor.com/docs/attributes/): building block for conditions\n- [Segments](https://featurevisor.com/docs/segments/): conditions for targeting users\n- [Features](https://featurevisor.com/docs/features/): feature flags and variables with rollout rules\n\n## Step 2: Build and deploy datafiles\n\nOnce the project is ready, you can build your datafiles (JSON files containing configuration of your feature flags):\n\n```\n$ npx featurevisor build\n```\n\nYou will find the output in `dist` directory, that you can upload to your CDN.\n\nSee further guides here:\n\n- [Building datafiles](https://featurevisor.com/docs/building-datafiles/): how to build datafiles\n- [Deploying datafiles](https://featurevisor.com/docs/deployment/): how to deploy datafiles to your CDN\n\nA fully functioning example for deploying with Cloudflare and GitHub Actions (for free) is available [here](https://github.com/featurevisor/featurevisor-example-cloudflare).\n\n## Step 3: Consume datafiles with Featurevisor SDKs\n\nYou can now consume the datafiles from your CDN in your applications directly using Featurevisor SDKs.\n\nFor Node.js and browser environments, install the JavaScript SDK:\n\n```\n$ npm install --save @featurevisor/sdk\n```\n\nNow you can initialize the SDK with the URL of your datafile, and evaluate your feature flags:\n\n```js\nimport { createInstance } from \"@featurevisor/sdk\";\n\n// Initialize the SDK\nconst f = createInstance({\n  datafileUrl: \"https://cdn.yoursite.com/datafile.json\",\n  onReady: () =\u003e console.log(\"Datafile has been fetched and SDK is ready\"),\n});\n\n// Evaluate a feature flag\nconst featureKey = \"myFeature\";\nconst context = {\n  userId: \"user-123\",\n  country: \"nl\",\n};\n\nconst isEnabled = f.isEnabled(featureKey, context);\nconst variation = f.getVariation(featureKey, context);\nconst variable  = f.getVariable(featureKey, \"someVariableKey\", context);\n```\n\nLearn more about SDK usage here: [https://featurevisor.com/docs/sdks/](https://featurevisor.com/docs/sdks/).\n\n# Packages\n\n| Package                                 | Version                                                            | Description                                |\n| --------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------ |\n| [@featurevisor/cli](./packages/cli)     | \u003cimg src=\"https://img.shields.io/npm/v/@featurevisor/cli.svg\" /\u003e   | CLI package                                |\n| [@featurevisor/core](./packages/core)   | \u003cimg src=\"https://img.shields.io/npm/v/@featurevisor/core.svg\" /\u003e  | Core package used by CLI                   |\n| [@featurevisor/react](./packages/react) | \u003cimg src=\"https://img.shields.io/npm/v/@featurevisor/react.svg\" /\u003e | React package                              |\n| [@featurevisor/sdk](./packages/sdk)     | \u003cimg src=\"https://img.shields.io/npm/v/@featurevisor/sdk.svg\" /\u003e   | Universal SDK for both Node.js and browser |\n| [@featurevisor/site](./packages/site)   | \u003cimg src=\"https://img.shields.io/npm/v/@featurevisor/site.svg\" /\u003e  | Static site generator for your project     |\n| [@featurevisor/types](./packages/types) | \u003cimg src=\"https://img.shields.io/npm/v/@featurevisor/types.svg\" /\u003e | Common typings                             |\n| [@featurevisor/vue](./packages/vue)     | \u003cimg src=\"https://img.shields.io/npm/v/@featurevisor/vue.svg\" /\u003e   | Vue.js package                             |\n\n# License\n\nMIT © [Fahad Heylaal](https://fahad19.com)\n","funding_links":[],"categories":["TypeScript","vuejs"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeaturevisor%2Ffeaturevisor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffeaturevisor%2Ffeaturevisor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeaturevisor%2Ffeaturevisor/lists"}