Skip to content

@layerchart/webgl: WebGL layer and 3D marks - #985

Open
techniq wants to merge 26 commits into
mainfrom
techniq/3d-primitives
Open

techniq wants to merge 26 commits into
mainfrom
techniq/3d-primitives

Conversation

@techniq

@techniq techniq commented Nov 1, 2026

Copy link
Copy Markdown
Owner

No description provided.

@changeset-bot

changeset-bot Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: e6396f6

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
layerchart Minor
@layerchart/webgl Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@techniq techniq changed the title 3d primitives WebGL layer and 3D marks Nov 1, 2026
@techniq techniq changed the title WebGL layer and 3D marks @layerchart/webgl: WebGL layer and 3D marks Nov 1, 2026
@pkg-pr-new

pkg-pr-new Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/techniq/layerchart@985
npm i https://pkg.pr.new/techniq/layerchart/@layerchart/webgl@985

commit: e6396f6

@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor
built with Refined Cloudflare Pages Action

⚡ Cloudflare Pages Deployment

Name Status Preview Last Commit
layerchart ❌ Failed (View Log) e6396f6

@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Bundle Size Analysis

⚠️ Warnings (54 significant size increases)

Item Current New Change
🔴 line-chart-interactive 406.28 KB
94.70 gz
412.55 KB
96.53 gz
+6.27 KB (+1.5%)
+1.83 gz (+1.9%)
🔴 PieChart 432.02 KB
100.10 gz
438.28 KB
101.93 gz
+6.26 KB (+1.4%)
+1.83 gz (+1.8%)
🔴 ArcChart 425.03 KB
98.79 gz
431.28 KB
100.61 gz
+6.25 KB (+1.5%)
+1.82 gz (+1.8%)
🔴 PieChart-canvas 416.56 KB
96.91 gz
422.75 KB
98.76 gz
+6.19 KB (+1.5%)
+1.85 gz (+1.9%)
🔴 ArcChart-canvas 410.15 KB
95.61 gz
416.34 KB
97.39 gz
+6.19 KB (+1.5%)
+1.78 gz (+1.9%)
🔴 core-canvas 243.89 KB
63.04 gz
250.05 KB
64.88 gz
+6.16 KB (+2.5%)
+1.84 gz (+2.9%)
🔴 geo-full 461.31 KB
109.69 gz
467.44 KB
111.53 gz
+6.13 KB (+1.3%)
+1.84 gz (+1.7%)
🔴 base 386.60 KB
90.33 gz
392.74 KB
92.13 gz
+6.13 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 base-svg-agnostic 386.61 KB
90.33 gz
392.74 KB
92.14 gz
+6.13 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 base-canvas-agnostic 386.61 KB
90.32 gz
392.74 KB
92.14 gz
+6.13 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 base-html-agnostic 386.61 KB
90.32 gz
392.74 KB
92.13 gz
+6.13 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 line-chart 387.11 KB
90.36 gz
393.24 KB
92.18 gz
+6.13 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 bar-chart 391.90 KB
91.39 gz
398.03 KB
93.21 gz
+6.13 KB (+1.6%)
+1.82 gz (+2.0%)
🔴 scatter-chart 387.70 KB
90.59 gz
393.83 KB
92.42 gz
+6.13 KB (+1.6%)
+1.83 gz (+2.0%)
🔴 sankey 399.59 KB
93.51 gz
405.72 KB
95.37 gz
+6.13 KB (+1.5%)
+1.86 gz (+2.0%)
🔴 ScatterChart 391.55 KB
91.37 gz
397.68 KB
93.19 gz
+6.13 KB (+1.6%)
+1.82 gz (+2.0%)
🔴 BarChart 398.01 KB
92.68 gz
404.14 KB
94.50 gz
+6.13 KB (+1.5%)
+1.83 gz (+2.0%)
🔴 pie-chart 400.14 KB
93.31 gz
406.26 KB
95.11 gz
+6.12 KB (+1.5%)
+1.80 gz (+1.9%)
🔴 hierarchy-pack 393.69 KB
92.40 gz
399.82 KB
94.21 gz
+6.12 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 chord 396.28 KB
92.56 gz
402.40 KB
94.38 gz
+6.12 KB (+1.5%)
+1.82 gz (+2.0%)
🔴 core-html 228.84 KB
58.56 gz
234.96 KB
60.34 gz
+6.12 KB (+2.7%)
+1.78 gz (+3.0%)
🔴 hierarchy-tree 397.39 KB
93.28 gz
403.51 KB
95.09 gz
+6.12 KB (+1.5%)
+1.80 gz (+1.9%)
🔴 LineChart 417.96 KB
97.68 gz
424.07 KB
99.52 gz
+6.12 KB (+1.5%)
+1.85 gz (+1.9%)
🔴 area-chart 405.59 KB
94.35 gz
411.71 KB
96.17 gz
+6.12 KB (+1.5%)
+1.81 gz (+1.9%)
🔴 geo 403.75 KB
94.32 gz
409.86 KB
96.14 gz
+6.11 KB (+1.5%)
+1.82 gz (+1.9%)
🔴 dodge 391.42 KB
91.76 gz
397.53 KB
93.58 gz
+6.11 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 hierarchy-treemap 394.28 KB
92.49 gz
400.39 KB
94.31 gz
+6.11 KB (+1.5%)
+1.83 gz (+2.0%)
🔴 AreaChart 410.28 KB
95.37 gz
416.38 KB
97.15 gz
+6.10 KB (+1.5%)
+1.77 gz (+1.9%)
🔴 geo-tiles 408.86 KB
96.00 gz
414.96 KB
97.81 gz
+6.10 KB (+1.5%)
+1.82 gz (+1.9%)
🔴 force 399.81 KB
94.14 gz
405.91 KB
95.92 gz
+6.10 KB (+1.5%)
+1.78 gz (+1.9%)
🔴 PieChart-svg 406.61 KB
94.06 gz
412.70 KB
95.81 gz
+6.09 KB (+1.5%)
+1.75 gz (+1.9%)
🔴 ArcChart-svg 400.19 KB
92.71 gz
406.28 KB
94.49 gz
+6.09 KB (+1.5%)
+1.79 gz (+1.9%)
🔴 base-canvas 373.14 KB
87.44 gz
379.20 KB
89.23 gz
+6.07 KB (+1.6%)
+1.79 gz (+2.0%)
🔴 line-chart-canvas 373.16 KB
87.45 gz
379.23 KB
89.22 gz
+6.07 KB (+1.6%)
+1.77 gz (+2.0%)
🔴 ScatterChart-canvas 377.35 KB
88.30 gz
383.41 KB
90.12 gz
+6.06 KB (+1.6%)
+1.82 gz (+2.1%)
🔴 BarChart-canvas 383.59 KB
89.64 gz
389.65 KB
91.46 gz
+6.06 KB (+1.6%)
+1.82 gz (+2.0%)
🔴 dagre 456.20 KB
109.24 gz
462.26 KB
111.05 gz
+6.06 KB (+1.3%)
+1.81 gz (+1.7%)
🔴 LineChart-canvas 380.19 KB
88.98 gz
386.25 KB
90.85 gz
+6.06 KB (+1.6%)
+1.87 gz (+2.1%)
🔴 AreaChart-canvas 396.17 KB
92.42 gz
402.23 KB
94.17 gz
+6.06 KB (+1.5%)
+1.75 gz (+1.9%)
🔴 core 226.25 KB
57.60 gz
232.30 KB
59.46 gz
+6.05 KB (+2.7%)
+1.85 gz (+3.2%)
🔴 core-svg 226.25 KB
57.88 gz
232.30 KB
59.66 gz
+6.05 KB (+2.7%)
+1.79 gz (+3.1%)
🔴 core-geo 228.33 KB
58.56 gz
234.38 KB
60.47 gz
+6.05 KB (+2.6%)
+1.91 gz (+3.3%)
🔴 core-scatter 235.05 KB
59.61 gz
241.10 KB
61.43 gz
+6.05 KB (+2.6%)
+1.83 gz (+3.1%)
🔴 core-line 242.34 KB
61.77 gz
248.38 KB
63.61 gz
+6.04 KB (+2.5%)
+1.84 gz (+3.0%)
🔴 base-html 365.57 KB
85.13 gz
371.60 KB
86.89 gz
+6.03 KB (+1.6%)
+1.76 gz (+2.1%)
🔴 line-chart-html 365.59 KB
85.15 gz
371.62 KB
86.91 gz
+6.03 KB (+1.6%)
+1.76 gz (+2.1%)
🔴 BarChart-svg 373.48 KB
86.67 gz
379.44 KB
88.41 gz
+5.96 KB (+1.6%)
+1.74 gz (+2.0%)
🔴 LineChart-svg 370.09 KB
86.06 gz
376.05 KB
87.79 gz
+5.96 KB (+1.6%)
+1.73 gz (+2.0%)
🔴 base-svg 363.02 KB
84.47 gz
368.98 KB
86.21 gz
+5.96 KB (+1.6%)
+1.74 gz (+2.1%)
🔴 line-chart-svg 363.04 KB
84.47 gz
369.00 KB
86.21 gz
+5.96 KB (+1.6%)
+1.73 gz (+2.1%)
🔴 AreaChart-svg 386.06 KB
89.41 gz
392.02 KB
91.14 gz
+5.96 KB (+1.5%)
+1.73 gz (+1.9%)
🔴 ScatterChart-svg 367.25 KB
85.36 gz
373.20 KB
87.08 gz
+5.96 KB (+1.6%)
+1.72 gz (+2.0%)
🔴 Tooltip 157.06 KB
38.44 gz
159.20 KB
39.26 gz
+2.14 KB (+1.4%)
+0.83 gz (+2.2%)
🔴 TransformContext 27.76 KB
6.96 gz
29.19 KB
7.25 gz
+1.43 KB (+5.1%)
+0.29 gz (+4.2%)

