Optional WebGL verification
18 October 2026 performance closure
Section titled “18 October 2026 performance closure”Both selected million-observation gaps are closed. All eight GPU cases and all eight matched CPU reference cases meet their unchanged gates on Apple M1 Pro, MacBookPro18,3, 16 GiB RAM, macOS 26.4 (25E5207k), Chromium 147.0.7727.15 / ANGLE Metal. See all measurements, budgets and limitations. The complete raw matrices retain all three runs per case and the same emitted JavaScript hash. Profiled/interrupted experiments are excluded from these claims.
The shared Charts owner reduces discarded validation copies and large temporary lookup tables, avoids per-point scatter array/string-key churn, and uses compact GPU rectangle storage when shape/paint are uniform. Mixed geometry/paint retains the original full layout and one instanced draw. Vertex, uniform typed-staging and floating coverage resources are reused across redraw/resize. No source observations, CPU inspection entries or SVG fallback/export geometry are dropped. Runtime validation, public snapshot ownership and supported option values remain unchanged. Reordered/shared-observation analytical mappings retain full lookup validation; ordered mappings still check every identity, schema and matrix value.
Current local checks
Section titled “Current local checks”| Check | Result |
|---|---|
| Charts full unit suite | 3,038 passed / 180 files |
| Pivot full unit suite | 4,069 passed / 326 files |
| Dense SVG, navigation/XY brush and built-package compatibility | 33 passed across Chromium, Firefox 148.0.2 and WebKit |
| Metal GPU functional, coverage, export and resource lifecycle | 19 passed |
| Same GPU cohort in standard headless Chromium | 19 passed; functional evidence only |
| Forced unavailable GPU, all three browser engines | 3 passed |
| M3 GPU + matched CPU reference matrices | 8 + 8 completed; every applicable gate passes |
| M2 batched SVG + 1k default SVG regression | 9 + 3 completed; every original gate passes |
| Charts/Pivot ESM and UMD builds; source and built public types | Passed |
| Packed Charts per-type imports, isolated declarations and line-only graph | Passed; 223 modules |
| Public framework SSR checks | 3 passed |
| Portal docs contracts and production build | 9 passed; build passed |
The 19 GPU cases include four families in standalone/Pivot, raw pointer/keyboard activation, nulls/clipping/reversal, navigated/restored windows, DPR 2 and narrow resize, real context loss and updates while lost, CPU SVG/PNG exports and PDF encoder input, policy switch and destroy. Additional cases verify dense subpixel coverage before/after shrink and recovery, absent float blending/unavailable GPU, DPR 1/2 hairlines, ordered mixed-color blending in one draw, varying radii after layout expansion, shared typed-buffer/vertex/texture reuse, zero-area recovery and injected upload-failure fallback/recovery. Context/listener accounting shows no extra contexts or attached handlers after switch/destroy in these fixtures.
The PDF test verifies the canonical clean CPU-SVG payload in both products; it does not validate a third-party PDF encoder’s output bytes. Native/vector-PDF pipeline tests pass in the full suite. Center pixels agree within four channel values in the product fixtures; this is not whole-image or SVG feature equality. Actual GPU recovery/performance is measured on Chromium/Metal. Firefox/WebKit checks cover CPU rendering and unavailable-GPU behavior, not untested driver recovery. Standard-headless/software GPU checks are functional evidence only. Retained heap/buffer budgets do not measure native process RSS, peak driver/GPU allocations or long-session leaks. Three-run p95 is the maximum of those samples; the million-bar/column submission margins are small and are not cross-host guarantees.
Release and compatibility boundary
Section titled “Release and compatibility boundary”The source and public package checks are local. The pre-closure base had green
CI run 39084633849;
that run predates this performance closure. The closure is committed separately
on codex/chart-rendering-followthrough; its source-matched CI is recorded on
PR #733, which was already
merged before this follow-up. No additional merge, package publication, version
bump or deployment is part of this request.
The package version remains 3.0.10. The separate docs examples checkout was not
edited by this performance change; its earlier build/browser evidence remains
separate from the current portal reference checks. Matching installed-package
release verification remains release work, outside this request.
Reproduction
Section titled “Reproduction”E2E_PACKAGE=charts E2E_PORT=5421 CHART_GPU_BACKEND=metal pnpm --filter @revolist/revogrid-e2e-enterprise exec playwright test tests/chart-webgl.spec.ts tests/chart-webgl-coverage.spec.ts --config=playwright.webgl.config.ts --project=charts --workers=1node packages/charts/scripts/report-webgl.mjs packages/charts/docs/webgl-optimized.json --checkUse playwright.charts-compat.config.ts for the three-engine CPU and unavailable
GPU cases. The renderer capability matrix continues to define every
style/interaction/export fallback. No GPU line, polar or geographic family was added.