Skip to content

fix: promote scroll containers to their own composite layers.#56

Open
sortedcord wants to merge 1 commit into
mskayyali:mainfrom
sortedcord:raster-fix2
Open

fix: promote scroll containers to their own composite layers.#56
sortedcord wants to merge 1 commit into
mskayyali:mainfrom
sortedcord:raster-fix2

Conversation

@sortedcord
Copy link
Copy Markdown
Contributor

@sortedcord sortedcord commented May 16, 2026

This PR fixes #54

I've applied will-change: transform to the scroll containers in tiling-area.tsx and kanban-area.tsx so it's explicitly instructing the browser to promote these elements to their own GPU compositor layers before interaction happens. This ensures scrolling runs entirely on the compositor thread and prevents expensive re-rasterization during UI navigation. And sure enough nodepad scrolls at 60 fps even on low end devices:

image

While this might not be very visible on systems made after 2020 or something it would however cause a decrease in cpu spike while using nodepad when scrolling with lots of nodes.

image

(As expected, barely any frames missing vsync deadlines)

@sortedcord
Copy link
Copy Markdown
Contributor Author

sortedcord commented May 17, 2026

I've figured out a few other areas where we can potentially gain performance like:

  • Memoizing the ReactMarkdown component as right now, it re-renders on every parent render including hover state changes (the annotation re-renders on every keystroke right now)
  • Replace transition-all with specific properties, for example with something like transition-[opacity,box-shadow,border-color] depending on what is needed

If you want I can include those changes as well in this PR.

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.

Performance degradation and scroll bottlenecks on Kanban and Tiling areas

1 participant