Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

bug: hidden reserves are still offered as collateral swap targets

Open Beginner friendly
#3,131 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@shivam-V8 is already working on this.

Since Oct 11, 2026.

  • #3126 by @shivam-V8 — open
  • #3129 by @shivam-V8 — open
  • #3130 by @shivam-V8 — open
  • #3132 by @shivam-V8 — open
  • #3136 by @shivam-V8 — open

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
Domain
frontend, web-dev

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:

  1. Deploy (or run locally) with a reserve address listed in NEXT_PUBLIC_HIDDEN_RESERVES, or use a market with an entry in HIDDEN_ASSETS (e.g. aCRED on Horizon)
  2. Confirm the reserve is correctly absent from "Assets to supply" on the Dashboard
  3. Open a supplied position's Swap (collateral swap) modal
  4. Open the destination token selector
  5. 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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from aave/interface

All issues in aave/interface

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.