poc/moonpay iron#33305
Conversation
…e into poc/moonpay-iron
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 3 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 1f590ac. Configure here.
| { error: String(err) }, | ||
| 'error', | ||
| ); | ||
| } |
There was a problem hiding this comment.
Terms blocked after disclaimer failure
Medium Severity
When geolocation or disclaimer fetching fails, disclaimersLoaded never becomes true, so Accept terms and start stays disabled with no retry. The button label still reads Loading disclaimers… even when an error is shown, so the flow looks stuck rather than failed.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 1f590ac. Configure here.
| if (cancelled) return; | ||
| setDisclaimers(result); | ||
| setDisclaimersError(null); | ||
| setDisclaimersLoaded(true); |
There was a problem hiding this comment.
Geolocation vs profile country mismatch
Medium Severity
Disclaimers and disclaimerIds for session creation come from geolocation-derived country, but checkKycRequired uses the manually selected profile’s residentialAddress.country. A user can accept one jurisdiction’s disclaimers while querying KYC for another.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 1f590ac. Configure here.
| url.searchParams.set('publicKey', keypair.publicKeyHex); | ||
| url.searchParams.set('channelId', CHANNEL_CHECK); | ||
| url.searchParams.set('skipKyc', 'true'); | ||
| console.log('==========> url', url.toString()); |
There was a problem hiding this comment.
Debug log leaks session URL
Medium Severity
A console.log in the checkFrameUrl memo prints the full MoonPay check-connection URL, including the sessionToken query parameter, on every rebuild when a session exists.
Reviewed by Cursor Bugbot for commit 1f590ac. Configure here.
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
No production user flows, shared components, navigation, controllers, or E2E-testable features are affected. No smoke test tags are warranted. Performance Test Selection: |


Description
Changelog
CHANGELOG entry:
Related issues
Fixes:
Manual testing steps
Screenshots/Recordings
Before
After
Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Note
Medium Risk
Touches KYC/session auth and changes how MoonPay tokens flow into UKYC/SumSub, but scope is demo screens rather than production ramps UI; a debug
console.logremains on the Check frame URL.Overview
Refactors the KYC Demo MoonPay path to go through the local Universal KYC (UKYC) service instead of calling MoonPay’s platform identity APIs from the app.
API and auth: UKYC calls now use the wallet
AuthenticationControllerbearer token (replacing a hardcoded dev token). New helpers load disclaimers and geolocation → ISO alpha-3 (countryCodes.ts), andcheckKycRequiredreplaces client-side identity create/PATCH/upload/verification/polling. Session creation sendsdisclaimerIdsfrom the fetched disclaimers.Demo flow: After Check/Auth frames, the UI only picks a country profile and runs the kyc-required check; the done screen shows the JSON result and a Launch SumSub verification button (no auto-launch on approval). Challenge/verify/poll phases and rich identity fields are removed.
SumSub handoff:
KYCDemoowns a singleuseSumSubDemoinstance;MoonpayDemoreceiveslaunchSumSubSDK, andSumSubDemodisplaysstatus/sdkResultfrom props. SumSub UKYC session POSTs use bearer auth and pass the MoonPay token invendorMetadata.Minor iOS Xcode project path updates for
AppDelegate/BrazeHelperreferences.Reviewed by Cursor Bugbot for commit 1f590ac. Bugbot is set up for automated code reviews on this repo. Configure here.