> ## 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.
* Your App Store 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, App Store ID, and bundle ID. Choose the attribution source PNLight should prefer first.
  </Step>

  <Step title="Complete the dashboard checklist">
    Use the **Getting started** checklist in the dashboard sidebar to open the next setup pages. Complete App Store notifications, SDK installation, an in-app event, and at least one product. Remote UI placements and ad networks are optional.
  </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).
