The useSignMessage hook provides functionality to sign arbitrary messages with the user’s wallet.

Import

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

Usage

function MessageSigner() {
  const { signMessage, signMessageAsync, isPending, error } = useSignMessage();
  const [message, setMessage] = useState("");
  const [signature, setSignature] = useState("");

  const handleSign = async () => {
    try {
      const result = await signMessageAsync({
        messageBase64: Buffer.from(message).toString("base64"),
      });

      if ("signature" in result) {
        setSignature(result.signature);
      }
    } catch (err) {
      console.error("Failed to sign message:", err);
    }
  };

  return (
    <div>
      <input 
        value={message}
        onChange={(e) => setMessage(e.target.value)}
        placeholder="Enter message to sign"
      />
      
      <button 
        onClick={handleSign}
        disabled={isPending || !message}
      >
        {isPending ? "Signing..." : "Sign Message"}
      </button>

      {signature && <p>Signature: {signature}</p>}
    </div>
  );
}