Use-Case Scenarios

Core (7 changed)
Scenario Current New Change
🔴 core-canvas 243.89 KB
63.04 gz
250.05 KB
64.88 gz
+6.16 KB (+2.5%)
+1.84 gz (+2.9%)
🔴 core-line 242.34 KB
61.77 gz
248.38 KB
63.61 gz
+6.04 KB (+2.5%)
+1.84 gz (+3.0%)
🔴 core-scatter 235.05 KB
59.61 gz
241.10 KB
61.43 gz
+6.05 KB (+2.6%)
+1.83 gz (+3.1%)
🔴 core-html 228.84 KB
58.56 gz
234.96 KB
60.34 gz
+6.12 KB (+2.7%)
+1.78 gz (+3.0%)
🔴 core-geo 228.33 KB
58.56 gz
234.38 KB
60.47 gz
+6.05 KB (+2.6%)
+1.91 gz (+3.3%)
🔴 core-svg 226.25 KB
57.88 gz
232.30 KB
59.66 gz
+6.05 KB (+2.7%)
+1.79 gz (+3.1%)
🔴 core 226.25 KB
57.60 gz
232.30 KB
59.46 gz
+6.05 KB (+2.7%)
+1.85 gz (+3.2%)
Base (agnostic) (4 changed)
Scenario Current New Change
🔴 base-svg-agnostic 386.61 KB
90.33 gz
392.74 KB
92.14 gz
+6.13 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 base-canvas-agnostic 386.61 KB
90.32 gz
392.74 KB
92.14 gz
+6.13 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 base-html-agnostic 386.61 KB
90.32 gz
392.74 KB
92.13 gz
+6.13 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 base 386.60 KB
90.33 gz
392.74 KB
92.13 gz
+6.13 KB (+1.6%)
+1.81 gz (+2.0%)
Base (layer-specific) (3 changed)
Scenario Current New Change
🔴 base-canvas 373.14 KB
87.44 gz
379.20 KB
89.23 gz
+6.07 KB (+1.6%)
+1.79 gz (+2.0%)
🔴 base-html 365.57 KB
85.13 gz
371.60 KB
86.89 gz
+6.03 KB (+1.6%)
+1.76 gz (+2.1%)
🔴 base-svg 363.02 KB
84.47 gz
368.98 KB
86.21 gz
+5.96 KB (+1.6%)
+1.74 gz (+2.1%)
Cartesian charts (27 changed)
Scenario Current New Change
🔴 PieChart 432.02 KB
100.10 gz
438.28 KB
101.93 gz
+6.26 KB (+1.4%)
+1.83 gz (+1.8%)
🔴 ArcChart 425.03 KB
98.79 gz
431.28 KB
100.61 gz
+6.25 KB (+1.5%)
+1.82 gz (+1.8%)
🔴 LineChart 417.96 KB
97.68 gz
424.07 KB
99.52 gz
+6.12 KB (+1.5%)
+1.85 gz (+1.9%)
🔴 PieChart-canvas 416.56 KB
96.91 gz
422.75 KB
98.76 gz
+6.19 KB (+1.5%)
+1.85 gz (+1.9%)
🔴 AreaChart 410.28 KB
95.37 gz
416.38 KB
97.15 gz
+6.10 KB (+1.5%)
+1.77 gz (+1.9%)
🔴 ArcChart-canvas 410.15 KB
95.61 gz
416.34 KB
97.39 gz
+6.19 KB (+1.5%)
+1.78 gz (+1.9%)
🔴 PieChart-svg 406.61 KB
94.06 gz
412.70 KB
95.81 gz
+6.09 KB (+1.5%)
+1.75 gz (+1.9%)
🔴 line-chart-interactive 406.28 KB
94.70 gz
412.55 KB
96.53 gz
+6.27 KB (+1.5%)
+1.83 gz (+1.9%)
🔴 area-chart 405.59 KB
94.35 gz
411.71 KB
96.17 gz
+6.12 KB (+1.5%)
+1.81 gz (+1.9%)
🔴 ArcChart-svg 400.19 KB
92.71 gz
406.28 KB
94.49 gz
+6.09 KB (+1.5%)
+1.79 gz (+1.9%)
🔴 pie-chart 400.14 KB
93.31 gz
406.26 KB
95.11 gz
+6.12 KB (+1.5%)
+1.80 gz (+1.9%)
🔴 BarChart 398.01 KB
92.68 gz
404.14 KB
94.50 gz
+6.13 KB (+1.5%)
+1.83 gz (+2.0%)
🔴 AreaChart-canvas 396.17 KB
92.42 gz
402.23 KB
94.17 gz
+6.06 KB (+1.5%)
+1.75 gz (+1.9%)
🔴 bar-chart 391.90 KB
91.39 gz
398.03 KB
93.21 gz
+6.13 KB (+1.6%)
+1.82 gz (+2.0%)
🔴 ScatterChart 391.55 KB
91.37 gz
397.68 KB
93.19 gz
+6.13 KB (+1.6%)
+1.82 gz (+2.0%)
🔴 scatter-chart 387.70 KB
90.59 gz
393.83 KB
92.42 gz
+6.13 KB (+1.6%)
+1.83 gz (+2.0%)
🔴 line-chart 387.11 KB
90.36 gz
393.24 KB
92.18 gz
+6.13 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 AreaChart-svg 386.06 KB
89.41 gz
392.02 KB
91.14 gz
+5.96 KB (+1.5%)
+1.73 gz (+1.9%)
🔴 BarChart-canvas 383.59 KB
89.64 gz
389.65 KB
91.46 gz
+6.06 KB (+1.6%)
+1.82 gz (+2.0%)
🔴 LineChart-canvas 380.19 KB
88.98 gz
386.25 KB
90.85 gz
+6.06 KB (+1.6%)
+1.87 gz (+2.1%)
🔴 ScatterChart-canvas 377.35 KB
88.30 gz
383.41 KB
90.12 gz
+6.06 KB (+1.6%)
+1.82 gz (+2.1%)
🔴 BarChart-svg 373.48 KB
86.67 gz
379.44 KB
88.41 gz
+5.96 KB (+1.6%)
+1.74 gz (+2.0%)
🔴 line-chart-canvas 373.16 KB
87.45 gz
379.23 KB
89.22 gz
+6.07 KB (+1.6%)
+1.77 gz (+2.0%)
🔴 LineChart-svg 370.09 KB
86.06 gz
376.05 KB
87.79 gz
+5.96 KB (+1.6%)
+1.73 gz (+2.0%)
🔴 ScatterChart-svg 367.25 KB
85.36 gz
373.20 KB
87.08 gz
+5.96 KB (+1.6%)
+1.72 gz (+2.0%)
🔴 line-chart-html 365.59 KB
85.15 gz
371.62 KB
86.91 gz
+6.03 KB (+1.6%)
+1.76 gz (+2.1%)
🔴 line-chart-svg 363.04 KB
84.47 gz
369.00 KB
86.21 gz
+5.96 KB (+1.6%)
+1.73 gz (+2.1%)
Geo (3 changed)
Scenario Current New Change
🔴 geo-full 461.31 KB
109.69 gz
467.44 KB
111.53 gz
+6.13 KB (+1.3%)
+1.84 gz (+1.7%)
🔴 geo-tiles 408.86 KB
96.00 gz
414.96 KB
97.81 gz
+6.10 KB (+1.5%)
+1.82 gz (+1.9%)
🔴 geo 403.75 KB
94.32 gz
409.86 KB
96.14 gz
+6.11 KB (+1.5%)
+1.82 gz (+1.9%)
Hierarchy (4 changed)
Scenario Current New Change
🔴 hierarchy-tree 397.39 KB
93.28 gz
403.51 KB
95.09 gz
+6.12 KB (+1.5%)
+1.80 gz (+1.9%)
🔴 hierarchy-treemap 394.28 KB
92.49 gz
400.39 KB
94.31 gz
+6.11 KB (+1.5%)
+1.83 gz (+2.0%)
🔴 hierarchy-pack 393.69 KB
92.40 gz
399.82 KB
94.21 gz
+6.12 KB (+1.6%)
+1.81 gz (+2.0%)
🔴 dodge 391.42 KB
91.76 gz
397.53 KB
93.58 gz
+6.11 KB (+1.6%)
+1.81 gz (+2.0%)
Graph / network (4 changed)
Scenario Current New Change
🔴 dagre 456.20 KB
109.24 gz
462.26 KB
111.05 gz
+6.06 KB (+1.3%)
+1.81 gz (+1.7%)
🔴 force 399.81 KB
94.14 gz
405.91 KB
95.92 gz
+6.10 KB (+1.5%)
+1.78 gz (+1.9%)
🔴 sankey 399.59 KB
93.51 gz
405.72 KB
95.37 gz
+6.13 KB (+1.5%)
+1.86 gz (+2.0%)
🔴 chord 396.28 KB
92.56 gz
402.40 KB
94.38 gz
+6.12 KB (+1.5%)
+1.82 gz (+2.0%)
Components (12 changed)
Scenario Current New Change
🟡 Axis 217.22 KB
49.66 gz
217.24 KB
49.67 gz
+0.02 KB (+0.0%)
+0.02 gz (+0.0%)
🟡 Axis.svg 186.93 KB
43.37 gz
186.95 KB
43.38 gz
+0.02 KB (+0.0%)
+0.01 gz (+0.0%)
🟡 Axis.canvas 185.04 KB
43.20 gz
185.07 KB
43.21 gz
+0.02 KB (+0.0%)
+0.01 gz (+0.0%)
🟡 Axis.html 181.36 KB
41.98 gz
181.38 KB
41.98 gz
+0.02 KB (+0.0%)
+0.01 gz (+0.0%)
🔴 Tooltip 157.06 KB
38.44 gz
159.20 KB
39.26 gz
+2.14 KB (+1.4%)
+0.83 gz (+2.2%)
🟡 Layer 121.68 KB
29.64 gz
122.24 KB
29.79 gz
+0.55 KB (+0.5%)
+0.16 gz (+0.5%)
🟡 Highlight 52.84 KB
10.40 gz
52.94 KB
10.44 gz
+0.10 KB (+0.2%)
+0.04 gz (+0.4%)
🟡 Highlight.svg 42.07 KB
8.50 gz
42.16 KB
8.55 gz
+0.10 KB (+0.2%)
+0.05 gz (+0.6%)
🟡 Highlight.html 41.09 KB
8.46 gz
41.19 KB
8.49 gz
+0.09 KB (+0.2%)
+0.03 gz (+0.3%)
🟡 Highlight.canvas 39.45 KB
7.90 gz
39.54 KB
7.94 gz
+0.09 KB (+0.2%)
+0.03 gz (+0.4%)
🔴 TransformContext 27.76 KB
6.96 gz
29.19 KB
7.25 gz
+1.43 KB (+5.1%)
+0.29 gz (+4.2%)
🟢 WebGL 3.29 KB
1.43 gz
0.00 KB
0.00 gz
-3.29 KB (-100.0%)
-1.43 gz (-100.0%)
Worst case (1 changed)
Scenario Current New Change
🟡 all 1146.81 KB
272.40 gz
1152.31 KB
273.93 gz
+5.50 KB (+0.5%)
+1.53 gz (+0.6%)

