Hi all,
We’re facing a bizarre issue with our app on Vercel: everything works perfectly on local, preview deploys, and other production domains — but on one specific production domain, our Stripe Elements payment flow breaks in a very specific way.
What works (local, preview deploys, and alternate production domains):
-
User completes an order form with:
- Email address
- Number of players
- Optional voucher code
-
Stripe Elements processes payment (including Apple Pay)
-
After success:
- Order details (players, voucher, correct amount, email) are saved to Supabase
- Confirmation email is sent to the form email address
- Order confirmation screen loads correctly
What breaks (only on one production domain):
-
After Apple Pay payment:
- Only the Stripe email (not the form email) is saved
- Player count resets to default (2)
- Paid amount resets to default (£30)
- Voucher info is lost
- Confirmation screen enters an infinite reload loop
- Confirmation email is sent to Apple Pay email instead of the form input
What we’ve tried:
- Same build, repo, and environment variables across all environments
- Verified working behaviour via “Visit” links in Vercel previews
- Cleared CDN and redeployed from scratch
- Tested on multiple browsers and devices (including private sessions)
- Logged data before and after Stripe payment — data is present before redirect
Key discovery:
We have three production domains on Vercel (e.g. project.vercel.app / project-account.vercel.app / project-git-main-account.vercel.app), and this broken behaviour only occurs on one of them. All others (including local) behave correctly with the exact same build.
Suspected cause:
This feels like a session, cookie, or localStorage boundary issue. Possibly:
- Stripe or Apple Pay returning differently scoped data based on domain
- Session/localStorage not surviving the post-payment redirect on that domain
- SameSite or CORS behaviour unique to one domain
Looking for help:
- Has anyone experienced domain-specific differences like this?
- Anything Vercel does differently under the hood between production URLs?
- Are there known session/localStorage limitations that might only affect one domain?
Thanks in advance — this is proving really tricky to debug and any insight would be hugely appreciated.
-Aloo