Skip to main content
Flowboard returns collected user input as formData. Each key in formData matches the id of an input component in your flow. If your flow has inputs with IDs like email, plan, and accept_terms, Flowboard returns data in this shape:
You can read that data in three places:

Simple example

Start with onOnboardEnd when you only need the final values.
Keep your Flowboard input IDs stable. Those IDs become your formData keys, so changing them changes the data contract in your app.

Use data before the flow ends

You do not have to wait until completion. Use onStepChange for analytics and autosave. On SDKs that expose custom screens or custom actions, you can also read the current answers from ctx.formData or ctx.values.
The current Swift package exposes onOnboardEnd, onStepChange, and ctx.values inside action callbacks for native data access. Native custom-screen builders are not part of the Swift package surface today.
In production, do not pass raw formData directly to the rest of your app. Map it into a small, typed payload first. This gives you one place to validate keys, apply defaults, and keep your backend contract stable even if the flow grows.
Replace analytics, api, and any helper components in these examples with the services and UI primitives used in your app.

Summary

Use this rule:
  • Read final data in onOnboardEnd
  • Read progress snapshots in onStepChange
  • Read live values in ctx.formData or ctx.values, depending on the SDK surface you use
  • Normalize the payload before sending it to your backend