Skip to main content
Full Stack Radio

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

61 min episode · 2 min read
·
Utility Classes

Episode

61 min

Read time

2 min

Topics

Productivity, Startups, Design & UX

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?

Episode Transcript

In this episode of Fullstack Radio I talked to Alastair Monk about scaling CSS at Heroku using utility classes. This is Fullstack Radio episode one twenty eight. Hey, everyone. Welcome to another episode of the Full Stack Radio podcast. I'm your host, Adam Wylen. And today it's my pleasure to be speaking with Alastair Monk. How's it going, man? Yeah. Really good. Thank you. Great to be here. So for anyone who's not familiar with you, do you mind, just briefly introducing yourself and talking a little bit about what you do? Yeah. Of course. So I'm a user experience architect here at Salesforce and what that means is because obviously it's a bit I think it's a title that people aren't super familiar with architects and UX more used to sort of hearing sort of product designer and stuff like that. So I kind of work across product design, product strategy and engineering to a certain degree, and sort of bridge I guess those sort of three disciplines. At Salesforce, I'm mostly focused on working on our hierarchy products and our our sort of developer experiences on the Salesforce platform. So anything that you're building on top of kind of Salesforce data, if you're a developer with us, that's my that's my world. Gotcha. Cool. Yeah. So the reason that I wanted to have you on the show is this was probably, like, maybe a year and a half ago or more. I had discovered that Heroku had switched from like a bootstrap based sort of CSS homegrown sort of like framework and system into something that was based on tachyons. And I was working early stages on Tailwind CSS at the time which was like a very similar framework to tachyons in terms of the approach. And I thought that was really interesting to see because Heroku is like a big well known name and I thought it'd be really interesting to learn more about, what motivated you to make that switch and what some of the benefits you've seen have been and what sort of some of the original problems that you want to solve were. So I think maybe a good place to start would just be talking a little bit about, like, what were you doing in terms of, like, CSS architecture and CSS approach at Heroku, before you started introducing any, like, tachyon stuff into the product. Wow. Yeah. And I think the answer is that we weren't really doing anything which is why we had to kind of, overhaul what we were doing with, the tachyon's approach. So I guess I'll set a little bit of context first. For anyone that's been a Heroku customer for I don't know a few, at least sort of five or six years, they'll remember I think famously that our, dashboard interface was like very dark, sort of very dark purples and, sort of shades of black. And just about when I joined the company which I …

Get the full transcript (10,182 words) + summary by email — free

One-time email with the complete transcript and AI summary of this episode. No account needed.

One email, no spam. We’ll also show you what SignalCast does.

Browse all Full Stack Radio transcripts →

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

Books, tools, and gear mentioned in this episode

SignalCast may earn commission on purchases via these links.

Tools

  • Alasdair Monk explains how Heroku migrated from Bootstrap to Tachyons atomic CSS framework
  • Alasdair Monk explains how Heroku migrated from Bootstrap to Tachyons atomic CSS framework
  • shifting the accessibility burden from developers to the framework itself, similar to how React Native Web handles Twitter's interface
  • Monk reveals that negative Hacker News feedback about Pylon CSS mirrored early Tailwind criticism about semantics

company

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 one show.

Start My Monday Digest

No credit card · Unsubscribe anytime