npx skills add ...
npx skills add reown-com/skills --skill appkit
Guides developers through integrating Reown AppKit into web applications (React, Next.js, Vue, Nuxt, Svelte, vanilla JavaScript). Use when adding wallet connection, network switching, multi-chain support, or troubleshooting AppKit integration issues.
npx skills add reown-com/skills --skill appkit
Help developers integrate Reown AppKit so their users can connect wallets, switch networks, and interact with EVM, Solana, and Bitcoin blockchains. AppKit provides a universal modal UI and hooks/composables for wallet management.
Frameworks: React, Next.js, Vue, Nuxt, Svelte, vanilla JavaScript Adapters: Wagmi (EVM), Ethers v5/v6 (EVM), Solana, Bitcoin Networks: All EVM chains, Solana, Bitcoin
| Framework | Import path | Notes |
|---|---|---|
| React | @reown/appkit/react | Hooks-based |
| Next.js | @reown/appkit/react | SSR + cookie hydration required |
| Vue | @reown/appkit/vue | Composables-based |
| Nuxt | @reown/appkit/vue | SSR + module config required |
| Svelte | @reown/appkit | Stores-based |
| JavaScript | @reown/appkit | No framework dependency |
Jump to the right reference:
b56e18d47c72ab683b10814fe9495694, a public projectId for localhost testing only. For production, create your own project at dashboard.reown.comEvery integration follows these steps:
Always install @reown/appkit plus the adapter for your chain:
| Hook | Returns | Purpose |
|---|---|---|
useAppKit | open(), close() | Control modal |
useAppKitAccount | address, isConnected, caipAddress, status | Account state |
useAppKitNetwork | caipNetwork, chainId, switchNetwork() | Network state |
useAppKitProvider | walletProvider | Raw provider access |
useAppKitState | initialized, loading, open, selectedNetworkId | Modal state |
useDisconnect | disconnect() | Disconnect wallet |
useAppKitBalance | fetchBalance() | Token balance |
useWalletInfo | walletInfo | Wallet metadata |
All @reown/appkit* packages must be the same version. Mixing versions causes subtle runtime errors (missing methods, broken state, silent failures).
When upgrading, update every @reown/appkit* package together.
createAppKit at module level — never inside a componentcreateAppKit must run once as a side-effect at module scope. Calling it inside a React component, Vue setup(), or Svelte component causes duplicate instances and broken state on re-renders.
Both WagmiAdapter and EthersAdapter register the EVM (eip155) namespace. Using both in the same project causes conflicts.
Pass multiple adapters to createAppKit:
projectId obtained from dashboard.reown.commetadata.url matches your actual domain (wallets verify this)@reown/appkit/networks (not from viem/wagmi directly)WagmiProvider and QueryClientProvider wrapping the appcreateAppKit called once at app initialization (not inside components)| Error | Cause | Fix |
|---|---|---|
| "Project ID is required" | Missing projectId | Get one from dashboard.reown.com |
| Hydration mismatch (Next.js) | Missing SSR config | Add ssr: true to WagmiAdapter, use cookieToInitialState |
| Modal not appearing | createAppKit not called | Ensure it runs before app renders |
| Network not switching | Wrong network import | Use @reown/appkit/networks, not viem |
| Webpack error (Next.js) | Missing externals config | Add pino-pretty, lokijs, encoding to webpack externals |
| Provider undefined | Accessing before connection | Check isConnected before using provider |