> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getpara.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure RPC Endpoints

> Set up custom RPC endpoints and chains with Web3 libraries

Configure custom RPC endpoints and chains for networks using Web3 libraries. This guide uses public testnet RPCs for demonstration and shows minimal setup with predefined and custom chains where applicable.

## Prerequisites

You need to start with setting up your Web3 library clients with Para. This guide assumes you have already configured your Para instance and are ready to integrate with Ethers.js, Viem, or Wagmi.

<Card title="Setup Web3 Libraries" description="Configure Ethers.js, Viem, or Wagmi with Para before proceeding" href="/v3/react/guides/web3-operations/evm/setup-libraries" />

## Configure Custom RPC Endpoints

<Tabs>
  <Tab title="Ethers.js">
    ```typescript theme={null}
    import { useMemo } from "react";
    import { ethers } from "ethers";
    import { useParaEthersSigner } from "@getpara/react-sdk";

    const chainId = 11155111;
    const rpcUrl = "https://ethereum-sepolia-rpc.publicnode.com";

    function ConfigureRPC() {
      const provider = useMemo(
        () => new ethers.JsonRpcProvider(rpcUrl, chainId, { staticNetwork: true }),
        []
      );

      const { ethersSigner } = useParaEthersSigner({ provider });

      // ethersSigner is ready to use for signing and sending transactions
    }
    ```
  </Tab>

  <Tab title="Viem">
    ```typescript theme={null}
    import { useParaViemClient } from "@getpara/react-sdk";
    import { createPublicClient, http } from "viem";
    import { sepolia } from "viem/chains";

    const chain = sepolia;
    const transport = http("https://ethereum-sepolia-rpc.publicnode.com");

    const publicClient = createPublicClient({ chain, transport });

    function ConfigureRPC() {
      const { viemClient } = useParaViemClient({
        walletClientConfig: { chain, transport }
      });

      // viemClient is ready to use for signing and sending transactions
    }
    ```

    For custom chains:

    ```typescript theme={null}
    const customChain = {
      id: 99999,
      name: "Custom Chain",
      network: "custom",
      nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
      rpcUrls: {
        default: { http: ["https://custom-rpc.example.com"] },
      },
    };

    const customTransport = http("https://custom-rpc.example.com");

    const customPublicClient = createPublicClient({
      chain: customChain,
      transport: customTransport
    });

    function ConfigureCustomRPC() {
      const { viemClient: customWalletClient } = useParaViemClient({
        walletClientConfig: { chain: customChain, transport: customTransport }
      });
    }
    ```
  </Tab>

  <Tab title="Wagmi">
    ```typescript theme={null}
    import { createConfig, http } from "wagmi";
    import { sepolia } from "wagmi/chains";
    import { paraConnector } from "@getpara/wagmi-v2-integration";

    const chains = [sepolia] as const;

    const connector = paraConnector({
      para,
      chains,
      appName: "Your App"
    });

    const config = createConfig({
      chains,
      connectors: [connector],
      transports: {
        [sepolia.id]: http("https://ethereum-sepolia-rpc.publicnode.com")
      }
    });
    ```

    For custom chains:

    ```typescript theme={null}
    const customChain = {
      id: 99999,
      name: "Custom Chain",
      network: "custom",
      nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
      rpcUrls: {
        default: { http: ["https://custom-rpc.example.com"] },
      },
    };

    const extendedChains = [sepolia, customChain] as const;

    const extendedConnector = paraConnector({
      para,
      chains: extendedChains,
      appName: "Your App"
    });

    const extendedConfig = createConfig({
      chains: extendedChains,
      connectors: [extendedConnector],
      transports: {
        [sepolia.id]: http("https://ethereum-sepolia-rpc.publicnode.com"),
        [customChain.id]: http("https://custom-rpc.example.com")
      }
    });
    ```
  </Tab>
</Tabs>

## Next Steps

<CardGroup cols={3}>
  <Card title="Query Balances" description="Check ETH and token balances across networks" href="/v3/react/guides/web3-operations/evm/query-balances" icon="coins" />

  <Card title="Send Tokens" description="Transfer assets on configured networks" href="/v3/react/guides/web3-operations/evm/send-tokens" icon="paper-plane" />

  <Card title="Estimate Gas" description="Calculate gas costs for transactions" href="/v3/react/guides/web3-operations/evm/estimate-gas" icon="gas-pump" />
</CardGroup>
