Demo
Interactive LiveCharts walkthrough — every major feature in one place
LiveCharts is a real-time animated charting library with a framework-agnostic canvas engine and React bindings. One <canvas>, smooth interpolation at 60fps.
Degen mode (chart shake and particles) with momentum arrows.
Everything else is opt-in: momentum, orderbook, candlesticks, multi-series, particles.
Getting started
npm install livechartsThe component fills its parent. Set a height on the wrapper.
import { LiveChart } from "livecharts/react";
function Chart({ data, value }) {
return (
<div style={{ height: 200 }}>
<LiveChart data={data} value={value} />
</div>
);
}data is an array of { time, value } points (unix seconds). value is the latest number.
Two props. That's it.
Feed it however you like — WebSocket, polling, random walk. LiveCharts interpolates between updates.
Resting heart rate. Custom formatter, exaggerated Y-axis.
Momentum
The momentum prop adds directional arrows to the live tip. Pass true to auto-detect, or force "up" / "down" / "flat".
Arrows fade out fully before the new direction fades in.
Value overlay
showValue renders the current value as a large number over the chart via DOM (not React re-renders). Pair with valueMomentumColor to tint by direction.
60fps value overlay with momentum colouring.
Time windows
Pass a windows array for horizon buttons. Styles: "default", "rounded", "text".
<LiveChart
windows={[
{ label: "1m", secs: 60 },
{ label: "5m", secs: 300 },
]}
windowStyle="rounded"
/>CPU usage with occasional spikes. Rounded time windows.
Reference line
referenceLine={{ value, label? }} draws a horizontal threshold.
Polymarket-style prediction line. "Will Bitcoin stay above $67,500?"
Orderbook
Pass orderbook with bids / asks as [price, size][]. Labels spawn, drift, and fade — speed reacts to momentum and churn.
Kalshi-style orderbook stream. Bid and ask sizes float upward behind the price line.
Candlestick
OHLC candles with a live forming candle. Built-in toggle morphs between line and candle views.
Same data, two views. The toggle morphs between line and candlestick.
Multi-series
Pass series to draw overlapping lines with toggle chips.
Prediction market. Three outcomes, always summing to 100%. Click the chips to toggle lines.
States
loading shows a breathing placeholder that morphs into data. paused freezes the view; resume fades or morphs depending on how long you were away.
Loading state, then data arrives. Loops every 9 seconds.
Theming
Pass any CSS color to color — LiveCharts derives the palette. theme switches light / dark chrome.
Dark theme. Same component, different colour.
More features
exaggerate— tighten Y-range for small movesscrub— crosshair tooltips (on by default)degen— particles + shake on swingsbadgeVariant="minimal"orbadge={false}
How it works
One canvas, one requestAnimationFrame loop. Display state lerps toward new values (lerpSpeed, default 0.08). The Y-range snaps outward instantly so the line is never clipped.
Stress testing
Charts that only look good on calm data are not useful.
Wild swings, fast updates (100ms)
Near-flat, ultra-low volatility, exaggerate (150ms)
Chaotic, huge spikes (80ms)
Sharp reversals, isolated spikes, and chaos:
Frequent sharp reversals (60ms updates)
Near-flat with massive isolated spikes (120ms)
Rapid zigzag oscillation (50ms)
Irregular arrival — gaps and bursts:
Just a line
If you only want a line that moves when a number changes: