releases.shpreview

Trigger.dev v4.4.2

v4.4.2

Input streams for bidirectional task communication, batch queue performance improvements, and security hardening.

1 new feature, 2 improvements, 2 bug fixes, and 7 server changes.

Input Streams for Bidirectional Communication with Running Tasks

Tasks now support typed input streams for receiving data during execution, including the ability to suspend tasks while awaiting responses.

// streams.ts — define once, share everywhere
import { streams } from "@trigger.dev/sdk";

export const approval = streams.input<{ approved: boolean; reviewer: string }>({
  id: "approval",
});
// task — suspend until a reviewer responds (frees compute while waiting)
const result = await approval.wait({ timeout: "7d" });
if (result.ok && result.output.approved) {
  await publish(draft);
}
// backend — send data to the running task
await approval.send(runId, { approved: true, reviewer: "alice@example.com" });

Additional capabilities include .once() for non-suspending waits, .on() for persistent listeners (useful for cancel signals on AI tasks), and a useInputStreamSend React hook for frontend integration. (#3146)

Improvements

  • Increased Batch trigger processing concurrency limits: Free plan 1 → 5, Hobby plan stays at 10, Pro plan 10 → 50. (#3079)
  • Added PAYLOAD_TOO_LARGE error code for oversized batch trigger items to fail gracefully with pre-failed runs instead of aborting entire batches. (#3137)

Bug Fixes

  • Fixed slow batch queue processing caused by spurious cooloff on concurrency blocks and race condition with non-atomic retry attempt count updates during message re-queue. (#3079)
  • Fixed batchTriggerAndWait variants returning unknown for run.taskIdentifier instead of correct values. (#3080)

Server Changes

Available in v4.4.2 Docker image and live on Trigger.dev Cloud:

  • Two-level tenant dispatch replacing single master queue with two-level index for O(1) tenant selection and fair scheduling. (#3133)
  • Server-side input streams support: API routes, SSE reading, waitpoint creation, and Redis caching for .send()-to-.wait() bridging. Includes dashboard span support and s2-lite support. (#3146)
  • Batch queue processing concurrency limits increased with disabled cooloff. (#3079)
  • Batch queue global rate limiter moved to per-item limiting with worker queue depth cap. (#3166)
  • Fixed waitpoint race condition where runs could be blocked indefinitely due to PostgreSQL MVCC issue. (#3075)
  • Oversized NDJSON batch items now emit as pre-failed runs with PAYLOAD_TOO_LARGE. (#3137)
  • Impersonation sessions now verify real user admin status on every request. (#3078)

How to Upgrade

npx trigger.dev@latest update  # npm
pnpm dlx trigger.dev@latest update  # pnpm
yarn dlx trigger.dev@latest update  # yarn
bunx trigger.dev@latest update  # bun

Self-hosted: Update Docker image to ghcr.io/triggerdotdev/trigger.dev:v4.4.2.

Fetched June 3, 2026