Understanding this report
  • Use-case scenarios measure the bundle cost of common chart configurations (e.g. a line chart with axes)
  • Individual components measure each component imported in isolation
  • Svelte runtime is excluded; sizes reflect layerchart + its dependencies (d3, etc.)
  • When multiple components share dependencies (e.g. d3-scale), the real-world cost is lower than the sum of individual sizes
  • Changes smaller than 10 bytes or 0.1% are considered insignificant

…and a menu section, and add `rotationExtent` / `rotateExtent` / `tiltExtent` transform constraints (replacing `maxTilt`)
… charts by domain, and fix tooltip, highlight, and pan / zoom glitches

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
techniq and others added 8 commits November 3, 2026 12:32
…les change and the zoom is even, and add `isScaleLinear()`

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…iew`

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…` does, in place of the view's `margin`

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er`, `Polygon`, `Arc`, `Text`, `Spline`, and `Area` props, `tickSpacing`, and viewport labels kept clear of their axis

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…bel toggles on the 3D scatter

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…erspective`

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… not its floor, so a drag turns it in place

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions
github-actions Bot requested a deployment to Preview November 3, 2026 21:27 Abandoned

This branch had an error being deployed

1 abandoned deployment
Preview — e6396f65 Deployed Nov 3, 2026 by github-actions[bot]
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