Skip to main content

Zod, Valibot, and ArkType

Built-in s needs no extra packages. Zod, Valibot, and ArkType are optional — install only what you use:

npm install zod
# or
npm install valibot
# or
npm install arktype

All external schemas must support synchronous Standard Schema validation.

Zod​

Needs Zod 3.24+ or Zod 4.

import { loadEnv } from "tiny-typed-env";
import { z } from "zod";

export const env = loadEnv(
{
DATABASE_URL: z.string().url(),
PORT: z.coerce.number().default(3000),
},
{ runtimeEnv: process.env },
);

Valibot and ArkType​

Same pattern — pass schemas into loadEnv (or createEnv on Node):

import * as v from "valibot";
import { type } from "arktype";
import { loadEnv } from "tiny-typed-env";

const env = loadEnv(
{
API_KEY: v.string(),
PORT: type("string.numeric.parse"),
},
{ runtimeEnv: process.env },
);

Mixing with s​

You can mix built-in and external schemas in one map:

import { createEnv, s } from "tiny-typed-env/node";
import { z } from "zod";

export const env = createEnv({
PORT: s.port({ default: 3000 }),
DATABASE_URL: z.string().url(),
});