Migrating to Kit

If you are coming from @solana/web3.js (legacy), @solana/wallet-adapter-*, or the earlier framework-kit packages (@solana/client, @solana/react-hooks, @solana/web3-compat), we encourage migrating to @solana/kit plugins or @solana/web3.js v3 (or higher).

This page maps the concepts you already know onto their Kit equivalents.

Concept mapping

web3.js (legacy) / wallet-adapterKit
new Connection(url)createSolanaRpc(url), or .use(solanaRpc({ rpcUrl })) on a client
PublicKeyAddress — coerce a string with address("...")
KeypairgenerateKeyPairSigner() or the @solana/kit-plugin-signer plugins
SystemProgram.transfer(...)getTransferSolInstruction(...) from @solana-program/system
LAMPORTS_PER_SOL mathlamports(...) from @solana/kit
Transaction / VersionedTransactionTransaction messages built and packed by the transaction planner
sendAndConfirmTransaction(...)client.sendTransaction([...]) (planner signs, sends, and confirms)
@solana/wallet-adapter-*@solana/kit-plugin-wallet + Wallet Standard discovery

web3.js v3 keeps the class-based names above — Connection, Keypair, Transaction, PublicKey — as thin wrappers over Kit internals, so the Kit column also describes what those classes do under the hood in v3.

Coming from web3.js?

If you maintain a large @solana/web3.js (legacy) codebase and a full rewrite to Kit isn't practical, web3.js v3 is the bridge. Install it with @solana/web3.js. It rebuilds the classic class-based API — Connection, Keypair, Transaction, PublicKey — on top of @solana/kit internals. Because it sits on Kit, interop is tight: PublicKey is the primary address type and its .toBase58() returns Kit's branded Address string, and a v3 Keypair implements Kit's KeyPairSigner, so you can pass it directly to Kit APIs, plugins, and Codama-generated clients.

v1 transactions and web3.js (legacy)

If you send v1 transactions with web3.js, you must use v3+.

For the migration itself, see the official web3.js v1 → v3 migration guide.

Wallets

Kit does not use wallet-adapter. @solana/kit-plugin-wallet discovers Wallet Standard wallets and exposes them through client.wallet and the React hooks. Modern wallets (Phantom, Solflare, Backpack, and others) advertise themselves through Wallet Standard, so no per-wallet adapter package is required.

You may also use pre-built tools like @solana/connector, which uses Kit primitives directly to connect to wallets.

Still on wallet-adapter?

If you maintain an app built on @solana/wallet-adapter-* and are not ready to migrate, the wallet-adapter repository remains the reference for that stack. For anything new, prefer the Kit wallet plugin.

Where to go next

Is this page helpful?

Table of Contents

Edit Page
© 2026 Solana Foundation. All rights reserved.