@@ -528,29 +528,18 @@ const SFPaymentsSheet = forwardRef((props, ref) => {
528528 [ customer , paymentConfig ]
529529 )
530530
531- const canSaveForFutureUsage = isRegistered && ! ! customer ?. customerId
532-
533531 useEffect ( ( ) => {
534- const isCustomerDataReady = ! isCustomerDataLoading
535- const hasNoCheckoutInstance = ! checkoutComponent . current
536- const hasSfp = ! ! sfp
537- const hasMetadata = ! ! metadata
538- const hasContainer = ! ! containerElementRef . current
539- const hasPaymentConfig = ! ! paymentConfig
540-
541- const readyToMountSFP =
542- isCustomerDataReady &&
543- hasNoCheckoutInstance &&
544- hasSfp &&
545- hasMetadata &&
546- hasContainer &&
547- hasPaymentConfig
548-
549- if ( ! readyToMountSFP ) {
550- return
551- }
532+ // Mount SFP only when all required data and DOM are ready; otherwise skip or wait for a later run.
533+
534+ if ( isCustomerDataLoading ) return // Wait for savedPaymentMethods data to load for registered users
535+ if ( checkoutComponent . current ) return // Skip if Componenet Already mounted
536+ if ( ! sfp ) return // Skip if SFP SDK not loaded yet
537+ if ( ! metadata ) return // Skip if SFP metadata not available yet
538+ if ( ! containerElementRef . current ) return // Skip if Payment container ref not attached to DOM yet
539+ if ( ! paymentConfig ) return // Skip if Payment config not loaded yet
540+
552541
553- const paymentMethodSetAccounts = ( paymentConfig . paymentMethodSetAccounts || [ ] ) . map (
542+ const paymentMethodSetAccounts = ( paymentConfig . paymentMethodSetAccounts || [ ] ) . map (
554543 ( account ) => ( {
555544 ...account ,
556545 gatewayId : account . accountId
@@ -571,7 +560,7 @@ const SFPaymentsSheet = forwardRef((props, ref) => {
571560 options : {
572561 useManualCapture : ! cardCaptureAutomatic ,
573562 returnUrl : `${ window . location . protocol } //${ window . location . host } /checkout/payment-processing` ,
574- showSaveForFutureUsageCheckbox : canSaveForFutureUsage ,
563+ showSaveForFutureUsageCheckbox : isRegistered ,
575564 // Suppress "Make payment method default" checkbox since we don't support default SPM yet
576565 showSaveAsDefaultCheckbox : false ,
577566 savedPaymentMethods : savedPaymentMethods
@@ -612,8 +601,7 @@ const SFPaymentsSheet = forwardRef((props, ref) => {
612601 metadata ,
613602 containerElementRef . current ,
614603 paymentConfig ,
615- cardCaptureAutomatic ,
616- canSaveForFutureUsage
604+ cardCaptureAutomatic
617605 ] )
618606
619607 useEffect ( ( ) => {
0 commit comments