You lose several capabilities that exist because the connection goes through the MM Connect EVM SDK:
-
Reliable EIP-6963 discovery —
window.ethereumcan be clobbered when multiple wallets are installed (Rabby, Phantom EVM, Coinbase, OKX, etc.). -
Unified provider surface — the same
EIP1193Provideracross extension, mobile, and QR transports. No divergent code paths. -
Normalized lifecycle events —
wallet_sessionChanged,accountsChanged,chainChangedwith consistent shapes. -
Graceful fallback — if the user disables/uninstalls the extension mid-session, the SDK can transparently fall through to MWP.
-
Shortcut flows —
connectAndSignandconnectWith(one-tap connect + sign / connect + transaction) require the SDK. -
Read-only RPC access pre-connect —
client.getProvider()works beforeconnect(), backed byapi.supportedNetworks(Infura + custom RPCs). -
Consistent install UX —
ui.showInstallModalhandles the “MetaMask not detected” path. -
Forward compatibility with multichain — Solana support via
@metamask/connect-multichainreuses the same client model.
The most common class of integration bugs we see comes from dapps maintaining
two paths — raw injected for extension users, SDK for everyone else. Behaviors
diverge subtly (error codes, permission semantics, batching, chain-switch
shapes), and parity drifts over time.