[PR #5921] Add virtualizer to mobile transactions #6211

Closed
opened 2026-02-28 21:25:21 -06:00 by GiteaMirror · 0 comments
Owner

Original Pull Request: https://github.com/actualbudget/actual/pull/5921

State: closed
Merged: Yes


This PR introduces Virtualizer from react-aria-components to the mobile transactions list.

Why:

  • Performance: Improves performance and responsiveness for large transaction lists by only rendering visible items.
  • Consistency: Aligns the implementation with the existing pattern used in the mobile rules page, ensuring a consistent approach to list virtualization across the mobile interface.

What:

  • Replaced the ListBox component with Virtualizer and GridList.
  • Restructured the transaction data into a flat list of items, including both date headers and individual transactions, to work with GridList.
  • Maintained sticky date headers and all existing functionality (selection, loading, empty states).

Open in Cursor Open in Web

**Original Pull Request:** https://github.com/actualbudget/actual/pull/5921 **State:** closed **Merged:** Yes --- <!-- Thank you for submitting a pull request! Make sure to follow the instructions to write release notes for your PR — it should only take a minute or two: https://github.com/actualbudget/docs#writing-good-release-notes. Try running yarn generate:release-notes *before* pushing your PR for an interactive experience. --> This PR introduces `Virtualizer` from `react-aria-components` to the mobile transactions list. **Why:** - **Performance:** Improves performance and responsiveness for large transaction lists by only rendering visible items. - **Consistency:** Aligns the implementation with the existing pattern used in the mobile rules page, ensuring a consistent approach to list virtualization across the mobile interface. **What:** - Replaced the `ListBox` component with `Virtualizer` and `GridList`. - Restructured the transaction data into a flat list of items, including both date headers and individual transactions, to work with `GridList`. - Maintained sticky date headers and all existing functionality (selection, loading, empty states). --- <a href="https://cursor.com/background-agent?bcId=bc-686d9249-2564-4d17-b255-0f14a07ac807"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-cursor-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-cursor-light.svg"><img alt="Open in Cursor" src="https://cursor.com/open-in-cursor.svg"></picture></a>&nbsp;<a href="https://cursor.com/agents?id=bc-686d9249-2564-4d17-b255-0f14a07ac807"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-web-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-web-light.svg"><img alt="Open in Web" src="https://cursor.com/open-in-web.svg"></picture></a>
GiteaMirror added the pull-request label 2026-02-28 21:25:21 -06:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#6211