No regrets and we are very happy with it.
In another project, we started with nivo.rocks and eventually migrated everything to echarts. (Usermaven)
I wanted a Gantt chart and while I did achieve what I wanted it wasn't without having to delve into the their source and putting log statements everywhere.
I happen to be using ant design and I've had the same issues there.
Its a bit all over the place and the translations are not great, but i will stick with it.
I also made the mistake of using Ant Design Pro Forms since I wanted to use the StepForm Wizard component. All of the tsdocs are in Chinese and it's barely documented for more than their example use cases :'}
And all that for free. The project was using a commercial library until about a year ago; no regrets since moving to echarts.
React isn't 12 years old, React is 5 different libraries, with paradigms that have lived for about roughly 2 years on average.
I don't know about you, but my projects are more mature than 2 years old. I don't have the patience for that kind of bullshit.
And I've done this stuff long enough to know if the kids decide this is the new fashion, the old stuff might incidentally still work, but all of the library's attention is going to be on what the maintainers are working on.
So React is now a server-side rendered, functional, stateless component library with side effects.
And that sounds like the dumbest thing I've ever read in web development.
My only complaint is the chart-data data structures. Each chart type takes a different structure and axis data structure. They bolted on a data table feature (columns and rows), but it's not as documented and last I tried, incomplete.
Disclaimer: I only tried line charts for time series X axis and bar charts for categorical X axis. No other charts. I had filters, group by and sort by options in control panel. Data was fetched everytime from database when control panel was modified, so no client side number crunching.
My requirements were:
Control panel at top (which I'll manage). Then a grid of charts below with synced cursors and zooms (toggleable).
Basically, grafana, but they're not necessarily time series graphs.
I found uPlot(which is iirc what grafana uses) and eCharts to be the handsdown winners. Within those two, I preferred eCharts as first of all uplot didn't have any docs, LLMs didn't really perform well, and also vue-eplot wrapper didn't work.
Secondly, eCharts had nice animations, which uPlot does not support and I understand why, but I just wanted it for this project. It's really neat, when you add a group by in your control panel the charts nicely animate and the legend shows up etc
The others just did not impress, highcharts, chart.js, c3.js, ag-grid.
But maybe they're better fit for another usecase.
Vue-echarts is such a nice wrapper too.
// your refs from control panel inputs
// chartOption = computed(() => make from inputs)
// <v-chart :chartOption />
Performance wise, it didn't lag upto few month date ranges for daily data that arises out of user interaction. So not super dense like logs or telemetry measurements, but not that sparse either. I didn't really benchmark it with proper stress tests beyond checking if it worked for the usecase at hand.It is also ridiculously reliable. When you have empty/missing data there's no annoying try-catch or guards you have to do when rendering, it automatically shows an empty graph with the size you specified. The title and other decorations still remain.
It also works well inside flex/grid layouts. No nonsense with CSS needed.
Converting the old amcharts code to echarts worked almost automatically with Gemini 2.5 Pro and since a bit over a week all stats in the game ( via webview ) and in the web on the user portal are now using echarts.
I'm even using it in a Three.js visualizer for the recorded workout data ( which is still highly experimental so don't judge the visuals please ): https://portal.vrworkout.at/static/workout_visualizer/index....
dev_l1x_be•15h ago
https://echarts.apache.org/en/builder.html
makepanic•14h ago
https://apache.github.io/echarts-handbook/en/basics/import/#...