Inngest vs Trigger.dev vs BullMQ: Next.js Background Jobs (2026)
Inngest, Trigger.dev, and BullMQ for Next.js background jobs in 2026: where each runs, real pricing, honest 'where it loses', and how to pick.
Updated on July 15, 2026

On this page
We keep a shelf in the ShipGarden gallery for the plumbing nobody photographs: the background-job runner. It is the part of a Next.js SaaS that sends the welcome email, resizes the upload, runs the nightly export, and calls the model without freezing the request. Get it wrong and every slow task becomes a timeout your user watches spin.
This quarter we put three of the most-shipped options side by side:
Inngest,
Trigger.dev, and
BullMQ. They solve the same problem from three different addresses, and the honest answer to "which one" is decided by where your jobs actually run, not by whose feature list is longest.
Quick answer (2026)
For a Next.js SaaS in 2026, pick Inngest if you live on serverless and want zero queue infrastructure to babysit, Trigger.dev if you run long tasks that blow past serverless timeouts, and BullMQ if you already operate Redis and a persistent Node host and want the cheapest, most controllable option. All three are production-grade. The tiebreaker is your runtime, not a checklist.
The three at a glance
Scroll to see more
| Tool | Stars (Jul 2026) | License | Latest | Where the job runs | Free tier | Paid from |
|---|---|---|---|---|---|---|
Inngest | 5.6k | SSPL + Apache-2.0 (DOSP) | v1.37.0 | Serverless / HTTP, or self-host | 50k executions/mo | $99/mo Pro |
Trigger.dev | 15.7k | Apache-2.0 | v4.5.4 | Managed compute, or self-host | $5 credits, 20 concurrent | $10/mo Hobby |
BullMQ | 9.1k | MIT | v5.80.4 | Your Node host + Redis | Free (open source) | Redis + host cost only |
Star counts and versions from each project's GitHub repo, and free-tier and paid figures from each vendor's pricing page, all read July 2026 (sources linked in each section below).
The real dividing line: where does the work happen?
Every background-job tool answers one architectural question: what machine keeps running after the HTTP response is sent? Serverless functions are born to die fast, so a job that takes ninety seconds needs somewhere durable to live.
- Inngest keeps nothing of yours running. You send an event, and Inngest calls your function back over HTTP in durable steps, retrying and pacing each step for you. The queue is theirs; you never see it.
- Trigger.dev runs your task on its own managed compute (or your self-hosted stack), so a task can run for minutes or hours with no serverless timeout hanging over it.
- BullMQ runs inside your own always-on Node process, backed by a Redis you operate. Maximum control, and the machine is yours to keep alive.
That single distinction predicts most of the trade-offs below.
Inngest: event-driven jobs with no queue to run
Inngest is the pick when you never want to think about a queue. You define functions triggered by events, wrap the slow parts in step.run(...), and Inngest handles retries, concurrency, throttling, and multi-step durable flows. It is serverless-native, so it drops onto Vercel without a separate worker host. The server is source-available under SSPL (with delayed Apache-2.0 publication), and you can self-host it. The Inngest repo sits at 5.6k stars on v1.37.0 (July 2026).
Pricing is execution-based: a free Hobby tier of 50k executions a month, then Pro from $99/mo covering 1M+ executions and $50 per additional 1M (Inngest pricing, 2026).
Where it loses: you adopt Inngest's step model, and each step counts as an execution, so a workflow with many small steps burns the quota faster than a naive job count suggests. Pure CPU-bound grinding on serverless is still bound by your host's function limits unless you self-host. And the durable-step API, lovely as it is, is a shape your code marries.
Trigger.dev: managed compute for the jobs that run long
Trigger.dev is the answer when a job is genuinely long: rendering video, chaining model calls, crunching a big export. Tasks run on Trigger.dev's compute with no timeout, durable retries, and a proper run dashboard for observability. It is fully Apache-2.0 and self-hostable, and it is the most-starred of the three at 15.7k on v4.5.4 (July 2026) per the Trigger.dev repo.
The Free plan gives $5 of monthly credits and 20 concurrent runs; Hobby is $10/mo and Pro is $50/mo with 200+ concurrent runs and 30-day log retention (Trigger.dev pricing, 2026).
Where it loses: the pricing is credit-and-compute based, which is harder to forecast than a flat per-run number until you have run real workloads through it. Self-hosting is a heavier lift than dropping in a library, because you are standing up its whole stack. And on the lower tiers, concurrency caps will bite a spiky workload before anything else does.
BullMQ: the library you own, Redis and all
BullMQ is the classic move: an MIT-licensed, Redis-backed queue that runs inside your own Node workers. No vendor, no per-execution meter, and the lowest raw cost of the three because you only pay for Redis and the host it runs on. It is battle-tested at 9.1k stars on v5.80.4 (July 2026), and the BullMQ repo ships frequently. When founders on r/nextjs ask what to use for background jobs, the recurring line is "Inngest or Trigger if you are serverless; BullMQ if you have a VPS or a dedicated server," and that is the honest split.
Where it loses: BullMQ needs an always-on worker process, which is a poor fit for a pure-serverless Vercel deploy. You will want a persistent host (Railway, Render, Fly, or a VPS) to run the workers, and you build retries dashboards and alerting yourself, or add the paid Taskforce board. Redis operations, memory limits, and eviction policy all become your job. Control has an ops bill.
So which one do you ship?
- You are Vercel-only and want zero queue infra: Inngest. It is the shortest path from "no jobs" to "durable jobs" on serverless.
- Your tasks run for minutes or need heavy managed compute: Trigger.dev. It was built for the long-running case that serverless timeouts kill.
- You already run Redis and a persistent Node host, and want lowest cost with full control: BullMQ. No vendor, no meter, your rules.
A useful gut check: if you cannot name where a long-running worker would live in your current deploy, you want Inngest or Trigger.dev, because they answer that for you. If you can point at the box, BullMQ will be cheaper and more yours.
Cost at scale, honestly
At a few thousand jobs a month, all three are effectively free. The divergence starts when volume climbs. Inngest's execution meter is predictable but steps add up; a step-heavy pipeline at a couple million executions lands in low-hundreds-of-dollars territory on Pro. Trigger.dev's credit model rewards short, bursty tasks and costs more as compute-seconds pile up, so long jobs are where you watch it. BullMQ's bill is just your Redis plus the worker host, often the cheapest line item, with the caveat that your own time is the hidden cost when something needs debugging at 2am. Model your real workload before you commit; none of these numbers substitute for running your own jobs through a free tier for a week.
We test these building blocks because owning the stack is how you own the outcome. Both the Inngest starter review and the Trigger.dev background-jobs starter review in the gallery go deeper on the deploy paths for each if you want the hands-on install notes.
FAQ
Your move: spin up the free tier that matches your runtime, push one real slow job through it this week, and let the bill and the DX, not the marketing, make the call.
Written by
Mara LindqvistMara Lindqvist curates the ShipGarden gallery, road-testing open-source and source-available SaaS and AI boilerplates and the infrastructure they run on. She writes about time-to-first-deploy, cost, and vendor lock-in for founders who ship.
Frequently asked questions
Is Inngest, Trigger.dev, or BullMQ best for Next.js background jobs in 2026?
There is no single winner; it depends on where your jobs run. Inngest suits serverless (Vercel) apps that want no queue infrastructure, Trigger.dev suits long-running tasks that exceed serverless timeouts, and BullMQ suits teams already running Redis and a persistent Node host who want the cheapest, most controllable option (2026).
Can I use BullMQ on Vercel?
Not cleanly. BullMQ needs an always-on worker process, and Vercel's serverless functions are short-lived. You would run BullMQ workers on a persistent host such as Railway, Render, Fly, or a VPS, and keep the Next.js app on Vercel. If you want jobs without a separate host, Inngest or Trigger.dev fit serverless better (2026).
What does Inngest cost?
Inngest has a free Hobby tier of 50,000 executions per month, then a Pro plan from $99/month covering 1M+ executions with $50 per additional 1M, plus custom Enterprise pricing. Note that each step in a durable function counts as an execution (Inngest pricing, 2026).
Is Trigger.dev open source?
Yes. Trigger.dev is licensed Apache-2.0 and can be self-hosted, and it is the most-starred of the three at 15.7k on v4.5.4 (July 2026). Its managed cloud is credit-based, starting with a free plan that includes $5 of monthly credits and 20 concurrent runs (2026).
Which is cheapest at scale?
BullMQ is usually the cheapest in raw dollars because you only pay for Redis and the host running your workers, with no per-execution meter. The trade-off is operational: you run and monitor Redis and build your own dashboards, so engineering time becomes the hidden cost (2026).
Do these tools lock me in?
BullMQ (MIT) has the least lock-in since it is a library over standard Redis. Inngest is source-available (SSPL with delayed Apache-2.0 publication) and self-hostable, but your code adopts its durable-step API. Trigger.dev is Apache-2.0 and self-hostable, though your tasks are written to its SDK. All three can be self-run; the practical lock-in is the programming model, not the license (2026).
More from the garden
Best open-source Next.js SaaS + AI starters (2026 scorecard)
A hands-on July 2026 scorecard of ten open-source and source-available Next.js SaaS and AI starters, ranked across six axes with real GitHub stars and exact licenses.
Inngest v1.34 review (June 2026): hands-on with the open-source workflow starter for Next.js
ShipGarden's hands-on June 2026 review of Inngest v1.34 (v1.34.0 stable shipped June 29, JavaScript SDK v4.11.0 on npm) as the open-source durable-execution platform for Next.js apps. Five deploy paths, real cost-per-10k-executions math, an honest compare-side against Trigger.dev v4, the SSPL license question, and where v1.34 still bites.
Trigger.dev v4 review (June 2026): hands-on with the open-source background-jobs starter for Next.js
ShipGarden's hands-on June 2026 review of Trigger.dev v4 (v4.4.6 stable, v4.5.0-rc.7 in flight) as the open-source background-jobs platform for Next.js apps. Five deploy paths, real cost-per-10k-runs math, an honest read against Inngest and Convex, and where v4 still bites.
Inngest
Trigger.dev
BullMQ

