Template & Examples

Smart Wallet React SDK Example

Check out the full example code for integrating Privy as wallet provider with the Gelato Smart Wallets React SDK.

Setup Instructions

1

Clone the Repository

git clone https://github.com/gelatodigital/how-tos-2-smartwallet-react-sdk-example.git
cd how-tos-2-smartwallet-react-sdk-example
2

Set Up Environment Variables

cp .env.example .env
3

Generate a API Key

Create a API Key using the Gelato App. Paste the key into your .env file. Check out the How-To Guides here.
4

Install Dependencies

yarn install
5

Start the development server

yarn dev
Open your browser and navigate to http://localhost:5173
Not using templates? Prefer a step-by-step approach? Up next: How-To Guides for implementing the Smart Wallet React SDK use cases step-by-step.

Installation

npm install @gelatonetwork/smartwallet-react-sdk viem

Gelato Smart Wallets React SDK

Check out the NPM package for the Gelato Smart Wallets React SDK.

Getting Started

1

Importing Dependencies

import {
  GelatoSmartWalletContextProvider,
  useGelatoSmartWalletProviderContext,
  GelatoSmartWalletConnectButton,
  privy,
  wagmi,
} from "@gelatonetwork/smartwallet-react-sdk";

import { sponsored, native, erc20 } from "@gelatonetwork/smartwallet";
import { baseSepolia } from "viem/chains";
import { http } from "wagmi";
2

Setting up Smart Wallet Context Provider

To create a API Key, visit the Gelato App and navigate to the Paymaster & Bundler > API Keys section. Create a new API Key, select the required networks, and copy the generated API Key. For detailed instructions, click here to learn more about creating a API Key.
<GelatoSmartWalletContextProvider
  settings={{
    scw: {
      type: "gelato" // use gelato, kernel, safe, or custom
    }
    apiKey: process.env.GELATO_API_KEY as string,
    waas: privy(
      process.env.NEXT_PUBLIC_PRIVY_ENVIRONMENT_ID as string
    ),
    wagmi: wagmi({
      chains: [baseSepolia],
      transports: {
        [baseSepolia.id]: http(),
      },
    }),
  }}
>
  {children}
</GelatoSmartWalletContextProvider>
3

Setting up Connect Button

You can customize the appearance of your connect button here. This button triggers the wallet connectors widget configured for the UI.
const children = (
  <div className="mt-2 text-white">Get Started!</div>
) as React.ReactElement;

export const Login = () => (
  <GelatoSmartWalletConnectButton>{children}</GelatoSmartWalletConnectButton>
);
4

Fetching Smart Wallet Client

Use this client directly to execute transactions with different gas payment methods. Additionally, a logout option is available to disconnect your connected wallet.
const {
  gelato: { client },
  switchNetwork,
  logout,
} = useGelatoSmartWalletProviderContext();
5

Sending Transactions

You can send transactions using different gas payment methods as shown below. Additionally, you can add multiple transactions to the calls array to batch them and send them on-chain in a single request.