nextcloud / nextcloud/talk-desktop
Performance issue on HiDPI displays / RDP: full window repaint on chat switch causes very slow UI
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 525
- Forks
- 85
- Avg merge
- 8h 5m
- Merged PRs (30d)
- 35
Description
Performance issue on HiDPI displays / RDP: full window repaint on chat switch causes very slow UI
Description
The desktop client becomes very sluggish on Windows when running on a HiDPI display (or over RDP with HiDPI scaling).
The issue is most noticeable when:
- switching between conversations;
- opening Settings;
- navigating through the application.
The delay is caused by UI rendering rather than network activity or JavaScript execution.
Environment
- Nextcloud Talk Desktop: 2.2.0
- Electron: 41
- Windows 10 (VM)
- Official desktop client
- Connection via Microsoft Remote Desktop (also reproducible using the native Windows RDP client from another Windows PC with a 4K monitor)
Expected behavior
Switching between chats and opening dialogs should remain responsive regardless of display scaling.
Actual behavior
The UI becomes noticeably sluggish on HiDPI displays.
Examples:
- switching chats takes a noticeable amount of time;
- opening Settings is slow;
- overall navigation feels delayed.
CPU usage remains relatively low and the VM has plenty of available resources.
Investigation
I tried a number of Electron/Chromium flags:
--disable-gpu--use-angle=d3d11--use-angle=d3d11on12--use-vulkan=swiftshader--enable-features=Vulkan--disable-features=UseSkiaRenderer--enable-features=UseSkiaRenderer
None of them produced any significant improvement.
The only option that has a dramatic effect is:
--force-device-scale-factor=1
With this option the application becomes much more responsive.
However, the UI becomes too small to use comfortably.
Even values like:
--force-device-scale-factor=1.5
already make the UI noticeably slower again.
DevTools observations
Using Rendering → Paint Flashing, switching between conversations repaints almost the entire application window instead of only the updated content area.
This seems consistent across navigation actions (chat switching, opening Settings, etc.).
This suggests that the bottleneck may be excessive repaint/compositing of the whole window on HiDPI displays rather than JavaScript execution.
Additional information
The application bundle contains the standard Electron rendering libraries:
libEGL.dlllibGLESv2.dlld3dcompiler_47.dllvk_swiftshader.dllvulkan-1.dll
Disabling Windows visual effects has no measurable impact on performance.
Since reducing the device scale factor almost completely removes the issue, it appears that rendering cost scales heavily with HiDPI resolution.
Just to add:
v2.1.2 doesn't lag
v2.2.0 lags
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the slowdown in Electron 41 on Windows at HiDPI scaling, using DevTools Rendering → Paint Flashing while switching chats and opening Settings. Compare behavior with version 2.1.2 and 2.2.0, and verify that navigation remains responsive without forcing a smaller device scale factor while limiting repainting to changed content.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, javascript
- Domain
- desktop, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 38/100