feat: enhance MultichainBridgeTransactionListItem to support destination perspective#27536
Conversation
|
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. |
…ate destination perspective behavior
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
Because Engine underpins accounts, transactions, network selection, and multi-chain support, this is classified as HIGH risk. Even if the change is scoped, regressions could surface across confirmations, activity history, account management, and multi-chain flows.
This maps directly to SmokeWalletPlatform (transaction history display) and SmokeTrade (bridge flows). Since bridge/swap flows require confirmations, SmokeConfirmations must also be included. Tag Justification:
Excluded:
Given the Engine modification, a conservative but still scoped selection is warranted without selecting every possible feature suite. Performance Impact: Selected performance tags:
Not selecting swaps/predict/perps-specific performance tests because no swap engine, prediction, or perps logic was directly modified. Performance Test Selection: |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
|
|
✅ E2E Fixture Validation — Schema is up to date |
|
|
||
| const { AccountTrackerController, NetworkController } = | ||
| this.context; | ||
| try { |
There was a problem hiding this comment.
Is it intentional to silently catch this error or should we allow it to just fall to the outside catch block?
There was a problem hiding this comment.
It is intentional. findNetworkClientIdByChainId or AccountTrackerController.refresh can throw when destination EVM chain is not in the user’s wallet and that's fine, we still want to run updateIncomingTransactions




Description
When bridging from a non-EVM chain to an EVM chain (e.g. Solana → Optimism), the completed bridge transaction was only visible on the source chain's activity list. Switching to the destination chain's activity view showed an empty list, even though funds were correctly received. The transaction would only appear after performing another unrelated transaction on the destination chain.
Root cause:
UnifiedTransactionsViewfiltered non-EVM transactions exclusively by source chain. When viewing Optimism-only activity, the Solana source transaction was filtered out, and no EVM-side entry existed for the bridge destination.Fix (3 parts):
Activity list filtering (
UnifiedTransactionsView.tsx): Non-EVM bridge source transactions are now also included when their destination EVM chain is enabled, by cross-referencing bridge history items.Destination perspective rendering (
MultichainBridgeTransactionListItem.tsx): When a bridge transaction is shown from the destination chain's perspective, the component now displays the destination chain icon, received token amount (e.g.+0.1 ETH), and destination token symbol instead of the source chain details.Balance/data refresh on bridge completion (
Engine.ts): WhenBridgeStatusController:destinationTransactionCompletedfires for an EVM destination, the handler now also triggersAccountTrackerController.refreshandTransactionController.updateIncomingTransactionsto update native balances and fetch incoming transactions.Changelog
CHANGELOG entry: Fixed cross-chain bridge transactions not appearing on the destination chain's activity list
Related issues
Fixes: #23424
Manual testing steps
Screenshots/Recordings
Before
ScreenRecording_11-28-2025.16-01-13_1.MP4
After
bridge-activity-fix.mov
Pre-merge author checklist
Pre-merge reviewer checklist
Note
Medium Risk
Touches transaction list filtering/rendering and engine-side refresh triggers on bridge completion, which can affect activity visibility and balance refresh behavior across networks. Changes are scoped and covered by new unit tests but still impact core wallet UX.
Overview
Fixes cross-chain bridge activity visibility by including non-EVM bridge source transactions when their destination EVM chain is the currently enabled filter in
UnifiedTransactionsView.Adds a destination-view rendering mode to
MultichainBridgeTransactionListItem(destination network badge ++-prefixed received amount/symbol using destination decimals), and wires it up based on whether the non-EVM source chain is enabled.On
BridgeStatusController:destinationTransactionCompletedfor EVM assets,Enginenow also refreshes the account tracker (best-effort) and triggersTransactionController.updateIncomingTransactions; unit tests were added/updated to cover these behaviors.Written by Cursor Bugbot for commit e18b71a. This will update automatically on new commits. Configure here.