Skip to content

fix(react-paypal-js): preserve Braintree options and clean up checkout instances - #1041

Open
OskarEichler wants to merge 2 commits into
paypal:mainfrom
OskarEichler:codex/braintree-lifecycle-and-options
Open

OskarEichler wants to merge 2 commits into
paypal:mainfrom
OskarEichler:codex/braintree-lifecycle-and-options

Conversation

@OskarEichler

Copy link
Copy Markdown

Fixes

  • Forward all supported hook props from the one-time and checkout-with-vault buttons. This restores shippingCallbackUrl on both and shippingAddressOverride on the one-time button; removes two duplicated prop lists that omitted options added by Feature: BT-PayPal Pay Later hook #936.
  • Own each v6 checkout instance within its initialization effect. Close late-created instances and instances whose SDK loading fails or finishes after unmount. Wait for initialization to settle before teardown, close once, and contain teardown rejections.
  • Reject a legacy Braintree namespace if either required factory is missing, rather than only when both are missing.

Compatibility

No public API/type changes. Shipping options already accepted by the button types now reach the SDK. Incomplete legacy namespaces fail early with the existing descriptive error. No new payment/capture behavior or client-instance ownership changes.

Verification

React 19/JSDOM mocked-SDK reproductions cover unmount during checkout creation, unmount during SDK load, normal unmount and SDK-load failure: each instance closes once (previously three of these leaked). Button-to-session option capture confirms restored shipping props, with billing-agreement behavior unchanged. Both partially populated legacy namespaces are rejected.

Combined reviewed patch set: existing React suite has 914 passes, 2 pre-existing HostedFieldsProvider failures and 17 passing snapshots, identical to unmodified main. Lint/typecheck, Rollup builds, declarations and diff/format checks pass (five existing JSDoc warnings). No live Braintree/PayPal transactions. No test files changed.

@OskarEichler
OskarEichler requested a review from a team as a code owner August 27, 2026 16:04
@changeset-bot

changeset-bot Bot commented Aug 27, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 09ec145

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@paypal/react-paypal-js Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant