> ## 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 with Solana Libraries

> Set up and configure Solana RPC endpoints and connections using Web3.js or Anchor

Configure custom RPC endpoints for Solana to optimize performance, use private nodes, or connect to different networks. This guide covers RPC setup for all supported libraries.

<Card title="Setup Solana Libraries First" description="You must complete the Solana library setup before configuring RPC endpoints" href="/v3/react/guides/web3-operations/solana/setup-libraries" horizontal />

<Tabs>
  <Tab title="@solana/kit">
    ```typescript theme={null}
    import { useParaSolanaSigner } from '@getpara/react-sdk';
    import { createSolanaRpc } from '@solana/kit';

    const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");

    function ConfigureRPC() {
      // Use different RPC endpoints by creating different rpc instances
      const mainnetRpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
      const devnetRpc = createSolanaRpc('https://api.devnet.solana.com');
      const customRpc = createSolanaRpc('https://your-custom-rpc-endpoint.com');

      // Pass any rpc instance to the hook
      const { solanaSigner, isLoading } = useParaSolanaSigner({ rpc: mainnetRpc });

      const checkHealth = async () => {
        const health = await mainnetRpc.getHealth().send();
        const version = await mainnetRpc.getVersion().send();
        return { health, version };
      };

      return { solanaSigner, checkHealth };
    }
    ```
  </Tab>

  <Tab title="@solana/web3.js">
    ```typescript theme={null}
    import { ParaSolanaWeb3Signer } from '@getpara/solana-web3.js-v1-integration';
    import { Connection, clusterApiUrl, Commitment } from '@solana/web3.js';
    import { para } from './para';

    function useCustomRPC() {
      // Using Solana public RPC endpoints
      const mainnetConnection = new Connection(
        clusterApiUrl('mainnet-beta'),
        'confirmed'
      );

      const devnetConnection = new Connection(
        clusterApiUrl('devnet'),
        'confirmed'
      );

      // Using custom RPC endpoint (e.g., QuickNode, Alchemy, Helius)
      const customConnection = new Connection(
        'https://your-custom-rpc-endpoint.com',
        {
          commitment: 'confirmed',
          wsEndpoint: 'wss://your-custom-websocket-endpoint.com',
          httpHeaders: {
            'Authorization': 'Bearer YOUR_API_KEY',
          },
          disableRetryOnRateLimit: false,
          confirmTransactionInitialTimeout: 30000,
        }
      );

      // Create signers with different connections
      const mainnetSigner = new ParaSolanaWeb3Signer(para, mainnetConnection);
      const devnetSigner = new ParaSolanaWeb3Signer(para, devnetConnection);
      const customSigner = new ParaSolanaWeb3Signer(para, customConnection);

      // Example: Get network performance metrics
      const checkPerformance = async () => {
        const start = Date.now();
        const slot = await customConnection.getSlot();
        const latency = Date.now() - start;

        console.log('Current slot:', slot);
        console.log('RPC latency:', latency, 'ms');

        const perfSamples = await customConnection.getRecentPerformanceSamples(5);
        console.log('Recent performance:', perfSamples);
      };

      return { mainnetSigner, devnetSigner, customSigner, checkPerformance };
    }
    ```
  </Tab>

  <Tab title="Anchor">
    RPC configuration works the same as @solana/kit — pass different RPC URLs when creating the rpc client:

    ```typescript theme={null}
    import { useParaSolanaSigner } from "@getpara/react-sdk";
    import { createSolanaRpc } from "@solana/kit";

    const mainnetRpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
    const devnetRpc = createSolanaRpc("https://api.devnet.solana.com");
    const customRpc = createSolanaRpc("https://your-custom-rpc-endpoint.com");

    function ConfigureRPC() {
      // Pass the desired RPC to the hook
      const { solanaSigner, isLoading } = useParaSolanaSigner({ rpc: mainnetRpc });

      if (isLoading) return <p>Loading...</p>;
      return <p>Connected to: {solanaSigner?.address}</p>;
    }
    ```
  </Tab>
</Tabs>

## Next Steps

<CardGroup cols={3}>
  <Card title="Execute Transactions" description="Send transactions with configured RPC" href="/v3/react/guides/web3-operations/solana/execute-transactions" icon="bolt" />

  <Card title="Get Transaction Status" description="Check confirmations via RPC" href="/v3/react/guides/web3-operations/solana/get-transaction-status" icon="clock" />

  <Card title="Query Balances" description="Fetch account data from RPC" href="/v3/react/guides/web3-operations/solana/query-balances" icon="wallet" />
</CardGroup>
