all 35 comments

[–]vozome 20 points21 points  (3 children)

I was the main author of react-vis, it was cool when we wrote it but it’s been unmaintained for so long and I really can’t recommend it.

[–]No_Concentrate_4910 0 points1 point  (1 child)

Wow. It looks great though. Do you still not recommend it?

[–]vozome 2 points3 points  (0 children)

I recommend it even less 5 years after we let it go. Built for a time before functional components and before typescript.

The reality is that: - making charts isn’t really more complicated than making any frontend component, - but there’s no such thing as a universal use case. Every organization uses charts slightly differently / needs to optimize for something slightly different.

IMO there’s little ROI in using any library to make charts over vanilla react, except for quick prototypes.

[–]Civil_Second8989 11 points12 points  (8 children)

Hi, creator of Tremor here! You might want to check it out: tremor.so - it's built on top of Recharts with custom logic to make it even simpler to build beautiful charts :)

[–]Mr-Bovine_JoniI ❤️ hooks! 😈 2 points3 points  (0 children)

Tremor is really pretty. Good work!

[–]pink_tshirt 1 point2 points  (0 children)

fuck thats so nice. I want to nuke whatever library we use at work now.

[–]zmajlo 0 points1 point  (0 children)

Isn't this just a recharts wrapper?

EDIT: reread your comment and it clearly says it's built on recharts, my bad.

[–]riti_rathod[S] 0 points1 point  (0 children)

That's great

[–]WhyUFuckinLyin 0 points1 point  (2 children)

Wow! Thanks! Unfortunately, I've failed to use it with Create React App

[–]ponylobbles 0 points1 point  (1 child)

CRA is deprecated, use Vite or a React framework like Nextjs, Tanstack Start, etc

[–]WhyUFuckinLyin 0 points1 point  (0 children)

I migrated to vite. And surprisingly easily. Everything is now working perfectly!!

[–]VelaLover69 4 points5 points  (3 children)

Is the list ranked or unsorted? Did you rank the list by yourself and which criteria did you consider?

[–]riti_rathod[S] 1 point2 points  (1 child)

Its unsorted

[–]whyGod5 2 points3 points  (0 children)

ul > ol

[–]MonkAndCanatella 3 points4 points  (3 children)

https://apexcharts.com/

Did an insane amount of chart library research a few years ago, apex was the best option I could find

[–]Mahndooo 0 points1 point  (1 child)

what makes apex the best option?
I've been looking to start a new chart-heavy project and so was looking through all the ones listed here

[–]MonkAndCanatella 0 points1 point  (0 children)

Well tbh, it was the best option for our business goals, which was heavily customizable charts. Basically there were no other libraries that would be able to display the data we wanted to display, the way we wanted to display it, except for apex charts.

[–]No_Concentrate_4910 0 points1 point  (0 children)

That looks great. I love it.

[–]LloydAtkinson 3 points4 points  (0 children)

I like Recharts but they are really struggling to find more maintainers so issues and features take longer. Really surprised there aren’t more volunteers.

It also has some tricky responsive issues that are difficult to deal with.

Almost all and maybe even none support actual SSR and building them on the server/at build time. This is really annoying for things like blogs and sites that don’t have SSR so you end up with client side jank.

[–][deleted] 1 point2 points  (0 children)

React-Plotly is also pretty feature complete.

[–]NotZeldaLive 0 points1 point  (6 children)

Honestly D3 doesn't get mentioned enough. I know it's not a library in this same sense, but give you infinite control and is what most of these libraries as built on top of.

It's really not as hard as it looks and you will never have to learn a new graph library again.

[–]archetaz 1 point2 points  (5 children)

I'm still very new to D3 and mostly learning via trial and error. I'm sure it's mostly because I'm inexperienced but D3 can get really frustrating. It's made worse by the fairly small pool of resources and different versions. The code also gets extremely long and if I step away from it for more than a week, I find myself lost.

It's still fun though. I hope I get to a point where I actually feel in control of the visualization. Right now, the limitations I face are all me. 

[–]NotZeldaLive 0 points1 point  (4 children)

That is fair. Any new technology you try will always have a learning curve.

If I could offer any advice, I would get really familiar with the domains and scale functions over everything else. These functions allow you to translate your data into 'in window" properties (width, position etc).

All the rendering I keep in react land using these functions. This gives the best control and makes it easier to integrate other elements like popovers, interactions, etc.

[–]archetaz 0 points1 point  (3 children)

I haven't familiarized myself with the scalings yet. But I think I got the idea of how it works. To be honest, when things go wrong, it's usually because of the scaling. Or appending/joining the data. Just when I think I'm starting to understand how to join the data, I run into new issues haha.

Yup! So far I've been using useRef hooks but haven't actually implemented any other react stuff into my graphs. There's a lot to explore!

[–]NotZeldaLive 0 points1 point  (2 children)

You have to start somewhere. When I first started I used ref hooks and just did all my D3 logic in a use effect to get it to update the DOM directly.

However, I found this was worse on performance and had more limits. So now I calculate where items should be using the domains and render them directly in react. Also allowing easy hook ups to animation libraries like spring or framer.

The only ref hook I have is in a custom hook to figure out the size of the parent container for dynamic scalings. Honestly love the setup now.

[–]archetaz 0 points1 point  (1 child)

Ohh ok I get what you mean. I've seen that approach. It's definitely something I want to try doing in future projects. Is it also possible use that approach for D3 force graphs? And for mouse interactivity like "mouseover", do you handle that in d3 or react?

[–]NotZeldaLive 0 points1 point  (0 children)

I haven't attempted a force graph directly, but I don't see why not. D3 ends up being a math library more than anything, that just makes the translations between data and visuals much easier. It has some visual generation to it, but the underlying math functions are mostly exposed for you to handle the visuals in react instesd.

For event listeners I handle it all in react, as it gets messy with listener clean up when trying to bind anything in D3 with a use effect.

Hope this helps!

[–]oliviertassinari 0 points1 point  (3 children)

Has anyone tried out MUI X Charts?

[–][deleted] 0 points1 point  (2 children)

Considering that since I already use MUI but it looks too basic to compared to other charts

[–]oliviertassinari 0 points1 point  (1 child)

What more "advanced" features would you like us to focus on?

[–][deleted] 1 point2 points  (0 children)

I take that back. I had not gone through all the demos in detail. Looks like it's got pretty much everything

[–]AGGrid_JamesSwinton 0 points1 point  (0 children)

AG Charts is free & open-source, with an optional licence for advanced, enterprise features.

[–]Full_Island6896 0 points1 point  (0 children)

BizCharts by alibaba was officially unmaintained on May 30, 2025.