Account panel
Balances for your token list, a timeline of what happened, and a network grid with live gas. Open any tab from your own UI.
Wyllet 1.1.0 is out. Open source, MIT.
Wyllet is a wallet connector for React dApps on wagmi and viem. It gives you the connect button, the account panel, token balances, an activity timeline, toasts and Sign-In With Ethereum, themed to match your app. It has no direct runtime dependencies: React, wagmi and viem come from your app as peers.
pnpm add wyllet wagmi viem @tanstack/react-queryNo wallet installed? Pick Demo wallet in the panel. It lives in your browser and holds no funds.
Choose how the panel enters the screen and which theme it wears. This is the real component: every change here applies to the panel on this page.
<WylletProvider
theme={{ light: porcelainTheme(), dark: obsidianTheme() }}
appearance={{ presentation: 'drawer' }}
/>Most connectors stop once a wallet is linked. Wyllet also ships the parts every dApp ends up building next.
Balances for your token list, a timeline of what happened, and a network grid with live gas. Open any tab from your own UI.
Promise-aware notifications in your theme. Transactions you track get one automatically.
Wyllet draws its own QR codes, with no QR library. CI renders them at the smallest size Wyllet uses and checks that they decode.
Mix popular chains with your own. Pin your token above the blue chips. Users see the same list on every device, because it lives in your code.
const myChain = customChain({
id: 424242,
name: 'My Chain',
rpcUrl: 'https://rpc.mychain.xyz',
})
getDefaultConfig({ appName: 'My dApp', chains: [myChain, ...popularChains] })ConnectGate shows its children only when the user is connected, on a supported network, and signed in if you use SIWE.
Turn on shortcut="mod+k" and ⌘ K opens the panel. Arrow keys and Enter move through wallets, number keys 1 to 9 pick one, and the last wallet you used is one tap away.

With a WalletConnect project ID, the WalletConnect option becomes a searchable directory with each wallet's official logo. On a phone, picking a wallet opens that exact app instead of whichever wallet the phone defaults to.
Why the default WalletConnect link opens the wrong walletNo CSS import and no extra setup. Wyllet injects its styles, finds installed wallets, and reads everything else from your wagmi config.
Wyllet and the peers your dApp probably has already.
pnpm add wyllet wagmi viem @tanstack/react-queryChains, wallets, WalletConnect and app details in one call.
import { getDefaultConfig, popularChains } from 'wyllet'
export const config = getDefaultConfig({
appName: 'My dApp',
walletConnectProjectId: process.env.NEXT_PUBLIC_WC_PROJECT_ID,
chains: popularChains, // the first chain is the default
})Wrap your app and drop in the button. That's the whole integration.
'use client'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { WagmiProvider } from 'wagmi'
import { WylletButton, WylletProvider } from 'wyllet'
import { config } from './wagmi'
const queryClient = new QueryClient()
export function App() {
return (
<WagmiProvider config={config}>
<QueryClientProvider client={queryClient}>
<WylletProvider shortcut="mod+k">
<WylletButton />
</WylletProvider>
</QueryClientProvider>
</WagmiProvider>
)
}
A wallet connector runs next to your users' funds, so Wyllet keeps its supply chain as small as it can be: zero direct runtime dependencies.
More in the FAQ.
Wyllet is an open-source wallet connector for React dApps. It adds a connect button, an account panel with tokens, activity and networks, toasts, Sign-In With Ethereum and a connection gate on top of wagmi and viem.
Yes. Wyllet is MIT licensed and free for commercial use. WalletConnect project IDs are also free from Reown Cloud.
Only Wyllet itself: it has no direct runtime dependencies. It uses only the libraries a wagmi dApp already has (react, wagmi, viem and @tanstack/react-query) as peer dependencies. WalletConnect support is an optional peer you install and pin yourself.
MetaMask, Phantom, Rabby, OKX and WalletConnect out of the box, any browser wallet that announces itself through EIP-6963, and about 570 mobile wallets through the WalletConnect directory. You can also add your own wallets.
Yes. Wyllet ships with the use client directive and is SSR-safe. Put the providers in a client component and use them from your App Router layout.
Yes. Pick a theme preset, change any design token through CSS variables, add your own class names per element, or build a fully custom trigger with the useWylletButton hook.
Yes. Define any EVM chain with customChain() and pass your own token list. Networks and tokens are set in code, so every user sees the same curated list in the order you choose.
Both are free, open-source React kits on wagmi and viem. Wyllet is built for wagmi v3, while RainbowKit’s latest release supports wagmi v2. Wyllet also has no direct runtime dependencies, opens as a drawer, popover, modal or inline panel, and shows tokens, activity and toasts out of the box. The comparison page at wyllet.dev/compare covers RainbowKit, ConnectKit, Reown AppKit, Privy, Dynamic, thirdweb and Web3-Onboard.
No. Wyllet has no analytics and no servers. The only request it makes on its own is loading the WalletConnect wallet directory, and only when a user opens All wallets. You can turn that off. Balances, ENS names and gas prices are read through your own wagmi transports.

Free, open source and ready for production.