Skip to main content
Version: 2.0 beta

Standalone Client

This library is compatible with NodeJS, Browser and React-Native applications (NodeJS modules required to be polyfilled for React-Native)


npm install --save @walletconnect/client@experimental

Create Session

  1. Initiate your WalletConnect client with the relay server, using your Project ID.
import WalletConnectClient from "@walletconnect/client";

const client = await WalletConnectClient.init({
projectId: "c4f79cc...",
relayUrl: "wss://",
metadata: {
name: "Example Dapp",
description: "Example Dapp",
url: "#",
icons: [""],
  1. Subscribe to pairing proposal event for sharing URI
import { CLIENT_EVENTS } from "@walletconnect/client";
import { PairingTypes } from "@walletconnect/types";

async (proposal: PairingTypes.Proposal) => {
// uri should be shared with the Wallet either through QR Code scanning or mobile deep linking
const { uri } = proposal.signal.params;
  1. Connect application and specify session permissions
const session = await client.connect({
permissions: {
blockchain: {
chains: ["eip155:1"],
jsonrpc: {
methods: ["eth_sendTransaction", "personal_sign", "eth_signTypedData"],

JSON-RPC Payloads

Once the session has been successful then you can start making JSON-RPC requests to be approved and signed by the wallet

const result = await client.request({
topic: session.topic,
chainId: "eip155:1",
request: {
id: 1,
jsonrpc: "2.0",
method: "personal_sign",
params: [