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-adapter | Kit |
|---|---|
new Connection(url) | createSolanaRpc(url), or .use(solanaRpc({ rpcUrl })) on a client |
PublicKey | Address — coerce a string with address("...") |
Keypair | generateKeyPairSigner() or the @solana/kit-plugin-signer plugins |
SystemProgram.transfer(...) | getTransferSolInstruction(...) from @solana-program/system |
LAMPORTS_PER_SOL math | lamports(...) from @solana/kit |
Transaction / VersionedTransaction | Transaction 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
- Kit client — assemble a client from plugins.
- React —
@solana/reactbindings and wallet hooks. - Next.js tutorial — a full app end to end.
Is this page helpful?