Anti-patterns:
1. Anonymous functions in render:
1// New function each render2<Child onClick={() => doSomething()} />3// Memoized4const handleClick = useCallback(() => doSomething(), []);5<Child onClick={handleClick} />
2. Inline objects/arrays:
1// New reference each render2<Child style={{ color: "red" }} />3// Memoized4const style = useMemo(() => ({ color: "red" }), []);
3. Context overuse: Split contexts, use selectors.
4. Unnecessary re-renders: Use React.memo, avoid state in unnecessary places, lift state only when needed.