useMutation
Returns mutate (fire-and-forget) and mutateAsync (awaitable). No onSuccess
refetch and no key — the client's declared relations refetch the watching query
for you:
import { useMutation } from '@tahanabavi/typefetch-react'
function RenameButton({ id }: { id: string }) {
const rename = useMutation(api.modules.user.updateUser)
return (
<button
disabled={rename.isPending}
onClick={() => rename.mutate({ path: { id }, body: { name: 'Ada' } })}
>
{rename.isPending ? 'saving…' : 'rename'}
</button>
)
}Because the engine is transport-agnostic, the same hook drives a typesocket
acked event — useMutation(socket.modules.chat.sendMessage) is just another
source, in the same cache.