Skip to main content
Mutation hook for signing a transaction without broadcasting it. Produces a signed serialized transaction that can be submitted later or inspected by permissions/transaction-review flows.
Requires @getpara/viem-v2-integration and viem as peer dependencies.
Get the viemClient parameter from useParaViemClient.

Import

import { useParaViemSignTransaction } from "@getpara/react-sdk";

Usage

import { useParaViemClient, useParaViemSignTransaction } from "@getpara/react-sdk";
import { sepolia } from "viem/chains";
import { http, parseEther } from "viem";

function SignTransaction() {
  const { viemClient } = useParaViemClient({
    walletClientConfig: { chain: sepolia, transport: http() },
  });

  const { signTransactionAsync, isPending, data: signedTx } = useParaViemSignTransaction(viemClient);

  const handleSign = async () => {
    const signed = await signTransactionAsync({
      to: "0x...",
      value: parseEther("0"),
      type: "eip1559",
      chain: sepolia,
    });
    console.log("Signed transaction:", signed);
  };

  return (
    <button onClick={handleSign} disabled={isPending}>
      {isPending ? "Signing..." : "Sign Transaction"}
    </button>
  );
}
mutate/mutateAsync are also available alongside the named aliases. All other UseMutationResult fields (data, error, isSuccess, isError, reset, etc.) work as expected.