gill
A higher-level TypeScript layer bundling @solana/kit patterns for common flows.
Recipe
npm install gill @solana/kit@7.0.0import { createSolanaClient } from "gill";When to reach for this:
- Bootstrapping apps quickly atop kit 7.0.0.
- Standard RPC + transaction flows without boilerplate.
- create-solana-dapp style projects.
Working Example
import { createSolanaClient } from "gill";
import { address } from "@solana/kit";
const { rpc, sendAndConfirmTransaction } = createSolanaClient({
urlOrMoniker: "devnet",
});
const balance = await rpc.getBalance(address("PUBKEY")).send();What this demonstrates:
createSolanaClientwires RPC and common send helpers.- Moniker shortcuts (
devnet,mainnet) reduce env typos. - Underlying types remain kit-native for escape hatches.
Deep Dive
How It Works
- gill re-exports and composes kit primitives.
- Ships helpers for frequent program interactions.
- Not a replacement for understanding kit messages.
- Version compatibility tracks kit majors.
Gotchas
- Treating gill as black box - hard to debug txs. Fix: learn kit pipeline.
- Importing all of gill - bundle size. Fix: narrow imports if package supports subpaths.
- Moniker in production - ambiguous endpoints. Fix: explicit provider URLs on mainnet.
- Skipping simulation - gill send helpers still need preflight discipline.
- Assuming gill includes Codama output - generate program clients separately.
Alternatives
| Alternative | Use When | Don't Use When |
|---|---|---|
| Raw @solana/kit | Full control | Rapid prototype |
| Anchor Program | Legacy fluent API | Kit-first architecture |
FAQs
Anchor 0.32.1 IDL?
Run anchor build; point Codama at target/idl JSON.
Regenerate when?
Every on-chain interface change in CI.
kit typed clients?
Codama renders @solana/kit native functions.
gill required?
Optional sugar atop kit.
Next.js?
Import generated clients in client components for writes.
Testing?
Surfpool + devnet integration tests.
web3.js?
Do not mix with generated kit clients.
Multiple programs?
One Codama config per program or monorepo workspace.
Account fetch?
Use generated decoders with getAccountInfo.
Errors?
Map program error codes from IDL metadata.
Related
- @solana/kit Basics - fundamentals
- Codama - program-specific clients
- @solana/kit, Codama & gill - comparison
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.