[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-tanstack-debug-and-verify-charts":3,"mdc-dotjlp-key":48,"related-org-tanstack-debug-and-verify-charts":1671,"related-repo-tanstack-debug-and-verify-charts":1811},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":43,"sourceUrl":46,"mdContent":47},"debug-and-verify-charts","debug and verify TanStack Charts","Diagnose TanStack Charts type, data, scale, geometry, focus, lifecycle, bundle, and performance failures with scenario-level evidence. Load for blank or clipped charts, misleading output, unsafe casts, migration parity, packed-package checks, or regressions.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"tanstack","TanStack","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftanstack.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Charts","charts","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Frontend","frontend",{"name":21,"slug":22,"type":15},"Debugging","debugging",608,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Fcharts","2026-08-15T03:47:33.503153",null,40,[29,30,14,31,32,33,34,35,36,37,38,39,40,8,41,42],"accessible-charts","charting-library","d3","data-visualization","dataviz","grammar-of-graphics","javascript","octane","react","responsive-charts","ssr","svg","typescript","visualization",{"repoUrl":24,"stars":23,"forks":27,"topics":44,"description":45},[29,30,14,31,32,33,34,35,36,37,38,39,40,8,41,42],"A tiny TypeScript visualization grammar for responsive, accessible, server-rendered charts—powered by granular D3 primitives.","https:\u002F\u002Fgithub.com\u002FTanStack\u002Fcharts\u002Ftree\u002FHEAD\u002Fpackages\u002Fcharts-core\u002Fskills\u002Fdebug-and-verify-charts","---\nname: debug-and-verify-charts\ndescription: >\n  Diagnose TanStack Charts type, data, scale, geometry, focus, lifecycle,\n  bundle, and performance failures with scenario-level evidence. Load for\n  blank or clipped charts, misleading output, unsafe casts, migration parity,\n  packed-package checks, or regressions.\nmetadata:\n  type: lifecycle\n  library: '@tanstack\u002Fcharts'\n  library_version: '0.9.0'\nsources:\n  - 'TanStack\u002Fcharts:docs\u002Fguides\u002Ftesting-and-debugging.md'\n  - 'TanStack\u002Fcharts:docs\u002Fguides\u002Ftypescript.md'\n  - 'TanStack\u002Fcharts:docs\u002Fguides\u002Fbundle-size-and-performance.md'\n  - 'TanStack\u002Fcharts:API-FRICTION.md'\n---\n\n# Debug and Verify Charts\n\nRun **trigger → inspect → decide → build → verify** at the narrowest layer that owns the failure. Do not change rendering before proving prepared rows, channels, scales, and scene geometry are correct.\n\n## Semantic and Scene Checks\n\n### Check: deterministic scene invariants\n\nExpected:\n\n```ts\nimport {\n  createChartScene,\n  defineChart,\n  lineY,\n  renderChartSvg,\n} from '@tanstack\u002Fcharts'\nimport { scaleLinear } from '@tanstack\u002Fcharts\u002Fscales\u002Flinear'\nimport { scalePoint } from '@tanstack\u002Fcharts\u002Fscales\u002Fpoint'\n\nconst rows = [\n  { month: 'Jan', value: 42 },\n  { month: 'Feb', value: 58 },\n  { month: 'Mar', value: 76 },\n]\n\nconst definition = defineChart({\n  marks: [lineY(rows, { x: 'month', y: 'value', points: true })],\n  x: { scale: scalePoint },\n  y: { scale: scaleLinear },\n})\n\nexport const scene = createChartScene(definition, { width: 640, height: 360 })\nexport const svg = renderChartSvg(scene, { ariaLabel: 'Monthly value' })\n\nif (scene.points.length !== rows.length) throw new Error('Point count mismatch')\nif (scene.chart.width \u003C= 0) throw new Error('Empty plot width')\nif (\u002FNaN|Infinity\u002F.test(svg)) throw new Error('Invalid numeric SVG output')\n```\n\nFail condition: expected points\u002Fdomains are absent, geometry is non-finite, or final bounds are empty.\n\nFix: diagnose in the layer order below before mounting a host.\n\n### Check: diagnose in ownership order\n\n1. Prepared rows, order, intervals, missing values, and units.\n2. Materialized mark channels and grouping.\n3. Resolved scale domains, ranges, bandwidths, ticks, and log validity.\n4. `scene.chart` bounds and guide margins.\n5. Scene node keys, geometry, clipping, and interaction points.\n6. Renderer input and serialized\u002Fstatic output.\n7. Mounted surface, framework lifecycle, fonts, and application CSS.\n\nIf the scene is wrong, changing the renderer cannot repair it. If the scene is correct, stop changing transforms and scales.\n\n## Interaction and Lifecycle Checks\n\n### Check: verify a user sequence\n\n1. Focus a known datum by pointer.\n2. Verify primary\u002Fgrouped semantic points and tooltip content.\n3. Pin or select it.\n4. Reorder, filter, update, resize, or interrupt motion.\n5. Verify state follows a surviving key and clears when the key disappears.\n6. Traverse and activate the same information by keyboard.\n7. Destroy the host and verify no observer, event, tooltip, or frame survives.\n\n### Check: pair screenshots with semantic assertions\n\nUse screenshots for label collision, font metrics, gradients, clipping, crossings, themes, and dense aliasing. Fix data, fonts, viewport, device scale, animation, locale, time zone, and revision. Pair the image with geometry and state assertions.\n\n## Package and Performance Checks\n\n### Check: test a packed consumer\n\nInstall the produced tarball in a minimal consumer. Verify documented root and exact subpath imports, SSR evaluation, ESM tree shaking, optional peer boundaries, retained modules, declaration output, and runtime behavior.\n\n### Check: performance samples have correctness gates\n\nEvery accepted sample must prove the requested revision painted, representative geometry is finite\u002Fin-bounds, expected points exist, no lifecycle error occurred, and interaction belongs to the latest scene. Report environment, data\u002Fscene size, warmup, sample count, percentiles, and capability set.\n\n## Common Mistakes\n\n### CRITICAL Casting a rejected definition\n\nWrong:\n\n```tsx\n\u003CChart definition={definition as any} ariaLabel=\"Revenue\" \u002F>\n```\n\nCorrect: repair the row type, channel, scale domain, mixed mark union, host-specific tooltip type, or custom-mark contract at its source.\n\nA cast hides the mismatch and leaves runtime semantics dishonest.\n\nSource: `docs\u002Fguides\u002Ftypescript.md`; `docs\u002Freference\u002Ftypes.md`\n\n### CRITICAL Asserting only element existence\n\nWrong: assert that an SVG, path, or canvas exists.\n\nCorrect: assert semantic domains, final bounds, geometry, resolved datum\u002Fgroup, update sequence, accessibility, and teardown at the layer that owns each behavior.\n\nPresence does not prove correctness.\n\nSource: `API-FRICTION.md` F-036, F-073, F-081; `docs\u002Fguides\u002Ftesting-and-debugging.md`\n\n### HIGH Testing workspace source instead of packed exports\n\nWrong: approve because monorepo tests resolve source aliases.\n\nCorrect: install the packed package into a consumer and test public exports, peers, declarations, SSR, and bundles there.\n\nWorkspace resolution can hide missing exports, browser globals, retained optional dependencies, and publish-file omissions.\n\nSource: `API-FRICTION.md` F-090, F-139, F-167, F-224\n\n### HIGH Trusting one aggregate performance number\n\nWrong: report one mount median for one chart.\n\nCorrect: separate preparation, scene build, paint, sustained pointer work, updates, dashboard lifecycle, correctness gates, and bundle capability.\n\nAn aggregate can hide stale output, invalid attempts, or a cost shifted into another layer.\n\nSource: `API-FRICTION.md` F-078–F-084; `docs\u002Fguides\u002Fbundle-size-and-performance.md`\n\n### HIGH Tension: motion continuity versus current-state correctness\n\nFinal-frame checks miss stale focus, guides, geometry, or latest-wins violations during interruption. Test the state transition while it is happening.\n\nSee also: `update-and-animate-charts\u002FSKILL.md` and `design-responsive-charts\u002FSKILL.md`\n\n## Release Summary\n\n- [ ] Types pass without casts or suppressed inference.\n- [ ] Empty, missing, duplicate, negative, and invalid data cases pass.\n- [ ] Scene semantics and geometry pass at narrow and wide sizes.\n- [ ] Pointer, keyboard, selection, update, interruption, and teardown pass.\n- [ ] SSR\u002Fstatic output and accessibility pass.\n- [ ] Packed consumer exports and bundles pass.\n- [ ] Performance samples include correctness gates and target workload shape.\n\nSee also: `coordinate-charts-with-tanstack\u002FSKILL.md` — chart-grid reconciliation, URL restoration, sync status, optimistic rollback, and virtualized teardown require product-level sequences.\n",{"data":49,"body":59},{"name":4,"description":6,"metadata":50,"sources":54},{"type":51,"library":52,"library_version":53},"lifecycle","@tanstack\u002Fcharts","0.9.0",[55,56,57,58],"TanStack\u002Fcharts:docs\u002Fguides\u002Ftesting-and-debugging.md","TanStack\u002Fcharts:docs\u002Fguides\u002Ftypescript.md","TanStack\u002Fcharts:docs\u002Fguides\u002Fbundle-size-and-performance.md","TanStack\u002Fcharts:API-FRICTION.md",{"type":60,"children":61},"root",[62,70,84,91,98,103,1153,1158,1163,1169,1215,1220,1226,1232,1270,1276,1281,1287,1293,1298,1304,1309,1315,1321,1326,1407,1412,1417,1436,1442,1447,1452,1457,1475,1481,1486,1491,1496,1507,1513,1518,1523,1528,1545,1551,1556,1575,1581,1653,1665],{"type":63,"tag":64,"props":65,"children":66},"element","h1",{"id":4},[67],{"type":68,"value":69},"text","Debug and Verify Charts",{"type":63,"tag":71,"props":72,"children":73},"p",{},[74,76,82],{"type":68,"value":75},"Run ",{"type":63,"tag":77,"props":78,"children":79},"strong",{},[80],{"type":68,"value":81},"trigger → inspect → decide → build → verify",{"type":68,"value":83}," at the narrowest layer that owns the failure. Do not change rendering before proving prepared rows, channels, scales, and scene geometry are correct.",{"type":63,"tag":85,"props":86,"children":88},"h2",{"id":87},"semantic-and-scene-checks",[89],{"type":68,"value":90},"Semantic and Scene Checks",{"type":63,"tag":92,"props":93,"children":95},"h3",{"id":94},"check-deterministic-scene-invariants",[96],{"type":68,"value":97},"Check: deterministic scene invariants",{"type":63,"tag":71,"props":99,"children":100},{},[101],{"type":68,"value":102},"Expected:",{"type":63,"tag":104,"props":105,"children":110},"pre",{"className":106,"code":107,"language":108,"meta":109,"style":109},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {\n  createChartScene,\n  defineChart,\n  lineY,\n  renderChartSvg,\n} from '@tanstack\u002Fcharts'\nimport { scaleLinear } from '@tanstack\u002Fcharts\u002Fscales\u002Flinear'\nimport { scalePoint } from '@tanstack\u002Fcharts\u002Fscales\u002Fpoint'\n\nconst rows = [\n  { month: 'Jan', value: 42 },\n  { month: 'Feb', value: 58 },\n  { month: 'Mar', value: 76 },\n]\n\nconst definition = defineChart({\n  marks: [lineY(rows, { x: 'month', y: 'value', points: true })],\n  x: { scale: scalePoint },\n  y: { scale: scaleLinear },\n})\n\nexport const scene = createChartScene(definition, { width: 640, height: 360 })\nexport const svg = renderChartSvg(scene, { ariaLabel: 'Monthly value' })\n\nif (scene.points.length !== rows.length) throw new Error('Point count mismatch')\nif (scene.chart.width \u003C= 0) throw new Error('Empty plot width')\nif (\u002FNaN|Infinity\u002F.test(svg)) throw new Error('Invalid numeric SVG output')\n","ts","",[111],{"type":63,"tag":112,"props":113,"children":114},"code",{"__ignoreMap":109},[115,133,148,161,174,187,216,256,294,304,329,388,438,488,497,505,538,654,690,724,737,745,826,895,903,991,1069],{"type":63,"tag":116,"props":117,"children":120},"span",{"class":118,"line":119},"line",1,[121,127],{"type":63,"tag":116,"props":122,"children":124},{"style":123},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[125],{"type":68,"value":126},"import",{"type":63,"tag":116,"props":128,"children":130},{"style":129},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[131],{"type":68,"value":132}," {\n",{"type":63,"tag":116,"props":134,"children":136},{"class":118,"line":135},2,[137,143],{"type":63,"tag":116,"props":138,"children":140},{"style":139},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[141],{"type":68,"value":142},"  createChartScene",{"type":63,"tag":116,"props":144,"children":145},{"style":129},[146],{"type":68,"value":147},",\n",{"type":63,"tag":116,"props":149,"children":151},{"class":118,"line":150},3,[152,157],{"type":63,"tag":116,"props":153,"children":154},{"style":139},[155],{"type":68,"value":156},"  defineChart",{"type":63,"tag":116,"props":158,"children":159},{"style":129},[160],{"type":68,"value":147},{"type":63,"tag":116,"props":162,"children":164},{"class":118,"line":163},4,[165,170],{"type":63,"tag":116,"props":166,"children":167},{"style":139},[168],{"type":68,"value":169},"  lineY",{"type":63,"tag":116,"props":171,"children":172},{"style":129},[173],{"type":68,"value":147},{"type":63,"tag":116,"props":175,"children":177},{"class":118,"line":176},5,[178,183],{"type":63,"tag":116,"props":179,"children":180},{"style":139},[181],{"type":68,"value":182},"  renderChartSvg",{"type":63,"tag":116,"props":184,"children":185},{"style":129},[186],{"type":68,"value":147},{"type":63,"tag":116,"props":188,"children":190},{"class":118,"line":189},6,[191,196,201,206,211],{"type":63,"tag":116,"props":192,"children":193},{"style":129},[194],{"type":68,"value":195},"}",{"type":63,"tag":116,"props":197,"children":198},{"style":123},[199],{"type":68,"value":200}," from",{"type":63,"tag":116,"props":202,"children":203},{"style":129},[204],{"type":68,"value":205}," '",{"type":63,"tag":116,"props":207,"children":209},{"style":208},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[210],{"type":68,"value":52},{"type":63,"tag":116,"props":212,"children":213},{"style":129},[214],{"type":68,"value":215},"'\n",{"type":63,"tag":116,"props":217,"children":219},{"class":118,"line":218},7,[220,224,229,234,239,243,247,252],{"type":63,"tag":116,"props":221,"children":222},{"style":123},[223],{"type":68,"value":126},{"type":63,"tag":116,"props":225,"children":226},{"style":129},[227],{"type":68,"value":228}," {",{"type":63,"tag":116,"props":230,"children":231},{"style":139},[232],{"type":68,"value":233}," scaleLinear",{"type":63,"tag":116,"props":235,"children":236},{"style":129},[237],{"type":68,"value":238}," }",{"type":63,"tag":116,"props":240,"children":241},{"style":123},[242],{"type":68,"value":200},{"type":63,"tag":116,"props":244,"children":245},{"style":129},[246],{"type":68,"value":205},{"type":63,"tag":116,"props":248,"children":249},{"style":208},[250],{"type":68,"value":251},"@tanstack\u002Fcharts\u002Fscales\u002Flinear",{"type":63,"tag":116,"props":253,"children":254},{"style":129},[255],{"type":68,"value":215},{"type":63,"tag":116,"props":257,"children":259},{"class":118,"line":258},8,[260,264,268,273,277,281,285,290],{"type":63,"tag":116,"props":261,"children":262},{"style":123},[263],{"type":68,"value":126},{"type":63,"tag":116,"props":265,"children":266},{"style":129},[267],{"type":68,"value":228},{"type":63,"tag":116,"props":269,"children":270},{"style":139},[271],{"type":68,"value":272}," scalePoint",{"type":63,"tag":116,"props":274,"children":275},{"style":129},[276],{"type":68,"value":238},{"type":63,"tag":116,"props":278,"children":279},{"style":123},[280],{"type":68,"value":200},{"type":63,"tag":116,"props":282,"children":283},{"style":129},[284],{"type":68,"value":205},{"type":63,"tag":116,"props":286,"children":287},{"style":208},[288],{"type":68,"value":289},"@tanstack\u002Fcharts\u002Fscales\u002Fpoint",{"type":63,"tag":116,"props":291,"children":292},{"style":129},[293],{"type":68,"value":215},{"type":63,"tag":116,"props":295,"children":297},{"class":118,"line":296},9,[298],{"type":63,"tag":116,"props":299,"children":301},{"emptyLinePlaceholder":300},true,[302],{"type":68,"value":303},"\n",{"type":63,"tag":116,"props":305,"children":307},{"class":118,"line":306},10,[308,314,319,324],{"type":63,"tag":116,"props":309,"children":311},{"style":310},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[312],{"type":68,"value":313},"const",{"type":63,"tag":116,"props":315,"children":316},{"style":139},[317],{"type":68,"value":318}," rows ",{"type":63,"tag":116,"props":320,"children":321},{"style":129},[322],{"type":68,"value":323},"=",{"type":63,"tag":116,"props":325,"children":326},{"style":139},[327],{"type":68,"value":328}," [\n",{"type":63,"tag":116,"props":330,"children":332},{"class":118,"line":331},11,[333,338,344,349,353,358,363,368,373,377,383],{"type":63,"tag":116,"props":334,"children":335},{"style":129},[336],{"type":68,"value":337},"  {",{"type":63,"tag":116,"props":339,"children":341},{"style":340},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[342],{"type":68,"value":343}," month",{"type":63,"tag":116,"props":345,"children":346},{"style":129},[347],{"type":68,"value":348},":",{"type":63,"tag":116,"props":350,"children":351},{"style":129},[352],{"type":68,"value":205},{"type":63,"tag":116,"props":354,"children":355},{"style":208},[356],{"type":68,"value":357},"Jan",{"type":63,"tag":116,"props":359,"children":360},{"style":129},[361],{"type":68,"value":362},"'",{"type":63,"tag":116,"props":364,"children":365},{"style":129},[366],{"type":68,"value":367},",",{"type":63,"tag":116,"props":369,"children":370},{"style":340},[371],{"type":68,"value":372}," value",{"type":63,"tag":116,"props":374,"children":375},{"style":129},[376],{"type":68,"value":348},{"type":63,"tag":116,"props":378,"children":380},{"style":379},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[381],{"type":68,"value":382}," 42",{"type":63,"tag":116,"props":384,"children":385},{"style":129},[386],{"type":68,"value":387}," },\n",{"type":63,"tag":116,"props":389,"children":391},{"class":118,"line":390},12,[392,396,400,404,408,413,417,421,425,429,434],{"type":63,"tag":116,"props":393,"children":394},{"style":129},[395],{"type":68,"value":337},{"type":63,"tag":116,"props":397,"children":398},{"style":340},[399],{"type":68,"value":343},{"type":63,"tag":116,"props":401,"children":402},{"style":129},[403],{"type":68,"value":348},{"type":63,"tag":116,"props":405,"children":406},{"style":129},[407],{"type":68,"value":205},{"type":63,"tag":116,"props":409,"children":410},{"style":208},[411],{"type":68,"value":412},"Feb",{"type":63,"tag":116,"props":414,"children":415},{"style":129},[416],{"type":68,"value":362},{"type":63,"tag":116,"props":418,"children":419},{"style":129},[420],{"type":68,"value":367},{"type":63,"tag":116,"props":422,"children":423},{"style":340},[424],{"type":68,"value":372},{"type":63,"tag":116,"props":426,"children":427},{"style":129},[428],{"type":68,"value":348},{"type":63,"tag":116,"props":430,"children":431},{"style":379},[432],{"type":68,"value":433}," 58",{"type":63,"tag":116,"props":435,"children":436},{"style":129},[437],{"type":68,"value":387},{"type":63,"tag":116,"props":439,"children":441},{"class":118,"line":440},13,[442,446,450,454,458,463,467,471,475,479,484],{"type":63,"tag":116,"props":443,"children":444},{"style":129},[445],{"type":68,"value":337},{"type":63,"tag":116,"props":447,"children":448},{"style":340},[449],{"type":68,"value":343},{"type":63,"tag":116,"props":451,"children":452},{"style":129},[453],{"type":68,"value":348},{"type":63,"tag":116,"props":455,"children":456},{"style":129},[457],{"type":68,"value":205},{"type":63,"tag":116,"props":459,"children":460},{"style":208},[461],{"type":68,"value":462},"Mar",{"type":63,"tag":116,"props":464,"children":465},{"style":129},[466],{"type":68,"value":362},{"type":63,"tag":116,"props":468,"children":469},{"style":129},[470],{"type":68,"value":367},{"type":63,"tag":116,"props":472,"children":473},{"style":340},[474],{"type":68,"value":372},{"type":63,"tag":116,"props":476,"children":477},{"style":129},[478],{"type":68,"value":348},{"type":63,"tag":116,"props":480,"children":481},{"style":379},[482],{"type":68,"value":483}," 76",{"type":63,"tag":116,"props":485,"children":486},{"style":129},[487],{"type":68,"value":387},{"type":63,"tag":116,"props":489,"children":491},{"class":118,"line":490},14,[492],{"type":63,"tag":116,"props":493,"children":494},{"style":139},[495],{"type":68,"value":496},"]\n",{"type":63,"tag":116,"props":498,"children":500},{"class":118,"line":499},15,[501],{"type":63,"tag":116,"props":502,"children":503},{"emptyLinePlaceholder":300},[504],{"type":68,"value":303},{"type":63,"tag":116,"props":506,"children":508},{"class":118,"line":507},16,[509,513,518,522,528,533],{"type":63,"tag":116,"props":510,"children":511},{"style":310},[512],{"type":68,"value":313},{"type":63,"tag":116,"props":514,"children":515},{"style":139},[516],{"type":68,"value":517}," definition ",{"type":63,"tag":116,"props":519,"children":520},{"style":129},[521],{"type":68,"value":323},{"type":63,"tag":116,"props":523,"children":525},{"style":524},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[526],{"type":68,"value":527}," defineChart",{"type":63,"tag":116,"props":529,"children":530},{"style":139},[531],{"type":68,"value":532},"(",{"type":63,"tag":116,"props":534,"children":535},{"style":129},[536],{"type":68,"value":537},"{\n",{"type":63,"tag":116,"props":539,"children":541},{"class":118,"line":540},17,[542,547,551,556,561,566,570,574,579,583,587,592,596,600,605,609,613,618,622,626,631,635,641,645,650],{"type":63,"tag":116,"props":543,"children":544},{"style":340},[545],{"type":68,"value":546},"  marks",{"type":63,"tag":116,"props":548,"children":549},{"style":129},[550],{"type":68,"value":348},{"type":63,"tag":116,"props":552,"children":553},{"style":139},[554],{"type":68,"value":555}," [",{"type":63,"tag":116,"props":557,"children":558},{"style":524},[559],{"type":68,"value":560},"lineY",{"type":63,"tag":116,"props":562,"children":563},{"style":139},[564],{"type":68,"value":565},"(rows",{"type":63,"tag":116,"props":567,"children":568},{"style":129},[569],{"type":68,"value":367},{"type":63,"tag":116,"props":571,"children":572},{"style":129},[573],{"type":68,"value":228},{"type":63,"tag":116,"props":575,"children":576},{"style":340},[577],{"type":68,"value":578}," x",{"type":63,"tag":116,"props":580,"children":581},{"style":129},[582],{"type":68,"value":348},{"type":63,"tag":116,"props":584,"children":585},{"style":129},[586],{"type":68,"value":205},{"type":63,"tag":116,"props":588,"children":589},{"style":208},[590],{"type":68,"value":591},"month",{"type":63,"tag":116,"props":593,"children":594},{"style":129},[595],{"type":68,"value":362},{"type":63,"tag":116,"props":597,"children":598},{"style":129},[599],{"type":68,"value":367},{"type":63,"tag":116,"props":601,"children":602},{"style":340},[603],{"type":68,"value":604}," y",{"type":63,"tag":116,"props":606,"children":607},{"style":129},[608],{"type":68,"value":348},{"type":63,"tag":116,"props":610,"children":611},{"style":129},[612],{"type":68,"value":205},{"type":63,"tag":116,"props":614,"children":615},{"style":208},[616],{"type":68,"value":617},"value",{"type":63,"tag":116,"props":619,"children":620},{"style":129},[621],{"type":68,"value":362},{"type":63,"tag":116,"props":623,"children":624},{"style":129},[625],{"type":68,"value":367},{"type":63,"tag":116,"props":627,"children":628},{"style":340},[629],{"type":68,"value":630}," points",{"type":63,"tag":116,"props":632,"children":633},{"style":129},[634],{"type":68,"value":348},{"type":63,"tag":116,"props":636,"children":638},{"style":637},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[639],{"type":68,"value":640}," true",{"type":63,"tag":116,"props":642,"children":643},{"style":129},[644],{"type":68,"value":238},{"type":63,"tag":116,"props":646,"children":647},{"style":139},[648],{"type":68,"value":649},")]",{"type":63,"tag":116,"props":651,"children":652},{"style":129},[653],{"type":68,"value":147},{"type":63,"tag":116,"props":655,"children":657},{"class":118,"line":656},18,[658,663,667,671,676,680,685],{"type":63,"tag":116,"props":659,"children":660},{"style":340},[661],{"type":68,"value":662},"  x",{"type":63,"tag":116,"props":664,"children":665},{"style":129},[666],{"type":68,"value":348},{"type":63,"tag":116,"props":668,"children":669},{"style":129},[670],{"type":68,"value":228},{"type":63,"tag":116,"props":672,"children":673},{"style":340},[674],{"type":68,"value":675}," scale",{"type":63,"tag":116,"props":677,"children":678},{"style":129},[679],{"type":68,"value":348},{"type":63,"tag":116,"props":681,"children":682},{"style":139},[683],{"type":68,"value":684}," scalePoint ",{"type":63,"tag":116,"props":686,"children":687},{"style":129},[688],{"type":68,"value":689},"},\n",{"type":63,"tag":116,"props":691,"children":693},{"class":118,"line":692},19,[694,699,703,707,711,715,720],{"type":63,"tag":116,"props":695,"children":696},{"style":340},[697],{"type":68,"value":698},"  y",{"type":63,"tag":116,"props":700,"children":701},{"style":129},[702],{"type":68,"value":348},{"type":63,"tag":116,"props":704,"children":705},{"style":129},[706],{"type":68,"value":228},{"type":63,"tag":116,"props":708,"children":709},{"style":340},[710],{"type":68,"value":675},{"type":63,"tag":116,"props":712,"children":713},{"style":129},[714],{"type":68,"value":348},{"type":63,"tag":116,"props":716,"children":717},{"style":139},[718],{"type":68,"value":719}," scaleLinear ",{"type":63,"tag":116,"props":721,"children":722},{"style":129},[723],{"type":68,"value":689},{"type":63,"tag":116,"props":725,"children":727},{"class":118,"line":726},20,[728,732],{"type":63,"tag":116,"props":729,"children":730},{"style":129},[731],{"type":68,"value":195},{"type":63,"tag":116,"props":733,"children":734},{"style":139},[735],{"type":68,"value":736},")\n",{"type":63,"tag":116,"props":738,"children":740},{"class":118,"line":739},21,[741],{"type":63,"tag":116,"props":742,"children":743},{"emptyLinePlaceholder":300},[744],{"type":68,"value":303},{"type":63,"tag":116,"props":746,"children":748},{"class":118,"line":747},22,[749,754,759,764,768,773,778,782,786,791,795,800,804,809,813,818,822],{"type":63,"tag":116,"props":750,"children":751},{"style":123},[752],{"type":68,"value":753},"export",{"type":63,"tag":116,"props":755,"children":756},{"style":310},[757],{"type":68,"value":758}," const",{"type":63,"tag":116,"props":760,"children":761},{"style":139},[762],{"type":68,"value":763}," scene ",{"type":63,"tag":116,"props":765,"children":766},{"style":129},[767],{"type":68,"value":323},{"type":63,"tag":116,"props":769,"children":770},{"style":524},[771],{"type":68,"value":772}," createChartScene",{"type":63,"tag":116,"props":774,"children":775},{"style":139},[776],{"type":68,"value":777},"(definition",{"type":63,"tag":116,"props":779,"children":780},{"style":129},[781],{"type":68,"value":367},{"type":63,"tag":116,"props":783,"children":784},{"style":129},[785],{"type":68,"value":228},{"type":63,"tag":116,"props":787,"children":788},{"style":340},[789],{"type":68,"value":790}," width",{"type":63,"tag":116,"props":792,"children":793},{"style":129},[794],{"type":68,"value":348},{"type":63,"tag":116,"props":796,"children":797},{"style":379},[798],{"type":68,"value":799}," 640",{"type":63,"tag":116,"props":801,"children":802},{"style":129},[803],{"type":68,"value":367},{"type":63,"tag":116,"props":805,"children":806},{"style":340},[807],{"type":68,"value":808}," height",{"type":63,"tag":116,"props":810,"children":811},{"style":129},[812],{"type":68,"value":348},{"type":63,"tag":116,"props":814,"children":815},{"style":379},[816],{"type":68,"value":817}," 360",{"type":63,"tag":116,"props":819,"children":820},{"style":129},[821],{"type":68,"value":238},{"type":63,"tag":116,"props":823,"children":824},{"style":139},[825],{"type":68,"value":736},{"type":63,"tag":116,"props":827,"children":829},{"class":118,"line":828},23,[830,834,838,843,847,852,857,861,865,870,874,878,883,887,891],{"type":63,"tag":116,"props":831,"children":832},{"style":123},[833],{"type":68,"value":753},{"type":63,"tag":116,"props":835,"children":836},{"style":310},[837],{"type":68,"value":758},{"type":63,"tag":116,"props":839,"children":840},{"style":139},[841],{"type":68,"value":842}," svg ",{"type":63,"tag":116,"props":844,"children":845},{"style":129},[846],{"type":68,"value":323},{"type":63,"tag":116,"props":848,"children":849},{"style":524},[850],{"type":68,"value":851}," renderChartSvg",{"type":63,"tag":116,"props":853,"children":854},{"style":139},[855],{"type":68,"value":856},"(scene",{"type":63,"tag":116,"props":858,"children":859},{"style":129},[860],{"type":68,"value":367},{"type":63,"tag":116,"props":862,"children":863},{"style":129},[864],{"type":68,"value":228},{"type":63,"tag":116,"props":866,"children":867},{"style":340},[868],{"type":68,"value":869}," ariaLabel",{"type":63,"tag":116,"props":871,"children":872},{"style":129},[873],{"type":68,"value":348},{"type":63,"tag":116,"props":875,"children":876},{"style":129},[877],{"type":68,"value":205},{"type":63,"tag":116,"props":879,"children":880},{"style":208},[881],{"type":68,"value":882},"Monthly value",{"type":63,"tag":116,"props":884,"children":885},{"style":129},[886],{"type":68,"value":362},{"type":63,"tag":116,"props":888,"children":889},{"style":129},[890],{"type":68,"value":238},{"type":63,"tag":116,"props":892,"children":893},{"style":139},[894],{"type":68,"value":736},{"type":63,"tag":116,"props":896,"children":898},{"class":118,"line":897},24,[899],{"type":63,"tag":116,"props":900,"children":901},{"emptyLinePlaceholder":300},[902],{"type":68,"value":303},{"type":63,"tag":116,"props":904,"children":906},{"class":118,"line":905},25,[907,912,917,922,927,931,936,941,946,950,955,960,965,970,974,978,983,987],{"type":63,"tag":116,"props":908,"children":909},{"style":123},[910],{"type":68,"value":911},"if",{"type":63,"tag":116,"props":913,"children":914},{"style":139},[915],{"type":68,"value":916}," (scene",{"type":63,"tag":116,"props":918,"children":919},{"style":129},[920],{"type":68,"value":921},".",{"type":63,"tag":116,"props":923,"children":924},{"style":139},[925],{"type":68,"value":926},"points",{"type":63,"tag":116,"props":928,"children":929},{"style":129},[930],{"type":68,"value":921},{"type":63,"tag":116,"props":932,"children":933},{"style":139},[934],{"type":68,"value":935},"length ",{"type":63,"tag":116,"props":937,"children":938},{"style":129},[939],{"type":68,"value":940},"!==",{"type":63,"tag":116,"props":942,"children":943},{"style":139},[944],{"type":68,"value":945}," rows",{"type":63,"tag":116,"props":947,"children":948},{"style":129},[949],{"type":68,"value":921},{"type":63,"tag":116,"props":951,"children":952},{"style":139},[953],{"type":68,"value":954},"length) ",{"type":63,"tag":116,"props":956,"children":957},{"style":123},[958],{"type":68,"value":959},"throw",{"type":63,"tag":116,"props":961,"children":962},{"style":129},[963],{"type":68,"value":964}," new",{"type":63,"tag":116,"props":966,"children":967},{"style":524},[968],{"type":68,"value":969}," Error",{"type":63,"tag":116,"props":971,"children":972},{"style":139},[973],{"type":68,"value":532},{"type":63,"tag":116,"props":975,"children":976},{"style":129},[977],{"type":68,"value":362},{"type":63,"tag":116,"props":979,"children":980},{"style":208},[981],{"type":68,"value":982},"Point count mismatch",{"type":63,"tag":116,"props":984,"children":985},{"style":129},[986],{"type":68,"value":362},{"type":63,"tag":116,"props":988,"children":989},{"style":139},[990],{"type":68,"value":736},{"type":63,"tag":116,"props":992,"children":994},{"class":118,"line":993},26,[995,999,1003,1007,1012,1016,1021,1026,1031,1036,1040,1044,1048,1052,1056,1061,1065],{"type":63,"tag":116,"props":996,"children":997},{"style":123},[998],{"type":68,"value":911},{"type":63,"tag":116,"props":1000,"children":1001},{"style":139},[1002],{"type":68,"value":916},{"type":63,"tag":116,"props":1004,"children":1005},{"style":129},[1006],{"type":68,"value":921},{"type":63,"tag":116,"props":1008,"children":1009},{"style":139},[1010],{"type":68,"value":1011},"chart",{"type":63,"tag":116,"props":1013,"children":1014},{"style":129},[1015],{"type":68,"value":921},{"type":63,"tag":116,"props":1017,"children":1018},{"style":139},[1019],{"type":68,"value":1020},"width ",{"type":63,"tag":116,"props":1022,"children":1023},{"style":129},[1024],{"type":68,"value":1025},"\u003C=",{"type":63,"tag":116,"props":1027,"children":1028},{"style":379},[1029],{"type":68,"value":1030}," 0",{"type":63,"tag":116,"props":1032,"children":1033},{"style":139},[1034],{"type":68,"value":1035},") ",{"type":63,"tag":116,"props":1037,"children":1038},{"style":123},[1039],{"type":68,"value":959},{"type":63,"tag":116,"props":1041,"children":1042},{"style":129},[1043],{"type":68,"value":964},{"type":63,"tag":116,"props":1045,"children":1046},{"style":524},[1047],{"type":68,"value":969},{"type":63,"tag":116,"props":1049,"children":1050},{"style":139},[1051],{"type":68,"value":532},{"type":63,"tag":116,"props":1053,"children":1054},{"style":129},[1055],{"type":68,"value":362},{"type":63,"tag":116,"props":1057,"children":1058},{"style":208},[1059],{"type":68,"value":1060},"Empty plot width",{"type":63,"tag":116,"props":1062,"children":1063},{"style":129},[1064],{"type":68,"value":362},{"type":63,"tag":116,"props":1066,"children":1067},{"style":139},[1068],{"type":68,"value":736},{"type":63,"tag":116,"props":1070,"children":1072},{"class":118,"line":1071},27,[1073,1077,1082,1087,1092,1097,1102,1106,1110,1115,1120,1124,1128,1132,1136,1140,1145,1149],{"type":63,"tag":116,"props":1074,"children":1075},{"style":123},[1076],{"type":68,"value":911},{"type":63,"tag":116,"props":1078,"children":1079},{"style":139},[1080],{"type":68,"value":1081}," (",{"type":63,"tag":116,"props":1083,"children":1084},{"style":129},[1085],{"type":68,"value":1086},"\u002F",{"type":63,"tag":116,"props":1088,"children":1089},{"style":208},[1090],{"type":68,"value":1091},"NaN",{"type":63,"tag":116,"props":1093,"children":1094},{"style":129},[1095],{"type":68,"value":1096},"|",{"type":63,"tag":116,"props":1098,"children":1099},{"style":208},[1100],{"type":68,"value":1101},"Infinity",{"type":63,"tag":116,"props":1103,"children":1104},{"style":129},[1105],{"type":68,"value":1086},{"type":63,"tag":116,"props":1107,"children":1108},{"style":129},[1109],{"type":68,"value":921},{"type":63,"tag":116,"props":1111,"children":1112},{"style":524},[1113],{"type":68,"value":1114},"test",{"type":63,"tag":116,"props":1116,"children":1117},{"style":139},[1118],{"type":68,"value":1119},"(svg)) ",{"type":63,"tag":116,"props":1121,"children":1122},{"style":123},[1123],{"type":68,"value":959},{"type":63,"tag":116,"props":1125,"children":1126},{"style":129},[1127],{"type":68,"value":964},{"type":63,"tag":116,"props":1129,"children":1130},{"style":524},[1131],{"type":68,"value":969},{"type":63,"tag":116,"props":1133,"children":1134},{"style":139},[1135],{"type":68,"value":532},{"type":63,"tag":116,"props":1137,"children":1138},{"style":129},[1139],{"type":68,"value":362},{"type":63,"tag":116,"props":1141,"children":1142},{"style":208},[1143],{"type":68,"value":1144},"Invalid numeric SVG output",{"type":63,"tag":116,"props":1146,"children":1147},{"style":129},[1148],{"type":68,"value":362},{"type":63,"tag":116,"props":1150,"children":1151},{"style":139},[1152],{"type":68,"value":736},{"type":63,"tag":71,"props":1154,"children":1155},{},[1156],{"type":68,"value":1157},"Fail condition: expected points\u002Fdomains are absent, geometry is non-finite, or final bounds are empty.",{"type":63,"tag":71,"props":1159,"children":1160},{},[1161],{"type":68,"value":1162},"Fix: diagnose in the layer order below before mounting a host.",{"type":63,"tag":92,"props":1164,"children":1166},{"id":1165},"check-diagnose-in-ownership-order",[1167],{"type":68,"value":1168},"Check: diagnose in ownership order",{"type":63,"tag":1170,"props":1171,"children":1172},"ol",{},[1173,1179,1184,1189,1200,1205,1210],{"type":63,"tag":1174,"props":1175,"children":1176},"li",{},[1177],{"type":68,"value":1178},"Prepared rows, order, intervals, missing values, and units.",{"type":63,"tag":1174,"props":1180,"children":1181},{},[1182],{"type":68,"value":1183},"Materialized mark channels and grouping.",{"type":63,"tag":1174,"props":1185,"children":1186},{},[1187],{"type":68,"value":1188},"Resolved scale domains, ranges, bandwidths, ticks, and log validity.",{"type":63,"tag":1174,"props":1190,"children":1191},{},[1192,1198],{"type":63,"tag":112,"props":1193,"children":1195},{"className":1194},[],[1196],{"type":68,"value":1197},"scene.chart",{"type":68,"value":1199}," bounds and guide margins.",{"type":63,"tag":1174,"props":1201,"children":1202},{},[1203],{"type":68,"value":1204},"Scene node keys, geometry, clipping, and interaction points.",{"type":63,"tag":1174,"props":1206,"children":1207},{},[1208],{"type":68,"value":1209},"Renderer input and serialized\u002Fstatic output.",{"type":63,"tag":1174,"props":1211,"children":1212},{},[1213],{"type":68,"value":1214},"Mounted surface, framework lifecycle, fonts, and application CSS.",{"type":63,"tag":71,"props":1216,"children":1217},{},[1218],{"type":68,"value":1219},"If the scene is wrong, changing the renderer cannot repair it. If the scene is correct, stop changing transforms and scales.",{"type":63,"tag":85,"props":1221,"children":1223},{"id":1222},"interaction-and-lifecycle-checks",[1224],{"type":68,"value":1225},"Interaction and Lifecycle Checks",{"type":63,"tag":92,"props":1227,"children":1229},{"id":1228},"check-verify-a-user-sequence",[1230],{"type":68,"value":1231},"Check: verify a user sequence",{"type":63,"tag":1170,"props":1233,"children":1234},{},[1235,1240,1245,1250,1255,1260,1265],{"type":63,"tag":1174,"props":1236,"children":1237},{},[1238],{"type":68,"value":1239},"Focus a known datum by pointer.",{"type":63,"tag":1174,"props":1241,"children":1242},{},[1243],{"type":68,"value":1244},"Verify primary\u002Fgrouped semantic points and tooltip content.",{"type":63,"tag":1174,"props":1246,"children":1247},{},[1248],{"type":68,"value":1249},"Pin or select it.",{"type":63,"tag":1174,"props":1251,"children":1252},{},[1253],{"type":68,"value":1254},"Reorder, filter, update, resize, or interrupt motion.",{"type":63,"tag":1174,"props":1256,"children":1257},{},[1258],{"type":68,"value":1259},"Verify state follows a surviving key and clears when the key disappears.",{"type":63,"tag":1174,"props":1261,"children":1262},{},[1263],{"type":68,"value":1264},"Traverse and activate the same information by keyboard.",{"type":63,"tag":1174,"props":1266,"children":1267},{},[1268],{"type":68,"value":1269},"Destroy the host and verify no observer, event, tooltip, or frame survives.",{"type":63,"tag":92,"props":1271,"children":1273},{"id":1272},"check-pair-screenshots-with-semantic-assertions",[1274],{"type":68,"value":1275},"Check: pair screenshots with semantic assertions",{"type":63,"tag":71,"props":1277,"children":1278},{},[1279],{"type":68,"value":1280},"Use screenshots for label collision, font metrics, gradients, clipping, crossings, themes, and dense aliasing. Fix data, fonts, viewport, device scale, animation, locale, time zone, and revision. Pair the image with geometry and state assertions.",{"type":63,"tag":85,"props":1282,"children":1284},{"id":1283},"package-and-performance-checks",[1285],{"type":68,"value":1286},"Package and Performance Checks",{"type":63,"tag":92,"props":1288,"children":1290},{"id":1289},"check-test-a-packed-consumer",[1291],{"type":68,"value":1292},"Check: test a packed consumer",{"type":63,"tag":71,"props":1294,"children":1295},{},[1296],{"type":68,"value":1297},"Install the produced tarball in a minimal consumer. Verify documented root and exact subpath imports, SSR evaluation, ESM tree shaking, optional peer boundaries, retained modules, declaration output, and runtime behavior.",{"type":63,"tag":92,"props":1299,"children":1301},{"id":1300},"check-performance-samples-have-correctness-gates",[1302],{"type":68,"value":1303},"Check: performance samples have correctness gates",{"type":63,"tag":71,"props":1305,"children":1306},{},[1307],{"type":68,"value":1308},"Every accepted sample must prove the requested revision painted, representative geometry is finite\u002Fin-bounds, expected points exist, no lifecycle error occurred, and interaction belongs to the latest scene. Report environment, data\u002Fscene size, warmup, sample count, percentiles, and capability set.",{"type":63,"tag":85,"props":1310,"children":1312},{"id":1311},"common-mistakes",[1313],{"type":68,"value":1314},"Common Mistakes",{"type":63,"tag":92,"props":1316,"children":1318},{"id":1317},"critical-casting-a-rejected-definition",[1319],{"type":68,"value":1320},"CRITICAL Casting a rejected definition",{"type":63,"tag":71,"props":1322,"children":1323},{},[1324],{"type":68,"value":1325},"Wrong:",{"type":63,"tag":104,"props":1327,"children":1331},{"className":1328,"code":1329,"language":1330,"meta":109,"style":109},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CChart definition={definition as any} ariaLabel=\"Revenue\" \u002F>\n","tsx",[1332],{"type":63,"tag":112,"props":1333,"children":1334},{"__ignoreMap":109},[1335],{"type":63,"tag":116,"props":1336,"children":1337},{"class":118,"line":119},[1338,1343,1349,1354,1359,1364,1369,1374,1379,1384,1388,1393,1398,1402],{"type":63,"tag":116,"props":1339,"children":1340},{"style":129},[1341],{"type":68,"value":1342},"\u003C",{"type":63,"tag":116,"props":1344,"children":1346},{"style":1345},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1347],{"type":68,"value":1348},"Chart",{"type":63,"tag":116,"props":1350,"children":1351},{"style":310},[1352],{"type":68,"value":1353}," definition",{"type":63,"tag":116,"props":1355,"children":1356},{"style":129},[1357],{"type":68,"value":1358},"={",{"type":63,"tag":116,"props":1360,"children":1361},{"style":139},[1362],{"type":68,"value":1363},"definition ",{"type":63,"tag":116,"props":1365,"children":1366},{"style":123},[1367],{"type":68,"value":1368},"as",{"type":63,"tag":116,"props":1370,"children":1371},{"style":1345},[1372],{"type":68,"value":1373}," any",{"type":63,"tag":116,"props":1375,"children":1376},{"style":129},[1377],{"type":68,"value":1378},"} ",{"type":63,"tag":116,"props":1380,"children":1381},{"style":310},[1382],{"type":68,"value":1383},"ariaLabel",{"type":63,"tag":116,"props":1385,"children":1386},{"style":129},[1387],{"type":68,"value":323},{"type":63,"tag":116,"props":1389,"children":1390},{"style":129},[1391],{"type":68,"value":1392},"\"",{"type":63,"tag":116,"props":1394,"children":1395},{"style":208},[1396],{"type":68,"value":1397},"Revenue",{"type":63,"tag":116,"props":1399,"children":1400},{"style":129},[1401],{"type":68,"value":1392},{"type":63,"tag":116,"props":1403,"children":1404},{"style":129},[1405],{"type":68,"value":1406}," \u002F>\n",{"type":63,"tag":71,"props":1408,"children":1409},{},[1410],{"type":68,"value":1411},"Correct: repair the row type, channel, scale domain, mixed mark union, host-specific tooltip type, or custom-mark contract at its source.",{"type":63,"tag":71,"props":1413,"children":1414},{},[1415],{"type":68,"value":1416},"A cast hides the mismatch and leaves runtime semantics dishonest.",{"type":63,"tag":71,"props":1418,"children":1419},{},[1420,1422,1428,1430],{"type":68,"value":1421},"Source: ",{"type":63,"tag":112,"props":1423,"children":1425},{"className":1424},[],[1426],{"type":68,"value":1427},"docs\u002Fguides\u002Ftypescript.md",{"type":68,"value":1429},"; ",{"type":63,"tag":112,"props":1431,"children":1433},{"className":1432},[],[1434],{"type":68,"value":1435},"docs\u002Freference\u002Ftypes.md",{"type":63,"tag":92,"props":1437,"children":1439},{"id":1438},"critical-asserting-only-element-existence",[1440],{"type":68,"value":1441},"CRITICAL Asserting only element existence",{"type":63,"tag":71,"props":1443,"children":1444},{},[1445],{"type":68,"value":1446},"Wrong: assert that an SVG, path, or canvas exists.",{"type":63,"tag":71,"props":1448,"children":1449},{},[1450],{"type":68,"value":1451},"Correct: assert semantic domains, final bounds, geometry, resolved datum\u002Fgroup, update sequence, accessibility, and teardown at the layer that owns each behavior.",{"type":63,"tag":71,"props":1453,"children":1454},{},[1455],{"type":68,"value":1456},"Presence does not prove correctness.",{"type":63,"tag":71,"props":1458,"children":1459},{},[1460,1461,1467,1469],{"type":68,"value":1421},{"type":63,"tag":112,"props":1462,"children":1464},{"className":1463},[],[1465],{"type":68,"value":1466},"API-FRICTION.md",{"type":68,"value":1468}," F-036, F-073, F-081; ",{"type":63,"tag":112,"props":1470,"children":1472},{"className":1471},[],[1473],{"type":68,"value":1474},"docs\u002Fguides\u002Ftesting-and-debugging.md",{"type":63,"tag":92,"props":1476,"children":1478},{"id":1477},"high-testing-workspace-source-instead-of-packed-exports",[1479],{"type":68,"value":1480},"HIGH Testing workspace source instead of packed exports",{"type":63,"tag":71,"props":1482,"children":1483},{},[1484],{"type":68,"value":1485},"Wrong: approve because monorepo tests resolve source aliases.",{"type":63,"tag":71,"props":1487,"children":1488},{},[1489],{"type":68,"value":1490},"Correct: install the packed package into a consumer and test public exports, peers, declarations, SSR, and bundles there.",{"type":63,"tag":71,"props":1492,"children":1493},{},[1494],{"type":68,"value":1495},"Workspace resolution can hide missing exports, browser globals, retained optional dependencies, and publish-file omissions.",{"type":63,"tag":71,"props":1497,"children":1498},{},[1499,1500,1505],{"type":68,"value":1421},{"type":63,"tag":112,"props":1501,"children":1503},{"className":1502},[],[1504],{"type":68,"value":1466},{"type":68,"value":1506}," F-090, F-139, F-167, F-224",{"type":63,"tag":92,"props":1508,"children":1510},{"id":1509},"high-trusting-one-aggregate-performance-number",[1511],{"type":68,"value":1512},"HIGH Trusting one aggregate performance number",{"type":63,"tag":71,"props":1514,"children":1515},{},[1516],{"type":68,"value":1517},"Wrong: report one mount median for one chart.",{"type":63,"tag":71,"props":1519,"children":1520},{},[1521],{"type":68,"value":1522},"Correct: separate preparation, scene build, paint, sustained pointer work, updates, dashboard lifecycle, correctness gates, and bundle capability.",{"type":63,"tag":71,"props":1524,"children":1525},{},[1526],{"type":68,"value":1527},"An aggregate can hide stale output, invalid attempts, or a cost shifted into another layer.",{"type":63,"tag":71,"props":1529,"children":1530},{},[1531,1532,1537,1539],{"type":68,"value":1421},{"type":63,"tag":112,"props":1533,"children":1535},{"className":1534},[],[1536],{"type":68,"value":1466},{"type":68,"value":1538}," F-078–F-084; ",{"type":63,"tag":112,"props":1540,"children":1542},{"className":1541},[],[1543],{"type":68,"value":1544},"docs\u002Fguides\u002Fbundle-size-and-performance.md",{"type":63,"tag":92,"props":1546,"children":1548},{"id":1547},"high-tension-motion-continuity-versus-current-state-correctness",[1549],{"type":68,"value":1550},"HIGH Tension: motion continuity versus current-state correctness",{"type":63,"tag":71,"props":1552,"children":1553},{},[1554],{"type":68,"value":1555},"Final-frame checks miss stale focus, guides, geometry, or latest-wins violations during interruption. Test the state transition while it is happening.",{"type":63,"tag":71,"props":1557,"children":1558},{},[1559,1561,1567,1569],{"type":68,"value":1560},"See also: ",{"type":63,"tag":112,"props":1562,"children":1564},{"className":1563},[],[1565],{"type":68,"value":1566},"update-and-animate-charts\u002FSKILL.md",{"type":68,"value":1568}," and ",{"type":63,"tag":112,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":68,"value":1574},"design-responsive-charts\u002FSKILL.md",{"type":63,"tag":85,"props":1576,"children":1578},{"id":1577},"release-summary",[1579],{"type":68,"value":1580},"Release Summary",{"type":63,"tag":1582,"props":1583,"children":1586},"ul",{"className":1584},[1585],"contains-task-list",[1587,1599,1608,1617,1626,1635,1644],{"type":63,"tag":1174,"props":1588,"children":1591},{"className":1589},[1590],"task-list-item",[1592,1597],{"type":63,"tag":1593,"props":1594,"children":1596},"input",{"disabled":300,"type":1595},"checkbox",[],{"type":68,"value":1598}," Types pass without casts or suppressed inference.",{"type":63,"tag":1174,"props":1600,"children":1602},{"className":1601},[1590],[1603,1606],{"type":63,"tag":1593,"props":1604,"children":1605},{"disabled":300,"type":1595},[],{"type":68,"value":1607}," Empty, missing, duplicate, negative, and invalid data cases pass.",{"type":63,"tag":1174,"props":1609,"children":1611},{"className":1610},[1590],[1612,1615],{"type":63,"tag":1593,"props":1613,"children":1614},{"disabled":300,"type":1595},[],{"type":68,"value":1616}," Scene semantics and geometry pass at narrow and wide sizes.",{"type":63,"tag":1174,"props":1618,"children":1620},{"className":1619},[1590],[1621,1624],{"type":63,"tag":1593,"props":1622,"children":1623},{"disabled":300,"type":1595},[],{"type":68,"value":1625}," Pointer, keyboard, selection, update, interruption, and teardown pass.",{"type":63,"tag":1174,"props":1627,"children":1629},{"className":1628},[1590],[1630,1633],{"type":63,"tag":1593,"props":1631,"children":1632},{"disabled":300,"type":1595},[],{"type":68,"value":1634}," SSR\u002Fstatic output and accessibility pass.",{"type":63,"tag":1174,"props":1636,"children":1638},{"className":1637},[1590],[1639,1642],{"type":63,"tag":1593,"props":1640,"children":1641},{"disabled":300,"type":1595},[],{"type":68,"value":1643}," Packed consumer exports and bundles pass.",{"type":63,"tag":1174,"props":1645,"children":1647},{"className":1646},[1590],[1648,1651],{"type":63,"tag":1593,"props":1649,"children":1650},{"disabled":300,"type":1595},[],{"type":68,"value":1652}," Performance samples include correctness gates and target workload shape.",{"type":63,"tag":71,"props":1654,"children":1655},{},[1656,1657,1663],{"type":68,"value":1560},{"type":63,"tag":112,"props":1658,"children":1660},{"className":1659},[],[1661],{"type":68,"value":1662},"coordinate-charts-with-tanstack\u002FSKILL.md",{"type":68,"value":1664}," — chart-grid reconciliation, URL restoration, sync status, optimistic rollback, and virtualized teardown require product-level sequences.",{"type":63,"tag":1666,"props":1667,"children":1668},"style",{},[1669],{"type":68,"value":1670},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1672,"total":1810},[1673,1687,1697,1709,1721,1736,1746,1756,1766,1779,1789,1800],{"slug":1674,"name":1674,"fn":1675,"description":1676,"org":1677,"tags":1678,"stars":1684,"repoUrl":1685,"updatedAt":1686},"aggregation","perform data aggregation in TanStack Table","Aggregate TanStack Table columns independently of grouping, including grand totals, caller-selected row totals, multiple keyed aggregations, custom context-based definitions, grouped merges, manual values, and worker constraints.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1679,1682,1683],{"name":1680,"slug":1681,"type":15},"Data Analysis","data-analysis",{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},28175,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Ftable","2026-08-11T04:05:39.647403",{"slug":1688,"name":1688,"fn":1689,"description":1690,"org":1691,"tags":1692,"stars":1684,"repoUrl":1685,"updatedAt":1696},"api-not-found","diagnose TanStack Table API errors","Diagnose missing TanStack Table v9 exports, options, state slices, and instance methods. Load before inventing an API when code sees a type error, undefined feature method, absent object key, adapter mismatch, or v8-shaped example.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1693,1694,1695],{"name":21,"slug":22,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},"2026-08-11T04:05:45.454347",{"slug":1698,"name":1698,"fn":1699,"description":1700,"org":1701,"tags":1702,"stars":1684,"repoUrl":1685,"updatedAt":1708},"cell-selection","select rectangular cell ranges in tables","Select, add, and subtract rectangular cell ranges with cellSelectionFeature: ordered include\u002Fexclude operations keyed by row and column id, modifier dragging, final positive bounds, selection edges, render-order resolution under pinning, and autoResetCellSelection. Load for spreadsheet-style selection, “select all except” behavior, unexpected range changes after sorting or reordering, drag performance, or copy-to-clipboard.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1703,1704,1705],{"name":1680,"slug":1681,"type":15},{"name":9,"slug":8,"type":15},{"name":1706,"slug":1707,"type":15},"UI Components","ui-components","2026-08-11T04:05:18.454719",{"slug":1710,"name":1710,"fn":1711,"description":1712,"org":1713,"tags":1714,"stars":1684,"repoUrl":1685,"updatedAt":1720},"cell-spanning","configure cell spanning in TanStack Table","Merge adjacent body cells with cellSpanningFeature: value-based rowSpan opt-in per column via spanRows, per-row colSpan via spanColumns, and the covered-cell convention where a span of 0 means skip the cell. Load for merged data grids, spans that disappear after sorting or paginating, ragged table rows, or a cell that unexpectedly merges down the whole tbody.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1715,1717,1718,1719],{"name":1716,"slug":32,"type":15},"Data Visualization",{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":1706,"slug":1707,"type":15},"2026-08-11T04:05:16.471567",{"slug":1722,"name":1722,"fn":1723,"description":1724,"org":1725,"tags":1726,"stars":1684,"repoUrl":1685,"updatedAt":1735},"client-vs-server","manage TanStack Table data pipelines","Choose client or server ownership for filtering, grouping, sorting, expanding, and pagination in TanStack Table v9. Load for manual* flags, mixed pipelines, server counts, or deciding which dataset each row-model stage receives.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1727,1730,1731,1734],{"name":1728,"slug":1729,"type":15},"Data Pipeline","data-pipeline",{"name":18,"slug":19,"type":15},{"name":1732,"slug":1733,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},"2026-08-11T04:05:25.45112",{"slug":1737,"name":1737,"fn":1738,"description":1739,"org":1740,"tags":1741,"stars":1684,"repoUrl":1685,"updatedAt":1745},"column-faceting","build faceted filter UIs","Build faceted filter UIs with columnFacetingFeature, facetedRowModel, facetedUniqueValues, and facetedMinMaxValues. Load for facet counts, numeric ranges, own-filter exclusion, or server-page facet completeness.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1742,1743,1744],{"name":1716,"slug":32,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},"2026-08-11T04:05:21.505333",{"slug":1747,"name":1747,"fn":1748,"description":1749,"org":1750,"tags":1751,"stars":1684,"repoUrl":1685,"updatedAt":1755},"column-filtering","implement column filtering in TanStack Table","Filter columns with columnFilteringFeature, filteredRowModel, filterFns, filterMeta, nested-row direction, and manualFiltering. Load for accessor compatibility, controlled filter updaters, fuzzy metadata, or client\u002Fserver ownership.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1752,1753,1754],{"name":1680,"slug":1681,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},"2026-08-11T04:05:33.684468",{"slug":1757,"name":1757,"fn":1758,"description":1759,"org":1760,"tags":1761,"stars":1684,"repoUrl":1685,"updatedAt":1765},"column-ordering","manage TanStack Table column ordering","Control TanStack Table v9 leaf columnOrder with stable IDs while accounting for pinning regions, visibility, and groupedColumnMode precedence. Load for drag-and-drop columns or rendered order that differs from state.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1762,1763,1764],{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":1706,"slug":1707,"type":15},"2026-08-11T04:05:43.445905",{"slug":1767,"name":1767,"fn":1768,"description":1769,"org":1770,"tags":1771,"stars":1684,"repoUrl":1685,"updatedAt":1778},"column-pinning","configure column pinning in TanStack Table","Pin columns into logical start, center, and end regions with columnPinningFeature and renderer-owned sticky CSS. Load for RTL offsets, z-index, backgrounds, overflow, widths, gaps, or overlaps.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1772,1775,1776,1777],{"name":1773,"slug":1774,"type":15},"CSS","css",{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":1706,"slug":1707,"type":15},"2026-08-11T04:05:35.453858",{"slug":1780,"name":1780,"fn":1781,"description":1782,"org":1783,"tags":1784,"stars":1684,"repoUrl":1685,"updatedAt":1788},"column-resizing","implement column resizing in TanStack Table","Wire columnResizingFeature, header.getResizeHandler, resize mode and direction, pointer or touch events, and performant CSS-variable updates. Load when resize state changes but widths do not, or large tables resize slowly.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1785,1786,1787],{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":1706,"slug":1707,"type":15},"2026-08-11T04:05:31.46447",{"slug":1790,"name":1790,"fn":1791,"description":1792,"org":1793,"tags":1794,"stars":1684,"repoUrl":1685,"updatedAt":1799},"column-sizing","configure column sizing in TanStack Table","Use columnSizingFeature numeric size, minSize, maxSize, getSize, getStart, getAfter, and total-size APIs in table, grid, or flex CSS. Load for auto or percentage misconceptions and sizing\u002Fpinning layout mismatch.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1795,1796,1797,1798],{"name":1773,"slug":1774,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":1706,"slug":1707,"type":15},"2026-08-11T04:05:28.559861",{"slug":1801,"name":1801,"fn":1802,"description":1803,"org":1804,"tags":1805,"stars":1684,"repoUrl":1685,"updatedAt":1809},"column-visibility","manage column visibility in TanStack Table","Hide columns with columnVisibilityFeature while rendering visibility-aware header, column, and cell collections. Load when hidden columns remain in the DOM, false-versus-absent state is confused, or enableHiding is misunderstood.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1806,1807,1808],{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":1706,"slug":1707,"type":15},"2026-08-11T04:05:27.479925",139,{"items":1812,"total":390},[1813,1826,1837,1848,1862,1869,1880],{"slug":1814,"name":1814,"fn":1815,"description":1816,"org":1817,"tags":1818,"stars":23,"repoUrl":24,"updatedAt":1825},"build-chart-interactions","build chart interactions with TanStack Charts","Compose TanStack Charts focus, tooltips, controlled selections, cursors, brushes, zoom, keyboard behavior, and coordinated views. Load for hover, focus, pinning, crosshairs, clipping, gesture state, or chart-table coordination.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1819,1820,1821,1824],{"name":13,"slug":14,"type":15},{"name":18,"slug":19,"type":15},{"name":1822,"slug":1823,"type":15},"Interaction","interaction",{"name":9,"slug":8,"type":15},"2026-08-15T03:47:32.82085",{"slug":1827,"name":1827,"fn":1828,"description":1829,"org":1830,"tags":1831,"stars":23,"repoUrl":24,"updatedAt":1836},"compose-marks-and-views","compose marks and views in TanStack Charts","Translate semantic encodings into TanStack Charts marks, layers, annotations, facets, and coordinated views. Load when choosing marks, combining layers, assigning interaction-point ownership, or deciding whether a custom mark is justified.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1832,1833,1834,1835],{"name":13,"slug":14,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":1706,"slug":1707,"type":15},"2026-08-15T03:47:30.035164",{"slug":1838,"name":1838,"fn":1839,"description":1840,"org":1841,"tags":1842,"stars":23,"repoUrl":24,"updatedAt":1847},"configure-scales-guides-color","configure scales and guides for TanStack Charts","Configure TanStack Charts domains, scale factories, axes, margins, legends, grouping, and paint without taking ownership of responsive ranges. Load for blank geometry, scale inference, color semantics, shared domains, ticks, labels, or guide layout.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1843,1844,1845,1846],{"name":13,"slug":14,"type":15},{"name":1716,"slug":32,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},"2026-08-15T03:47:40.802271",{"slug":1849,"name":1849,"fn":1850,"description":1851,"org":1852,"tags":1853,"stars":23,"repoUrl":24,"updatedAt":1861},"coordinate-charts-with-tanstack","coordinate TanStack Charts with data sources","Coordinate TanStack Charts with TanStack Table data grids, TanStack DB live queries and sync engines, TanStack Query server state, Store, Router, Virtual, Pacer, Start, and Form without duplicating ownership. Load for chart-grid linking, shared filtering or selection, live synchronized data, optimistic updates, URL-restorable chart state, virtualized detail views, paced streams, or dashboard-wide state.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1854,1855,1856,1859,1860],{"name":13,"slug":14,"type":15},{"name":1680,"slug":1681,"type":15},{"name":1857,"slug":1858,"type":15},"Data Engineering","data-engineering",{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},"2026-08-15T03:47:37.086246",{"slug":4,"name":4,"fn":5,"description":6,"org":1863,"tags":1864,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1865,1866,1867,1868],{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"slug":1870,"name":1870,"fn":1871,"description":1872,"org":1873,"tags":1874,"stars":23,"repoUrl":24,"updatedAt":1879},"design-a-chart","design charts with TanStack Charts","Choose an honest visualization from a user story, metric, comparison, projection, target, or explanatory goal before selecting TanStack Charts marks. Load whenever a user asks to graph, chart, visualize, compare, forecast, project, explain, or communicate data.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1875,1876,1877,1878],{"name":13,"slug":14,"type":15},{"name":1716,"slug":32,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},"2026-08-15T03:47:40.463333",{"slug":1881,"name":1881,"fn":1882,"description":1883,"org":1884,"tags":1885,"stars":23,"repoUrl":24,"updatedAt":1892},"design-responsive-charts","design responsive TanStack Charts","Make TanStack Charts adapt to measured containers, information priority, guide margins, SSR initial width, and final plot bounds. Load for narrow dashboards, overflow, label density, responsive topology, or pixel-space layouts.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1886,1887,1888,1889,1891],{"name":13,"slug":14,"type":15},{"name":1716,"slug":32,"type":15},{"name":18,"slug":19,"type":15},{"name":1890,"slug":39,"type":15},"SSR",{"name":9,"slug":8,"type":15},"2026-08-15T03:47:36.306971"]