Sam Selikoff, Ryan Toronto
Frontend First
A podcast about modern UI development on the web. Hosted by Sam Selikoff and Ryan Toronto.
Author
Sam Selikoff, Ryan Toronto
Category
Podcast website
Latest episode
Dec 12, 2024
Where to listen?
Podcasts in the app Replaio Radio Coming soonPodcasts are coming to the app soon. Install now and be the first to see a whole new take on podcasts
Episodes
Creating a background gradient from an image 12.12.2024 48:39
Ryan talks to Sam about reproducing iOS's new image background treatment for his Open Graph Preview tool, opengraph.ing. They talk about different approaches for generating gradients from images, including finding the vibrant color of an image, luminosity-weighted averages, k-means clustering, and more. Timestamps: 0:00 - Intro 3:07 - Apple's new OG image gradient 10:06 - Luminosity-weighted avera...
Exploring useActionState 14.11.2024 59:57
Sam and Ryan talk about React 19's useActionState hook. They discuss how adding async functions to a plain React app introduces lots of in-between states that developers must grapple with, and how useActionState allows React to collapse and eliminate these states, bringing the simplicity of React's sync mental model to our async code. Timestamps: 0:00 - Intro 1:51 - How React normally eliminates s...
Cloudflare Tunnel | React Compiler | refs during render 31.10.2024 42:46
Sam and Ryan talk about using Cloudflare Tunnel for local development, the new React Compiler beta release, and why reading or writing refs during render violates the rules of React. Timestamps: 0:00 - Intro 1:42 - Cloudflare Tunnel 7:06 - React Compiler 14:21 - Reading or writing refs during render Links: Cloudflare Tunnel React Compiler Beta release React Docs Pitfall on refs
useAnimatedText | Events vs. State Changes | Catalyst 24.10.2024 1:08:19
Sam and Ryan talk about building a useAnimatedText hook that can animate streaming text. They also discuss how React code that uses state changes to approximate events can be simplified, and the benefits of having escape hatches when building UI with Catalyst. Timestamps: 0:00 - Intro 1:22 - Catalyst and escape hatches 16:03 - Building a useAnimatedText hook (aka useBufferedText) 54:10 - Avoiding...
Can you self-host Next.js? 10.10.2024 58:03
Sam and Ryan talk about how frameworks and infrastructure evolve with each other, using Next.js as a representative example. They discuss how hosting providers like Heroku have always imposed certain constraints on apps, what features those constraints enable hosting providers to support, how burdensome those constraints are across different frameworks, and how frameworks that add infra-specific A...
Tom Occhino on the future of React 18.09.2024 1:00:27
Tom Occhino, Chief Product Officer at Vercel and former Engineering Director at Facebook, joins Sam to talk about the pivotal moments in React's history. He talks about how React popularized the ideas of declarative rendering and unidirectional data flow, how GraphQL furthered React's goal of co-locating all the concerns of a particular piece of UI, the problems that GraphQL led to at Facebook and...
Render props 05.09.2024 34:43
Sam and Ryan talk about render props in React. They discuss where they came from, how Hooks superseded them for sharing stateful logic, how data attributes compare to them for customizing styling, and how for certain complex components like forms they're still a great solution for accessing slices of internal state. Timestamps: 0:00 - Intro 3:40 - Where did render props come from? 6:01 - How hooks...
Controlled and uncontrolled components 28.08.2024 47:25
Sam and Ryan discuss controlled and uncontrolled components in React. They talk about how uncontrolled components can be thought of as components that manage their own internal state, why you should model your complex React components after the simpler APIs of native HTML elements like inputs, why you shouldn't try to make components that are both controlled and uncontrolled, and why making a new...
Unstyled React components 15.08.2024 34:08
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 c...
What is a framework? 01.08.2024 1:02:38
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...
Crossover: Declaring War Against the Frontend 25.07.2024 59:17
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...
Blog Post Club: Queueing - An interactive study of queueing strategies 18.07.2024 46:27
Sam and Ryan read and discuss a fantastic interactive blog post about queueing in HTTP written by Sam Rose. Timestamps: 0:00 - Intro 6:57 - Queueing: An interactive study of queueing strategies 9:05 - Why do we need queues? 13:16 - FIFO and timing out 17:55 - LIFO 20:58 - Priority queues 25:21 - Active queue management 29:08 - Comparing queues 36:32 - Conclusion Links: Queueing: An interactive stu...
SPAs in React 19 11.07.2024 59:34
Sam and Ryan discuss the new features in React 19 that will specifically benefit developers building single-page applications. They talk about how Suspense and Transitions let developers "teach" React about when their apps are in a loading or a pending state, how Client Actions improve upon using events in React 18 to handle data mutations, and how Actions enable React Components to automatically...
High floor, high ceiling 03.07.2024 59:24
Sam tells Ryan about a recent talk he gave at BigSkyDevCon. They chat about how backend frameworks are raising the ceiling of what UIs they’re capable of delivering, how frontend frameworks are raising the floor of what backend features they come bundled with, and what each community can learn from the other. Timestamps: 0:00 - Intro 4:23 - Recap of Ryan Florence’s talk 6:49 - Overview of "High fl...
Technical Cost vs. Product Benefit 20.06.2024 1:14:10
Sam and Ryan talk about the difference between the costs of building a feature and the benefits that feature brings to our end users. They discuss how libraries and frameworks can lower the technical cost of building a given feature, how Ryan Florence framed this calculation in his talk at Big Sky Dev Con, and how sometimes developers’ opinions and tastes about tech can smuggle their way from the...
View Transitions in React 12.06.2024 53:21
Ryan tells Sam about his experiments with using the new View Transitions API in a React photo gallery app. He talks about how he likes the flexibility of the API, how to think about integrating it into any client-rendered app regardless of the framework, and how he used a Promise with an Effect to tie a View Transition to a React Transition. Topics include: 0:00 - Intro 1:11 - What it’s like to in...
CodeMirror | Radix Themes 17.04.2024 45:11
Sam tells Ryan about his experience setting up an in-browser code editor with CodeMirror that he plans on using for blog posts and code recipes, as well as what he thought about using Radix Themes for the first time in earnest on a side project of his currently styled with Tailwind. Topics include: 0:00 - Intro 4:01 - Building an authoring tool with CodeMirror 18:47 - Refactoring Tailwind to Radix...
Throw is about control flow – not error handling 10.04.2024 1:04:11
Sam and Ryan talk about why it’s better to think of throw as a general-purpose JavaScript language feature rather than something that should only be used for error handling. They discuss the ambiguity around the phrase “error handling”, situations that call for dealing with errors locally vs. globally, and how throw can be useful for non-error control flow. They also discuss the problems with tryi...
The Philosophy of Next.js 22.03.2024 1:16:00
Sam and Ryan discuss the core values of the Next.js framework, and how those values motivate several of the framework’s design decisions. They talk about caching, why layouts don’t have access to the URL, and why the router doesn’t expose navigation events, as well as how developers should think about extending Next’s functionality with their own application code. Topics include: 0:00 - Intro 2:58...
Beyond Data Fetching with RSCs 13.03.2024 1:09:50
Sam talks to Ryan about refactoring an MDX blog post to a React Server Component. They discuss how RSC’s ability to render server-side content with “client-side holes” turns out to replace MDX for many uses cases. They also talk about other tools that are (surprisingly) a conceptual subset of the RSC architecture, such as custom Webpack loaders. Topics include: 0:00 - Intro 5:05 - The Next.js happ...
Blog Post Club: React Labs – What We’ve Been Working On 01.03.2024 1:23:05
Sam and Ryan read and discuss the latest update from React Labs. Topics include: 0:00 - Intro 5:26 - Opening 6:18 - React Compiler 27:27 - Actions 51:44 - Asset loading 1:13:06 - Next Major Version of React 1:15:42 - Activity Links: React Labs blog post Sam’s video on Strict Mode
Instant URL search params in Next.js 21.02.2024 45:29
Sam and Ryan discuss the intuition behind React Transitions, and why React’s new useOptimistic hook is a good fit for building a URL-driven filter panel that stays fully responsive to client interactions. Topics include: 0:00 - Intro 1:12 - The problem: In a world of Server Components, URL updates are blocked by a server-side roundtrip 10:44 - Attempted solution: Use the browser’s Native History A...
React Deep Dive: useOptimistic 14.02.2024 51:08
Ryan and Sam discuss the purpose and usage of the useOptimistic() hook, a new experimental API from React. Topics include: 0:00 - Intro 2:18 - Problem: RSCs require a server roundtrip before the UI can be updated 10:13 - Solution: useOptimistic() lets you merge ephemeral client-side state with server-side data so you can update the UI during a Server Action or Transition 14:03 - How useOptimistic(...
React Deep Dive: cache 07.02.2024 1:07:28
Ryan and Sam discuss the purpose and usage of the cache() function, a new experimental API from React. Topics include: 0:00 - Intro 2:29 - Caching in Next.js vs. React cache() 8:11 - Why React invalidates the cache for each server request 14:43 - How cache() enables colocation of data-fetching code 16:14 - Using cache() to share CPU-heavy or I/O-bound tasks between components 19:31 - Why cache() o...
Advanced Radix UI | Blog Post Club: React Server 01.02.2024 55:39
Sam and Ryan talk about Advanced Radix UI, Build UI’s newest course. They also read and discuss a blog post that describes the RSC architecture in terms of two processes: React Server and React Client. Topics include: 0:00 - Intro 0:49 - Ceilingless libraries + Advanced Radix UI 21:02 - Read and discuss: “RSC is React Server + Component” Links: Advanced Radix UI course Radix UI RSC is React Server...
Similar podcasts
Replaio is not a podcast publisher; show names, artwork and audio belong to their authors and are distributed through public RSS feeds.