Where interactions live
Select a component, open the Logic tab in the properties panel, and find the Interactions section. For a custom component the same section is labelled Tap Behavior. The section has:- A When picker that chooses which event the action list responds to.
- A Disabled toggle (which can itself be a dynamic value).
- The action list, with an Add button.
Events
For a built-in component, the When picker offers two events:| Picker label | Event | When it fires |
|---|---|---|
| On Tap | onPress | The user taps the component |
| On Appear | onAppear | The screen shows the component |
onChange, onFocus, and onBlur, but you do not author those here. They are handled implicitly. A text input, for example, writes its value into a bound variable on its own.
For a custom component, the picker is When Event and lists the events that component declares in its definition (its customEventKey values), not the built-in events.
The action list
Click Add to append an action. Each action row has:- A type dropdown (what the action does).
- Config fields for that type.
- A Delay field in milliseconds.
[Set Variable @ 0ms, Set Variable @ 1000ms] changes the variable now and again one second later, independent of each other. Leave Delay empty or 0 to run immediately.
Action types
The type dropdown offers these actions:| Type (label) | What it does | Key fields |
|---|---|---|
| Navigate to Screen | Jump to a specific screen | the target screen |
| Go to Next Screen | Advance along the flow order | none |
| Go Back | Return to the previous screen | none |
| Close Flow | Dismiss the whole flow | none |
| Set Variable | Apply an operation to a variable | variable, operation, value |
| Open URL | Open a link | the URL |
| Haptic Feedback | Play device haptic | intensity (Light / Medium / Heavy) |
| Trigger Event | Send an analytics event | event name |
| Trigger Animation | Run a reactive animation step on a component | target component, step |
| Trigger Particle Effect | Play a particle burst | effect and options |
- Navigate to Screen picks one fixed screen from a dropdown. The target is not itself a dynamic value. For state-driven paths, see Navigation and branching.
- Go to Next Screen follows the flow’s screen order, so it stays correct as you add and reorder screens.
- Trigger Event is FlowPilot’s
trackEventaction. The field is labelled Event Name and becomes the event’s key in your analytics. See Analytics (iOS) for how events reach your tools. - Trigger Animation targets a component and one of its reactive animation steps. See Animations.
- Trigger Particle Effect plays an effect overlay. See Particles.
Set Variable operations
Set Variable is the main way to change state. Only Flow State variables appear in its picker (App Parameters are read-only). The operations offered depend on the variable’s type:| Variable type | Operations |
|---|---|
| Boolean | Set ON, Set OFF, Toggle |
| Number | Set to value, Increment by, Decrement by, Multiply by, Divide by, Reset to initial |
| String | Set to value, Append, Prepend, Clear |
| List | Add item, Remove item, Toggle item, Clear list, Set list |
Two more actions in the schema
Two action kinds exist in the flow schema but are not in the type dropdown:assignevaluates an expression into a variable. The editor uses it under the hood (for example, a custom component’s output payload is compiled intoassign-style writes), so you do not add it by hand.customcarries anactionKeyandparamsfor native handling. You can reference custom behavior through custom components, but native handler registration is not a public iOS SDK API yet. Do not rely on acustomaction doing anything on device. See Custom components (iOS) and the actions reference.
Example
A Continue button. On a “Continue” button, set When to On Tap and add, in order:- Set Variable ->
step-> Increment by ->1 - Trigger Event -> Event Name
continue_tapped - Go to Next Screen
0ms and 400ms). Because each delay is measured from when the screen appeared, the value steps from one state to the next on its own.
Preview is not the runtime
The editor’s preview is a close approximation, not the device runtime.- In edit mode (not previewing), only visual and sensory actions fire: Trigger Animation, Trigger Particle Effect, and Haptic Feedback. Navigation, Set Variable, Close Flow, Open URL, Trigger Event, and custom actions do not run, so a stray click on a wired button will not switch screens or change state while you author.
- In preview mode, state and navigation actions run against preview-only state. Navigation, variable changes, and the like update the preview and show a toast; they never touch real flow data. Open URL shows a confirmation rather than leaving the editor.
Common mistakes
- Wrong action order. Putting
Go to Next Screenbefore aSet Variablemeans the variable never gets set on the screen the user just left. List state changes before navigation. - Navigating to a deleted screen. A Navigate to Screen action that points at a screen you later delete has no valid target. Re-point it.
- Expecting
customto work on device. Custom actions have no public native handler on iOS yet. Treat them as not-yet-functional on device. - Authoring
onChangeby hand. Input changes are wired implicitly through variable binding, not through the action list.