Skip to content

🐛 app: misc fixes#1135

Merged
cruzdanilo merged 3 commits into
mainfrom
fixes
Jul 3, 2026
Merged

🐛 app: misc fixes#1135
cruzdanilo merged 3 commits into
mainfrom
fixes

Conversation

@dieguezguille

@dieguezguille dieguezguille commented Jul 3, 2026

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • New Features
    • Toast messages now display consistently across mobile and web, including copy confirmations and error states.
  • Bug Fixes
    • Fixed bridge amounts so missing quotes now show a dash instead of an incorrect value.
    • Card activation prompts now appear only when a card is actually missing.
    • Improved card-related flows to avoid unnecessary activation or upgrade prompts.
    • Adjusted several success and error notifications for a smoother experience.

@dieguezguille dieguezguille self-assigned this Jul 3, 2026
@changeset-bot

changeset-bot Bot commented Jul 3, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 8453074

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

This PR includes changesets to release 1 package
Name Type
@exactly/mobile 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

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request implements several bug fixes and UI improvements. It updates the ToastProvider to target the mobile platform natively, removes the redundant native: true option from individual toast calls, and refactors the NotificationToast component to derive its type from the toast's preset or haptic options. Additionally, it fixes the display of quoteless bridge amounts by rendering a placeholder when the amount is undefined, and skips card activation prompts when card details are already present. There are no review comments, so I have no further feedback to provide.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@coderabbitai

coderabbitai Bot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@dieguezguille, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 2 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 54a4a255-e223-4379-b0e9-5cc9bfbb924c

📥 Commits

Reviewing files that changed from the base of the PR and between b65d283 and f39c178.

📒 Files selected for processing (31)
  • .changeset/calm-heron-waves.md
  • .changeset/calm-otters-reveal.md
  • .changeset/ripe-dancers-shop.md
  • src/app/_layout.tsx
  • src/components/activity/details/DeclinedActivity.tsx
  • src/components/activity/details/PurchaseDetails.tsx
  • src/components/activity/details/TransactionDetails.tsx
  • src/components/add-funds/AddCrypto.tsx
  • src/components/add-funds/AddFunds.tsx
  • src/components/add-funds/Bridge.tsx
  • src/components/add-funds/Fees.tsx
  • src/components/add-funds/Ramp.tsx
  • src/components/add-funds/Status.tsx
  • src/components/card/Card.tsx
  • src/components/card/CardDetails.tsx
  • src/components/getting-started/GettingStarted.tsx
  • src/components/home/CardStatus.tsx
  • src/components/home/GettingStarted.tsx
  • src/components/home/Home.tsx
  • src/components/home/VisaSignatureSheet.tsx
  • src/components/home/card-upgrade/ActivateCard.tsx
  • src/components/home/card-upgrade/UpgradeAccount.tsx
  • src/components/home/card-upgrade/VerifyIdentity.tsx
  • src/components/loans/Receiver.tsx
  • src/components/pay/Pay.tsx
  • src/components/pay/PaymentSheet.tsx
  • src/components/pay/RolloverIntroSheet.tsx
  • src/components/roll-debt/RollDebt.tsx
  • src/components/shared/Toast.tsx
  • src/components/shared/ToastViewport.tsx
  • src/utils/useAuth.ts

Walkthrough

This PR removes the native: true option from toast.show calls across many components, updates ToastProvider/SafeToastViewport/NotificationToast to configure and render toasts based on native="mobile" and burntOptions, tightens card activation display conditions, fixes bridge quoteless amount display, and adds changeset entries.

Changes

Toast configuration and rendering

