Add React.memo to FilteredActionList for effective useDeferredValue performance #7414
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.
useDeferredValuerequires memoization to prevent synchronous re-renders. WithoutReact.memo, the deferred value provides no performance benefit—React still re-renders the entire list while typing.Changes
Created
FilteredActionListItemsmemoized componentReact.memo-wrapped componentdeferredItemsand stable props (getItemListForEachGroupalready has empty deps)Refactored component structure
MappedActionListItembeforeFilteredActionListfor availabilitygetBodyContent()to render memoized componentitemsstill used for Enter key handling (unchanged)Pattern follows
Autocomplete's approach withuseMemoanddeferredInputValue.Changelog
Changed
FilteredActionListnow uses memoized list rendering for better typing performance with large item listsRollout strategy
Testing & Reviewing
Test typing performance in
FilteredActionListstories with large item lists (100+ items). Input should remain responsive while list updates with deferred priority.Merge checklist
Original prompt
This pull request was created from Copilot chat.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.