bug: hidden reserves are still offered as collateral swap targets
Maintainers usually reply within 1 day
@shivam-V8 is already working on this.
Since Oct 11, 2026.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 88/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- react, typescript
Research direction
Read getTokensTo in src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx and compare its filter with src/modules/dashboard/lists/SupplyAssetsList/SupplyAssetsList.tsx and src/modules/dashboard/lists/Swap/modals/request/DebtSwapModalContent.tsx. Check how isAssetHidden receives the current market, then verify hidden reserves are excluded from collateral swap destinations while the existing frozen, paused, and GHO rules still apply.
Written by the indexing model from the issue text.
Description
Describe the bug
Reserves hidden via HIDDEN_ASSETS or the NEXT_PUBLIC_HIDDEN_RESERVES environment variable are still offered as destination assets in the collateral swap modal. Every other asset list in the app filters them out, including the neighbouring debt-swap modal, so this one list is the outlier.
getTokensTo in src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx:217-221 filters only on frozen/paused and the GHO rule:
const tokensToSupply = reserves.filter(
(reserve: ComputedReserveData) =>
!(reserve.isFrozen || reserve.isPaused) &&
!displayGhoForMintableMarket({ symbol: reserve.symbol, currentMarket: currentMarket })
);
The supply list applies the same predicate plus the hidden check (src/modules/dashboard/lists/SupplyAssetsList/SupplyAssetsList.tsx:85-91):
const tokensToSupply = reserves
.filter(
(reserve: ComputedReserveData) =>
!(reserve.isFrozen || reserve.isPaused) &&
!displayGhoForMintableMarket({ symbol: reserve.symbol, currentMarket }) &&
!isAssetHidden(currentMarketData.market, reserve.underlyingAsset)
)
isAssetHidden is defined at src/modules/dashboard/lists/constants.ts:39 and is applied consistently elsewhere — BorrowAssetsList.tsx:104, BorrowedPositionsList.tsx:111, SuppliedPositionsList.tsx:101, MarketAssetsListContainer.tsx:90, and Swap/modals/request/DebtSwapModalContent.tsx:173. Only the collateral-swap target list omits it.
To Reproduce
Steps to reproduce the behavior:
- Deploy (or run locally) with a reserve address listed in
NEXT_PUBLIC_HIDDEN_RESERVES, or use a market with an entry inHIDDEN_ASSETS(e.g. aCRED on Horizon) - Confirm the reserve is correctly absent from "Assets to supply" on the Dashboard
- Open a supplied position's Swap (collateral swap) modal
- Open the destination token selector
- The hidden reserve is listed and can be selected as the swap target
Expected behavior
A reserve hidden by HIDDEN_ASSETS or NEXT_PUBLIC_HIDDEN_RESERVES should not be offered as a collateral-swap destination, matching the supply list and the debt-swap modal.
Screenshots
n/a — reproducible from the source as described above.
Desktop (please complete the following information):
- OS: any
- Browser: any (not browser-specific)
- Version:
main@ 32cc548b9
Smartphone (please complete the following information):
- Device: any
- OS: any
- Browser: any (same code path)
- Version:
main@ 32cc548b9
Additional context
The fix is to add !isAssetHidden(currentMarket, reserve.underlyingAsset) to that filter, mirroring DebtSwapModalContent. One detail: getTokensTo's currentMarket parameter is currently typed string while isAssetHidden takes a CustomMarket; the value passed in is store.currentMarket, which is already a CustomMarket, so the parameter type can simply be narrowed — again matching the debt-swap modal, which types it CustomMarket. Happy to open a PR.
- Dominant language
- TypeScript
- Stars
- 537
- Forks
- 495
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 15
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from aave/interface
-
bug: the current market is missing from the market switcher when it is a legacy marketPossibly taken @shivam-V8 claimed this 3 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
bug: market switcher search reports "No markets found" for legacy marketsPossibly taken @shivam-V8 claimed this 3 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Staking: "Claim all" Umbrella rewards button removed by v3 upliftPossibly taken @MrMichou claimed this 4 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 1 day
-
Typo: Principle Tokens -> Principal TokensPossibly taken @Shivamd0608 claimed this 141 days ago. Openbug new issue
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
aave/interface#2861 · 2 comments ·
Maintainers usually reply within 1 day
-
app.aave.com/governance - UI - False 'Payload Executed' Text StampPossibly taken @shivam-V8 claimed this 3 days ago. Openbug new issue
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
aave/interface#2480 · 1 comment ·
Maintainers usually reply within 1 day
Similar issues
-
Add: VIVE TVOpenapproved check:passed streams:add
Difficulty 1/5 Under an hour Newbie friendliness 72/100
iptv-org/iptv#55293 · 1 comment ·
Maintainers usually reply within 1 day
-
bug needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Fission-AI/OpenSpec#2084 ·
Maintainers usually reply within 2 days
-
Contrib indemnité de départ à la retraite : faire le pont avec le simulateur sur la page génériqueOpenP1
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
SocialGouv/code-du-travail-numerique#7561 ·
Maintainers usually reply within 1 day
-
beginner bug
Difficulty 1/5 Under an hour Newbie friendliness 88/100
hiero-ledger/hiero-sdk-js#4517 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
kubernetes-sigs/headlamp#7950 ·
Maintainers usually reply within 3 days