---
title: Migrating to Kit
description:
  How @solana/web3.js and wallet-adapter concepts map onto @solana/kit.
---

If you are coming from `@solana/web3.js` (v1), `@solana/wallet-adapter-*`, or
the earlier framework-kit packages (`@solana/client`, `@solana/react-hooks`,
`@solana/web3-compat`), those approaches are superseded. New apps build directly
on `@solana/kit` and the kit plugins. This page maps the concepts you already
know onto their Kit equivalents.

## Concept mapping

| web3.js v1 / 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              |

## Coming from web3.js?

If you maintain a large `@solana/web3.js` v1 codebase and a full rewrite to Kit
isn't practical yet, web3.js v3 is the bridge. It currently ships as
`@solana/web3.js@rc` (the `3.0.0-rc` line) and rebuilds the classic class-based
API — `Connection`, `Keypair`, `Transaction` — on top of `@solana/kit`
internals. Because it sits on Kit, interop is tight: `PublicKey` is a deprecated
alias of `Address`, and a v3 `Keypair` structurally satisfies Kit's
`KeyPairSigner`, so you can pass it directly to Kit APIs, plugins, and
Codama-generated clients.

v3 is still a **release candidate** — pin exact versions and expect some API
churn between RCs. It is a legacy-interop path, not a default for new work; new
apps should build directly on Kit. For the migration itself, see the official
[web3.js v1 → v3 migration guide](https://github.com/solana-foundation/solana-web3.js/blob/v3.x/docs/web3js-v1-to-v3-migration.md).

## 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](/docs/frontend/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](https://www.npmjs.com/package/@solana/connector), which uses
Kit primitives directly to connect to wallets.

<Callout type="info" title="Still on wallet-adapter?">
  If you maintain an app built on `@solana/wallet-adapter-*` and are not ready
  to migrate, the [wallet-adapter
  repository](https://github.com/anza-xyz/wallet-adapter) remains the reference
  for that stack. For anything new, prefer the Kit wallet plugin.
</Callout>

## Where to go next

- [Kit client](/docs/frontend/client) — assemble a client from plugins.
- [React](/docs/frontend/react-hooks) — `@solana/react` bindings and wallet
  hooks.
- [Next.js tutorial](/docs/frontend/nextjs-solana) — a full app end to end.
