Skip to content

PayPal Drop-in shows blank page in TikTok / social media in-app browsers (iOS & Android) #3866

@dePablobernat

Description

@dePablobernat

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

  1. Open TikTok on iOS or Android
  2. Tap a link to a merchant page with Adyen Drop-in + PayPal enabled
  3. Proceed to checkout and select PayPal
  4. Click the PayPal button
  5. 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:blankpaypal.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

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:

  1. Create PayPal order server-side
  2. Return the PayPal approve URL
  3. Full-page redirect to https://www.paypal.com/checkoutnow?token=...
  4. Return via the existing returnUrl redirect 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)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions