nextcloud / nextcloud/spreed

Chat rendering performance

Open
#15,571 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature: frontend 🖌️ Needs triage performance 🚀
Dominant language
JavaScript
Stars
2.2k
Forks
586
Avg merge
18h 27m
Merged PRs (30d)
333

Description

Steps to reproduce

  1. Try to re-render a chat
  2. See performance report
  3. Recalculate style triggers Forced reflow, which delays re-rendering of new frame

  1. Recalculate style -> NcActions -> useElementBounding
  • Check upstream, if possible to avoid
  • temporary - comment out TopBarMenu component
  1. Recalculate style -> MessagesList -> checkChatNotScrollable
  • Check, if could be delayed / moved to nextTick
  • temporary - comment out method
  1. Recalculate style -> Mention -> mounted
  • Check, if CSS transform is good enough to adjust height
  • Check upstream, if inline-size prop can be implememented
  • temporary - set to fixed value

With temporary solutions task takes ~630ms
Without temporary solutions - ~660ms

Not a big win, but feels like we can benefit from avoiding sync recalculate

Image

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the performance report and inspect the three listed paths: NcActions/useElementBounding, MessagesList/checkChatNotScrollable, and Mention/mounted. Check the relevant upstream behavior and whether the suggested delayed or fixed-value alternatives are viable. Done means reducing synchronous style recalculation during chat re-rendering and comparing the result with the reported ~630–660ms timings.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.