Software Engineering Daily – "Radix UI" with Chance Strickland
Episode date: November 18, 2025
Guest: Chance Strickland (Software Engineer at WorkOS & Radix UI Maintainer)
Host: Nick Nisi
Episode Overview
This episode dives deep into Radix UI—a collection of headless React component primitives prioritizing accessibility, composability, and usability—through insights from maintainer Chance Strickland. The discussion covers the history and philosophy of Radix, its component architecture, relationships to projects like ShadCN UI, evolving web primitives, future plans, and how new technologies and trends (including AI and LLMs) are changing the component library landscape.
Key Discussion Points and Insights
1. Introduction to Radix UI
[00:00–05:19]
-
What is Radix?
- Radix UI is an open-source React component library consisting of headless primitives—components handling core interactions, logic, and accessibility with no styling imposed.
- Radix's primary values: accessibility, usability, and composability.
- "Under the Radix umbrella":
- Primitives: Headless logic components (dialogs, dropdowns, tabs, etc.).
- Themes: Higher-abstraction, styled themes with a customizable API.
- Colors: An accessible, adaptable color palette.
- Icons: Meticulously designed icon set.
- Used as the foundation for frameworks like SHAD CN UI.
-
On Pronunciation:
- Chance says "Radix", but acknowledges some say "Radix" with a different emphasis.
- The project’s founders hail from both the US and the UK, leading to variations.
"I've always said Radix, but I hear people all the time will come up and say, hey, I love Radix UI. ... The project was started by a team of half Americans and half Brits." – Chance Strickland [02:22]
2. Philosophy and Design of Primitives
[05:19–08:10]
-
Headless Components & Flexibility:
- Radix Primitives separate logic/accessibility from appearance, allowing for total design freedom.
- "Headless" describes components that manage state/behavior but leave styling up to the consumer.
- Emphasis on cross-browser compatibility and accessible design out-of-the-box.
"We want to give you maximum flexibility in terms of the presentation of the components, but the underlying patterns should behave similarly across the board... the look and feel is obviously going to be determined in large part by your brand." – Chance Strickland [06:15]
-
Themes & Extensibility:
- Radix Themes offers an opinionated, ready-to-go visual style, but is highly themable and can generate a full range of accessible colors from a single primary.
- Styling is just CSS under the hood—making overrides easy and fully compatible with external stylesheets/CSS frameworks.
3. Design Choices: Colors, Icons, and Customization
[08:30–11:16]
-
Icons and Color System:
- Chance highlights the challenge and importance of consistency in iconography and color design.
- Icons and colors were designed by other team members, but maintainers ensure accessibility and aesthetic standards continue.
"Things like line weight and face sizing and how each icon scales up to different screen sizes... All of that matters a lot more than people realize." – Chance Strickland [08:47]
4. Working with Styling Systems (Themes, Tailwind, CSS)
[12:17–15:23]
-
Styling Approach:
- Themes is customizable via both the theming API and standard CSS overrides.
- Chance describes it as giving a "simple escape hatch"—no special runtime or JavaScript restrictions.
- Tailwind and Radix Themes are philosophically different:
- Tailwind users can use primitives directly and layer their own Tailwind styles.
- Using Radix Themes and Tailwind together isn’t usually advisable due to the differing approaches.
"If you are using something like Tailwind already... may not be the best fit to then go and grab Radix Themes. ...But we have other levels of abstraction and you can go grab Radix Primitives and then you can slap whatever Tailwind classes you want on any element you want." – Chance Strickland [14:06]
5. Web Primitives and the Evolving Platform
[15:54–19:42]
-
Web Standards Catching Up:
- Some Radix components (e.g.,
Dialog,Select,Collapsible) predate or improve upon native HTML elements. - With new standards, Radix considers replacing custom logic with native primitives if they meet the library's standards for flexibility and accessibility.
- Decisions to deprecate or refactor components depend on web platform capabilities and user needs.
"If [web primitives] can do everything that Radix can do today... maybe we could either phase out the component altogether and recommend people use web primitives, or we could build our primitives on top of the web..." – Chance Strickland [18:14]
- Some Radix components (e.g.,
6. Chance’s Journey to Open Source and Radix
[19:42–30:32]
-
Background and Early Inspirations:
- Chance freelanced before joining the maintainers of Reach UI, a composition-first component library for React.
- Reach UI’s adoption of low-level composition influenced how he built components personally and shaped Radix’s design.
-
Maintaining Reach UI:
- Chance joined after a conference encounter with the maintainers (Ryan Florence & Michael Jackson).
- The company’s pandemic-era crash led to his work on Radix and contributions to the early design.
"The first component that I remember building that way was an accordion... I built it the way that I would imagine Ryan Florence would have built it into Reach." – Chance Strickland [22:36]
-
Reflections on the Ecosystem & Remix:
- Discussion on how frameworks like Remix are evolving—potentially toward non-React rendering (e.g., web components).
- Chance expresses openness and excitement for future innovation, regardless of current frameworks.
"What does the web have on the front end that we're not really utilizing... Well, it has web components. Right. ...No special knowledge here, but this is just me pondering..." – Chance Strickland [32:55]
7. Radix and ShadCN UI: Relationship & Approach
[37:11–41:37]
-
What is ShadCN?
- A component library and design system builder, initially based on copy-paste code philosophy:
"You should just own your component library... it's way easier to make tweaks to the code." [37:34]
- Most ShadCN components are abstractions over Radix Primitives, styled with Tailwind, and owned directly in the user's codebase.
- Difference from Radix Themes: While Radix Themes are installable and opinionated, ShadCN gives you editable code and full control—provided you’re using Tailwind.
"Most of the components in shadcn are abstractions on top of Radix... If you go and look at like a shadcn dialog that's going to be under the hood a Radix primitive dialog that comes with a bunch of pre baked styles using Tailwind classes." – Chance Strickland [37:34]
- A component library and design system builder, initially based on copy-paste code philosophy:
8. Future of Radix UI
[41:37–44:13]
-
Maturity and Plans:
- Radix Primitives is considered quite mature, but new additions are planned (including more authentication-related components).
- The broader "Radix" vision: Being a comprehensive toolkit for building on the web, with continued exploration into emerging needs (e.g., LLM-driven workflows, new interaction models).
"What is Radix? What does it become in the future? ...It's a toolkit for building on the web, that's very high level how we think about Radix." – Chance Strickland [41:49]
9. How New Primitives Are Chosen and Built
[44:13–50:15]
-
Dogfooding at WorkOS:
- The WorkOS team builds their internal systems with Radix, using real-world needs to identify and prioritize new primitives.
- Example: One Time Password (OTP) field—complex to implement correctly for accessibility, UX, password managers, and mobile autofill.
- New components commonly begin as “unstable” exports for community testing and feedback.
- Chance discusses the nuanced complexity and user expectations behind seemingly simple UI.
"This is what I talked about earlier. When you peel back the onion of something that seems very simple, it's actually... a lot more complicated than you might imagine." – Chance Strickland [50:15]
10. AI, LLMs, and the Future of Component APIs
[51:33–53:58]
-
LLM and Composability:
- The composition-first model in Radix means LLMs (like ChatGPT) can easily use the APIs to generate components or code.
- Ongoing discussion on how Radix can enhance AI compatibility, possibly through better configuration, documentation, or tooling for generative UIs.
- AI-driven workflows are expected to increase, influencing how Radix evolves.
"An LLM... or ChatGPT... It's really easy to ask it to build you a React component. And a lot of times it's going to build you something that looks a lot like Radix, because it's just the core composition model of React." – Chance Strickland [52:03]
Notable Quotes & Memorable Moments
-
On building primitives:
"Everything that we do presents as fairly simple. But then once you peel back the onion a little bit, there's a reason people don't want to do it themselves. It's actually very hard, a lot harder, a lot more time consuming than people really need to be investing." – Chance Strickland [10:18]
-
On headless component tradeoffs:
"You want tools that help you spend time on your product and not waste time thinking about color scales. And that’s really what it comes down to." – Chance Strickland [10:56]
-
On the impact of AI:
"How do people build on the web? Increasingly it’s going to be using AI... So if that’s how people build for the web, how does Radix fulfill that vision? Of course it’s going to be AI to some degree." – Chance Strickland [53:25]
Timestamps for Important Segments
| Topic/Section | Timestamp | |:-----------------------------------------------|:----------| | Introduction & Guest Background | 00:00–02:15 | | What is Radix UI? Umbrella projects | 03:07–05:19 | | Headless primitives and accessibility | 05:19–08:10 | | Design: themes, colors, icons | 08:30–11:16 | | Working with themes, Tailwind, and CSS | 12:17–15:23 | | Web primitives & browser APIs vs. Radix | 15:54–19:42 | | Chance’s path to open source/Radix | 19:42–26:03 | | Reach UI, composition, and innovation | 26:03–30:32 | | Thoughts on Remix, React Router, and evolution | 30:32–37:11 | | Relationship between Radix and ShadCN UI | 37:11–41:37 | | Future plans for Radix | 41:37–44:13 | | Building new primitives (OTP, auth, etc.) | 44:13–50:15 | | AI, LLMs, and component libraries | 51:33–53:58 | | Open source maintenance, streaming, community | 54:25–55:40 | | Chance on where to connect online | 56:03–56:28 |
Closing and Community Involvement
[54:25–56:28]
-
Chance and Michael Chan run a recurring stream walking through Radix maintenance and open source contribution—offering transparency and insight to the process.
-
Encourages empathy and understanding for maintainers in open source.
"If you want to dig into the weeds of Radix with us, that's your opportunity... Also, even if you don't care about Radix, we talk a lot about what goes into maintaining a popular open source library." – Chance Strickland [54:25]
-
Chance can be found primarily on Bluesky (chance.dev).
Summary in a Nutshell
Radix UI stands out by balancing the power of composable, accessible React primitives with a philosophy of user-owned, style-agnostic components. It plays a foundational role in the modern React ecosystem—powering high-level solutions like ShadCN UI, responding to new web standards, and adapting to AI-driven development trends. This episode not only explores how and why Radix works but provides practical context (and relatable stories) for anyone curious about building robust, accessible UIs—and the evolving world of open source.
For More Info
- Radix UI documentation
- ShadCN UI
- Chance Strickland: chance.dev
This summary preserves the thoughtful, conversational style of the episode, giving newcomers an engaging snapshot of Radix UI—and the people and ideas shaping it.
