Skip to main content

Import

import { MergeQueue } from "smithers-orchestrator";

Props

PropTypeDefaultDescription
idstringauto-generatedStable id for the queue group.
maxConcurrencynumber1Max simultaneous child tasks.
skipIfbooleanfalseSkip the entire subtree.
childrenReactNodeChild tasks/control-flow nodes.

Examples

Single-lane (default)

<MergeQueue>
  <Task id="lint" output={outputs.outputC}>{{ value: 1 }}</Task>
  <Task id="build" output={outputs.outputC}>{{ value: 2 }}</Task>
  <Task id="test" output={outputs.outputC}>{{ value: 3 }}</Task>
</MergeQueue>

Custom concurrency

<MergeQueue maxConcurrency={2}>
  {items.map((it, i) => (
    <Task key={i} id={`t${i}`} output={outputs.outputC}>{{ value: i }}</Task>
  ))}
</MergeQueue>

Nesting with Parallel

<Parallel maxConcurrency={3}>
  <MergeQueue>
    {items.map((it, i) => (
      <Task key={i} id={`q${i}`} output={outputs.outputC}>{{ value: i }}</Task>
    ))}
  </MergeQueue>
  <Task id="other" output={outputs.outputC}>{{ value: 99 }}</Task>
</Parallel>
The inner <MergeQueue> constrains its children to 1-at-a-time. The outer <Parallel> runs unrelated siblings concurrently up to its own limit.

Internals

Renders as <smithers:merge-queue> (or null when skipped). Each child task receives parallelGroupId and parallelMaxConcurrency in its descriptor. The engine enforces the concurrency cap per group.

Notes

  • Defaults to single-lane (maxConcurrency = 1).
  • Innermost group determines the effective cap for its descendants.
  • Tasks outside the queue are unaffected by its limit.