Why use butr
Five concrete payoffs — multi-chain pool, no chain-library lock-in, modular install, a React-free core, and standards compliance — each backed by a guide.
Why butr exists covers the problem. This page is the payoff: what you get, and the guide that proves each claim.
One pool for EVM and SVM
A single user can connect MetaMask (EVM) and Phantom (SVM) at once. Each platform tracks its own selection independently; one component reads both in the same render. No second stack, no second hydration path.
→ Multi-wallet and chain switching
No chain-library lock-in
getSigner() returns the underlying provider. You bridge it into viem, wagmi,
@solana/web3.js, or @solana/kit in a few lines and keep that library's API
for reads and signing. butr owns discovery and connection state; your library
owns RPC.
Install only what you ship
The core has no React and no protocol code. An EVM-only dapp drops
@usebutr/svm entirely; a custom discovery pipeline skips the
batteries-included package. You bundle the seams you use, nothing else.
A core that is not React
@usebutr/core is the store, persistence, and discovery seam — usable from any
TypeScript runtime. @usebutr/react is the binding, so the same connection
model works across Vite, Next.js, TanStack Start, and Expo without rewrites.
Standards-compliant and testable
butr follows EIP-6963, EIP-1193, and the Wallet Standard, with the deliberate
edges documented rather than hidden. @usebutr/testing ships fake adapters and
fake persistence, so wallet flows are unit-testable without a browser
extension.
→ Standards compliance · Testing
When butr is the wrong tool
butr earns its place when you have more than one wallet, more than one chain platform, or you want connection state independent of your chain library. A single-chain app with one wallet that is already happy on wagmi + RainbowKit does not need butr — adding it is a layer you would not use. Reach for it when the wallet picture stops fitting in one library's mental model.
Every code sample in the linked guides comes from the runnable demo apps in the repository, not invented snippets.
Why butr exists
Wallet tooling makes you pick a chain, couples connection state to a chain library, or locks you into a connect modal — butr is the layer that does none of that.
Comparison with other solutions
butr is a discovery and connection-state layer, not a chain library or a connect modal — here is how it lines up against the categories of tools it composes with.