128: Alasdair Monk - Scaling CSS at Heroku with 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.
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.
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 — FreeKeep Reading
More from Full Stack Radio
153: DHH – Omarchy and Designing Your Own OS on Arch Linux
Aug 21 · 76 min
Masters of Scale
How to beef up your business, with ButcherBox CEO Mike Salguero
Jul 30
More from Full Stack Radio
152: Ben Orenstein - How to Stand Out When Applying for a Job at a Small Company
Jan 28 · 47 min
No Priors: Artificial Intelligence | Technology | Startups
How Nuclear Will Unlock Energy Abundance with Valar Atomics Founder Isaiah Taylor
Jul 2
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
“SPONSORS: DigitalOcean”
“SPONSORS: Cloudinary”
More from Full Stack Radio
We summarize every new episode. Want them in your inbox?
153: DHH – Omarchy and Designing Your Own OS on Arch Linux
152: Ben Orenstein - How to Stand Out When Applying for a Job at a Small Company
151: DHH – Building HEY with Hotwire
150: Secret Screencasting Tips & Behind the Scenes of Tailwind CSS 2.0
149: Choosing a Payment Processor, Radical Icons & W3C Hype
Similar Episodes
Related episodes from other podcasts
Masters of Scale
Jul 30
How to beef up your business, with ButcherBox CEO Mike Salguero
No Priors: Artificial Intelligence | Technology | Startups
Jul 2
How Nuclear Will Unlock Energy Abundance with Valar Atomics Founder Isaiah Taylor
The Diary of a CEO
Jun 22
Medical Whistleblower: What Your Doctor Doesn’t Know Is Hurting You | Dr Rachel Rubin
Odd Lots
Jun 6
Why Susquehanna Is Building a Prediction Markets Business
Modern Wisdom
Mar 28
#1077 - Chris Bailey - Why Some Goals Feel Effortless (and others hurt)
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 DigestNo credit card · Unsubscribe anytime