Let’s face it – numbers are ugly. But their visualization can be beautiful and (more importantly) insightful to users. Most React apps include some kind of data visualization feature. In fact, this is true not only for React. Charts, graphs and other types of visual representations of data are some of the most common components of mobile and web applications today.
Sure, you can homebrew your charts in React without relying on library components designed, written, maintained and used by others. However, considering the time you will need to spend developing and maintaining the code you will create? It’s clear why a popular and well-maintained chart library for React is the way to go.
Which brings us to the question: which React charting library should you choose? As with any library or component you introduce into your React project, you should consider a few things. In addition to the features a chart library provides, you should take into account the quality of documentation, the impact on performance, library dependencies and the costs of licensing and support.
To help you compare the available options, we’ve listed the top 11 React chart and data visualization libraries available.
Top 11 React chart libraries
One of the oldest and most reliable chart libraries available for React is recharts. This library features native SVG support, with only light dependency on some D3 submodules. It uses declarative components, with the components of charts purely presentational.
With an active developer community and 15.1K stars on GitHub at the time of writing, recharts is usually the first library to consider when looking for a data visualization library for React applications. It also boasts 481K weekly npm downloads.
Chart.js is broadly used in both React and Vue.js with each having its own wrapper library. This library is the wrapper for React, but note that the majority of documentation you will be referencing is that of Chart.js itself. Thankfully, it’s very thorough and community support is also worth noting.
The wrapper library, react-chartjs-2, has 3.4K stars on GitHub and 298K weekly npm downloads.
Victory is a set of modular charting components for React and React Native. It uses the same API for web and React Native applications for easy cross-platform charting. While quite simple to learn and use, Victory is quite flexible allowing for quick integration of line, bar, pie, and candlestick charts in your apps.
One of the reasons for the popularity of this library is the fact that it was developed by Formidable, a well-known company employing highly-skilled developers and designers all over the world. Victory has 8.4K stars of GitHub and a weekly npm download rate of 141K.
Visx is a React chart component library by Airbnb with 11.3K stars and a very active repository on GitHub. Visx combines D3.js with the advantages of React DOM.
The developers behind this open source tool insist it is not a chart library but rather an un-opinionated collection of reusable low-level visualization components.
Another collection of React components on top of D3.js is nivo. What makes nivo unique compared to other chart libraries for React is its ability to render on the server side. The extensive nivo component library offers templates for a variety of useful data visualization charts and graphs.
Nivo also excels in flexibility, offering SVG, HTML and Canvas charts in a single library. It also offers motion/transitions powered by react-motion and though it has only 7.7K stars on GitHub, nivo is a powerful solution for versatile responsive visualization needs.
If you’re looking for ease-of-use and a library you can learn faster than you can order than Uber, then Uber has one for you.
React-vis is a collection of React components to render common data visualization charts. These include line/area/bar charts, heat maps, scatterplots, contour plots, hexagon heatmaps, pie and donut charts, sunbursts, radar charts, parallel coordinates, and tree maps.
With just 7.5K stars on GitHub and no major releases in over 5 months (at the time of writing), react-vis may not be your first choice. That said, users have been praising the documentation.
Another familiar brand name with its own React chart library on GitHub is AliBaba. Their library, BizCharts, offers just that – charting for business applications based on G2 and React.
BizCharts supports ES6 React syntax and boasts an impressive template library. That said, the documentation and gallery itself are in Chinese. This React chart library has a small, mostly Asian, following that has earned it a total of 5.4K stars on GitHub and a weekly volume of 27K npm downloads.
Rumble-charts is a modest and fairly anonymous charting and visualization library for React. The developers of this library describe it simply as React components for building composable and flexible charts to visualize your data.
It’s based on D3.js under the hood and sadly isn’t very well-maintained or frequently updated with new features.
As the name suggests, this library offers extensive and versatile templates for stock charts in your React app. It packs over 60 technical indicators and overlays and is ready to serve your financial data visualization needs.
It’s worth noting that this library has only 2.9K stars on GitHub and is not frequently maintained or updated.
With react-stockcharts unmaintained, a fork of the project emerged with typescript syntax and bug fixes – react-financial-charts. Though still unknown to most (with only 116 stars on GitHub!), it is becoming a fair alternative to the defunct react-stockcharts.
If you’re looking for a React library that focuses on time series components – you’ve found it. This library contains a set of modular charting components created specifically to visualize time series data and network traffic data in particular on React. Low level elements are constructed using d3, while higher level composability is provided by React.
This library is not actively maintained but almost makes up for it with extensive documentation and examples.
Did we forget one? Did a new one come around that didn’t make it onto out list in time? Let us know in the comments!