Skip to content

Add Canvas, polar, geo, and catalog support - #1

Merged
tannerlinsley merged 1 commit into
mainfrom
taren/charts-docs-and-hardening
Jul 29, 2026
Merged

Add Canvas, polar, geo, and catalog support#1
tannerlinsley merged 1 commit into
mainfrom
taren/charts-docs-and-hardening

Conversation

@tannerlinsley

Copy link
Copy Markdown
Member

What changed

  • add an opt-in Canvas renderer with renderer-neutral React and Octane adapters
  • add polar and geographic marks, documentation, and conformance coverage
  • expand catalog deployment and benchmark hardening
  • update package exports, bundle boundaries, generated docs, and API-friction evidence

Impact

SVG remains the default. Canvas, polar, and geo capabilities stay behind explicit subpath imports. The shared host preserves sizing, SSR hydration, pointer and keyboard focus, tooltips, selection, and export behavior.

Verification

  • pnpm test
  • pnpm typecheck
  • pnpm docs:check
  • pnpm package:check
  • pnpm canvas:check
  • pnpm bundle:check

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 251 files, which is 101 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to Pro+ to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d468389f-3284-48a6-945a-51efd3d8e881

📥 Commits

Reviewing files that changed from the base of the PR and between 14b3df8 and ff5d6f1.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (252)
  • .github/workflows/chart-library-benchmarks.yml
  • .gitignore
  • AGENTS.md
  • API-FRICTION.md
  • MARKETING.md
  • README.md
  • benchmarks/bundle-size/README.md
  • benchmarks/bundle-size/universal-baseline.json
  • benchmarks/comparison/README.md
  • benchmarks/conformance/README.md
  • benchmarks/conformance/cases/03-temperature-range-band/tanstack.ts
  • benchmarks/conformance/cases/04-stacked-time-area/tanstack.ts
  • benchmarks/conformance/cases/100-radial-bars/case.json
  • benchmarks/conformance/cases/100-radial-bars/data.ts
  • benchmarks/conformance/cases/100-radial-bars/recharts.ts
  • benchmarks/conformance/cases/100-radial-bars/tanstack.ts
  • benchmarks/conformance/cases/101-sunburst/case.json
  • benchmarks/conformance/cases/101-sunburst/data.ts
  • benchmarks/conformance/cases/101-sunburst/recharts.ts
  • benchmarks/conformance/cases/101-sunburst/tanstack.ts
  • benchmarks/conformance/cases/102-world-choropleth/case.json
  • benchmarks/conformance/cases/102-world-choropleth/geo-data.ts
  • benchmarks/conformance/cases/102-world-choropleth/plot.ts
  • benchmarks/conformance/cases/102-world-choropleth/tanstack.ts
  • benchmarks/conformance/cases/103-bubble-map/case.json
  • benchmarks/conformance/cases/103-bubble-map/plot.ts
  • benchmarks/conformance/cases/103-bubble-map/tanstack.ts
  • benchmarks/conformance/cases/104-orthographic-globe/case.json
  • benchmarks/conformance/cases/104-orthographic-globe/plot.ts
  • benchmarks/conformance/cases/104-orthographic-globe/tanstack.ts
  • benchmarks/conformance/cases/105-route-map/case.json
  • benchmarks/conformance/cases/105-route-map/data.ts
  • benchmarks/conformance/cases/105-route-map/plot.ts
  • benchmarks/conformance/cases/105-route-map/tanstack.ts
  • benchmarks/conformance/cases/106-polar-line/case.json
  • benchmarks/conformance/cases/106-polar-line/data.ts
  • benchmarks/conformance/cases/106-polar-line/echarts.ts
  • benchmarks/conformance/cases/106-polar-line/tanstack.ts
  • benchmarks/conformance/cases/107-polar-scatter/case.json
  • benchmarks/conformance/cases/107-polar-scatter/data.ts
  • benchmarks/conformance/cases/107-polar-scatter/echarts.ts
  • benchmarks/conformance/cases/107-polar-scatter/tanstack.ts
  • benchmarks/conformance/cases/108-country-choropleth/atlas-data.ts
  • benchmarks/conformance/cases/108-country-choropleth/case.json
  • benchmarks/conformance/cases/108-country-choropleth/plot.ts
  • benchmarks/conformance/cases/108-country-choropleth/tanstack.ts
  • benchmarks/conformance/cases/109-us-state-choropleth/case.json
  • benchmarks/conformance/cases/109-us-state-choropleth/data.ts
  • benchmarks/conformance/cases/109-us-state-choropleth/plot.ts
  • benchmarks/conformance/cases/109-us-state-choropleth/tanstack.ts
  • benchmarks/conformance/cases/110-projection-gallery/case.json
  • benchmarks/conformance/cases/110-projection-gallery/plot.ts
  • benchmarks/conformance/cases/110-projection-gallery/projection-data.ts
  • benchmarks/conformance/cases/110-projection-gallery/tanstack.ts
  • benchmarks/conformance/cases/13-interval-timeline/tanstack.ts
  • benchmarks/conformance/cases/14-error-bars/tanstack.ts
  • benchmarks/conformance/cases/15-boxplot/tanstack.ts
  • benchmarks/conformance/cases/16-lollipop/tanstack.ts
  • benchmarks/conformance/cases/17-dumbbell/tanstack.ts
  • benchmarks/conformance/cases/21-streamgraph/tanstack.ts
  • benchmarks/conformance/cases/24-quantitative-binned-heatmap/tanstack.ts
  • benchmarks/conformance/cases/28-candlestick/tanstack.ts
  • benchmarks/conformance/cases/29-waterfall/tanstack.ts
  • benchmarks/conformance/cases/31-linear-regression/tanstack.ts
  • benchmarks/conformance/cases/36-hierarchy-tree/tanstack.ts
  • benchmarks/conformance/cases/39-density-contours/tanstack.test.ts
  • benchmarks/conformance/cases/39-density-contours/tanstack.ts
  • benchmarks/conformance/cases/40-force-directed-network/tanstack.ts
  • benchmarks/conformance/cases/40-geojson-map/case.json
  • benchmarks/conformance/cases/40-geojson-map/data.ts
  • benchmarks/conformance/cases/40-geojson-map/tanstack.ts
  • benchmarks/conformance/cases/43-hexbin-density/tanstack.ts
  • benchmarks/conformance/cases/51-faceted-distributions/tanstack.ts
  • benchmarks/conformance/cases/55-indexed-multi-line/tanstack.ts
  • benchmarks/conformance/cases/63-violin-distributions/tanstack.ts
  • benchmarks/conformance/cases/75-radar/case.json
  • benchmarks/conformance/cases/75-radar/tanstack.ts
  • benchmarks/conformance/cases/76-pie/case.json
  • benchmarks/conformance/cases/76-pie/data.ts
  • benchmarks/conformance/cases/76-pie/recharts.ts
  • benchmarks/conformance/cases/76-pie/tanstack.ts
  • benchmarks/conformance/cases/77-donut/case.json
  • benchmarks/conformance/cases/77-donut/data.ts
  • benchmarks/conformance/cases/77-donut/recharts.ts
  • benchmarks/conformance/cases/77-donut/tanstack.ts
  • benchmarks/conformance/cases/78-gauge/case.json
  • benchmarks/conformance/cases/78-gauge/data.ts
  • benchmarks/conformance/cases/78-gauge/recharts.ts
  • benchmarks/conformance/cases/78-gauge/tanstack.ts
  • benchmarks/conformance/cases/93-labeled-pie/case.json
  • benchmarks/conformance/cases/93-labeled-pie/data.ts
  • benchmarks/conformance/cases/93-labeled-pie/recharts.ts
  • benchmarks/conformance/cases/93-labeled-pie/tanstack.ts
  • benchmarks/conformance/cases/94-center-donut/case.json
  • benchmarks/conformance/cases/94-center-donut/data.ts
  • benchmarks/conformance/cases/94-center-donut/recharts.ts
  • benchmarks/conformance/cases/94-center-donut/tanstack.ts
  • benchmarks/conformance/cases/95-rounded-donut/case.json
  • benchmarks/conformance/cases/95-rounded-donut/data.ts
  • benchmarks/conformance/cases/95-rounded-donut/recharts.ts
  • benchmarks/conformance/cases/95-rounded-donut/tanstack.ts
  • benchmarks/conformance/cases/96-nested-donut/case.json
  • benchmarks/conformance/cases/96-nested-donut/data.ts
  • benchmarks/conformance/cases/96-nested-donut/recharts.ts
  • benchmarks/conformance/cases/96-nested-donut/tanstack.ts
  • benchmarks/conformance/cases/97-rose/case.json
  • benchmarks/conformance/cases/97-rose/data.ts
  • benchmarks/conformance/cases/97-rose/recharts.ts
  • benchmarks/conformance/cases/97-rose/tanstack.ts
  • benchmarks/conformance/cases/98-needle-gauge/case.json
  • benchmarks/conformance/cases/98-needle-gauge/data.ts
  • benchmarks/conformance/cases/98-needle-gauge/recharts.ts
  • benchmarks/conformance/cases/98-needle-gauge/tanstack.ts
  • benchmarks/conformance/cases/99-comparative-radar/case.json
  • benchmarks/conformance/cases/99-comparative-radar/data.ts
  • benchmarks/conformance/cases/99-comparative-radar/recharts.ts
  • benchmarks/conformance/cases/99-comparative-radar/tanstack.ts
  • benchmarks/conformance/cases/bar-vertical-sorted/tanstack.ts
  • benchmarks/conformance/cases/histogram/tanstack.ts
  • benchmarks/conformance/metadata.test.ts
  • benchmarks/conformance/metadata.ts
  • benchmarks/conformance/shared/mount.test.ts
  • benchmarks/conformance/shared/mount.ts
  • benchmarks/conformance/types.ts
  • benchmarks/entries/charts-canvas.ts
  • benchmarks/entries/charts-geo-svg.ts
  • benchmarks/entries/charts-polar-arc-svg.ts
  • benchmarks/entries/charts-polar-gauge-svg.ts
  • benchmarks/entries/charts-polar-line-scatter-svg.ts
  • benchmarks/entries/charts-polar-pie-svg.ts
  • benchmarks/entries/charts-react-canvas.ts
  • benchmarks/entries/charts-react-core.ts
  • benchmarks/entries/charts-renderer.ts
  • deploy/catalog/_headers
  • docs/concepts/layout-axes-and-coordinates.md
  • docs/concepts/marks-and-layering.md
  • docs/concepts/scales-and-d3.md
  • docs/config.json
  • docs/examples/maps-and-spatial.md
  • docs/examples/polar-and-radar.md
  • docs/framework/octane/adapter.md
  • docs/framework/octane/reference/chart.md
  • docs/framework/react/adapter.md
  • docs/framework/react/reference/chart.md
  • docs/guides/accessibility.md
  • docs/guides/bundle-size-and-performance.md
  • docs/guides/custom-marks-and-renderers.md
  • docs/guides/exporting.md
  • docs/guides/large-data.md
  • docs/guides/ssr-and-hydration.md
  • docs/guides/testing-and-debugging.md
  • docs/guides/themes-and-styling.md
  • docs/installation.md
  • docs/overview.md
  • docs/reference/custom-extensions.md
  • docs/reference/dom-host.md
  • docs/reference/index.md
  • docs/reference/marks/geo.md
  • docs/reference/marks/polar.md
  • docs/reference/rendering-and-export.md
  • docs/reference/runtime-and-scene.md
  • docs/reference/types.md
  • examples/conformance/src/main.ts
  • examples/conformance/src/styles.css
  • llms.txt
  • package.json
  • packages/charts-core/README.md
  • packages/charts-core/docs/concepts/layout-axes-and-coordinates.md
  • packages/charts-core/docs/concepts/marks-and-layering.md
  • packages/charts-core/docs/concepts/scales-and-d3.md
  • packages/charts-core/docs/config.json
  • packages/charts-core/docs/examples/maps-and-spatial.md
  • packages/charts-core/docs/examples/polar-and-radar.md
  • packages/charts-core/docs/framework/octane/adapter.md
  • packages/charts-core/docs/framework/octane/reference/chart.md
  • packages/charts-core/docs/framework/react/adapter.md
  • packages/charts-core/docs/framework/react/reference/chart.md
  • packages/charts-core/docs/guides/accessibility.md
  • packages/charts-core/docs/guides/bundle-size-and-performance.md
  • packages/charts-core/docs/guides/custom-marks-and-renderers.md
  • packages/charts-core/docs/guides/exporting.md
  • packages/charts-core/docs/guides/large-data.md
  • packages/charts-core/docs/guides/ssr-and-hydration.md
  • packages/charts-core/docs/guides/testing-and-debugging.md
  • packages/charts-core/docs/guides/themes-and-styling.md
  • packages/charts-core/docs/installation.md
  • packages/charts-core/docs/overview.md
  • packages/charts-core/docs/reference/custom-extensions.md
  • packages/charts-core/docs/reference/dom-host.md
  • packages/charts-core/docs/reference/index.md
  • packages/charts-core/docs/reference/marks/geo.md
  • packages/charts-core/docs/reference/marks/polar.md
  • packages/charts-core/docs/reference/rendering-and-export.md
  • packages/charts-core/docs/reference/runtime-and-scene.md
  • packages/charts-core/docs/reference/types.md
  • packages/charts-core/llms.txt
  • packages/charts-core/package.json
  • packages/charts-core/src/canvas.test.ts
  • packages/charts-core/src/canvas.ts
  • packages/charts-core/src/dom.ts
  • packages/charts-core/src/export.test.ts
  • packages/charts-core/src/export.ts
  • packages/charts-core/src/facet.ts
  • packages/charts-core/src/geo.test.ts
  • packages/charts-core/src/geo.ts
  • packages/charts-core/src/index.ts
  • packages/charts-core/src/polar.test.ts
  • packages/charts-core/src/polar.ts
  • packages/charts-core/src/renderer.test.ts
  • packages/charts-core/src/renderer.ts
  • packages/charts-core/src/runtime.test.ts
  • packages/charts-core/src/scene.test.ts
  • packages/charts-core/src/scene.ts
  • packages/charts-core/src/svg-surface.ts
  • packages/charts-core/src/types.ts
  • packages/octane-charts/README.md
  • packages/octane-charts/package.json
  • packages/octane-charts/src/CanvasChart.client.test.tsrx
  • packages/octane-charts/src/CanvasChart.hydration.fixture.tsrx
  • packages/octane-charts/src/CanvasChart.hydration.server.tsrx
  • packages/octane-charts/src/CanvasChart.test.tsrx
  • packages/octane-charts/src/CanvasChart.tsrx
  • packages/octane-charts/src/CanvasChart.tsrx.d.ts
  • packages/octane-charts/src/Chart.tsrx
  • packages/octane-charts/src/RendererChart.tsrx
  • packages/octane-charts/src/RendererChart.tsrx.d.ts
  • packages/octane-charts/src/canvas-types.ts
  • packages/octane-charts/src/canvas.ts
  • packages/octane-charts/src/core.ts
  • packages/octane-charts/src/renderer-types.ts
  • packages/react-charts/README.md
  • packages/react-charts/package.json
  • packages/react-charts/src/CanvasChart.test.tsx
  • packages/react-charts/src/CanvasChart.tsx
  • packages/react-charts/src/Chart.tsx
  • packages/react-charts/src/RendererChart.tsx
  • packages/react-charts/src/canvas.ts
  • packages/react-charts/src/core.ts
  • packages/react-charts/src/exports.test.ts
  • pnpm-workspace.yaml
  • scripts/benchmark/browser.mjs
  • scripts/catalog-deployment.test.mjs
  • scripts/check-canvas-renderer.mjs
  • scripts/check-catalog-deployment.mjs
  • scripts/check-local-catalog-worker.mjs
  • scripts/check-packed-consumers.mjs
  • scripts/compare-plot-catalog.mjs
  • scripts/evaluate-chart-authoring.mjs
  • scripts/measure-bundles.mjs
  • scripts/render-site-landing-assets.mjs
  • scripts/stage-conformance-deployment.mjs
  • wrangler.catalog.jsonc

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands.

@tannerlinsley
tannerlinsley merged commit ff5d6f1 into main Jul 29, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant