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

# About presenting studies

> How the SDK shows studies: manual presentation, audience launches, modes, and lifecycle events.

The SDK shows a hosted study to the current user inside a widget shell. You can present a specific study yourself, or let audience targeting decide which study to launch. This page explains the concepts; each platform page shows the exact methods and options.

## Two ways to present

| Approach           | Who chooses the study                                               | When to use                                                      |
| ------------------ | ------------------------------------------------------------------- | ---------------------------------------------------------------- |
| **Manual present** | You, by passing a study ID                                          | You know exactly which study to show at this moment              |
| **Launch study**   | The backend, from your [audience](/guides/audience-targeting) rules | You want the right study to reach the right cohort automatically |

With launch studies, you call the "present if available" method at safe moments (after your main view mounts, on route changes), and the SDK presents the study the backend assigned, or does nothing if none is pending.

<Warning>
  The SDK never opens a study on its own. Even for audience launches, you decide *when* it's appropriate to present by calling the method yourself; the backend only decides *which* study is pending.
</Warning>

## Presentation modes

A study can appear in three layouts:

* **Modal**: a centered dialog over a full-page backdrop, dismissed by the backdrop or Escape.
* **Overlay**: a floating panel anchored to a corner, dismissed by its close button or Escape.
* **Embed**: inline inside a container element you choose; it fills that container with no backdrop.

Each platform exposes options for size, position, corner radius, and (for modal) the backdrop. When a study is launched from an audience distribution, the dashboard's display settings apply automatically, and anything you pass yourself overrides them.

## Repeat and fresh sessions

Two common controls shape whether a user sees a study again:

* **Skip if already seen**: don't present to someone who has already been exposed to this study.
* **Force a fresh session**: ignore any saved progress and start the interview over.

## Lifecycle events

Register listeners before you present so you capture every event:

| Event       | When                                                   |
| ----------- | ------------------------------------------------------ |
| **Present** | The study opened                                       |
| **Skip**    | The study was skipped (for example, already seen)      |
| **Finish**  | The participant completed the study                    |
| **Error**   | Something went wrong preparing or presenting the study |

Use these to log exposure, trigger follow-up UI, or react to completion.

## Per-platform reference

<CardGroup cols={3}>
  <Card title="Web" icon="globe" href="/sdk/web/studies">
    Present studies in the browser.
  </Card>

  <Card title="iOS" icon="smartphone" href="/sdk/ios/studies">
    Present studies on iOS.
  </Card>

  <Card title="Android" icon="smartphone" href="/sdk/android/studies">
    Present studies on Android.
  </Card>
</CardGroup>

## Further reading

<CardGroup cols={2}>
  <Card title="Target SDK audiences" icon="target" href="/guides/audience-targeting">
    Configure who gets which launch study.
  </Card>

  <Card title="Sessions" icon="refresh-cw" href="/sdk/concepts/sessions">
    How sessions, resets, and offline behavior work.
  </Card>
</CardGroup>
