| name | react-rendering-optimization |
| description | React rendering optimization patterns — memoization, derived state, static hoisting, conditional rendering, caching. Use when reviewing or optimizing React component render performance. |
React Rendering Optimization
Patterns to reduce unnecessary computation and re-creation during React renders.
1. Don't Wrap Simple Expressions in useMemo
When an expression is simple and returns a primitive (boolean, number, string), useMemo overhead exceeds the expression cost.
Bad:
const isLoading = useMemo(() => {
return user.isLoading || notifications.isLoading;
}, [user.isLoading, notifications.isLoading]);
Good:
const isLoading = user.isLoading || notifications.isLoading;
2. Extract Default Non-Primitive Parameters to Constants
Default non-primitive values in memoized components create new instances every render, breaking memo().
Bad:
const UserAvatar = memo(function UserAvatar({ onClick = () => {} }: { onClick?: () => }) {
})