useOptimistic manages optimistic UI state. The app still performs the actual async operation and error handling.