Skip to content

fix(react-paypal-js): release v6 payment sessions exactly once - #1040

Open
OskarEichler wants to merge 2 commits into
paypal:mainfrom
OskarEichler:codex/v6-session-ownership
Open

OskarEichler wants to merge 2 commits into
paypal:mainfrom
OskarEichler:codex/v6-session-ownership

Conversation

@OskarEichler

Copy link
Copy Markdown

Fixes

Clear the owned session before destroying it, and let effect cleanup destroy only the session it still owns. Apply the same correction to PayPal one-time/save/subscription/guest, PayPal Credit one-time/save, Venmo and Pay Later hooks.

Previously, calling handleDestroy followed by unmount called destroy twice. SDK replacement/removal also left the ref pointing to an already-destroyed session, allowing a later handleClick to start it.

Compatibility

No public API/type changes. Destroy is now idempotent for the owned session; calls after disposal follow the existing unavailable-session error path instead of invoking a destroyed SDK object.

Verification

React 19/JSDOM mocked-SDK reproductions for all eight hooks: manual destroy plus unmount changes from two destroy calls to one; SDK removal followed by click changes from one stale start to zero. 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 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: 2f13c58

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