William Rafael
← Back to blog

A Markdown/MDX blog in Next.js: productivity without tight coupling

A practical strategy for Markdown/MDX blogs with frontmatter, SEO, efficient rendering and a solid developer experience.

2023-07-22 · By willsamy · English edition

Markdown/MDX with Next.js offers a useful balance between editorial autonomy and technical control. Keep parsing, metadata and rendering clearly defined.

Frontmatter as a contract

  • Minimum fields: title, slug, date, description, tags, author, draft, coverImage and excerpt.
  • Validate frontmatter during the build with tools such as Zod or Yup so missing critical information fails early.
  • Keep slugs stable to avoid breaking search visibility.

Markdown versus MDX

  • Markdown is enough for most posts and is simpler and faster.
  • Use MDX when React components such as callouts, videos or sandboxes are needed.
  • Begin with .md and promote a post to .mdx only when its content requires it.

Performance and security

  • Lazy-load heavy MDX components through dynamic imports.
  • Sanitize or serialize output to avoid uncontrolled script execution.
  • Use next/image for automatically optimized images.

SEO and accessibility

  • Derive metadata from frontmatter: title, description and cover.
  • Use a single H1 and organized H2/H3 headings.
  • Use appropriate noopener noreferrer link relationships for external links.

Editorial workflow

  • Organize src/content/posts/*.md with filenames matching the slugs.
  • Make local previews quick to run and inspect.
  • Use linters for conventions such as heading capitalization and valid links.

Conclusion

Markdown/MDX provides a pragmatic, scalable blog architecture. Editorial teams retain autonomy while technical teams retain quality and performance control. Add components where needed and keep the frontmatter contract stable.

A Markdown/MDX blog in Next.js: productivity without tight coupling | William Rafael