Head-to-head comparisons
Which config pattern should your team use? Short, opinionated comparisons.
dotenv vs direnv: which env loader should you use?
dotenv loads .env inside your app at runtime. direnv loads per-directory env into your shell. Comparison of use cases, trade-offs, and when you want both.
.env vs a secrets manager (Doppler, Infisical, Vault)
When does a plain .env stop being enough? Honest comparison of .env files against Doppler, Infisical, and Hashicorp Vault. Cost, setup, audit, rotation.
NEXT_PUBLIC_ vs VITE_: client env prefixes compared
Both Next.js and Vite inline prefixed env vars at build time. Same idea, different names, slightly different semantics. What to use when, and the gotchas.
.env files vs Kubernetes Secrets & ConfigMaps
How .env files map to Kubernetes Secrets and ConfigMaps. When to split, when to combine, and how to avoid the classic base64-is-not-encryption trap.
dotenv vs config: which should you use in 2026?
An honest comparison of dotenv and config-based libraries (node-config, convict, zod-env). Trade-offs around validation, type safety, and schema enforcement.
.env vs JSON config: when to use which
When .env wins, when JSON wins, and why most teams end up with a hybrid. Comparison of parsing cost, type safety, ergonomics, and CI/CD friendliness.