Serverless queues for TypeScript

Use Inngest’s type safe SDK to enqueue jobs using events. No polling - Inngest calls your serverless functions.

Graphic of Nothing to configure

Nothing to configure

Inngest is serverless, and there’s no queue to configure. Just start sending events, and your functions declare which events trigger them.

Graphic of We call your function

We call your function

Inngest calls your function as events are received. There is no need to set up a worker that polls a queue.

Graphic of Automatic retries

Automatic retries

Failures happen. Inngest retries your functions automatically. The dead letter queue is a thing of the past.

Queue work in just a few lines of code

1 Define your event payload type

2 Send events with type

3 Define your functions with that event trigger

Functions trigger as events are received. Inngest calls all matching functions via HTTP.

1// Define your event payload with our standard name & data fields
2type Events = {
3  "user.signup": {
4    data: {
5      userId: string;
6    };
7  };
9const inngest = new Inngest({
10  id: "my-app",
11  schemas: new EventSchemas().fromRecord<Events>(),
14// Send events to Inngest
15await inngest.send({
16  name: "user.signup",
17  data: { userId: "12345" },
20// Define your function to handle that event
22  { id: "post-signup-email" },
23  { event: "user.signup" },
24  async ({ event }) => {
25    // Handle your event
26  }

The DX and visibility with Inngest is really incredible. We are able to develop functions locally easier and faster that with our previous queue. Also, Inngest's tools give us the visibility to debug issues much quicker than before.

Logo of Bu Kinoshita
Bu Kinoshita
Co-founder @ Resend

Everything you need to build

Amazing local DX

Our open source dev server runs on your machine giving you a local sandbox environment with a UI for easy debugging.

Full observability and logs

Check the status of a given job with ease. View your complete event history and function logs anytime.

Fan-out Jobs

Events can trigger multiple functions, meaning that you can separate logic into different jobs that consume the same event.

Scheduled work for later

Create jobs that sleep or pause for hours, days or weeks to create durable workflows faster than ever before.

TypeScript support

Define your event payload as TypeScript types to have end-to-end type safety for all your jobs.

Ready to start building?

Ship background functions & workflows like never before

$ npx inngest-cli devGet started for free