Inngest
Serverless background jobs and workflow orchestration — no Redis or worker servers.
2026 verdict
Best serverless background jobs — no Redis or worker servers required
Best for: Next.js and serverless applications that need background jobs, scheduled tasks, or multi-step workflows without the operational overhead of Redis and worker servers
Not for: Applications with very high job throughput (millions per day) where costs scale rapidly, or teams preferring open-source self-hosted solutions
Overview
Inngest solves a problem every production application eventually faces: you need to run code outside the HTTP request cycle — sending emails, processing uploads, calling slow APIs, scheduling tasks — and the standard answer involves spinning up a Redis cluster, a BullMQ worker process, and a separate deployment with its own scaling configuration.
Inngest's approach is different. You define background functions as regular TypeScript functions in your existing codebase using \`nngest.createFunction\` The SDK handles receiving events, queueing function invocations, retrying failures, and reporting results. Your application calls \`nngest.send({ name: 'user/signup', data: { userId } })\`and Inngest handles the rest.
The multi-step workflow primitive is particularly useful. A function can be split into steps — each executed independently, retriable independently, and able to wait for external events. A user onboarding workflow might: send a welcome email, wait 3 days, check if the user completed setup, send a reminder if not, wait 7 more days, send a final follow-up. All expressed as a single readable function with \`tep.run()\` \`tep.sleep()\` and \`tep.waitForEvent()` calls.
The observability dashboard shows every function invocation, its status, step-level timings, and full event history. When a background job fails, you see exactly which step failed, inspect the error, and replay the event with one click.
Deployment is the biggest differentiator from traditional queue setups. Inngest works as a serverless function — it deploys alongside your Next.js or Express app, autoscales with your application, and does not require a separate worker server or Redis instance.
Pros and cons
Pros
- +No Redis or separate worker infrastructure required
- +Multi-step workflows with sleep, wait, and retry primitives
- +Deploys as a serverless function alongside your app
- +Excellent observability dashboard — replay failed events
- +TypeScript-first with full type safety for events and payloads
Cons
- −Pro plan at $100/month is expensive for pre-revenue projects
- −Vendor lock-in — Inngest primitives do not map to standard queue APIs
- −Free tier limited to 50k runs/month
Pricing in 2026
Free
Free
- ·50k function runs/month
- ·3-day event history
- ·Basic retries
- ·Community support
Pro
$100/month
- ·5M function runs/month
- ·7-day history
- ·Advanced retries
- ·Priority support
Free tier available. Pro starts at $100/month.
View current pricing at Inngest →Tips for using Inngest in production
Use `step.run()` for every side effect — it makes each step individually retriable
Inngest `step.waitForEvent()` enables event-driven workflows — wait for a user action before continuing
Local development with `npx inngest-cli@latest dev` mirrors production behavior exactly
Last updated 2026-01-15 · Data sourced from official documentation and independent benchmarks