butr

Introduction

butr is a set of multi-chain wallet-management primitives for React. EVM, Solana, Sui, Bitcoin, and Polkadot, discovered and managed through one composable hook surface.

butr discovers EVM (EIP-6963 / EIP-1193), Solana / Sui / Bitcoin (Wallet Standard), and Polkadot (injectedWeb3) wallets, manages their connection state across reloads, and exposes everything through small composable React hooks. It does not wrap viem, wagmi, gill, or framework-kit; 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 WalletAdapter announced through a single seam: WalletManagerConfig.sources.
  • No lock-in. getSigner() returns the wallet's own provider, tagged by transport ({ kind: "eip1193", provider }, { kind: "wallet-standard", wallet }, …). You bridge it into viem / wagmi / gill / framework-kit / @solana/kit (or legacy @solana/web3.js) with 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.

PackageWhat it doesDepends on
@usebutr/coreTypes, the wallet manager, persistence, chain registries, the discovery seam. No React.—
@usebutr/reactProvider + hooks over the manager.@usebutr/core
@usebutr/evmEIP-1193 / EIP-6963 / injected discovery and adapters.@usebutr/core
@usebutr/wallet-standard-sharedThe Wallet Standard adapter core, getFeature, and the wallet-standard signer.@usebutr/core
@usebutr/svmWallet Standard discovery and adapters for Solana.@usebutr/core, @usebutr/wallet-standard-shared
@usebutr/suiWallet Standard discovery and adapters for Sui.@usebutr/core, @usebutr/wallet-standard-shared
@usebutr/bitcoinWallet Standard + injected discovery and adapters for Bitcoin.@usebutr/core, @usebutr/wallet-standard-shared
@usebutr/polkadotinjectedWeb3 discovery and adapters for Polkadot, with a Wallet Standard fallback.@usebutr/core, @usebutr/wallet-standard-shared
@usebutr/walletsBatteries-included five-platform discovery source: autoDiscovery().@usebutr/core, @usebutr/evm, @usebutr/svm, @usebutr/sui, @usebutr/bitcoin, @usebutr/polkadot
@usebutr/walletconnectWalletConnect v2 adapters for EVM, Solana, Sui, and Bitcoin mobile wallets.@usebutr/core, @usebutr/evm, @usebutr/svm, @usebutr/sui, @usebutr/bitcoin
@usebutr/ledgerLedger hardware-wallet adapters (WebUSB, signing-only).@usebutr/core, @usebutr/svm, @usebutr/sui
@usebutr/testingFake adapter, fake persistence and the adapter contract suite (/contract).@usebutr/core

Most apps want @usebutr/react plus @usebutr/wallets, which pulls in @usebutr/core and every per-platform adapter package. Put autoDiscovery() in the provider's config.sources for discovery across all five platforms. Reach for a single platform package when you want a single-platform bundle: its discover*Adapters export goes into sources as-is.

Where to go next

  • Installation: pick your packages.
  • Quickstart: a working app in five minutes with WalletManagerProvider.
  • Core concepts: the mental model of adapters, the manager, 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.

Code in these docs follows the runnable demo apps and package tests in the butr repository. Each guide cites its source.

Demos

Try the live demo, or run one of the 15 examples: