butr

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 WalletAdapter plugged 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/kit 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 store, persistence, the discovery seam. No React, no protocols.
@usebutr/reactProvider + hooks over the store.@usebutr/core
@usebutr/evmEIP-1193 / EIP-6963 / injected discovery and adapters.@usebutr/core
@usebutr/svmWallet Standard discovery and adapters for Solana.@usebutr/core
@usebutr/walletsBatteries-included EVM+SVM discovery source (autoDiscovery) + combined chain registries.core, react, evm, svm
@usebutr/walletconnectWalletConnect v2 adapter for EVM mobile wallets.core, evm
@usebutr/ledgerLedger hardware-wallet adapter (WebUSB, signing-only).@usebutr/core
@usebutr/testingFake 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.

On this page