Skip to main content
Our react hooks package provides a set of hooks that make it easy to interact with the Trigger.dev API from your React application, using our frontend API. You can use these hooks to fetch runs, and subscribe to real-time updates, and trigger tasks from your frontend application.

Installation

Install the @trigger.dev/react-hooks package in your project:

Authentication

All hooks accept an optional last argument options that accepts an accessToken param, which should be a valid Public Access Token. Learn more about generating tokens in the frontend guide.
Alternatively, you can use our TriggerAuthContext provider
Now children components can use the hooks to interact with the Trigger.dev API. If you are self-hosting Trigger.dev, you can provide the baseURL to the TriggerAuthContext provider.

Next.js and client components

If you are using Next.js with the App Router, you have to make sure the component that uses the TriggerAuthContext is a client component. So for example, the following code will not work:
app/page.tsx
That’s because Page is a server component and the TriggerAuthContext.Provider uses client-only react code. To fix this, wrap the TriggerAuthContext.Provider in a client component:
components/TriggerProvider.tsx

Passing the token to the frontend

Techniques for passing the token to the frontend vary depending on your setup. Here are a few ways to do it for different setups:

Next.js App Router

If you are using Next.js with the App Router and you are triggering a task from a server action, you can use cookies to store and pass the token to the frontend.
actions/trigger.ts
Then in the /runs/[id].tsx page, you can read the token from the cookie and pass it to the TriggerProvider.
pages/runs/[id].tsx
Instead of a cookie, you could also use a query parameter to pass the token to the frontend:
actions/trigger.ts
And then in the /runs/[id].tsx page:
pages/runs/[id].tsx
Another alternative would be to use a server-side rendered page to fetch the token and pass it to the frontend:

SWR vs Realtime hooks

We offer two “styles” of hooks: SWR and Realtime. The SWR hooks use the swr library to fetch data once and cache it. The Realtime hooks use Trigger.dev realtime to subscribe to updates in real-time.
It can be a little confusing which one to use because swr can also be configured to poll for updates. But because of rate-limits and the way the Trigger.dev API works, we recommend using the Realtime hooks for most use-cases.

SWR Hooks

useRun

The useRun hook allows you to fetch a run by its ID.
The run object returned is the same as the run object returned by the Trigger.dev API. To correctly type the run’s payload and output, you can provide the type of your task to the useRun hook:

Common options

You can pass the following options to the all SWR hooks:
boolean
Revalidate the data when the window regains focus.
boolean
Revalidate the data when the browser regains a network connection.
number
Poll for updates at the specified interval (in milliseconds). Polling is not recommended for most use-cases. Use the Realtime hooks instead.

Common return values

Error
An error object if an error occurred while fetching the data.
boolean
A boolean indicating if the data is currently being fetched.
boolean
A boolean indicating if the data is currently being revalidated.
boolean
A boolean indicating if an error occurred while fetching the data.

Realtime hooks

See our Realtime hooks documentation for more information.

Trigger Hooks

See our Trigger hooks documentation for more information.