D
r/design
@marcelo

Building MDX Forum — a 6-month design-engineering retro

Six months ago we kicked off MDX Forum: a Reddit-style community surface built on top of our agency's design system. Today it's serving real traffic and we shipped 47 features along the way. Here's what worked.

Design tokens are non-negotiable

Every spacing, color, and typography decision lives in a CSS variable. When the entire team can change a value in one place and see it everywhere, the cost of refining the system drops to near-zero. We iterate on the row gap, panel padding, or meta color hierarchy every week. None of that would be possible with hardcoded values.

Component primitives, not page templates

Our first instinct was to build page templates: a <HomePage>, a <CommunityProfilePage>, etc. Three weeks in we threw all of those away. Templates lock you into a layout. Primitives let you compose. Now we have <RailPanel>, <PostCard>, <FeedLayout>, and pages are 50 lines of composition each.

SSR + React Router 7 was the right call

We considered Next, Remix, and Astro. We picked React Router 7 framework mode because the routing model is the cleanest of the three for feed-style products. Loaders compose cleanly across nested routes, the <Form> primitive removes 90% of mutation boilerplate, and streaming SSR Just Works.

What we'd change

If we restarted today:

  1. Start with the loader, not the page. We wrote pages first and retrofitted loaders. It bit us when the data shape didn't match the UI we'd already built.
  2. Pick a markdown renderer day 1. We swapped renderers twice. Each swap took a week.
  3. Wire analytics earlier. We shipped six weeks before we could see what users were actually clicking.

What's next

Q1 2026 is the moderation surface and the answers Q&A integration into the home feed. The DS is in maintenance — we're not adding tokens, just refining the ones we have based on real usage. The next big lift is server-side rendering for embedded media previews.

Happy to answer questions in the comments.

Be the first to reply.

D
r/design
@marcelo

Building MDX Forum — a 6-month design-engineering retro

Six months ago we kicked off MDX Forum: a Reddit-style community surface built on top of our agency's design system. Today it's serving real traffic and we shipped 47 features along the way. Here's what worked.

Design tokens are non-negotiable

Every spacing, color, and typography decision lives in a CSS variable. When the entire team can change a value in one place and see it everywhere, the cost of refining the system drops to near-zero. We iterate on the row gap, panel padding, or meta color hierarchy every week. None of that would be possible with hardcoded values.

Component primitives, not page templates

Our first instinct was to build page templates: a <HomePage>, a <CommunityProfilePage>, etc. Three weeks in we threw all of those away. Templates lock you into a layout. Primitives let you compose. Now we have <RailPanel>, <PostCard>, <FeedLayout>, and pages are 50 lines of composition each.

SSR + React Router 7 was the right call

We considered Next, Remix, and Astro. We picked React Router 7 framework mode because the routing model is the cleanest of the three for feed-style products. Loaders compose cleanly across nested routes, the <Form> primitive removes 90% of mutation boilerplate, and streaming SSR Just Works.

What we'd change

If we restarted today:

  1. Start with the loader, not the page. We wrote pages first and retrofitted loaders. It bit us when the data shape didn't match the UI we'd already built.
  2. Pick a markdown renderer day 1. We swapped renderers twice. Each swap took a week.
  3. Wire analytics earlier. We shipped six weeks before we could see what users were actually clicking.

What's next

Q1 2026 is the moderation surface and the answers Q&A integration into the home feed. The DS is in maintenance — we're not adding tokens, just refining the ones we have based on real usage. The next big lift is server-side rendering for embedded media previews.

Happy to answer questions in the comments.

0 comments

Be the first to reply.