diff --git a/src/components/SelectionListWithModal/index.tsx b/src/components/SelectionListWithModal/index.tsx index a83886294e24..821735849147 100644 --- a/src/components/SelectionListWithModal/index.tsx +++ b/src/components/SelectionListWithModal/index.tsx @@ -46,21 +46,26 @@ function SelectionListWithModal({ // This gives FlashList time to properly update its layout cache when searching/filtering const [, debouncedData, setDataState] = useDebouncedState(data, CONST.TIMING.SEARCH_OPTION_LIST_DEBOUNCE_TIME); + // Determine if this is changed by filtering (to limit multiple rerenders) + const isFiltering = data.length < debouncedData.length; + useEffect(() => { setDataState(data); }, [data, setDataState]); + const displayData = isFiltering ? debouncedData : data; + const selectedItems = useMemo( () => selectedItemsProp ?? - debouncedData.filter((item) => { + displayData.filter((item) => { if (isSelected) { return isSelected(item); } return !!item.isSelected; }) ?? [], - [isSelected, debouncedData, selectedItemsProp], + [isSelected, displayData, selectedItemsProp], ); useHandleSelectionMode(selectedItems); @@ -96,7 +101,7 @@ function SelectionListWithModal({ <>