
What is a framework?
08/01/24 • 62 min
Sam and Ryan talk about what sorts of capabilities a tool should have to be considered a web framework. They discuss how frameworks tackle the complexity of getting different systems to communicate with each other, how good frameworks embrace the strengths and patterns of the language they're written in, and why frameworks and services are not in opposition to each other.
Timestamps:
- 0:00 - Intro
- 3:58 - Adapter pattern and cohesive boundaries
- 9:43 - Rails is Omakase
- 13:47 - Configurable, but still cohesive
- 17:04 - Frontend frameworks try to “work with everything”
- 21:42 - Does composition mean a React framework will look different than Rails?
- 29:29 - Why taste still matters
- 34:20 - A framework is a shell of adapters and a brain that coordinates them
- 35:16 - When using services, complexity still exists in the in-between
- 37:59 - A fullstack dev is someone who acknowledges and understands how all the parts come together
- 44:06 - Tweets about the hard problems that Laravel tackles, and the deep design it took to get there
- 49:15 - Frameworks should embrace the strengths and patterns of their language and ecosystem
- 50:35 - Why RSCs and Server Actions mean the “Rails for JS” may end up looking nothing like Rails
- 52:11 - Why users of a “fullstack framework” shouldn’t even care about where the code is running
- 55:31 - Why libraries or services that are easy to install and set up are not a replacement for frameworks
Links:
Sam and Ryan talk about what sorts of capabilities a tool should have to be considered a web framework. They discuss how frameworks tackle the complexity of getting different systems to communicate with each other, how good frameworks embrace the strengths and patterns of the language they're written in, and why frameworks and services are not in opposition to each other.
Timestamps:
- 0:00 - Intro
- 3:58 - Adapter pattern and cohesive boundaries
- 9:43 - Rails is Omakase
- 13:47 - Configurable, but still cohesive
- 17:04 - Frontend frameworks try to “work with everything”
- 21:42 - Does composition mean a React framework will look different than Rails?
- 29:29 - Why taste still matters
- 34:20 - A framework is a shell of adapters and a brain that coordinates them
- 35:16 - When using services, complexity still exists in the in-between
- 37:59 - A fullstack dev is someone who acknowledges and understands how all the parts come together
- 44:06 - Tweets about the hard problems that Laravel tackles, and the deep design it took to get there
- 49:15 - Frameworks should embrace the strengths and patterns of their language and ecosystem
- 50:35 - Why RSCs and Server Actions mean the “Rails for JS” may end up looking nothing like Rails
- 52:11 - Why users of a “fullstack framework” shouldn’t even care about where the code is running
- 55:31 - Why libraries or services that are easy to install and set up are not a replacement for frameworks
Links:
Previous Episode

Crossover: Declaring War Against the Frontend
Sam joins Lane Wagner in a crossover episode with the Backend Banter podcast. They talk about abstractions in frontend and backend frameworks, what JavaScript is doing differently from other languages and frameworks, why the frontend should drive the backend even if you're building in a server-side framework, and what's so special about React Server Components.
Timestamps:
- 0:00 - Intro
- 2:12 - When abstractions leak
- 6:37 - Recap of Sam's BigSky talk
- 10:51 - What is JavaScript doing differently?
- 19:10 - Why frontend frameworks should have more backend features
- 24:04 - Strong opinions on a library level
- 30:29 - Shipping more standardized interfaces
- 37:06 - The frontend should be driving everything in the backend
- 39:12 - Your types should flow from the database to the frontend, but not your product decisions
- 46:53 - React Server Components
Link:
Next Episode

Unstyled React components
Sam and Ryan talk about the pattern of building unstyled components with React. They discuss why unstyled components were created, how they improve upon composition patterns from UI libraries like Bootstrap, how they can be used to share behavior and logic without prescribing any styling opinions, and how they fit into a larger collection of React patterns that can be used to build more powerful components that avoid premature abstractions.
Timestamps:
- 0:00 - Intro
- 1:36 - What are unstyled components?
- 2:24 - How do unstyled components improve upon earlier patterns?
- 6:44 - Why would you want to use an unstyled component?
- 9:58 - How can you compose an unstyled component with a styled component?
- 16:41 - How to decide which pattern is best suited for the code you want to share
- 19:36 - Using patterns that preserve React's locality of behavior
- 24:49 - How do you know if an abstraction is good?
- 32:54 - Build UI's upcoming course on Advanced React Component Patterns
Links:
If you like this episode you’ll love
Episode Comments
Generate a badge
Get a badge for your website that links back to this episode
<a href="https://goodpods.com/podcasts/frontend-first-197138/what-is-a-framework-65638058"> <img src="https://storage.googleapis.com/goodpods-images-bucket/badges/generic-badge-1.svg" alt="listen to what is a framework? on goodpods" style="width: 225px" /> </a>
Copy