Skip to content

Make PaymentSuccessAnimation RSC-ready, localized, and lighter - #1270

Merged
emdevelopa merged 1 commit into
emdevelopa:mainfrom
Nanle-code:feature/fe-payment-success-animation-rsc-loading-i18n-deps-1175-1176-1177-1178
Jul 27, 2026
Merged

Make PaymentSuccessAnimation RSC-ready, localized, and lighter#1270
emdevelopa merged 1 commit into
emdevelopa:mainfrom
Nanle-code:feature/fe-payment-success-animation-rsc-loading-i18n-deps-1175-1176-1177-1178

Conversation

@Nanle-code

@Nanle-code Nanle-code commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Test plan

  • vitest run on PaymentSuccessAnimation.test.tsx + PaymentSuccessAnimation.wrapper.test.tsx — 34/34 passing
  • tsc --noEmit clean for all touched files
  • eslint clean for all touched non-test files
  • Full repo test suite (47 files) — could not complete in the sandbox used for this change due to environment constraints; spot-checked the other failing files individually and confirmed they are pre-existing, unrelated to this change (stale onboarding-reducer test, a pre-existing darkModeTheme i18n lookup bug, and unrelated syntax errors in PortfolioChartWidget.tsx)

Closes #1175
Closes #1176
Closes #1177
Closes #1178

…d lighter

Splits PaymentSuccessAnimation into a server-safe wrapper (PaymentSuccessAnimation.tsx)
and the interactive implementation (PaymentSuccessAnimationClient.tsx), so the
"use client" boundary sits at the animation itself rather than forcing every
importer into client-only code (emdevelopa#1175).

Adds PaymentSuccessSkeleton as the next/dynamic loading fallback, replacing the
bare Suspense fallback={null} with a real placeholder while the client bundle
streams in (emdevelopa#1176).

Adds real payment/common translations to en/es/pt messages, replacing the
hardcoded English fallback strings the component previously fell back to (emdevelopa#1177).

Migrates the animation from framer-motion to the lighter motion/react package and
removes the unused confetti and react-confetti dependencies, which were never
imported anywhere in the codebase (emdevelopa#1178).

Also fixes a real bug found while touching this component: usePrefersReducedMotion
computed its initial state via useEffect, so the confetti-trigger effect (which
runs in the same mount commit) always saw the stale default before the OS
preference loaded, meaning reduced-motion users still got a confetti burst on
first render. Switched to a lazy useState initializer that reads matchMedia
synchronously.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 27, 2026

Copy link
Copy Markdown

@Nanle-code is attempting to deploy a commit to the Emmanuel's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jul 27, 2026

Copy link
Copy Markdown

@Nanle-code Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@emdevelopa
emdevelopa merged commit f2179d8 into emdevelopa:main Jul 27, 2026
1 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants