React5 min read

React Performance - useMemo

Optimize performance by memoizing expensive calculations with useMemo.

Sarah Johnson
December 20, 2025
0.0k0

useMemo caches expensive calculations to improve performance.

Problem - Expensive Calculation

function App() {
  const [count, setCount] = useState(0);
  const [input, setInput] = useState('');

  // Runs on every render!
  const expensiveResult = calculateExpensive(count);

  return <div>{expensiveResult}</div>;
}

Solution - useMemo

import { useMemo } from 'react';

function App() {
  const [count, setCount] = useState(0);
  const [input, setInput] = useState('');

  const expensiveResult = useMemo(() => {
    return calculateExpensive(count);
  }, [count]); // Only recalculates when count changes

  return <div>{expensiveResult}</div>;
}

Filtering Example

function UserList({ users }) {
  const [search, setSearch] = useState('');

  const filteredUsers = useMemo(() => {
    return users.filter(user =>
      user.name.toLowerCase().includes(search.toLowerCase())
    );
  }, [users, search]);

  return (
    <div>
      <input value={search} onChange={e => setSearch(e.target.value)} />
      {filteredUsers.map(user => <p key={user.id}>{user.name}</p>)}
    </div>
  );
}

Remember

  • Use for expensive calculations
  • Specify dependencies
  • Don't overuse (has overhead)

Next: Learn useCallback!

#React#Performance#useMemo#Intermediate