React Candlesticks—charts built for serious trading UIs
Build responsive trading charts in React with candlesticks, indicators, crosshairs, zoom, and theming—rendered on Canvas for smooth performance on large datasets.
One package.
Start charting.
Install one package and render candlesticks, volume bars, indicators, and crosshairs with a composable React API.
npm install react-candlesticks
import { Chart, Panel, Candlesticks, VolumeBars, SMA, exampleData } from 'react-candlesticks'; export default function App() { return ( <Chart granularity="d1" data={exampleData} theme="dark" > <Panel heightRatio={3}> <Candlesticks /> <SMA period={50} /> </Panel> <Panel> <VolumeBars /> </Panel> </Chart> ); }
A charting engine for modern trading UIs.
Built for real trading interfaces — handles multi-panel layouts, zooming, panning, and crosshair interactions with predictable performance.
Renders to canvas for smooth zoom, pan, and hover. Viewport-based indicators keep performance steady as datasets grow.
Canvas · Large datasets
Compose charts using JSX with nested Panel
and layer components, or use the flat
panels
prop API. Fully typed and flexible.
Includes essential indicators like SMA, EMA, RSI, and MACD, with configurable settings for each study. More indicators are in development.
Built-in · ConfigurableEach layer includes its own configurable legend with live outputs on hover, alongside configurable time and value crosshairs.
Legends · Crosshairs
Wheel and touchpad zoom, pinch-to-zoom, and smooth scrolling.
Supports controlled mode via
onZoom and
onScroll.
Customize everything — from chart styling and layout to indicator behaviour. Start with built-in
light and
dark
themes, or define your own.
One JSX tag
per indicator.
Add indicators as JSX elements inside panels. Adjust parameters such as period lengths, colors, and display options through props.
Light, dark,
or fully custom.
Pass theme="light" or theme="dark" — or pass a full Theme config object to override any detail.
Start building
trading charts
for your app.
Works with any React project. No backend. Bring your own data.