Vanilla or React
Use the imperative class API or the React component wrappers - same chart engine, identical output, identical bundle weight.
| SwiftChart | Highcharts | Chart.js | Recharts | |
|---|---|---|---|---|
| Bundle (min+gzip) | ~26 KB | ~32 KB | ~19 KB | ~95 KB |
| Chart types | 25 | 40+ | 8 | 14 |
| Runtime dependencies | 0 | 0 | 0 | 10+ (d3) |
| Renderer | Canvas 2D | SVG / Canvas | Canvas | SVG |
| React bindings | First-class | 3rd-party wrapper | 3rd-party wrapper | Native |
| Data schema | Any shape | Fixed | Fixed | Fixed |
| License | MIT | Commercial | MIT | MIT |
SwiftChart bundle size is measured from this repo’s dist/esm/index.js at the current commit. Other libraries’ figures are approximate min+gzip values from bundlephobia for their current major versions; check the live numbers there for precision.
Vanilla or React
Use the imperative class API or the React component wrappers - same chart engine, identical output, identical bundle weight.
Schema-agnostic
Pass any data shape. Auto-detect fields, or map them explicitly - no rigid schema required.
4 themes built-in
midnight, arctic, ember, forest - or define your own with addTheme().
Animated by default
Easings, durations, and transitions tuned out of the box. Disable with animate: false.
Performance-first
LTTB downsampling, viewport culling, quadtree hover, and offscreen rendering - included.
Production-ready
545+ tests, strict TypeScript, ESM + CJS dual-package, attw + publint clean.