How Cloudflare Uses ASTs to Visualize Workflow Code

How Cloudflare Uses ASTs to Visualize Workflow Code

Why Visualizing Code Matters in Modern Workflows

In 2026, developers face a new challenge: understanding complex code structures written by AI agents or nested in dynamic execution models. Cloudflare Workflows solves this with a powerful diagram generator that turns code into visual maps. This article explains how we use Abstract Syntax Trees (ASTs) to create these diagrams, making workflow debugging and optimization more intuitive than ever.

Dynamic Execution vs. Static Diagrams

Cloudflare Workflows operates on a dynamic execution model, where steps run as the runtime encounters them. Unlike traditional sequential workflows, this approach allows:

  • Parallel execution of unawaited steps
  • Flexible control flow with Promises and conditionals
  • Dynamic nesting in functions/classes

This flexibility creates a challenge: how do you map dynamic code execution to a static diagram? The solution lies in parsing the code before runtime.

AST Parsing at Deployment

When you deploy a workflow, Cloudflare:

  1. Fetches the bundled script from the configuration service
  2. Generates an AST using a parser
  3. Traverses the AST to identify WorkflowEntrypoints
  4. Builds an intermediate graph of step relationships
  5. Renders the final diagram via API

This approach works even with minified code, though we’ve optimized our parser to handle different bundler outputs (esbuild, rspack, vite) effectively.

Code Examples: From Promises to Diagrams

Consider this workflow code:

const summaryPromise = step.do(

`summary agent (loop ${loop})`,

async () => {

return runAgentPrompt(...);

}
);

const correctnessPromise = step.do(

`correctness agent (loop ${loop})`,

async () => {

return runAgentPrompt(...);

}
);

The parser identifies parallel Promises and maps their dependencies. Even when minified, the AST retains structural information about:

  • Promise chains
  • Await relationships
  • Loop iterations
  • Error handling paths

Challenges in Code Visualization

Minification poses unique challenges. For example, this Vite-bundled code:

class ht extends pe {

async run(e, r) {

b("workflow.run.start", { instanceId: e.instanceId });

const s = await r.do("validate payload", async () => {

if (!e.payload.r2Key)

throw new Error("r2Key is required");

return {

r2Key: e.payload.r2Key,

telegramChatId: e.payload.telegramChatId

};

});

// ...

}
}

Still gets parsed correctly by analyzing:

  • Method call hierarchies
  • Control flow patterns
  • Variable dependencies

Getting Started with Workflow Diagrams

To experience this visualization yourself:

  1. Create a new Cloudflare Worker
  2. Define a workflow with multiple steps
  3. Deploy to Cloudflare
  4. View the generated diagram in the dashboard

The diagram will show:

  • Step dependencies
  • Parallel execution paths
  • Error handling branches
  • Loop structures

Conclusion

By leveraging ASTs, Cloudflare Workflows provides a unique solution for visualizing dynamic code execution. This approach bridges the gap between code complexity and human understanding, making it easier to debug, optimize, and maintain modern workflows. Try deploying your first workflow today and see how your code’s structure becomes a visual asset.