Q29: How do you implement Optimistic UI updates with the useOptimistic Hook in React 19?

React 19's useOptimistic hook allows immediately displaying an optimistic state result to users while a server background mutation is pending. If the network request fails, React rolls back the state automatically.

React 19 useOptimistic Hook Usage
import { useOptimistic } from 'react';

function Thread({ messages, sendMessage }) {
  const [optimisticMessages, addOptimisticMessage] = useOptimistic(
    messages,
    (state, newText) => [...state, { text: newText, sending: true }]
  );

  const formAction = async (formData) => {
    const text = formData.get('message');
    addOptimisticMessage(text); // Immediately update UI
    await sendMessage(text);     // Perform actual network mutation
  };
}
💡 useOptimistic immediately appends the pending message to state while sendMessage executes.
Key Takeaways
  • Improves perceived latency by rendering expected mutation responses immediately.
  • Rolls back state safely if the background network action fails.
Knowledge Check

What primary user experience benefit does Optimistic UI provide?