Show HN: uPlot.js v1.0 – A fast, small chart for time series, OHLC and bars

5 points by leeoniya ↗ HN
Hello again!

5 months and ~400 commits since the initial prototype: https://news.ycombinator.com/item?id=21207132

v1.0 has shipped! - https://github.com/leeoniya/uPlot

A non-exaustive list of features/concerns that have been addressed since v0.1.0:

  - A terse, consistent API, (w/ plugins & hooks)
  - Timezone & DST handling
  - Point rendering
  - Bi-directional zooming
  - Dynamic data updates (streaming)
  - Numeric x scales (non-temporal)
  - Area fills & high/low bands
  - Dependent scales (°C -> °F)
  - Cursor sync across charts
  - Highlight closest series
  - Axis labeling & positioning
  - Bars & OHLC (via tiny plugins)
  - Feature gates for even smaller custom builds
A bunch of demos: https://leeoniya.github.io/uPlot/demos/index.html

About a dozen brave early adopters helped me weed out bugs, add features, refine the API and contributed demo code. Without them there'd be no v1.0, so thank you. So far there are some cool use-cases. One user renders several hundred hundred-point charts per page - something that's impossible with WebGL or heavier charting libs. There's been a prototype for Grafana panel integration. The author of Phaser [1] is currently taking uPlot for a perf-monitoring test drive while working on the new engine: https://github.com/phaserjs/phaser4-dev :D

Also, a shout out to the Chart.js guys, who recently tagged v3.0-alpha which performs 3x better than v2 on uPlot's benchmark, and is the only lib to have made any noticeable headway, let alone multiple factor!

cheers!

[1] https://github.com/photonstorm/phaser

1 comment

[ 3.1 ms ] story [ 13.5 ms ] thread
I've been following uPlot since that prototype; the performance metrics were always impressive, and now that the features are there, I think it can have an impact especially where other JS libraries hit performance issues.