Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
title: "Prioritized Placements"
description: "Ensure your most important paywall is ready to display instantly by prioritizing a campaign's placements for preloading."
title: "Priority Placements"
description: "Preload your most important campaign's paywalls before the rest of your app's campaigns."
---

By default, Superwall's SDK preloads every paywall attached to your campaigns when the app launches. For most apps, this works seamlessly. But if you have a paywall that needs to appear _immediately_ — like an onboarding paywall shown right at first launch — you can tell the SDK to preload that campaign's paywalls first.

That's what **prioritized placements** do. When you mark a campaign as prioritized, the SDK fetches and caches its paywalls before anything else. Other campaign paywalls are still preloaded afterward in the background.
That's what **Priority Placements** do. This feature is also referred to as **prioritized placements** or **prioritized campaign preloading**. When you mark a campaign as prioritized, the SDK fetches and caches that campaign's paywalls before anything else. Other campaign paywalls are still preloaded afterward in the background.

<Note>
Only **one campaign per app** can be prioritized at a time. If you prioritize a new campaign, the previously prioritized one is automatically deprioritized.
Expand All @@ -27,7 +27,7 @@ In the campaign editor, look for the **flag icon** next to the **Placements** he

<Frame>![](/images/campaigns-prioritize-placements.png)</Frame>

Click the flag to prioritize the campaign. The flag turns green to indicate the campaign is now prioritized, and a tooltip confirms: **"Preload these placements first"**.
Click the flag to prioritize the campaign. The flag turns green to indicate the campaign is now prioritized. The dashboard describes this action as prioritizing campaign preloading.

To deprioritize, click the green flag again — it will revert to its default state.

Expand All @@ -45,7 +45,7 @@ Confirm to switch, or cancel to keep the current priority.
When the SDK fetches its configuration and sees a prioritized campaign:

1. **Phase 1 — Prioritized preload:** The SDK identifies all paywalls belonging to the prioritized campaign and preloads them first.
2. **Phase 2 — Remaining preload:** After a short delay, the SDK preloads all remaining campaign paywalls in the background.
2. **Phase 2 — Remaining preload:** After a 5-second delay, the SDK preloads all remaining campaign paywalls in the background.

This two-phase approach ensures the most important paywalls are cached and ready before others, without skipping preloading for the rest of your campaigns. The prioritized campaign's paywalls will be ready to present with no loading time, while other paywalls continue loading in the background.

Expand All @@ -55,15 +55,16 @@ This two-phase approach ensures the most important paywalls are cached and ready

## SDK version requirements

Prioritized placements require the following minimum SDK versions:
Priority Placements require the following minimum SDK versions:

| SDK | Minimum version | Notes |
| --- | --- | --- |
| iOS | **4.14.0** | Full support. |
| Android | _Coming soon_ | Not yet released. |
| Flutter | **2.4.11** | Supported on iOS via bundled iOS SDK 4.14.1. Android support pending. |
| Expo | **1.0.8** | Supported on iOS via bundled iOS SDK 4.14.1. Android support pending. |
| Android | **2.7.10** | Full support. |
| Flutter | **2.4.12** | Full support via bundled iOS SDK 4.14.2 and Android SDK 2.7.11. iOS-only support started in Flutter 2.4.11. |
| Expo | **1.0.11** | Full support via bundled iOS SDK 4.14.1 and Android SDK 2.7.11. iOS-only support started in Expo 1.0.8. |
| React Native | _Not yet supported_ | The current React Native SDK bundles native SDK versions that predate prioritized campaign preloading. |

<Note>
On SDKs where Android support is pending, prioritization will work for iOS builds but will have no effect on Android builds. The feature is fully backward-compatible — older SDK versions simply ignore the prioritization flag and preload all paywalls in the default order.
Priority Placements are fully backward-compatible. Older SDK versions ignore the prioritization flag and preload all paywalls in the default order.
</Note>
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ Superwall.shared.register(placement: "caffeineLogged") {

In short, add placements for everything you want to feature gate, and things you may _want_ to in the future.

<Tip>
If a campaign's paywall needs to be ready immediately, such as during onboarding or on first app launch, use [Priority Placements](/dashboard/dashboard-campaigns/campaigns-placements-prioritized) to preload that campaign before the rest of your app's campaigns.
</Tip>

### Placement parameters

Placement parameters let you attach contextual data when registering a placement ([SDK docs](/sdk/quickstart/feature-gating)). That data travels with the placement into the dashboard so you can branch logic or personalize the experience without shipping new app code.
Expand Down
4 changes: 4 additions & 0 deletions content/shared/configuring/using-superwalloptions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,10 @@ Paywalls are preloaded by default when the app is launched from a cold start. Th

Paywalls are cached by default, which means after they load once, they don't need to be reloaded from the network unless you make a change to them on the dashboard. However, if you have a lot of paywalls, preloading may increase network usage of your app on first load of the paywalls and result in slower loading times overall.

<Tip>
To make an onboarding or first-launch paywall load before the rest of your campaigns, prioritize the campaign from the dashboard with [Priority Placements](/dashboard/dashboard-campaigns/campaigns-placements-prioritized). Use the SDK methods below when you need to disable automatic preloading or manually preload specific placements.
</Tip>

You can turn off preloading by setting `shouldPreload` to `false`:

:::ios
Expand Down
Loading