Summary

We provide the useRpcProviders hook that allows direct access to RPC providers for EVM & Solana. Rpc providers can be used to make RPC calls to the blockchain while also providing convenience methods without going through a wallet. Each provider will use the RPC configured in the Dashboard if present, otherwise they fall back to public RPCs urls. You can see the public URL by checking on the network in the dashboard.

Dashboard Configuration

To enter your provider url for a given network:
  1. Go to the Chains & Networks page in your Dashboard.
  2. Click on the chain to open the details tab
  3. Click the down down arrow to expand a network
  4. Enter your Provider Url
  5. Click the test button to check url

Overriding RPC URLs in code using overrideNetworkRpcUrl

EVM

You can override the RPC url of any EVM network by using the overrideNetworkRpcUrl method in combination with the overrides.evmNetworks settings. The following example overrides the RPC url of the Ethereum mainnet and Polygon set in the dashboard with the ones set in the rpcUrlOverrides object.
const rpcUrlOverrides = {
    "1": ["https://eth.customrpc.com"],
    "137": ["https://polygon.customrpc.com"]
}

const App = () => (
  <DynamicContextProvider
    settings={{
      environmentId: 'REPLACE_WITH_YOUR_ENV_ID',
      overrides: {
        evmNetworks: (networks) => overrideNetworkRpcUrl(networks, rpcUrlOverrides),
      }
    }}
  >
    <Home />
  </DynamicContextProvider>
);

export default App;

SVM (sdk v4.8.0+)

You can override the RPC url of any SVM network by using the overrideNetworkRpcUrl method in combination with the overrides.solNetworks settings. The following example overrides the RPC url of the Solana mainnet and Eclipse mainnet set in the dashboard with the ones set in the rpcUrlOverrides object.
const rpcUrlOverrides = {
    "101": ["https://sol.customrpc.com"],
    "201": ["https://eclipse.customrpc.com"]
}

const App = () => (
  <DynamicContextProvider
    settings={{
      environmentId: 'REPLACE_WITH_YOUR_ENV_ID',
      overrides: {
        solNetworks: (networks) => overrideNetworkRpcUrl(networks, rpcUrlOverrides),
      }
    }}
  >
    <Home />
  </DynamicContextProvider>
);

export default App;

Fetching RPC Providers with the useRpcProviders hook

You are able to use the useRpcProviders hook to obtain an object with rpc providers, and this hook expects a selector parameter that you must use to select either EVM or Solana rpc providers.
import { useRpcProviders } from '@dynamic-labs/sdk-react-core'
import { evmProvidersSelector } from '@dynamic-labs/ethereum-core'
import { solanaProvidersSelector } from '@dynamic-labs/solana-core'

const App = () => {
  const evmProviders = useRpcProviders(evmProvidersSelector)
  const solanaProviders = useRpcProviders(solanaProvidersSelector)
}
The hook returns either EvmRpcProviderMethods or SolanaRpcProviderMethods, with the following fields:
defaultProvider
EvmRpcProvider | SolanaRpcProvider | undefined
The provider for EVM or Solana Mainnet, if mainnet is enabled
providers
EvmRpcProvider[] | SolanaRpcProvider[] | undefined
A full list of all EVM or Solana providers that have been configured
getProviderByChainId
(chainId: number | string) => EvmRpcProvider | SolanaRpcProvider | undefined
A convenience method that lets you retrieve a provider for a specific Chain ID
Check out the reference for EvmRpcProvider and SolanaRpcProvider

Example

Below is a simple example using EVM providers to fetch an arbitrary ENS mapping:
import { useRpcProviders } from '@dynamic-labs/sdk-react-core'
import { evmProvidersSelector } from '@dynamic-labs/ethereum-core'

const useLogEnsMapping = () => {
  const { defaultProvider } = useRpcProviders(evmProvidersSelector)

  const mainnetProvider = defaultProvider?.provider;

  const ensAddress = mainnetProvider.resolveName('myname.eth');

  console.log('address for myname.eth', ensAddress);
}