Skip to main content
Question

Exit Offer Paywall Not Showing After presentPaywall Close – Expo + react-native-purchases-ui 9.7.5

  • February 1, 2026
  • 1 reply
  • 53 views

Forum|alt.badge.img+2

Hello,

I’m testing RevenueCat exit paywalls using the Expo + React Native setup and running into an issue where the exit offer paywall never appears after closing the initial paywall.

Environment:

  • react-native: 0.81.5

  • expo: ~54.0.30

  • react-native-purchases: ^9.7.5

  • react-native-purchases-ui: ^9.7.5

Setup details:

  • Using the RevenueCat Paywalls UI

  • Calling presentPaywall() from react-native-purchases-ui

  • Testing in dev environment

  • Using default offering

  • Both:

    • Default paywall

    • Exit offer paywall
      are created and published

Expected behavior:

  1. presentPaywall() shows the default paywall

  2. User closes it

  3. Exit offer paywall should automatically appear

Actual behavior:

  1. Default paywall shows correctly

  2. User closes it

  3. Nothing happens — exit offer is never displayed

No errors are logged, and the close action completes silently.

How I’m presenting the paywall:

import { presentPaywall } from "react-native-purchases-ui";

await presentPaywall();

Questions:

  • Is there any additional configuration required for exit offers when using Expo?

  • Does the exit paywall require specific triggers or manual handling in the SDK?

  • Could this be related to dev mode, offerings, or how presentPaywall() handles dismissal?

Any guidance would be appreciated.

This post has been closed for comments

1 reply

alejandra-wetsch
RevenueCat Staff
Forum|alt.badge.img+6

Hey ​@jaehoon-03a0b7

Thank you for reaching out and providing such a detailed explanation of what you’re seeing and your current environment!

After reviewing your sample code snippet, I can see that the way you’re importing the package may be the cause the exit offer isn't displayed on Paywall dismissal. My recommendation would be to update your code to be something like this:

import RevenueCatUI, { PAYWALL_RESULT } from "react-native-purchases-ui";

const paywallResult = await RevenueCatUI.presentPaywall();

// Handle Paywall result if needed
switch (paywallResult) {
case PAYWALL_RESULT.PURCHASED:
case PAYWALL_RESULT.RESTORED:
case PAYWALL_RESULT.CANCELLED:
case PAYWALL_RESULT.NOT_PRESENTED:
case PAYWALL_RESULT.ERROR:
}

Is there any additional configuration required for exit offers when using Expo?

You don't need any additional configuration beyond the import changes above.

Does the exit paywall require specific triggers or manual handling in the SDK?

No manual handling is needed in the current version; Exit Offers are triggered automatically by the SDK.

Could this be related to dev mode, offerings, or how presentPaywall() handles dismissal?

Exit Offers are supported in dev mode and are currently only available for the presentPaywall() and presentPaywallIfNeeded() methods.

After making the import change, the Exit Offer should display once the Paywall is dismissed. 

I hope this helps!