What
webgl_worker_offscreencanvas (the official example that transfers an OffscreenCanvas
to a Web Worker and renders entirely off the main thread) is unported. Not because the
technique is unsupported in principle, but because nobody has verified the userland glue
end to end against this stack (@react-three/fiber@10.0.0-alpha.4, /webgpu entry).
Investigated 2026-09-07 (UPSTREAM.md brief B54, draft ready to paste at
docs/upstream-issues/B54-fiber-offscreencanvas.md):
- fiber's
createRoot() is already typed for OffscreenCanvas and has a genuine runtime
branch (computeInitialSize() reads .width/.height directly when there's no DOM
element to measure) — tracing back to already-merged PRs (#2770, #2495, #2493). The
low-level primitive is more capable than documented.
- What's actually missing is (1) no documented worker entry point / no confirmation
WebGPURenderer construction succeeds against a transferred canvas inside a dedicated
Worker, and (2) no event/resize forwarding story across the postMessage boundary.
- A pre-existing sibling package,
@react-three/offscreen, already implements the
higher-level pieces (worker creation, canvas transfer, event forwarding) but is
unverified against fiber v10's /webgpu entry — its peer range doesn't even cap below
v10, and it was last published 2025-01-30.
- The actual r185 original is simpler than the general problem: it's a one-shot canvas
transfer + init payload with no live event forwarding, so a faithful port of THIS
specific demo only needs the "documented entry point" half, not the event-bridge half.
Why it matters
Dennis, 2026-09-07: wanted, not skipped — an OffscreenCanvas story is something the
gallery should eventually offer. Blast radius is one demo category today (this is the only
OffscreenCanvas example in the r185 corpus), but the capability gap is real and worth
tracking rather than re-discovering later.
Recommendation already on file
Stays blocked until fiber (or @react-three/offscreen) has a documented/verified v10
WebGPU worker story. docs/upstream-issues/B54-fiber-offscreencanvas.md has a full
issue draft ready to paste upstream (framed as a feature-request/audit ask, cheapest path
first: a short fiber docs page pointing at @react-three/offscreen with an explicit
verified-or-not statement for v10/WebGPU).
Pointer
docs/REVIEW-QUEUE.md §1b (Phase 2 — three things an agent cannot decide), the
OffscreenCanvas bullet. The other two bullets in that entry (WebXR, @react-three/rapier)
are already decided and recorded in the Resolved table — this issue covers only the
OffscreenCanvas part, which is what remains open.
What
webgl_worker_offscreencanvas(the official example that transfers anOffscreenCanvasto a Web Worker and renders entirely off the main thread) is unported. Not because the
technique is unsupported in principle, but because nobody has verified the userland glue
end to end against this stack (
@react-three/fiber@10.0.0-alpha.4,/webgpuentry).Investigated 2026-09-07 (UPSTREAM.md brief B54, draft ready to paste at
docs/upstream-issues/B54-fiber-offscreencanvas.md):createRoot()is already typed forOffscreenCanvasand has a genuine runtimebranch (
computeInitialSize()reads.width/.heightdirectly when there's no DOMelement to measure) — tracing back to already-merged PRs (#2770, #2495, #2493). The
low-level primitive is more capable than documented.
WebGPURendererconstruction succeeds against a transferred canvas inside a dedicatedWorker, and (2) no event/resize forwarding story across the
postMessageboundary.@react-three/offscreen, already implements thehigher-level pieces (worker creation, canvas transfer, event forwarding) but is
unverified against fiber v10's
/webgpuentry — its peer range doesn't even cap belowv10, and it was last published 2025-01-30.
transfer + init payload with no live event forwarding, so a faithful port of THIS
specific demo only needs the "documented entry point" half, not the event-bridge half.
Why it matters
Dennis, 2026-09-07: wanted, not skipped — an OffscreenCanvas story is something the
gallery should eventually offer. Blast radius is one demo category today (this is the only
OffscreenCanvas example in the r185 corpus), but the capability gap is real and worth
tracking rather than re-discovering later.
Recommendation already on file
Stays blocked until fiber (or
@react-three/offscreen) has a documented/verified v10WebGPU worker story.
docs/upstream-issues/B54-fiber-offscreencanvas.mdhas a fullissue draft ready to paste upstream (framed as a feature-request/audit ask, cheapest path
first: a short fiber docs page pointing at
@react-three/offscreenwith an explicitverified-or-not statement for v10/WebGPU).
Pointer
docs/REVIEW-QUEUE.md§1b (Phase 2 — three things an agent cannot decide), theOffscreenCanvas bullet. The other two bullets in that entry (WebXR,
@react-three/rapier)are already decided and recorded in the Resolved table — this issue covers only the
OffscreenCanvas part, which is what remains open.