Hi, I'm a Redux maintainer. This is a good post, but I'm a bit surprised it doesn't talk about memoized selector functions at all. We specifically teach those as a way to improve performance, by avoiding costly transformations and consistently returning the same result reference until the inputs change:<p>- <a href="https://redux.js.org/tutorials/essentials/part-6-performance-normalization#improving-render-performance" rel="nofollow">https://redux.js.org/tutorials/essentials/part-6-performance...</a><p>- <a href="https://redux.js.org/tutorials/fundamentals/part-7-standard-patterns#memoized-selectors" rel="nofollow">https://redux.js.org/tutorials/fundamentals/part-7-standard-...</a><p>- <a href="https://redux.js.org/usage/deriving-data-selectors" rel="nofollow">https://redux.js.org/usage/deriving-data-selectors</a><p>Use of `React.memo()` also helps in cases like the large list, especially if you're only passing down the item ID as props to the list item components and letting them select their own data based on that ID.<p>Also, as of Reselect 4.1, there are some additional options built into `createSelector` for doing comparisons, such as an option that can do a shallow equality check on the _new_ result, and stick with the _old_ result if they're the same:<p>- <a href="https://github.com/reduxjs/reselect#defaultmemoizefunc-equalitycheckoroptions--defaultequalitycheck">https://github.com/reduxjs/reselect#defaultmemoizefunc-equal...</a>