Codama ➤ Renderers ➤ Dart

January 9, 2026 · View on GitHub

Tests npm npm-downloads

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

https://dart.dev/get-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.

NameTypeDefaultDescription
deleteFolderBeforeRenderingbooltrueFlag for deleting the output folder before generating it again.
formatCodebooltrueFlag for formatting the Dart code after generation
generateBorshbooltrueFlag for running Borsh code generation after rendering
enableWorkspaceboolfalseGenerates all clients to a shared workspace, each program in its own subfolder.
workspaceOutDirstringworkspaceName of the shared workspace directory.