Creating Blocks
You create Blocks by designing an internal workflow and defining which of its handles are exposed as inputs and outputs. Flow Studio provides a dedicated Block Editor for building and refining your Blocks.
The Block Editor
The Block Editor is a full-screen dialog that contains a complete Flow Studio canvas. You can add nodes, connect them, configure parameters, and test your pipeline -- all within the editor.
The Block Editor supports all node types except other Blocks. This prevents recursive editing and keeps the editor environment predictable.
Opening the Editor
You can open the Block Editor in two ways:
- Create a new Block -- From the Blocks tab in the sidebar, click the create button. This opens an empty editor canvas.
- Edit an existing Block -- Select a Block node on your canvas or from the sidebar list, and choose Edit. The editor opens with the Block's current internal workflow.
Building the Internal Workflow
Inside the editor, you build your pipeline exactly like you would on the main canvas:
- Drag nodes from the sidebar onto the editor canvas.
- Configure each node's parameters.
- Connect nodes with edges to define data flow.
- Arrange and organize your nodes for clarity.
The workflow you build here becomes the Block's internal logic -- it runs every time the Block executes.
Defining Inputs and Outputs
When you save a Block, Flow Studio analyzes the edges in your internal workflow and detects which handles should be exposed externally.
Automatic I/O Detection
The editor scans your workflow for handles that need external data (inputs) or produce final results (outputs). It presents these as toggleable chips in the save dialog.
| I/O Type | How It Is Detected |
|---|---|
| Input | An internal node has an unconnected input handle that expects data from outside the Block |
| Output | An internal node produces a result that should be available outside the Block |
Configuring I/O
In the save dialog, you can:
- Enable or disable detected handles -- toggle which ones become part of the Block's external interface
- Label each handle -- give it a descriptive name (for example, "Reference Image" or "Final Output")
- Set type -- each handle is typed as
image,prompt, orvideo - Mark as required or optional -- required inputs must be connected before the Block can execute
Keep your Block interface minimal. Only expose the handles that users actually need to interact with. Internal connections between nodes stay hidden.
Block Properties
When saving a Block, you configure:
| Property | Description |
|---|---|
| Name | Display name shown on the canvas and in the sidebar |
| Description | Markdown-formatted explanation of what the Block does |
| Scope | Project (available within this project) or Workspace (available across all projects) |
| Tags | Searchable categories to help organize your Blocks |
Versioning
Blocks have a version number that increments each time you save changes. This lets you track how a Block evolves over time. Existing instances of the Block on other canvases display the version they were added at.
Collaborative Locking
When you open a Block for editing, Flow Studio acquires a lock to prevent other team members from making conflicting changes. The lock is released when you close the editor or after a period of inactivity.
If another user is currently editing a Block, you will not be able to open it for editing until their lock is released.
Best Practices
- Start small -- Build Blocks from well-tested, proven pipelines rather than designing complex Blocks from scratch.
- Name descriptively -- Use clear names like "Brand Product Shot" or "Video From Reference" so team members understand the Block's purpose at a glance.
- Minimize I/O -- Expose only the handles that need external input. The fewer connection points, the easier the Block is to use.
- Use workspace scope sparingly -- Only promote a Block to workspace scope when it is mature and broadly useful. Project-scoped Blocks are easier to iterate on.
- Add descriptions -- Write a brief description explaining what the Block does, what inputs it expects, and what outputs it produces.