{"id":13401192,"url":"https://github.com/airbnb/visx","last_synced_at":"2026-10-18T21:00:33.553Z","repository":{"id":37438241,"uuid":"85095608","full_name":"airbnb/visx","owner":"airbnb","description":"🐯 visx | visualization components","archived":false,"fork":false,"pushed_at":"2026-06-22T14:25:22.000Z","size":16763,"stargazers_count":21079,"open_issues_count":158,"forks_count":775,"subscribers_count":136,"default_branch":"master","last_synced_at":"2026-10-18T14:15:44.781Z","etag":null,"topics":["chart","d3","data-visualization","react","svg","visualization","visx","vx"],"latest_commit_sha":null,"homepage":"https://visx.airbnb.tech","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/airbnb.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":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-03-15T16:25:41.000Z","updated_at":"2026-10-18T09:45:14.000Z","dependencies_parsed_at":"2024-01-13T03:34:44.988Z","dependency_job_id":"fe41dabe-0e2b-4c61-8fe0-e0a1a14bea6f","html_url":"https://github.com/airbnb/visx","commit_stats":{"total_commits":2723,"total_committers":163,"mean_commits":16.70552147239264,"dds":0.821520381931693,"last_synced_commit":"6a1417752737ffc1f6dd0d66092e54b8904c3d4f"},"previous_names":["hshoff/vx"],"tags_count":317,"template":false,"template_full_name":null,"purl":"pkg:github/airbnb/visx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airbnb%2Fvisx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airbnb%2Fvisx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airbnb%2Fvisx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airbnb%2Fvisx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/airbnb","download_url":"https://codeload.github.com/airbnb/visx/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airbnb%2Fvisx/sbom","scorecard":{"id":173425,"data":{"date":"2025-08-11","repo":{"name":"github.com/airbnb/visx","commit":"86738178e86fdc0feacf83ac96e68724da0627c2"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Code-Review","score":3,"reason":"Found 11/30 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":1,"reason":"0 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/pull_request.yml:1","Warn: no topLevel permission defined: .github/workflows/push.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull_request.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/airbnb/visx/pull_request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull_request.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/airbnb/visx/pull_request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull_request.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/airbnb/visx/pull_request.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pull_request.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/airbnb/visx/pull_request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/push.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/airbnb/visx/push.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/push.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/airbnb/visx/push.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/push.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/airbnb/visx/push.yml/master?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":9,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/airbnb/.github/SECURITY.md:1","Info: Found linked content: github.com/airbnb/.github/SECURITY.md:1","Warn: One or no descriptive hints of disclosure, vulnerability, and/or timelines in security policy","Info: Found text in security policy: github.com/airbnb/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 11 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"94 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-8hc4-vh64-cxmj","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-36jr-mh4h-2g58","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6","Warn: Project is vulnerable to: GHSA-vh7m-p724-62c2","Warn: Project is vulnerable to: GHSA-r9p9-mrjm-926w","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-ww39-953v-wcq6","Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44","Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-8cf7-32gw-wr33","Warn: Project is vulnerable to: GHSA-hjrf-2m68-5959","Warn: Project is vulnerable to: GHSA-qwph-4952-7xr6","Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-5v2h-r2cx-5xgj","Warn: Project is vulnerable to: GHSA-rrrm-qjm4-v8hf","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-fmvm-x8mv-47mj","Warn: Project is vulnerable to: GHSA-f82v-jwr5-mffw","Warn: Project is vulnerable to: GHSA-c59h-r6p8-q9wc","Warn: Project is vulnerable to: GHSA-g77x-44xx-532m","Warn: Project is vulnerable to: GHSA-7gfc-8cq8-jh5f","Warn: Project is vulnerable to: GHSA-qpjv-v59x-3qc4","Warn: Project is vulnerable to: GHSA-r683-j2x4-v87g","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-hwj9-h5mp-3pm3","Warn: Project is vulnerable to: GHSA-wvhm-4hhf-97x9","Warn: Project is vulnerable to: GHSA-h4hr-7fg3-h35w","Warn: Project is vulnerable to: GHSA-gj77-59wh-66hg","Warn: Project is vulnerable to: GHSA-hqhp-5p83-hx96","Warn: Project is vulnerable to: GHSA-3949-f494-cm99","Warn: Project is vulnerable to: GHSA-x7hr-w5r2-h6wg","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-g4rg-993r-mgx7","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-w5p7-h5w8-2hfq","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-662x-fhqg-9p8v","Warn: Project is vulnerable to: GHSA-394c-5j6w-4xmx","Warn: Project is vulnerable to: GHSA-78cj-fxph-m83p","Warn: Project is vulnerable to: GHSA-fhg7-m89q-25r3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T17:08:15.190Z","repository_id":37438241,"created_at":"2025-08-16T17:08:15.190Z","updated_at":"2025-08-16T17:08:15.190Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38339907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-18T02:00:06.448Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["chart","d3","data-visualization","react","svg","visualization","visx","vx"],"created_at":"2024-07-30T19:00:59.675Z","updated_at":"2026-10-18T21:00:33.547Z","avatar_url":"https://github.com/airbnb.png","language":"TypeScript","funding_links":[],"categories":["Data Visualization","Uncategorized","TypeScript","Svg/Canvas","Repository","UI Components","Charts \u0026 Data Visualization","Packages","📖 Categories","Web","目录","React [🔝](#readme)","📊 Data \u0026 Analytics"],"sub_categories":["Uncategorized","Data Visualization","React Charts","Frontend and UI Components","\u003ca id=\"ui\"\u003eui\u003c/a\u003e"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/visx-geometry.png\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca title=\"npm version\" href=\"https://www.npmjs.com/~visx\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/@visx/demo.svg?style=flat-square\" /\u003e\n  \u003c/a\u003e\n  \u003ca title=\"@visx/shape npm downloads\" href=\"https://www.npmjs.com/package/@visx/shape\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/dm/@visx/shape.svg?style=flat-square\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n### visx\n\nvisx is a collection of reusable low-level visualization components. visx combines the power of d3\nto generate your visualization with the benefits of react for updating the DOM.\n\n\u003c!-- prettier-ignore --\u003e\n\u003e [!IMPORTANT]\n\u003e **visx v4 is the current stable release** and requires React 18 or 19.\n\u003e\n\u003e ```bash\n\u003e npm install @visx/shape\n\u003e ```\n\u003e\n\u003e Upgrading from v3? See the [visx 4 migration guide](./MIGRATION.md).\n\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e\n    \u003ca href=\"https://airbnb.io/visx\"\u003eDocs\u003c/a\u003e\n  \u003c/strong\u003e\n  \u0026bull;\n  \u003cstrong\u003e\n    \u003ca href=\"https://airbnb.io/visx/gallery\"\u003eGallery\u003c/a\u003e\n  \u003c/strong\u003e\n  \u0026bull;\n  \u003cstrong\u003e\n    \u003ca href=\"./CHANGELOG.md\"\u003eChangelog\u003c/a\u003e\n  \u003c/strong\u003e\n  \u0026bull;\n  \u003cstrong\u003e\n    \u003ca href=\"./MIGRATION.md\"\u003eMigration\u003c/a\u003e\n  \u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://airbnb.io/visx/gallery\"\u003e\n    \u003cimg src=\"./assets/visx-gallery.png\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Usage\n\nLet's make a simple bar graph.\n\nFirst we'll install the relevant packages:\n\n```bash\nnpm install --save @visx/mock-data @visx/group @visx/shape @visx/scale\n```\n\n\u003cimg src=\"./assets/simplebar.png\" height=\"150\" /\u003e\n\n```javascript\nimport React from 'react';\nimport { letterFrequency } from '@visx/mock-data';\nimport { Group } from '@visx/group';\nimport { Bar } from '@visx/shape';\nimport { scaleLinear, scaleBand } from '@visx/scale';\n\n// We'll use some mock data from `@visx/mock-data` for this.\nconst data = letterFrequency;\n\n// Define the graph dimensions and margins\nconst width = 500;\nconst height = 500;\nconst margin = { top: 20, bottom: 20, left: 20, right: 20 };\n\n// Then we'll create some bounds\nconst xMax = width - margin.left - margin.right;\nconst yMax = height - margin.top - margin.bottom;\n\n// Accessors\nconst getLetter = (d) =\u003e d.letter;\nconst getFrequency = (d) =\u003e d.frequency * 100;\n\n// And then scale the graph by our data\nconst xScale = scaleBand({\n  range: [0, xMax],\n  round: true,\n  domain: data.map(getLetter),\n  padding: 0.4,\n});\nconst yScale = scaleLinear({\n  range: [yMax, 0],\n  round: true,\n  domain: [0, Math.max(...data.map(getFrequency))],\n});\n\n// Finally we'll embed it all in an SVG\nfunction BarGraph() {\n  return (\n    \u003csvg width={width} height={height}\u003e\n      {data.map((d) =\u003e {\n        const letter = getLetter(d);\n        const barHeight = yMax - (yScale(getFrequency(d)) ?? 0);\n        return (\n          \u003cGroup key={`bar-${letter}`}\u003e\n            \u003cBar\n              x={xScale(letter)}\n              y={yMax - barHeight}\n              height={barHeight}\n              width={xScale.bandwidth()}\n              fill=\"#fc2e1c\"\n            /\u003e\n          \u003c/Group\u003e\n        );\n      })}\n    \u003c/svg\u003e\n  );\n}\n```\n\nFor more examples using `visx`, check out the [gallery](https://airbnb.io/visx/gallery).\n\n## Motivation\n\n**Goal**\n\nThe goal is to create a library of components you can use to make both your own reusable chart\nlibrary or your slick custom one-off chart. visx is largely unopinionated and is meant to be built\nupon. Keep your bundle sizes down and use only the packages you need.\n\n**How?**\n\nUnder the hood, visx is using d3 for the calculations and math. If you're creating your own awesome\nchart library on top of visx, it's easy to create a component api that hides d3 entirely. Meaning\nyour team could create charts as easily as using reusable react components.\n\n**But why?**\n\nMixing two mental models for updating the DOM is never a good time. Copy and pasting d3 code into\n`useEffect()` is just that. This collection of components lets you easily build your own reusable\nvisualization charts or library without having to learn d3. No more selections or\n`enter()`/`exit()`/`update()`.\n\n## FAQ\n\n1. What does `visx` stand for?\n\n   \u003e visx stands for visualization components.\n\n1. Do you plan on supporting animation/transitions?\n\n   \u003e A common criticism of visx is it doesn't have animation baked in, but this was a conscious\n   \u003e choice. It's a powerful feature to not bake it in.\n   \u003e\n   \u003e Imagine your app already bundles `react-motion`, adding a hypothetical `@visx/animation` is\n   \u003e bloat. Since visx is react, it already supports all react animation libs.\n   \u003e\n   \u003e Charting libraries are like style guides. Each org or app will eventually want full control\n   \u003e over their own implementation.\n   \u003e\n   \u003e visx makes this easier for everyone. No need to reinvent the wheel each time.\n   \u003e\n   \u003e more info: \u003chttps://github.com/airbnb/visx/issues/6\u003e\n\n1. Do I have to use every package to make a chart?\n\n   \u003e nope! pick and choose the packages you need.\n\n1. Can I use this to create my own library of charts for my team?\n\n   \u003e Please do.\n\n1. Does visx work with [preact](https://preactjs.com/)?\n\n   \u003e yup! alias `react` + `react-dom` to `preact/compat`. For visx v4, configure your package\n   \u003e manager to satisfy the React 18/19 peer dependency range.\n\n1. I like using d3.\n\n   \u003e Me too.\n\n## Thanks\n\nThanks to [Happo](https://happo.io) for providing the visual regression testing platform that\nhelps us review UI changes and catch unintended visual regressions.\n\n\u003cp\u003e\n  \u003ca href=\"https://happo.io\"\u003e\n    \u003cimg src=\"./assets/happo-wordmark.svg\" alt=\"Happo\" height=\"60\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Development\n\nPlease see [CONTRIBUTING.md](./CONTRIBUTING.md)\n\n:v:\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairbnb%2Fvisx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fairbnb%2Fvisx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairbnb%2Fvisx/lists"}