Skip to content

OffscreenCanvas worker rendering: no verified fiber v10/WebGPU story yet (blocks webgl_worker_offscreencanvas port) #2

Description

@DennisSmolek

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions