Skip to main content
This is the lookup reference for the FlowPilot iOS SDK. Every symbol here is declared public in the SDK source. The guide pages (Getting started through Offline and performance) teach how to use them in context; this page is the index. Internal types are not listed, because you cannot call them.
This reference reflects FlowPilot iOS SDK v1.0.0 (FlowPilotSDK.version). Public symbols can change between versions, so check the version string in your installed package if a signature here does not match.

Setup

Configure the SDK once at launch, then reach everything else through FlowPilot.shared. See Configuration.

FlowPilotConfiguration

A public struct. Only apiKey and appId are required; everything else has a default.

FlowPilotEnvironment

FlowPilotLogLevel

PrefetchMediaStrategy

Set via FlowPilotConfiguration.prefetchMediaStrategy. Governs launch prefetch (prefetchOnLaunch) and bounds the screen window when a prefetch(_:warmMedia: true) call opts into media warming. See Prefetching.

SDKContext

Presenting

Methods on FlowPilot.shared. The presentPlacement overloads are UIKit-only (#if canImport(UIKit)). See Presenting placements, SwiftUI integration, and Prefetching.

PrefetchOutcome

Returned per placement by prefetch(_:warmMedia:). See Prefetching.

PresentationOptions

PresentationStyle

presentationStyle is accepted by PresentationOptions but is not applied in the current SDK build. Flows present full screen (FlowHostingController forces .fullScreen). Setting .modal or .bottomSheet has no effect today. See Presenting placements.

PlacementInfo

PlacementInfo is declared public, but no public API returns it in v1.0.0. To check whether a placement will show, use isPlacementReady(_:) instead.

Session

FlowSession is the live, observable handle to a presented flow. It is a public final class conforming to ObservableObject and Identifiable. See SwiftUI integration, Variables and SDK context, and Media preloading.

Published state

currentScreen exposes a ScreenNode whose public fields are id, kind, name, screenType, props, and layout.

Methods

The engine objects inside a session (variableStore, navigationController, actionExecutor, and so on) are internal. Use the delegating methods above instead of reaching into them.

Presenter (SwiftUI / UIKit)

How a session becomes on-screen UI. See SwiftUI integration.
FlowPresenterModifier (the type behind .flowPresenter) is also public, but use the .flowPresenter(session:onResult:) modifier rather than constructing it directly.

Results

Returned by the presenting and waitForCompletion() APIs. See Results and outcomes.

Variables

See Variables and SDK context.
VariableValue also conforms to ExpressibleBy{String,Integer,Float,Boolean,Array}Literal, so you can write session.setVariable("plan", value: "premium") or value: 3.

Custom components and screens

Registration methods on FlowPilot.shared, plus the definition types. See Custom components and Custom screens.
Custom components render today. Custom screens do not: the SDK accepts registerCustomScreen and stores the definition, but the renderer never looks it up or invokes the factory in v1.0.0. Treat the custom-screen types as a roadmap API. See Custom screens.

Analytics

See Analytics integration and the Event taxonomy.
Conversions are emitted with event_type conversion via trackConversion(...), not through AutomaticEventType.

Errors

See Error handling.
FlowPilotErrorCode is a String enum with these cases (raw values in the Error handling table): invalidApiKey, invalidAppId, sdkNotInitialized, networkError, apiError, timeout, rateLimited, placementNotFound, flowNotFound, targetingNotMet, frequencyLimitReached, unsupportedSchemaVersion, invalidFlowSchema, componentRenderError, customComponentNotFound, customScreenNotFound, navigationError, variableError, actionError, fatalActionError, actionChainTimeout, internalError.
setErrorCallback(_:) stores the closure but the SDK never invokes it in v1.0.0. Observe errors through the thrown FlowPilotError (from the throwing present/create APIs) and through FlowResult.error. See Error handling.

Caching and offline

See Caching and Offline and bundled flows.
On non-UIKit platforms (macOS without UIKit), ImageCache is a reduced stub: getImage, setImage, and setImageData are not available there.

Callbacks and typealiases

FlowCompletionCallback and FlowDismissalCallback are declared public for source compatibility, but there is no setter for them and the SDK does not invoke them in v1.0.0. Get the result from the present APIs’ return value, the completion: closure, or FlowResult instead.

Deprecated aliases

Short-prefix names kept for source compatibility with v1.0 integrators. Each is marked @available(*, deprecated, renamed:); migrate to the FlowPilot* name.

Debug

createTestSession() also exists but is compiled only in #if DEBUG builds and is for rendering tests, not production use.

The FlowPilotDelegate protocol

FlowPilotDelegate is declared public, but the SDK has no setter for it and never calls its methods in v1.0.0. It is not usable today. Use the closure-based APIs, the present return values, and the never-throwing overloads instead. See Error handling.