React Status Hooks

Matt Aitken

Matt Aitken

CEO, Trigger.dev

Image for React Status Hooks

You can now create statuses in your Job code that lets you do some pretty cool stuff in your UI, like:

  • Show exactly what you want in your UI (with as many statuses as you want).
  • Pass arbitrary data to your UI, which you can use to render elements.
  • Update existing elements in your UI as the progress of the run continues.

Here's some example code showing for a Job that generates memes. We've created a single status generatingMemes (you can create as many as you like) and then we've updated it (you can update it as often as you like). It gives you fine-grained control over how you report progress and output data from your Job.


client.defineJob({
id: "meme-generator",
name: "Generate memes",
version: "0.1.1",
trigger: eventTrigger({
name: "generate-memes",
}),
run: async (payload, io, ctx) => {
const generatingMemes = await io.createStatus("generating-memes", {
label: "Generating memes",
state: "loading",
data: {
progress: 0.1,
},
});
//...do stuff, like generate memes
await generatingMemes.update("middle-generation", {
state: "success",
data: {
progress: 1,
urls: [
"https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExZnZoMndsdWh0MmhvY2kyaDF6YjZjZzg1ZGsxdnhhYm13a3Q1Y3lkbyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/13HgwGsXF0aiGY/giphy.gif",
],
},
});
},
});

Check out React Status Hooks in the docs.

Ready to start building?

Build and deploy your first task in 3 minutes.

Get started now