Skip to main content
Skip to navigation

Testing Paywalls

Ask RicoChatGPTClaude
📘A/B Testing

This page refers to testing paywalls to ensure they're working as expected before releasing them to production. If you're looking to learn about A/B testing paywalls, see Experiments.

There are several ways to test your paywalls before releasing them to production. Here are a few options to consider:

1. Preview in the RevenueCat app​

RevenueCat Mobile, the RevenueCat app for iOS and Android, previews your paywalls on a real device without building your app. It previews both published and draft paywalls, so you can check a paywall before you publish it. Purchase and restore buttons are simulated: tapping them shows a dialog, and nothing is purchased.

Scan the QR code from the paywall editor​

The quickest way to open a preview is from the paywall editor in the dashboard:

  1. Open your paywall in the paywall editor.
  2. Click Preview in app. If one of your project's mobile apps has a custom URL scheme, a menu opens: select RevenueCat app.
  3. Scan the QR code with your phone's camera.

The QR code links to the version of the paywall you're viewing in the editor, either the draft or the published version. It also carries the offer you're previewing in the editor, such as an introductory offer, and opens the full flow of a multi-step paywall.

If RevenueCat Mobile is installed and you're signed in, the preview opens directly. If you aren't signed in yet, the preview opens after you sign in. On a device without the app, the link opens a page with download links for iOS and Android.

Browse your paywalls in the app​

To find a paywall in the app, tap Projects in the bottom navigation, select your project, and tap Paywalls. The list shows your published and inactive paywalls. Draft paywalls carry a Draft badge. Tap a paywall to preview it, or long-press it to pick a presentation style for that preview.

Paywalls in the RevenueCat app

📘Previewing multi-step paywalls

If your paywall is a multi-step paywall, the RevenueCat app renders the full flow so you can step through each screen and verify your in-paywall navigation before publishing. Make sure your test device is running an app version that supports multi-step paywalls.

Legacy paywalls created with the previous paywall editor aren't available for preview in the Android app.

Configure the preview​

Tap the settings button in the paywalls list to set defaults for all previews:

  • Presentation mode: Show the paywall as a modal sheet or full screen. On iOS, you can also present it with a navigation push.
  • Color scheme: Follow the device setting, or force light or dark mode.
  • Offer: Preview the paywall as a customer with no offer, an introductory offer, or a promotional offer. The preview uses a sample free trial for introductory offers. Promotional offers are currently only simulated on iOS, for packages with an App Store promotional offer.
  • Custom variables: Set the values the preview uses for your paywall's custom variables.

Paywalls settings in the RevenueCat app

While a preview is open, tap Preview configuration to change the offer, the language, or the custom variable values for that preview only. On Android, the button appears only when the paywall has more than one language or the project has custom variables.

⚠️Variable preview values

Please note that the RevenueCat app uses preview values for any variables your paywall uses, so the prices displayed will not reflect the actual prices of your products. They're only intended to reflect how your paywall will look when real values are inserted in your app.

2. Preview in your app​

With the latest version of the RevenueCat SDK, you can preview published paywalls in your own app.

📘Availability

This feature is currently available on the native iOS and Android SDKs starting from version 5.80.0 on iOS and 10.11.0 on Android.

1. Copy the custom URL scheme from the RevenueCat Dashboard​

You can find this in the RevenueCat dashboard inside your app's settings, under "Custom URL Scheme". It is unique to your app.

Register the custom URL scheme to your mobile app, just like you would for Redemption Links.

Our SDKs provide APIs to preview the paywall directly in your app.

⚠️Handling paywall links

Please note that it is up to you to decide when your app will accept a link to preview a paywall. If you only want this to work for internal testers, consider adding a condition (such as #if DEBUG) to your code before invoking the SDK.

iOS​

In SwiftUI, you can add an onOpenURL handler to your scene's content view to open handle incoming URLs. If you're building a UIKit-based app, handle the URL in your UISceneDelegate instance.

WindowGroup {
AppContentView()
.onOpenURL { url in
if Purchases.shared.presentPaywall(from: url) {
// A paywall will be presented; no further action is necessary
return
}
// handle other URL logic for your app
}
}

Android​

In Android, pass the intent to the SDK from your Activity. If the SDK recognizes the intent, it will automatically present the paywall:

Hybrid SDK Support​

Support for previewing paywalls in the hybrid SDKs is coming soon.

3. Override a Customer's Default Offering​

The simplest way to test a paywall is by overriding an individual customer's offering through their Customer Profile in the RevenueCat dashboard:

  1. Navigate to the Customer Profile for your test device
  2. In the current offering section, click "Edit"
  3. Select the offering containing your test paywall
  4. Launch your app and navigate to the paywall to see the paywall of your overridden offering

Override current offering

4. Create a Targeting Rule for an internal app version​

You can create a Targeting Rule to show specific paywalls to internal builds of your app:

  1. Create a new Targeting Rule
  2. In the Audience section, set Audience source to Custom filters and add the filters Last seen app is your app and App version is X.Y.Z, using your internal build's version string
  3. Set the Offering to the one containing your test paywall
  4. Install the internal build on your test device

This approach is useful for testing paywalls across your team before releasing to production.

Targeting rule

5. Testing through Xcode and Android Studio​

Xcode​

When testing through Xcode, you can:

  1. Use the iOS Simulator to test different device sizes and orientations
  2. Test different locales to verify translations
  3. Test different subscription states using StoreKit Configuration files
  4. Test on iPhone Duo with the iPhone Duo simulator, which requires Xcode 27.1 and an iOS 27.1 simulator runtime

To use the iPhone Duo simulator, choose iPhone Duo in Device Hub. Then use the simulator controls to open, close, rotate, and partially fold the device while your paywall is open.

Android Studio​

When testing through Android Studio, you can:

  1. Use the Android Emulator to test different device sizes and screen densities
  2. Test different locales and languages to verify translations
  3. Test different subscription states using Google Play's license testing
  4. Preview layouts directly in Android Studio's Layout Editor

Best Practices​

  • Test your paywall across different device sizes to ensure proper layout, including foldables such as iPhone Duo (see Paywalls on iPhone Duo)
  • Verify all purchase flows work as expected (in-app purchases, web purchases, etc.)
  • Test localization if your app supports multiple languages
  • Verify that variables are properly populated with product information
  • Test both light and dark mode if your paywall supports them
  • For multi-step paywalls, go through every step and confirm each navigation button leads to the correct step, and that the final step can complete a purchase
Was this page helpful?