Node.js Bindings
The Node.js binding has a book of its own:
→ dynamic-config for Node.js
npm install dynamic-config-node
import { DynamicConfig, zodValidator } from "dynamic-config-node"
import { z } from "zod"
const Database = z.object({ host: z.string(), port: z.number().default(5432) })
const db = await new DynamicConfig({ key: "db", validate: zodValidator(Database) })
.file("config.toml")
.env("APP_")
.initAndCurrent()
// ^? { host: string; port: number }
Rust resolves, your schema validates, JavaScript reads a cached object. One prebuilt binary per platform through Node-API, so the same binary serves every Node version the package claims and nothing compiles at install time.
The Node documentation is its own book, on the same site, and links back here for the engine's own behaviour.
What is in it
| Chapter | What it answers |
|---|---|
| API Reference | Every method, every argument, every default |
| Schemas | Zod, Ajv, a function of your own, and no schema at all |
| Watching & Hooks | The watcher, onReload, onChange, and the rejected edit that changes nothing |
| Web Frameworks | Express, Fastify, NestJS, Next.js — and where the browser's boundary is |
| Remote Stores | A store written in JavaScript, and where the eight Rust ones are |
| Implementation Details | The thread rule, and why every load is async |
| Limitations | What it will not do, and why |