Skip to main content
LiveChart renders a single line series by default. History comes from a SharedValue<LiveChartPoint[]> and the live tip from a SharedValue<number>.
Live example: app/demo/line-and-area.tsx in the example app.

Line & area

Line styling

Override the stroke with the line prop, and the area fill with gradient:
Pass gradient={false} to remove the area fill entirely.

Dimming replacement data

Keep the current chart visible while fetching a replacement range, then dim only the plotted data through a UI-thread shared value. Axes, reference lines, and scrub controls remain readable.
seriesOpacity affects the line and area fill, candles and volume bars, value line, badge, and inline value text. While it is below 1, the live dot and its pulse ring fade completely out instead of becoming translucent over the stroke; they fade back in after the series returns to full opacity. Pass the same shared value to a candle chart—no mode-specific configuration is required. The Line & area example’s Dim while loading control demonstrates the transition by pausing its synthetic feed, freezing the current range, and replacing that range when loading completes.

Dotted area fill

For a textured fill, areaDots paints a screen-fixed dot lattice clipped to the area beneath the line (the line scrolls over the dots; nothing is drawn above it). It composes with gradient, or use it alone with gradient={false}:
Tune spacing (lattice pitch), size (dot diameter), color, and opacity. Like gradient, it’s a line-mode feature (inert in candle mode).
Live example: app/showcase/kraken.tsx pairs the dotted area fill with a thin line, Y-axis labels, and a dashed scrub crosshair.

Curve & edges

By default the line is a smooth monotone cubic with rounded joins and caps. For an angular, hard-edged look — think the Robinhood tokenized-stock style — switch the interpolation to linear and sharpen the corners:
curve ("monotone" | "linear"), join ("round" | "miter" | "bevel"), and cap ("round" | "butt" | "square") are independent — e.g. keep the smooth curve but flatten the ends with cap: "butt". curve: "linear" applies to the area fill as well, so the gradient follows the same straight segments.
Live example: app/showcase/robinhood.tsx pairs all three for a fully hard-edged line.

Denoising dense paths

Use line.simplify when dense samples make the plotted path look busier than the screen can meaningfully show:
The tolerance is measured after points are projected into the chart, so it stays visually consistent across values and canvas sizes. The simplifier retains the line endpoints and peaks or valleys that exceed the tolerance. It only changes the line and area-fill geometry: the original data still drives Y-range fitting, the live value, markers, and scrub callbacks. 0 (the default) disables it; 0.751.5 is a useful starting range for subtle denoising. See Line denoising for the raw-vs-simplified example, tolerance guidance, multi-series overrides, and rendering-cost details.

Badge, dot, and value line

By default the chart draws a value badge at the tip, a pulsing live dot, and (optionally) a dashed value line across the plot.
The live dot is a color-filled circle with a crisp contrasting outer ring. Style it via dot — the same DotConfig that LiveChartSeries uses. A soft static glow is available separately and remains off unless explicitly enabled:
glow: true uses restrained defaults (radius: 7, blur: 5, opacity: 0.18, dot fill color). A config object can tune every value or supply its own color. The glow is a static Skia layer and starts no frame callback; pulse remains the separate expanding-ring animation.
Most boolean-ish props accept true (defaults), false (off), or a config object — for example badge, pulse, valueLine, gradient, scrub, and yAxis.

Live value overlay

Render the current value as large text in the top-left, optionally tinted by momentum:

Formatting

Customize axis, badge, and tooltip text with formatValue and formatTime:
See the full prop list in the LiveChart reference.