Integration options
MetaMask Connect offers three integration paths:
- Multichain (
@metamask/connect-multichain) for connecting to EVM and Solana in a single session. - Single-ecosystem (
@metamask/connect-evmor@metamask/connect-solana) for drop-in per-chain providers. - Multi-ecosystem (both single-ecosystem packages together) for dapps supporting both chains with familiar interfaces.
We recommend using the multichain client, which provides a single connection prompt across all ecosystems. If your dapp targets a single chain or you prefer per-chain provider interfaces, you can use the single-ecosystem or multi-ecosystem option.
All options share the same underlying transport and session infrastructure, so you can start with the option that fits your dapp today and migrate later.
The EVM and Solana clients wrap the same createMultichainClient singleton core.
Multichain (recommended)
Use @metamask/connect-multichain to work directly with the
Multichain API. This uses
scopes and wallet_invokeMethod instead of per-chain RPC, and supports a single connection prompt
across all ecosystems.
Single-ecosystem
If your dapp targets a single ecosystem, use @metamask/connect-evm or @metamask/connect-solana to add MetaMask Connect to an existing dapp with minimal code changes.
- EVM: Provides an EIP-1193 compatible provider that
works with
ethers.js,viem, andweb3.js. - Solana: Provides a Wallet Standard compatible wallet that works with the Solana Wallet Adapter ecosystem.
Multi-ecosystem
If your dapp supports both EVM and Solana, use @metamask/connect-evm and
@metamask/connect-solana together to
support both ecosystems while keeping familiar provider interfaces for each.
Compare options
| Multichain | Single-ecosystem | Multi-ecosystem | |
|---|---|---|---|
| Package | connect-multichain | connect-evm or connect-solana | Both connect-evm and connect-solana |
| Effort | Medium (scope-based API) | Low (drop-in provider) | Low (two providers) |
| EVM support | Via wallet_invokeMethod | EIP-1193 provider | EIP-1193 provider |
| Solana support | Via wallet_invokeMethod | Wallet Standard | Wallet Standard |
| Cross-chain UX | Single prompt for all ecosystems | Single ecosystem | Separate connect per ecosystem |
| Sessions | Full control | Automatic | Automatic per-client |
| Best for | Multichain-native dapps | Existing single-chain dapps | Dapps supporting EVM and Solana |
Frequently asked questions
Which integration option should I choose?
Choose multichain (@metamask/connect-multichain) if your dapp needs to connect to both EVM and Solana in a single session with one approval prompt.
Choose single-ecosystem (@metamask/connect-evm or @metamask/connect-solana) if your dapp targets one chain and you want a drop-in provider compatible with existing libraries.
Choose multi-ecosystem (both single-ecosystem packages) if you want per-chain providers for both EVM and Solana.
Can I migrate between integration options later?
Yes. All three options share the same underlying transport and session infrastructure, so you can start with a single-ecosystem client and migrate to multichain later without changing your backend or connection logic. The migration involves updating your client initialization code and adopting scope-based RPC routing.
Does MetaMask Connect work with Wagmi, ethers.js, and viem?
Yes. The EVM client (@metamask/connect-evm) provides an EIP-1193 compatible provider that works directly with viem's custom transport, ethers.js BrowserProvider, and web3.js Web3 constructor.
The Solana client provides a Wallet Standard compatible wallet that works with the Solana Wallet Adapter ecosystem.