Skip to main content
Full Stack Radio

128: Alasdair Monk - Scaling CSS at Heroku with Utility Classes

61 min episode · 2 min read
·

Episode

61 min

Read time

2 min

Topics

Startups

AI-Generated Summary

Key Takeaways

  • CSS Deletion Problem: Traditional BEM approaches created tight coupling between HTML and CSS where deleting templates left orphaned styles. Atomic CSS eliminates this by making HTML deletable without worrying about unused CSS, since the utility library remains constant regardless of features added or removed over time.
  • Library Size Stability: Purple Three utility library size remained nearly constant over three years despite adding numerous features. Traditional CSS files would have grown continuously with each new interface. The atomic approach provides hundreds of classes upfront that never need expansion, making it more scalable than custom CSS per feature.
  • Cross-Framework Portability: Heroku supports React, Ember, Rails with jQuery, and static HTML across different teams. Creating CSS classes for simple elements like buttons and inputs proved more practical than framework-specific components, since CSS works everywhere while JavaScript components require rewriting for each stack. Web components may eventually solve this.
  • Developer Experience Shift: Frontend complexity increased dramatically over seven years with single-page apps and JavaScript frameworks. Treating CSS as an API through utility classes lets developers focus on keyboard navigation, accessibility, and user experience details rather than memorizing Flexbox alignment rules or crafting perfect box shadows for every component.
  • Pragmatic Component Approach: Teams delete and rewrite templates from scratch rather than maintaining complex HTML documents during redesigns. The low cost of rewriting with utility classes makes this faster than parsing existing markup. For hyper-specific styling needs, scoped CSS files live alongside components, similar to Vue single-file component style blocks.

What It Covers

Alasdair Monk explains how Heroku migrated from Bootstrap to Tachyons atomic CSS framework, solving CSS sprawl across multiple applications. He details the mental model shift, team adoption challenges, and performance benefits of utility-first CSS at scale.

Key Questions Answered

  • CSS Deletion Problem: Traditional BEM approaches created tight coupling between HTML and CSS where deleting templates left orphaned styles. Atomic CSS eliminates this by making HTML deletable without worrying about unused CSS, since the utility library remains constant regardless of features added or removed over time.
  • Library Size Stability: Purple Three utility library size remained nearly constant over three years despite adding numerous features. Traditional CSS files would have grown continuously with each new interface. The atomic approach provides hundreds of classes upfront that never need expansion, making it more scalable than custom CSS per feature.
  • Cross-Framework Portability: Heroku supports React, Ember, Rails with jQuery, and static HTML across different teams. Creating CSS classes for simple elements like buttons and inputs proved more practical than framework-specific components, since CSS works everywhere while JavaScript components require rewriting for each stack. Web components may eventually solve this.
  • Developer Experience Shift: Frontend complexity increased dramatically over seven years with single-page apps and JavaScript frameworks. Treating CSS as an API through utility classes lets developers focus on keyboard navigation, accessibility, and user experience details rather than memorizing Flexbox alignment rules or crafting perfect box shadows for every component.
  • Pragmatic Component Approach: Teams delete and rewrite templates from scratch rather than maintaining complex HTML documents during redesigns. The low cost of rewriting with utility classes makes this faster than parsing existing markup. For hyper-specific styling needs, scoped CSS files live alongside components, similar to Vue single-file component style blocks.

Notable Moment

Monk reveals that negative Hacker News feedback about Pylon CSS mirrored early Tailwind criticism about semantics. He proposes adding JavaScript-powered accessibility layers that infer ARIA properties from custom element names, shifting the accessibility burden from developers to the framework itself, similar to how React Native Web handles Twitter's interface.

Know someone who'd find this useful?

You just read a 3-minute summary of a 58-minute episode.

Get Full Stack Radio summarized like this every Monday — plus up to 2 more podcasts, free.

Pick Your Podcasts — Free

Keep Reading

More from Full Stack Radio

We summarize every new episode. Want them in your inbox?

Similar Episodes

Related episodes from other podcasts

Explore Related Topics

This podcast is featured in Best Cybersecurity Podcasts (2026) — ranked and reviewed with AI summaries.

Read this week's Startups & Product Podcast Insights — cross-podcast analysis updated weekly.

You're clearly into Full Stack Radio.

Every Monday, we deliver AI summaries of the latest episodes from Full Stack Radio and 192+ other podcasts. Free for up to 3 shows.

Start My Monday Digest

No credit card · Unsubscribe anytime