useState owns local state directly. useOptimistic represents temporary expected state while an async action is pending.