Skip to main content
Configure the JavaScript SDK to use your own RPC endpoints (Alchemy, Infura, QuickNode) or local nodes for development.

Prerequisites

  • @dynamic-labs-sdk/client installed
  • RPC provider API keys (optional)

Quick Start

import { createDynamicClient } from '@dynamic-labs-sdk/client';

const client = createDynamicClient({
  environmentId: 'YOUR_ENVIRONMENT_ID',
  transformers: {
    networkData: (network) => {
      if (network.networkId === '1') {
        return {
          ...network,
          rpcUrls: {
            http: ['https://eth-mainnet.g.alchemy.com/v2/YOUR-KEY'],
          },
        };
      }
      return network;
    },
  },
});

Common Patterns

Multiple networks:
const RPC_URLS = {
  '1': process.env.ETHEREUM_RPC_URL,
  '137': process.env.POLYGON_RPC_URL,
  '8453': process.env.BASE_RPC_URL,
};

transformers: {
  networkData: (network) => {
    const url = RPC_URLS[network.networkId];
    return url ? { ...network, rpcUrls: { http: [url] } } : network;
  },
}
Fallback URLs:
transformers: {
  networkData: (network) => ({
    ...network,
    rpcUrls: {
      http: [`https://primary.com/${process.env.KEY}`, ...network.rpcUrls.http],
    },
  }),
}
Environment-based:
const getRpcUrl = (network) => {
  if (process.env.NODE_ENV === 'development') return 'http://localhost:8545';
  if (process.env.NODE_ENV === 'staging') return 'https://sepolia-rpc.com';
  return `https://mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_KEY}`;
};

transformers: {
  networkData: (network) => ({
    ...network,
    rpcUrls: { http: [getRpcUrl(network)] },
  }),
}

Network IDs

EVM networks use chain IDs: '1' (Ethereum), '137' (Polygon), '8453' (Base), '42161' (Arbitrum), '10' (Optimism), '11155111' (Sepolia)

Provider Examples

Alchemy:
const KEY = process.env.ALCHEMY_KEY;
const RPC_URLS = {
  '1': `https://eth-mainnet.g.alchemy.com/v2/${KEY}`,
  '137': `https://polygon-mainnet.g.alchemy.com/v2/${KEY}`,
};
Infura:
const KEY = process.env.INFURA_KEY;
const RPC_URLS = {
  '1': `https://mainnet.infura.io/v3/${KEY}`,
  '137': `https://polygon-mainnet.infura.io/v3/${KEY}`,
};