Introduction
butr is a set of multi-chain wallet-management primitives for React. EVM and Solana, discovered and managed through one composable hook surface.
butr discovers EVM (EIP-6963 / EIP-1193) and Solana (Wallet Standard) wallets,
manages their connection state across reloads, and exposes everything through
small composable React hooks. It does not wrap viem, wagmi, or @solana/web3.js
— it sits underneath them and hands you a raw signer so you keep using whatever
chain library you already know.
What butr is
- Multi-chain by default. One provider, one pool. A user can connect MetaMask (EVM) and Phantom (SVM) at the same time; butr tracks each platform independently.
- Connector-shaped. Every wallet — injected, WalletConnect, Ledger, or one
you write yourself — is a
WalletAdapterplugged in through a single seam:WalletManagerConfig.createConnector. - No lock-in.
getSigner()returns the underlying provider. You bridge it into viem / wagmi /@solana/web3.js/@solana/kitwith a few lines. - Modular. Install only the packages you need. The core has no React and no protocol code; protocols live in separate packages.
The package model
butr is layered. Each package depends only on the ones below it.
| Package | What it does | Depends on |
|---|---|---|
@usebutr/core | Types, the wallet store, persistence, the discovery seam. No React, no protocols. | — |
@usebutr/react | Provider + hooks over the store. | @usebutr/core |
@usebutr/evm | EIP-1193 / EIP-6963 / injected discovery and adapters. | @usebutr/core |
@usebutr/svm | Wallet Standard discovery and adapters for Solana. | @usebutr/core |
@usebutr/wallets | Batteries-included EVM+SVM discovery source (autoDiscovery) + combined chain registries. | core, react, evm, svm |
@usebutr/walletconnect | WalletConnect v2 adapter for EVM mobile wallets. | core, evm |
@usebutr/ledger | Ledger hardware-wallet adapter (WebUSB, signing-only). | @usebutr/core |
@usebutr/testing | Fake adapter + fake persistence for unit tests. | @usebutr/core |
Most apps want @usebutr/wallets (it pulls in @usebutr/react, @usebutr/evm,
@usebutr/svm, @usebutr/core). Pass autoDiscovery() from @usebutr/wallets to
WalletManagerProvider from @usebutr/react for EVM+SVM discovery. Reach for
the lower-level packages when you want an EVM-only bundle or a custom discovery
pipeline.
Where to go next
- Installation — pick your packages.
- Quickstart — a working app in five
minutes with
WalletManagerProvider. - Core concepts — the mental model: connectors, the pool, platforms, hydration.
- Standards compliance — how butr follows the Wallet Standard, EIP-6963, and EIP-1193, and the deliberate edges.
- Guides — connect, sign, send, switch chains.
- API reference — every export, per package.
All code in these docs is taken from the runnable demo apps and package tests in the butr repository, not invented. Each guide cites its source.