perf(desktop): use useDeferredValue in Markdown#2953
Open
HUQIANTAO wants to merge 1 commit into
Open
Conversation
…long renders The Markdown component parses and renders the full text synchronously via react-markdown. For very long assistant responses (e.g. a multi-page code explanation with tables and math), this can block the main thread for 50-100ms during the final markdown pass after streaming completes. Wrap the text input in useDeferredValue so React can: 1. Prioritise the plain-text streaming frame (which is already fast) 2. Abort an in-progress markdown render if a new delta arrives 3. Yield to high-priority updates (scroll, input) during the parse This is especially effective for the transition from streaming (plain text) to complete (markdown): the deferred value lets React start the markdown parse in the background while keeping the cursor and scroll responsive.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wrap Markdown text in
useDeferredValueso React prioritises input/scroll over expensive markdown parse during the streaming→complete transition.