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

# Quickstart

> Set up a PNLight project, install the SDK in your iOS, React Native, or Flutter app, and confirm installs, attribution, and Remote UI requests are arriving.

This guide takes you from an empty project to a working SDK integration.

## Prerequisites

* Access to the PNLight dashboard.
* Your app bundle ID.
* An app build that can install a native iOS dependency.

<Steps>
  <Step title="Create a project">
    In the dashboard, create a project for your app. Enter the app name, bundle ID and App Store ID.
  </Step>

  <Step title="Copy the SDK token">
    Open [Integration](/dashboard/sdk-status) and copy the project SDK token. The SDK token connects app events to this project.
  </Step>

  <Step title="Install the SDK">
    Add the SDK for your app stack: [Swift](/sdk/ios-swift), [React Native](/sdk/react-native), or [Flutter](/sdk/flutter).
  </Step>

  <Step title="Initialize PNLight">
    Call the SDK initialization method during app startup before you send attribution or request Remote UI.
  </Step>

  <Step title="Send attribution when available">
    If you use AppsFlyer or another attribution provider, send attribution data through the SDK after the provider returns conversion data.
  </Step>

  <Step title="Request Remote UI">
    On the first app launch, wait 4-5 seconds after AppsFlyer initialization when attribution is required, then request Remote UI with `RemoteUiView` or `getUIConfig`. The SDK also waits for attribution internally when `attributionRequired` is `true`.
  </Step>

  <Step title="Check dashboard data">
    Open **Integration**, **Analytics**, and **Remote UI** to confirm installs, attribution, app events, and UI requests are arriving.
  </Step>
</Steps>

<Tip>
  Use one PNLight project per app and environment that needs separate reporting. Do not reuse a production SDK token in development builds unless you want test events in production analytics.
</Tip>

## Minimal SDK initialization

<CodeGroup>
  ```swift Swift theme={null}
  import PNLightSDK

  await PNLightSDK.shared.initialize(apiKey: "pnlight_sdk_token")
  ```

  ```tsx React Native theme={null}
  import { initialize } from "@pnlight/sdk-react-native";

  await initialize("pnlight_sdk_token");
  ```

  ```dart Flutter theme={null}
  import 'package:pnlight_sdk/pnlight_sdk.dart';

  await PNLightSDK.initialize('pnlight_sdk_token');
  ```
</CodeGroup>

## Next steps

* Render server-configured screens with [Remote UI](/sdk/remote-ui).
* Review app performance with [analytics](/dashboard/analytics).
