"use client";import { useRunDetails } from "@trigger.dev/react";export function EventDetails({ runId }: { runId: string }) { const { isLoading, isError, data, error } = useRunDetails(runId); if (isLoading) { return <div>Loading...</div>; } if (isError) { return <div>Error: {error.message}</div>; } //show the run status and all the tasks return ( <div> <h2>Run status: {data?.status}</h2> <div> {data?.tasks?.map((task) => ( <div className="flex gap-2 items-center"> {task.status === "ERRORED" ? "⛔️" : task.status === "COMPLETED" ? "✅" : "⏳"} <div className="flex gap-1.5 items-center"> <h4 className="text-base">{task.displayKey ?? task.name}</h4> </div> </div> ))} </div> </div> );}
React SDK
useRunDetails()
The useRunDetails() React hook will show the live status of run.
Copy
Ask AI
"use client";import { useRunDetails } from "@trigger.dev/react";export function EventDetails({ runId }: { runId: string }) { const { isLoading, isError, data, error } = useRunDetails(runId); if (isLoading) { return <div>Loading...</div>; } if (isError) { return <div>Error: {error.message}</div>; } //show the run status and all the tasks return ( <div> <h2>Run status: {data?.status}</h2> <div> {data?.tasks?.map((task) => ( <div className="flex gap-2 items-center"> {task.status === "ERRORED" ? "⛔️" : task.status === "COMPLETED" ? "✅" : "⏳"} <div className="flex gap-1.5 items-center"> <h4 className="text-base">{task.displayKey ?? task.name}</h4> </div> </div> ))} </div> </div> );}
This hook will automatically update until the run has either completed or failed.There are a couple of ways you can get a runId to pass in:
In the frontend you can get the runId from the useEventDetails() hook. Although if you want the first run triggered by an event, we suggest you use useEventRunDetails().
From the backend you can get the latest runs for a Job using the client.getRuns() method. This will return an array of runs, including their ids. You can then pass an id to your frontend to display the live status.
You can get the full status of a Run from the backend using the
client.getRun() method.
If you're familiar with React Query, you'll recognize the data that is
returned by this hook. React Query 5 is used internally.
The status of the run. Can be one of the following: PENDING, CANCELED,
SUCCESS, QUEUED, WAITING_ON_CONNECTIONS, PREPROCESSING, STARTED,
FAILURE, TIMED_OUT, ABORTED
The icon of the Task, a string. For integrations, this will be a lowercase
name of the company. Can be used with the
@trigger.dev/companyicons
package to display an svg.