Zod en el servidor y en el cliente: el schema que creés una vez y las tres formas en que se rompe en runtime
El 80% de los proyectos Next.js que usan Zod tienen el mismo schema importado desde tres contextos distintos. Y solo uno de esos tres contextos se comporta exactamente como Zod promete.
Sí, leíste bien. El modelo mental de "definí el schema una vez y validá en todos lados" es verdad en la librería, pero en un stack real con Next.js 16 —Server Actions, edge middleware y API routes— aparecen tres entornos de ejecución con restricciones distintas, y Zod no siempre llega completo a los tres.
Mi tesis es esta: Zod es una de las mejores herramientas del ecosistema TypeScript, pero compartir el mismo schema entre cliente, servidor Node.js y edge runtime sin pensar en las diferencias de contexto produce tres clases de falla específicas que no son obvias hasta que aparecen. Este post documenta esas tres fallas y el patrón que las evita.
El problema que nadie dibuja en el diagrama






