Skip to content

feat: add pagination on the Receive page (optional) - #4501

Closed
sneurlax wants to merge 1 commit into
monero-project:masterfrom
sneurlax:feat/subaddress-pagination
Closed

feat: add pagination on the Receive page (optional)#4501
sneurlax wants to merge 1 commit into
monero-project:masterfrom
sneurlax:feat/subaddress-pagination

Conversation

@sneurlax

@sneurlax sneurlax commented Sep 4, 2025

Copy link
Copy Markdown

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

selsta commented Sep 8, 2025

Copy link
Copy Markdown
Collaborator

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
Copy Markdown
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

@plowsof

plowsof commented Sep 25, 2025

Copy link
Copy Markdown
Contributor

Reg "dynamic" - i am no QT dev, but i also attempted through blood sweat and tears to add some kind of dynamic resizing and failed. #3868 is related as this would also benefit from that.

@selsta

selsta commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

I have opened an alternative here: #4667

It avoids a new pagination setting while still being performant.

@sneurlax

Copy link
Copy Markdown
Author

Thanks selsta, this can be closed!

@sneurlax sneurlax closed this Jul 21, 2026
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

3 participants