Skip to main content
This is the shortest path from an installed SDK to a flow on screen: configure at launch, present a placement, then read the result. It assumes you already have a published flow attached to a placement (the Quickstart walks through building that end to end).
Before you startYou need:
You also need:
  • The SDK installed in your Expo app, with its peer dependencies and the Reanimated Babel plugin.
  • A placement key (for example onboarding) with a published flow attached.

Steps

1

Configure at launch

Call FlowPilot.configure(...) once, as early as possible, with your API key and App ID. See Configuration for every option.
2

Resolve and render a placement

On the Expo SDK you present a flow declaratively: resolve a FlowSession, then render it with <FlowPilotPresenter />. Use resolveSession, which returns null (instead of throwing) when there is no presentable flow, so your app can fall back to its own UI.
Do not use FlowPilot.presentPlacement() on the Expo SDK. It is deprecated and renders nothing (React Native has no global presentation host). See Presenting placements.
3

Read the result

The presenter’s onComplete hands you a FlowPresentationResult with an outcome of 'completed', 'dismissed', or 'error'. Switch on it to decide what to do next.
See Results and outcomes for the full shape.
That is the full loop: configure, resolve, render, read the result. For the host fallback, prefetching, custom components, and offline support in depth, see the pages below.

Common mistakes

  • Using a dashboard token instead of an SDK API key. The SDK authenticates with an SDK key that starts with fp_. Your dashboard login will not work. Create an SDK key in app settings.
  • App ID mismatch. The appId you configure must own the placement, or the resolve returns no flow.
  • Placement key typo, paused placement, or no flow attached. The key in code must match the placement key exactly, the placement must be active, and a published flow must be attached.
  • Forgetting to publish. A draft flow is never served. Publish a version and attach it to the placement.
  • Resolving before configure. resolveSession / createSession before configure(...) throws SDK_NOT_INITIALIZED. Configure first.

Troubleshooting

Nothing appears? Walk this checklist:
  1. Is the API key an SDK key (it starts with fp_) and valid for the environment you configured?
  2. Is the App ID the one that owns the placement?
  3. Is the placement active (not paused) and targeting your platform?
  4. Is a published flow version attached to the placement?
  5. Is the placement key in your code an exact match?
  6. Is the device online? If it may be offline, configure caching or a bundled fallback.
Set logLevel: 'debug' in configure to see each resolve and why a flow was rejected. Still stuck? See Troubleshooting.