Architecture Best Practices
Design implications of each component for builders.
Search across all documentation pages
Design implications of each component for builders.
confirmed or finalized. Do not treat processed as final.Agave 4.1.1 underpins every item—pin CLI 3.0.10, Anchor 0.32.1, and validator version together in CI.
Use Solana CLI 3.0.10, which pairs with Agave 4.1.1. Install with agave-install init 4.1.1 (or your team's pin file), then verify with solana --version and agave-install --version.
Use @solana/kit 7.0.0 for new TypeScript—typed RPC methods, smaller API surface, and examples on this page already use Kit. Keep web3.js only for legacy codebases; migrate RPC calls and transaction building incrementally.
Use confirmed for dashboards and finalized before withdrawals or cross-system callbacks.
Follow checklist item B: simulate txs, read logMessages, and decode program errors before retry.
Yes—point CLI and RPC to https://api.devnet.solana.com. Behavior matches mainnet; only account data and economics differ.
Checklist C covers priority fees and CU—always set Compute Budget instructions under congestion.
Anchor 0.32.1 uses #[program], Context<T>, and #[derive(Accounts)] with explicit mut/signer constraints—run anchor build and anchor test on 0.32.1 via avm use 0.32.1.
Start Surfpool 0.12.0, point RPC to its port, and run anchor test or client integration scripts against forked accounts.
Use LiteSVM for fast program checks; use Surfpool when you need mainnet-fork realism.
The validator client rebranded to Agave (4.1.1), CLI 3.0.10 aligns with it, and Alpenglow work is changing finality—pin versions and read release notes each upgrade.
simulateTransaction, getTransaction, getSignatureStatuses, and getAccountInfo cover most checklist validations.
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 19, 2026