Codama
Generate @solana/kit 7.0.0 clients from Anchor 0.32.1 IDLs.
Search across all documentation pages
Generate @solana/kit 7.0.0 clients from Anchor 0.32.1 IDLs.
npm install -D @codama/cli @codama/nodes-from-anchor @codama/renderers-js{
"idl": "target/idl/my_program.json",
"scripts": { "js": "@codama/renderers-js" }
}When to reach for this:
anchor build
npx codama run --config codama.jsonimport { createSolanaRpc } from "@solana/kit";
import { fetchCounter, getIncrementInstruction } from "./generated/clients/js";
const rpc = createSolanaRpc(process.env.RPC_URL!);
const account = await fetchCounter(rpc, counterAddress);
const ix = getIncrementInstruction({ counter: counterAddress, authority: signer });What this demonstrates:
fetch* helpers combine RPC + decoder.get*Instruction returns kit-native instructions.| Alternative | Use When | Don't Use When |
|---|---|---|
| anchor-client-gen (legacy) | Old repos | New Codama pipeline |
| Hand-written codecs | Tiny one-off | Production Anchor apps |
Run anchor build; point Codama at target/idl JSON.
Every on-chain interface change in CI.
Codama renders @solana/kit native functions.
Optional sugar atop kit.
Import generated clients in client components for writes.
Surfpool + devnet integration tests.
Do not mix with generated kit clients.
One Codama config per program or monorepo workspace.
Use generated decoders with getAccountInfo.
Map program error codes from IDL metadata.
Stack versions: This page was written for Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, and LiteSVM 0.6.x.
Reviewed by Chris St. John·Last updated Jul 16, 2026