QUICKSTART

Up and running in twenty minutes

Install the SDK, mount the onboarding, publish a change without a release. Everything else is optional.

1. Install the SDK

Pick your platform. The SDK renders native components from a server definition and reports every step back.

Package.swift
dependencies: [
    .package(url: "https://github.com/onset-app/onset-ios", from: "1.4.0")
]

2. Configure

Call configure once at launch with your publishable key. Keys live in Settings → API keys; use the test key in staging.

AppDelegate.swift
import Onset

Onset.configure(apiKey: "pk_live_…")
Onset caches the last published flow on device, so the onboarding renders offline and on a cold start before the network answers.

3. Mount the onboarding

Put OnsetOnboarding where your old onboarding was. It takes a flow id and gives you back the answers and the variant the user saw.

RootView.swift
OnsetOnboarding(flow: "welcome") { result in
    // result.answers  →  ["goal": "race", "experience": "advanced"]
    // result.variant  →  "B"
    showHome()
}

Answers are also saved as user properties on our side and forwarded to any analytics integration you connect, so you rarely need to read them here.

4. Verify

Run the app once. The dashboard setup page flips to "Connected" when it hears the first ping, usually within a second.

Heard from iPhone 15 · iOS 18.1SDK 1.4.0 · 0.3s ago

5. Publish a change

Open Flows, edit any screen's title, and hit Publish. Kill the app, reopen it. That's the whole release process from now on.

Published changes reach every installed version with the SDK, including users who never update. Use experiments rather than publishing straight to 100% once you have real traffic.

Next