Tashkent
|
May 15, 2026
08:27:57 PM

Why MDX for this blog

May 10, 20261 min read

The blog is filesystem-only on purpose. Posts live as .mdx files in git, the build pulls them in at compile time, and there is no CMS or database in the loop. The whole thing should feel like editing a folder of text files.

Why not Contentlayer / Velite

Contentlayer is archived. Velite works fine but adds a build step and a generated types directory that I would rather not maintain for a personal blog. next-mdx-remote/rsc is what's left: render MDX from arbitrary filesystem paths inside a React Server Component, no build glue.

Why dual-theme syntax highlighting

rehype-pretty-code emits both light and dark Shiki tokens in the same pass. CSS hides one based on the .dark class. No client-side highlighter, no flash on theme switch.