Reliable background jobs without the headache of managing servers

Trigger.dev has no timeouts, gives you control over concurrency, includes built-in monitoring, and scales to handle an elastic workload. You get all this and more without managing servers yourself.

Observability & monitoring

Concurrency & queues

Durable cron schedules

No infrastructure to manage

Advanced filtering

AI features

Automatic retries

Bulk replaying

Tag your tasks

Real-time alerts

Write normal code

Batch triggers

Long-running tasks

Checkpointing

Explore the full set of powerful features

No infrastructure to manage

Your tasks are deployed and automatically scaled on Trigger.dev's long-running servers, which completely eliminates timeouts. This makes development easy without the worry of managing infrastructure.

Long-running tasks

Trigger.dev makes it easy to run background jobs that take a long time to complete. So you can handle resource-heavy tasks like video processing, audio manipulation, PDF conversion, or large CSV processing all without timeouts.

AI features

Trigger.dev is perfect for AI tasks that often exceed serverless timeouts, like waiting for LLM responses. Our Realtime feature also lets you stream results directly to your frontend.

Checkpointing

Tasks are inherently durable, thanks to our checkpointing feature. It allows the state of your task to be saved and resumed later, ensuring reliability. We also freeze tasks during waits meaning you only pay for task execution time.

Write normal code

With Trigger.dev, you just write your usual async code, and it works seamlessly. No need to split your code into chunks to avoid serverless timeouts, as you deploy your tasks to our long-running servers. Tasks docs

Batch triggering

Use batchTrigger() to initiate multiple runs of a task with custom payloads and options. For fanning-out scenarios, batchTriggerAndWait() allows you to trigger multiple task instances and wait for all results before proceeding. Batch triggering docs

Automatic retries

If your task encounters an uncaught error, we automatically attempt to run it again. You can combine and nest tasks, triggering them from one another, with each task maintaining its own retry behavior. Retrying docs

Advanced filtering

Easily sort and find tasks based on status, environment, tags , and creation date. You can filter from the dashboard and programmatically via the SDK using runs.list().

Bulk replaying

Create copies of multiple runs simultaneously, using the same payload but with the latest code version in your environment. This is particularly useful for replaying failed runs or testing updates across lots of tasks. Replaying docs

Real-time alerts

Choose your preferred notification method – email, Slack, or webhook – to stay updated on run failures, deployment issues, or successful deployments. We attempt runs multiple times based on your retry settings and alert you if an uncaught error occurs in any run. Alerts docs

Tag your tasks

Attach up to five tags to each run – strings between 1 and 64 characters – to serve as powerful identifiers. Use them to filter and organize your runs through both the dashboard and SDK. Tags docs

Test your tasks

You can test your tasks in every environment using the test page in the Trigger.dev dashboard. This allows you to make sure everything is working correctly before pushing your tasks live.

React

React hooks

Interact with the Trigger.dev API using our React hooks package. You can use these to fetch runs, batches and subscribe to real-time updates.

Runtime schema payloads

The schemaTaskfunction allows you to define a task with a runtime payload schema . This validates the payload before the task is run, or when a task is triggered directly. If a task is triggered with an invalid payload, the task will fail.

Versioning

Atomic versioning allows you to deploy new versions of your code without affecting currently running tasks.

Waits

You can add waits to your tasks to pause execution for a specified duration. This is useful for writing complex tasks without having to schedule them manually or poll for changes.

Multiple environments

Trigger.dev supports DEV, STAGING, and PROD environments, allowing your team to test and deploy your tasks in different environments without interrupting production.

Build extensions

Build extensions allow you to hook into the build system and customize the build process, or the resulting bundle and container image. They can add additional files, dependencies, esbuild plugins, npm dependencies, system packages, commands and environment variables.

Run metadata

Attach a small amount of metadata to a run which updates as the run progresses. This data can be accessed from inside the run function, via the API, and in the dashboard.

Ready to start building?

Build and deploy your first task in 3 minutes.

Get started now
,