-
Notifications
You must be signed in to change notification settings - Fork 166
Description
Describe the bug
When a user opens a merchant page via a TikTok, Instagram, or Facebook link (inside the app's built-in browser) and attempts to pay with PayPal via the Adyen Drop-in, the PayPal authentication overlay opens but displays a permanently blank white page. The payment flow never completes.
This affects a large and growing segment of users since social media in-app browsers are the primary traffic source for many merchants.
Steps to reproduce
- Open TikTok on iOS or Android
- Tap a link to a merchant page with Adyen Drop-in + PayPal enabled
- Proceed to checkout and select PayPal
- Click the PayPal button
- A browser overlay opens → blank white page, PayPal never loads
Expected behavior
PayPal authentication loads and the user can complete payment.
Actual behavior
PayPal overlay opens with a permanently blank white page. No error is shown to the user. Payment is impossible.
Root cause (investigated)
PayPal's JS SDK renders its button inside a cross-origin iframe. When clicked, it executes:
const windowRef = window.open('about:blank', ...)
windowRef.location.replace('https://www.paypal.com/...')In TikTok's WebView (WKWebView on iOS), window.open succeeds but the subsequent location.replace from about:blank → paypal.com is silently blocked — resulting in a blank overlay.
This was confirmed by a PayPal engineer in mozilla-mobile/firefox-ios#30098 as a cross-origin iframe → popup restriction.
PayPal's own SDK (@krakenjs/belter) detects TikTok as supportsPopups=false, but FUNDING.PAYPAL does not have requires.popup set — so the button remains eligible and visible, leading users into a broken flow with no feedback.
We also confirmed there is no PayPalConfiguration option in the current Drop-in API to switch to a redirect-based flow.
This is a widespread, actively reported issue
- mozilla-mobile/firefox-ios#30098 (Oct 2025, last activity Mar 2026) — PayPal blank page in Firefox iOS confirmed by a PayPal engineer as a cross-origin iframe
window.openrestriction. Same root cause. - paypal/paypal-js#534 (active through Nov 2025) — PayPal button opens overlay but popup is empty/blank. Multiple reporters across different browser environments.
- DEV Community — PayPal Smart Buttons in 2025: about:blank flash + never-closing popup (Nov 2025) — documents the
about:blankflash and blank popup as still active problems in 2025. - flutter/flutter#93425 (still receiving comments Jul 2025) — PayPal button in WebView opens blank page on iOS. No resolution.
PayPal/Braintree themselves acknowledge this is systemic — they maintain dedicated libraries (popup-bridge-ios, popup-bridge-android) specifically for WebView popup failures. These are not accessible to merchants using the Adyen Drop-in.
Proposed solution
Could Adyen expose a redirect mode for the PayPal component that bypasses the JS SDK popup flow? For example:
paymentMethodsConfiguration: {
paypal: {
showPayButton: true,
redirectMode: true, // full-page redirect instead of popup
}
}When active, the flow would be:
- Create PayPal order server-side
- Return the PayPal
approveURL - Full-page redirect to
https://www.paypal.com/checkoutnow?token=... - Return via the existing
returnUrlredirect handler (already supported in Drop-in)
Alternatively, exposing a way to pass data-popups-disabled="true" to the PayPal SDK script tag (which already exists in paypal-sdk-constants as SDK_DATA_ATTRIBUTES.POPUPS_DISABLED) would allow merchants to opt into PayPal's own in-page flow for popup-restricted environments.
Environment
@adyen/adyen-web: 6.22.0- Affected: TikTok in-app browser (iOS + Android), Instagram in-app browser, Facebook in-app browser
- Not affected: Safari, Chrome, Firefox (standard browsers)