What is Reselect and memoized selectors?
Answer
Reselect is a library for creating memoized, composable selectors for Redux. A memoized selector caches the last computation — if inputs haven't changed, it returns the cached result without recomputing. Basic usage: const selectFilteredTodos = createSelector( [selectAllTodos, selectFilter], (todos, filter) => { console.log("Computing..."); return todos.filter(t => t.status === filter); } );. If todos and filter haven't changed, console.log doesn't run. Why it matters: without memoization, a selector running filter() every render creates a new array reference — useSelector would trigger a re-render even if the filtered result is identical. Reselect v5 (RTK default): includes createSelectorCreator for custom memoization, and supports weakly-referenced caches. Best practices: create granular selectors and compose them, always use memoized selectors for derived data, define selectors in the slice file alongside the reducer for co-location.