Layer / File(s) Summary
ToastProvider setup and toast rendering logic
src/app/_layout.tsx, src/components/shared/Toast.tsx, src/components/shared/ToastViewport.tsx
ToastProvider now receives native="mobile", NotificationToast derives its type from burntOptions instead of customData, and SafeToastViewport falls back to a default top inset.
Removing native:true from toast calls
src/components/activity/details/*, src/components/add-funds/*, src/components/card/Card.tsx, src/components/card/CardDetails.tsx, src/components/getting-started/GettingStarted.tsx, src/components/home/*, src/components/loans/Receiver.tsx, src/components/pay/*, src/components/roll-debt/RollDebt.tsx, src/utils/useAuth.ts
native: true is removed from numerous toast.show(...) configuration objects across success/error paths; some error toasts also add burntOptions.preset: "error".
Card activation gating logic
src/components/card/Card.tsx
Zero-balance redirect and the awaiting-activation InfoAlert now require cardDetails to be absent, tightening previous conditions.
Bridge quoteless amount display
src/components/add-funds/Bridge.tsx
toAmount returns undefined (instead of sourceAmount) when there is no quote and sourceAmount isn't 0n; destination modal renders "—" for amount and USD approximation in that case.
Changeset entries
.changeset/calm-heron-waves.md, .changeset/calm-otters-reveal.md, .changeset/ripe-dancers-shop.md
Adds patch-release notes for @exactly/mobile describing the quoteless bridge fix, skipped card activation prompts, and toast rendering on web.

Estimated code review effort: 2 (Simple) | ~15 minutes

Sequence Diagram(s)

sequenceDiagram
  participant RootLayout
  participant ToastProvider
  participant SafeToastViewport
  participant NotificationToast

  RootLayout->>ToastProvider: render with native="mobile"
  ToastProvider->>SafeToastViewport: mount viewport with top || "$s4"
  ToastProvider->>NotificationToast: pass toast data (no native flag)
  NotificationToast->>NotificationToast: derive type from burntOptions.preset/haptic
  NotificationToast-->>SafeToastViewport: render styled toast on web/native
Loading

Possibly related PRs

  • exactly/exa#941: Both PRs modify the KYC flow inside src/components/add-funds/AddFunds.tsx around beginKYC handling.
  • exactly/exa#1046: Both PRs touch src/components/activity/details/DeclinedActivity.tsx's clipboard-copy success toast logic.

Suggested labels: bug

Suggested reviewers: franm91, cruzdanilo

🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title is too vague and generic to clearly describe the main changes in the PR. Rename it to reflect the primary fix, such as app toast/native handling or bridge amount display changes.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fixes
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch fixes

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Jul 3, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 71.42857% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 72.60%. Comparing base (9d7b0b6) to head (f39c178).
⚠️ Report is 4 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
src/components/home/Home.tsx 0.00% 1 Missing ⚠️
...rc/components/home/card-upgrade/UpgradeAccount.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1135      +/-   ##
==========================================
+ Coverage   71.87%   72.60%   +0.73%     
==========================================
  Files         248      249       +1     
  Lines       10120    10124       +4     
  Branches     3287     3293       +6     
==========================================
+ Hits         7274     7351      +77     
+ Misses       2568     2495      -73     
  Partials      278      278              
Flag Coverage Δ
e2e 72.60% <71.42%> (+0.73%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/components/card/Card.tsx (1)

171-174: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract the repeated error-toast options.

The { duration: 1000, burntOptions: { haptic: "error", preset: "error" } } literal is duplicated 4 times in this file alone (Lines 171-174, 189-192, 208-211, 243-246, 256-259). As per coding guidelines, "extract and abstract only with reuse (two or more uses)" — this clearly qualifies.

♻️ Proposed helper extraction
+function showErrorToast(toast: ReturnType<typeof useToastController>, message: string) {
+  toast.show(message, { duration: 1000, burntOptions: { haptic: "error", preset: "error" } });
+}
+
 export default function Card() {
   ...
-        toast.show(t("An error occurred. Please try again later."), {
-          duration: 1000,
-          burntOptions: { haptic: "error", preset: "error" },
-        });
+        showErrorToast(toast, t("An error occurred. Please try again later."));

Also applies to: 189-192, 208-211, 232-235, 243-246, 256-259

Source: Coding guidelines


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 92e4c714-a560-4024-9d9b-22e88926d38f

📥 Commits

Reviewing files that changed from the base of the PR and between ed5f97f and b65d283.

📒 Files selected for processing (31)
  • .changeset/calm-heron-waves.md
  • .changeset/calm-otters-reveal.md
  • .changeset/ripe-dancers-shop.md
  • src/app/_layout.tsx
  • src/components/activity/details/DeclinedActivity.tsx
  • src/components/activity/details/PurchaseDetails.tsx
  • src/components/activity/details/TransactionDetails.tsx
  • src/components/add-funds/AddCrypto.tsx
  • src/components/add-funds/AddFunds.tsx
  • src/components/add-funds/Bridge.tsx
  • src/components/add-funds/Fees.tsx
  • src/components/add-funds/Ramp.tsx
  • src/components/add-funds/Status.tsx
  • src/components/card/Card.tsx
  • src/components/card/CardDetails.tsx
  • src/components/getting-started/GettingStarted.tsx
  • src/components/home/CardStatus.tsx
  • src/components/home/GettingStarted.tsx
  • src/components/home/Home.tsx
  • src/components/home/VisaSignatureSheet.tsx
  • src/components/home/card-upgrade/ActivateCard.tsx
  • src/components/home/card-upgrade/UpgradeAccount.tsx
  • src/components/home/card-upgrade/VerifyIdentity.tsx
  • src/components/loans/Receiver.tsx
  • src/components/pay/Pay.tsx
  • src/components/pay/PaymentSheet.tsx
  • src/components/pay/RolloverIntroSheet.tsx
  • src/components/roll-debt/RollDebt.tsx
  • src/components/shared/Toast.tsx
  • src/components/shared/ToastViewport.tsx
  • src/utils/useAuth.ts
💤 Files with no reviewable changes (18)
  • src/components/activity/details/DeclinedActivity.tsx
  • src/components/activity/details/PurchaseDetails.tsx
  • src/components/loans/Receiver.tsx
  • src/components/pay/Pay.tsx
  • src/components/home/card-upgrade/VerifyIdentity.tsx
  • src/components/pay/PaymentSheet.tsx
  • src/components/add-funds/AddCrypto.tsx
  • src/components/getting-started/GettingStarted.tsx
  • src/components/home/VisaSignatureSheet.tsx
  • src/components/home/GettingStarted.tsx
  • src/components/activity/details/TransactionDetails.tsx
  • src/components/pay/RolloverIntroSheet.tsx
  • src/components/add-funds/AddFunds.tsx
  • src/components/home/CardStatus.tsx
  • src/components/card/CardDetails.tsx
  • src/components/roll-debt/RollDebt.tsx
  • src/components/home/card-upgrade/ActivateCard.tsx
  • src/utils/useAuth.ts

@cruzdanilo
cruzdanilo merged commit f39c178 into main Jul 3, 2026
6 of 10 checks passed
@cruzdanilo
cruzdanilo deleted the fixes branch July 3, 2026 14:38
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.

2 participants