# Connect your dapp

Core reaches your dapp over three transports. Which one applies depends on
where your users run Core, not on anything about your dapp's stack:

| Surface | Transport | What you integrate |
| --- | --- | --- |
| Core Extension | Injected [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) provider | Nothing Core-specific — discovery via EIP-6963 finds it |
| Core Mobile | [WalletConnect](https://walletconnect.network/) | A WalletConnect client such as Reown AppKit |
| Core Web | The wallet is the app | Nothing — users act from Core Web itself |

**The practical answer for most dapps:** use a connection library —
[Wagmi](https://wagmi.sh/), RainbowKit, or similar. They implement EIP-6963
and WalletConnect at once, so both Core Extension and Core Mobile work with
zero Core-specific code. The [library guides](/docs/connect-your-dapp/library-guides)
show the exact configs.

Integrating by hand instead? Follow this path:

1. [Detect Core](/docs/connect-your-dapp/detect-core) — find the provider
   without colliding with other wallets.
2. Request accounts and handle [provider events](/docs/reference/provider-api).
3. Consult the [reference](/docs/category/reference) for the methods you call.

Building for the Avalanche X and P-Chains (staking, cross-chain transfers)?
That surface is Core-specific by nature — start at
[Avalanche X, P, and C-Chain](/docs/connect-your-dapp/avalanche-chains).
