Skip to main content
LiveChartSeries draws multiple line series that share an axis, time window, and crosshair. Pass a SharedValue<SeriesConfig[]>.
Live example: app/demo/multi-series.tsx in the example app.

Multiple live series with a toggleable legend

Update the series the same way you feed a single chart — append points in place with series.modify(...) (mutating each entry’s data array and value), or replace the whole array with series.set(...). Avoid series.value = ....

Series options

Each SeriesConfig supports:

Legend

The legend renders toggle chips by default. Configure it with the legend prop, and listen for taps with onSeriesToggle:

Per-series dots

The dot prop controls the live dots, their pulse, value lines, and inline labels. Each dot is haloed by default — a contrasting outer ring (in the chart background color) behind the colored dot, matching the single-series live dot so overlapping series stay legible:
Tune or turn off the halo, hide the dots, or override the fill color:
See the full prop list in the LiveChartSeries reference.

Per-series scrub tooltip

LiveChartSeries keeps its historical guide-only scrub by default. Opt into the Morfi market-detail readout with scrub.seriesTooltip: a dashed vertical guide, a top-centred bucket range, and one pill plus intersection dot for every visible series. Close values stack instead of overlapping, wide pills flip to the guide’s left near the right edge, and hidden legend series are omitted.
This feature is opt-in and backward compatible. scrub={true}, scrub={{}}, and scrub={{ seriesTooltip: false }} all keep the existing guide-only multi-series behavior. The existing scrub.tooltip property is still the master switch; setting it to false also suppresses the per-series pills.
Enable the default tooltip treatment with:
Pass an object instead of true to customize formatting and appearance:
formatSeriesValue and formatTimeRange run on the UI thread; keep them worklet-safe, just like the chart’s formatValue and formatTime. Omit bucketSeconds to infer the range width from the first visible series. The range end is always clamped to the chart’s current-time anchor, so an in-progress live bucket never displays a future end time. Set alwaysShow to keep the value pills at the visible endpoints while the user is not touching the chart. Idle mode deliberately hides the guide and time pill; scrubbing restores the full readout.
The multi-series demo has live toggles for the pills, pinned mode, and styling.