Pick the viz library by the job
Official docs do not name a best charting library. A bar chart, a million-point map, and a pathfinding network are different jobs — grammars, template kits, React layers, and GPU graphs do not share a ranking.
People still ask for the best frontend visualization library the way they used to ask for the best JavaScript framework. The official pages fetched in August 2026 refuse the question. D3 says it is not a charting library. Chart.js ships eight canvas types. deck.gl draws GPU layers over someone else’s basemap. Cytoscape.js is a network analysis kit. Those are not competitors for one slot.
A bar chart, a million-point geospatial overlay, and a pathfinding network are different product surfaces. They use different data models and different renderers. Vendor “best of 2026” listicles showed up in search and were not used as evidence. Victory, sigma.js, and vis-network official pages were requested and not fetched. The question stays open.
A toolbox, then a grammar
D3 is the low-level kit. Scales, shapes, selections, a scene you assemble yourself. Observable Plot sits on top of it and optimizes for conciseness — more efficient, the official tradeoff says, and necessarily less expressive. Vega-Lite is a different grammar: a JSON spec that encodes data onto mark properties; the compiler produces axes, legends, and scales, then emits Vega. No fetched official page ranks Plot against Vega-Lite. Both leave the bespoke scene to the layer underneath.
Eight types, twenty types, a commercial seat
The batteries-included kits sell named chart types and a configuration API. Chart.js documents eight canvas types and a million-point decimation demo. Apache ECharts documents twenty-plus types, canvas or SVG, and an official “10 million data in realtime” claim. Plotly.js is MIT and catalogs statistical, 3D, map, and finance charts. Highcharts is commercial — Internal, SaaS, or OEM — and the shop lists Core at 366 US dollars a seat.
Those homepage numbers are not a bake-off. A Grokipedia table that put Highcharts around 10,000 points and Chart.js around 5,000 in one test conflicts with the official claims. The wiki records the conflict and does not treat it as an official comparison.
React is a second posture, not a wrapper war
visx exists so teams stop putting D3 selections inside useEffect. It keeps D3’s math and lets React update the DOM. Version 4 needs React 18 or 19. MIT. Animation is not bundled. Recharts hides that and exposes composable SVG chart components with a lightweight D3-submodule dependency. nivo is a D3-and-React component catalog. They are not interchangeable with vanilla Chart.js or ECharts. D3 can sit beside React; its DOM modules compete with the virtual DOM — the problem visx is designed around. Victory’s official docs were not fetched.
Maps and networks are not charts
deck.gl is a GPU layer kit — WebGPU or WebGL2 — over MapLibre, Mapbox, Google, or ArcGIS. The engine is luma.gl, not Three.js. Cytoscape.js is a network visualization and analysis library, MIT. A pathfinding graph is not a line chart with extra steps. Official pages for sigma.js and vis-network did not come back this pass.
What a screen reader actually gets
Accessibility is not one test. Highcharts ships a WCAG 2.2 module with every license — keyboard navigation, screen readers, ARIA on elements. Without it the chart is “interpreted as an image with the chart title in the aria-label.” Chart.js documents the opposite default: canvas content will not be accessible to screen readers unless the integrator adds a role, an aria-label, or fallback content. ECharts’ homepage mentions automatically generated chart descriptions and decal patterns; the handbook aria page was not fetched. Those are different kinds of claim. They are not a ranked audit.