Skip to content

fix: handle non-Error wallet rejections in error UI and Sentry filters#2931

Open
mgrabina wants to merge 2 commits intomainfrom
fix/sentry-error-handling
Open

fix: handle non-Error wallet rejections in error UI and Sentry filters#2931
mgrabina wants to merge 2 commits intomainfrom
fix/sentry-error-handling

Conversation

@mgrabina
Copy link
Copy Markdown
Contributor

Summary

  • GasEstimationError.tsx crashed when rawError wasn't a standard Error object (e.g. wallet rejection objects from ethers/viem), causing TypeError: Cannot read properties of undefined (reading 'message') to be sent to Sentry on every wallet rejection. This was the main source of Sentry noise.
  • Wallet rejections now show as info ("You cancelled the transaction") instead of a red error banner
  • getErrorTextFromError now safely handles non-Error catch values
  • Fixed reject() in useTransactionHandler passing undefined to the outer catch, which overwrote the correctly parsed rejection with a generic error
  • Sentry filter now combines exception type + value so patterns can match error class names (e.g. UserRejectedRequestError)

Test plan

  • Reject a wallet transaction locally, verify info banner shows (not error)
  • Verify no TypeError sent to Sentry on rejection
  • Verify Sentry filter drops matching errors (setTimeout(() => { throw new Error("User rejected the request") }, 0))
  • Verify real errors still pass through to Sentry

GasEstimationError crashed when rawError wasn't a standard Error object,
sending a TypeError to Sentry on every wallet rejection. This was the
main source of Sentry noise, not the filtered patterns.

- Fix GasEstimationError to safely access rawError.message
- Show wallet rejections as info, not error
- Fix getErrorTextFromError to handle non-Error catch values
- Fix reject() passing undefined to outer catch in useTransactionHandler
- Combine Sentry event type + value in filter so patterns match class names
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 10, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
interface Ready Ready Preview, Comment Apr 10, 2026 6:00pm

Request Review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 763e3f7f12

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@github-actions
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown

📦 Next.js Bundle Analysis for aave-ui

This analysis was generated by the Next.js Bundle Analysis action. 🤖

🎉 Global Bundle Size Decreased

Page Size (compressed)
global 1.15 MB (🟢 -684 B)
Details

The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.

Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis

If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!

Sixteen Pages Changed Size

The following pages changed size from the code in this PR compared to its base branch:

Page Size (compressed) First Load
/ 67.05 KB (🟡 +1.57 KB) 1.22 MB
/404 2.87 KB (🟡 +3 B) 1.15 MB
/500 3.2 KB (🟡 +5 B) 1.15 MB
/bridge 29.03 KB (🟡 +3 B) 1.18 MB
/dashboard 56.95 KB (🟡 +1.65 KB) 1.21 MB
/faucet 15.21 KB (🟢 -3 B) 1.17 MB
/governance 81.21 KB (🟡 +2.72 KB) 1.23 MB
/governance/ipfs-preview 101.97 KB (🟡 +3 B) 1.25 MB
/governance/v3/proposal 125.38 KB (🟡 +2.81 KB) 1.27 MB
/history 36.06 KB (🟢 -87 B) 1.19 MB
/markets 39.26 KB (🟢 -1.05 KB) 1.19 MB
/reserve-overview 26.84 KB (🟡 +2.73 KB) 1.18 MB
/safety-module 32.15 KB (🟡 +2.47 KB) 1.18 MB
/sgho 89.97 KB (🟡 +1.88 KB) 1.24 MB
/staking 33.69 KB (🟢 -87 B) 1.18 MB
/v3-migration 36.68 KB (-3 B) 1.19 MB
Details

Only the gzipped size is provided here based on an expert tip.

First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.

Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis

Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.

reject(error) bypassed the null guard, causing double error handling.
@github-actions
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown

📦 Next.js Bundle Analysis for aave-ui

This analysis was generated by the Next.js Bundle Analysis action. 🤖

🎉 Global Bundle Size Decreased

Page Size (compressed)
global 1.15 MB (🟢 -671 B)
Details

The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.

Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis

If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!

Sixteen Pages Changed Size

The following pages changed size from the code in this PR compared to its base branch:

Page Size (compressed) First Load
/ 67.05 KB (🟡 +1.57 KB) 1.22 MB
/404 2.87 KB (🟡 +3 B) 1.15 MB
/500 3.2 KB (🟡 +5 B) 1.15 MB
/bridge 29.03 KB (🟡 +3 B) 1.18 MB
/dashboard 56.95 KB (🟡 +1.65 KB) 1.21 MB
/faucet 15.21 KB (🟢 -3 B) 1.17 MB
/governance 81.21 KB (🟡 +2.72 KB) 1.23 MB
/governance/ipfs-preview 101.97 KB (🟡 +3 B) 1.25 MB
/governance/v3/proposal 125.38 KB (🟡 +2.81 KB) 1.27 MB
/history 36.06 KB (🟢 -87 B) 1.19 MB
/markets 39.26 KB (🟢 -1.05 KB) 1.19 MB
/reserve-overview 26.84 KB (🟡 +2.73 KB) 1.18 MB
/safety-module 32.15 KB (🟡 +2.47 KB) 1.18 MB
/sgho 89.97 KB (🟡 +1.88 KB) 1.24 MB
/staking 33.69 KB (🟢 -87 B) 1.18 MB
/v3-migration 36.68 KB (-3 B) 1.19 MB
Details

Only the gzipped size is provided here based on an expert tip.

First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.

Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis

Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.

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