Skip to main content
A multi-step flow is an ordered list of screens. You sequence the screens in the Layers panel and move between them with navigation actions on buttons and other components. There is no visual node-graph canvas to wire by hand.
The editor builds flows as a screen list, not a graph. If you are looking for a place to draw arrows between nodes, there isn’t one, and you don’t need it. Order plus actions is the whole model.

Add and order screens

Open the Layers panel. Below the persistent zones you will see the ordered list of screens. Each screen expands to show its Root Stack and components.
  • Add a screen: click Add Screen at the bottom of the screen list. This creates a new screen named “Screen N” with an empty Root Stack, appends it to the end of the list, and links it after the previous screen.
  • Reorder screens: drag a screen row to a new position. You can also use a screen’s row menu (the ... icon) with Move Up and Move Down (shortcuts ] and [), or the Sort screens menu in the panel header (Name A to Z, Name Z to A, Reverse order).
  • Rename a screen: double-click its row, or use Rename in the row menu.
  • Delete a screen: use Delete in the row menu.

The entry screen

The first screen in the list is the entry screen: the one the flow opens on. There is no separate “set as entry” control. If you reorder the list so a different screen is first, or delete the current first screen, the entry automatically becomes whatever screen is now first.

Move between screens with actions

Movement between screens is driven by actions attached to a component’s interaction (for example a button’s onPress). The navigation actions are:
ActionWhat it does
goNextFollow the default path to the next screen in order.
goBackReturn to the previous screen.
navigateJump to a specific screen by its id.
closeFlowEnd and dismiss the flow.
You add these the same way as any interaction. See Interactions and actions for the full list and Navigation and branching for choosing between them.

How goNext knows where to go

Screens are connected by edges that the editor maintains for you. When you add or reorder screens, the editor rebuilds the edges to match the list order (screen 1 to screen 2 to screen 3, and so on). A goNext action follows the outgoing edge from the current screen, which is the next screen in the list.
Because edges follow list order, reordering screens changes where goNext lands. If “Continue” sends users to the wrong screen, check the screen order in the Layers panel.

Worked example: a three-screen flow

Build Welcome to Choose to Done:
1

Create three screens

Use Add Screen twice so the Layers list reads, top to bottom: Welcome, Choose, Done. Rename each by double-clicking its row. Welcome is first, so it is the entry screen.
2

Wire Welcome to advance

On the Welcome screen, add a Continue button (or use the footer’s existing Continue button) with an onPress goNext action. In preview, tapping it moves to Choose.
3

Add Back and forward on Choose

On Choose, add a Back button with goBack and a Continue button with goNext. Now users can move both directions.
4

End the flow on Done

On Done, add a Finish button with a closeFlow action so the flow dismisses. (You could instead use navigate to jump back to a specific screen.)
5

Preview the whole flow

Click Preview (⌘.) and tap through Welcome to Choose to Done. Use the canvas screen pager or the left/right arrow keys to inspect each screen while editing.

Branching

The shippable schema declares non-screen node kinds (condition, assign, abTest) for future branching, but the editor today has no UI to add them. The only node you can create in the editor is a screen (Layers, Add Screen). The NEXT_PUBLIC_FLOWPILOT_EXPERIMENTAL_NODES developer flag only un-gates creation of api / event / subflow nodes in the store, and even those have no palette to place them from. So for real flows, do branching two ways:
TODO: re-check whether a node palette for condition / assign / abTest ships in the editor. As of this writing, only screen nodes can be created in the UI (see lib/stores/flow-json-store.ts addNode and components/editor/LayersPanelNew.tsx handleAddScreen). The experimental-nodes flag in lib/editor/feature-flags.ts covers api / event / subflow only.

Common mistakes

  • A screen with no way forward. Because navigation is action-driven, every non-terminal screen needs a control that advances the flow. Otherwise the user is stuck. Add a goNext or navigate button (or rely on the footer Continue button).
  • Assuming a graph editor exists. There is no node canvas. Order screens in Layers and wire movement with actions.
  • Trying to A/B test inside one flow. Do not build two parallel paths in a single flow. Run a placement experiment with two flow variants instead.
  • Forgetting that reorder rewires goNext. Moving screens around changes the default next-screen targets. Re-check the order after reordering.