> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corbado.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Observe iOS SDK

> Install CorbadoObserve with Swift Package Manager and instrument native authentication journeys.

`CorbadoObserve` records native authentication events for Observe. Your application keeps control of authentication and explicitly reports flow boundaries, method attempts and outcomes.

## Requirements

An iOS 15 or later app and a Swift 6 toolchain. Initialize in the main app; app extensions are not supported.

<Steps>
  <Step title="Add the Swift package">
    In Xcode, choose **File → Add Package Dependencies** and enter:

    ```text theme={null}
    https://github.com/corbado/observe-ios.git
    ```

    Select version **0.1.0** or a compatible published release, then add the **CorbadoObserve** product to your app target. See [releases](https://github.com/corbado/observe-ios/releases) for available versions.
  </Step>

  <Step title="Initialize explicitly">
    ```swift theme={null}
    import CorbadoObserve

    let tracker = CorbadoObserve.initialize(
        options: ObserveOptions(
            projectId: "<ProjectID>",
            apiBaseUrl: "<APIBaseURL>"
        )
    )
    ```

    Retain the optional tracker in your app. A disabled or unsuccessful initialization must not prevent your authentication flow from running. No Observe API key is needed in the app.
  </Step>

  <Step title="Report flow boundaries">
    When the login screen becomes visible:

    ```swift theme={null}
    tracker?.flowStarted("login")
    ```

    After your identity system confirms a successful login:

    ```swift theme={null}
    tracker?.flowFinished("login")
    ```

    Add method-level operations between these boundaries. The [SDK example](https://github.com/corbado/observe-ios/tree/main/examples/observe) demonstrates native instrumentation. The shared [event model](/corbado-observe/tracking/modeling) explains flows and attempts; method signatures differ by platform.
  </Step>
</Steps>

## Native capture boundaries

Native screens require explicit instrumentation. Field observers accept lengths and focus changes supplied by your app. iOS does not expose the password AutoFill suggestion bar's visibility to the SDK; a bulk field change can provide heuristic evidence of a fill. Do not treat it as a confirmed platform event.

Web-based authentication components use the [web capture approach](/corbado-observe/overview/integration-paths).

## Runtime controls and verification

```swift theme={null}
tracker?.setCollectionEnabled(false)
tracker?.setTransportEnabled(false)
```

Collection and transport are separate controls: stopping transport alone does not stop collection. Decide when to initialize and enable collection in your application's lifecycle.

Verify that the expected flow and method attempts reach Observe, including failed attempts and the eventual outcome. See [verification](/corbado-observe/get-started/verify) and the [SDK source](https://github.com/corbado/observe-ios/tree/main/observe) for native configuration and examples.
