3 min read
A walkthrough of every MDX feature this site supports - headings, lists, code, links, images, tables, and the GFM extensions.
Welcome. This post exists so the MDX pipeline can be eyeballed end-to-end - every block-level construct the renderer supports appears at least once below. If something here looks wrong, the bug is upstream of the post.
The post title above renders as an h1 outside the prose body, so MDX content
starts at h2. The lower levels follow.
A paragraph mixes strong, emphasis, strikethrough, and inline code.
Links can be internal - these route through next/link - or
external, which open in a new tab with the right
rel flags. Both behaviours are wired up in src/mdx-components.tsx.
An unordered list:
An ordered list:
A nested list:
A GFM task list:
Designers know they have achieved perfection not when there is nothing left to add, but when there is nothing left to take away.
- Antoine de Saint-Exupéry
Inline code looks like const answer = 42.
A fenced TypeScript block - syntax highlighting goes through rehype-pretty-code
with shiki, themed light + dark to match the site:
type Greeting = { name: string }
export function hello({ name }: Greeting): string {
return `Hello, ${name}.`
}A shell command, for completeness:
pnpm devMarkdown image syntax routes through next/image via the MDX component map,
so each image is responsive, lazy-loaded, and served as AVIF/WebP where
supported. Relative paths resolve against the post folder - drop assets next
to index.mdx and reference them with ./name.ext.

| Feature | Plugin | Notes |
|---|---|---|
| GFM tables | remark-gfm | This very table. |
| Task lists | remark-gfm | Checkbox lists above. |
| Strikethrough | remark-gfm | ~~like this~~. |
| Heading anchors | rehype-autolink-headings | Appended # links after each h*. |
| Syntax highlighting | rehype-pretty-code | Shiki, themed light + dark. |
| Frontmatter strip | remark-frontmatter | Keeps YAML out of the rendered body. |
Three dashes between sections render as a thematic break:
That's the lot. If you can see all of the above rendered correctly, the pipeline is healthy.