visx is a collection of reusable low-level visualization components for React that combines d3 for calculations with React's declarative DOM updates.
The problem visx solves is the friction of mixing d3's imperative selection model with React's declarative paradigm. Developers typically resort to copying d3 code into useEffect hooks, which creates a poor developer experience. visx instead provides React components that wrap d3's mathematical and computational capabilities, eliminating the need to work directly with d3 selections, enter/exit/update patterns, or imperative DOM manipulation. The library is intentionally unopinionated and modular, allowing teams to use only the packages they need and build their own higher-level chart libraries on top without exposing d3 to end users.
Teams should adopt visx when they want to build custom visualizations or create internal chart libraries without the overhead of learning d3's mental model. It suits projects where bundle size matters and where teams need flexibility to implement their own design systems rather than being locked into a pre-built charting library's opinions. The tool works with React 18 or 19 and also supports Preact through aliasing. Unlike animation libraries that bundle specific solutions, visx deliberately omits built-in animation to avoid forcing dependencies; instead it works with any React animation library your project already uses.
The project maintains active development with regular updates to its package ecosystem and migration guides for major versions. Documentation includes a comprehensive gallery of examples demonstrating real-world usage patterns across different visualization types.