feat: show skeleton when loading NFT images#27413
Conversation
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.
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: Although no core Engine, Controller, or network logic was modified, these components are part of the wallet’s primary asset display surface. Rendering issues, broken media loading, or layout regressions could affect the wallet home and asset views, which are covered under SmokeWalletPlatform (core wallet platform features and asset display). There are no changes affecting:
Thus, only SmokeWalletPlatform is required for safe validation. Performance Test Selection: |
|
|
✅ E2E Fixture Validation — Schema is up to date |




Description
NFT images in the grid had no loading indicator — the cell would appear empty until the image finished loading. This PR adds a skeleton overlay that shows immediately when an NFT item has an image URL, then disappears once the image loads or fails.
Changes:
NftGridItem: Tracks a localisImageLoadingstate (true whenitem.imageoritem.imageOriginalis set). Renders aSkeletonoverlay on the image cell untilonLoadfires. Resets correctly when the item changes.CollectibleMedia+CollectibleMedia.types: Adds anonLoadprop wired through toRemoteImage. Also calls it in the error fallback so the skeleton always clears even when an image fails to load.RemoteImage: Adds anonLoadprop called from the internalonImageLoadhandler. AddsrecyclingKey={uri}to expo-imageImagecomponents so cached images are reused correctly when URIs change.NftGrid: ImproveskeyExtractorfrom an array-index key to a stable${chainId}-${address}-${tokenId}key, preventing unnecessary re-renders when the list updates.Changelog
CHANGELOG entry: Added skeleton loading indicator to NFT grid items while images are loading
Related issues
Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-2903
Manual testing steps
Screenshots/Recordings
Before
Screen.Recording.2026-03-16.at.12.50.36.mov
After
Screen.Recording.2026-03-16.at.12.37.24.mov
Pre-merge author checklist
Pre-merge reviewer checklist
Note
Medium Risk
Touches NFT grid rendering by adding loading state/skeleton overlays and changing list keys, which can affect perceived UI behavior and item reuse. Also propagates new
onLoadcallbacks through image components, so regressions would mainly be around image lifecycle events and re-rendering.Overview
Adds a skeleton loading overlay to
NftGridItemthat shows when an NFT has an image (and media display is enabled) and hides when the underlying media reportsonLoad.Threads a new
onLoadcallback throughCollectibleMedia→RemoteImage, and ensures the callback also fires on image error fallback so the skeleton clears even when an image fails.RemoteImagenow setsrecyclingKey={uri}onexpo-imageinstances and invokes the newonLoadprop from its internal load handler.Updates
NftGridto use a stablekeyExtractor(chainId-address-tokenId) instead of index keys, and adds/updates unit tests covering the newonLoadbehavior and skeleton visibility.Written by Cursor Bugbot for commit e382cc8. This will update automatically on new commits. Configure here.