Skip to content

Conversation

sneurlax
Copy link

@sneurlax sneurlax commented Sep 4, 2025

Closes #4500.

Without this feature, opening a wallet with many subaddresses causes severe lag and impacts usability. This change introduces optional pagination to the subaddresses in the Receive tab.

To reproduce the issue, create a wallet with many addresses in monero-wallet-cli. For example, using:

address mnew 1000

30+ times in monero-wallet-cli will create a wallet with 30,001 addresses (like a very active BTCPay wallet). Before this feature and without it enabled (disabled by default), the app will lag on a performant PC when navigating to the Receive page. With this feature, it shows a "Loading addresses..." message while loading the first "page" of addresses. As a Quality of Life (QoL) feature, a "Scroll to bottom" button allows loading all remaining addresses at once.

  • Add pagination support to the Subaddress backend.
  • Add "Enable subaddress pagination" setting to Interface section.
  • When pagination is disabled (default): behaves exactly like original GUI.
  • When pagination is enabled:
    • Load first 100 subaddresses (the default page size) initially.
    • "Scroll to bottom" button loads all remaining addresses.
    • Loading footer shows progress during fetch operations.

Previously, opening a wallet with many subaddresses would cause severe lag and impact usability.  This change introduces pagination to the subaddresses in the Receive tab.

To reproduce the issue, create a wallet with many addresses in monero-wallet-cli.  For example, using:
```
address mnew 1000
```
30+ times in monero-wallet-cli will create a wallet with 30,001 addresses (like a very active BTCPay wallet).  Without this feature, the app will lag on a performant PC.  With this feature, it shows a "Loading addresses..." message while loading the first "page" of addresses.  As a Quality of Life (QoL) feature, a "Scroll to bottom" button allows loading all remaining addresses at once.

  - Add pagination support to the Subaddress backend.
  - Add "Enable subaddress pagination" setting to Interface section.
  - When pagination is disabled (default): behaves exactly like original GUI.
  - When pagination is enabled:
    - Load first 100 subaddresses initially.
    - "Scroll to bottom" button loads all remaining addresses.
    - Loading footer shows progress during fetch operations.
@selsta
Copy link
Collaborator

selsta commented Sep 8, 2025

Load first 100 subaddresses (the default page size) initially.

Is it possible to make this dynamic? Because on a smaller screen you now have two different ways to scroll, basically I would have to scroll both on the outer and inner layer to the bottom.

Screensho

@sneurlax
Copy link
Author

Load first 100 subaddresses (the default page size) initially.

Is it possible to make this dynamic? Because on a smaller screen you now have two different ways to scroll, basically I would have to scroll both on the outer and inner layer to the bottom.

Screensho

Yes, I noticed that but accepted it. It's definitely possible to make it dynamic to try and fit the window size to try to only get one scrollable section

I wonder how or if to try to resize that dynamically as the window is resized, though. I'd appreciate any more details / specificity you can provide if you'd be so kind as to expound upon what you'd like to see

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Bug: Receive page lags or hangs for large wallets
2 participants