// the find
naver/billboard.js
📊 Re-usable, easy interface JavaScript chart library based on D3.js, with SVG and Canvas rendering support
billboard.js is a D3-based charting library that renders SVG by default and offers an opt-in Canvas mode for dense axis charts. It has a documented migration path from C3.js and suits developers who want a drop-in chart layer with many chart types and built-in interactions, without writing D3 by hand.
- The Canvas renderer is a separate entry point (billboard.js/canvas) enabled through render.mode, so the switch away from SVG is explicit rather than a rewrite. The checked-in benchmark directory and perf baseline mean the performance claims are at least being measured.
- Shapes and interactions are named exports such as bar, line, and zoom, so an ESM build can include only what a chart uses. The gzip badge points at a public size measurement, which is more useful than a vague claim about being lightweight.
- The React wrapper sits on its own subpath, so importing it does not pull the full library into a non-React bundle. It takes the bb namespace as a prop, which keeps the wiring visible.
- The test tree is split into api, esm, and Canvas-specific specs, with a Coveralls badge and a CI workflow in the repo. The Canvas coverage specs are the ones to read if you plan to depend on that path.
- Canvas mode is deliberately narrow. The README limits it to certain chart types and says SVG parity has a defined scope, but pushes the details to CHANGELOG-v4. If you need identical tooltips, zoom, or selection across every chart type, read those notes before committing.
- Most of the real documentation lives on a GitHub wiki and a separate Pages site, not in the repo. The migration guide, roadmap, and how-tos are there, so the docs can drift from the version you actually install.
- D3 is a hard dependency with a version matrix: billboard 3.x needs D3 6 or later, and 1.x to 2.x need D3 4 or 5. The packaged build bundles its own D3 and the README calls it unofficial, so pick one loading strategy and stick to it.
- Legacy browser support is explicitly not guaranteed. The README sends you to a wiki page for custom bundling, which is more work than the one-line install suggests.