# Flows in Studio

The Flows screen records a flow while you use the app, lets you edit its steps, keeps flows in folders, and replays them on the simulator. The files are the same ones the squiggle command runs.

## Record

Press **Record** and use the app, in Studio’s device panel or in the Simulator app itself. Each tap becomes a step that names the control by its testID, label or text, not by position. The screen you start on becomes the flow’s start screen.

## Edit

The step list lets you add, remove, reorder and edit steps. Add steps from five groups: **Interact**, **Wait / Assert**, **Control flow**, **Device** and **Network**, so you can build a whole flow without recording. Save, revert or delete a single step or the whole flow.

## Organise

Folders on the Flows screen are folders inside `.squiggle/flows/`, so they are in your repository too. Sort by name, last replayed or date added, and drag a flow to move it. Agentic flows have their own **Agentic** tab.

## Replay

Press **Replay**. Each step’s result appears as it runs, and the last run stays on screen with its timings. The **Replay options** menu sets how the run behaves; each option matches a CLI flag:

| Option | What it does |
| --- | --- |
| Return to start screen | Takes the app back to the flow’s start screen before the run (--auto-correct). |
| In-process delivery | Sends taps and text from inside the app, which is faster. On by default (--in-process). |
| Disable animations | Turns iOS animations off in the app (--no-animations). |
| Capture network | Lets the flow wait for the network and stub requests (--capture-net). |
| Direct scroll | Scrolls to a control in one step instead of dragging (--direct-scroll). |
| Auto-scroll | Scrolls an off-screen control into view instead of failing (--auto-scroll). |
| Fast settle | Moves on as soon as the app stops moving. On by default (--fast-settle). |
| Continue on failure | Runs every step instead of stopping at the first failure (--continue-on-fail). |

**Flow tools** has **Run Doctor**, which checks the connection, and **Crawl app**, which explores the app and opens the flow it finds. See [Run settings](https://squiggle.sh/docs/run/settings) for what each setting changes.

> **Running a flow from the terminal while Studio is open**
>
> `squiggle flow` works alongside Studio: it connects through Studio instead of competing for the app. While it runs, the toolbar shows **CLI flow running:** and the flow’s name (**MCP flow running:** for one your agent started), and Studio’s own Replay buttons stay off until it ends, so two runs never drive the app at once.
