From ddf2b44e113630c9b9d3b522905b3c5328d01eb6 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Thu, 11 Sep 2025 21:23:59 +0200 Subject: [PATCH] fix: add missing await to NativeStripeSdk.initialise calls (#2113) The initialise method is async and returns a Promise, but it wasn't being awaited. This could cause race conditions where subsequent Stripe operations might be called before initialization completes. Changes: - Added await to initStripe function call to NativeStripeSdk.initialise - Wrapped useEffect initialization in async IIFE - Both Android and iOS initialization paths now properly await completion --- src/components/StripeProvider.tsx | 60 ++++++++++++++++--------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/src/components/StripeProvider.tsx b/src/components/StripeProvider.tsx index 3288d3b9bf..9dd95858d3 100644 --- a/src/components/StripeProvider.tsx +++ b/src/components/StripeProvider.tsx @@ -46,7 +46,7 @@ export const initStripe = async (params: InitStripeParams): Promise => { } const extendedParams: InitialiseParams = { ...params, appInfo }; - NativeStripeSdk.initialise(extendedParams); + await NativeStripeSdk.initialise(extendedParams); }; /** @@ -82,33 +82,37 @@ export function StripeProvider({ if (!publishableKey) { return; } - if (isAndroid) { - NativeStripeSdk.initialise({ - publishableKey, - appInfo, - stripeAccountId, - threeDSecureParams, - urlScheme, - setReturnUrlSchemeOnAndroid, - }); - NativeOnrampSdk.initialise({ - publishableKey, - appInfo, - stripeAccountId, - threeDSecureParams, - urlScheme, - setReturnUrlSchemeOnAndroid, - }); - } else { - NativeStripeSdk.initialise({ - publishableKey, - appInfo, - stripeAccountId, - threeDSecureParams, - merchantIdentifier, - urlScheme, - }); - } + const initializeStripe = async () => { + if (isAndroid) { + await NativeStripeSdk.initialise({ + publishableKey, + appInfo, + stripeAccountId, + threeDSecureParams, + urlScheme, + setReturnUrlSchemeOnAndroid, + }); + await NativeOnrampSdk.initialise({ + publishableKey, + appInfo, + stripeAccountId, + threeDSecureParams, + urlScheme, + setReturnUrlSchemeOnAndroid, + }); + } else { + await NativeStripeSdk.initialise({ + publishableKey, + appInfo, + stripeAccountId, + threeDSecureParams, + merchantIdentifier, + urlScheme, + }); + } + }; + + initializeStripe(); }, [ publishableKey, merchantIdentifier,