Skip to main content
Question

RevenueCatUI.presentPaywall() never resolves after Restore Purchases (Capacitor)

  • August 15, 2025
  • 1 reply
  • 70 views

Forum|alt.badge.img

Hi everyone,

I’m using @revenuecat/purchases-capacitor-ui with the RC Paywall Editor to show my subscription screen:

const { result } = await RevenueCatUI.presentPaywall();

Purchases work fine, the promise resolves.
However, when the user taps Restore Purchases button inside the paywall:

  • The restore actually happens (I see the RevenueCat webhook fire, and the user’s entitlements update in Purchases.addCustomerInfoUpdateListener).

  • But the paywall stays open because presentPaywall() never returns, it’s “stuck” waiting.

 

Questions:

  1. Is this expected behavior for presentPaywall() after restore in the Paywall Editor? (I also tried presentPaywallIfNeeded({ ... }), but observed the same behavior.)

  2. Is there a way to programmatically detect that restore finished so I can navigate away?   (I coudn’t find a dismiss method in the Capacitor sdk)

 

Setup:

  • Capacitor 7.1.0
  • @revenuecat/purchases-capacitor 11.1.1
  • @revenuecat/purchases-capacitor-ui 11.1.1
  • iOS + Android

Thanks!

This post has been closed for comments

1 reply

Forum|alt.badge.img+8
  • RevenueCat Staff
  • August 19, 2025

Hi, presentPaywall doesn’t dismiss on restoring purchases even if trying to use the paywall result as on restore. It only auto-dismisses on a successful purchase. If you would like for your paywall to dismiss on restore, the two options are presentPaywallIfNeeded or PaywallView with the onRestore listener. See our docs here