dApp Connections & WalletConnect

Try Tangem secure wallet →

Table of contents


dApp Connections & WalletConnect

This guide explains how MetaMask connects to dApps, why connections sometimes work in one case (for example, "metamask connects to remix but not my website"), and how WalletConnect and the injected provider differ. I’ll show exactly how I tested connection flows so you can reproduce the checks yourself. I use MetaMask daily for swaps, DeFi, and testing contracts — and I’ve broken connections more than once (yes, I clicked approve too quickly). Learn practical fixes and safer habits.

How I tested (so you can repeat it)

I ran tests across three environments: desktop extension (Chrome), MetaMask Mobile (iOS and Android), and a simple local dev dApp served over HTTPS. Test checklist (replicable):

Record the browser console and MetaMask prompt behavior. That’s how I found mismatches between Remix and custom sites. You can reproduce each step with a local HTTPS server and the same request pattern.

Injected provider: browser extension connections

On desktop, MetaMask injects an injected provider into page context at window.ethereum. That provider handles JSON-RPC requests like account access and signing. Connecting is typically a three-step flow: detect provider, request accounts, and accept the prompt.

But why does metamask connects to remix but not my website? Common causes:

If your site shows no MetaMask prompt, open DevTools and check for window.ethereum. If it’s undefined, the provider isn’t injected (or the extension is locked). Unlock the wallet and try again.

Common injected-provider errors and fixes

If you want a step-by-step on setup and connecting to dApps, see connect-metamask-to-dapps and troubleshooting.

WalletConnect & mobile flows (QR, deeplinks, and fallbacks)

WalletConnect creates a session between your dApp and MetaMask Mobile using a bridge server. Desktop dApps usually emit a QR code that the mobile app scans. Mobile dApps often trigger a deeplink that opens MetaMask Mobile directly.

WalletConnect is helpful when the injected provider isn’t available (for example, when using Safari on iOS browser that doesn’t support the extension). But deeplinks can fail.

When you see “metamask deeplink not supported” (iOS / OpenSea cases)

Search queries like metamask deeplink not supported, metamask deeplink not supported ios, or metamask deeplink not supported opensea often mean the dApp is attempting an app link that your phone or browser won’t route to MetaMask. Typical fixes:

For mobile-specific tips, check walletconnect-and-mobile-dapps and connected-sites-mobile.

Managing connected sites and security best practices

Always review connected sites after using a dApp. A connection gives a dApp the ability to see public addresses and request transactions. It does not give private keys — but a malicious dApp can ask you to sign dangerous transactions.

Practical steps I use every week:

  1. Open MetaMask and view Connected Sites (extension or mobile menu). Disconnect sites you no longer use.
  2. Revoke token allowances for dApps that had unlimited approvals (see token-approvals-and-revoke).
  3. If you approved something by mistake, move remaining funds to a new account/wallet — approvals don’t protect funds if a contract drains balances.

I once approved an unlimited allowance to a scam contract. Lesson learned: always double-check the contract address and use a small approval amount when possible. And yes, I revoked that approval immediately.

Quick comparison: injected provider vs WalletConnect

Feature Injected provider (Extension) WalletConnect (Mobile pairing)
Where it runs Desktop browser tab (window.ethereum) Mobile app pairing (QR / deeplink)
DApp detection Direct injection into page External bridge session
Deep link support N/A (extension) Depends on OS and app links
Useful when You use desktop extension You’re on mobile or no injection available
Security trade-offs Faster UX; popups only Safer on public browsers; more reliable mobile pairing

Developer checklist: support both providers gracefully

Want fewer support tickets? Implement these patterns:

See developer-workflow for sample patterns and deeper technical notes.

Step-by-step: recover from a connection failure

  1. Close the dApp tab and re-open (clears race conditions).
  2. Unlock MetaMask and ensure the correct account is selected.
  3. If using mobile, open the dApp inside MetaMask Mobile or scan the QR.
  4. If the prompt never appears, open DevTools and check window.ethereum presence.
  5. Disconnect stale sessions from Connected Sites and try again.

If you still see metamask connection failed or metamask connected sites error, try the full reinstall (last resort) and restore via seed phrase only if you have a verified backup.

FAQ (real search queries answered)

Q: Why does metamask connects to remix but not my website?
A: Remix auto-injects or requests accounts. Your site likely doesn’t call the correct provider methods or is served insecurely. Check for window.ethereum and request accounts explicitly.

Q: What does metamask connection declined mean?
A: The user rejected the connection request. Show clearer UX and a retry option (and explain why you need the account).

Q: How do I fix metamask deeplink not supported ios?
A: Update MetaMask Mobile, open the dApp inside the MetaMask in-app browser, or use the QR pairing flow from desktop.

Q: Is it safe to keep crypto in a hot wallet?
A: Hot wallets are convenient for daily DeFi, but they carry more risk than offline storage. Use small balances for active use and move big holdings to cold storage.

Q: How do I revoke token approvals?
A: Use the wallet’s token approval screen or a reputable revoke tool (link: token-approvals-and-revoke).

Who should use MetaMask dApp connections — and who should look elsewhere

Best fit: people who interact with DeFi, swap tokens, and test contracts regularly from both desktop and mobile. The UX is fast for daily activity and supports many EVM-compatible chains. I’ve depended on it for quick tests and small trades.

Look elsewhere if: you require enterprise-grade custody, hardware-only signing for every transaction, or a non-EVM-focused workflow (see hardware-ledger and security-best-practices).

Conclusion & next steps

Connection issues are usually either a provider-detection problem (injected provider) or a deeplink/protocol mismatch (WalletConnect). I’ve outlined repeatable tests and step-by-step recoveries so you can confirm where the break happens. Want more targeted help? Read the step-by-step setup guides: install-metamask-mobile, install-metamask-chrome, or the deep troubleshooting guide at troubleshooting-common-errors.

If you run into a specific error message, copy it into the site search or the FAQ above. And if you want to reduce risk today, disconnect unused dApps and revoke unlimited approvals.

Ready to keep testing? Try the quick walkthroughs: connect-metamask-to-dappswalletconnect-and-mobile-dappsdisconnect-and-remove-connected-sites

Try Tangem secure wallet →