Apple Pay in Stripe Payment Element fails — elements.submit() called after async validation (user-activation lost)

Environment: Stripe Add-On 6.0.3 (latest), Gravity Forms [your GF version], Stripe Payment Element field, AJAX-enabled form, Stripe test mode. Payment method domains verified in Stripe (apple_pay: { status: “active” } for the domain). Safari with a card in Apple Wallet.

Symptom: The Apple Pay tab renders in the Payment Element. On submit, the Apple Pay sheet never opens and Stripe.js throws:

▎ IntegrationError: Failed to show the Apple Pay payment sheet. Apple Pay requires the payment sheet to be displayed immediately after a user activation event… call elements.submit() at the top of your submission handler, before any async or long-running code.

Card and US bank account work fine; only wallets (Apple Pay) fail.

Analysis (js/frontend.js, v6.0.3): The submit handler validate(event) awaits the validation request (const response = await …(this.getFormData(…)), ~line 1657) and only then calls this.confirm(response.data) (~line 1708). confirm() calls await this.elements.submit() (~line 1844). So elements.submit() runs after an awaited network round-trip — past the user-activation window Apple Pay requires. This is fine for cards but breaks wallet payment sheets.

Question: Is this a known limitation? For wallet methods, should elements.submit() be invoked synchronously at the top of the submit handler (before the validation AJAX), per Stripe’s deferred-intent guidance (docs ( Collect payment details before creating an Intent | Stripe Documentation ))? Is there a supported workaround or a planned fix?

Please open a support ticket at: https://www.gravityforms.com/open-support-ticket/technical/