# Recharts — Skill **Name:** `recharts` **Purpose:** Build responsive, readable charts with Recharts using correct data mapping and composition. Use this skill whenever creating charts with Recharts. **Applies when:** Using `LineChart`, `BarChart`, `AreaChart`, `PieChart`, `ResponsiveContainer`. **Do not use when:** Charts are not built with Recharts. ## Rules - **Always responsive:** Wrap charts in `ResponsiveContainer` and ensure a fixed height parent. - **Explicit data model:** Normalize data and use stable `dataKey` values. - **Pick the simplest chart:** Use `LineChart` for trends, `BarChart` for comparisons, `AreaChart` for cumulative/volume, `PieChart` for part-to-whole. - **Interactivity:** Add `Tooltip`; add `Legend` when multiple series exist. - **Performance:** Disable animation for large/static dashboards and reduce point count. ## Workflow 1. Define the data shape and stable keys. 2. Choose the simplest chart that answers the question. 3. Wrap in `ResponsiveContainer` with a height. 4. Add axes, tooltip, and legend as needed. 5. Disable animation or aggregate data for large sets. ## Checklists ### Implementation checklist - [ ] Chart is wrapped in `ResponsiveContainer` - [ ] X/Y axes are present when needed - [ ] Tooltip shows correct units - [ ] `dataKey` matches field names ### Review checklist - [ ] Animations disabled for large datasets - [ ] Colors are accessible ## Minimal examples ### Line chart (trend) ```tsx import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, } from "recharts"; export function SalesChart({ data, }: { data: Array<{ month: string; sales: number }>; }) { return (