pmndrs / pmndrs/react-three-examples
OffscreenCanvas worker rendering: no verified fiber v10/WebGPU story yet (blocks webgl_worker_offscreencanvas port)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 2
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
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 forOffscreenCanvasand has a genuine runtime
branch (computeInitialSize()reads.width/.heightdirectly 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
WebGPURendererconstruction succeeds against a transferred canvas inside a dedicated
Worker, and (2) no event/resize forwarding story across thepostMessageboundary. - 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/webgpuentry — 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.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with docs/REVIEW-QUEUE.md §1b and the prepared docs/upstream-issues/B54-fiber-offscreencanvas.md. Then inspect @react-three/offscreen and fiber's createRoot() and /webgpu entry for a transferred canvas in a dedicated Worker. Done means a v10 WebGPU worker story is verified and documented, or its unresolved status is recorded clearly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react, three.js, typescript
- Domain
- computer-graphics, frontend, web-dev
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100