TanStack
API Reference

React Chart

tsx
import { Chart } from '@tanstack/react-charts'

The supplied definition infers the datum, semantic x/y values, and callbacks.

ts
function Chart<
  TDatum,
  TXValue extends ChartValue = ChartValue,
  TYValue extends ChartValue = ChartValue,
>(props: ChartProps<TDatum, TXValue, TYValue>): React.JSX.Element

Renderer entry points

The default entry uses SVG. The optional entries keep other renderer code explicit:

tsx
import { Chart as CanvasChart } from '@tanstack/react-charts/canvas'
import { Chart as RendererChart } from '@tanstack/react-charts/core'

const canvasChart = (
  <CanvasChart definition={definition} ariaLabel="Weekly revenue" />
)
const rendererChart = (
  <RendererChart
    definition={definition}
    renderer={myRenderer}
    ariaLabel="Weekly revenue"
  />
)

The Canvas Chart accepts the same adapter props except renderSvg. Its onRender receives ChartRendererRenderContext. The /core Chart also requires renderer: ChartRenderer; use it for application-owned surfaces. Both entries export ChartCommonProps, ChartProps, ChartDefinition, and ChartPoint.

Definition props

PropDefaultMeaning
definitionRequiredFramework-independent definition; identity is the application update boundary

See Chart Definition API.

The definition owns focus, maxFocusDistance, spatialIndex, animate, keyboard, and tooltip. Adapters do not override them.

Set definition tooltip.portal: true to escape clipping and local stacking contexts. The adapter still receives no portal override.

Accessibility and sizing

PropTypeDefaultMeaning
ariaLabelstringRequiredAccessible surface name
ariaDescriptionstringNoneOptional surface description
tabIndexnumber0Surface tab index while keyboard behavior is enabled
heightnumber320 without aspect ratioFixed CSS and scene height
aspectRationumberNonePositive width-to-height ratio when height is absent
widthnumberResponsiveFixed CSS and scene width
initialWidthnumber640Initial and server width before responsive measurement
classNamestringNoneExtra class on the outer ts-chart-host div
styleReact.CSSPropertiesNoneOuter host styles, applied after adapter sizing styles

See Sizing and layout.

Callbacks

PropTypeDefaultMeaning
onFocusChange(point: ChartPoint | null) => voidNonePrimary focus callback
onFocusGroupChange(points: readonly ChartPoint[]) => voidNoneGrouped focus callback
onSelect(point: ChartPoint | null) => voidNoneClick and keyboard activation callback
onRender(context: ChartRenderContext) => voidNoneInner surface, live SVG, and scene after reconciliation

See Focus and interaction for the behavior and complete callback values.

Tooltip body

PropTypeDefaultMeaning
renderTooltipBody(context: ChartTooltipBodyRenderContext) => ReactNodeNoneComposes React content inside the native surface
ts
interface ChartTooltipBodyRenderContext<
  TDatum,
  TXValue extends ChartValue,
  TYValue extends ChartValue,
> {
  points: readonly ChartPoint<TDatum, TXValue, TYValue>[]
  content: ChartTooltipContent | string
  defaultBody: React.ReactNode
  pinned: boolean
  dismiss: () => void
}

defaultBody preserves native headings, rows, formatting, and swatches. points follows the definition's focus and tooltip sort policy. Render interactive content only when pinned is true; transient tooltips do not accept pointer input. dismiss() clears the tooltip and restores chart focus when focus was inside its body.

The prop is available from the default, /canvas, and /core entries. It is adapter presentation. Ordering, anchoring, placement, portaling, and sticky behavior remain in the chart definition.

Rendering and layout extensions

PropTypeDefaultMeaning
idPrefixstringGenerated from useId()Prefix for renderer-owned document resources
renderSvgChartSvgRenderer<TDatum, TXValue, TYValue>renderChartSvgScene-to-SVG renderer
measureTextChartTextMeasurerDOM inherited-font measurerGuide glyph measurement

See Rendering and export and Scales, guides, and color.

Exported prop types

The adapter exports ChartCommonProps, ChartProps, and ChartTooltipBodyRenderContext.

ts
interface ChartCommonProps<
  TDatum = unknown,
  TXValue extends ChartValue = ChartValue,
  TYValue extends ChartValue = ChartValue,
> {
  // every common prop listed above
}

type ChartProps<
  TDatum = unknown,
  TXValue extends ChartValue = ChartValue,
  TYValue extends ChartValue = ChartValue,
> = ChartCommonProps<TDatum, TXValue, TYValue> & {
  definition: ChartDefinition<TDatum, TXValue, TYValue>
}

The package also re-exports ChartDefinition and ChartPoint. Prefer inference at the component call site. Memoize definitions that capture component values; see Types.