feat(rn_cli_wallet): Lottie animations for WC Pay loader and success#504
feat(rn_cli_wallet): Lottie animations for WC Pay loader and success#504ignaciosantise wants to merge 3 commits into
Conversation
Replace the custom 4-square Reanimated loader with a branded Lottie
animation on the "Setting up {token}" / "Processing your payment..."
steps, and swap the static success checkmark for a one-shot Lottie burst
on the result screen. The initial "Preparing your payment..." step keeps
the existing spinner via a new `variant` prop on LoadingView. Lottie
matte layers are remapped to the modal background via colorFilters so
they don't leak in dark mode.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Claude finished @ignaciosantise's task in 2m 5s —— View job Code Review
License: Found 2 issue(s)Issue 1:
|
There was a problem hiding this comment.
Pull request overview
This PR updates the WC Pay flow UI in rn_cli_wallet to use Lottie animations for the “confirming” loader and the success result state, while keeping the legacy spinner for the initial “loading” step.
Changes:
- Add
lottie-react-nativedependency (JS + iOS pods) to support animated assets. - Update
PaymentOptionsModalloading UI to support a newvariant(spinnervslottie) and apply theme-based color filtering for known matte artifacts. - Replace the success result icon with a one-shot Lottie animation.
Reviewed changes
Copilot reviewed 6 out of 8 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| wallets/rn_cli_wallet/package.json | Adds lottie-react-native dependency. |
| wallets/rn_cli_wallet/yarn.lock | Locks lottie-react-native@7.3.5. |
| wallets/rn_cli_wallet/ios/Podfile.lock | Adds lottie-react-native + lottie-ios pods. |
| wallets/rn_cli_wallet/src/modals/PaymentOptionsModal/index.tsx | Uses LoadingView variant="spinner" for the initial loading step. |
| wallets/rn_cli_wallet/src/modals/PaymentOptionsModal/LoadingView.tsx | Introduces variant prop; renders Lottie loader with color filters for dark mode. |
| wallets/rn_cli_wallet/src/modals/PaymentOptionsModal/ResultView.tsx | Replaces static success icon with success Lottie animation. |
| wallets/rn_cli_wallet/src/assets/lottie/Loading.json | Adds loader animation asset. |
| wallets/rn_cli_wallet/src/assets/lottie/Success.json | Adds success animation asset. |
Comments suppressed due to low confidence (1)
wallets/rn_cli_wallet/src/modals/PaymentOptionsModal/ResultView.tsx:69
- Previously the success icon color was driven by the theme (
Theme['text-success']), but the Lottie animation uses hard-coded colors from the JSON. If the success indicator is expected to match the app theme/palette, add color remapping (e.g., viacolorFilters) or otherwise ensure the animation assets use the intended success color.
<LottieView
source={require('@/assets/lottie/Success.json')}
autoPlay={arePayModalAnimationsEnabled}
loop={false}
style={styles.successAnimation}
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…e testID Address review feedback on #504: - Move arePayModalAnimationsEnabled from duplicated definitions in LoadingView and ResultView into the shared PaymentOptionsModal/utils. - Add testID="pay-loading-lottie" to the loading Lottie so Maestro can assert on it, matching the pay-* convention. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Address review feedback on #504: - ResultView: pin the success Lottie to its final frame (progress=1) when animations are disabled, so the success indicator is still visible during E2E runs. - LoadingView: fall back to the spinner variant whenever animations are disabled, since the Lottie loader has no meaningful static frame. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Summary
confirmingstep ("Setting up {token}", "Processing your payment...", "Finalizing payment").CheckCircleSVG for a one-shot success Lottie on the result screen.WalletConnectLoadingspinner on the initialloadingstep ("Preparing your payment...") via a newvariantprop onLoadingView.colorFiltersso they don't leak white in dark mode (a known lottie-react-native rendering quirk with stroke-based mattes).ip0→25,op207→190) to remove dead frames at the start/end and tighten the loop.Screenshots
Screen.Recording.2026-05-22.at.3.08.30.PM.mov
Flow
Test plan
WalletConnectLoadingstill renders unchanged inWallets/index.tsx,LoadingModal.tsx, andCollectDataWebView.tsx.🤖 Generated with Claude Code