Skip to main content
Learn how to set up popular Web3 libraries with Para. Choose your library below.

Prerequisites

Before setting up Web3 libraries, you need an authenticated Para session.

Setup Para Instance

Sepolia examples need testnet ETH before sending transactions or writing contracts. Get requestFaucetAsync from useRequestFaucet() and call requestFaucetAsync({ chain: "ETHEREUM_SEPOLIA" }) after the user has an EVM wallet. If chain is omitted, the faucet defaults to ETHEREUM_SEPOLIA. See Fund Testnet Wallet for the full example.

Install

npm install @getpara/react-native-wallet @getpara/ethers-v6-integration ethers
@getpara/ethers-v6-integration is a separate package — install it alongside @getpara/react-native-wallet.

Usage

Use the hook to create an ethers signer for your user’s Para embedded wallet or external wallet. For convenience, the and hooks wrap common signer methods in a React Query mutation.
import { useParaEthersSigner, useParaEthersSignMessage } from "@getpara/react-native-wallet/evm/ethers";
import { JsonRpcProvider } from "ethers";
import { Text, TouchableOpacity } from "react-native";

const provider = new JsonRpcProvider("https://ethereum-sepolia-rpc.publicnode.com");

function SignWithEthers() {
  const { ethersSigner, isLoading } = useParaEthersSigner({ provider });
  const { signMessageAsync, isPending } = useParaEthersSignMessage(ethersSigner);

  const handleSign = async () => {
    const signature = await signMessageAsync("Hello from Para!");
    console.log("Signature:", signature);
  };

  if (isLoading) return <Text>Loading...</Text>;
  return (
    <TouchableOpacity disabled={isPending} onPress={handleSign}>
      <Text>{isPending ? "Signing..." : "Sign Message"}</Text>
    </TouchableOpacity>
  );
}

Wallet Resolution

When no address or walletId is passed, the hook resolves the wallet in this order:
  1. Selected wallet — if the user selected an EVM wallet in the UI. If there is only one EVM wallet in the session, it is already selected by default
  2. First EVM wallet — the first available EVM wallet on the account
To target a specific wallet, pass address or walletId:
const { ethersSigner } = useParaEthersSigner({
  provider,
  address: "0x1234...",  // or walletId: "uuid-..."
});

Next Steps

Configure RPC

Send Tokens

Sign Messages