Skip to content

[Feature]: Promote concurrency to Stable — define exit criteria from Experimental #133

Description

@JosunLP

Pre-flight checklist

  • I searched existing issues and did not find a duplicate request.
  • I explained the problem or use case, not just the desired API.

Problem or use case
concurrency is Experimental and carries hard documented constraints that block real adoption: handlers must be standalone serializable functions (no closures); the module is browser-only ("Node / Deno / Bun adapters: not adopted"); it requires a relaxed CSP ('unsafe-eval' plus worker-src blob:) because worker bodies are revived via new Function(...); and createSharedBuffer() needs crossOriginIsolated with COOP/COEP headers. The 'unsafe-eval' requirement in particular directly contradicts bQuery's secure-by-default posture. There is no published path out of Experimental.

Proposed solution
Publish exit criteria and resolve the two adoption-blocking constraints tracked in #134 (CSP-safe execution) and, where appropriate, document the closure limitation as a permanent, clearly-explained design boundary rather than a bug. Criteria: (a) a default execution mode that needs no 'unsafe-eval' (#134); (b) documented, enforced guidance for the serializable-handler constraint with good error messages; (c) test coverage for pools, RPC, and shared buffers; (d) an explicit statement of the runtime boundary (browser-focused) consistent with the module's stated non-goals.

Possible API or UX shape

## Stability: targeting Stable in 1.15.0
Exit criteria:
- [ ] CSP-safe default worker mode, no 'unsafe-eval' (#134)
- [ ] Serializable-handler constraint documented + enforced with clear errors
- [ ] Coverage: task/pool/RPC/sharedBuffer
- [ ] Runtime boundary stated (browser-focused, per non-goals)

Alternatives considered
Keeping concurrency Experimental because it is browser-only — the browser focus is a legitimate scoping decision and need not block stability; what blocks it is the eval-dependent default and undocumented constraints, both addressable. Adding Node/Deno/Bun worker adapters — explicitly out of scope per the module's non-goals, so not proposed here.

Relevant area
concurrency

Additional context
The module's ThreadTS parity matrix marks pools/collection helpers as "Adapted" and decorators/runtime adapters as "Not adopted," which is fine to keep. The 'unsafe-eval' requirement is the item most at odds with the framework's security identity and should be treated as the primary blocker.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions