Background Jobs & Cron
Run work outside the request — sending batches, processing uploads, calling slow AI APIs, nightly cleanups — with retries when it fails.
The real choice
Hosted job platform or a queue you run. Hosted platforms work on serverless hosting and give you retries, schedules and a dashboard, at the cost of a vendor in your critical path; a queue library is free and fully yours, but needs a long-running worker process and Redis or Postgres to hold the jobs. A durable workflow engine sits between: you run the workers, it keeps each workflow's state so long processes resume after failures.
Pick by situation
Tap the ones that are you — the tools that fit light up below.- You deploy to serverless hosting and have tasks that run for minutes
Trigger.dev - One user action kicks off several steps with waits between them
Inngest - A process runs for days or months and must pick up where it left off after a crash
Temporal - You only need a scheduled call or a delayed HTTP request on serverless
Upstash - You already run a Node server and want a free queue next to it, on Redis or Postgres
BullMQ
The contenders
Grouped by the side of the choice they answer, not ranked. Open a row for when to use it, the trade-off and what makers say.
Trigger.devservice · open source · free tierLong-running TypeScript tasks — AI calls, media processing — that would time out in a serverless function.
23+5 open source$0Free935.5k/wk3.5× vs npm
Use it whenA task like video processing or a long AI call keeps hitting your serverless function's timeout.
Trade-offYour job code is deployed to and runs on Trigger.dev's infrastructure unless you self-host it.
llms.txtUsed by Amy by Jellyfish, Bolto, Clawcast, Contrive, CopyCopter and 18 more · in 5 open-source projects.
CopyCopter uses Trigger.dev as a background job manager, making the code cleaner, more scalable and more fun to play with! Trigger.dev is a must-have for NextJS Serverless App.s
Inngestservice · open source · free tierEvent-driven, multi-step workflows where each step retries on its own and your code stays in your existing app.

16+11 open source$99Pro1.6M/wk+125% vs npm
Use it whenOne user action fans out into several steps with waits and sleeps in between.
Trade-offPricing scales with executions and steps, so chatty workflows cost more.
llms.txtCLIIn LovableUsed by Cloudglue, FirstQuadrant, Move AI, North, Productlane and 11 more · in 11 open-source projects.
We also hosted our own Redis-based queue before managing events infra became a job in itself. Inngest has top tier local dev DX and helps our background jobs scale infinitely.
Temporalplatform · open source · free tierLong-running, multi-step workflows — payments, onboarding, AI agent loops — whose state must survive crashes and deploys, in Go, Java, Python, TypeScript and more.


29+15 open source$5.50Developer (pay as you go)3.7M/wk+64% vs npm
Use it whenA process spans minutes to months and a failed step must resume where it left off, not restart.
Trade-offYou run worker processes, plus the Temporal server or Temporal Cloud billed per action; workflow code must be deterministic.
llms.txtUsed by Atlas, Breyta.ai, Central, Finyuus, Flexprice and 24 more · in 15 open-source projects.
It powers our multi-step workflows across agent actions. Temporal gives us durability, visibility, and precise control. Battle-tested orchestration with strong developer UX.
Upstashplatform · free tierSimple scheduled calls and delayed HTTP jobs on serverless or edge hosting, via QStash.
2$1.00Pay as you go4.4M/wk+104% vs npm
Use it whenYou need a cron trigger or a delayed call on serverless hosting and nothing more.
Trade-offA message is an HTTP call to your endpoint, so the endpoint's time limit still applies to the work.
llms.txtIn v0Used by inbox-zero, Dub.
We use Upstash for caching and queues – it's been incredibly reliable for us since day one!
BullMQlibrary · open source · free tierNode apps on a long-running server that already have Redis — free and fully in your control.
1+60 open source—7.5M/wk+47% vs npm
Use it whenYou have a server and Redis already running and don't want a new vendor.
Trade-offYou run the worker processes and Redis yourself, and there is no hosted dashboard by default.
llms.txtUsed by Postiz · in 60 open-source projects.
This is the bread and butter of Postiz, this is how we schedule all the posts.
Cost: the cheapest plan that fits job runs or steps 100k runs, job compute time 20 hours, from list prices. Try your own numbers →
Cost as you grow
Each contender's cheapest usable plan as usage rises.
Who switches to what
Public pull requests on GitHub since Oct 2024 whose title says "X to Y" — real code changes, by developers in general rather than makers only. Pick a flow to see its pull requests.
- Migrate job execution from BullMQ to Temporal workflowsblu59204/CareerCraftsAI · 2026-09-26
- feat: migrate from BullMQ to Temporal for workflow orchestrationNOJV-TW/NOJV · 2026-04-02
- Moving from BullMQ to Temporal - big changegitroomhq/postiz-app · 2026-01-05
- feat(web): migrate web jobs from Trigger.dev to BullMQ (@buckt/jobs)joaopcm/buckt · 2026-05-29
- feat(api): migrate background jobs from Trigger.dev to BullMQ + Workbenchjoaopcm/buckt · 2026-05-29
- Migrate from trigger.dev to BullMQisntfunny/kitchenpace · 2026-03-01
Before you choose
Anything that takes more than a few seconds or calls a flaky third-party API belongs in a job, not in the request handler. Make every job safe to run twice, because retries will run it twice. If you deploy to serverless functions, pick a hosted option; if you already run a server and Redis, a library queue is enough.
- Firing off a promise without awaiting it in a serverless function; the function is frozen after the response and the work silently never finishes.
- Putting whole objects in the job payload instead of IDs, so the job acts on stale data by the time it runs.
- Running scheduled jobs with no alert on failure, so a nightly cleanup can be broken for weeks before anyone notices.
Other options
Real choices most makers here won't need to weigh.
Decided alongside
What the 59 makers' products here chose for their other decisions.