Skip to main content
Question

[React Native] Paywall v2 UI Not Displaying — Fallback UI Only

  • May 12, 2025
  • 1 reply
  • 22 views

Forum|alt.badge.img

Environment:

  • React Native: 0.76.5 (bare workflow)

  • react-native-purchases: 8.9.7

  • react-native-purchases-ui: 8.9.7

  • Platform: Android (Google Play Store only)

  • RevenueCat API Key: (confirmed correct in code)

  • Audit Log: paywall_published on Default (paywall) by Mukul Sharma @ 2025-05-12 05:34 PM UTC

 

I’ve published a  paywall UI via the RevenueCat dashboard  and confirmed in the audit log that it’s live. In my React Native app I’m calling: 

export const ENTITLEMENT_IDS = {
  PRO: 'pro',
  PREMIUM: 'premium',
} as const;
export type EntitlementKey = keyof typeof ENTITLEMENT_IDS;

const presentPaywall = useCallback(
  async (entitlement: EntitlementKey): Promise<PAYWALL_RESULT> => {
    setIsLoading(true);
    try {
      const result = await RevenueCatUI.presentPaywallIfNeeded({
        requiredEntitlementIdentifier: ENTITLEMENT_IDS[entitlement],
      });
      return result;
    } finally {
      setIsLoading(false);
    }
  },
  [fetchCustomerInfo, fetchOfferings]
);
  • I see my originalAppUserID correctly.

  • I can fetch offerings and prices (price variable only).

  • In-app purchases work end-to-end.(able to make payment via fallback ui)

Expected Behavior:
The paywall that I designed in the RevenueCat dashboard (with my custom layout, colors, fonts, and buttons) should appear when presentPaywallIfNeeded is called.

Actual Behavior:
I only ever see the default “fallback” UI provided by the Purchases-UI library, not my formatted template.

 

Steps to Reproduce:

  1. Login user → verify originalAppUserID logs.

  2. Call RevenueCatUI.presentPaywallIfNeeded({ requiredEntitlementIdentifier: 'pro' }).

  3. Observe fallback UI only.

What I’ve Tried:

  • Confirmed paywall is published (paywall_published in audit). and up to date status in paywall section

  • Rechecked the variable used from https://www.revenuecat.com/docs/tools/paywalls/creating-paywalls#how-to-configure-your-paywall

  • Verified API key is correct and matches dashboard.

  • Checked that the entitlement IDs in code exactly match those in the RevenueCat dashboard.

  • Ensured I’m on the latest UI version (8.9.7) on both react-native-purchases and react-native-purchases-ui.

  • Restarted Metro bundler and re-installed the app fresh.

Could you please help me understand why my custom paywall template isn’t showing? Let me know if you need any additional logs, screenshots, or example project code to debug. Thanks so much!


Mukul Sharma
smukul085@gmail.com

 

This post has been closed for comments

1 reply

jeffrey_bunn
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • 299 replies
  • May 14, 2025

Hi ​@mukul-sharma, thanks for including detailed information about this issue. Usually, the fallback paywall will appear when there are configuration issues in your paywall (often it’s missing packages/products). Your paywall currently looks fine, but I wasn’t able to load your offerings at all on a test device. This points to a general configuration issue - would you mind reviewing this interactive guide to ensure everything has been completed on the Google Play side? 

Also, I noticed that your Google service account credentials do not have permission to access the Google Cloud Pub/Sub API. Can you double-check this guide and also set up real-time developer notifications?


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings