Skip to main content
Live example: app/demo/theming.tsx (colors, gradient, fonts) in the example app.

Light/dark themes and an accent-driven palette

Theme & accent

The palette is derived from two props: a theme ("light" or "dark", default "dark") and an accentColor (default #3323E6). Setting just these gets you a cohesive look.

Palette overrides

For precise control, override individual resolved-palette keys with palette. Only the keys you set are replaced — everything else stays derived from accentColor + theme.
Common keys include line, fillTop / fillBottom, gridLine / gridLabel, dotUp / dotDown / dotFlat, candleUp / candleDown / wickUp / wickDown, crosshairLine, and tooltipBg / tooltipText. See the types reference for the full LiveChartPalette.

Gradient fill

The area under the line is filled with a gradient. By default it’s derived from the accent color (gradient.topOpacity / gradient.bottomOpacity). For full control, pass explicit colors (top → bottom, at least two stops):
Omitting colors falls back to the accent-derived top/bottom opacity. Custom colors are single-series only — multi-series lines have no area fill. See the GradientConfig reference for positions and the opacity fields.

Sizing and motion tokens

Where palette controls color, metrics controls shape (badge geometry, candle bounds) and feel (fade and lerp speeds) — the same override model, namespaced. Only the keys you set are replaced; everything else keeps the built-in default.
The five namespaces: metrics is available on both LiveChart and LiveChartSeries. See the types reference for the full LiveChartMetrics shape and every default.

Fonts

Chart text (axes, badges, tooltips) uses the font prop. Point it at a system family, or load a custom typeface from a Metro asset:
For multiple weights, register a Skia font manager (useFonts) and pass it as font.fontManager.
Shaping the live-edge value pill, the grid and axes, or the high / low edge labels has moved to its own guide — see Badge styling, Axes & grid, and Extrema labels.