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.

These base entries render the native tooltip without React tooltip-body composition.

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.

Add the portal extension to the definition's tooltip options 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

Import the drop-in component from the optional tooltip entry to use renderTooltipBody:

tsx
import {
  Chart,
  CanvasChart,
  RendererChart,
} from '@tanstack/react-charts/tooltip'
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.

Existing users of this prop should move Chart from @tanstack/react-charts to @tanstack/react-charts/tooltip. Replace Chart as CanvasChart from /canvas or Chart as RendererChart from /core with the corresponding named component from /tooltip. 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 base entries export ChartCommonProps and ChartProps. The /tooltip entry exports its extended ChartCommonProps, ChartProps, RendererChartCommonProps, RendererChartProps, CanvasChartCommonProps, CanvasChartProps, ChartTooltipBodyRenderProps, 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.