Codama ➤ Renderers ➤ Dart
January 9, 2026 · View on GitHub
This package generates Dart clients from your Codama IDLs. The generated clients are compatible with the Solana Dart package.
1. Prerequisites
1.1 Install Codama
pnpm install -g codama
1.2. Install Dart
2. Renderer Installation
pnpm install -D @limechain/codama-dart
3. Usage
3.1. Add the following script into codama.json.
{
"idl": "path/to/idl",
"before": [],
"scripts": {
"dart": [
{
"from": "@limechain/codama-dart",
"args": [
"generated",
{
"deleteFolderBeforeRendering": true,
"formatCode": true,
"generateBorsh": true
}
]
}
]
}
}
3.2. Run code generation
pnpm codama run dart
3.3. Run Dart Borsh code generation
Note
Only if generateBorsh is set to false
cd generated
dart pub get
dart run build_runner build
4. Generated Output
The renderer generates a complete Dart package with the following structure:
lib/
└─ProgramName
├── lib.dart # Main library export file
|
├── accounts/ # Account data classes
│
├── instructions/ # Instruction functions
│
├── types/ # Custom type definitions
│
├── errors/ # Program error classes
│
├── pdas/ # PDA derivation functions
│
└── programs/ # Program constants and metadata
5. Features
- Account Serialization/Deserialization: Automatic Borsh serialization for all account types
- Instruction Builders: Type-safe instruction creation with automatic PDA resolution
- PDA Derivation: Automatic generation of PDA derivation functions
- Error Handling: Strongly-typed program error definitions
- Type Safety: Full Dart type safety with null safety support
6. Options
The renderVisitor accepts the following options.
| Name | Type | Default | Description |
|---|---|---|---|
deleteFolderBeforeRendering | bool | true | Flag for deleting the output folder before generating it again. |
formatCode | bool | true | Flag for formatting the Dart code after generation |
generateBorsh | bool | true | Flag for running Borsh code generation after rendering |
enableWorkspace | bool | false | Generates all clients to a shared workspace, each program in its own subfolder. |
workspaceOutDir | string | workspace | Name of the shared workspace directory. |