Vibeleaderboard
Index / tool
Visit wagmi.sh
Category
Crypto
Rank

Previous survey · No. 274 ·

Pricing
Open Source
Type
TOOL
Use case
Coding
Builder
wevm
Latest release
wagmi@3.7.9
Date

About

Reactive React hooks for Ethereum — the most popular library for building Ethereum dapps with wallets, contracts, and transactions.

What it does

It is a family of framework bindings, one each for React, Vue and Solid, wrapping a shared vanilla core that talks to browser extensions and remote nodes. An app uses it to connect an account, call and submit on-chain functions, and stay in sync as chain state changes, with caching and deduplication handled underneath. A companion command line tool generates typed bindings from a contract configuration instead of hand writing them.

Why it's ranked here

The action and hook surface covers a full dapp lifecycle: connecting a wallet, reading and writing contracts, watching new blocks and pending transactions, backed by connectors already built for MetaMask, WalletConnect, Coinbase Wallet, Safe, and generic injected wallets. Four frontend targets, React, Vue, Solid, and a vanilla core, share that same logic instead of forking it per framework. The workspace also carries a strict toolchain, covering type checking, unused export detection, and release versioning, which reads as an engineering first project rather than a wrapper built for one framework and adapted later.

What's good

Every action and hook ships its own parameter and return type export, so editors surface accurate autocomplete instead of one generic function signature. Renamed functions keep their old names as deprecated aliases that forward to the replacement, so upgrading rarely breaks working code outright. Wallet connectors are separate, purpose built implementations rather than one generic adapter, covering MetaMask, WalletConnect, Coinbase Wallet, Safe, and generic injected browser wallets. A vanilla core package means the same actions run with no UI framework attached at all.

Tradeoffs

The React package needs TanStack Query and a separate Ethereum interface library installed alongside it, not just the hooks themselves, so adopting it for one hook pulls in several packages. The workspace requires a recent Node runtime and refuses any package manager other than pnpm, which can trip up contributors used to npm or yarn. Several exports carry a deprecated twin, such as account named functions superseded by connection named ones, a sign the naming has already shifted once and may again. The surface is large: dozens of actions and matching hooks per framework, so a newcomer has to search rather than guess which one applies.

How to use it well

Reach for this when the frontend is React, Vue, or Solid and the app needs to read balances, submit transactions, and react to wallet or chain changes without hand rolling connection state. Pair the React or Vue packages with their query caching layer to get the deduplication already wired in rather than adding a separate data fetching library on top. For a plain script, a backend job, or a framework it does not wrap, the vanilla core package's actions work alone. When contract calls repeat across a project, the command line generator can produce typed bindings from a contract configuration instead of writing them by hand.

Technical notes+

packages/core/src/exports/index.ts exports viem style actions (call, connect, readContract, writeContract, simulateContract, sendTransaction, watchBlocks) each paired with matching ErrorType, Parameters and ReturnType exports. packages/react/src/exports/index.ts wraps the same actions as hooks (useReadContract, useWriteContract, useWatchContractEvent) and keeps deprecated aliases such as useAccount pointing at useConnection; packages/vue/src/exports/index.ts and packages/solid/src/exports/index.ts mirror that surface as composables and primitives respectively, both re-exporting the core actions directly rather than reimplementing them. packages/connectors/src/exports/index.ts assembles per-provider connector functions (injected, mock, tempoWallet, baseAccount, coinbaseWallet, metaMask, safe, walletConnect) from a mix of core re-exports and local implementations. packages/cli/src/cli.ts defines a two-command interface, generate and init, built on the cac argument parser. package.json shows a pnpm-only monorepo, its preinstall script enforces pnpm specifically, with Biome for lint and format, knip for unused-export detection, Changesets for release versioning, and vitest, Playwright and testcontainers among the test dependencies; pnpm-workspace.yaml pins a shared dependency catalog and a minimum release age policy on installs. LICENSE is the MIT license.

Observed

License
MIT
Language
TypeScript, built on a pnpm monorepo
Interfaces
Library (framework hooks, composables and vanilla actions) plus a command line interface with generate and init commands
Packaging
Split into separate npm packages per framework target (React, Vue, Solid) sharing one core package
Wallet connectors
Separate connector modules per provider: injected, mock, MetaMask, Coinbase Wallet, Safe, WalletConnect, plus a tempo wallet connector
Test tooling
vitest, Playwright browser tests, and testcontainers listed as devDependencies
Lint and release tooling
Biome for lint and format, knip for unused-export detection, Changesets for release versioning
API stability pattern
Renamed exports (account named functions and hooks) kept as deprecated aliases pointing to their connection named replacements
Package manager policy
Workspace preinstall script blocks any package manager other than pnpm

Read from package.json, LICENSE, packages/core/src/exports/index.ts, packages/react/src/exports/index.ts, packages/connectors/src/exports/index.ts, packages/cli/src/cli.ts, packages/vue/src/exports/index.ts, packages/solid/src/exports/index.ts, packages/core/README.md, packages/react/README.md, site/index.md, pnpm-workspace.yaml, .github/README.md.

What it can do

  • Connect to Ethereum wallets

    Wallet provider (MetaMask, WalletConnect, etc.) → Connected wallet instance and account information

  • Read smart contract data

    Contract address and function parameters → Contract state data and function return values

  • Execute smart contract transactions

    Contract address, function name, and transaction parameters → Transaction hash and execution result

  • Monitor wallet account changes

    Connected wallet → Real-time account address and connection status updates

  • Track transaction status

    Transaction hash → Transaction confirmation status and receipt data

  • Fetch network information

    Ethereum network connection → Current network ID, block number, and chain details

  • Sign messages with wallet

    Message content and connected wallet → Cryptographic signature

Tags

ethereumreacthooksweb3wevm

Tech Stack

Node.jsTypeScript

Media

wagmi

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.