← voltar ao blog
código14 de maio de 2026

Pare de quebrar produção: valide variáveis de ambiente com Zod

Como validar e tipar variáveis de ambiente usando Zod no Next.js.

Tipando variáveis de ambiente com Zod

Pare de quebrar produção com .env

Todo dev já passou por isso:

DATABASE_URL undefined

Ou pior:

API_KEY is missing

E claro… isso só acontece em produção.

A solução?

Validar suas variáveis de ambiente com Zod.


Estrutura

src/
 └── env/
      └── index.ts

Instalando

npm install zod

Criando o schema

import { z } from 'zod';
 
const envSchema = z.object({
  DATABASE_URL: z.string().url(),
  NEXT_PUBLIC_APP_URL: z.string().url(),
  JWT_SECRET: z.string().min(1),
});

Agora o Zod vai validar tudo automaticamente.


Fazendo parse das variáveis

export const env = envSchema.parse(process.env);

Arquivo completo:

import { z } from 'zod';
 
const envSchema = z.object({
  DATABASE_URL: z.string().url(),
  NEXT_PUBLIC_APP_URL: z.string().url(),
  JWT_SECRET: z.string().min(1),
});
 
export const env = envSchema.parse(process.env);

Usando no projeto

Agora em vez de:

process.env.DATABASE_URL;

Você usa:

env.DATABASE_URL;

E ganha:

  • autocomplete
  • type safety
  • validação
  • erros claros
  • menos bugs idiotas

O melhor?

Se esquecer alguma variável:

O app quebra imediatamente.

E isso é ótimo.

Porque quebrar cedo é MUITO melhor do que quebrar em produção.


Dica extra

Você também pode separar variáveis client/server.

Exemplo:

NEXT_PUBLIC_API_URL;

Tudo que começa com NEXT_PUBLIC_ vai para o client.

O resto fica apenas no servidor.


Final

Esse é um daqueles upgrades pequenos que deixam o projeto muito mais profissional.

Poucas linhas. Muito mais segurança.

E depois que você começa a usar… fica difícil voltar.