> For the complete documentation index, see [llms.txt](/llms.txt).

# Connect to EVM networks

MetaMask Connect EVM (`@metamask/connect-evm`) is the modern replacement for `@metamask/sdk`. Use it to connect your dapp to Ethereum and other EVM networks in the MetaMask mobile app or browser extension.

The EVM client provides an [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193)-compatible provider with the same shape as `window.ethereum`, meaning existing `viem`, `ethers.js`, or `web3.js`code works without changes. It also includes automatic platform detection, relay-based connections, session persistence, and convenience methods like [connectAndSign](/metamask-connect/evm/reference/methods/#connectandsign) and [connectWith](/metamask-connect/evm/reference/methods/#connectwith).

Coming from `@metamask/sdk`?

See the [migration guide](/metamask-connect/evm/guides/migrate-from-sdk/) for a step-by-step upgrade path covering package changes, API differences, and new capabilities.

Going multichain?

If your dapp supports (or plans to support) both EVM and Solana, use the [multichain client](/metamask-connect/multichain/) instead. The EVM and Solana clients share the same underlying multichain session, meaning the user only approves once. Get started with the [multichain quickstart](/metamask-connect/multichain/quickstart/javascript/).

## Supported platforms and libraries[​](#supported-platforms-and-libraries "Direct link to Supported platforms and libraries")

MetaMask Connect EVM supports multiple integration paths. You can install it from npm, use it through developer libraries like Wagmi, or integrate it through supported third-party libraries.

Choose a quickstart based on your stack.

- [JavaScriptSet up MetaMask Connect EVM in a JavaScript dapp.](/metamask-connect/evm/quickstart/javascript/)
- [WagmiSet up MetaMask Connect EVM in a React and Wagmi dapp.](/metamask-connect/evm/quickstart/wagmi/)
- [React NativeSet up MetaMask Connect EVM in a React Native or Expo dapp.](/metamask-connect/evm/quickstart/react-native/)

## Library compatibility[​](#library-compatibility "Direct link to Library compatibility")

The EVM client works seamlessly with popular Ethereum libraries:

| Library                               | Compatibility                               |
| ------------------------------------- | ------------------------------------------- |
| [viem](https://viem.sh/)              | Use with custom transport                   |
| [ethers.js](https://docs.ethers.org/) | Pass client.getProvider to BrowserProvider  |
| [web3.js](https://web3js.org/)        | Pass client.getProvider to Web3 constructor |

## Frequently asked questions[​](#frequently-asked-questions "Direct link to Frequently asked questions")

### What libraries does MetaMask Connect EVM work with?[​](#what-libraries-does-metamask-connect-evm-work-with "Direct link to What libraries does MetaMask Connect EVM work with?")

MetaMask Connect EVM provides an EIP-1193 compatible provider that works with viem (via `custom` transport), ethers.js (via `BrowserProvider`), web3.js (via `Web3` constructor), and Wagmi (via the `metamask` connector). It also supports wallet connector libraries like RainbowKit, ConnectKit, Dynamic, Privy, Web3Auth, and more.

### Do I need an Infura API key for MetaMask Connect EVM?[​](#do-i-need-an-infura-api-key-for-metamask-connect-evm "Direct link to Do I need an Infura API key for MetaMask Connect EVM?")

We recommend using an Infura API key for production dapps. MetaMask Connect EVM uses RPC URLs to route read requests and relay connections. Use the [getInfuraRpcUrls](/metamask-connect/evm/reference/methods/#getinfurarpcurls) helper to generate URLs for all Infura-supported chains automatically, or provide your own RPC endpoints in the `api.supportedNetworks` configuration.

### How do I migrate from `@metamask/sdk` to `@metamask/connect-evm`?[​](#how-do-i-migrate-from-metamasksdk-to-metamaskconnect-evm "Direct link to how-do-i-migrate-from-metamasksdk-to-metamaskconnect-evm")

To migrate:

- Replace `@metamask/sdk` with `@metamask/connect-evm` in your dependencies.
- Update imports from `MetaMaskSDK` to `createEVMClient`.
- Switch from synchronous to async initialization.
- Update your provider access pattern.

See the [migration guide](/metamask-connect/evm/guides/migrate-from-sdk/) for a step-by-step walkthrough with code examples for each change.
