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-native-wallet/evm/viem";

Usage

import { useParaViemClient, useParaViemSignTransaction } from "@getpara/react-native-wallet/evm/viem";
import { sepolia } from "viem/chains";
import { http, parseEther } from "viem";
import { View, Text, Button } from "react-native";

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 (
    <View>
      <Button title={isPending ? "Signing..." : "Sign Transaction"} onPress={handleSign} disabled={isPending} />
      {signedTx && <Text>Signed: {signedTx}</Text>}
    </View>
  );
}
mutate/mutateAsync are also available alongside the named aliases. All other UseMutationResult fields (data, error, isSuccess, isError, reset, etc.) work as expected.