Workflows – Additional step context and ReadableStream support now available in Workflows step.do()

Workflows – Additional step context and ReadableStream support now available in Workflows step.do()

Workflows now provides additional context inside step.do() callbacks and supports returning ReadableStream to handle larger step outputs.

Step context properties

The step.do() callback receives a context object with new properties alongside attempt:

  • step.name — The name passed to step.do()
  • step.count — How many times a step with that name has been invoked in this instance (1-indexed)
    • Useful when running the same step in a loop.
  • config — The resolved step configuration, including timeout and retries with defaults applied
type ResolvedStepConfig = {
retries: {
limit: number;
delay: WorkflowDelayDuration | number;
backoff?: "constant" | "linear" | "exponential";
};
timeout: WorkflowTimeoutDuration | number;
};
type WorkflowStepContext = {
step: {
name: string;
count: number;
};
attempt: number;
config: ResolvedStepConfig;
};

ReadableStream support in step.do()

Steps can now return a ReadableStream directly. Although non-stream step outputs are limited to 1 MiB, streamed outputs support much larger payloads.

const largePayload = await step.do("fetch-large-file", async () => {
const object = await env.MY_BUCKET.get("large-file.bin");
return object.body;
});

Note that streamed outputs are still considered part of the Workflow instance storage limit.

Source: Cloudflare



Latest Posts

Pass It On
Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply