You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When navigating from the Swap/Bridge "Select token" screen to Token Details via the (i) icon, security info (badge, SecurityTrustEntryCard, warning banners) is missing.
Root Cause
The Bridge /getTokens/popular API returns security data in a different shape ({ type: "Verified" }) than what Token Details expects ({ resultType: "Verified", features: [...], ... }). When navigating, the entire token object — including this wrong-shaped securityData — is spread into route params. useTokenSecurityData sees it as truthy prefetched data, skips its own API call, and the UI reads resultType / features → undefined → nothing renders.
Fix
Added a runtime type guard in useTokenSecurityData that validates prefetchedData has the required resultType (string) and features (array) before trusting it. If the shape is invalid, the hook falls through to fetchTokenAssets() and gets the full, correctly-shaped data.
Changelog
CHANGELOG entry: Fixed security badges and trust info now display correctly on Token Details when navigating from the Swap token selector.
Related issues
Fixes:
Manual testing steps
Feature: my feature nameScenario: user [verb for user action]Given [describe expected initial app state]
When user [verb for user action]
Then [describe expected outcome]
I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
Note
Low Risk
Low risk: adds a small runtime type guard and a focused test to ensure useTokenSecurityData falls back to fetching when prefetched security data is malformed.
Overview
Fixes Token Details security UI missing when navigating from Swap/Bridge by validating prefetchedData at runtime in useTokenSecurityData (requires resultType string and features array) and treating invalid shapes as absent so the hook fetches via fetchTokenAssets.
Adds a regression test covering the Bridge-style wrong-shaped data to ensure the hook ignores it and fetches correct security data instead.
Reviewed by Cursor Bugbot for commit 2e9c4c8. Bugbot is set up for automated code reviews on this repo. Configure here.
Selected Performance tags: None (no tests recommended)
Risk Level: low
AI Confidence: 95%
click to see 🤖 AI reasoning details
E2E Test Selection:
The changes are limited to two files: useTokenSecurityData.ts (the hook implementation) and its test file. The fix adds a isValidTokenSecurityData validation guard to handle cases where prefetchedData has an incorrect shape (e.g., Bridge SecurityData { type: "Verified" } vs expected { resultType: string, features: array[] }). When invalid data is detected, the hook falls back to fetching fresh data.
This is a pure unit-level bug fix:
Only one consumer exists: TokenDetails.tsx (a detail view component)
No E2E test suite covers token security data validation specifically
The fix is defensive/additive - it improves robustness without changing the happy path
No core flows (swap, send, confirmations, accounts, network) are affected
The change is fully covered by the new unit test added in the same PR
No E2E tags are warranted for this isolated hook fix.
Performance Test Selection:
The change adds a simple validation check (isValidTokenSecurityData) that runs once when the hook initializes. This has negligible performance impact - it's a few property type checks on an object. No performance tests are needed.
sahar-fehri
changed the title
fix: validate type of security data in token details and fetch when necessary
fix: validate type of security data in token details and fetch when necessary cp-7.76.0
May 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Bug
When navigating from the Swap/Bridge "Select token" screen to Token Details via the (i) icon, security info (badge, SecurityTrustEntryCard, warning banners) is missing.
Root Cause
The Bridge
/getTokens/popularAPI returns security data in a different shape({ type: "Verified" })than what Token Details expects({ resultType: "Verified", features: [...], ... }). When navigating, the entire token object — including this wrong-shaped securityData — is spread into route params.useTokenSecurityDatasees it astruthyprefetched data, skips its own API call, and the UI reads resultType / features → undefined → nothing renders.Fix
Added a runtime type guard in
useTokenSecurityDatathat validatesprefetchedDatahas the requiredresultType(string) and features (array) before trusting it. If the shape is invalid, the hook falls through tofetchTokenAssets()and gets the full, correctly-shaped data.Changelog
CHANGELOG entry: Fixed security badges and trust info now display correctly on Token Details when navigating from the Swap token selector.
Related issues
Fixes:
Manual testing steps
Screenshots/Recordings
Before
Screen.Recording.2026-05-06.at.14.34.01.mov
After
Screen.Recording.2026-05-06.at.14.32.27.mov
Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Note
Low Risk
Low risk: adds a small runtime type guard and a focused test to ensure
useTokenSecurityDatafalls back to fetching when prefetched security data is malformed.Overview
Fixes Token Details security UI missing when navigating from Swap/Bridge by validating
prefetchedDataat runtime inuseTokenSecurityData(requiresresultTypestring andfeaturesarray) and treating invalid shapes as absent so the hook fetches viafetchTokenAssets.Adds a regression test covering the Bridge-style wrong-shaped data to ensure the hook ignores it and fetches correct security data instead.
Reviewed by Cursor Bugbot for commit 2e9c4c8. Bugbot is set up for automated code reviews on this repo. Configure here.