swbanga.com
By Super Washington Banga6 min readEngineering

Why your content pipeline should validate at build time

Frontmatter validation at build time catches authoring errors before they reach production — here is the pattern and its guarantees.

  • ssg
  • nextjs

The failure mode

A content site without validation has two failure modes: silently dropped fields (Zod's default is to strip unknown keys) and typo'd field names that render empty sections. Both ship to production unnoticed.

The fix

Every .mdx file under /content/ is parsed with gray-matter and validated with a strict Zod schema during static generation:

ts
const parsed = schema.safeParse(file.data);
if (!parsed.success) {
  throw new Error(
    `Invalid frontmatter in ${filePath}:\n${formatZodIssues(parsed.error)}`,
  );
}

What you get

  • A build that fails loudly with the file path and the offending field
  • A single canonical field contract for every content type
  • No runtime cost: the validator executes once, at build time

Comments are currently disabled. Coming soon!