WebUI: Make virtual table rendering the default #17514

Open
opened 2026-02-22 03:52:28 -05:00 by deekerman · 9 comments
Owner

Originally created by @Piccirello on GitHub (Feb 19, 2026).

Virtual rendering (#22502) provides a performance boost by only rendering the rows that are visible on screen (plus some buffer). The performance improvement is particularly notable when a user has thousands of torrents, or when an individual torrent has thousands of files. Virtual rendering has been supported by all tables since #23544.

I'd like to use this issue to track any blockers to making virtual rendering the default in the WebUI. Once all known issues are resolved, we should switch to virtual rendering and remove the non-virtual implementation.

Known issues:

Originally created by @Piccirello on GitHub (Feb 19, 2026). Virtual rendering (#22502) provides a performance boost by only rendering the rows that are visible on screen (plus some buffer). The performance improvement is particularly notable when a user has thousands of torrents, or when an individual torrent has thousands of files. Virtual rendering has been supported by all tables since #23544. I'd like to use this issue to track any blockers to making virtual rendering the default in the WebUI. Once all known issues are resolved, we should switch to virtual rendering and remove the non-virtual implementation. Known issues: - [ ] https://github.com/qbittorrent/qBittorrent/pull/23860 - [ ] https://github.com/qbittorrent/qBittorrent/pull/23861 - [ ] https://github.com/qbittorrent/qBittorrent/pull/23865
Author
Owner

@Piccirello commented on GitHub (Feb 19, 2026):

cc @tehcneko @HanabishiRecca @sk0merko

@Piccirello commented on GitHub (Feb 19, 2026): cc @tehcneko @HanabishiRecca @sk0merko
Author
Owner

@HanabishiRecca commented on GitHub (Feb 19, 2026):

Never used it due to being broken in Firefox, so can't comment on that.

@HanabishiRecca commented on GitHub (Feb 19, 2026): Never used it due to being broken in Firefox, so can't comment on that.
Author
Owner

@tehcneko commented on GitHub (Feb 20, 2026):

Never used it due to being broken in Firefox, so can't comment on that.

I think #23861 should fix that?

I was going to open a pull request to enable it by default since 5.2 was branched, hoping people could test it more. I don't know if this is a good idea, though.

@tehcneko commented on GitHub (Feb 20, 2026): > Never used it due to being broken in Firefox, so can't comment on that. I think #23861 should fix that? I was going to open a pull request to enable it by default since 5.2 was branched, hoping people could test it more. I don't know if this is a good idea, though.
Author
Owner

@HanabishiRecca commented on GitHub (Feb 20, 2026):

I think #23861 should fix that?

Maybe, I reported it back in the original PR https://github.com/qbittorrent/qBittorrent/pull/22502#issuecomment-2817328814

@HanabishiRecca commented on GitHub (Feb 20, 2026): > I think #23861 should fix that? Maybe, I reported it back in the original PR https://github.com/qbittorrent/qBittorrent/pull/22502#issuecomment-2817328814
Author
Owner

@Piccirello commented on GitHub (Feb 20, 2026):

I think #23861 should fix that?

Maybe, I reported it back in the original PR #22502 (comment)

#23861 does fix that issue you originally reported. I've tested virtual rows on Firefox and couldn't find any other issues, besides that and #23860. Please test and let me know if you run into anything else.

I was going to open a pull request to enable it by default since 5.2 was branched, hoping people could test it more. I don't know if this is a good idea, though.

I think enabling it by default in master makes sense, once the two PRs above are merged. That'll give us ample time to test before 5.3 is branched. Ultimately we'll want to fully remove the non-virtual logic before 5.3 is branched so that virtual rows are the only supported implementation.

@Piccirello commented on GitHub (Feb 20, 2026): > > I think [#23861](https://github.com/qbittorrent/qBittorrent/pull/23861) should fix that? > > Maybe, I reported it back in the original PR [#22502 (comment)](https://github.com/qbittorrent/qBittorrent/pull/22502#issuecomment-2817328814) #23861 does fix that issue you originally reported. I've tested virtual rows on Firefox and couldn't find any other issues, besides that and #23860. Please test and let me know if you run into anything else. > I was going to open a pull request to enable it by default since 5.2 was branched, hoping people could test it more. I don't know if this is a good idea, though. I think enabling it by default in master makes sense, once the two PRs above are merged. That'll give us ample time to test before 5.3 is branched. Ultimately we'll want to fully remove the non-virtual logic before 5.3 is branched so that virtual rows are the only supported implementation.
Author
Owner

@HanabishiRecca commented on GitHub (Feb 20, 2026):

Another issue I found (with the patches applied): keyboard arrow navigation doesn't work.

@HanabishiRecca commented on GitHub (Feb 20, 2026): Another issue I found (with the patches applied): keyboard arrow navigation doesn't work.
Author
Owner

@Piccirello commented on GitHub (Feb 20, 2026):

I was able to partially reproduce. Up/down navigation works at first, but only until rows are updated (e.g. next /files fetch). Left/right in the content table doesn't work at all.

@Piccirello commented on GitHub (Feb 20, 2026): I was able to partially reproduce. Up/down navigation works at first, but only until rows are updated (e.g. next `/files` fetch). Left/right in the content table doesn't work at all.
Author
Owner

@HanabishiRecca commented on GitHub (Feb 20, 2026):

Actually yes, it works until the first update. Hardly noticable with 1 second update interval though.

@HanabishiRecca commented on GitHub (Feb 20, 2026): Actually yes, it works until the first update. Hardly noticable with 1 second update interval though.
Author
Owner

@Piccirello commented on GitHub (Feb 20, 2026):

Fixed in #23865

@Piccirello commented on GitHub (Feb 20, 2026): Fixed in #23865
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/qBittorrent#17514
No description provided.