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?