Built a custom blog engine on Next.js App Router using MDX for content, Shiki for syntax highlighting, and full static rendering with incremental regeneration. No JavaScript ships to the reader unless a component demands it.
Most developer blogs ship 300–500KB of JavaScript for basic Markdown rendering. I wanted a blog that felt as fast as a text file — where the only JavaScript loaded was strictly necessary for interactive elements, not framework overhead.
Built on Next.js App Router with React Server Components as the default. MDX files are transformed at build time with Shiki for syntax highlighting (no client-side highlighter). Images are optimised and lazy-loaded. The only client component is the theme toggle. ISR ensures content stays fresh without full rebuilds.
Achieves a perfect 100 Lighthouse score on all four metrics. Initial JavaScript payload is under 100KB. Time-to-interactive on a 3G connection is under 2 seconds. The build approach was written up on the blog itself and reached the top of Hacker News for one afternoon.