diff --git a/react-native-purchases-ui/android/src/main/java/com/revenuecat/purchases/react/ui/RNPaywallsModule.kt b/react-native-purchases-ui/android/src/main/java/com/revenuecat/purchases/react/ui/RNPaywallsModule.kt index 0044a129f..dfbcbe403 100644 --- a/react-native-purchases-ui/android/src/main/java/com/revenuecat/purchases/react/ui/RNPaywallsModule.kt +++ b/react-native-purchases-ui/android/src/main/java/com/revenuecat/purchases/react/ui/RNPaywallsModule.kt @@ -79,16 +79,19 @@ internal class RNPaywallsModule( } private fun presentPaywall( - requiredEntitlementIdentifier: String?, - offeringIdentifier: String?, - displayCloseButton: Boolean?, - fontFamilyName: String?, - promise: Promise + requiredEntitlementIdentifier: String?, + offeringIdentifier: String?, + displayCloseButton: Boolean?, + fontFamilyName: String?, + promise: Promise ) { - val activity = currentFragmentActivity ?: return - val fontFamily = fontFamilyName?.let { - FontAssetManager.getPaywallFontFamily(fontFamilyName = it, activity.resources.assets) - } + val activity = currentFragmentActivity ?: return + val fontFamily = fontFamilyName?.let { + FontAssetManager.getPaywallFontFamily(fontFamilyName = it, activity.resources.assets) + } + + // Ensure the paywall presentation runs on the main thread + activity.runOnUiThread { presentPaywallFromFragment( activity = activity, PresentPaywallOptions( @@ -106,4 +109,5 @@ internal class RNPaywallsModule( ) ) } + } }