From 8750cc3ba8cfd21312daa060d261d7a90aaa5a27 Mon Sep 17 00:00:00 2001 From: Carl Vitullo Date: Sun, 9 Nov 2025 18:36:54 -0500 Subject: [PATCH 1/3] Use monospace font for timecodes, don't use list icons, fix expando row positioning --- src/components/Layout/MarkdownStyles.js | 5 +- src/helpers/rehypeWrapTimecodes.ts | 83 +++++++++++++++++++++++++ src/helpers/retrieveMdPages.ts | 2 + 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 src/helpers/rehypeWrapTimecodes.ts diff --git a/src/components/Layout/MarkdownStyles.js b/src/components/Layout/MarkdownStyles.js index 1a83347..836911e 100644 --- a/src/components/Layout/MarkdownStyles.js +++ b/src/components/Layout/MarkdownStyles.js @@ -37,13 +37,16 @@ export const MarkdownStyles = createGlobalStyle` word-break: break-word; word-wrap: break-word; } + ul { + list-style: none; + } li > details { display: block; } summary { cursor: pointer; + margin-left: -2rem; user-select: none; - list-style: none; display: block; &::marker, &::-webkit-details-marker { diff --git a/src/helpers/rehypeWrapTimecodes.ts b/src/helpers/rehypeWrapTimecodes.ts new file mode 100644 index 0000000..934503b --- /dev/null +++ b/src/helpers/rehypeWrapTimecodes.ts @@ -0,0 +1,83 @@ +import { visit } from "unist-util-visit"; +import type { Root, Element, Text, ElementContent } from "hast"; + +/** + * Rehype plugin that wraps timecode patterns in tags. + * Looks for list items that start with `[]` pattern + * and wraps them in tags for styling. + * + * Input:
  • [00:00:00] Intro
  • + * Output:
  • [00:00:00] Intro
  • + */ +export default function rehypeWrapTimecodes() { + return (tree: Root) => { + visit(tree, "element", (node) => { + // Only process
  • elements + if (node.tagName !== "li") { + return; + } + + // Check if first child is a text node starting with "[" + if (node.children.length < 3) { + return; + } + + const firstChild = node.children[0]; + if (firstChild.type !== "text" || !firstChild.value.startsWith("[")) { + return; + } + + // Check if second child is a link with a timecode pattern + const secondChild = node.children[1]; + if (secondChild.type !== "element" || secondChild.tagName !== "a") { + return; + } + + // Check if the link text matches timecode pattern (HH:MM:SS or MM:SS) + const linkText = + secondChild.children[0]?.type === "text" + ? secondChild.children[0].value + : ""; + const timecodePattern = /^\d{1,2}:\d{2}(:\d{2})?$/; + if (!timecodePattern.test(linkText)) { + return; + } + + // Check if third child is a text node starting with "]" + const thirdChild = node.children[2]; + if (thirdChild.type !== "text" || !thirdChild.value.startsWith("]")) { + return; + } + + // Extract and modify the bracket text nodes + const openingBracket: Text = { + type: "text", + value: "[", + }; + + const closingBracket: Text = { + type: "text", + value: "]", + }; + + // Update the original text nodes to remove the brackets + const firstTextNode = firstChild as Text; + firstTextNode.value = firstTextNode.value.slice(1); // Remove leading "[" + + const thirdTextNode = thirdChild as Text; + thirdTextNode.value = thirdTextNode.value.slice(1); // Remove leading "]" + + // Create the wrapper with the timecode content + const codeElement: Element = { + type: "element", + tagName: "code", + properties: {}, + children: [openingBracket, secondChild, closingBracket], + }; + + // Rebuild the children array + const remainingContent = node.children.slice(2); + node.children = [codeElement, ...remainingContent]; + }); + }; +} \ No newline at end of file diff --git a/src/helpers/retrieveMdPages.ts b/src/helpers/retrieveMdPages.ts index 6cf905f..db22b45 100644 --- a/src/helpers/retrieveMdPages.ts +++ b/src/helpers/retrieveMdPages.ts @@ -11,6 +11,7 @@ import rehypeSlug from "rehype-slug"; import remarkHeadings, { hasHeadingsData } from "@vcarl/remark-headings"; import { toString } from "mdast-util-to-string"; import rehypeWrapFirstList from "./rehypeWrapFirstList"; +import rehypeWrapTimecodes from "./rehypeWrapTimecodes"; const loadMd = async (path: string) => { const fullPath = join(process.cwd(), `${path}.md`); @@ -55,6 +56,7 @@ export const processMd = (mdSource: string, options?: ProcessMdOptions) => { .use(remarkHeadings as ReturnType["use"]>) .use(remarkRehype, { allowDangerousHtml: true }) .use(rehypeSlug) + .use(rehypeWrapTimecodes) .use(rehypeWrapFirstList) .use(rehypeStringify, { allowDangerousHtml: true }); } From 094d471d18109cd44571a9f069b1fdf6aac92a50 Mon Sep 17 00:00:00 2001 From: Carl Vitullo Date: Sun, 9 Nov 2025 21:18:10 -0500 Subject: [PATCH 2/3] Remove `00:` hour prefix from every timecode --- src/helpers/rehypeWrapTimecodes.ts | 6 +- src/transcripts/ankita-kulkarni.md | 374 +++++----- src/transcripts/behind-react-documentary.md | 292 ++++---- src/transcripts/elizabeth-woolf.md | 662 +++++++++--------- src/transcripts/jenny-truong.md | 378 +++++----- src/transcripts/josh-comeau.md | 390 +++++------ src/transcripts/matt-pocock_mapleleaf.md | 100 +-- src/transcripts/react-miami-2023.md | 322 ++++----- .../sunil-pai_mark-erikson_rewrites.md | 380 +++++----- src/transcripts/tejas-kumar.md | 390 +++++------ src/transcripts/tmir-2024-01.md | 444 ++++++------ src/transcripts/tmir-2024-03.md | 380 +++++----- src/transcripts/tmir-2024-05.md | 462 ++++++------ src/transcripts/tmir-2024-06.md | 484 ++++++------- src/transcripts/tmir-2024-07.md | 464 ++++++------ src/transcripts/tmir-2024-09.md | 370 +++++----- src/transcripts/tmir-2024-10.md | 492 ++++++------- src/transcripts/tmir-2024-11.md | 492 ++++++------- src/transcripts/tmir-2025-01.md | 416 +++++------ src/transcripts/tmir-2025-03.md | 420 +++++------ src/transcripts/tmir-2025-04.md | 352 +++++----- src/transcripts/tmir-2025-06.md | 294 ++++---- src/transcripts/tmir-2025-08.md | 440 ++++++------ src/transcripts/tmir-2025-10.md | 526 +++++++------- src/transcripts/tmir-april-2023.md | 372 +++++----- src/transcripts/tmir-august-2023.md | 368 +++++----- src/transcripts/tmir-dec-2023.md | 184 ++--- src/transcripts/tmir-june-2023.md | 350 ++++----- src/transcripts/tmir-march-2023.md | 476 ++++++------- src/transcripts/tmir-may-2023.md | 376 +++++----- src/transcripts/tmir-nov-2023.md | 406 +++++------ src/transcripts/tmir-october-2023.md | 344 ++++----- src/transcripts/tmir-september-2023.md | 400 +++++------ src/transcripts/wix-team.md | 350 ++++----- 34 files changed, 6478 insertions(+), 6478 deletions(-) diff --git a/src/helpers/rehypeWrapTimecodes.ts b/src/helpers/rehypeWrapTimecodes.ts index 934503b..7b2561a 100644 --- a/src/helpers/rehypeWrapTimecodes.ts +++ b/src/helpers/rehypeWrapTimecodes.ts @@ -6,8 +6,8 @@ import type { Root, Element, Text, ElementContent } from "hast"; * Looks for list items that start with `[]` pattern * and wraps them in tags for styling. * - * Input:
  • [00:00:00] Intro
  • - * Output:
  • [00:00:00] Intro
  • + * Input:
  • [00:00] Intro
  • + * Output:
  • [00:00] Intro
  • */ export default function rehypeWrapTimecodes() { return (tree: Root) => { @@ -80,4 +80,4 @@ export default function rehypeWrapTimecodes() { node.children = [codeElement, ...remainingContent]; }); }; -} \ No newline at end of file +} diff --git a/src/transcripts/ankita-kulkarni.md b/src/transcripts/ankita-kulkarni.md index ddf93a8..8d34622 100644 --- a/src/transcripts/ankita-kulkarni.md +++ b/src/transcripts/ankita-kulkarni.md @@ -9,416 +9,416 @@ people: "[Ankita Kulkarni](https://github.com/kulkarniankita9)" -**Carl Vitullo:** I'm Carl Vitullo, I am here with Ankita Kulkarni she is a engineering manager, senior developer content creator and educator currently developing a course for people who are interested in the management track, and how to decide whether being a manager is something that they want. [00:00:17] +**Carl Vitullo:** I'm Carl Vitullo, I am here with Ankita Kulkarni she is a engineering manager, senior developer content creator and educator currently developing a course for people who are interested in the management track, and how to decide whether being a manager is something that they want. [00:17] ## Being laid off as a bittersweet opportunity -**Carl Vitullo:** Ankita. How are you? [00:00:19] +**Carl Vitullo:** Ankita. How are you? [00:19] -**Ankita Kulkarni:** I'm great. I guess a bit about me I've been working in the industry, tech industry for more than 10 years now, it feels like a very long time. I initially started as a developer, transitioned into leadership and I'm at the intersection of both where I would love, I call myself a leader at times, I called myself a developer at times and things like that. Last year, an opportunity came up because of the, the layoffs. [00:00:48] +**Ankita Kulkarni:** I'm great. I guess a bit about me I've been working in the industry, tech industry for more than 10 years now, it feels like a very long time. I initially started as a developer, transitioned into leadership and I'm at the intersection of both where I would love, I call myself a leader at times, I called myself a developer at times and things like that. Last year, an opportunity came up because of the, the layoffs. [00:48] -It was a bittersweet situation where I'm like, I really wanted to, I love teaching. I already have a course, I'm enjoying this. I love teaching people and helping them level up in their engineering careers. So I was like, this is something I'm really excited and passionate for. So I decided to go full-time being an educator. [00:01:04] +It was a bittersweet situation where I'm like, I really wanted to, I love teaching. I already have a course, I'm enjoying this. I love teaching people and helping them level up in their engineering careers. So I was like, this is something I'm really excited and passionate for. So I decided to go full-time being an educator. [01:04] -So that is really exciting. And yeah, like you mentioned, working on a program just to help developers to transition into leadership. And help ease that transition a little bit. [00:01:17] +So that is really exciting. And yeah, like you mentioned, working on a program just to help developers to transition into leadership. And help ease that transition a little bit. [01:17] -**Carl Vitullo:** Yeah. I, I did a similar transition. I, I spent about a year and a half as an engineering manager, and yeah, when we spoke in prep, you mentioned having to hit the ground running. I think it's really great for you to give back what you learned and really try and spread that knowledge. [00:01:32] +**Carl Vitullo:** Yeah. I, I did a similar transition. I, I spent about a year and a half as an engineering manager, and yeah, when we spoke in prep, you mentioned having to hit the ground running. I think it's really great for you to give back what you learned and really try and spread that knowledge. [01:32] ## Building databases at IBM and doing freelance web dev on the side -**Carl Vitullo:** If you could talk a bit about your background, how did you get your first job? [00:01:36] +**Carl Vitullo:** If you could talk a bit about your background, how did you get your first job? [01:36] -**Ankita Kulkarni:** I decided to go get my internship done as part of graduating from school. It was just a co-op program and I interned at IBM for 16 months. It was kind of cool actually. I learned a lot about you know, just like the release cycles of databases. [00:01:54] +**Ankita Kulkarni:** I decided to go get my internship done as part of graduating from school. It was just a co-op program and I interned at IBM for 16 months. It was kind of cool actually. I learned a lot about you know, just like the release cycles of databases. [01:54] -That's where I started. And then I worked on Java XML, but for IBM, which was kind of cool. So like, contributed a lot to the core java stuff, which is really awesome, and like how the parsers work and things like that. [00:02:09] +That's where I started. And then I worked on Java XML, but for IBM, which was kind of cool. So like, contributed a lot to the core java stuff, which is really awesome, and like how the parsers work and things like that. [02:09] -I quickly learned that I wanna be a web developer because I love seeing things and, just designing and developing websites in general. As I decided to run my own company and help local businesses build apps and I was like, I love my job, you know, after my day job. [00:02:26] +I quickly learned that I wanna be a web developer because I love seeing things and, just designing and developing websites in general. As I decided to run my own company and help local businesses build apps and I was like, I love my job, you know, after my day job. [02:26] -**Carl Vitullo:** Yeah, that's fun. So while you were working at IBM on databases, which is, wow, what a first job experience. I feel like that's thrown pretty deep in the, in the trenches. [00:02:37] +**Carl Vitullo:** Yeah, that's fun. So while you were working at IBM on databases, which is, wow, what a first job experience. I feel like that's thrown pretty deep in the, in the trenches. [02:37] -**Ankita Kulkarni:** I would say like I was interested in web development since pretty much high school. I really, and that's why I decided to take computer science and go learn at a school and things like that. But I would say, during my day job, I would do databases and then I wanted to still like learn web development and apply things professionally and like learn and build on really cool apps and, and actually do some good as well. [00:03:00] +**Ankita Kulkarni:** I would say like I was interested in web development since pretty much high school. I really, and that's why I decided to take computer science and go learn at a school and things like that. But I would say, during my day job, I would do databases and then I wanted to still like learn web development and apply things professionally and like learn and build on really cool apps and, and actually do some good as well. [03:00] -So I started doing contracts on the side, which kind of was a really happy side effect was I paid off my tuition before graduating, which was kind of cool. Yeah. But was also a lot of really long hours after work and things like that. So [00:03:13] +So I started doing contracts on the side, which kind of was a really happy side effect was I paid off my tuition before graduating, which was kind of cool. Yeah. But was also a lot of really long hours after work and things like that. So [03:13] -**Carl Vitullo:** Yeah. Wow. I've thought about doing some freelance on the side before, while I had a full-time job, but man, even just the context switching involved with keeping multiple code bases in your head at once. I, I, anytime I've started trying to do that, I found it just prohibitively difficult. So, major kudos for making that work. [00:03:31] +**Carl Vitullo:** Yeah. Wow. I've thought about doing some freelance on the side before, while I had a full-time job, but man, even just the context switching involved with keeping multiple code bases in your head at once. I, I, anytime I've started trying to do that, I found it just prohibitively difficult. So, major kudos for making that work. [03:31] ## New appreciation for coworkers after freelancing -**Ankita Kulkarni:** For sure. Yeah. I think the, the number one thing I learned from that experience was that empathy for all the different roles and all the different hats that you have to kind of wear being a freelancer, right? But also managing two different jobs and multitasking is not that great. It'll burn you out. So kinda, I feel like at the time I was like, I'm so excited. I'm passionate about web development. I have to do this. [00:03:57] +**Ankita Kulkarni:** For sure. Yeah. I think the, the number one thing I learned from that experience was that empathy for all the different roles and all the different hats that you have to kind of wear being a freelancer, right? But also managing two different jobs and multitasking is not that great. It'll burn you out. So kinda, I feel like at the time I was like, I'm so excited. I'm passionate about web development. I have to do this. [03:57] -So it was more fun for me and it did not feel like work at all. It was definitely something that I built, which was like empathy. Like empathy for all the roles and different hats and things like that. Cuz when I went full-time with IBM, Suddenly there were so many roles that, and I was like, whoa, I appreciate you so much. [00:04:15] +So it was more fun for me and it did not feel like work at all. It was definitely something that I built, which was like empathy. Like empathy for all the roles and different hats and things like that. Cuz when I went full-time with IBM, Suddenly there were so many roles that, and I was like, whoa, I appreciate you so much. [04:15] -You have no idea of being a freelancer cuz you are doing so many things that I did not realize as a developer. And I guess that help build that mindset too, right? Like how is a system built? And how things work end to end. Because I had to do the, a lot of that as a freelancer. [00:04:31] +You have no idea of being a freelancer cuz you are doing so many things that I did not realize as a developer. And I guess that help build that mindset too, right? Like how is a system built? And how things work end to end. Because I had to do the, a lot of that as a freelancer. [04:31] -**Carl Vitullo:** For sure, so you mean talking about having the support of other developers taking different chunks of work away from your responsibility? [00:04:40] +**Carl Vitullo:** For sure, so you mean talking about having the support of other developers taking different chunks of work away from your responsibility? [04:40] -**Ankita Kulkarni:** Yeah, that, and also like the fact that you had as a freelancer, you also had to do marketing and copywriting and like, supporting and promoting work and things like that too. Project management and all those things. And when you take up a job full-time, there are already pros. People are already working there, so it's like, "oh, I don't have to do all these things." [00:05:03] +**Ankita Kulkarni:** Yeah, that, and also like the fact that you had as a freelancer, you also had to do marketing and copywriting and like, supporting and promoting work and things like that too. Project management and all those things. And when you take up a job full-time, there are already pros. People are already working there, so it's like, "oh, I don't have to do all these things." [05:03] -As a developer, my job would be to maintain the systems, write code, collaborate with other developers, and I can always ask other people what to do about project management and things like that, which is kind of cool. [00:05:16] +As a developer, my job would be to maintain the systems, write code, collaborate with other developers, and I can always ask other people what to do about project management and things like that, which is kind of cool. [05:16] -**Carl Vitullo:** Okay, so we've been talking about your first job. Your you said 16 month internship at IBM [00:05:21] +**Carl Vitullo:** Okay, so we've been talking about your first job. Your you said 16 month internship at IBM [05:21] -**Ankita Kulkarni:** Yep [00:05:22] +**Ankita Kulkarni:** Yep [05:22] -**Carl Vitullo:** working on databases. Definitely a very different environment from web development. [00:05:26] +**Carl Vitullo:** working on databases. Definitely a very different environment from web development. [05:26] -**Ankita Kulkarni:** Yep. A hundred percent. Yeah. But then that's when you know what you're more passionate about. When you work on things that you, it's really great for as a first job, right? You learn so much about how software works and how at that scale, how, what are the consequences of your changes and like how do you collaborate and like really write good documentation because there was support and things like that. [00:05:51] +**Ankita Kulkarni:** Yep. A hundred percent. Yeah. But then that's when you know what you're more passionate about. When you work on things that you, it's really great for as a first job, right? You learn so much about how software works and how at that scale, how, what are the consequences of your changes and like how do you collaborate and like really write good documentation because there was support and things like that. [05:51] -So just like you learn so much there, but also you learn this was great for 16 months, but I would love to get into web development as I graduate or on the side. [00:06:03] +So just like you learn so much there, but also you learn this was great for 16 months, but I would love to get into web development as I graduate or on the side. [06:03] -**Carl Vitullo:** Absolutely. Yeah, I think database development is such a very distinct niche from anywhere else in software. What you said about, you know, the impact of your changes. If I, as a web developer ship a change that breaks something like, oh no, I have to fix it, run it through CI, three minutes later it's shipped, it's done. But if a database ships a bug, like the release cycle on that is just so long that it's an entirely different world of development. [00:06:29] +**Carl Vitullo:** Absolutely. Yeah, I think database development is such a very distinct niche from anywhere else in software. What you said about, you know, the impact of your changes. If I, as a web developer ship a change that breaks something like, oh no, I have to fix it, run it through CI, three minutes later it's shipped, it's done. But if a database ships a bug, like the release cycle on that is just so long that it's an entirely different world of development. [06:29] -**Ankita Kulkarni:** A hundred percent. And I think that's when you really have to take a step back and you really learn how to really review your changes and make sure everything is good. You learn the importance of testing and like writing test cases too. And no code will get deployed until everything has been tested like 10 different times by different people as having a separate testing QA team and things like that too. [00:06:54] +**Ankita Kulkarni:** A hundred percent. And I think that's when you really have to take a step back and you really learn how to really review your changes and make sure everything is good. You learn the importance of testing and like writing test cases too. And no code will get deployed until everything has been tested like 10 different times by different people as having a separate testing QA team and things like that too. [06:54] -**Carl Vitullo:** Yeah, for sure. [00:06:56] +**Carl Vitullo:** Yeah, for sure. [06:56] ## Getting her first management opportunity -**Carl Vitullo:** When you were a senior engineer getting your first management opportunity what were you doing there and how did the conversation start of, "do you wanna be a manager?" [00:07:06] +**Carl Vitullo:** When you were a senior engineer getting your first management opportunity what were you doing there and how did the conversation start of, "do you wanna be a manager?" [07:06] -**Ankita Kulkarni:** Mm-hmm. . Yeah, for sure. So I was a solution architect working at a consulting firm here in Toronto. So I was pretty much leading a lot of different projects and like architecting them and things like that because the position just sort of like opened up when their, the company wasn't doing so well at the time, so there was like, there were layoffs and like people were leaving and things like that. [00:07:30] +**Ankita Kulkarni:** Mm-hmm. . Yeah, for sure. So I was a solution architect working at a consulting firm here in Toronto. So I was pretty much leading a lot of different projects and like architecting them and things like that because the position just sort of like opened up when their, the company wasn't doing so well at the time, so there was like, there were layoffs and like people were leaving and things like that. [07:30] -So there was some, there's someone that needed to step in to help developers grow. And I sort of like started taking that position. So it wasn't like the idea, here you are promoted, congratulations, and now you can start doing the, doing a job, right? It was more so like, okay, like I need to really step up and really understand management and leadership and things like that and how. [00:07:54] +So there was some, there's someone that needed to step in to help developers grow. And I sort of like started taking that position. So it wasn't like the idea, here you are promoted, congratulations, and now you can start doing the, doing a job, right? It was more so like, okay, like I need to really step up and really understand management and leadership and things like that and how. [07:54] -That would work and how that's different from developers. So for that, like I really, you know, hired a coach and I found mentors and really, I really did not take it lightly because I know that it's really important to grow developers and just like maintaining the technical excellence of things too, which really helped. [00:08:15] +That would work and how that's different from developers. So for that, like I really, you know, hired a coach and I found mentors and really, I really did not take it lightly because I know that it's really important to grow developers and just like maintaining the technical excellence of things too, which really helped. [08:15] ## Leadership vs management -**Carl Vitullo:** Yeah. You mentioning leadership and management, I've heard from a couple of people about sort of the distinction there. Like being a good leader is an entirely different set of skills from being a good manager in many cases. So what sort, what size company was this that you were working at when you first started managing? [00:08:32] +**Carl Vitullo:** Yeah. You mentioning leadership and management, I've heard from a couple of people about sort of the distinction there. Like being a good leader is an entirely different set of skills from being a good manager in many cases. So what sort, what size company was this that you were working at when you first started managing? [08:32] -**Ankita Kulkarni:** They were about close to 300 people, so not that big, but the projects were really for big clients, so the impact was huge. Right? So, not having a leader is really, I, you know, was really necessary there. [00:08:46] +**Ankita Kulkarni:** They were about close to 300 people, so not that big, but the projects were really for big clients, so the impact was huge. Right? So, not having a leader is really, I, you know, was really necessary there. [08:46] -But I would say like one thing you touched upon, which was like management and leadership, right? And I think something I wanted to add there was and this is something I'm really passionate about, so you're gonna hear me hear from me a little [00:08:59] +But I would say like one thing you touched upon, which was like management and leadership, right? And I think something I wanted to add there was and this is something I'm really passionate about, so you're gonna hear me hear from me a little [08:59] -**Carl Vitullo:** Pop off, please! [00:09:00] +**Carl Vitullo:** Pop off, please! [09:00] -**Ankita Kulkarni:** Yeah. So I really believe in like, oh, you need to stop being a boss, you should start being a leader, right? And I think the word "boss" kind of comes from there, I think a boss like really commands you to do things right? [00:09:10] +**Ankita Kulkarni:** Yeah. So I really believe in like, oh, you need to stop being a boss, you should start being a leader, right? And I think the word "boss" kind of comes from there, I think a boss like really commands you to do things right? [09:10] -But a leader is honestly like there to help guide that change, help you navigate the change. Instead of telling you what to do, they are asking you questions and coaching you and things like that, which is like really significant and important, right? So, I think that's the distinguish, I would say like the huge distinction between like management and leadership is that as a leader you wanna drive that change so that even if you're gone, that change is still getting applied and being worked on. Whereas if you're just doing management, then you can just, you know, have a project and assign people to it and like they become resources and not like actual people working on it. So there's a lot involved there essentially. [00:09:51] +But a leader is honestly like there to help guide that change, help you navigate the change. Instead of telling you what to do, they are asking you questions and coaching you and things like that, which is like really significant and important, right? So, I think that's the distinguish, I would say like the huge distinction between like management and leadership is that as a leader you wanna drive that change so that even if you're gone, that change is still getting applied and being worked on. Whereas if you're just doing management, then you can just, you know, have a project and assign people to it and like they become resources and not like actual people working on it. So there's a lot involved there essentially. [09:51] -**Carl Vitullo:** Yeah, I think that's a good framing of the difference. I'm trying to think about a good metaphor for this. I'm imagining like, medieval times, like a battlefield, leader versus a manager. Somebody leading the charge from the front of the lines versus somebody like sitting away in the back and like, shouting over a megaphone, " go, go." [00:10:08] +**Carl Vitullo:** Yeah, I think that's a good framing of the difference. I'm trying to think about a good metaphor for this. I'm imagining like, medieval times, like a battlefield, leader versus a manager. Somebody leading the charge from the front of the lines versus somebody like sitting away in the back and like, shouting over a megaphone, " go, go." [10:08] -**Ankita Kulkarni:** I never thought about it like that, but yes, exactly. And there's also this image too, where just like a leader is just gonna create more leaders, right? Because they're enabling that change versus a boss is always going to have dependencies on them. And you all know how dependencies work, in software. It also applies here. [00:10:28] +**Ankita Kulkarni:** I never thought about it like that, but yes, exactly. And there's also this image too, where just like a leader is just gonna create more leaders, right? Because they're enabling that change versus a boss is always going to have dependencies on them. And you all know how dependencies work, in software. It also applies here. [10:28] -**Carl Vitullo:** I think that's actually a really apt metaphor. Managing dependencies as a developer is such a huge part of our job and such a struggle. It's hard, and it doesn't get any easier when the dependencies are people. [00:10:38] +**Carl Vitullo:** I think that's actually a really apt metaphor. Managing dependencies as a developer is such a huge part of our job and such a struggle. It's hard, and it doesn't get any easier when the dependencies are people. [10:38] -**Ankita Kulkarni:** Yeah. Yeah, exactly. It's just like, I think software is still easy, right? Like you have to handle dependencies, you can review the code changes and figure out if there are some issues over there , right? [00:10:50] +**Ankita Kulkarni:** Yeah. Yeah, exactly. It's just like, I think software is still easy, right? Like you have to handle dependencies, you can review the code changes and figure out if there are some issues over there , right? [10:50] -But like, for management of people, it's like completely different. People are complex. We are complex human beings. So it's not easy for you to just manage anyone, right? I think you need to really drive that change and they need to really be motivated to do it, to enable that. Yeah. [00:11:07] +But like, for management of people, it's like completely different. People are complex. We are complex human beings. So it's not easy for you to just manage anyone, right? I think you need to really drive that change and they need to really be motivated to do it, to enable that. Yeah. [11:07] -**Carl Vitullo:** Yeah. I think motivated is a good word to use there. A lot of management wants to treat people as fungible, as interchangeable. They're different cogs in a machine and if one cog wears out, you just replace it with another one. But I think people's expertise and motivation is really different and really something really challenging to manage. [00:11:28] +**Carl Vitullo:** Yeah. I think motivated is a good word to use there. A lot of management wants to treat people as fungible, as interchangeable. They're different cogs in a machine and if one cog wears out, you just replace it with another one. But I think people's expertise and motivation is really different and really something really challenging to manage. [11:28] ## Intrinsic motivation and finding a team that supports your goals -**Ankita Kulkarni:** Yeah, for sure. I guess like if you assess like what their goals are, what they wanna work on, and then figure out what the goals of the org, right? And again, it's like a venn diagram. It has to be, because if those are not, then they're just two circles working on their own. But like, you need to figure out what people are motivated by, what are they interested in, how they want to grow. [00:11:47] +**Ankita Kulkarni:** Yeah, for sure. I guess like if you assess like what their goals are, what they wanna work on, and then figure out what the goals of the org, right? And again, it's like a venn diagram. It has to be, because if those are not, then they're just two circles working on their own. But like, you need to figure out what people are motivated by, what are they interested in, how they want to grow. [11:47] -Because as developers we love trying new things. We love, you know, playing with new technology and things like that. So that opportunity should always be there for us to grow our brand and grow our skills. And that is something that we need to enable, right? [00:12:01] +Because as developers we love trying new things. We love, you know, playing with new technology and things like that. So that opportunity should always be there for us to grow our brand and grow our skills. And that is something that we need to enable, right? [12:01] -That's not something I can tell anyone, hey, you need to be motivated about this thing. Intrinsic motivation is what I was talking about. [00:12:08] +That's not something I can tell anyone, hey, you need to be motivated about this thing. Intrinsic motivation is what I was talking about. [12:08] -**Carl Vitullo:** Intrinsic motivation is one of my favorite phrases. It's so important. [00:12:12] +**Carl Vitullo:** Intrinsic motivation is one of my favorite phrases. It's so important. [12:12] -**Ankita Kulkarni:** Yeah, exactly. If I tell you what to do, you're not gonna do it. If I ask you questions and make you think for how you should be doing those things to help you progress in your career and how that benefits to the wider org, right? And our vision for the company, then you're going to position things differently and you're gonna think about it a little bit more. [00:12:31] +**Ankita Kulkarni:** Yeah, exactly. If I tell you what to do, you're not gonna do it. If I ask you questions and make you think for how you should be doing those things to help you progress in your career and how that benefits to the wider org, right? And our vision for the company, then you're going to position things differently and you're gonna think about it a little bit more. [12:31] -And we can work out like what that, what that Venn diagram is. (Laughter) [00:12:36] +And we can work out like what that, what that Venn diagram is. (Laughter) [12:36] -**Carl Vitullo:** Yeah. And like you said about Venn diagram, if they don't overlap, if the orgs goals and your personal goals don't overlap, then maybe that's not a good job for you. Maybe that's not the right role. [00:12:46] +**Carl Vitullo:** Yeah. And like you said about Venn diagram, if they don't overlap, if the orgs goals and your personal goals don't overlap, then maybe that's not a good job for you. Maybe that's not the right role. [12:46] -**Ankita Kulkarni:** Yeah, exactly. And I, and maybe, and yeah, that's a really good point too, I have been in positions, plus also I've seen other developers being in that position too. Like if that doesn't overlap, then I think you should probably find a team, or ask your manager to help you find a team, to figure out where it overlaps, right? Because otherwise it's just gonna you are never gonna find that intrinsic motivation that we just talked about. [00:13:09] +**Ankita Kulkarni:** Yeah, exactly. And I, and maybe, and yeah, that's a really good point too, I have been in positions, plus also I've seen other developers being in that position too. Like if that doesn't overlap, then I think you should probably find a team, or ask your manager to help you find a team, to figure out where it overlaps, right? Because otherwise it's just gonna you are never gonna find that intrinsic motivation that we just talked about. [13:09] -You are just gonna treat a job as a job, which is totally cool too, right? Like if that's what you want to do and that's what your priorities are. But like, I think in order for you to grow in your career, I think it will be important for you to be passionate about it as well. [00:13:22] +You are just gonna treat a job as a job, which is totally cool too, right? Like if that's what you want to do and that's what your priorities are. But like, I think in order for you to grow in your career, I think it will be important for you to be passionate about it as well. [13:22] -**Carl Vitullo:** Yeah, I definitely agree. It's very hard to keep your energy level high if you aren't genuinely interested in the work you're doing. And if your energy isn't high, like you said, absolutely nothing wrong with just treating it like a job. You go in, you know, you go to the code mines, you put some text in a file and you go home and you don't think about it past that. [00:13:41] +**Carl Vitullo:** Yeah, I definitely agree. It's very hard to keep your energy level high if you aren't genuinely interested in the work you're doing. And if your energy isn't high, like you said, absolutely nothing wrong with just treating it like a job. You go in, you know, you go to the code mines, you put some text in a file and you go home and you don't think about it past that. [13:41] -Nothing wrong with that, but I think that for, for those who are very motivated to improve and better themselves and do meaningful work, I think keeping the energy high and keeping something that you are genuinely intrinsically motivated about is really crucial. [00:13:57] +Nothing wrong with that, but I think that for, for those who are very motivated to improve and better themselves and do meaningful work, I think keeping the energy high and keeping something that you are genuinely intrinsically motivated about is really crucial. [13:57] -**Ankita Kulkarni:** Mm-hmm. A hundred percent. Yeah, I think it's really important to figure that out. [00:14:01] +**Ankita Kulkarni:** Mm-hmm. A hundred percent. Yeah, I think it's really important to figure that out. [14:01] -**Carl Vitullo:** Yeah, for sure. [00:14:03] +**Carl Vitullo:** Yeah, for sure. [14:03] ## Developer to Leader program -**Carl Vitullo:** So you've been working on courses. Can you talk about your current course and what you've done in the past? [00:14:11] +**Carl Vitullo:** So you've been working on courses. Can you talk about your current course and what you've done in the past? [14:11] -**Ankita Kulkarni:** Yeah, for sure. My current, I would say, like, program, cuz it's like more than a course at this point, but like the current program is called Developer to Leader. And the idea is that doesn't matter where you are in terms of your journey as a leader, if you have no experience or you do have experience. [00:14:28] +**Ankita Kulkarni:** Yeah, for sure. My current, I would say, like, program, cuz it's like more than a course at this point, but like the current program is called Developer to Leader. And the idea is that doesn't matter where you are in terms of your journey as a leader, if you have no experience or you do have experience. [14:28] -Right. And I think my, my course will help you give you that transformation that you need to become a leader. So I have like different sort of modules planned out to help you build a solid foundation. And again, we talked about like difference between a leader and a boss, but also staying true to engineering and figuring out, okay, what does technical excellence for your team look like, and things like that too. [00:14:51] +Right. And I think my, my course will help you give you that transformation that you need to become a leader. So I have like different sort of modules planned out to help you build a solid foundation. And again, we talked about like difference between a leader and a boss, but also staying true to engineering and figuring out, okay, what does technical excellence for your team look like, and things like that too. [14:51] -And I would say this program will really help you with that. And it's more than that too. It also helps with giving you that additional accountability. So I really wanted to design a community that really helps you become better as a leader, as a person in general. [00:15:05] +And I would say this program will really help you with that. And it's more than that too. It also helps with giving you that additional accountability. So I really wanted to design a community that really helps you become better as a leader, as a person in general. [15:05] -So in the community I have like lots of different fun activities such as lightweight cohorts , and hotseats, which are like recorded one-on-one conversations to help you become better as a leader. Cuz I genuinely believe, whenever anyone tries to do things on their own… being a developer or leader doesn't matter. As a person, I think it becomes very hard… you are still gonna struggle, right? So why not talk to other people who are on the same path as you, and really help with that. [00:15:30] +So in the community I have like lots of different fun activities such as lightweight cohorts , and hotseats, which are like recorded one-on-one conversations to help you become better as a leader. Cuz I genuinely believe, whenever anyone tries to do things on their own… being a developer or leader doesn't matter. As a person, I think it becomes very hard… you are still gonna struggle, right? So why not talk to other people who are on the same path as you, and really help with that. [15:30] -I've been working on that and the wait list is open right now. But I'm just like really asking for feedback from my newsletter and, sharing updates and all the cool things I'm working on. [00:15:41] +I've been working on that and the wait list is open right now. But I'm just like really asking for feedback from my newsletter and, sharing updates and all the cool things I'm working on. [15:41] -So if you're interested, yeah. [00:15:44] +So if you're interested, yeah. [15:44] -**Carl Vitullo:** Yeah, I put a link in the chat, and there will be a link in the description for the, when we publish this as well. [00:15:50] +**Carl Vitullo:** Yeah, I put a link in the chat, and there will be a link in the description for the, when we publish this as well. [15:50] ## How do you recognize a good leader? -**Carl Vitullo:** I see a question in the chat that I think is good to get to. How do you recognize a good leader? [00:15:54] +**Carl Vitullo:** I see a question in the chat that I think is good to get to. How do you recognize a good leader? [15:54] -Do you any intuitions there, anything you think is helpful for people? [00:15:59] +Do you any intuitions there, anything you think is helpful for people? [15:59] -**Ankita Kulkarni:** Yeah, for sure. I think early on, and this is a pattern that I've noticed, a lot of developers that want to lead more, they are really passionate about mentoring and helping others grow, right? So I would say if you really want that leadership experience, start looking for opportunities to help others grow. [00:16:16] +**Ankita Kulkarni:** Yeah, for sure. I think early on, and this is a pattern that I've noticed, a lot of developers that want to lead more, they are really passionate about mentoring and helping others grow, right? So I would say if you really want that leadership experience, start looking for opportunities to help others grow. [16:16] -If you have experience, which you could probably do at wherever you are at, try to figure out who else needs your help and try to help mentor them. But in terms of figuring out if they are a good leader or not. I think it just takes time and hard work and consistency and a lot of experience too, wherein you have to like learn from the mistakes you made, instead of asking people to do things, just like ask them questions, get curious about where they're at in their career and really like, drive change for them is what I would say is probably like the gist of it too. [00:16:50] +If you have experience, which you could probably do at wherever you are at, try to figure out who else needs your help and try to help mentor them. But in terms of figuring out if they are a good leader or not. I think it just takes time and hard work and consistency and a lot of experience too, wherein you have to like learn from the mistakes you made, instead of asking people to do things, just like ask them questions, get curious about where they're at in their career and really like, drive change for them is what I would say is probably like the gist of it too. [16:50] -I'm gonna use an analogy: like a duck. Like you can see like everything is smooth and nothing is going on, but then underneath the water it's just like, they're swimming, right? Similar thing with leader too, you are going to see that the team members are really happier. They know what they're looking for, they have proper goals set up. So a good leader would naturally have a lot of these things set up already. Good systems in place. Even if a leader is gone, there's not a lot of dependencies. [00:17:19] +I'm gonna use an analogy: like a duck. Like you can see like everything is smooth and nothing is going on, but then underneath the water it's just like, they're swimming, right? Similar thing with leader too, you are going to see that the team members are really happier. They know what they're looking for, they have proper goals set up. So a good leader would naturally have a lot of these things set up already. Good systems in place. Even if a leader is gone, there's not a lot of dependencies. [17:19] -People are also leveling up in their careers and are not stagnant. So they're not at the same level even a year from now or two years from now, depending where you are, which company you are at, right? [00:17:30] +People are also leveling up in their careers and are not stagnant. So they're not at the same level even a year from now or two years from now, depending where you are, which company you are at, right? [17:30] -All these signs would tell you like, Hey, like is this is this someone good leader or not? Because people should be genuinely happy and excited for the work that they're doing as well. [00:17:42] +All these signs would tell you like, Hey, like is this is this someone good leader or not? Because people should be genuinely happy and excited for the work that they're doing as well. [17:42] ## Teams as a group of individuals -**Carl Vitullo:** That reminds me of something that I have always believed pretty strongly about management and software teams, I guess really teams in general. They're all made up of individuals. Any team is a group of people figuring out how to most effectively work together. [00:17:59] +**Carl Vitullo:** That reminds me of something that I have always believed pretty strongly about management and software teams, I guess really teams in general. They're all made up of individuals. Any team is a group of people figuring out how to most effectively work together. [17:59] -The same way that you can't build an Olympic team by just picking the best individual players. The most important factor is not individual skill. It's so important that the members trust each other and understand what each other are good at, and I think that that's, I think this is restating something that you've just said. [00:18:21] +The same way that you can't build an Olympic team by just picking the best individual players. The most important factor is not individual skill. It's so important that the members trust each other and understand what each other are good at, and I think that that's, I think this is restating something that you've just said. [18:21] -I think good leaders, good managers are able to identify those things. They have that radar to say, " ah, I see you and this person , maybe you'll have friction with each other because of your communication styles." And identify those issues and help build a system where that team is able to collaborate effectively. [00:18:40] +I think good leaders, good managers are able to identify those things. They have that radar to say, " ah, I see you and this person , maybe you'll have friction with each other because of your communication styles." And identify those issues and help build a system where that team is able to collaborate effectively. [18:40] -**Ankita Kulkarni:** A hundred percent. You need to keep a pulse on things as a leader, right? Trusting your gut and intuition is very important as well. So for example, like you just said, if two people are not getting along and you can see some signs, don't hesitate to approach them and just ask them, right? [00:18:58] +**Ankita Kulkarni:** A hundred percent. You need to keep a pulse on things as a leader, right? Trusting your gut and intuition is very important as well. So for example, like you just said, if two people are not getting along and you can see some signs, don't hesitate to approach them and just ask them, right? [18:58] -Like, "Hey, I noticed something there. Is there something you wanna talk about or is there something I can help?" I would also say that's a good leader too, you're not just assuming and changing things around based on projects because you saw something. Getting curious and really understanding. [00:19:12] +Like, "Hey, I noticed something there. Is there something you wanna talk about or is there something I can help?" I would also say that's a good leader too, you're not just assuming and changing things around based on projects because you saw something. Getting curious and really understanding. [19:12] -And like you said too, like figuring out who works well together, what projects and goals they have, and like how you can maybe even shuffle things around a little bit. But all this adds up to, which is something I talk about as well a lot, is like, what's a high performing team? [00:19:29] +And like you said too, like figuring out who works well together, what projects and goals they have, and like how you can maybe even shuffle things around a little bit. But all this adds up to, which is something I talk about as well a lot, is like, what's a high performing team? [19:29] -Right? Like you said, like high performing team doesn't mean that there are a bunch of high performers in one team, who are crushing tickets and like, they have crazy velocity of like, and the way they're shipping things, right? It's not like that at all. It's kind of like, They work well together. If they fail, they fail together. They figure out how we can iterate now that we have failed. [00:19:53] +Right? Like you said, like high performing team doesn't mean that there are a bunch of high performers in one team, who are crushing tickets and like, they have crazy velocity of like, and the way they're shipping things, right? It's not like that at all. It's kind of like, They work well together. If they fail, they fail together. They figure out how we can iterate now that we have failed. [19:53] -So like, fail fast, iterate quickly, giving feedback to each other, and always making the team better, right? Because as a team, you need to figure out if you're at a, you wanna get to B, if you do go out at it on your own, you're not going together, right? Like, you need to really figure out, let's go together and let's brainstorm. This is not working, let's tweak this, and things like that. So again, like you will also notice that a good leader would help establish those practices, right? [00:20:23] +So like, fail fast, iterate quickly, giving feedback to each other, and always making the team better, right? Because as a team, you need to figure out if you're at a, you wanna get to B, if you do go out at it on your own, you're not going together, right? Like, you need to really figure out, let's go together and let's brainstorm. This is not working, let's tweak this, and things like that. So again, like you will also notice that a good leader would help establish those practices, right? [20:23] -**Carl Vitullo:** Yeah, and what were you saying before about leaders keeping a pulse on things and understanding and reaching out to members to identify problems maybe before they happen, [00:20:33] +**Carl Vitullo:** Yeah, and what were you saying before about leaders keeping a pulse on things and understanding and reaching out to members to identify problems maybe before they happen, [20:33] ## Psychological safety in software teams -**Carl Vitullo:** are you familiar with the term psychological safety? [00:20:35] +**Carl Vitullo:** are you familiar with the term psychological safety? [20:35] -**Ankita Kulkarni:** Yep. I've written a blog post on it because I'm so passionate about it. (Laughter) [00:20:41] +**Ankita Kulkarni:** Yep. I've written a blog post on it because I'm so passionate about it. (Laughter) [20:41] -Yeah, I think psychological safety is very important because, as a leader, you set the tone, right, for your team. The way you act in meetings, the way you are, sets the tone for the rest of your team. So it's really important that you walk the walk, right. And talk the talk. [00:20:58] +Yeah, I think psychological safety is very important because, as a leader, you set the tone, right, for your team. The way you act in meetings, the way you are, sets the tone for the rest of your team. So it's really important that you walk the walk, right. And talk the talk. [20:58] -Just to make sure that your team knows that it's okay to make mistakes, it's okay to, you know, do certain things and they can always ask you questions, if they need help, if something is going on personally, they can always come to you for help as well. Or they don't have to talk to you about personal stuff, but like, they can give you a heads up and like, if they need time off. All these things add to making a team really psychologically safe and asks the psychological safety of the team because it's important that as a leader, people feel like they can make mistakes. [00:21:32] +Just to make sure that your team knows that it's okay to make mistakes, it's okay to, you know, do certain things and they can always ask you questions, if they need help, if something is going on personally, they can always come to you for help as well. Or they don't have to talk to you about personal stuff, but like, they can give you a heads up and like, if they need time off. All these things add to making a team really psychologically safe and asks the psychological safety of the team because it's important that as a leader, people feel like they can make mistakes. [21:32] -Because think about it, how many bugs we run into, how many unexpected things we run into as a developer. If the manager is not able to understand that, then they're gonna have a hard time in software in general because it's important for us to collaborate together and like, yeah, ship things collaboratively. [00:21:50] +Because think about it, how many bugs we run into, how many unexpected things we run into as a developer. If the manager is not able to understand that, then they're gonna have a hard time in software in general because it's important for us to collaborate together and like, yeah, ship things collaboratively. [21:50] -**Carl Vitullo:** Yeah, definitely. I think a commonly given piece of advice for managers and leaders is to like, remember the human, and be able to, I don't know, work with people when they are in, maybe in a point of struggle. Maybe somebody's output is dipped. They were a high performer six months ago, and now they've, they're really, they're struggling. [00:22:10] +**Carl Vitullo:** Yeah, definitely. I think a commonly given piece of advice for managers and leaders is to like, remember the human, and be able to, I don't know, work with people when they are in, maybe in a point of struggle. Maybe somebody's output is dipped. They were a high performer six months ago, and now they've, they're really, they're struggling. [22:10] -They're not getting tickets closed or whatever. And I think a naive management approach might be to come in and say, "Hey, what's going on? What's wrong? Why aren't you doing this? Work faster?" [00:22:20] +They're not getting tickets closed or whatever. And I think a naive management approach might be to come in and say, "Hey, what's going on? What's wrong? Why aren't you doing this? Work faster?" [22:20] -**Ankita Kulkarni:** Yeah. [00:22:20] +**Ankita Kulkarni:** Yeah. [22:20] -**Carl Vitullo:** Maybe what that person needs is not the stick. You know, not getting like a whapped like, "Hey, faster go, go, go." [00:22:28] +**Carl Vitullo:** Maybe what that person needs is not the stick. You know, not getting like a whapped like, "Hey, faster go, go, go." [22:28] -But maybe, you know, their life has changed. Maybe a parent got sick, they need to care for someone. They are going through a relationship struggle. They are, in a position where they don't have as much available brain space. If a third of your spare brain cycles are occupied by some major personal event, then of course you're not as effective at work. [00:22:51] +But maybe, you know, their life has changed. Maybe a parent got sick, they need to care for someone. They are going through a relationship struggle. They are, in a position where they don't have as much available brain space. If a third of your spare brain cycles are occupied by some major personal event, then of course you're not as effective at work. [22:51] -And you know, maybe the fix there isn't even anything that a manager has influence over other than just like, "Hey, take a breather, take care of yourself. Come back when you're ready." [00:23:01] +And you know, maybe the fix there isn't even anything that a manager has influence over other than just like, "Hey, take a breather, take care of yourself. Come back when you're ready." [23:01] ## Having empathy as a leader -**Ankita Kulkarni:** Exactly. Like I totally resonate with this. Like, I think it's important to be thoughtful in your approach as a manager, right? It happened in the past like many times where people have personal stuff, so I, I did as well. [00:23:14] +**Ankita Kulkarni:** Exactly. Like I totally resonate with this. Like, I think it's important to be thoughtful in your approach as a manager, right? It happened in the past like many times where people have personal stuff, so I, I did as well. [23:14] -And I think what's important here is… again, like, like you said, "okay, work faster. I don't care what's going on at home. Like this is work. You get paid for this." Like, that attitude is so bad. Like it's toxic, right? We don't want those managers at all, or we don't wanna train people to be those managers at all. Instead, I think you have a project that you wanna deliver, right? So as a manager, you are responsible for it. So if you push that person to work harder, they're going to burn out. They're probably gonna take a few days off and you're not gonna deliver your project. [00:23:48] +And I think what's important here is… again, like, like you said, "okay, work faster. I don't care what's going on at home. Like this is work. You get paid for this." Like, that attitude is so bad. Like it's toxic, right? We don't want those managers at all, or we don't wanna train people to be those managers at all. Instead, I think you have a project that you wanna deliver, right? So as a manager, you are responsible for it. So if you push that person to work harder, they're going to burn out. They're probably gonna take a few days off and you're not gonna deliver your project. [23:48] -Instead, if you're empathetic and thoughtful and if you're curious about you know, what's going on in their life or things like that, right? I think it's really, you don't, you don't have to get personal, right? But you can just ask them, "Hey, I've noticed that you've been a bit off." Is there something going on or would you like to take some time off? Offer a few solutions too. [00:24:09] +Instead, if you're empathetic and thoughtful and if you're curious about you know, what's going on in their life or things like that, right? I think it's really, you don't, you don't have to get personal, right? But you can just ask them, "Hey, I've noticed that you've been a bit off." Is there something going on or would you like to take some time off? Offer a few solutions too. [24:09] -And this happened like in my past position, like someone was a high performer, was crushing tickets, always had things under control. Suddenly their performance dipped. And I was really curious. I was like, are they okay? Like, is everything okay personally because your personal stuff does impact work because we are humans, right? Like we talked about. And they were like, yes, something is, I don't know how you could tell that something was going on. And I'm like, take the day off. It doesn't matter. We'll keep working on things, what's important is that you take care of yourself and your mental health, right? And next day they took the day off. Next day they came back and they were back to their usual groove. [00:24:48] +And this happened like in my past position, like someone was a high performer, was crushing tickets, always had things under control. Suddenly their performance dipped. And I was really curious. I was like, are they okay? Like, is everything okay personally because your personal stuff does impact work because we are humans, right? Like we talked about. And they were like, yes, something is, I don't know how you could tell that something was going on. And I'm like, take the day off. It doesn't matter. We'll keep working on things, what's important is that you take care of yourself and your mental health, right? And next day they took the day off. Next day they came back and they were back to their usual groove. [24:48] -I'm honestly surprised because a day off can be so important, and then you have that support. They told me that after, " thank you for giving me that psychological safety in the team, that I could take the time off because I felt like I couldn't because of the project delivery." [00:25:04] +I'm honestly surprised because a day off can be so important, and then you have that support. They told me that after, " thank you for giving me that psychological safety in the team, that I could take the time off because I felt like I couldn't because of the project delivery." [25:04] -We were able to get our project done, and it was okay. Everything was fine toward the end. So it's just like, what's important is to really be mindful and thoughtful in your approach. [00:25:14] +We were able to get our project done, and it was okay. Everything was fine toward the end. So it's just like, what's important is to really be mindful and thoughtful in your approach. [25:14] -You're dealing with people, it's not just software, oh, there's a bug, let's fix it. Right? There is a situation here. Let's talk to them, figure out if they're okay. And then based on that, your strategy is always gonna be different. [00:25:26] +You're dealing with people, it's not just software, oh, there's a bug, let's fix it. Right? There is a situation here. Let's talk to them, figure out if they're okay. And then based on that, your strategy is always gonna be different. [25:26] -**Carl Vitullo:** Yeah, definitely. I think what you said about this team member thanking you for giving them the psychological safety to take a day for themselves. I really think that a manager, a leader approaching someone who has had their performance dip or something like that, and just genuinely approaching them curiously about like, Hey, what's going on? How are you doing? [00:25:48] +**Carl Vitullo:** Yeah, definitely. I think what you said about this team member thanking you for giving them the psychological safety to take a day for themselves. I really think that a manager, a leader approaching someone who has had their performance dip or something like that, and just genuinely approaching them curiously about like, Hey, what's going on? How are you doing? [25:48] -Even if they don't wanna talk about it. Like, okay, sure, there are personal and professional boundaries. Like maybe I don't want to talk to my manager about like a sick grandparent or something like that. But just giving space for them to have these personal experiences that are disconnected from work and saying, yes, I acknowledge that this job is not the only thing in your world. [00:26:09] +Even if they don't wanna talk about it. Like, okay, sure, there are personal and professional boundaries. Like maybe I don't want to talk to my manager about like a sick grandparent or something like that. But just giving space for them to have these personal experiences that are disconnected from work and saying, yes, I acknowledge that this job is not the only thing in your world. [26:09] -I think that can really go a long way to just, you know, okay, maybe one day off is not, doesn't fix all their problems. It doesn't fix their life, but it sends a signal that they are supported, they are, they have a friend and I think sometimes that's all you need. [00:26:24] +I think that can really go a long way to just, you know, okay, maybe one day off is not, doesn't fix all their problems. It doesn't fix their life, but it sends a signal that they are supported, they are, they have a friend and I think sometimes that's all you need. [26:24] -**Ankita Kulkarni:** Yep. Exactly. And like even if you think about like outside of work, right? If you're going through something personal, you're always gonna talk to a friend or a family member, right? Someone who, you know, would have your back and would support you regardless. And I think that's important here as well, to have your manager's support. [00:26:41] +**Ankita Kulkarni:** Yep. Exactly. And like even if you think about like outside of work, right? If you're going through something personal, you're always gonna talk to a friend or a family member, right? Someone who, you know, would have your back and would support you regardless. And I think that's important here as well, to have your manager's support. [26:41] -And I think in that case, you're always going to grow and you're going to make the team better. And you're probably also maybe going to be more loyal too because you, to the work that you're doing, cuz you are supported, you're happier, right? Because that's what we want sometimes. [00:26:56] +And I think in that case, you're always going to grow and you're going to make the team better. And you're probably also maybe going to be more loyal too because you, to the work that you're doing, cuz you are supported, you're happier, right? Because that's what we want sometimes. [26:56] -**Carl Vitullo:** Right. Yeah. Loyalty is a two-way street. If a company, if a manager demonstrates meaningful commitment to an employee in a time of need, I think the inverse is much more likely to be true. [00:27:06] +**Carl Vitullo:** Right. Yeah. Loyalty is a two-way street. If a company, if a manager demonstrates meaningful commitment to an employee in a time of need, I think the inverse is much more likely to be true. [27:06] -Like if there is an urgent deadline, I think it's much easier for people to say, yes, cool. I understand the situation, I have to put everything else on pause and go, go, go. But if you just expect that, if that's the default assumption that everyone will drop everything at a moment's notice, then that starts feeling not so good. [00:27:25] +Like if there is an urgent deadline, I think it's much easier for people to say, yes, cool. I understand the situation, I have to put everything else on pause and go, go, go. But if you just expect that, if that's the default assumption that everyone will drop everything at a moment's notice, then that starts feeling not so good. [27:25] ## Serving those you lead -**Ankita Kulkarni:** Exactly. Yeah. And personally for me, because I've had that technical background, right? I don't mind getting my hands dirty anytime in need. And I'm like, how can I help? Do you need me to do anything? Because like at that point, my focus is also probably the project, right? That the team needs more help and asking them that, they're like, yes, can you please help us with this, this, and this? [00:27:47] +**Ankita Kulkarni:** Exactly. Yeah. And personally for me, because I've had that technical background, right? I don't mind getting my hands dirty anytime in need. And I'm like, how can I help? Do you need me to do anything? Because like at that point, my focus is also probably the project, right? That the team needs more help and asking them that, they're like, yes, can you please help us with this, this, and this? [27:47] -And I'm like, done. That's taken off your plates and I'm gonna take care of that. Right? So again, like that also helps and helps build trust too because they know that Oh yeah. We can always ask her to help us. With, with whatever work we need. Or it doesn't even have to be code. It can be process oriented. It could be code reviews, it could be anything else, or like you're blocked by something small. Anything that you can help again, like how can I help is always like a really good approach in most scenarios. [00:28:15] +And I'm like, done. That's taken off your plates and I'm gonna take care of that. Right? So again, like that also helps and helps build trust too because they know that Oh yeah. We can always ask her to help us. With, with whatever work we need. Or it doesn't even have to be code. It can be process oriented. It could be code reviews, it could be anything else, or like you're blocked by something small. Anything that you can help again, like how can I help is always like a really good approach in most scenarios. [28:15] -**Carl Vitullo:** Yeah, definitely. So that's feels like it touches on the idea of like servant leadership, where a leader's role is to serve the people that they are in charge of. [00:28:25] +**Carl Vitullo:** Yeah, definitely. So that's feels like it touches on the idea of like servant leadership, where a leader's role is to serve the people that they are in charge of. [28:25] -**Ankita Kulkarni:** Yeah, totally. The term servant I think probably has maybe a negative connotation, I don't know. But just like servant leadership in general, like what it talks about that, Hey, I'm here for you. [00:28:37] +**Ankita Kulkarni:** Yeah, totally. The term servant I think probably has maybe a negative connotation, I don't know. But just like servant leadership in general, like what it talks about that, Hey, I'm here for you. [28:37] -Whatever you need, let me know. I'm going to help you. And again, the attitude is also more so like, let's help each other. Right. Let's collaborate, let's have fun working together. And less about like, when is it gonna be done? Gimme updates, like all the freaking time, right? It's just not, not great. [00:28:54] +Whatever you need, let me know. I'm going to help you. And again, the attitude is also more so like, let's help each other. Right. Let's collaborate, let's have fun working together. And less about like, when is it gonna be done? Gimme updates, like all the freaking time, right? It's just not, not great. [28:54] -**Carl Vitullo:** Right. If you're all in this together, you're all trying to ship the same project, which you know you understand is a shared goal because that foundation has been laid over the professional relationship then yeah, absolutely. [00:29:06] +**Carl Vitullo:** Right. If you're all in this together, you're all trying to ship the same project, which you know you understand is a shared goal because that foundation has been laid over the professional relationship then yeah, absolutely. [29:06] ## Spotting burnout as a leader -**Carl Vitullo:** So as a manager, have there been times where you recognized that someone on your team, somebody in your company, maybe not one of your direct reports, was at risk of burnout? [00:29:16] +**Carl Vitullo:** So as a manager, have there been times where you recognized that someone on your team, somebody in your company, maybe not one of your direct reports, was at risk of burnout? [29:16] -**Ankita Kulkarni:** Yeah, for sure. Like it happened a few times. It also happened with me personally too, it's good to keep a pulse on things for yourself too, because your mental health is also important and as, as equally as your teams, right? So make sure you do that. [00:29:29] +**Ankita Kulkarni:** Yeah, for sure. Like it happened a few times. It also happened with me personally too, it's good to keep a pulse on things for yourself too, because your mental health is also important and as, as equally as your teams, right? So make sure you do that. [29:29] -I have noticed when someone is considered a high performer and they feel like they need to do everything and they really crush tickets, like they're really working all the time and I think. In that case, I definitely approach it. [00:29:45] +I have noticed when someone is considered a high performer and they feel like they need to do everything and they really crush tickets, like they're really working all the time and I think. In that case, I definitely approach it. [29:45] -I know you're passionate about it, but I definitely believe in sustainable pace, so I really don't want them to burn out. But even letting them know that is really important because they think for some reason they have to do this thing, because they're the most senior most member, or they have the most experience in that specific team or whatever might be the reason. [00:30:06] +I know you're passionate about it, but I definitely believe in sustainable pace, so I really don't want them to burn out. But even letting them know that is really important because they think for some reason they have to do this thing, because they're the most senior most member, or they have the most experience in that specific team or whatever might be the reason. [30:06] -But I think like, it's important that just letting them know that they can take time off they can maintain that work-life balance, whatever that is for them. Maintain that sustainable pace. I also don't hesitate to tell people, especially senior members of the team, that their actions also have an impact on more junior folks who are looking up to them as well. [00:30:27] +But I think like, it's important that just letting them know that they can take time off they can maintain that work-life balance, whatever that is for them. Maintain that sustainable pace. I also don't hesitate to tell people, especially senior members of the team, that their actions also have an impact on more junior folks who are looking up to them as well. [30:27] ## Setting the tone on a team -**Ankita Kulkarni:** Because they're setting the tone too, and that changes the culture significantly. So if they think that the senior most member is working 80 hours a week, then they think in order to get promoted, they also need to work 80 hours a week. [00:30:40] +**Ankita Kulkarni:** Because they're setting the tone too, and that changes the culture significantly. So if they think that the senior most member is working 80 hours a week, then they think in order to get promoted, they also need to work 80 hours a week. [30:40] -That's the job of a manager, to make sure that they know that they're setting the tone for the rest of the team and something that they should not do as much. It's fine. Obviously, we all get our, like, oh my God, I'm so excited for this feature, and things like that. [00:30:54] +That's the job of a manager, to make sure that they know that they're setting the tone for the rest of the team and something that they should not do as much. It's fine. Obviously, we all get our, like, oh my God, I'm so excited for this feature, and things like that. [30:54] -But it's also good to openly talk about it. I know the question was burnout, but I think it's also like important that all this adds up, that they know the expectations are not for them to work 80 hours a week. [00:31:06] +But it's also good to openly talk about it. I know the question was burnout, but I think it's also like important that all this adds up, that they know the expectations are not for them to work 80 hours a week. [31:06] -**Carl Vitullo:** Yeah, definitely. I think that that is maybe not directly burnout, but I think that, it's a major contributor to it, you know? It, it does set the tone. Like you said, if people see that the influential high-performing people are overworking themselves, then yeah, then that's, that appears to be behavior that's rewarded. [00:31:24] +**Carl Vitullo:** Yeah, definitely. I think that that is maybe not directly burnout, but I think that, it's a major contributor to it, you know? It, it does set the tone. Like you said, if people see that the influential high-performing people are overworking themselves, then yeah, then that's, that appears to be behavior that's rewarded. [31:24] -That's something that I've definitely tried to be cognizant of in my career. I've been a manager, I've been a tech lead, I've been just like a very senior engineer on a team. And I personally, I have ADHD, I am neuro divergent, whatever I. I enjoy unstructured time. [00:31:42] +That's something that I've definitely tried to be cognizant of in my career. I've been a manager, I've been a tech lead, I've been just like a very senior engineer on a team. And I personally, I have ADHD, I am neuro divergent, whatever I. I enjoy unstructured time. [31:42] -I don't do nine to five very well. I like following whatever thread my brain is on and, you know, do that, chase it down, go somewhere else. And so, especially through the covid time, through its pandemic and work from home, I personally found that it was really beneficial for me to just work a loose schedule. [00:31:58] +I don't do nine to five very well. I like following whatever thread my brain is on and, you know, do that, chase it down, go somewhere else. And so, especially through the covid time, through its pandemic and work from home, I personally found that it was really beneficial for me to just work a loose schedule. [31:58] -Like if I wanna take three hours and do a home errand in the afternoon, I'll make that up on the back end. I'll work, I'll pick up, work up at six and work until nine or something like that. [00:32:08] +Like if I wanna take three hours and do a home errand in the afternoon, I'll make that up on the back end. I'll work, I'll pick up, work up at six and work until nine or something like that. [32:08] -But the flip side of that is, that works great for me. Nobody on my team, nobody in Slack knows that I took a three hour break in the afternoon. [00:32:15] +But the flip side of that is, that works great for me. Nobody on my team, nobody in Slack knows that I took a three hour break in the afternoon. [32:15] -**Ankita Kulkarni:** Yep. [00:32:17] +**Ankita Kulkarni:** Yep. [32:17] -**Carl Vitullo:** So if I'm pushing commits at 10, 11 at night, that looks like I am, you know, working 80 hours a week when that's not the case. That can be a challenging balance. [00:32:27] +**Carl Vitullo:** So if I'm pushing commits at 10, 11 at night, that looks like I am, you know, working 80 hours a week when that's not the case. That can be a challenging balance. [32:27] ## Proactively setting team norms -**Ankita Kulkarni:** Hundred percent in, in fact, it did happen a couple times in the past with my teams. And what we did was we created a team norms document. Team norms are kind of like, again, like just something that the team does that we are just documenting it and letting everyone know. And it's like a healthy discussion. [00:32:44] +**Ankita Kulkarni:** Hundred percent in, in fact, it did happen a couple times in the past with my teams. And what we did was we created a team norms document. Team norms are kind of like, again, like just something that the team does that we are just documenting it and letting everyone know. And it's like a healthy discussion. [32:44] -So for example, Carl, you know, he loves unstructured time, so expect that just because Carl is working after 11 doesn't mean that Carl is crunching, I don't know, whatever hours, right? It doesn't mean that's how Carl works. And letting people know that certainly gives them context. [00:33:00] +So for example, Carl, you know, he loves unstructured time, so expect that just because Carl is working after 11 doesn't mean that Carl is crunching, I don't know, whatever hours, right? It doesn't mean that's how Carl works. And letting people know that certainly gives them context. [33:00] -Right? And I, and team norms, I, there's an exercise for that, which I love to do whenever I join a new team, or more so like when I, when the team is new, cuz I think it really just like triggers so many discussions, right? Like, oh yeah, I'm not like that at all. I love my morning time. Oh I love my evening time. [00:33:18] +Right? And I, and team norms, I, there's an exercise for that, which I love to do whenever I join a new team, or more so like when I, when the team is new, cuz I think it really just like triggers so many discussions, right? Like, oh yeah, I'm not like that at all. I love my morning time. Oh I love my evening time. [33:18] -And I'm like, yes, that's totally cool. Like as long as like you are doing it, it's just amazing. Like, doesn't matter when you do it, but again, it depends company to company as well. But so you could totally be in a culture where it's only purely nine to five. And I think you have to kinda assess that too for yourself, right? [00:33:36] +And I'm like, yes, that's totally cool. Like as long as like you are doing it, it's just amazing. Like, doesn't matter when you do it, but again, it depends company to company as well. But so you could totally be in a culture where it's only purely nine to five. And I think you have to kinda assess that too for yourself, right? [33:36] -Like what's the culture like? And like, then accordingly adjust. [00:33:39] +Like what's the culture like? And like, then accordingly adjust. [33:39] -**Carl Vitullo:** Yeah, most definitely. Yeah, those sorts of meta conversations, talking about how we work rather than just talking about the work itself, I think those are so crucially important, especially for a leader, to be facilitating. And I think that that's one of the very difficult parts of maintaining a high performance team over a long period of time. [00:34:03] +**Carl Vitullo:** Yeah, most definitely. Yeah, those sorts of meta conversations, talking about how we work rather than just talking about the work itself, I think those are so crucially important, especially for a leader, to be facilitating. And I think that that's one of the very difficult parts of maintaining a high performance team over a long period of time. [34:03] -You know, cuz like you said, you, you join a new team, you sort of have some of these conversations. They're good icebreakers, they're good, like get to know your questions for people on a team. [00:34:11] +You know, cuz like you said, you, you join a new team, you sort of have some of these conversations. They're good icebreakers, they're good, like get to know your questions for people on a team. [34:11] -**Ankita Kulkarni:** Mm-hmm. [00:34:12] +**Ankita Kulkarni:** Mm-hmm. [34:12] -**Carl Vitullo:** But then, you know, six months later, people change, people's preferences, interests, expertise, evolves. And if there isn't an external event, like a new manager, you know, a major team reorganization, then I think it's hard for those conversations to surface naturally. [00:34:30] +**Carl Vitullo:** But then, you know, six months later, people change, people's preferences, interests, expertise, evolves. And if there isn't an external event, like a new manager, you know, a major team reorganization, then I think it's hard for those conversations to surface naturally. [34:30] -I wanted to give voice to that sort of idea of talking about your own preferences, comparing notes with other people and just sort of getting to know them better and how they think about their work, I think is one of the hallmarks of a high performing team over the long run. [00:34:49] +I wanted to give voice to that sort of idea of talking about your own preferences, comparing notes with other people and just sort of getting to know them better and how they think about their work, I think is one of the hallmarks of a high performing team over the long run. [34:49] ## Prioritizing your own growth as a leader -**Ankita Kulkarni:** Hundred percent. And I think that one thing I wanna touch upon that you just mentioned, like as developers, right? We are very good. Like we wanna get good at React. We are going to become the best React developers, and we have this timeframe in our head, or I decided, right? I wanna be, become the best that I can be. [00:35:06] +**Ankita Kulkarni:** Hundred percent. And I think that one thing I wanna touch upon that you just mentioned, like as developers, right? We are very good. Like we wanna get good at React. We are going to become the best React developers, and we have this timeframe in our head, or I decided, right? I wanna be, become the best that I can be. [35:06] -As manager, you don't focus on react, you focus on all these things, right? Like, yeah, it's definitely good to play around with all these technologies, right? But like, as a leader, what you should be doing is, for example, if there's a React code base, after six months, we're still gonna work on it, we're still gonna improve it. [00:35:24] +As manager, you don't focus on react, you focus on all these things, right? Like, yeah, it's definitely good to play around with all these technologies, right? But like, as a leader, what you should be doing is, for example, if there's a React code base, after six months, we're still gonna work on it, we're still gonna improve it. [35:24] -We're always gonna keep brainstorming different ways via code reviews and all these different things. But as a manager, make sure that you're doing the same, you are investing time in becoming better. Talk to other leaders in the company. How are they doing things? [00:35:38] +We're always gonna keep brainstorming different ways via code reviews and all these different things. But as a manager, make sure that you're doing the same, you are investing time in becoming better. Talk to other leaders in the company. How are they doing things? [35:38] -What is something that has worked really well? Book coffee chats. Your learning and growth doesn't stop the minute you become a leader or a manager. It still needs to keep going, it's just that what you do changes, right? So instead of, you know, building React projects, you are basically looking at what processes can I create? What can I automate? How, what are others doing that's working really well? I have this specific challenge, before trying to solve it on my own, figure out who else has done it in that same company more likely, so that you have that context here, right? And I think that also helps a lot because your learning shouldn't stop right then and there. [00:36:16] +What is something that has worked really well? Book coffee chats. Your learning and growth doesn't stop the minute you become a leader or a manager. It still needs to keep going, it's just that what you do changes, right? So instead of, you know, building React projects, you are basically looking at what processes can I create? What can I automate? How, what are others doing that's working really well? I have this specific challenge, before trying to solve it on my own, figure out who else has done it in that same company more likely, so that you have that context here, right? And I think that also helps a lot because your learning shouldn't stop right then and there. [36:16] -So otherwise things are going to get stale. I've seen that newer leaders can fall into this trap wherein they feel like their growth is dictated by the code they push, and it's the opposite. It's like, it's like, wow, new leaders should look at the code that your team pushes and you build all the systems and the infrastructure for your team to function like a well oiled machine, right? So that's what's important. [00:36:42] +So otherwise things are going to get stale. I've seen that newer leaders can fall into this trap wherein they feel like their growth is dictated by the code they push, and it's the opposite. It's like, it's like, wow, new leaders should look at the code that your team pushes and you build all the systems and the infrastructure for your team to function like a well oiled machine, right? So that's what's important. [36:42] ## The value of informal chats -**Carl Vitullo:** I think you bringing up coffee chats, I think just going for informal, you know, informal… I want to use the term meetings, they are meetings, but they're not, they're like this semi-formal, they're in this liminal space of not-quite-work. [00:36:58] +**Carl Vitullo:** I think you bringing up coffee chats, I think just going for informal, you know, informal… I want to use the term meetings, they are meetings, but they're not, they're like this semi-formal, they're in this liminal space of not-quite-work. [36:58] -I think that that is where some of the most powerful communication happens in a company, is where it's not formally structured. It's not in an office, in a obviously professional capacity, but just like going for a walk around the block with someone, walking to the nearest coffee shop in a, like a very limited, like one-on-one or, a small group setting. [00:37:19] +I think that that is where some of the most powerful communication happens in a company, is where it's not formally structured. It's not in an office, in a obviously professional capacity, but just like going for a walk around the block with someone, walking to the nearest coffee shop in a, like a very limited, like one-on-one or, a small group setting. [37:19] -I think that's where so much of the most potent like team building and sharing of context and sharing of background and figuring out how to do work well. I think that's where a lot of that happens and I think that that's a under acknowledged dimension of work that especially among the individual contributors. [00:37:40] +I think that's where so much of the most potent like team building and sharing of context and sharing of background and figuring out how to do work well. I think that's where a lot of that happens and I think that that's a under acknowledged dimension of work that especially among the individual contributors. [37:40] -**Ankita Kulkarni:** Hundred percent. I think that even as an IC, an individual contributor, if you wanna learn something from someone, like figure out how they're doing it, like just pick their brain on things, book a coffee chat with them, ask them, get to know them a little bit. Right? And you are going to learn so much more as an IC because of that, right? [00:37:59] +**Ankita Kulkarni:** Hundred percent. I think that even as an IC, an individual contributor, if you wanna learn something from someone, like figure out how they're doing it, like just pick their brain on things, book a coffee chat with them, ask them, get to know them a little bit. Right? And you are going to learn so much more as an IC because of that, right? [37:59] -And you're going to build better relations and communication is also going to get better because of that too. So, yeah, like, I think it's really underrated, but something that we should all do more of. [00:38:09] +And you're going to build better relations and communication is also going to get better because of that too. So, yeah, like, I think it's really underrated, but something that we should all do more of. [38:09] -I feel like even this conversation wouldn't have happened, you know, like I just like, oh, I need to message Carl cuz I really loved previous Office Hour events in the community. And I was like, this is so cool. I'd love to be a part of it. And conversations will flow naturally and you get to know people, which is really cool because what's the point of just working, for me at least, it's like let's make it more fun, right? And I think as you get to know people, you will make it more fun. [00:38:35] +I feel like even this conversation wouldn't have happened, you know, like I just like, oh, I need to message Carl cuz I really loved previous Office Hour events in the community. And I was like, this is so cool. I'd love to be a part of it. And conversations will flow naturally and you get to know people, which is really cool because what's the point of just working, for me at least, it's like let's make it more fun, right? And I think as you get to know people, you will make it more fun. [38:35] -**Carl Vitullo:** Definitely. Yeah. And there's, there have been a number of times in my career where, you know, I've spent weeks trying to figure out why this is broken, or why aren't we prioritizing this? I think this part is so obviously bad. Why, how could it have possibly gotten into this state? [00:38:50] +**Carl Vitullo:** Definitely. Yeah. And there's, there have been a number of times in my career where, you know, I've spent weeks trying to figure out why this is broken, or why aren't we prioritizing this? I think this part is so obviously bad. Why, how could it have possibly gotten into this state? [38:50] -And then I go for like a 15 minute walk and talk with somebody who's been there six months or a year longer than I have. And just in that space where you can talk maybe a little more honestly because you're in a different, you're in a change of space, you don't have to worry about like, is somebody go gonna overhear or you know, you can just speak very honestly about it. [00:39:10] +And then I go for like a 15 minute walk and talk with somebody who's been there six months or a year longer than I have. And just in that space where you can talk maybe a little more honestly because you're in a different, you're in a change of space, you don't have to worry about like, is somebody go gonna overhear or you know, you can just speak very honestly about it. [39:10] -And I think sometimes that that's where you learn context about the work you're doing. Like why is this work happening? Why isn't this other work that I think is important happening? And I think that sort of contextual information, even if you're just an individual contributor, even if you don't have, you know, responsibility over prioritizing or anything, [00:39:34] +And I think sometimes that that's where you learn context about the work you're doing. Like why is this work happening? Why isn't this other work that I think is important happening? And I think that sort of contextual information, even if you're just an individual contributor, even if you don't have, you know, responsibility over prioritizing or anything, [39:34] -I have always found that that is gaining more understanding there has really helped me, even if I don't agree with the priorities, understanding the logic of why they are that has always been very helpful for me. [00:39:48] +I have always found that that is gaining more understanding there has really helped me, even if I don't agree with the priorities, understanding the logic of why they are that has always been very helpful for me. [39:48] ## Soft skills in your career -**Ankita Kulkarni:** Yeah, a hundred percent. I completely agree with you there, and I feel like. A lot of, like, a lot of us, even like when I did, I did as well, like when I was growing too as a developer, that you think that you are a good developer or you want to be a great developer just by the code you write. [00:40:05] +**Ankita Kulkarni:** Yeah, a hundred percent. I completely agree with you there, and I feel like. A lot of, like, a lot of us, even like when I did, I did as well, like when I was growing too as a developer, that you think that you are a good developer or you want to be a great developer just by the code you write. [40:05] -In a company's context, it's not just the code you write. It's also like all these other soft skills and like, how you collaborate well together, how do you give feedback, how do you receive feedback? Like all these things. And like even in code reviews, how do you review code and like ask questions and again, like drive that change, right? [00:40:26] +In a company's context, it's not just the code you write. It's also like all these other soft skills and like, how you collaborate well together, how do you give feedback, how do you receive feedback? Like all these things. And like even in code reviews, how do you review code and like ask questions and again, like drive that change, right? [40:26] -Versus like, make statements and be rude about it. Like all these things also add up to how great of a developer you are and not just the code you write, because that's just part of it, right? So I think it's really important for a lot of developers to think about that too. That, and something that often doesn't get talked about. That it's not just code, it's also people. So remember that. [00:40:50] +Versus like, make statements and be rude about it. Like all these things also add up to how great of a developer you are and not just the code you write, because that's just part of it, right? So I think it's really important for a lot of developers to think about that too. That, and something that often doesn't get talked about. That it's not just code, it's also people. So remember that. [40:50] ## How to get a taste of the management track -**Carl Vitullo:** Definitely. Yeah, that feels like a pretty decent segue into… I think we've touched on this a little bit, but I think that could be a good jumping off point into a conversation about how do you decide if you want to move into management. So, you are a senior engineer, you're pretty accomplished in your career, and you're looking at the staff role and the engineering manager role. [00:41:13] +**Carl Vitullo:** Definitely. Yeah, that feels like a pretty decent segue into… I think we've touched on this a little bit, but I think that could be a good jumping off point into a conversation about how do you decide if you want to move into management. So, you are a senior engineer, you're pretty accomplished in your career, and you're looking at the staff role and the engineering manager role. [41:13] -What do you think are some good questions that a person can ask themselves to help them decide what track they wanna follow? [00:41:21] +What do you think are some good questions that a person can ask themselves to help them decide what track they wanna follow? [41:21] -**Ankita Kulkarni:** Yeah, for sure. I think that very early on, I think you should start mentoring folks, start doing that just to understand like, mentoring should be, should happen regardless as you grow a senior, right? But like, you can assess if you know, do you get more happiness and fulfillment through via the growth of others? Or do you get fulfillment and happiness by just your growth, like directly the code that you write, the work that you do? [00:41:48] +**Ankita Kulkarni:** Yeah, for sure. I think that very early on, I think you should start mentoring folks, start doing that just to understand like, mentoring should be, should happen regardless as you grow a senior, right? But like, you can assess if you know, do you get more happiness and fulfillment through via the growth of others? Or do you get fulfillment and happiness by just your growth, like directly the code that you write, the work that you do? [41:48] -And that distinction is really important. Cuz if you enjoy building systems and like driving change through others and like seeing other people grow, then I think maybe you should look into stepping into maybe like a leadership, like leading a project. [00:42:05] +And that distinction is really important. Cuz if you enjoy building systems and like driving change through others and like seeing other people grow, then I think maybe you should look into stepping into maybe like a leadership, like leading a project. [42:05] -Role or something like that, like a team lead or a tech lead. But not even that, but just like a project lead, right? Like for a short period of time, see how it, how you can do it and like assess if like that's something you like doing. And if you did, then you can figure out, okay, maybe like what about if a bigger project, right? [00:42:23] +Role or something like that, like a team lead or a tech lead. But not even that, but just like a project lead, right? Like for a short period of time, see how it, how you can do it and like assess if like that's something you like doing. And if you did, then you can figure out, okay, maybe like what about if a bigger project, right? [42:23] -And the more you do that, like slowly and steadily, you're going to understand if leadership is for you or not. And at that point you, you'll decide that, nope, I still love writing code, I still want like 50% of my time spent on code or like 80% of, or 60% of my time, whatever can, it can be different from different companies, but like majority of my time spent on code and an architecture versus people and maybe 20% on code. [00:42:52] +And the more you do that, like slowly and steadily, you're going to understand if leadership is for you or not. And at that point you, you'll decide that, nope, I still love writing code, I still want like 50% of my time spent on code or like 80% of, or 60% of my time, whatever can, it can be different from different companies, but like majority of my time spent on code and an architecture versus people and maybe 20% on code. [42:52] -If you feel like what brings you joy, and if you're not sure, then again try out these positions. But if you are sure, then maybe try out start walking down the leadership path. And if not, then walking down maybe the IC path further and seeing how you can grow there. [00:43:08] +If you feel like what brings you joy, and if you're not sure, then again try out these positions. But if you are sure, then maybe try out start walking down the leadership path. And if not, then walking down maybe the IC path further and seeing how you can grow there. [43:08] -I would say don't just wait to get to senior or staff or whatever to figure out if you should go to management. Start, you know, getting curious, right? Very early on, like, this is something I wanna do. Maybe I should lead a small thing like project, then I should lead a team. [00:43:23] +I would say don't just wait to get to senior or staff or whatever to figure out if you should go to management. Start, you know, getting curious, right? Very early on, like, this is something I wanna do. Maybe I should lead a small thing like project, then I should lead a team. [43:23] -Or if then opportunity comes up, maybe you can shadow your manager for a little bit too, just to figure out if this is something you really wanna do, right? And if not completely okay. In fact, if you go to become a manager and a year later you decide you don't wanna do it completely, okay? There's no shame in that. [00:43:41] +Or if then opportunity comes up, maybe you can shadow your manager for a little bit too, just to figure out if this is something you really wanna do, right? And if not completely okay. In fact, if you go to become a manager and a year later you decide you don't wanna do it completely, okay? There's no shame in that. [43:41] -And I think that's really important to acknowledge that too, because. You know, it's, I feel like maybe you miscode then go back to code, do that for a year. You again, miss people and do wanna do more planning and roadmap and all that fun stuff. Then do leadership again. Like it's totally okay to go back and forth. [00:43:58] +And I think that's really important to acknowledge that too, because. You know, it's, I feel like maybe you miscode then go back to code, do that for a year. You again, miss people and do wanna do more planning and roadmap and all that fun stuff. Then do leadership again. Like it's totally okay to go back and forth. [43:58] -And the beauty of it is that we can do that right. Versus like, it's not a huge career change. It's definitely a different skill set that you need to develop. [00:44:09] +And the beauty of it is that we can do that right. Versus like, it's not a huge career change. It's definitely a different skill set that you need to develop. [44:09] -**Carl Vitullo:** Yeah, definitely. I think that makes a lot of sense. In my career, I've found that I've oscillated back and forth between, I feel like I've always been a leader on a team, maybe not a manager. I'm not always setting priorities or have formal authority over decisions or anything like that. But I think what you said about starting from mentorship, And seeing if that sort of people aspect is something you get joy from. I think that's really powerful and accurate. [00:44:39] +**Carl Vitullo:** Yeah, definitely. I think that makes a lot of sense. In my career, I've found that I've oscillated back and forth between, I feel like I've always been a leader on a team, maybe not a manager. I'm not always setting priorities or have formal authority over decisions or anything like that. But I think what you said about starting from mentorship, And seeing if that sort of people aspect is something you get joy from. I think that's really powerful and accurate. [44:39] -You know, so much of management really comes down to something similar to mentorship. As a manager maybe you won't always be the most technical. If somebody's blocked by a technical bug, maybe they can't always come to you to become unblocked. I think mentorship can be a good way of practicing those soft skills, like you mentioned of understanding someone, where are they coming from, what are their experiences, you know, where do they want to grow, where do they need to grow? [00:45:05] +You know, so much of management really comes down to something similar to mentorship. As a manager maybe you won't always be the most technical. If somebody's blocked by a technical bug, maybe they can't always come to you to become unblocked. I think mentorship can be a good way of practicing those soft skills, like you mentioned of understanding someone, where are they coming from, what are their experiences, you know, where do they want to grow, where do they need to grow? [45:05] -**Ankita Kulkarni:** Mm-hmm. a hundred percent. Yeah. And I guess like take baby steps to figure out if this is what you wanna do, right? Like you said too. And I think it's, it starts with mentoring for sure. Cuz I think you start interacting in, you're not responsible for their progress, but you are invested in it. [00:45:23] +**Ankita Kulkarni:** Mm-hmm. a hundred percent. Yeah. And I guess like take baby steps to figure out if this is what you wanna do, right? Like you said too. And I think it's, it starts with mentoring for sure. Cuz I think you start interacting in, you're not responsible for their progress, but you are invested in it. [45:23] -And that gives you that taste initially of leadership, which is kind of cool. [00:45:28] +And that gives you that taste initially of leadership, which is kind of cool. [45:28] -**Carl Vitullo:** Yeah, definitely. Yeah, you're not responsible, but you're invested. I like that. [00:45:32] +**Carl Vitullo:** Yeah, definitely. Yeah, you're not responsible, but you're invested. I like that. [45:32] -**Ankita Kulkarni:** Mm-hmm. ,oh my God, we have so many quotes from this conversation. We should create a Shopify store with different t-shirts. [00:45:43] +**Ankita Kulkarni:** Mm-hmm. ,oh my God, we have so many quotes from this conversation. We should create a Shopify store with different t-shirts. [45:43] -**Carl Vitullo:** We gotta get the merch going. It's where the real money's at, [00:45:47] +**Carl Vitullo:** We gotta get the merch going. It's where the real money's at, [45:47] -**Ankita Kulkarni:** yeah, yeah, for sure. I think this is the educator, entrepreneur, business person, brain in me. [00:45:53] +**Ankita Kulkarni:** yeah, yeah, for sure. I think this is the educator, entrepreneur, business person, brain in me. [45:53] -**Carl Vitullo:** Yeah. You got the indie hustler mindset. Always thinking about what's, what's next. [00:45:57] +**Carl Vitullo:** Yeah. You got the indie hustler mindset. Always thinking about what's, what's next. [45:57] -**Ankita Kulkarni:** yeah, yeah. Exactly. [00:46:00] +**Ankita Kulkarni:** yeah, yeah. Exactly. [46:00] -**Carl Vitullo:** We're coming up on an hour here. Yeah. Any, anything you want to close out with? So I know you've run a, a newsletter, you have done a number of courses, you're working on this program. [00:46:10] +**Carl Vitullo:** We're coming up on an hour here. Yeah. Any, anything you want to close out with? So I know you've run a, a newsletter, you have done a number of courses, you're working on this program. [46:10] -**Ankita Kulkarni:** Yeah, I would say like the best way, if you have any questions, I'm in the community, but also on Twitter at kulkarniankita9 as well. But I also run a front end and leadership newsletter as well, so if you're interested in leveling up in your career, whether it be engineering, leadership, or software engineering, just like go to my website kulkarniankita.com and sign up for either of those. And yeah, if you have any questions, please never hesitate to reach out. And if you are interested in becoming a leader, then sign up for the wait list. [00:46:45] +**Ankita Kulkarni:** Yeah, I would say like the best way, if you have any questions, I'm in the community, but also on Twitter at kulkarniankita9 as well. But I also run a front end and leadership newsletter as well, so if you're interested in leveling up in your career, whether it be engineering, leadership, or software engineering, just like go to my website kulkarniankita.com and sign up for either of those. And yeah, if you have any questions, please never hesitate to reach out. And if you are interested in becoming a leader, then sign up for the wait list. [46:45] -**Carl Vitullo:** Excellent. Yeah. I'll drop some of these links in the chat here and they'll be in the description when they get this gets published. [00:46:52] +**Carl Vitullo:** Excellent. Yeah. I'll drop some of these links in the chat here and they'll be in the description when they get this gets published. [46:52] -**Ankita Kulkarni:** Yeah, for sure. [00:46:54] +**Ankita Kulkarni:** Yeah, for sure. [46:54] -**Carl Vitullo:** Well, Ankita, thanks so much for coming out. This was, this was really great. [00:46:57] +**Carl Vitullo:** Well, Ankita, thanks so much for coming out. This was, this was really great. [46:57] -**Ankita Kulkarni:** Yeah, for sure. No, thank you so much for having me. I also gonna add that if you if you want like a mind map, like just like a roadmap to becoming a leader, right? There's a link to that that I've sent you Carl as well. If you can share that too, that would be awesome. [00:47:09] +**Ankita Kulkarni:** Yeah, for sure. No, thank you so much for having me. I also gonna add that if you if you want like a mind map, like just like a roadmap to becoming a leader, right? There's a link to that that I've sent you Carl as well. If you can share that too, that would be awesome. [47:09] -Cuz again, like people who understand what are the responsibilities of a leader and looking at that, you'll be like, oh my goodness, this is too much, or yeah, this is kind of cool. This is interesting. Then yeah, check that out too, cuz we have a lot of front end roadmaps and this mind map would be helpful if folks are interested. Yeah. [00:47:27] +Cuz again, like people who understand what are the responsibilities of a leader and looking at that, you'll be like, oh my goodness, this is too much, or yeah, this is kind of cool. This is interesting. Then yeah, check that out too, cuz we have a lot of front end roadmaps and this mind map would be helpful if folks are interested. Yeah. [47:27] -But yeah, thank you so much for having me. This is so much fun. [00:47:30] +But yeah, thank you so much for having me. This is so much fun. [47:30] -**Carl Vitullo:** Yeah, it was very fun to talk shop about management, leadership. [00:47:33] +**Carl Vitullo:** Yeah, it was very fun to talk shop about management, leadership. [47:33] -Thanks so much everyone for sticking with us through this hour and keep an eye on our upcoming events. Next week we're gonna be talking with Sunil Pai about Refactors and the difficulties there. [00:47:45] +Thanks so much everyone for sticking with us through this hour and keep an eye on our upcoming events. Next week we're gonna be talking with Sunil Pai about Refactors and the difficulties there. [47:45] -It should be a good conversation. Cool. All right. Thanks so much. Talk to you later. [00:47:49] +It should be a good conversation. Cool. All right. Thanks so much. Talk to you later. [47:49] **Ankita Kulkarni:** Bye! diff --git a/src/transcripts/behind-react-documentary.md b/src/transcripts/behind-react-documentary.md index 99de57d..4f6c910 100644 --- a/src/transcripts/behind-react-documentary.md +++ b/src/transcripts/behind-react-documentary.md @@ -16,121 +16,121 @@ people: "[Christopher Chedeau](https://twitter.com/vjeux) & [Ida Bechtle](https: **Carl Vitullo:** I'm here with Ida Bechtle, a documentary filmmaker from the European job board site Honeypot, and vjeux, or Christopher Chedeau, who has deep roots with the React ecosystem and just absolutely incredible contributions -to the JavaScript ecosystem at large. [00:00:18] +to the JavaScript ecosystem at large. [00:18] We're really excited to have both of them on to talk about the recent React documentary that just launched on February 10th. Yeah, I've been thinking about this as a behind the scenes, DVD commentary type of conversation. But yeah, -let's just see where the conversation takes us. [00:00:33] +let's just see where the conversation takes us. [00:33] So Ida, could you talk a little bit about your role and your responsibilities -with producing these documentaries? [00:00:40] +with producing these documentaries? [00:40] **Ida Bechtle:** Yes. First of all, hi to everybody in the audience, I'm Ida. I've been working at Honeypot for the last three years as a filmmaker, so I'm just making these developer portraits and tech documentaries full-time, which is pretty cool. And I've been working on the React documentary for the last year or -so. [00:00:59] +so. [00:59] So I'm super excited for it to finally be out. It's been a lot of work, so I'm -really happy about the response so far. [00:01:06] +really happy about the response so far. [01:06] ## Ida on being a 1-person production team **Carl Vitullo:** You said when we were talking in preparation for this event that you are a one person show. You do all of it, you do the cinematography, the -directing, and the editing. Is that right? [00:01:17] +directing, and the editing. Is that right? [01:17] **Ida Bechtle:** Yeah, exactly. This is all me from start to finish. Except for the title animation basically. So that's why it was so much work. But it's also cool, you know, to see the result in the end when it came from my hands. -[00:01:30] +[01:30] **Carl Vitullo:** Right. It's really very much a product of you. You really own it from start to finish. That's very cool. I feel like that would require a very entrepreneurial mindset , you can't just do one part of this work over and over again. You have to really think about the entire project from ideation to -conclusion. I'd love to get into that with you later on. [00:01:50] +conclusion. I'd love to get into that with you later on. [01:50] ## Christopher Chedeau as a driving force **Carl Vitullo:** Vjeux, Ida had told me that you were one of the, really the driving force behind getting this event to come together. What was that like to getting corporate comms to approve an event talking about things that happened -10 years ago? [00:02:03] +10 years ago? [02:03] **Christopher Chedeau:** Yeah, of course. So the first thing so, in the React community I've been always trying to build the community. And so I was wondering like, early React, doing like the community roundup and also organize like the first React Conf for. And so if you watch the documentary, you can see like how -it happened and how it went. [00:02:20] +it happened and how it went. [02:20] And so, early last year in I think January a lot like Ida reached out to a lot of people from the early days of React saying, Hey, I'm working on this doc. I want to build this documentary. Are you interested in participating? But the -issue is like nobody replies. [00:02:36] +issue is like nobody replies. [02:36] And when she finally was able to reach out to me, I was like, oh my God, this is so amazing. We're going to be having a documentary about it. And so I started basically taking ownership of the project from the React team's perspective. And I started convincing every single person that you can see in the cast, hey, you -should be participating, this is going to be good. [00:02:53] +should be participating, this is going to be good. [02:53] And as you mentioned, we also needed to convince like Facebook/Meta to participate. And this was like a bit of an awkward dance because this is not coming from like the company. It's coming from Honeypot which is like a European job search company. And so I had to convince people that it was worth like taking the chance on this. Great thing is they've already done a documentary on -GraphQL, which is from Meta, and also one on Vue. [00:03:22] +GraphQL, which is from Meta, and also one on Vue. [03:22] So what I did was this, some background research, ask Evan You from Vue and ask Daniel Schafer and Byron from like the GraphQL one. And I asked them, Hey, how did the experience go? How did it feel? And I watch the two and. Everybody told me like, yeah, the experience was fantastic. And the end result was like, really positive, uplifting, and really like told the story they wanted to tell. -[00:03:43] +[03:43] And so based on this, I talked to the head of open source Dave Viner, and that put me in touch with all of the right, people from like Comms and Legal to make sure that hey, we like it makes sense and we can do it. And so it took I think like a month or two to convince people, like, Hey, let's do it. And then it was about like actually doing the recording. And so Ida like, took on this parts. -[00:04:07] +[04:07] **Carl Vitullo:** I guess it makes sense that Lee Byron had done one of these before, since there was one on GraphQL, but I hadn't put that together when I -was watching. Okay. Very nice. [00:04:15] +was watching. Okay. Very nice. [04:15] ## Why Honeypot makes these documentaries **Carl Vitullo:** Ida, could you talk about why Honeypot makes these documentaries and why the timing felt right to try and make one about React? -[00:04:24] +[04:24] **Ida Bechtle:** Sure. So Honeypot is like just a small company here in Germany and we built a lot of our product on using open source software. We try to be more visible in the community and give back a bit. I think that's why it started. One of our co-founders was also a journalist, so I think she had a different approach to both to marketing, but also to storytelling and connecting -the audience what you can say. [00:04:48] +the audience what you can say. [04:48] So I think that's how it started. I think our first documentary was about Elixir and I think it was kind of an experiment really. And we just put it on YouTube four years ago or something, and I think it got like a thousand views or -something. The team back then was super excited. [00:05:03] +something. The team back then was super excited. [05:03] And then it just grew from there. Since the early days people have been asking about React. So, if you look at like any other documentary on our channel, you will always find a viewer being like, "ah, let's do, can you do React?" So now was just finally the moment to do it. Also, after Covid, it was a bit tough to produce documentaries then. So after that we were ah let's -get one of the big ones out now. So that's how it started on my side. [00:05:31] +get one of the big ones out now. So that's how it started on my side. [05:31] **Carl Vitullo:** That's really nice. Coming from a job board and remembering that the companies, the projects, the people who you're placing at jobs have these stories that their careers are anchored around, and then really trying to tell those stories. I think that's a really excellent way to give back to the -community. I'm really happy that somebody is making these. [00:05:49] +community. I'm really happy that somebody is making these. [05:49] ## Getting trapped in a park while filming @@ -138,7 +138,7 @@ community. I'm really happy that somebody is making these. [00:05:49] think might be fun to share? Any bloopers? I know there was one scene in the documentary where Andrew Clark gets a little self complimentary. Like, "oh, we really nailed that, didn't we?" Any other bits like that as production -happened, that would be fun to share? [00:06:07] +happened, that would be fun to share? [06:07] **Ida Bechtle:** Most of these shoots, I just go in and out pretty fast, spend a few hours with the people I'm interviewing. I think actually Christopher was one @@ -146,19 +146,19 @@ of the ones I like hung out with the most because we were filming in London I think we were basically had three days or something so we could like also get to know each other a bit better. But otherwise it's, sometimes it's a bit like professional almost, you know, I just go in, I set up all the gear and try to -get to know the people a bit more in person. [00:06:34] +get to know the people a bit more in person. [06:34] **Christopher Chedeau:** There was one thing that, so we were in London and we wanted to get like a shot at the sunset, and so went into a park, And they actually closed the gates of the park behind us. And so we had to basically walk around or like walk on top of the like fence and everything. And it was super cool, like there was people like drunk, passing by and cheering. Yeah. Go. So -yeah, didn't make it into the movie, but this was pretty fun. [00:07:00] +yeah, didn't make it into the movie, but this was pretty fun. [07:00] **Ida Bechtle:** Yeah, true. I forgot about that part. Getting locked in the -park. [00:07:03] +park. [07:03] -**Carl Vitullo:** That's pretty good. [00:07:04] +**Carl Vitullo:** That's pretty good. [07:04] ## Jordan Walke's participation @@ -166,7 +166,7 @@ park. [00:07:03] early days of React involved in this as interview subjects. Obviously a major player who was not represented was Jordan Walke. Could you talk about why he didn't want to be involved in this, or, did he not want to be involved? Could -you just not get scheduling right? [00:07:24] +you just not get scheduling right? [07:24] **Christopher Chedeau:** Yeah. So in practice Jordan is a very like, private person. And he has always been, and so this is not really the thing, like he @@ -174,70 +174,70 @@ enjoys. And so I worked with him super closely and the way he like, works best is in one-on-one with people. And so even internally, at the time, like he's never done like any all hands or any major events. He's always been convincing people like one by one. And you can see in the documentary like how he was able -to convince Lee Byron, how he was able to convince me. [00:07:53] +to convince Lee Byron, how he was able to convince me. [07:53] And so this is like in his personality to like actually be behind the scenes. And the one thing I want to mention is he's been involved like since day one. He was like receptive. Like he was actually like happy that the documentary existed and like he's been watching it with us. Like he was commenting during the live q and a on the comments. So, and this is like something like we have to respect -like his wishes. [00:08:18] +like his wishes. [08:18] And in the documentary you can also see like his experience, like actually being on stage was not a good one. So I can also understand like that's he's not like -particularly looking forward to be like more exposed than he is. [00:08:32] +particularly looking forward to be like more exposed than he is. [08:32] **Carl Vitullo:** Yeah, that makes sense. He's already a private person. He had a pretty bad experience with being in the limelight and just is very happy to -help make things happen, but not be the center of attention. That makes sense. [00:08:44] +help make things happen, but not be the center of attention. That makes sense. [08:44] ## About the focus on the early days of React **Carl Vitullo:** I noticed that the documentary really focused a lot on the earlier days of the React ecosystem, how it came to be and how it grew. Was that -a editorial decision? [00:08:56] +a editorial decision? [08:56] **Ida Bechtle:** I think for me, when I first started looking into React, I think that was like the story that really stood out for me and I think especially before the open source release, that part of the story I think has not really been told, about how it was created at Facebook. And I just found I really wanted to credit the team also, like it's such a big technology now. -[00:09:15] +[09:15] And back then they had this massive backlash. So I think it's cool to just share that story and how they came out victorious. And I think also maybe the storyline is a bit easier from like a maybe a bit more simple storyline or like, The events are pretty clear in what happened where maybe, I don't know, it might be a bit tougher for more recent events, but I don't know, maybe Christopher has -a different opinion. [00:09:41] +a different opinion. [09:41] **Christopher Chedeau:** Yeah, and I think the documentary is already an hour and 20 minutes. I'm pretty sure we could do another like full hour or two on the like more recent events. So I don't know if either you have anything planned for -the next year, but. [00:09:53] +the next year, but. [09:53] -**Ida Bechtle:** Yeah, true. Next one. [00:09:56] +**Ida Bechtle:** Yeah, true. Next one. [09:56] **Carl Vitullo:** Yeah, sure. And I guess, it feels like the last maybe two or three years of React has been marked by a lot of really grand plans that have not yet fully shaken out. So, I could also see how, you know, it's still it's maybe less of a documentary for the time since the release of Hooks, as you know, it's still under active exploration, active investigation. So, it's less -of a documentary and more of a, I don't know, industry event. [00:10:24] +of a documentary and more of a, I don't know, industry event. [10:24] ## Deciding where to focus your attention **Carl Vitullo:** So Christopher, you've been involved in so many hugely impactful projects in the JavaScript ecosystem. Can you talk a little bit about how these ideas cross your radar and how you decide which ones you're going to -dedicate your attention to? [00:10:44] +dedicate your attention to? [10:44] **Christopher Chedeau:** So, to give some context, so I helped like popularize React and I also co-created with Jordan, Ashwin, and Lynn, React Native. And I also worked like with James Long on Prettier. And so I dunno if you think, like right now I'm working on Excalidraw, and so for me, like the way I think about like this big project is it always starts with like, there's a problem. -[00:11:08] +[11:08] And so, for example, I can talk about Prettier I've always felt like code reviews were like super annoying. So when I joined Facebook I was like, outta @@ -246,18 +246,18 @@ uh, my first uh, deep review was like 20 comments around "Hey, you should put a space here, and the parenthesis there, and like, put a new line here." And to me, it felt bad because I felt like it was nitpicky and not as useful. And I was talking to this amazing engineer and she spent our time -doing this, just like nit picking on my thing. [00:11:41] +doing this, just like nit picking on my thing. [11:41] And then I realized that later, I think a year or two after I was in the reverse position. Where like, oh, there was new people in the team. And I was like, okay, I need to be doing this work. I'm telling them, because otherwise, like the code-based quality is not going to be as good and we won't be able to move -as fast. [00:11:58] +as fast. [11:58] And so, I've been really shaped by go and go fmt. And this was a way to automatically reformat the codebase. and the very interesting thing about this is I saw this could actually solve all of the issues I've had like in the code -review process. [00:12:15] +review process. [12:15] But now the challenge is, go fmt, like a lot of people were crediting it due to the fact that like they created the language with it. And so it was possible to @@ -266,13 +266,13 @@ attempt at building like an automatic format, but they all failed. So now that I have the problem that I want to solve, that was a solution. And so now my process is around, okay, so if I I need to convince myself that this solution can actually work. And so the first step is to look at all of the existing, if -nobody tried it, like, I mean, like it's not a real problem. [00:12:52] +nobody tried it, like, I mean, like it's not a real problem. [12:52] And so I started contacting all of the people that built JavaScript formatters in the past, and I've asked them, "Hey, why did it fail? Why did you stop working on it and everything?" And they give me a lot of reasons. One of the cool thing is like, the programming scene is actually like, people are -interested and excited about talking about this kind of things. [00:13:10] +interested and excited about talking about this kind of things. [13:10] So you can actually like private message somebody and they're going to likely answer you if you are excited about the idea. And the thing that I realized is @@ -282,13 +282,13 @@ going to really like work and you can grow from there, and like the last 20% you can spend a lot of time on. Now for pretty printing a language; it needs to actually be rock solid because if you pretty print something and like the code doesn't work or like, has a different meaning at the end, people are just going -to stop using it. [00:13:50] +to stop using it. [13:50] So the same time of correctness. And then if the code looks bad or looks weird, people are also not going to use it. And so for this it was a project where like, you need to actually get it like 99.9% good before it can actually like, take off and be successful. And so now this is basically like shaped for this -one, how I went about it. [00:14:10] +one, how I went about it. [14:10] ## Going in a submarine and ignoring your manager @@ -296,22 +296,22 @@ one, how I went about it. [00:14:10] like six months and I'm just going to code code, code, code, code, get it like 99.9% correct. And then I'm going to start like, getting the adoption going and everything. And so this was like, okay, me, myself, convincing that I can work -and like I have a plan that I feel is going to work. [00:14:27] +and like I have a plan that I feel is going to work. [14:27] I was working in a team and I basically told my manager, Hey, look, I'm going to do this for the next six months. So it didn't work out super well in the beginning because , I was supposed to do other things, but I went ahead and did it. And then the plan actually worked, okay, it's successful and everything. And -later I got credited as part of the work within the company. [00:14:47] +later I got credited as part of the work within the company. [14:47] So there's three steps around, like finding the problem, convincing yourself it'll work, and then actually going and like all in onto this. So this has been my process around getting into this kind of like crazy ambitious projects. -[00:15:01] +[15:01] **Carl Vitullo:** That makes a lot of sense. As you were talking about getting something to 99.9%, I immediately jumped to the difficult challenge of trying to -make everyone happy enough with what the output looks like. [00:15:15] +make everyone happy enough with what the output looks like. [15:15] ## Making Prettier pretty through data @@ -321,31 +321,31 @@ semicolons at the end of the line or things like that. And that's something that I've always thought was one of the very subtle brilliances of Prettier, is how it managed to have an extremely minimal configuration that let you know 99% of developers use it and go, "oh yeah, okay. I'm happy with how that -looks." [00:15:45] +looks." [15:45] I think getting developers to agree that some that code is pretty, is an incredible challenge. It's entirely separate from the technical challenge of -actually making that happen. [00:15:55] +actually making that happen. [15:55] **Christopher Chedeau:** For this was very data driven. So what I did was, I had access to the Facebook code base. And so what I would do is every time there's needed to like, have a decision on how to print it, what I would do is actually look in the Facebook database and get statistics around like, how many people -are using this formatting or this other formatting. [00:16:14] +are using this formatting or this other formatting. [16:14] And then I would basically pick the one that is most used. And so at the time, at Facebook, there was convention and everything, but this is still an organic system. And so because we had , I don't probably like millions of lines of code, this was big enough to be representative of like, what reasonable code looks -like. [00:16:30] +like. [16:30] And so I basically just followed the wisdom of the crowds and ended up being -like, good looking or like acceptable by people. [00:16:41] +like, good looking or like acceptable by people. [16:41] **Carl Vitullo:** Right, right. Yeah, that makes a lot of sense. So you have a lot of data to draw on by virtue of the enormous code bases you work with, and I imagine it wasn't terribly difficult to get other developers to solicit feedback -on code. Commenting on code style is a favorite developer pastime. [00:16:58] +on code. Commenting on code style is a favorite developer pastime. [16:58] ## Ida's documentary process @@ -353,62 +353,62 @@ on code. Commenting on code style is a favorite developer pastime. [00:16:58] of this that I feel like there is a lot of entrepreneurial spirit involved in your role and really owning these projects from start to finish. How do you think about that? How do you think about bringing a project from idea, to -production, to completion? [00:17:19] +production, to completion? [17:19] **Ida Bechtle:** I never really thought about it like that, but I think you're right in that definition. I think that's what I really like about my position here at Honeypot actually, because we do get ownership of these projects from beginning to end, all the way through. And I really like being a part of the -whole process. [00:17:37] +whole process. [17:37] Like, I'm the one reaching out to the people. I do the interviews before we go filming. I shape this storyline and then I meet the people see them live and film with them. And you can already like, Build your interviews off of the relation you had in those earlier calls. And while I'm filming, I'll already be -thinking about editing it all together. [00:17:57] +thinking about editing it all together. [17:57] So I think it's a lot of work, but I think it's really beneficial also because you can really like link every part of the production process to each other in a -sense. Yeah, I really like it [00:18:10] +sense. Yeah, I really like it [18:10] **Carl Vitullo:** Yeah, that makes a lot of sense. As you're doing the prep work for the interviews, then actually doing the interviews, then doing the editing. You've now done so many separate passes of thinking through these conversations that you're having, that I imagine that lets you flow from one to the next pretty well, especially now that you've been doing this for a number of years -and really have a lot of practice doing it. [00:18:32] +and really have a lot of practice doing it. [18:32] **Ida Bechtle:** Yeah, for sure. You definitely learn from each project. I will say this is the biggest one I've done. An hour and 20 minutes. So that was also -a cool challenge. [00:18:42] +a cool challenge. [18:42] **Carl Vitullo:** Biggest only by length or is it bigger by other metrics as -well? Like number of people involved or, [00:18:48] +well? Like number of people involved or, [18:48] **Ida Bechtle:** yeah, also a number of in interviews. I would say length, amount of hours. I had to edit. I had like 25 hours of just interview footage, -so, yeah, that's why it turned a bit long. [00:19:02] +so, yeah, that's why it turned a bit long. [19:02] **Carl Vitullo:** Yeah that's a lot of footage. And you do all of the -cinematography as well, right? [00:19:07] +cinematography as well, right? [19:07] **Ida Bechtle:** Yes. Yeah. So for this one, I brought two cameras. Normally, actually at Honeypot we have a pretty simple setup. We don't have that advanced equipment or anything, but I think we can still looks pretty good even with our -simple setup and being one filmmaker [00:19:21] +simple setup and being one filmmaker [19:21] **Carl Vitullo:** Yeah. No. Just from watching the trailer, I assumed that there was a whole team behind making this happen. So when you told me that , nope, it's all you, you do all the prep recording and editing. I was blown away. You -do an absolutely phenomenal job. [00:19:33] +do an absolutely phenomenal job. [19:33] -**Ida Bechtle:** Thanks. [00:19:34] +**Ida Bechtle:** Thanks. [19:34] **Christopher Chedeau:** I think Ida you are really underselling yourself, like this movie feels like a real Hollywood movie and yeah, you did an amazing job -with this. [00:19:42] +with this. [19:42] -**Ida Bechtle:** Thank you. That's nice to hear. [00:19:45] +**Ida Bechtle:** Thank you. That's nice to hear. [19:45] **Carl Vitullo:** Hearing you talk about the independence you have and just owning these projects, that's something I've always aspired to and thought out. @@ -419,30 +419,30 @@ events, I've been getting interesting guests to come talk about cool things they're doing and then editing it and publishing it all up so it, you know, I have seen how much work that is for me. And so seeing an hour and 20 minute long video documentary done by one person I'm blown away. You do a really great job. -[00:20:22] +[20:22] -**Ida Bechtle:** Thanks. [00:20:23] +**Ida Bechtle:** Thanks. [20:23] **Christopher Chedeau:** One thing that was you told me I was interesting. So all of the cameras and different lightning conditions look different, and so you spend literally hours changing the color grading for every single scene that you have, so that they all look consistent. When you told me this, I was like, "oh my God, this is a lot of work," but you can see it in the result -like, yeah, it looks coherent. [00:20:43] +like, yeah, it looks coherent. [20:43] **Ida Bechtle:** Yeah, I mean, we both do color balance, but also like the look you have to make it look alike or the same colors getting brought out. There's a lot of little details that people don't really think about for sure. Like also weird sound effects and many layers on everything that it's only visible when -you see my whole timeline. [00:21:01] +you see my whole timeline. [21:01] I try to put it on our Twitter for people to get like a glimpse of the whole thing, but I don't know if it's easy to tell all the different layers that are -actually in it. [00:21:11] +actually in it. [21:11] **Carl Vitullo:** I've dabbled in film and video stuff through high school videos or whatever, I, I know just enough to appreciate how much detail work -went into all of that. [00:21:20] +went into all of that. [21:20] ## Christopher's involvement in the early days of Reactiflux @@ -452,7 +452,7 @@ doing some of the prep work for this, that you have the first message in the Reactiflux server. You've done all of these huge, enormously impactful projects, and also you were actively involved in the discussion of where Reactiflux should move after Slack decided that we had too many active members back in 2015. How -did Reactiflux cross your radar so long ago? [00:21:49] +did Reactiflux cross your radar so long ago? [21:49] **Christopher Chedeau:** Yeah. So as I mentioned like early days in React, my biggest contribution was around building the community. And so at that time, we @@ -460,17 +460,17 @@ were very big on the IRC channel. And I forgot who, but we decided, hey, we should have a user Slack, because this was the the big thing at the time, and I was like, yep, this is a good idea. Let's have like a channel where people can like geek about React on Slack. And so this is where like, Reactiflux first -started. And like, oh, it took off. [00:22:17] +started. And like, oh, it took off. [22:17] And at some point it took off so much that we basically got bullied off Slack, and they were like, oh, either you like start paying, or find something else. But Slack was priced on a per user basis and so it would've cost like hundreds -of thousands of dollars like a month to like, maintain the community. [00:22:34] +of thousands of dollars like a month to like, maintain the community. [22:34] Because I really cared about having a place for the community to like be chatting and everything. So what I did was to start a process of looking at all of the available options at the time. And one of the thing is, they almost all -like, were really bad. [00:22:49] +like, were really bad. [22:49] And so, Slack was actually like much better than anything else and all of the open source versions were bad. But there was one tool that I was using not for @@ -478,53 +478,53 @@ anything open source rated, but for like gaming, which was Discord. Discord was one of the earliest adopters of React. And the mobile apps are fully using React Native on both iOS and Android. And I was like, oh, but this is the perfect thing for Reactiflux, really solid chats and you can have like channels and like -good notification system and everything. [00:23:18] +good notification system and everything. [23:18] And this was designed for community. Whereas Slack was designed for work, but the biggest challenge at the time was Discord was fully focused on gaming. I chatted with the CTO that I've been working on with React and React Native and, like, I was convincing him, Hey, please we have been booted off Slack this is the best service and everything and let us use it. And he was like, yep, that, -sure, go for it. [00:23:42] +sure, go for it. [23:42] The one thing that we wanted was to have like, code blocks that was in Slack and not in Discord. And I think it was the next day they implemented it, the velocity of Discord is amazing. And so now we are like, oh, we had everything we need, so we started migrating, and a few years later Discord actually changed their whole strategy to be not only for gaming, but for everything else. -[00:24:04] +[24:04] And now because of the Reactiflux success, a lot of the other open source projects and everything started using Discord, and it works really well. And so I'm really glad that now, Discord is working well for the open source and it helped. And Reactiflux was the like driver for changing the strategy of like Discord as a whole. So it's been like a pretty good success story. So, -[00:24:26] +[24:26] **Carl Vitullo:** Yeah. That's incredible. I didn't realize that you were one of -the driving forces behind creating this community as well. [00:24:32] +the driving forces behind creating this community as well. [24:32] Actually that's when I got involved, is I raised my hand to volunteer to help out however I could, right, I think a month before Slack closed signups So, yeah I very intimately remember that whole conversation and discussing like, oh, will matrix chat work? What about Gitter? What about, you know, all of those. That's -fascinating. That's awesome. [00:24:54] +fascinating. That's awesome. [24:54] **Christopher Chedeau:** Yeah, and I don't want to take a lot of the credit, all of you are the ones actually running it day to day. The help I gave here was to actually like, make decisions. And this is one of the things that I found to be the hardest with communities growing, is like nobody feels empowered to make -decisions. [00:25:10] +decisions. [25:10] So one of my strengths is to be able to like, Hey, we are doing this, and let's go. And this is the same thing I've done for the documentary. I was like, yep, we're doing this documentary. And I basically tell everybody we're doing this documentary and like, it happened, but Ida did all of the work of actually -making it happen. [00:25:28] +making it happen. [25:28] -So yeah, this is my contribution. [00:25:30] +So yeah, this is my contribution. [25:30] -**Ida Bechtle:** Very important contribution though [00:25:33] +**Ida Bechtle:** Very important contribution though [25:33] **Carl Vitullo:** Yeah, now that I've been trying to, you know, run this community less as a hobby and more as, with some of the professionalism that I @@ -534,36 +534,36 @@ think we should do this. I think it is important that, we make this decision and being willing to put your hand up and take accountability and take a risk. I think being comfortable taking risks is, it's a real skill and I think the projects you've taken on really show how good you are at identifying good risks -and then going all in on them. [00:26:14] +and then going all in on them. [26:14] -**Christopher Chedeau:** I'm trying to. [00:26:15] +**Christopher Chedeau:** I'm trying to. [26:15] ## Christopher's largest human-centered accomplishment **Carl Vitullo:** Let's back up a little bit on some of your other major projects. So you had major contributions to React Native. I know that you wrote the algorithm that did the flex box layout for React Native, and Docusaurus, -Prettier. Any other major omissions there? [00:26:32] +Prettier. Any other major omissions there? [26:32] **Christopher Chedeau:** I was the one that's made this infamous slide deck -around CSS in js. [00:26:38] +around CSS in js. [26:38] So that's got like a bunch of drama, but also a bunch of exciting projects. So, -yeah. [00:26:44] +yeah. [26:44] **Carl Vitullo:** What contribution holds the fondest place in your heart? -[00:26:47] +[26:47] **Christopher Chedeau:** I think the biggest one for me was React for sure, being able to create this community of incredible people. And like, yeah, we had the documentary and this has been so good to go back to memory lane and like actually reflect on all of the people that really helped make this happen. -[00:27:03] +[27:03] And this is one of the thing is I found like super good about the documentary. Like it showed that it was not a one person thing. So yes, Jordan, started it and created it. But then you can see in the documentary, like a lot of people -actually were energized and were pushing for it and everything. [00:27:16] +actually were energized and were pushing for it and everything. [27:16] So it was really like a community effort. And I loved how there's been so many tweets written along the documentary and each behind each of those tweets is one @@ -571,49 +571,49 @@ person, that spends a lot of time and a lot of effort and building something in the ecosystem. So for me, this is not about me, but about how all of those folks came together and all of you in the audience that are coming together to actually like build something bigger and like move the industry forward. So this -is my proudest accomplishment. [00:27:45] +is my proudest accomplishment. [27:45] **Carl Vitullo:** Yeah. That's both a large accomplishment and just a very, human-centered accomplishment. You got a bunch of people excited about something -and then they did so many cool things with it. [00:27:55] +and then they did so many cool things with it. [27:55] Ida, now that you've spent a year working on this React documentary, what do you -think is next for you? [00:28:01] +think is next for you? [28:01] **Ida Bechtle:** I actually already know my next project. I'm not sure I can say it out loud yet, but I'm gonna go straight to making another, not, probably not as big as React . Maybe no more like our usual time, like 30 minutes or so. I'll try to limit myself a bit more this time. But yeah, so hopefully our next bigger -production will be out in the fall, I think is the plan so far. [00:28:24] +production will be out in the fall, I think is the plan so far. [28:24] -**Christopher Chedeau:** Nice. [00:28:25] +**Christopher Chedeau:** Nice. [28:25] -**Ida Bechtle:** Yes. [00:28:25] +**Ida Bechtle:** Yes. [28:25] **Carl Vitullo:** Can you give us any hints as to what it will be about? Is it -a, an it's another open source documentary. [00:28:31] +a, an it's another open source documentary. [28:31] **Ida Bechtle:** Yeah, it's another open source. Actually, I don't know, I should probably have cleared this, if I can even tease it now. I'm not sure. -[00:28:38] +[28:38] **Carl Vitullo:** Fair enough. Okay. But we'll keep an eye out for something in -the fall. [00:28:40] +the fall. [28:40] **Ida Bechtle:** And I mean, we are also open to suggestions. Like people can always contact us and we'll see what we can do with all the ideas. They can write us on Twitter, it's @honeypotio. They can contact our hello@honeypot.io email, or even on YouTube like writing comments. A bit like people requested also the React documentary. If we see it enough times we normally try to do it. -[00:29:03] +[29:03] **Carl Vitullo:** Christopher, Ida, anything else you'd like to get into? Any -other topics you think we haven't covered yet? [00:29:09] +other topics you think we haven't covered yet? [29:09] **Christopher Chedeau:** We have a lot of people in the audience, if you have any questions please like put them in the chat. One question I'm seeing is Motorhead saying, Hey, how do you feel about VueJS? Are there idea s or -inspiration you get from it. [00:29:19] +inspiration you get from it. [29:19] So, one of the thing that a lot of people don't realize is that, they feel that the React team is like in competition, like, dear Enemy with the Vue team or @@ -622,93 +622,93 @@ other. But actually we are working very closely with all of them. So during the early days of React, we had many meetings at the Google campus between the Angular team and the React team, and for Evan You personally, like I've been playing Hades with him trying to speed around the game. And so we are all -working well together. [00:29:50] +working well together. [29:50] And so for a few, like one of the biggest thing it's did for the React, like on the React team was the quality of the documentation. Vue's documentation is amazing. And so when I was managing the React team I actually pushed to rewrite -the documentation and using Vue as basically the guideline. [00:30:09] +the documentation and using Vue as basically the guideline. [30:09] And so it's been one of the thing that like really helped. And right now the other thing coming from the Vue ecosystem is Vite, like the bundler, which is way faster than anything else. And this is something that now a lot of people in -the React ecosystem are using. [00:30:24] +the React ecosystem are using. [30:24] So like two things that have directly influenced, there's a lot of myriad of details have happened. And so I'm really excited that we're like, well, like my goal. and and the React team's goal is not to actually like, make React better, -but this is like make the entire ecosystem better. [00:30:41] +but this is like make the entire ecosystem better. [30:41] And so we actually want to encourage people to try out Vue and like, oh, if there are something that's better in there, oh, are there any ways we can bring -into React or vice versa, so. [00:30:51] +into React or vice versa, so. [30:51] -or. [00:30:54] +or. [30:54] **Carl Vitullo:** Yeah, definitely. So thinking of it as we're all in the web and JavaScript ecosystem, rather than carving out little fiefdoms of, this is a React ecosystem and this is the Vue ecosystem. Really collaborating to grow the space. I didn't realize that Vue's documentation was an inspiration for the -revamped React documentation. [00:31:13] +revamped React documentation. [31:13] I know that the beta docs have been beta for a very long time now and are now being released. Do you have any involvement in that documentation project? -[00:31:22] +[31:22] **Christopher Chedeau:** I've been out of the React team for like, more than five years now, so I've been superficially looking at it. And so my involvement for this was again of convincing like Dan Abramov to actually push for it. And so he is always been a really good writer and he wasn't really sure like, "Hey, does it make sense for me as an engineer at the company to work on -docs almost full-time?" [00:31:43] +docs almost full-time?" [31:43] And I was like, Nope. This is how you have impact. Like your writing is why, what gets you in the company and everything. So this thing you should be really pushing. And so I'm really glad that he was able to like, yep, actually like, work on this. And so it's been in beta for a long time because , One of the thing is at this point, React is not, this small project, it's used by literary -the entire industry. [00:32:03] +the entire industry. [32:03] And so, one of the thing around this is any smaller decision that's been made in the project is going to have long-lasting consequences. And so one of the thing that the React team has always been really good at is really making sure every single decision is thought out and is going to last for another, like 10, 20 -years. [00:32:21] +years. [32:21] And this is really hard to do, but this is how the team is operating. And so this is why it feels like the team is moving slower. You mentioned like, oh, all of the concurrency and everything has not still , yet been fully shipped and the docs are still in beta, but this is how you actually steward such a big and -important project. [00:32:38] +important project. [32:38] And so I think they're doing the right thing to actually get feedback and iterate and, like convincing themselves that this is the right direction. Because if they are wrong, then this is going to be really bad and incur a lot of costs in the entire community. And so for this, it's all about making sure -you, you are right and it's still time to back out. [00:32:58] +you, you are right and it's still time to back out. [32:58] And this is one thing, I feel like a lot of people don't do a lot is, they work on something and they get feedback, it's not going to work out. And then they're basically still pushing because of the sunk cost fallacy, but the React team is like, oh, let's actually convince ourselves, convince the, the rest of the team, -the rest of the world that this is working. And then let's do it. [00:33:16] +the rest of the world that this is working. And then let's do it. [33:16] **Carl Vitullo:** Yeah. And I think that. That intentionality that the React team has brought to developing the api, developing the library, that's something that I've always really tremendously respected and thought was really one of the biggest selling points. And I think you're absolutely correct about the level of -impact that React has had and how that raises the stakes. [00:33:36] +impact that React has had and how that raises the stakes. [33:36] Now it's like anything that, any change that React makes is now closer in stature and weightiness to, like, a change to JavaScript. So, approaching it with care is absolutely incredibly appropriate, because yeah, you only get one shot. You can't put something out there and then make a subtle adjustment because, those subtle adjustments will never be fully dispersed out to the -community. It just fragments. [00:34:01] +community. It just fragments. [34:01] **Christopher Chedeau:** Another question in the chat from Tactician. Was there anyone else you wanted to interview for the documentary that you were not able -to? [00:34:08] +to? [34:08] So actually, like for me personally, there's Jing Chen, so, she actually did talk to Ida, but she doesn't want to be on camera. But Jing has been absolutely @@ -716,78 +716,78 @@ fantastic and so influential to build connection with the customers. And so a lot of the times people are thinking about React as this technical like piece of art and everything. But one of the thing now to be successful is you need to actually work with the customer actually going to use it. And Jing has been the -one that build a customer relationship. [00:34:38] +one that build a customer relationship. [34:38] And it was very hard at in many time, but she was the ball. Like you dropped, like she dropped into this relation and now all of a sudden, like everybody was excited, everybody was productive. So I want to give a huge shoutout to her -around this. [00:34:52] +around this. [34:52] **Carl Vitullo:** Yeah, that was mentioned in the documentary, her ability to get people oriented around the topic. Do you have a sense for how she manages to -do that? [00:34:59] +do that? [34:59] **Christopher Chedeau:** So I think for this basically always putting the needs of the other first, and really deeply understanding, hey, what is the challenges of, like for example, we're working with Instagram, Hey, what is the needs of -Instagram team? What are they thinking through and everything? [00:35:14] +Instagram team? What are they thinking through and everything? [35:14] And then basically telling them like, Hey, we are going to be able to solve your needs. And this is something that a lot of people in engineering and tech are like, oh, I want to build my thing because I think it's going to be better, but not putting themselves into the shoes of the others, and conflict management and -conflict resolution kind of things has been her superpower. [00:35:34] +conflict resolution kind of things has been her superpower. [35:34] **Carl Vitullo:** Do you think it would be accurate to say that she approaches -these situations with curiosity rather than a preconceived solution? [00:35:41] +these situations with curiosity rather than a preconceived solution? [35:41] -**Christopher Chedeau:** Yeah, that makes sense. [00:35:43] +**Christopher Chedeau:** Yeah, that makes sense. [35:43] **Carl Vitullo:** Ida, if there's anything else you'd like to say about how the -documentary came together? [00:35:48] +documentary came together? [35:48] **Ida Bechtle:** I guess not too much to say other than just to add thanks to the cast and to Christopher, so for helping me. I think he did, especially with Meta. I think he did a lot of stuff kind of behind the screen or like that I didn't really realize. He made it super easy for me to be able to film even at -Meta and to feature engineers working at Meta now. [00:36:09] +Meta and to feature engineers working at Meta now. [36:09] So yeah, I just wanna shout out the whole cast who were amazing and we've gotten so many compliments also about just how they tell this story. It's super entertaining, what do you say? Like, storytelling throughout. So that's all -them. [00:36:23] +them. [36:23] **Carl Vitullo:** Yeah, you can really tell how much everyone cares about all their coworkers and about the project they're working on. Yeah, Christopher any, -anyone you wanna shout out? Anything you wanna plug? [00:36:31] +anyone you wanna shout out? Anything you wanna plug? [36:31] **Christopher Chedeau:** Nothing really, go watch documentary if you haven't yet. And if you have, share it with your friends. One of the things that I found like was really good is that the documentary is done in a way, even if you're not technical, you can understand it. And so my wife, knows nothing about tech, -but she was hooked from the beginning to the end. [00:36:48] +but she was hooked from the beginning to the end. [36:48] And this is very hard, like she's picky and everything. So, it's a really good testament of Ida's skills and yeah. One thing I really want is, can we get it on Netflix? So I'm trying to convince people to see if we can do it, but we'll see. -[00:37:02] +[37:02] **Carl Vitullo:** Sure. Yeah. I mean, they get a big shout out in there. Be a good marketing play for them. Well, if I see the React Documentary on Netflix -I'll know who to thank. [00:37:09] +I'll know who to thank. [37:09] -Yeah. Thanks so much for coming out, Christopher and Ida. [00:37:13] +Yeah. Thanks so much for coming out, Christopher and Ida. [37:13] -**Ida Bechtle:** Thanks for having us. [00:37:14] +**Ida Bechtle:** Thanks for having us. [37:14] -**Christopher Chedeau:** Thank you so much, Carl, for hosting. [00:37:16] +**Christopher Chedeau:** Thank you so much, Carl, for hosting. [37:16] **Carl Vitullo:** Yeah, very glad you could make it. Yeah. Well, thanks so much for coming everyone in the audience. And make sure to join us next week. We're doing the first episode of This Month in React with Sebastien Lorber, and myself, and Mark Erickson. Really excited to try it out and keep you guys on the -top of what's happening in the React ecosystem. [00:37:33] +top of what's happening in the React ecosystem. [37:33] -Yeah. Thank you so much everyone. This was really fun to do. [00:37:37] +Yeah. Thank you so much everyone. This was really fun to do. [37:37] **Christopher Chedeau:** Bye. diff --git a/src/transcripts/elizabeth-woolf.md b/src/transcripts/elizabeth-woolf.md index 20bd22b..66e5541 100644 --- a/src/transcripts/elizabeth-woolf.md +++ b/src/transcripts/elizabeth-woolf.md @@ -11,715 +11,715 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_), [Elizabeth Woolf](https://w -**Carl Vitullo:** Thank you everyone for joining us for another Office Hours. I am Carl Vitullo, community manager of Reactiflux, here talking today with Elizabeth Woolf, who has recently started a new business doing communication coaching for engineers. Yeah. Elizabeth, can you introduce yourself a little bit? [00:00:16] +**Carl Vitullo:** Thank you everyone for joining us for another Office Hours. I am Carl Vitullo, community manager of Reactiflux, here talking today with Elizabeth Woolf, who has recently started a new business doing communication coaching for engineers. Yeah. Elizabeth, can you introduce yourself a little bit? [00:16] -**Elizabeth Woolf:** Yeah. Hi everyone. It's awesome to see you, even if you're just bubbles. I will say I am just absolutely stoked to be here. I respect the hell out of engineers and I wouldn't be here unless I did. My day job is I work in product management, and then my company that I decided to start because I saw just a huge gap, is coaching engineers and not in the cheesy sense of like, let's help you get to your dreams and like sail above the clouds.[00:00:45] +**Elizabeth Woolf:** Yeah. Hi everyone. It's awesome to see you, even if you're just bubbles. I will say I am just absolutely stoked to be here. I respect the hell out of engineers and I wouldn't be here unless I did. My day job is I work in product management, and then my company that I decided to start because I saw just a huge gap, is coaching engineers and not in the cheesy sense of like, let's help you get to your dreams and like sail above the clouds.[00:45] ## "Soft skills" -**Elizabeth Woolf:** It's, I want to give people the skills to be damn good communicators because that helps accelerate a career and it's a skill. That's not talked about and it can be taught, it's tangible. So that's kind of why I decided to start this in January, and I hope you all learn like one or two things today. If 10, that's even better. [00:01:05] +**Elizabeth Woolf:** It's, I want to give people the skills to be damn good communicators because that helps accelerate a career and it's a skill. That's not talked about and it can be taught, it's tangible. So that's kind of why I decided to start this in January, and I hope you all learn like one or two things today. If 10, that's even better. [01:05] -**Carl Vitullo:** I think a lot of people talk about soft skills, but I, I think a lot of the time the conversation kind of stays right around that level of specificity. Yeah. And like it's not very specific, like when people talk soft skills in interviews, (laughter) I think a lot of it is left sort of unsaid as like cultural assumptions. [00:01:22] +**Carl Vitullo:** I think a lot of people talk about soft skills, but I, I think a lot of the time the conversation kind of stays right around that level of specificity. Yeah. And like it's not very specific, like when people talk soft skills in interviews, (laughter) I think a lot of it is left sort of unsaid as like cultural assumptions. [01:22] -**Elizabeth Woolf:** Yeah, right. Definitely. It's also like cultural and it assumed to be, like, almost emotional. So having this degree of, like, an EQ or being able to be soft and empathetic, but I think there's a lot of it on just the business side that makes you have a really kick ass team if you guys communicate well. [00:01:42] +**Elizabeth Woolf:** Yeah, right. Definitely. It's also like cultural and it assumed to be, like, almost emotional. So having this degree of, like, an EQ or being able to be soft and empathetic, but I think there's a lot of it on just the business side that makes you have a really kick ass team if you guys communicate well. [01:42] -And, yeah, the empathy part might be a part of it, but it's also so many other skill sets that come in it. [00:01:47] +And, yeah, the empathy part might be a part of it, but it's also so many other skill sets that come in it. [01:47] -**Carl Vitullo:** Yeah, for sure. So like emotional side of things, sure, like empathizing, being able to read, read a room, read other individuals on the team. What, what are, what's some other skills that you think are important to develop around there? [00:01:59] +**Carl Vitullo:** Yeah, for sure. So like emotional side of things, sure, like empathizing, being able to read, read a room, read other individuals on the team. What, what are, what's some other skills that you think are important to develop around there? [01:59] -**Elizabeth Woolf:** So let's, we'll call it the pinnacle of like all things and it's also the scariest of all things. I think it's feedback. [00:02:06] +**Elizabeth Woolf:** So let's, we'll call it the pinnacle of like all things and it's also the scariest of all things. I think it's feedback. [02:06] -And there's two sides to it. There's like, you are giving the feedback and there's also you are receiving the feedback. And the people who are really good at this, and I've seen them in my career, they climb whatever ropes you want to assign to whatever role the fastest. [00:02:20] +And there's two sides to it. There's like, you are giving the feedback and there's also you are receiving the feedback. And the people who are really good at this, and I've seen them in my career, they climb whatever ropes you want to assign to whatever role the fastest. [02:20] -And when I started my career, I knew nothing about it. I avoided it like the plague. It made me feel uncomfortable and scared. It was a fear of mine. And some days it still is, but I think because there's ways of actively practicing it, it becomes a lot easier. [00:02:35] +And when I started my career, I knew nothing about it. I avoided it like the plague. It made me feel uncomfortable and scared. It was a fear of mine. And some days it still is, but I think because there's ways of actively practicing it, it becomes a lot easier. [02:35] -There's a site I used to, not used to, I still follow. It's called Lead Dev, if anyone's ever tried it. And there's a woman who spoke and she said, "fears are our best clues as to how we can be amazing." I was like, holy cow. And so it's just, fears aren't who we are. Feedback is scary and it's not something that's irrevocable. So it can be taught. [00:02:54] +There's a site I used to, not used to, I still follow. It's called Lead Dev, if anyone's ever tried it. And there's a woman who spoke and she said, "fears are our best clues as to how we can be amazing." I was like, holy cow. And so it's just, fears aren't who we are. Feedback is scary and it's not something that's irrevocable. So it can be taught. [02:54] -And if you name 'em that, that was a big thing for me. Like name what your fears are. If they live in your head, they kind of explode and fester. But if you can write 'em down, make them conscious, make them real, you now have more power. [00:03:07] +And if you name 'em that, that was a big thing for me. Like name what your fears are. If they live in your head, they kind of explode and fester. But if you can write 'em down, make them conscious, make them real, you now have more power. [03:07] -So I think that would be a first step, is you name what your fears are with any, any type of talking that you're doing, cuz there's ways you can address them. You gotta know what they are first. [00:03:16] +So I think that would be a first step, is you name what your fears are with any, any type of talking that you're doing, cuz there's ways you can address them. You gotta know what they are first. [03:16] -**Carl Vitullo:** Right. Yeah. I think that that, that makes a lot of sense and is also super hard. I think. [00:03:20] +**Carl Vitullo:** Right. Yeah. I think that that, that makes a lot of sense and is also super hard. I think. [03:20] -**Elizabeth Woolf:** Oh, yeah. [00:03:20] +**Elizabeth Woolf:** Oh, yeah. [03:20] -**Carl Vitullo:** I think maybe another way of framing this is what you're afraid of is things that you're uncomfortable with. It's, you know, when people talk about getting out of your comfort zone, that means selecting to be uncomfortable. [00:03:32] +**Carl Vitullo:** I think maybe another way of framing this is what you're afraid of is things that you're uncomfortable with. It's, you know, when people talk about getting out of your comfort zone, that means selecting to be uncomfortable. [03:32] -Yeah. So like what you said, you know, if you can, name your fear, take it from something subconscious, you, your, your mind is just sort of pushing you away from it, helping you to avoid because it's uncomfortable. [00:03:44] +Yeah. So like what you said, you know, if you can, name your fear, take it from something subconscious, you, your, your mind is just sort of pushing you away from it, helping you to avoid because it's uncomfortable. [03:44] -**Elizabeth Woolf:** Yeah. [00:03:44] +**Elizabeth Woolf:** Yeah. [03:44] -**Carl Vitullo:** By naming it, you can begin to understand it, and as you understand it, you can figure out how to adapt to it or, or to use it, you know, use it to your favor. [00:03:53] +**Carl Vitullo:** By naming it, you can begin to understand it, and as you understand it, you can figure out how to adapt to it or, or to use it, you know, use it to your favor. [03:53] -**Elizabeth Woolf:** Definitely. It's all like you, you now have ownership over it. It doesn't control you. You control it, which is the best point to get to, and I'm not gonna sit here and tell you it's like sunshine and rainbows. It's not, it's a lot of growth, but it's, God, is it worth it? It's so worth it. [00:04:08] +**Elizabeth Woolf:** Definitely. It's all like you, you now have ownership over it. It doesn't control you. You control it, which is the best point to get to, and I'm not gonna sit here and tell you it's like sunshine and rainbows. It's not, it's a lot of growth, but it's, God, is it worth it? It's so worth it. [04:08] ## Fear of feedback -**Carl Vitullo:** Yeah. So you mentioned fear of feedback. Fear around feedback is something that you've had to overcome. So like if you, if you don't mind, like, well, how did that sort of manifest? [00:04:18] +**Carl Vitullo:** Yeah. So you mentioned fear of feedback. Fear around feedback is something that you've had to overcome. So like if you, if you don't mind, like, well, how did that sort of manifest? [04:18] -**Elizabeth Woolf:** And I hope all of you here with us can also think through how your fear of, fear of feedback manifests. That way you can hopefully go on the journey with us of conquering it. [00:04:29] +**Elizabeth Woolf:** And I hope all of you here with us can also think through how your fear of, fear of feedback manifests. That way you can hopefully go on the journey with us of conquering it. [04:29] -My fear of feedback started when I probably was, like consciously started, when I started my career. I started as a people pleaser where if someone said a task, it was now mine, regardless of time, energy, anything. And before you know it, you are burnt to a crisp. [00:04:46] +My fear of feedback started when I probably was, like consciously started, when I started my career. I started as a people pleaser where if someone said a task, it was now mine, regardless of time, energy, anything. And before you know it, you are burnt to a crisp. [04:46] -And so I got feedback of, "you take too much on." And then it grew to, because I had so much, "your self-confidence is shot. Like you, you don't have any anymore." And that lit a fire in my head. I'd never have someone told me that to my face. It also was delivered pretty poorly. And that's another part we can talk about. [00:05:06] +And so I got feedback of, "you take too much on." And then it grew to, because I had so much, "your self-confidence is shot. Like you, you don't have any anymore." And that lit a fire in my head. I'd never have someone told me that to my face. It also was delivered pretty poorly. And that's another part we can talk about. [05:06] -**Carl Vitullo:** Okay. So in this case you, you've received feedback that received, you had taken on too much. Yeah. Okay. [00:05:11] +**Carl Vitullo:** Okay. So in this case you, you've received feedback that received, you had taken on too much. Yeah. Okay. [05:11] -**Elizabeth Woolf:** Which I think a lot of us start our careers that way. You start being like, experience is great. I'm gonna take it all on (laughter). Sure. Then it's like, "oh God, what have I done?" [00:05:21] +**Elizabeth Woolf:** Which I think a lot of us start our careers that way. You start being like, experience is great. I'm gonna take it all on (laughter). Sure. Then it's like, "oh God, what have I done?" [05:21] -**Carl Vitullo:** Sure. You take too much on, you get a, you get your first dose of, oh God, I can't do all of this. [00:05:26] +**Carl Vitullo:** Sure. You take too much on, you get a, you get your first dose of, oh God, I can't do all of this. [05:26] -**Elizabeth Woolf:** Yeah. I also know I have colleagues who they can be afraid of their own selves. So in the beginning of their career, it can be you're afraid to take on anything. You don't trust your gut, you don't trust that growth, or the opportunity is scary. And because of this, people can notice. [00:05:40] +**Elizabeth Woolf:** Yeah. I also know I have colleagues who they can be afraid of their own selves. So in the beginning of their career, it can be you're afraid to take on anything. You don't trust your gut, you don't trust that growth, or the opportunity is scary. And because of this, people can notice. [05:40] -**Carl Vitullo:** Yeah. I've definitely felt that in my own career. I think, yeah. I, something I've really had to fight to overcome is sort of feeling like, "oh, I don't know how to do this, so I can't." (laughter). [00:05:51] +**Carl Vitullo:** Yeah. I've definitely felt that in my own career. I think, yeah. I, something I've really had to fight to overcome is sort of feeling like, "oh, I don't know how to do this, so I can't." (laughter). [05:51] -**Elizabeth Woolf:** Yeah. [00:05:53] +**Elizabeth Woolf:** Yeah. [05:53] -**Carl Vitullo:** And just, and like recognizing that and realizing like, oh no, I'm just scared to do this because learning something new and trying something hard is just an intimidating prospect and pushing through that fear. Yeah. [00:06:03] +**Carl Vitullo:** And just, and like recognizing that and realizing like, oh no, I'm just scared to do this because learning something new and trying something hard is just an intimidating prospect and pushing through that fear. Yeah. [06:03] -**Elizabeth Woolf:** Yeah. And think of, you can also insert that fear with, and I'm gonna use the word again, feedback. For anyone on this call who is in an engineering role, and you want to continue to excel at that role. I will stress that this skill is gonna be a powerhouse for you. And the earlier you learn it, the earlier you get comfortable with it, the more you can grow through it. [00:06:24] +**Elizabeth Woolf:** Yeah. And think of, you can also insert that fear with, and I'm gonna use the word again, feedback. For anyone on this call who is in an engineering role, and you want to continue to excel at that role. I will stress that this skill is gonna be a powerhouse for you. And the earlier you learn it, the earlier you get comfortable with it, the more you can grow through it. [06:24] -And so if earlier in your career you find yourself stepping back from different projects, it's, it's that similar feeling. But um, as we talked about fears, name 'em, and then find someone to help you step into them. And I promise you those people, that the ones that speak are the ones who like, grow through their career [00:06:42] +And so if earlier in your career you find yourself stepping back from different projects, it's, it's that similar feeling. But um, as we talked about fears, name 'em, and then find someone to help you step into them. And I promise you those people, that the ones that speak are the ones who like, grow through their career [06:42] -**Carl Vitullo:** Speak as in, provides that feedback? [00:06:45] +**Carl Vitullo:** Speak as in, provides that feedback? [06:45] -**Elizabeth Woolf:** Mm-hmm. [00:06:46] +**Elizabeth Woolf:** Mm-hmm. [06:46] -**Carl Vitullo:** Yeah. For sure. [00:06:47] +**Carl Vitullo:** Yeah. For sure. [06:47] ## Deciding whether to give feedback -**Carl Vitullo:** Yeah, so how would you, how do you go about deciding whether something is worth giving feedback about? You know, say you have maybe a fraught situation on a team, like you think somebody overstepped their bounds. Like what, do you have any sort of tools for evaluating that? [00:07:02] +**Carl Vitullo:** Yeah, so how would you, how do you go about deciding whether something is worth giving feedback about? You know, say you have maybe a fraught situation on a team, like you think somebody overstepped their bounds. Like what, do you have any sort of tools for evaluating that? [07:02] -**Elizabeth Woolf:** Yeah. Something that, it's gonna sound probably funnier than it should, but like your gut is gonna punch you (laughs), you're gonna see it. Our observational skills are impeccable. Like we really do have really good observational skills. [00:07:14] +**Elizabeth Woolf:** Yeah. Something that, it's gonna sound probably funnier than it should, but like your gut is gonna punch you (laughs), you're gonna see it. Our observational skills are impeccable. Like we really do have really good observational skills. [07:14] -It's just that voice of fear is gonna help shut it down, and also try and keep you safe. If you don't say anything, it's so much more comfortable that way. And I've been there many times. [00:07:24] +It's just that voice of fear is gonna help shut it down, and also try and keep you safe. If you don't say anything, it's so much more comfortable that way. And I've been there many times. [07:24] -The thing is though, once you hear that voice, it's like… it's retraining yourself. It's almost like driving on the opposite side of the road. Like, wait, I need, and I now need to be on the opposite side. It's a conscious response. [00:07:35] +The thing is though, once you hear that voice, it's like… it's retraining yourself. It's almost like driving on the opposite side of the road. Like, wait, I need, and I now need to be on the opposite side. It's a conscious response. [07:35] -**Carl Vitullo:** Okay, sure. Where the, the comfortable side is, the people pleaser, you, you just wanna make everyone happy and smile and you just, buckle down and like, okay, I can ignore this. This is fine. [00:07:45] +**Carl Vitullo:** Okay, sure. Where the, the comfortable side is, the people pleaser, you, you just wanna make everyone happy and smile and you just, buckle down and like, okay, I can ignore this. This is fine. [07:45] -**Elizabeth Woolf:** Which is actually a form, and it's just, this is also ironic, like that's a, you just chose feedback, you chose inaction, you chose silence. [00:07:52] +**Elizabeth Woolf:** Which is actually a form, and it's just, this is also ironic, like that's a, you just chose feedback, you chose inaction, you chose silence. [07:52] -And I would encourage you in those moments to think about, if I said something and it landed well, cause I knew how to say it, like, what would happen. I just know a lot of, I've worked with engineering teams where they chose that silence, and I've also worked with engineers who are so good at giving feedback, and I just, the ones that were the teams, their output was just bananas. [00:08:12] +And I would encourage you in those moments to think about, if I said something and it landed well, cause I knew how to say it, like, what would happen. I just know a lot of, I've worked with engineering teams where they chose that silence, and I've also worked with engineers who are so good at giving feedback, and I just, the ones that were the teams, their output was just bananas. [08:12] -Like, (laughs) you just, you move faster and you move differently, and hiccups aren't the same. So yeah. That's why I, I love it like a celebrity. [00:08:21] +Like, (laughs) you just, you move faster and you move differently, and hiccups aren't the same. So yeah. That's why I, I love it like a celebrity. [08:21] ## Trusting your gut -**Carl Vitullo:** Yeah, haha. Yeah. Okay. So trusting your gut feeling. [00:08:25] +**Carl Vitullo:** Yeah, haha. Yeah. Okay. So trusting your gut feeling. [08:25] -**Elizabeth Woolf:** Mm-hmm. You'll, you'll observe it, you'll know it. [00:08:27] +**Elizabeth Woolf:** Mm-hmm. You'll, you'll observe it, you'll know it. [08:27] -**Carl Vitullo:** Yeah. I, I, I can definitely think of a couple times where I had a genuine physical gut feeling in my career when I, one of the, one of them, one of the ones that stands out most strongly in my mind, I woke up one morning with this pit of dread in my chest before going to work, it, it had been a, a, a rough couple of weeks at work, and it, the trajectory didn't look good. And I remember I said to my, uh, my partner at the time, I said, I think I have to quit. And so I, I drafted and printed out a letter of resignation, like on my way to work, and I quit that day. [00:09:01] +**Carl Vitullo:** Yeah. I, I, I can definitely think of a couple times where I had a genuine physical gut feeling in my career when I, one of the, one of them, one of the ones that stands out most strongly in my mind, I woke up one morning with this pit of dread in my chest before going to work, it, it had been a, a, a rough couple of weeks at work, and it, the trajectory didn't look good. And I remember I said to my, uh, my partner at the time, I said, I think I have to quit. And so I, I drafted and printed out a letter of resignation, like on my way to work, and I quit that day. [09:01] -**Elizabeth Woolf:** Holy cow. [00:09:01] +**Elizabeth Woolf:** Holy cow. [09:01] -**Carl Vitullo:** So, yeah, that was, that was a pretty, that was a notable gut feeling. [00:09:05] +**Carl Vitullo:** So, yeah, that was, that was a pretty, that was a notable gut feeling. [09:05] -**Elizabeth Woolf:** Was the pit growing? Did the pit grow or was it like you [00:09:08] +**Elizabeth Woolf:** Was the pit growing? Did the pit grow or was it like you [09:08] -**Carl Vitullo:** Yeah, and it was some, this was some, this was like a couple of weeks of like, giving feedback. You know, I would go on one-on-one walks with my manager and I would try to talk through this issue and just like kept hitting these walls where it's like, okay, my feedback is being rejected. [00:09:21] +**Carl Vitullo:** Yeah, and it was some, this was some, this was like a couple of weeks of like, giving feedback. You know, I would go on one-on-one walks with my manager and I would try to talk through this issue and just like kept hitting these walls where it's like, okay, my feedback is being rejected. [09:21] -I'm, I'm trying to be very like, diplomatic and like navigate tough waters because it is hard to give feedback. [00:09:28] +I'm, I'm trying to be very like, diplomatic and like navigate tough waters because it is hard to give feedback. [09:28] -**Elizabeth Woolf:** A million percent. [00:09:29] +**Elizabeth Woolf:** A million percent. [09:29] ## Building feedback into team culture -**Elizabeth Woolf:** Yeah. I, I will say too, um, it's also gonna be really hard if you're in a culture that's like super positive feedback focused or if you're in a culture who just doesn't say anything. [00:09:39] +**Elizabeth Woolf:** Yeah. I, I will say too, um, it's also gonna be really hard if you're in a culture that's like super positive feedback focused or if you're in a culture who just doesn't say anything. [09:39] -Like those are definitely barriers. If you're an a leader, an engineering leader, like I cannot encourage you more. You have a great, now, platform to do this, cuz the people who, people will follow you. So if you decide that you want this as part of your culture, it's gonna happen by osmosis. You just lead by example. [00:09:57] +Like those are definitely barriers. If you're an a leader, an engineering leader, like I cannot encourage you more. You have a great, now, platform to do this, cuz the people who, people will follow you. So if you decide that you want this as part of your culture, it's gonna happen by osmosis. You just lead by example. [09:57] -But it's really hard, especially if it doesn't start from the culture from day one, which is not normal. [00:10:03] +But it's really hard, especially if it doesn't start from the culture from day one, which is not normal. [10:03] -**Carl Vitullo:** Right. Building a culture is hard, changing a culture is harder. [00:10:07] +**Carl Vitullo:** Right. Building a culture is hard, changing a culture is harder. [10:07] -**Elizabeth Woolf:** Oh yeah. Yeah. And there's like, very few greats, that have been built on feedback. Like I know Google is especially good at it. I've talked to people who, they get like a 360 experience. [00:10:19] +**Elizabeth Woolf:** Oh yeah. Yeah. And there's like, very few greats, that have been built on feedback. Like I know Google is especially good at it. I've talked to people who, they get like a 360 experience. [10:19] -And then also your managers, your coach, I've watched before. And then I know Netflix, one of their values is around feedback. So I mean, they've done some good, they grew pretty fast. So it's not completely painful, it's just you gotta get used to it. Like learning a new language, which is kind of how I like to equate it to. [00:10:38] +And then also your managers, your coach, I've watched before. And then I know Netflix, one of their values is around feedback. So I mean, they've done some good, they grew pretty fast. So it's not completely painful, it's just you gotta get used to it. Like learning a new language, which is kind of how I like to equate it to. [10:38] -**Carl Vitullo:** Sure. It's, it is, it is a new form of communicating. Yeah. Yeah, definitely. [00:10:43] +**Carl Vitullo:** Sure. It's, it is, it is a new form of communicating. Yeah. Yeah, definitely. [10:43] ## Giving upward feedback -**Carl Vitullo:** Question in the chat about the context for feedback. Yeah. Feedback to managers, colleagues. I think that's, I think that's a really important distinction. Let's, let's narrow down to giving upward feedback. Let's say you're talking to your manager or to, to your skip level boss. [00:10:58] +**Carl Vitullo:** Question in the chat about the context for feedback. Yeah. Feedback to managers, colleagues. I think that's, I think that's a really important distinction. Let's, let's narrow down to giving upward feedback. Let's say you're talking to your manager or to, to your skip level boss. [10:58] -Yeah. How would you think about whether to give feedback, and some specific ways to structure that? [00:11:05] +Yeah. How would you think about whether to give feedback, and some specific ways to structure that? [11:05] -**Elizabeth Woolf:** A hundred percent. The first thing is do not in any way, shape, or form, I would never recommend like just come out of the blue and spurt it. And also don't do it in a public setting. Like I would keep feedback, always keep it private. [00:11:16] +**Elizabeth Woolf:** A hundred percent. The first thing is do not in any way, shape, or form, I would never recommend like just come out of the blue and spurt it. And also don't do it in a public setting. Like I would keep feedback, always keep it private. [11:16] -Something that helps a lot for human beings is if you quote-unquote, "set the stage," so if they know it's coming, you can have their emotions get heightened, and then release. Because there's something beautiful about humans is our emotions. They feel intensely, but 12 to 24 hours later, they're not the same as they once were. [00:11:34] +Something that helps a lot for human beings is if you quote-unquote, "set the stage," so if they know it's coming, you can have their emotions get heightened, and then release. Because there's something beautiful about humans is our emotions. They feel intensely, but 12 to 24 hours later, they're not the same as they once were. [11:34] -So if you can tell someone the feedback's coming, it just helps a lot for their brains to be in the right place. And then when it comes to delivering it, I want, this is the stuff I'd probably want you to write down is like, You gotta make it specific and tangible, and you can't call out the human person, you gotta call out the behavior. [00:11:52] +So if you can tell someone the feedback's coming, it just helps a lot for their brains to be in the right place. And then when it comes to delivering it, I want, this is the stuff I'd probably want you to write down is like, You gotta make it specific and tangible, and you can't call out the human person, you gotta call out the behavior. [11:52] -And the way I want you to structure it that has worked really well for me, and again, I've done this to people who are CFOs, so it worked really well, and they are people who are very methodical. All the numbers need to add up. [00:12:02] +And the way I want you to structure it that has worked really well for me, and again, I've done this to people who are CFOs, so it worked really well, and they are people who are very methodical. All the numbers need to add up. [12:02] -So the first step, start with the behavior. What specifically did they do? One sentence. And then you gotta tell them the outcome cuz something happened because of it. So what outcome did that specific behavior cause? And then the most important thing is, ask for their perspective. [00:12:21] +So the first step, start with the behavior. What specifically did they do? One sentence. And then you gotta tell them the outcome cuz something happened because of it. So what outcome did that specific behavior cause? And then the most important thing is, ask for their perspective. [12:21] -There's a whole book about this too. Like if you had this kind of conversation, you never ask for their perspective, the number one thing people wish that had happened was they just asked like, "what was my perspective? How did I perceive it?" So now we're at three, we're at behavior, outcome, perspective. And the last one that you get to do together and it's, think of it as like a Q&A. It's like what are the positive results you wanna see later? How can you make that happen. [00:12:45] +There's a whole book about this too. Like if you had this kind of conversation, you never ask for their perspective, the number one thing people wish that had happened was they just asked like, "what was my perspective? How did I perceive it?" So now we're at three, we're at behavior, outcome, perspective. And the last one that you get to do together and it's, think of it as like a Q&A. It's like what are the positive results you wanna see later? How can you make that happen. [12:45] -And when you manage up, they're a good manager, you just looked incredible. I'm not kidding. Like it, yeah, it's so like, I feel like as human beings, we wanna grow, we wanna learn, that that's pretty normal. You wanna do good work, you wanna have meaningful work, and this is a big part of it. [00:13:03] +And when you manage up, they're a good manager, you just looked incredible. I'm not kidding. Like it, yeah, it's so like, I feel like as human beings, we wanna grow, we wanna learn, that that's pretty normal. You wanna do good work, you wanna have meaningful work, and this is a big part of it. [13:03] -So I hope those steps help. I have other ones too, if that didn't help at all. But [00:13:09] +So I hope those steps help. I have other ones too, if that didn't help at all. But [13:09] -**Carl Vitullo:** Yeah, no, I think that, I think that those are really good points. You know, I've read a couple of books on communication as you know, community manager type, that's definitely a, a large part of my role. Those reverse people books.[00:13:20] +**Carl Vitullo:** Yeah, no, I think that, I think that those are really good points. You know, I've read a couple of books on communication as you know, community manager type, that's definitely a, a large part of my role. Those reverse people books.[13:20] ## Communication as personal improvement -**Carl Vitullo:** Yes. Yeah. That, that, that book you just held up, Difficult Conversations. It's, it's on our, you know, recommended reading list on the website and I recommend it to everyone, not just professionally, cuz it, I think it made a huge difference in my personal life too, just cuz feedback is universal. [00:13:36] +**Carl Vitullo:** Yes. Yeah. That, that, that book you just held up, Difficult Conversations. It's, it's on our, you know, recommended reading list on the website and I recommend it to everyone, not just professionally, cuz it, I think it made a huge difference in my personal life too, just cuz feedback is universal. [13:36] -**Elizabeth Woolf:** Oh yeah. It's to your mom, it's to a grieving friend. It's in a relationship that's gone sour. Like, that's why— I'm gonna tell you a secret. It's why I fricking love this stuff. Ha ha. Because yeah, I might help someone be a better teammate, and that's wonderful, don't get me wrong. But then they get to turn around and have an incredible relationship with their kid, just cuz they learned this one thing. [00:13:56] +**Elizabeth Woolf:** Oh yeah. It's to your mom, it's to a grieving friend. It's in a relationship that's gone sour. Like, that's why— I'm gonna tell you a secret. It's why I fricking love this stuff. Ha ha. Because yeah, I might help someone be a better teammate, and that's wonderful, don't get me wrong. But then they get to turn around and have an incredible relationship with their kid, just cuz they learned this one thing. [13:56] -It's just, sure. It's, it's powerful and it's not just in one area. [00:14:00] +It's just, sure. It's, it's powerful and it's not just in one area. [14:00] -**Carl Vitullo:** Yeah, definitely cuz, right. I mean, soft skills, communication. Yeah. That's, you know, that's a, that's a dimension of professional life, but it's also just, you know, we live in, we exist in a social context. We are always in contact with other people. [00:14:14] +**Carl Vitullo:** Yeah, definitely cuz, right. I mean, soft skills, communication. Yeah. That's, you know, that's a, that's a dimension of professional life, but it's also just, you know, we live in, we exist in a social context. We are always in contact with other people. [14:14] -**Elizabeth Woolf:** I will say when I started this journey, there was a podcast I found called Soft Skills Engineering. And if anyone's ever listened to that, if you like to laugh and you like to hear just real things, Jameson and Dave are the host and they are hilarious. And they just talk, people submit questions and they're just engineers at every level. [00:14:33] +**Elizabeth Woolf:** I will say when I started this journey, there was a podcast I found called Soft Skills Engineering. And if anyone's ever listened to that, if you like to laugh and you like to hear just real things, Jameson and Dave are the host and they are hilarious. And they just talk, people submit questions and they're just engineers at every level. [14:33] -So I would definitely recommend it. And they're 30 minutes, so it's a little blip and you feel very smart. [00:14:38] +So I would definitely recommend it. And they're 30 minutes, so it's a little blip and you feel very smart. [14:38] -**Carl Vitullo:** Nice. Yeah. I, I really liked how you framed giving feedback around the behavior and the outcome. I think you, I think what you said about their perspectives, actively soliciting them to provide their perspective on it. [00:14:52] +**Carl Vitullo:** Nice. Yeah. I, I really liked how you framed giving feedback around the behavior and the outcome. I think you, I think what you said about their perspectives, actively soliciting them to provide their perspective on it. [14:52] -Yeah. [00:14:53] +Yeah. [14:53] ## Importance of listening -**Carl Vitullo:** I think, and I, I think something else I wanna emphasize is it's not, it's not enough to just, you know, like paint by numbers through these conversations. Like, these are the ingredients. Like if you ask for their perspective and don't authentically listen to them and have it inform your own perspective, then it doesn't actually, it does, you know, that doesn't actually do anything, right? [00:15:12] +**Carl Vitullo:** I think, and I, I think something else I wanna emphasize is it's not, it's not enough to just, you know, like paint by numbers through these conversations. Like, these are the ingredients. Like if you ask for their perspective and don't authentically listen to them and have it inform your own perspective, then it doesn't actually, it does, you know, that doesn't actually do anything, right? [15:12] -**Elizabeth Woolf:** Beautifully said. So, in college, I helped professors and students give presentations. We were a public speaking lab, and the first thing we were taught on day one is, how you listen is gonna be far more important than anything you ever say. [00:15:26] +**Elizabeth Woolf:** Beautifully said. So, in college, I helped professors and students give presentations. We were a public speaking lab, and the first thing we were taught on day one is, how you listen is gonna be far more important than anything you ever say. [15:26] -And I can't tell you how many conversations I've been in where the person's talking and you're like, "okay, okay, okay, okay, okay. I got this. I know what I'm gonna say. Here it comes. Here it comes, here it comes." And then you, you, you're off the mark. You didn't actually hear what they said. [00:15:39] +And I can't tell you how many conversations I've been in where the person's talking and you're like, "okay, okay, okay, okay, okay. I got this. I know what I'm gonna say. Here it comes. Here it comes, here it comes." And then you, you, you're off the mark. You didn't actually hear what they said. [15:39] -**Carl Vitullo:** Right? Right. Oh man, there's a quote from a movie or a show that I'm, I, I wish I could remember where it was from or exactly what the quote is, but it's, "so many people, they don't listen, they just wait for their turn to talk." [00:15:52] +**Carl Vitullo:** Right? Right. Oh man, there's a quote from a movie or a show that I'm, I, I wish I could remember where it was from or exactly what the quote is, but it's, "so many people, they don't listen, they just wait for their turn to talk." [15:52] -**Carl (editing):** The quote is from Fight Club and actually it's a little bit darker than I remembered. [00:15:57] +**Carl (editing):** The quote is from Fight Club and actually it's a little bit darker than I remembered. [15:57] -**Movie quote:** When people think you're dying, man, they really, really listen to you instead of just," "instead of just waiting for their turn to speak." [00:16:04] +**Movie quote:** When people think you're dying, man, they really, really listen to you instead of just," "instead of just waiting for their turn to speak." [16:04] -**Elizabeth Woolf:** yeah. That's exactly it. [00:16:06] +**Elizabeth Woolf:** yeah. That's exactly it. [16:06] -**Carl Vitullo:** Right? Yeah. And authentically listening to someone, I think is all, you know, that's also a skill that's also not easy. Yeah. Something else I wanted to, you know, that I have in my notes that I wanted to emphasize is avoiding the appearance of passing judgment. [00:16:18] +**Carl Vitullo:** Right? Yeah. And authentically listening to someone, I think is all, you know, that's also a skill that's also not easy. Yeah. Something else I wanted to, you know, that I have in my notes that I wanted to emphasize is avoiding the appearance of passing judgment. [16:18] -I think that so much of like social interaction is a lot, you know, nobody likes to feel judged. It doesn't feel nice to No have it feel like somebody else is saying "you are a bad person." And I, I think what you said about focusing on behavior is, it's a, it's a pretty subtle adjustment from talking about "the person" to "the behavior." Yeah. But it, it helps avoid it being, it's a powerful adjustment to frame it around something that can be changed rather than something that feels like immutable. [00:16:48] +I think that so much of like social interaction is a lot, you know, nobody likes to feel judged. It doesn't feel nice to No have it feel like somebody else is saying "you are a bad person." And I, I think what you said about focusing on behavior is, it's a, it's a pretty subtle adjustment from talking about "the person" to "the behavior." Yeah. But it, it helps avoid it being, it's a powerful adjustment to frame it around something that can be changed rather than something that feels like immutable. [16:48] -**Elizabeth Woolf:** It's part of you, it's like intrinsicly part of you. Yeah. [00:16:51] +**Elizabeth Woolf:** It's part of you, it's like intrinsicly part of you. Yeah. [16:51] -**Carl Vitullo:** Right. It's external. [00:16:51] +**Carl Vitullo:** Right. It's external. [16:51] -It's not, yeah. It's not hard to change something that you do, but it is psychologically, you know, almost insurmountable to change a part of your, who you are. [00:17:00] +It's not, yeah. It's not hard to change something that you do, but it is psychologically, you know, almost insurmountable to change a part of your, who you are. [17:00] -**Elizabeth Woolf:** Definitely. Yeah. And powerful for your brain to think, like, let's say you're about to get feedback, which also is hard, but totally learnable and like, you wanna assume that the person who's giving you the feedback, they're coming from a place of, I wanna help this person grow. [00:17:14] +**Elizabeth Woolf:** Definitely. Yeah. And powerful for your brain to think, like, let's say you're about to get feedback, which also is hard, but totally learnable and like, you wanna assume that the person who's giving you the feedback, they're coming from a place of, I wanna help this person grow. [17:14] -I want them, I wanna help them be badass at their job. Oh, I'm gonna tell you this cause I'm invested in you. And then if you're giving it like, you have to assume like the actions that someone took, they had best intent. It's just you're now here to help them because if they're coming, it's coming from that point of malice or like anger again, emotions when they're heightened. [00:17:32] +I want them, I wanna help them be badass at their job. Oh, I'm gonna tell you this cause I'm invested in you. And then if you're giving it like, you have to assume like the actions that someone took, they had best intent. It's just you're now here to help them because if they're coming, it's coming from that point of malice or like anger again, emotions when they're heightened. [17:32] -Right. It's just not gonna be constructive. You're gonna just swirl and yeah, you'll turn into like melted ice cream at that point, but just su assume positive intent helps a lot too. Right, [00:17:43] +Right. It's just not gonna be constructive. You're gonna just swirl and yeah, you'll turn into like melted ice cream at that point, but just su assume positive intent helps a lot too. Right, [17:43] ## Separating tone and content -**Carl Vitullo:** right. Yeah. So is, can you think of an example quickly just off the top of your head of like, two comments, one about a person and one about a behavior? Like, you know, what, given one situation, how could that be described in each? [00:17:56] +**Carl Vitullo:** right. Yeah. So is, can you think of an example quickly just off the top of your head of like, two comments, one about a person and one about a behavior? Like, you know, what, given one situation, how could that be described in each? [17:56] -**Elizabeth Woolf:** Yeah, I had one that I can actually break down for you that I, okay. For one of my clients, they, they received this as feedback and I'm gonna tell you now, they're also a toxic teammate, but they still got this feedback. [00:18:07] +**Elizabeth Woolf:** Yeah, I had one that I can actually break down for you that I, okay. For one of my clients, they, they received this as feedback and I'm gonna tell you now, they're also a toxic teammate, but they still got this feedback. [18:07] -Ah, it's, "your code reviews are terrible. You're a broken link on the team." And, oof. Getting that is just a, I'm not it, it's a smack in the face. Like I'm not, I'm not gonna sugarcoat that. [00:18:19] +Ah, it's, "your code reviews are terrible. You're a broken link on the team." And, oof. Getting that is just a, I'm not it, it's a smack in the face. Like I'm not, I'm not gonna sugarcoat that. [18:19] -**Carl Vitullo:** Yeah. [00:18:19] +**Carl Vitullo:** Yeah. [18:19] -**Elizabeth Woolf:** So when they receive this feedback, something that I wanted to walk them through is, you are, one, you're not the feedback, you are not. The feedback is supposed to be there for a purpose, to help you grow. [00:18:29] +**Elizabeth Woolf:** So when they receive this feedback, something that I wanted to walk them through is, you are, one, you're not the feedback, you are not. The feedback is supposed to be there for a purpose, to help you grow. [18:29] -The second thing is that's a tone thing and a content thing. And I'm gonna explain that so that you guys, whenever you get hard feedback, just listen to this. You wanna separate tone from content. So the tone of this, it's negative and it is rude. The content is the code reviews. So take the code reviews out and then turn that in on yourself and say like, how are my code reviews? [00:18:51] +The second thing is that's a tone thing and a content thing. And I'm gonna explain that so that you guys, whenever you get hard feedback, just listen to this. You wanna separate tone from content. So the tone of this, it's negative and it is rude. The content is the code reviews. So take the code reviews out and then turn that in on yourself and say like, how are my code reviews? [18:51] -And normally there's merit in that part, but the rest of it was just hard to receive. And yeah, so one of those things is you have to separate the two and also realize that a lot of people aren't trained on the skill. And that's an example of someone just not trained at all on the skill and then receiving it. [00:19:07] +And normally there's merit in that part, but the rest of it was just hard to receive. And yeah, so one of those things is you have to separate the two and also realize that a lot of people aren't trained on the skill. And that's an example of someone just not trained at all on the skill and then receiving it. [19:07] -Yeah. [00:19:08] +Yeah. [19:08] -**Carl Vitullo:** Yeah. You are a broken link on the team is even if it's, [00:19:11] +**Carl Vitullo:** Yeah. You are a broken link on the team is even if it's, [19:11] -**Elizabeth Woolf:** and it was sent over Slack. Yeah. So like, and that's the other thing is like you, if you send it virtually, it's like, oh, I'm not there. I'm not the person saying it. It's now through someone, it's new, through another medium, but it's all the same, holds the same weight. [00:19:23] +**Elizabeth Woolf:** and it was sent over Slack. Yeah. So like, and that's the other thing is like you, if you send it virtually, it's like, oh, I'm not there. I'm not the person saying it. It's now through someone, it's new, through another medium, but it's all the same, holds the same weight. [19:23] -It's still a perspective. So yeah, I just would encourage people, cuz you're gonna come across harder individuals in your life who've never been trained on it. So just separate the tone from the content. What is the content? Pull it out. Tone, throw it away. [00:19:36] +It's still a perspective. So yeah, I just would encourage people, cuz you're gonna come across harder individuals in your life who've never been trained on it. So just separate the tone from the content. What is the content? Pull it out. Tone, throw it away. [19:36] -**Carl Vitullo:** Sure. Right. Okay. So "you're a broken link on the team, your code reviews are terrible." [00:19:43] +**Carl Vitullo:** Sure. Right. Okay. So "you're a broken link on the team, your code reviews are terrible." [19:43] -What would be, what do you think would be a more effective way to deliver that feedback? So, okay, receiving the feedback, you ignore the name calling. Just block that out if you want to have a constructive conversation. "Oh, I'm sorry. What about my code reviews are terrible." Yeah, but, but let's, let's flip that and if you're the person giving that feedback, how could it have been done more constructively? [00:20:05] +What would be, what do you think would be a more effective way to deliver that feedback? So, okay, receiving the feedback, you ignore the name calling. Just block that out if you want to have a constructive conversation. "Oh, I'm sorry. What about my code reviews are terrible." Yeah, but, but let's, let's flip that and if you're the person giving that feedback, how could it have been done more constructively? [20:05] -**Elizabeth Woolf:** Yeah. So if you're the person giving the feedback, I think to help everyone practice the skill and we can go through the behavior outcome, those two parts. So sure. The behavior is, "what specifically did you want the employee to do?" You wanted them to conduct a much better code review, period. But I wouldn't say it that way. [00:20:23] +**Elizabeth Woolf:** Yeah. So if you're the person giving the feedback, I think to help everyone practice the skill and we can go through the behavior outcome, those two parts. So sure. The behavior is, "what specifically did you want the employee to do?" You wanted them to conduct a much better code review, period. But I wouldn't say it that way. [20:23] -I would want you to be specific. So can you point to a part in the code? Like can you point to a time, can you point to an instance? So that's the behavior, make it specific. And the outcome. "Wait, so you did this thing, but what happened because of that?" There has to be, it's almost like a snowball effect because you did this, this has now happened. [00:20:43] +I would want you to be specific. So can you point to a part in the code? Like can you point to a time, can you point to an instance? So that's the behavior, make it specific. And the outcome. "Wait, so you did this thing, but what happened because of that?" There has to be, it's almost like a snowball effect because you did this, this has now happened. [20:43] -Again, both are external to the person, I did not talk about anything that had to do with who they are as a human being. But I talked about the behavior. So what outcome did a bad code review cause? Did you break production? I've seen it happen. [00:20:57] +Again, both are external to the person, I did not talk about anything that had to do with who they are as a human being. But I talked about the behavior. So what outcome did a bad code review cause? Did you break production? I've seen it happen. [20:57] -**Carl Vitullo:** Yeah. Right. I can, I can think of a couple categories of bad code reviews, you know, so like, let's say this person is delivering 50 code style nit comments, but then misses, you know, the, the obvious huge bug in the logic. [00:21:10] +**Carl Vitullo:** Yeah. Right. I can, I can think of a couple categories of bad code reviews, you know, so like, let's say this person is delivering 50 code style nit comments, but then misses, you know, the, the obvious huge bug in the logic. [21:10] -**Elizabeth Woolf:** Fired. Oh, gone. [00:21:12] +**Elizabeth Woolf:** Fired. Oh, gone. [21:12] -**Carl Vitullo:** Sure. Or, you know, or, or you know, the opposite. They just "looks good to me" on everything without thinking about it. Yeah. So, you know, like those could be like, both of those could be, could constitute terrible code reviews. Yeah. But you know, it's, that's not actionable feedback. It, it requires making that secondary connection to this is terrible. [00:21:30] +**Carl Vitullo:** Sure. Or, you know, or, or you know, the opposite. They just "looks good to me" on everything without thinking about it. Yeah. So, you know, like those could be like, both of those could be, could constitute terrible code reviews. Yeah. But you know, it's, that's not actionable feedback. It, it requires making that secondary connection to this is terrible. [21:30] -I know the specific behaviors I've been doing are X, Y, Z, so. [00:21:33] +I know the specific behaviors I've been doing are X, Y, Z, so. [21:33] -**Elizabeth Woolf:** Mm-hmm. [00:21:34] +**Elizabeth Woolf:** Mm-hmm. [21:34] -**Carl Vitullo:** Sure. So yeah, that's the content of feedback. [00:21:38] +**Carl Vitullo:** Sure. So yeah, that's the content of feedback. [21:38] -**Elizabeth Woolf:** Yeah. And something that helps. Hopefully help all of you is, since all this stuff can sometimes be brand new, it was brand new to me in my career. If you start early with your manager, with a mentor, with anyone really, and you just create a place that's, I call it like permission for discussion. [00:21:56] +**Elizabeth Woolf:** Yeah. And something that helps. Hopefully help all of you is, since all this stuff can sometimes be brand new, it was brand new to me in my career. If you start early with your manager, with a mentor, with anyone really, and you just create a place that's, I call it like permission for discussion. [21:56] -So if you created as part of your norms, you created a place where it can exist and it's not uncomfortable, then it's just a place that it can actually, it's a safe space. We're gonna call it that. It's a safe space. So I just encourage all of you create permission for discussion. Ask people how do you like to receive feedback. [00:22:13] +So if you created as part of your norms, you created a place where it can exist and it's not uncomfortable, then it's just a place that it can actually, it's a safe space. We're gonna call it that. It's a safe space. So I just encourage all of you create permission for discussion. Ask people how do you like to receive feedback. [22:13] -Yeah, some people want an email 72 hours in advance if it's gonna be a hard one. So they can process it and then you can meet about it. Some people want it the same day, they want to get it done and they wanna go think about it and everyone's gonna be different. So you gotta respect that. And you also have to know what it is if this is a relationship that you want to both give and receive feedback from. [00:22:32] +Yeah, some people want an email 72 hours in advance if it's gonna be a hard one. So they can process it and then you can meet about it. Some people want it the same day, they want to get it done and they wanna go think about it and everyone's gonna be different. So you gotta respect that. And you also have to know what it is if this is a relationship that you want to both give and receive feedback from. [22:32] -So that helps a lot for just, again, priming our emotions, cuz they're real and they're just normal. [00:22:37] +So that helps a lot for just, again, priming our emotions, cuz they're real and they're just normal. [22:37] -**Carl Vitullo:** Yeah. Priming emotions. I think that's a, that's a good way to say it. Yeah. [00:22:41] +**Carl Vitullo:** Yeah. Priming emotions. I think that's a, that's a good way to say it. Yeah. [22:41] -**Elizabeth Woolf:** Yeah. I will say like, I feel like my mom is like a wise owl, and she has just, I feel like you could tell her anything and she could be totally realistic about her emotions, but I, on the other hand, like I've gotten news at work and like I just take a step. [00:22:54] +**Elizabeth Woolf:** Yeah. I will say like, I feel like my mom is like a wise owl, and she has just, I feel like you could tell her anything and she could be totally realistic about her emotions, but I, on the other hand, like I've gotten news at work and like I just take a step. [22:54] -I have to take a step back just because it's been like I've been turned down for a promotion before that, I just was like, so, I mean, I'm not gonna lie, I worked my ass off for it and I had all the little cards lined up and it didn't happen and my emotions got in the way of my work. So just learning how to take a step back I think helps a lot. [00:23:11] +I have to take a step back just because it's been like I've been turned down for a promotion before that, I just was like, so, I mean, I'm not gonna lie, I worked my ass off for it and I had all the little cards lined up and it didn't happen and my emotions got in the way of my work. So just learning how to take a step back I think helps a lot. [23:11] -Especially when you feel like it's an attack on you. [00:23:13] +Especially when you feel like it's an attack on you. [23:13] -**Carl Vitullo:** Yeah, definitely. Work can be so personal because you put so much time and energy. [00:23:19] +**Carl Vitullo:** Yeah, definitely. Work can be so personal because you put so much time and energy. [23:19] -Yeah. [00:23:19] +Yeah. [23:19] -You know, energy in the form of actually doing the work, but also I think emotional energy of getting yourself hyped up for it and connecting it to something that is meaningful for you. Yeah. Being aware of your emotional experience, I think, yeah. That's really important. [00:23:35] +You know, energy in the form of actually doing the work, but also I think emotional energy of getting yourself hyped up for it and connecting it to something that is meaningful for you. Yeah. Being aware of your emotional experience, I think, yeah. That's really important. [23:35] -**Elizabeth Woolf:** Yeah. And you want, it's only human. You want your work to have meaning. Like you wanna wake up and know that if you're working those eight hours, like you did something, you created change. And that's perfectly allowed. And so feeling things at work also so perfectly allowed. [00:23:48] +**Elizabeth Woolf:** Yeah. And you want, it's only human. You want your work to have meaning. Like you wanna wake up and know that if you're working those eight hours, like you did something, you created change. And that's perfectly allowed. And so feeling things at work also so perfectly allowed. [23:48] -And if people don't give you that space, that's a red flag. Yeah, definitely. [00:23:51] +And if people don't give you that space, that's a red flag. Yeah, definitely. [23:51] ## Negotiations -**Carl Vitullo:** We also wanted to touch a little bit on negotiation. Do you have any tips [00:23:55] +**Carl Vitullo:** We also wanted to touch a little bit on negotiation. Do you have any tips [23:55] -for… [00:23:56] +for… [23:56] -**Elizabeth Woolf:** The fun one! I can tell you what not to do. [00:23:58] +**Elizabeth Woolf:** The fun one! I can tell you what not to do. [23:58] -**Carl Vitullo:** Okay. Okay. So I am, I, you know, say I have two years of experience as an engineer. Yeah. And I am switching jobs, and I get asked, what, what, "what's my expected salary?" [00:24:11] +**Carl Vitullo:** Okay. Okay. So I am, I, you know, say I have two years of experience as an engineer. Yeah. And I am switching jobs, and I get asked, what, what, "what's my expected salary?" [24:11] -**Elizabeth Woolf:** Nice. Uh, don't answer. [00:24:13] +**Elizabeth Woolf:** Nice. Uh, don't answer. [24:13] -**Carl Vitullo:** Don't answer. [00:24:14] +**Carl Vitullo:** Don't answer. [24:14] -**Elizabeth Woolf:** Not kidding. [00:24:15] +**Elizabeth Woolf:** Not kidding. [24:15] -**Carl Vitullo:** Why not? [00:24:16] +**Carl Vitullo:** Why not? [24:16] -**Elizabeth Woolf:** So when you, and again, these are, these are gonna be my tips. I've seen them work. And again, you might be given other tips that work, but these are the ones that I've seen work. And also I'm gonna, I can send you guys an article that was actually posted in this channel and it's transformed how I think about negotiations. [00:24:33] +**Elizabeth Woolf:** So when you, and again, these are, these are gonna be my tips. I've seen them work. And again, you might be given other tips that work, but these are the ones that I've seen work. And also I'm gonna, I can send you guys an article that was actually posted in this channel and it's transformed how I think about negotiations. [24:33] -So you are, you have two job offers and, okay. They've now asked you for, are we at the offer stage or are we at the, uh, interviewing stage? [00:24:42] +So you are, you have two job offers and, okay. They've now asked you for, are we at the offer stage or are we at the, uh, interviewing stage? [24:42] -**Carl Vitullo:** Let's start all the way back at interviewing. Yeah. Let's you know, let's start from that first contact of, "what do you expect?" [00:24:48] +**Carl Vitullo:** Let's start all the way back at interviewing. Yeah. Let's you know, let's start from that first contact of, "what do you expect?" [24:48] -**Elizabeth Woolf:** Okay. So in the very beginning, and they ask you for the range, you gotta turn it back on them. [00:24:54] +**Elizabeth Woolf:** Okay. So in the very beginning, and they ask you for the range, you gotta turn it back on them. [24:54] -And I know that sounds weird and funky and odd, but the moment that you give a number, you've either completely limited yourself or you've exceeded where they're willing to go. They need to tell you the range. And for anyone who is any company that's not comfortable telling me the range, I am not comfortable continuing to interview because it's my time and my effort and. [00:25:17] +And I know that sounds weird and funky and odd, but the moment that you give a number, you've either completely limited yourself or you've exceeded where they're willing to go. They need to tell you the range. And for anyone who is any company that's not comfortable telling me the range, I am not comfortable continuing to interview because it's my time and my effort and. [25:17] -I just think that salaries need to be talked about more transparently. Like in Washington now, it's a pay transparency law. Like you can't even post a job unless there's transparency around it. So like we're moving towards that. But if they don't give you a range red flag, and again, don't give them a number. Okay, I want you to read this article, I'm gonna send you guys cuz that's like the number one thing they stress. [00:25:36] +I just think that salaries need to be talked about more transparently. Like in Washington now, it's a pay transparency law. Like you can't even post a job unless there's transparency around it. So like we're moving towards that. But if they don't give you a range red flag, and again, don't give them a number. Okay, I want you to read this article, I'm gonna send you guys cuz that's like the number one thing they stress. [25:36] -And then the other thing that I had to learn, so I got my first job if I'm hot outta college, you're 21 years old, you think you're the, you know, the coolest thing to walk the earth. And they paid me less than an administrative assistant in the state of Washington, and I thought if I negotiated, I would lose the job. That's wrong. Like that is actually when you have your most power is once they offer you the job. [00:25:57] +And then the other thing that I had to learn, so I got my first job if I'm hot outta college, you're 21 years old, you think you're the, you know, the coolest thing to walk the earth. And they paid me less than an administrative assistant in the state of Washington, and I thought if I negotiated, I would lose the job. That's wrong. Like that is actually when you have your most power is once they offer you the job. [25:57] -We're taught, there's a stigma in America that if you negotiate, it's like this view of negotiation as you are now intrinsically poor. Like you're not grateful for what you have. I also had that like, beaten into all me and my friends because our parents were like, "no, you take that and you be grateful. It's a growing and learning experience." No. [00:26:15] +We're taught, there's a stigma in America that if you negotiate, it's like this view of negotiation as you are now intrinsically poor. Like you're not grateful for what you have. I also had that like, beaten into all me and my friends because our parents were like, "no, you take that and you be grateful. It's a growing and learning experience." No. [26:15] -There's something that I learned in that article, a hundred percent of your gross profit is now subject to that negotiation. So if you go through all those interviews and you're offered the job, take the negotiation seriously and make sure you negotiate. [00:26:28] +There's something that I learned in that article, a hundred percent of your gross profit is now subject to that negotiation. So if you go through all those interviews and you're offered the job, take the negotiation seriously and make sure you negotiate. [26:28] -So when you're sitting in that seat, something I would recommend if you're at the last interview and they've offered you the job, say you look forward to seeing the formal offer via email, because I cannot encourage enough doing the negotiation over email. It gives you time to mock up your words, make them look the way you want them to. Again, it gives you more power to not just be like talking off the cuff, which can be really hard. Negotiation is really hard. [00:26:53] +So when you're sitting in that seat, something I would recommend if you're at the last interview and they've offered you the job, say you look forward to seeing the formal offer via email, because I cannot encourage enough doing the negotiation over email. It gives you time to mock up your words, make them look the way you want them to. Again, it gives you more power to not just be like talking off the cuff, which can be really hard. Negotiation is really hard. [26:53] -Hopefully while you're going through this, you've done a lot of research, and I'm not talking about Glassdoor (laughs), like get your booty on LinkedIn and talk to people who have worked there, which I have found so helpful. Who have worked there and have chosen to leave. Why'd they leave? What were they paid? What was the culture like that made them want to go? Like what, what were those motivators? [00:27:16] +Hopefully while you're going through this, you've done a lot of research, and I'm not talking about Glassdoor (laughs), like get your booty on LinkedIn and talk to people who have worked there, which I have found so helpful. Who have worked there and have chosen to leave. Why'd they leave? What were they paid? What was the culture like that made them want to go? Like what, what were those motivators? [27:16] -And then I would also talk to someone who works there, who doesn't work on the team, who works with the team, cuz they'll probably be a lot more transparent about the team dynamics. And they also just have a different perspective. And once you have your range, I always encourage people just to go higher than you feel comfortable. [00:27:37] +And then I would also talk to someone who works there, who doesn't work on the team, who works with the team, cuz they'll probably be a lot more transparent about the team dynamics. And they also just have a different perspective. And once you have your range, I always encourage people just to go higher than you feel comfortable. [27:37] -Because the worst that happens is you land around, you land among the stars. I have a friend who negotiated going into the same job that I have, and he makes 40,000 more dollars than me. That's just the way it goes. So negotiate, negotiate, negotiate. [00:27:49] +Because the worst that happens is you land around, you land among the stars. I have a friend who negotiated going into the same job that I have, and he makes 40,000 more dollars than me. That's just the way it goes. So negotiate, negotiate, negotiate. [27:49] -**Carl Vitullo:** Right. And is that, so you, you've referenced an article a couple times. [00:27:54] +**Carl Vitullo:** Right. And is that, so you, you've referenced an article a couple times. [27:54] -Yeah. Is that the Patrick Mackenzie, salary negotiations? [00:27:57] +Yeah. Is that the Patrick Mackenzie, salary negotiations? [27:57] -**Elizabeth Woolf:** Yeah, salary negotiation. Make more money, be more Valued. [00:28:00] +**Elizabeth Woolf:** Yeah, salary negotiation. Make more money, be more Valued. [28:00] -**Carl Vitullo:** I thought it might be that one. Yeah. That is such a classic. [00:28:04] +**Carl Vitullo:** I thought it might be that one. Yeah. That is such a classic. [28:04] -**Elizabeth Woolf:** It's such a classic. And he has like a greatest hits part of his website and like, this article alone is responsible for 9 million dollars. Like that's amazing. Yeah. That's amazing. [00:28:14] +**Elizabeth Woolf:** It's such a classic. And he has like a greatest hits part of his website and like, this article alone is responsible for 9 million dollars. Like that's amazing. Yeah. That's amazing. [28:14] -**Carl Vitullo:** Yeah, definitely. Okay, so more information is valuable going into a negotiation. Yeah. [00:28:22] +**Carl Vitullo:** Yeah, definitely. Okay, so more information is valuable going into a negotiation. Yeah. [28:22] -**Elizabeth Woolf:** Something that you could do is, so let's say you have all that information, you've researched the company, you know the job description really well. Now that you know those two things, especially the job description, I would like, I would use their words in everything you talk about. [00:28:36] +**Elizabeth Woolf:** Something that you could do is, so let's say you have all that information, you've researched the company, you know the job description really well. Now that you know those two things, especially the job description, I would like, I would use their words in everything you talk about. [28:36] -People love to hear what their voice has said. It's a large part of validation. It's just a large part of, "oh, they get it. They get this role. They'd be great in this role." Like take your language and make it theirs. Gotcha. Strong point for leverage. [00:28:50] +People love to hear what their voice has said. It's a large part of validation. It's just a large part of, "oh, they get it. They get this role. They'd be great in this role." Like take your language and make it theirs. Gotcha. Strong point for leverage. [28:50] -**Carl Vitullo:** Interesting. So this information gathering you've talked about. [00:28:53] +**Carl Vitullo:** Interesting. So this information gathering you've talked about. [28:53] -**Elizabeth Woolf:** Yeah. [00:28:54] +**Elizabeth Woolf:** Yeah. [28:54] -**Carl Vitullo:** That's a lot of cold contact on LinkedIn. [00:28:56] +**Carl Vitullo:** That's a lot of cold contact on LinkedIn. [28:56] -**Elizabeth Woolf:** Yeah. [00:28:56] +**Elizabeth Woolf:** Yeah. [28:56] -**Carl Vitullo:** Especially on like a smaller, like I, most of the companies I've worked for are fewer than 50 people, teams I'm joining are like, less than five. [00:29:03] +**Carl Vitullo:** Especially on like a smaller, like I, most of the companies I've worked for are fewer than 50 people, teams I'm joining are like, less than five. [29:03] -**Elizabeth Woolf:** Yeah. [00:29:03] +**Elizabeth Woolf:** Yeah. [29:03] ## What if you can't connect with anyone at the company? -**Carl Vitullo:** So like let's say I'm not able to make any contact. I give my shot, I don't get anything else. I still have to respond to this email. What then? [00:29:11] +**Carl Vitullo:** So like let's say I'm not able to make any contact. I give my shot, I don't get anything else. I still have to respond to this email. What then? [29:11] -**Elizabeth Woolf:** What then is, you are now gonna turn it back around onto your life. So know what, what do you need in the next 10 to 15 years? Because this negotiation is going to help that. Again, we're talking about your literal gross profit you're gonna bring into your own life. If you need to buy a home, if you are supporting a family, if you wanna get that dog. [00:29:31] +**Elizabeth Woolf:** What then is, you are now gonna turn it back around onto your life. So know what, what do you need in the next 10 to 15 years? Because this negotiation is going to help that. Again, we're talking about your literal gross profit you're gonna bring into your own life. If you need to buy a home, if you are supporting a family, if you wanna get that dog. [29:31] -If you just wanna have really cool tech equipment or if you wanna be able to travel, like do the math on what you can do to live comfortably and do not be willing to give that up. I think for our, my first two jobs, I gave it up and I regret it. I settled and I just, I don't encourage that for people once you know your value. [00:29:51] +If you just wanna have really cool tech equipment or if you wanna be able to travel, like do the math on what you can do to live comfortably and do not be willing to give that up. I think for our, my first two jobs, I gave it up and I regret it. I settled and I just, I don't encourage that for people once you know your value. [29:51] -**Carl Vitullo:** Yeah, for sure. [00:29:52] +**Carl Vitullo:** Yeah, for sure. [29:52] -Yeah. I think that's, I think that recommending that people do the information gathering in their own lives. Yeah. Take stock of what's valuable to them. What do they, you know, what would they use that money for? Yeah. And how much would be better? Yeah. [00:30:06] +Yeah. I think that's, I think that recommending that people do the information gathering in their own lives. Yeah. Take stock of what's valuable to them. What do they, you know, what would they use that money for? Yeah. And how much would be better? Yeah. [30:06] -**Elizabeth Woolf:** Some people— [00:30:07] +**Elizabeth Woolf:** Some people— [30:07] -**Carl Vitullo:** I think that also— [00:30:07] +**Carl Vitullo:** I think that also— [30:07] -**Elizabeth Woolf:** make boatloads, but don't use the boatloads. [00:30:09] +**Elizabeth Woolf:** make boatloads, but don't use the boatloads. [30:09] -Like some people make boatloads and are so unhappy and some people don't make boatloads and they are. Some of the happiest people I've ever met because they find value and merit in their work and they're also work on a team that really respects them. There's so much value in that too. [00:30:25] +Like some people make boatloads and are so unhappy and some people don't make boatloads and they are. Some of the happiest people I've ever met because they find value and merit in their work and they're also work on a team that really respects them. There's so much value in that too. [30:25] ## Different dimensions of value to negotiate -**Carl Vitullo:** Yeah. What are some different dimensions of value that you could negotiate on in a, in this situation? [00:30:32] +**Carl Vitullo:** Yeah. What are some different dimensions of value that you could negotiate on in a, in this situation? [30:32] -**Elizabeth Woolf:** Great question. So my best friend did not get exactly what she wanted in terms of pay. So she negotiated stock options and more PTO. I know of some people who have families have negotiated different types of benefits just for themselves in terms of coverage, life insurance. Mm-hmm. So I think those are the two. [00:30:51] +**Elizabeth Woolf:** Great question. So my best friend did not get exactly what she wanted in terms of pay. So she negotiated stock options and more PTO. I know of some people who have families have negotiated different types of benefits just for themselves in terms of coverage, life insurance. Mm-hmm. So I think those are the two. [30:51] -Like, so if it's not gonna be the dollar amount, what is the next best thing? Especially if you, you're like, "oh my God, I love the company." Like "this is the role I need, this is the kind of growth I wanna have in my arsenal of experience." Then it's what else is gonna be valuable for you? Because your counterparty, whoever that is, whatever company, they just don't share that same model of negotiation. [00:31:11] +Like, so if it's not gonna be the dollar amount, what is the next best thing? Especially if you, you're like, "oh my God, I love the company." Like "this is the role I need, this is the kind of growth I wanna have in my arsenal of experience." Then it's what else is gonna be valuable for you? Because your counterparty, whoever that is, whatever company, they just don't share that same model of negotiation. [31:11] -Like 10,000 more dollars normally is a drop in the water. So that's why I encourage people to negotiate and I encourage you to know like, what do you need in those 10 to 15 more years? What do you need right now to be super happy? It's always gonna change, don't get me wrong, but like once you're in the company, making those like hoops and jumps of getting more pay is gonna be much harder. [00:31:32] +Like 10,000 more dollars normally is a drop in the water. So that's why I encourage people to negotiate and I encourage you to know like, what do you need in those 10 to 15 more years? What do you need right now to be super happy? It's always gonna change, don't get me wrong, but like once you're in the company, making those like hoops and jumps of getting more pay is gonna be much harder. [31:32] -**Carl Vitullo:** Definitely. Yeah. And even if you change companies, it's rare to take a pay cut. Companies, once you have a salary, that tends to be the floor. Yeah. For any similar role going forward. So it, it really, yeah. I think thinking of it over 10 or 15 years is absolutely correct, even if you don't plan on staying with that company for 10 years. [00:31:52] +**Carl Vitullo:** Definitely. Yeah. And even if you change companies, it's rare to take a pay cut. Companies, once you have a salary, that tends to be the floor. Yeah. For any similar role going forward. So it, it really, yeah. I think thinking of it over 10 or 15 years is absolutely correct, even if you don't plan on staying with that company for 10 years. [31:52] -Yeah. Because, the next job will index off of your current salary. Exactly. Whether you, or even if you don't share that number, they'll base it off similar roles. So, you know, you can at least be a data point for higher compensation in there. [00:32:05] +Yeah. Because, the next job will index off of your current salary. Exactly. Whether you, or even if you don't share that number, they'll base it off similar roles. So, you know, you can at least be a data point for higher compensation in there. [32:05] -**Elizabeth Woolf:** Yeah, I, and I would read the article cuz he gives you so many different scenarios of where they're gonna ask you what your previous pay was and he gives you the literal words to say, to be like, no, I wa I wanna know the range. [00:32:20] +**Elizabeth Woolf:** Yeah, I, and I would read the article cuz he gives you so many different scenarios of where they're gonna ask you what your previous pay was and he gives you the literal words to say, to be like, no, I wa I wanna know the range. [32:20] -Because if the range isn't where you need to be, then that's not fair to your time. It's not fair to theirs either. So you can call it a wash. Also a great learning experience. Cause now you just know, [00:32:29] +Because if the range isn't where you need to be, then that's not fair to your time. It's not fair to theirs either. So you can call it a wash. Also a great learning experience. Cause now you just know, [32:29] -**Carl Vitullo:** right, yeah, I think that's, I think that's very true. It's, I feel like it's one of those, you know, maybe going back to the, existing in a social environment, a social context, like being unwilling to share that information, I think goes, it speaks to a level of guardedness and, and maybe even, you know, it's… [00:32:48] +**Carl Vitullo:** right, yeah, I think that's, I think that's very true. It's, I feel like it's one of those, you know, maybe going back to the, existing in a social environment, a social context, like being unwilling to share that information, I think goes, it speaks to a level of guardedness and, and maybe even, you know, it's… [32:48] -The most likely motivators I can think for not, for being aggressive about protecting the salary range for a job, you know, not sharing it, and, secondarily, aggressively pursuing the candidate sharing their range first. Like the only interest I can really think of for both of the, for pursuing both of those lines of action is trying to get the candidate to undersell themselves. [00:33:11] +The most likely motivators I can think for not, for being aggressive about protecting the salary range for a job, you know, not sharing it, and, secondarily, aggressively pursuing the candidate sharing their range first. Like the only interest I can really think of for both of the, for pursuing both of those lines of action is trying to get the candidate to undersell themselves. [33:11] -It's saying, we know the range is up here, if we do these things, we think we can get at the very bottom of that. [00:33:17] +It's saying, we know the range is up here, if we do these things, we think we can get at the very bottom of that. [33:17] -**Elizabeth Woolf:** Yeah. And I've talked to leaders who, like, people have given their number that they want and it's significantly lower than the range, and they take them on because they just, they're happy. They made who's happy, they made a great business deal. [00:33:31] +**Elizabeth Woolf:** Yeah. And I've talked to leaders who, like, people have given their number that they want and it's significantly lower than the range, and they take them on because they just, they're happy. They made who's happy, they made a great business deal. [33:31] -They just got a wonderful employee who didn't know what the range was, said, what they're worth and like, that's my just greatest fear is I wouldn't want that for someone. And so that's why hold that so close to your chest until you have like a pretty good understanding of what might the range be. Yeah, definitely. [00:33:47] +They just got a wonderful employee who didn't know what the range was, said, what they're worth and like, that's my just greatest fear is I wouldn't want that for someone. And so that's why hold that so close to your chest until you have like a pretty good understanding of what might the range be. Yeah, definitely. [33:47] -And you don't owe it to them. There's no (laughs), like, there's no script in the world where like you, and if there is, that's shady. I'm gonna say that right now. But you just, you don't owe that to them. That can also be your private information. [00:34:02] +And you don't owe it to them. There's no (laughs), like, there's no script in the world where like you, and if there is, that's shady. I'm gonna say that right now. But you just, you don't owe that to them. That can also be your private information. [34:02] ## Information asymmetry in negotiating -**Carl Vitullo:** Yeah, most definitely. Yeah. I, I think that goes back to something that I have heard it spoken about in salary negotiations. [00:34:09] +**Carl Vitullo:** Yeah, most definitely. Yeah. I, I think that goes back to something that I have heard it spoken about in salary negotiations. [34:09] -There is so much information asymmetry. I actually, yeah, no, that's something that Patrick McKenzie talks about in his, in his salary negotiation blog post, is you are negotiating with someone who is probably gonna negoti, [00:34:23] +There is so much information asymmetry. I actually, yeah, no, that's something that Patrick McKenzie talks about in his, in his salary negotiation blog post, is you are negotiating with someone who is probably gonna negoti, [34:23] -you know, let's say you're, you're, you're being recruited by a reasonably large company, 500 people. They have a professional recruiter staff. Like they're going to, they are probably going to negotiate offers several times a week. Yeah. [00:34:38] +you know, let's say you're, you're, you're being recruited by a reasonably large company, 500 people. They have a professional recruiter staff. Like they're going to, they are probably going to negotiate offers several times a week. Yeah. [34:38] -**Elizabeth Woolf:** Oh, they're good at it too. Whereas, yeah, [00:34:39] +**Elizabeth Woolf:** Oh, they're good at it too. Whereas, yeah, [34:39] -**Carl Vitullo:** they're good at it. Right? They're practiced at it. Yeah. Whereas [00:34:42] +**Carl Vitullo:** they're good at it. Right? They're practiced at it. Yeah. Whereas [34:42] -**Elizabeth Woolf:** we do it like once every three to four years maybe. [00:34:45] +**Elizabeth Woolf:** we do it like once every three to four years maybe. [34:45] -**Carl Vitullo:** Right. I have done it. [00:34:47] +**Carl Vitullo:** Right. I have done it. [34:47] -I have had more opportunities than most to do it because I've job hopped a lot. I've had probably 10 jobs in my 10 years as an engineer, and that's still, you know, that's only 10. These distinct instances. That's like two months as a recruiter over 10 years as an engineer. Yeah. Yeah. Absolutely. [00:35:02] +I have had more opportunities than most to do it because I've job hopped a lot. I've had probably 10 jobs in my 10 years as an engineer, and that's still, you know, that's only 10. These distinct instances. That's like two months as a recruiter over 10 years as an engineer. Yeah. Yeah. Absolutely. [35:02] -And I'll say, I'm a terrible negotiator! I have learned this over many years in many opportunities. I do not take the opportunities presented to me. [00:35:09] +And I'll say, I'm a terrible negotiator! I have learned this over many years in many opportunities. I do not take the opportunities presented to me. [35:09] -**Elizabeth Woolf:** We're born terrible negotiators. We're not. Yeah. You don't go to elementary school and you're like, "all right, kids, sit down. We're gonna learn some" — "to drive a hard bargain." Yeah. We're gonna learn some good stuff today. [00:35:19] +**Elizabeth Woolf:** We're born terrible negotiators. We're not. Yeah. You don't go to elementary school and you're like, "all right, kids, sit down. We're gonna learn some" — "to drive a hard bargain." Yeah. We're gonna learn some good stuff today. [35:19] -It's not normal, but like again, I'm gonna stress this till the cows come home. Like it's learned and you can learn it and you can be good at it. I would, um, So my brother, he sat down with an engineering manager or an engineering leader cuz he was going for engineering jobs and he negotiated with them fake setting. [00:35:38] +It's not normal, but like again, I'm gonna stress this till the cows come home. Like it's learned and you can learn it and you can be good at it. I would, um, So my brother, he sat down with an engineering manager or an engineering leader cuz he was going for engineering jobs and he negotiated with them fake setting. [35:38] -Again, nothing was really on the line, but the manager who's the one normally offering the job has all the context of all the jobs they've offered so they can easily like snap back or throw you off your rails and like you can practice those different situations of how to negotiate what you're worth. [00:35:54] +Again, nothing was really on the line, but the manager who's the one normally offering the job has all the context of all the jobs they've offered so they can easily like snap back or throw you off your rails and like you can practice those different situations of how to negotiate what you're worth. [35:54] -So I would encourage find someone in your life you could practice that with. And even if it's like a friend, give 'em a script like, get yourself comfortable. And again, that's why I say if you can get it to email, you can get all the feedback in the world you want on it. Cuz now it's written word. [00:36:08] +So I would encourage find someone in your life you could practice that with. And even if it's like a friend, give 'em a script like, get yourself comfortable. And again, that's why I say if you can get it to email, you can get all the feedback in the world you want on it. Cuz now it's written word. [36:08] -**Carl Vitullo:** Right? Right. Being able to take an hour to solicit feedback from a couple of people. Yeah. Total game changer. [00:36:15] +**Carl Vitullo:** Right? Right. Being able to take an hour to solicit feedback from a couple of people. Yeah. Total game changer. [36:15] -**Elizabeth Woolf:** It is. (whispers) I love feedback. [00:36:17] +**Elizabeth Woolf:** It is. (whispers) I love feedback. [36:17] ## Finding and knowing your worth -**Carl Vitullo:** I guess, so you touched on a little bit, knowing your range, knowing your worth. That is so hard to do early in your career. How, how would, what advice would you give to people who are at that stage where they, you know, maybe have some idea, they've read things online, they have an idea of salary range for engineers, but how do they determine where they are on that scale? [00:36:41] +**Carl Vitullo:** I guess, so you touched on a little bit, knowing your range, knowing your worth. That is so hard to do early in your career. How, how would, what advice would you give to people who are at that stage where they, you know, maybe have some idea, they've read things online, they have an idea of salary range for engineers, but how do they determine where they are on that scale? [36:41] -**Elizabeth Woolf:** I'd say it's a lot of knowing. Okay. You can think of it this way. What do people come to you for questions about? Hmm. All the time. That means that is worth that you hold that others don't. So that's a really great thing. Sure. I'd also say people who are passionate about something, you can pay someone a gajillion dollars, but they don't have the passion for it. [00:37:03] +**Elizabeth Woolf:** I'd say it's a lot of knowing. Okay. You can think of it this way. What do people come to you for questions about? Hmm. All the time. That means that is worth that you hold that others don't. So that's a really great thing. Sure. I'd also say people who are passionate about something, you can pay someone a gajillion dollars, but they don't have the passion for it. [37:03] -You, it's just falling flat on their face. So what, like what do you Google search for? What do you, what books are you reading? Like what is something that you are just so like hungry for? Because that, you'll learn if there's hurdles, you'll learn them. And so those are just two big things of like, what do people naturally come to you, come to you for that's validating that you're good at it. [00:37:24] +You, it's just falling flat on their face. So what, like what do you Google search for? What do you, what books are you reading? Like what is something that you are just so like hungry for? Because that, you'll learn if there's hurdles, you'll learn them. And so those are just two big things of like, what do people naturally come to you, come to you for that's validating that you're good at it. [37:24] -It's an external validation. Then what are something that you are just like completely insatiable for? And those two things are huge value adds for who you are. [00:37:34] +It's an external validation. Then what are something that you are just like completely insatiable for? And those two things are huge value adds for who you are. [37:34] -**Carl Vitullo:** Yeah. Yeah. I think that's, I think that's a really good point is seeking some kind of relatively objective sort of feedback on what are your skills? [00:37:46] +**Carl Vitullo:** Yeah. Yeah. I think that's, I think that's a really good point is seeking some kind of relatively objective sort of feedback on what are your skills? [37:46] -**Elizabeth Woolf:** Oh yeah. [00:37:46] +**Elizabeth Woolf:** Oh yeah. [37:46] -**Carl Vitullo:** What you, what are, what are you good at? And. How good are you at it compared to your peers? [00:37:52] +**Carl Vitullo:** What you, what are, what are you good at? And. How good are you at it compared to your peers? [37:52] ## Value of a genuine mentor figure -**Elizabeth Woolf:** I had a fantastic mentor, her name was Janice, and she was working at my previous company with me and she gave me just an entire, it was like a four page note sheet about like what I'm good at, what roles I could look at. [00:38:05] +**Elizabeth Woolf:** I had a fantastic mentor, her name was Janice, and she was working at my previous company with me and she gave me just an entire, it was like a four page note sheet about like what I'm good at, what roles I could look at. [38:05] -Wow. And it just comes to my mind every time. And she like even linked, hyperlinked me to like 25 different jobs that I could apply to right now based on my skills. Like fine mentors like this. Cause they're, [00:38:17] +Wow. And it just comes to my mind every time. And she like even linked, hyperlinked me to like 25 different jobs that I could apply to right now based on my skills. Like fine mentors like this. Cause they're, [38:17] -**Carl Vitullo:** That is so validating. [00:38:18] +**Carl Vitullo:** That is so validating. [38:18] -**Elizabeth Woolf:** They're game changers. I know. But it was like, she also told me like, what do I need to work on? And then like also, what are you really good at right now that you could do? And I love that. Cause I was going for, I was two years into my life, or two years into my career, excuse me, not a two year old. And I'm going for like, I think I could be a director. And she's just like (laughs), " no, but here's what you're good at and here's where you could be." [00:38:43] +**Elizabeth Woolf:** They're game changers. I know. But it was like, she also told me like, what do I need to work on? And then like also, what are you really good at right now that you could do? And I love that. Cause I was going for, I was two years into my life, or two years into my career, excuse me, not a two year old. And I'm going for like, I think I could be a director. And she's just like (laughs), " no, but here's what you're good at and here's where you could be." [38:43] -So, yeah, finding those people, they're gems. Don't lose them. I still talk to her. The people who give it to you straight, they're fantastic. [00:38:51] +So, yeah, finding those people, they're gems. Don't lose them. I still talk to her. The people who give it to you straight, they're fantastic. [38:51] ## Finding a mentor -**Carl Vitullo:** Yeah. Yeah. That's, you know, I, let's chase that thought down. Yeah. So finding, finding a mentor. Oh, I think we get that. We get questions around that in the community pretty frequently. [00:39:02] +**Carl Vitullo:** Yeah. Yeah. That's, you know, I, let's chase that thought down. Yeah. So finding, finding a mentor. Oh, I think we get that. We get questions around that in the community pretty frequently. [39:02] -Mm-hmm. And I'll, I'll give my, so I have a bookmarked tweet from like eight years ago (laughter) where, cause somebody just said it so concisely, it said like, how to find a mentor. Point one, don't ask them to be a mentor. [00:39:16] +Mm-hmm. And I'll, I'll give my, so I have a bookmarked tweet from like eight years ago (laughter) where, cause somebody just said it so concisely, it said like, how to find a mentor. Point one, don't ask them to be a mentor. [39:16] -**Elizabeth Woolf:** (laughs) So true. [00:39:17] +**Elizabeth Woolf:** (laughs) So true. [39:17] -**Carl Vitullo:** Point two, ask them specific questions. Mm-hmm. And then follow up with the results. [00:39:22] +**Carl Vitullo:** Point two, ask them specific questions. Mm-hmm. And then follow up with the results. [39:22] -So just like, and that has been such, it's such my experience. Like I've never participated in a formal mentorship program. Like I have never been a mentor, a. Or a mentee through one of those things. But I have found people in my career where it's like, " I'm trying to do this thing. I think you have already done this in a way that I would like to learn from." Yeah. And then, and I, I guess just continuing to chase it down a little bit, like the specific questions, I think is such a challenging thing for a lot of people. [00:39:53] +So just like, and that has been such, it's such my experience. Like I've never participated in a formal mentorship program. Like I have never been a mentor, a. Or a mentee through one of those things. But I have found people in my career where it's like, " I'm trying to do this thing. I think you have already done this in a way that I would like to learn from." Yeah. And then, and I, I guess just continuing to chase it down a little bit, like the specific questions, I think is such a challenging thing for a lot of people. [39:53] -Like it's not enough to say like, "Hey, I'm trying to start my career. How can, how can I get my first job?" Yeah. Like, that is so broad. Like that take, that would take like an hour long monologue, what we're doing here. [00:40:03] +Like it's not enough to say like, "Hey, I'm trying to start my career. How can, how can I get my first job?" Yeah. Like, that is so broad. Like that take, that would take like an hour long monologue, what we're doing here. [40:03] ## Asking good questions to a mentor -**Elizabeth Woolf:** Again, like we can go back to those skills we talked about for feedback. Like, so the questions, yeah. If you make them specific, and this one's gonna sound ironic, make them selfish. So they were in your shoes once, they most likely navigated these same waters and were applying for jobs, were getting rejected, felt lost, felt no purpose. So ask them specifically, like, what did you do in this situation? [00:40:27] +**Elizabeth Woolf:** Again, like we can go back to those skills we talked about for feedback. Like, so the questions, yeah. If you make them specific, and this one's gonna sound ironic, make them selfish. So they were in your shoes once, they most likely navigated these same waters and were applying for jobs, were getting rejected, felt lost, felt no purpose. So ask them specifically, like, what did you do in this situation? [40:27] -And type out your experience that you're feeling right now, and then if they can respond to it and give you advice to that, they're a mentor. And mentors don't have, like, they, it's not like you're swapping titles. Like mentors can come in anything. Like I have people I admire, I have people who will never know that they're my mentor just cuz I've studied their careers. [00:40:46] +And type out your experience that you're feeling right now, and then if they can respond to it and give you advice to that, they're a mentor. And mentors don't have, like, they, it's not like you're swapping titles. Like mentors can come in anything. Like I have people I admire, I have people who will never know that they're my mentor just cuz I've studied their careers. [40:46] -So it can be, it doesn't have to be someone you physically talk to, to, although that tremendously helps. And so I'd make the questions just super specific and like selfishly about what you're going through and then you get guidance immediately just cuz it's now it's your own experience versus like, how would you do a job hunt? [00:41:05] +So it can be, it doesn't have to be someone you physically talk to, to, although that tremendously helps. And so I'd make the questions just super specific and like selfishly about what you're going through and then you get guidance immediately just cuz it's now it's your own experience versus like, how would you do a job hunt? [41:05] -**Carl Vitullo:** Yeah. Right. Because like, "how would you do a job hunt?" That's a very broad open-ended question. [00:41:10] +**Carl Vitullo:** Yeah. Right. Because like, "how would you do a job hunt?" That's a very broad open-ended question. [41:10] -**Elizabeth Woolf:** Mm-hmm. [00:41:10] +**Elizabeth Woolf:** Mm-hmm. [41:10] -**Carl Vitullo:** That even if they gave, you know, let's say they spent an hour writing an answer to it. It may not apply to your situation. [00:41:16] +**Carl Vitullo:** That even if they gave, you know, let's say they spent an hour writing an answer to it. It may not apply to your situation. [41:16] -**Elizabeth Woolf:** No. Yeah. [00:41:18] +**Elizabeth Woolf:** No. Yeah. [41:18] -**Carl Vitullo:** Uh, whereas anchoring it around your personal experience more could be like, "Hey, I've applied to 40 jobs and I haven't gotten any responses." [00:41:27] +**Carl Vitullo:** Uh, whereas anchoring it around your personal experience more could be like, "Hey, I've applied to 40 jobs and I haven't gotten any responses." [41:27] -**Elizabeth Woolf:** Yeah. [00:41:28] +**Elizabeth Woolf:** Yeah. [41:28] -**Carl Vitullo:** "What problem am I, am I, am I having, how do I get past this?" Yeah. Like, th that is, yeah. Those are two entirely different questions. [00:41:34] +**Carl Vitullo:** "What problem am I, am I, am I having, how do I get past this?" Yeah. Like, th that is, yeah. Those are two entirely different questions. [41:34] -**Elizabeth Woolf:** Definitely. And they can be more specific in their answer too. So you're getting the result that you need. And I'm, it's just the, it's the truth of human beings. Like, if you get them in a good place, like they're gonna love talking about themselves. [00:41:47] +**Elizabeth Woolf:** Definitely. And they can be more specific in their answer too. So you're getting the result that you need. And I'm, it's just the, it's the truth of human beings. Like, if you get them in a good place, like they're gonna love talking about themselves. [41:47] -Like it's some, it's, sometimes it's the easiest thing you can talk about is your own experience. Right. So I found more, I've never been turned down for an informational interview. Yes, they might have gotten pushed out, but not in my career. And I will say, these are people I have known or interacted with that makes it easier. [00:42:05] +Like it's some, it's, sometimes it's the easiest thing you can talk about is your own experience. Right. So I found more, I've never been turned down for an informational interview. Yes, they might have gotten pushed out, but not in my career. And I will say, these are people I have known or interacted with that makes it easier. [42:05] -The cold ask is always hard. Yeah. So, They're people that are around you that you admire, but I've never been turned down for it. I've also not, never learned something. So that even made any English sense. Yeah. I've always left with like one tiny nugget. You don't believe it at all, but it's just a compilation of nuggets. [00:42:22] +The cold ask is always hard. Yeah. So, They're people that are around you that you admire, but I've never been turned down for it. I've also not, never learned something. So that even made any English sense. Yeah. I've always left with like one tiny nugget. You don't believe it at all, but it's just a compilation of nuggets. [42:22] -**Carl Vitullo:** Yeah. Right. Life is just incremental improvement. Every 3% makes a difference. [00:42:27] +**Carl Vitullo:** Yeah. Right. Life is just incremental improvement. Every 3% makes a difference. [42:27] -**Elizabeth Woolf:** It does! Do the math on that. [00:42:29] +**Elizabeth Woolf:** It does! Do the math on that. [42:29] ## Mentors and genuine networking -**Carl Vitullo:** Yeah. Right. Yeah. I like your point about, I feel like it went very sort of incidentally, but your point about informational interviews from people you've interacted with and know in real life. [00:42:40] +**Carl Vitullo:** Yeah. Right. Yeah. I like your point about, I feel like it went very sort of incidentally, but your point about informational interviews from people you've interacted with and know in real life. [42:40] -Yeah. Or in, maybe not in real life, but know and have interacted with in a meaningful way. Yeah. I think that's, I think that's so important because like that's real networking, you know? Reaching out to a stranger and saying, "hello, I would like to learn from you. Please give me your knowledge." [00:42:54] +Yeah. Or in, maybe not in real life, but know and have interacted with in a meaningful way. Yeah. I think that's, I think that's so important because like that's real networking, you know? Reaching out to a stranger and saying, "hello, I would like to learn from you. Please give me your knowledge." [42:54] -**Elizabeth Woolf:** Like there's no, I, I think there's no tie. There's like, there's that chasm, like you're just like, why? [00:43:00] +**Elizabeth Woolf:** Like there's no, I, I think there's no tie. There's like, there's that chasm, like you're just like, why? [43:00] -**Carl Vitullo:** Why? Right. And I think this is a point that I've made before on, on another event, but I think that for a lot of experienced people, like their knowledge is in demand. Like there are totally many people who would love to know what they know. [00:43:12] +**Carl Vitullo:** Why? Right. And I think this is a point that I've made before on, on another event, but I think that for a lot of experienced people, like their knowledge is in demand. Like there are totally many people who would love to know what they know. [43:12] -Yeah. And I think in those situations there's a, you know, maybe even a, a subconscious measure of, is this person worth the effort of me going, providing the answer they want. [00:43:25] +Yeah. And I think in those situations there's a, you know, maybe even a, a subconscious measure of, is this person worth the effort of me going, providing the answer they want. [43:25] -**Elizabeth Woolf:** A hundred percent. Time is, time is the only thing you cannot get back. Like that is the one resource you cannot get back. It's more fragile than money ever will be. [00:43:33] +**Elizabeth Woolf:** A hundred percent. Time is, time is the only thing you cannot get back. Like that is the one resource you cannot get back. It's more fragile than money ever will be. [43:33] -So some people take that very seriously and sometimes it sucks to be on the other side of that. That's why having that tie or like I would say, so if you meet someone and they said something really cool or they've lived an experience that you just want to know about, ask in that moment because yeah, the connection was just made. [00:43:51] +So some people take that very seriously and sometimes it sucks to be on the other side of that. That's why having that tie or like I would say, so if you meet someone and they said something really cool or they've lived an experience that you just want to know about, ask in that moment because yeah, the connection was just made. [43:51] -And like, so ask as soon as you feel it. And if they say no, it's normally for a reason of like, busy, don't have time, or just like they're not doing that at the moment. And then, you know, but I find just monopolizing on that moment is so helpful for getting the information that you think is gonna help yourself. [00:44:08] +And like, so ask as soon as you feel it. And if they say no, it's normally for a reason of like, busy, don't have time, or just like they're not doing that at the moment. And then, you know, but I find just monopolizing on that moment is so helpful for getting the information that you think is gonna help yourself. [44:08] -Yeah. [00:44:08] +Yeah. [44:08] -**Carl Vitullo:** Yeah. I think that's absolutely correct. You gotta, you have to, oh, this feels like a, um, a bit of a catchphrase I've had of, it's a way of cultivating serendipity. Like, you know, it is, it is just sort of a magic moment that you couldn't have planned for, but by approaching a, a situation, by putting yourself in an environment where it's more likely that events like that will happen. Yeah, you can, you can take advantage of it. You can cultivate it. [00:44:36] +**Carl Vitullo:** Yeah. I think that's absolutely correct. You gotta, you have to, oh, this feels like a, um, a bit of a catchphrase I've had of, it's a way of cultivating serendipity. Like, you know, it is, it is just sort of a magic moment that you couldn't have planned for, but by approaching a, a situation, by putting yourself in an environment where it's more likely that events like that will happen. Yeah, you can, you can take advantage of it. You can cultivate it. [44:36] -**Elizabeth Woolf:** Definitely. Definitely. And again, putting the power back in your own shoes, right? Yeah, [00:44:42] +**Elizabeth Woolf:** Definitely. Definitely. And again, putting the power back in your own shoes, right? Yeah, [44:42] -**Carl Vitullo:** Definitely. Yeah. I, I, I want, I want to connect it to another, another. Thought in my head a little bit, how much of networking, how much of connecting with people is really just showing up. [00:44:51] +**Carl Vitullo:** Definitely. Yeah. I, I, I want, I want to connect it to another, another. Thought in my head a little bit, how much of networking, how much of connecting with people is really just showing up. [44:51] -Like the, the people who are met with the most skepticism when they make an ask, [00:44:56] +Like the, the people who are met with the most skepticism when they make an ask, [44:56] -**Elizabeth Woolf:** Yeah. [00:44:57] +**Elizabeth Woolf:** Yeah. [44:57] -**Carl Vitullo:** Are like the cold contacts. If you've never met or heard of someone and they show up out of the gate asking for something. Yeah. Like the default response is like defensiveness and just, and suspicion. Just like, who are you? [00:45:10] +**Carl Vitullo:** Are like the cold contacts. If you've never met or heard of someone and they show up out of the gate asking for something. Yeah. Like the default response is like defensiveness and just, and suspicion. Just like, who are you? [45:10] -Let me like, are you, yeah. Why are you asking for this? What, what's your motivation? Whereas if you can come at it from a warm, you've already met them, you've already spent time, they know you a little bit. They know your background and your motivation, then yeah. You can get a lot, you can get a warmer reception. [00:45:25] +Let me like, are you, yeah. Why are you asking for this? What, what's your motivation? Whereas if you can come at it from a warm, you've already met them, you've already spent time, they know you a little bit. They know your background and your motivation, then yeah. You can get a lot, you can get a warmer reception. [45:25] -**Elizabeth Woolf:** Mm-hmm. Most times, always. Yeah. [00:45:27] +**Elizabeth Woolf:** Mm-hmm. Most times, always. Yeah. [45:27] ## Networking effectively -**Carl Vitullo:** Yeah. You know, we, we hadn't, I, we hadn't like discussed this in advance, but I think networking is a, another big part of communication. Yeah. So it's, it's maybe a, before you start your first job as you're just trying to figure out how to get that first role, connecting with people in the field and yeah, understanding it. [00:45:44] +**Carl Vitullo:** Yeah. You know, we, we hadn't, I, we hadn't like discussed this in advance, but I think networking is a, another big part of communication. Yeah. So it's, it's maybe a, before you start your first job as you're just trying to figure out how to get that first role, connecting with people in the field and yeah, understanding it. [45:44] -**Elizabeth Woolf:** I'm not gonna lie, when I started my career networking, I mean sometimes I feel it now it feels gross. Like, it's like, why do I have to go out there and talk about myself to other people who are just talking about themselves? It sometimes it feels just like a very shallow pool. [00:45:58] +**Elizabeth Woolf:** I'm not gonna lie, when I started my career networking, I mean sometimes I feel it now it feels gross. Like, it's like, why do I have to go out there and talk about myself to other people who are just talking about themselves? It sometimes it feels just like a very shallow pool. [45:58] -But the ways I was able to change that is, I found events that, first and foremost, that benefited me. And something that really helps is if you go to like speaking events, cuz then you're not just talking about your lives, now you're talking about someone who went up there and talked about something cool, and then now it's basically free game to anyone. Cause now you all have that event in common. [00:46:22] +But the ways I was able to change that is, I found events that, first and foremost, that benefited me. And something that really helps is if you go to like speaking events, cuz then you're not just talking about your lives, now you're talking about someone who went up there and talked about something cool, and then now it's basically free game to anyone. Cause now you all have that event in common. [46:22] -So I would highly recommend base it around an event where you get to go learn something and then make connections from there. I've also been a bit of a freak for this, but anytime I've gone to those events, mosey your way up to the front and just say hi to the speaker and tell them one thing you learned. [00:46:39] +So I would highly recommend base it around an event where you get to go learn something and then make connections from there. I've also been a bit of a freak for this, but anytime I've gone to those events, mosey your way up to the front and just say hi to the speaker and tell them one thing you learned. [46:39] -Rarely as speakers do we get that opportunity to just hear what you learned. And that's also a really good connection point. They're on the stage for a reason. So that's something I would say try. It might take a few sessions. That's okay. Yeah. But transformational. [00:46:54] +Rarely as speakers do we get that opportunity to just hear what you learned. And that's also a really good connection point. They're on the stage for a reason. So that's something I would say try. It might take a few sessions. That's okay. Yeah. But transformational. [46:54] -**Carl Vitullo:** Talk about scary situations. [00:46:56] +**Carl Vitullo:** Talk about scary situations. [46:56] -**Elizabeth Woolf:** Yeah. Yeah (laughs) [00:46:57] +**Elizabeth Woolf:** Yeah. Yeah (laughs) [46:57] ## The power of showing up consistently -**Carl Vitullo:** Yeah, I like that a lot. I think, yeah, just going, showing up to something that is of interest to you. I, I, I think I, this is something I've tried to, you know, put to words a couple times and never really succeeded very well at, but there's so much underrated power in just showing up consistently. [00:47:15] +**Carl Vitullo:** Yeah, I like that a lot. I think, yeah, just going, showing up to something that is of interest to you. I, I, I think I, this is something I've tried to, you know, put to words a couple times and never really succeeded very well at, but there's so much underrated power in just showing up consistently. [47:15] -Like, as you know, for networking for, for developing these kind of skills Yeah. That we're talking about communication skills, just showing up and being in the same space, forming community with a group of people around a shared interest. Yeah. Is so un it, it sounds so like trite and obvious and I don't know, I, I think it gets taken for granted that like, the hardest part of it doing anything is just showing up for consistently. And when you do that, yeah. It's just, it's so powerful. [00:47:45] +Like, as you know, for networking for, for developing these kind of skills Yeah. That we're talking about communication skills, just showing up and being in the same space, forming community with a group of people around a shared interest. Yeah. Is so un it, it sounds so like trite and obvious and I don't know, I, I think it gets taken for granted that like, the hardest part of it doing anything is just showing up for consistently. And when you do that, yeah. It's just, it's so powerful. [47:45] -**Elizabeth Woolf:** That's why I would throw anyone who's struggling with it, I would just, I wouldn't even say anything. I would just throw the book Atomic Habits at their face. [00:47:51] +**Elizabeth Woolf:** That's why I would throw anyone who's struggling with it, I would just, I wouldn't even say anything. I would just throw the book Atomic Habits at their face. [47:51] -Just make it part of your identity. Make it part of how you wanna show up in the world. Don't make it a goal. Don't make it a New Year's resolution. Make it part of who you are and it makes it so much easier. Then it's like, "I, I can't, I can't skip. It's part of how, who Elizabeth is, she's gotta go. I'm sorry." [00:48:09] +Just make it part of your identity. Make it part of how you wanna show up in the world. Don't make it a goal. Don't make it a New Year's resolution. Make it part of who you are and it makes it so much easier. Then it's like, "I, I can't, I can't skip. It's part of how, who Elizabeth is, she's gotta go. I'm sorry." [48:09] -**Carl Vitullo:** Right, right. I think something else that I have learned over my years of becoming an older human is, I think I had gotten that part of it, like, you know, make it part of your identity, and I think something that was hard for me was cutting out parts of my identity that were no longer serving me. [00:48:26] +**Carl Vitullo:** Right, right. I think something else that I have learned over my years of becoming an older human is, I think I had gotten that part of it, like, you know, make it part of your identity, and I think something that was hard for me was cutting out parts of my identity that were no longer serving me. [48:26] -**Elizabeth Woolf:** Yeah. How'd you figure those out? [00:48:28] +**Elizabeth Woolf:** Yeah. How'd you figure those out? [48:28] -**Carl Vitullo:** I think it, it goes back a little bit to what you said about like, the gut feeling. Yeah. Like, just occasionally taking an inventory of your life, like what's in your life and why is it there? You know, may maybe a Marie Kondo kind of vibe. Ah, but like, you know, okay. [00:48:43] +**Carl Vitullo:** I think it, it goes back a little bit to what you said about like, the gut feeling. Yeah. Like, just occasionally taking an inventory of your life, like what's in your life and why is it there? You know, may maybe a Marie Kondo kind of vibe. Ah, but like, you know, okay. [48:43] -If part of your identity is, "I am someone who goes to JavaScript meetups in my community," that was something that I kind of experienced myself. May maybe why I'm bringing it up as an, as an example. I went to meetups, I went to conferences, pretty consistently for three or four years and at some point at a conference, I had the, I had this moment of like, "oh, like I've seen this talk before." [00:49:05] +If part of your identity is, "I am someone who goes to JavaScript meetups in my community," that was something that I kind of experienced myself. May maybe why I'm bringing it up as an, as an example. I went to meetups, I went to conferences, pretty consistently for three or four years and at some point at a conference, I had the, I had this moment of like, "oh, like I've seen this talk before." [49:05] -Like, "oh, I, I know how to use the, all of these technologies that are being talked about." I don't know if I need to keep coming to these. Yeah. And yeah, so just sort of that sort of introspection and self-awareness of what am I showing up to and what am I getting out of it? [00:49:21] +Like, "oh, I, I know how to use the, all of these technologies that are being talked about." I don't know if I need to keep coming to these. Yeah. And yeah, so just sort of that sort of introspection and self-awareness of what am I showing up to and what am I getting out of it? [49:21] -**Elizabeth Woolf:** Mm-hmm. And what do you want out of it? [00:49:23] +**Elizabeth Woolf:** Mm-hmm. And what do you want out of it? [49:23] -Yeah. Like before you choose anything, what do you want out of it? I've been doing this thing lately, I feel like. So the world is starting to open up again. There's so many new events and a lot of 'em are starting to be in person. And when someone asks me about an event, and maybe you guys can try this too, and this protects you if your head does not go, "hell yes," it's a no. [00:49:44] +Yeah. Like before you choose anything, what do you want out of it? I've been doing this thing lately, I feel like. So the world is starting to open up again. There's so many new events and a lot of 'em are starting to be in person. And when someone asks me about an event, and maybe you guys can try this too, and this protects you if your head does not go, "hell yes," it's a no. [49:44] -And then I'm gonna tell you, lean towards that feedback loop. And figure out ways of removing yourself from the things that just are not making you feel like "hell yes," this is what I want to be at. I mean, not to be morbid, but life so short. Yeah. Choose the hell yeses I God, you'll smile so much more (laughs). [00:50:02] +And then I'm gonna tell you, lean towards that feedback loop. And figure out ways of removing yourself from the things that just are not making you feel like "hell yes," this is what I want to be at. I mean, not to be morbid, but life so short. Yeah. Choose the hell yeses I God, you'll smile so much more (laughs). [50:02] ## Learning to trust your gut -**Carl Vitullo:** Yeah. Well that's, tying it back to something you said earlier that, you know, balancing that "go with the hell Yes" and following your gut. [00:50:11] +**Carl Vitullo:** Yeah. Well that's, tying it back to something you said earlier that, you know, balancing that "go with the hell Yes" and following your gut. [50:11] -**Elizabeth Woolf:** Mm-hmm. [00:50:12] +**Elizabeth Woolf:** Mm-hmm. [50:12] -**Carl Vitullo:** That's where I think the hard part of it comes in, because like so many times you're like, hell yes, this is awesome. Let's get, let's go for it. Yeah. And then as it gets closer and it gets real, there's that moment of anxiety of like, oh God is this, is this, it is. [00:50:25] +**Carl Vitullo:** That's where I think the hard part of it comes in, because like so many times you're like, hell yes, this is awesome. Let's get, let's go for it. Yeah. And then as it gets closer and it gets real, there's that moment of anxiety of like, oh God is this, is this, it is. [50:25] -Right. Yeah. Is this for me? So yeah. I, I I think that's, that's where, that's where it's so hard. You have to actually, that's where I think that like taking mental inventory and self-awareness of figuring out is this, is this a hell yes that I'm anxious about or is this not a hell yes. [00:50:41] +Right. Yeah. Is this for me? So yeah. I, I I think that's, that's where, that's where it's so hard. You have to actually, that's where I think that like taking mental inventory and self-awareness of figuring out is this, is this a hell yes that I'm anxious about or is this not a hell yes. [50:41] -**Elizabeth Woolf:** Yeah. " Is this not hell yes." (laughs) I'm glad that none of that was like, bleeped just been bleep. Yes, bleep yes (laughs). [00:50:51] +**Elizabeth Woolf:** Yeah. " Is this not hell yes." (laughs) I'm glad that none of that was like, bleeped just been bleep. Yes, bleep yes (laughs). [50:51] -**Carl Vitullo:** No, this is, uh, this is an adult's only podcast. We can swear here. Love it. [00:50:56] +**Carl Vitullo:** No, this is, uh, this is an adult's only podcast. We can swear here. Love it. [50:56] -Yeah. In chat, "find a goal and enjoy the process." I think that, I think that's right. [00:51:02] +Yeah. In chat, "find a goal and enjoy the process." I think that, I think that's right. [51:02] ## Looking backwards to find what gives you joy -**Elizabeth Woolf:** Yeah. And you'll, you know what feels like I had this talk with my brother, like, it's wild how even some of the things you were curious about as a kid, like they will, they will come and they'll pop their heads, like they'll come back into your life in your twenties and your thirties and your forties. [00:51:17] +**Elizabeth Woolf:** Yeah. And you'll, you know what feels like I had this talk with my brother, like, it's wild how even some of the things you were curious about as a kid, like they will, they will come and they'll pop their heads, like they'll come back into your life in your twenties and your thirties and your forties. [51:17] -Like, they're not something that just leaves you, it's part of, it's just how you're wired and don't fight it. Like you're really gonna have things that just light you on fire. And I, I would encourage anyone to like, choose those. It's, I mean, it's not gonna be like sunshine and rainbows because you choose the things that motivate you. [00:51:34] +Like, they're not something that just leaves you, it's part of, it's just how you're wired and don't fight it. Like you're really gonna have things that just light you on fire. And I, I would encourage anyone to like, choose those. It's, I mean, it's not gonna be like sunshine and rainbows because you choose the things that motivate you. [51:34] -You have to give up to get what you want. But I'm always gonna lean towards. Choose the hell yeses, cuz, I don't know, it's easier to sleep at night (laughs). [00:51:43] +You have to give up to get what you want. But I'm always gonna lean towards. Choose the hell yeses, cuz, I don't know, it's easier to sleep at night (laughs). [51:43] -**Carl Vitullo:** Yeah, for sure. Or drain. Yeah. I love, I love what you just said about like looking at what excited you as a kid. Mm-hmm. Or as you were growing up because I think there is something so true to that. [00:51:54] +**Carl Vitullo:** Yeah, for sure. Or drain. Yeah. I love, I love what you just said about like looking at what excited you as a kid. Mm-hmm. Or as you were growing up because I think there is something so true to that. [51:54] -Yeah. You know, given as you're just learning what the world is, what excites you, I think it never really stops exciting you like, you know, maybe other things take priority but looking backwards to see trends. Yeah. It's so I think that is so powerful for orienting what you want your life to be based around. [00:52:13] +Yeah. You know, given as you're just learning what the world is, what excites you, I think it never really stops exciting you like, you know, maybe other things take priority but looking backwards to see trends. Yeah. It's so I think that is so powerful for orienting what you want your life to be based around. [52:13] -**Elizabeth Woolf:** Yeah. When I was 16 I was obsessed with communication and like, I'm 27 now and it's just grown exponentially and if I look back to who I was at 12 and 11, there were like peeps of it and it, I just look at the trends. You've made decisions in your life for a reason. I did this thing where I wrote out, you can call me insane, and I will probably accept that I wrote out all my decisions I've made since I was like five. [00:52:38] +**Elizabeth Woolf:** Yeah. When I was 16 I was obsessed with communication and like, I'm 27 now and it's just grown exponentially and if I look back to who I was at 12 and 11, there were like peeps of it and it, I just look at the trends. You've made decisions in your life for a reason. I did this thing where I wrote out, you can call me insane, and I will probably accept that I wrote out all my decisions I've made since I was like five. [52:38] -And that taught me so much. Huh? About how I make decisions in my life and how they've changed. So it's the decision you made and why and Okay. It was like I had, I had to call my mom and be like, is this this? Is this normal? Am I okay? She's like, yeah, but it's wild to see how your decision making changes, but your reasoning stays pretty grounded. [00:53:00] +And that taught me so much. Huh? About how I make decisions in my life and how they've changed. So it's the decision you made and why and Okay. It was like I had, I had to call my mom and be like, is this this? Is this normal? Am I okay? She's like, yeah, but it's wild to see how your decision making changes, but your reasoning stays pretty grounded. [53:00] -Mm-hmm. Yeah. Reflection's huge. It's a good, it's a very good trait to have. [00:53:05] +Mm-hmm. Yeah. Reflection's huge. It's a good, it's a very good trait to have. [53:05] -**Carl Vitullo:** Yeah. And that, you know, that reminds me of something I did relatively recently. So over the last year and a half I've been focusing more on community and really, really kind of making a career shift from software engineer into developer community human. [00:53:19] +**Carl Vitullo:** Yeah. And that, you know, that reminds me of something I did relatively recently. So over the last year and a half I've been focusing more on community and really, really kind of making a career shift from software engineer into developer community human. [53:19] -And one of the, one of the reasons… maybe sort of a post-facto explanation, not, I'm not sure how much decision making, how much this went in as an input to the decision making. [00:53:28] +And one of the, one of the reasons… maybe sort of a post-facto explanation, not, I'm not sure how much decision making, how much this went in as an input to the decision making. [53:28] -**Elizabeth Woolf:** Mm-hmm. [00:53:28] +**Elizabeth Woolf:** Mm-hmm. [53:28] -**Carl Vitullo:** But as I've reflected on it, after having made the decision to go harder into community work, I realized, like I've been, I've had a natural inclination to do that my whole life. [00:53:39] +**Carl Vitullo:** But as I've reflected on it, after having made the decision to go harder into community work, I realized, like I've been, I've had a natural inclination to do that my whole life. [53:39] -Like high school teams, I set up forums when I was an incoming freshman, I set up an IRC chat for incoming freshmen. So like, I think there is something so powerful about that. Like looking at what has consistently attracted your attention and, and energy through your whole life. [00:53:54] +Like high school teams, I set up forums when I was an incoming freshman, I set up an IRC chat for incoming freshmen. So like, I think there is something so powerful about that. Like looking at what has consistently attracted your attention and, and energy through your whole life. [53:54] -**Elizabeth Woolf:** Mm-hmm. [00:53:54] +**Elizabeth Woolf:** Mm-hmm. [53:54] -Yeah. I'd say also to like, yeah, I'm gonna say the term, to also trim the fat. Like if you're not sure if it's a hell yes or not, that's okay. But if you go to the event and you leave and you're drained or you go to that anything X, Y, Z, whatever's on your calendar and you're, you don't leave with a part of you rejuvenated. Yeah. [00:54:13] +Yeah. I'd say also to like, yeah, I'm gonna say the term, to also trim the fat. Like if you're not sure if it's a hell yes or not, that's okay. But if you go to the event and you leave and you're drained or you go to that anything X, Y, Z, whatever's on your calendar and you're, you don't leave with a part of you rejuvenated. Yeah. [54:13] -Now, you know, and at the beginning of like my twenties, I did not know what anything was that fueled me. Like I just, I had a smorgasboard of things. I thought it was on behalf of other people, but once I was told that, it was a lot easier to figure out, oh wait, I'm exhausted and I want to sleep for nine years. Maybe this is not what I should ever do again. And it's just easier that way. So you might not know going in. [00:54:36] +Now, you know, and at the beginning of like my twenties, I did not know what anything was that fueled me. Like I just, I had a smorgasboard of things. I thought it was on behalf of other people, but once I was told that, it was a lot easier to figure out, oh wait, I'm exhausted and I want to sleep for nine years. Maybe this is not what I should ever do again. And it's just easier that way. So you might not know going in. [54:36] -Yeah. You just know later. [00:54:38] +Yeah. You just know later. [54:38] -**Carl Vitullo:** Yeah. You gotta play around a little bit. Mm-hmm. Play in different parts of the world and see what gives you energy. Yeah. I think that's so right about leaving something, feeling rejuvenated. Like all of the best events I've gone to or something. Or you know, events I've gone to, like celebrations, parties, networking events, one-on-one conversations. [00:54:57] +**Carl Vitullo:** Yeah. You gotta play around a little bit. Mm-hmm. Play in different parts of the world and see what gives you energy. Yeah. I think that's so right about leaving something, feeling rejuvenated. Like all of the best events I've gone to or something. Or you know, events I've gone to, like celebrations, parties, networking events, one-on-one conversations. [54:57] -The best ones are the ones where I, at the end of it, my brain is whirring with new, new ideas and new thoughts. Yeah. Making new connections. And it's just been like, You know, it almost feel a little manic like, like, "oh man, this is so great. I'm gonna do all this thing." You know? [00:55:13] +The best ones are the ones where I, at the end of it, my brain is whirring with new, new ideas and new thoughts. Yeah. Making new connections. And it's just been like, You know, it almost feel a little manic like, like, "oh man, this is so great. I'm gonna do all this thing." You know? [55:13] -**Elizabeth Woolf:** When when you leave and you have a to-do list like this, it's a great day. [00:55:16] +**Elizabeth Woolf:** When when you leave and you have a to-do list like this, it's a great day. [55:16] -Like, yeah, right. And tomorrow I'm gonna cure cancer. And then the day after that, I'm gonna solve world hunger. It's gonna be a great week. [00:55:22] +Like, yeah, right. And tomorrow I'm gonna cure cancer. And then the day after that, I'm gonna solve world hunger. It's gonna be a great week. [55:22] -**Carl Vitullo:** Right? Day two is for editing. You know, it's then you, then you pare it back into accomplishable things. But yeah. [00:55:29] +**Carl Vitullo:** Right? Day two is for editing. You know, it's then you, then you pare it back into accomplishable things. But yeah. [55:29] -**Elizabeth Woolf:** Yeah, I can completely relate. Damn is it a beautiful feeling. [00:55:32] +**Elizabeth Woolf:** Yeah, I can completely relate. Damn is it a beautiful feeling. [55:32] -That's why I encourage you to figure it out early rather than later. I know people who were in their fifties and they didn't figure out what really fires them up until they were like 57. Hmm. And they blinked and they're 57. And then figuring out then what it is, and I'm gonna be really honest here and say like, the reason I am so absolutely. [00:55:53] +That's why I encourage you to figure it out early rather than later. I know people who were in their fifties and they didn't figure out what really fires them up until they were like 57. Hmm. And they blinked and they're 57. And then figuring out then what it is, and I'm gonna be really honest here and say like, the reason I am so absolutely. [55:53] -Just like this is the only place I would wanna work is with engineers, is because they're the people who are literally building the future. Look around, like it just speaks for itself. Right. And that's why like giving anyone those skills of like knowing what to like, say, do move forward with how to choose things in your life. [00:56:11] +Just like this is the only place I would wanna work is with engineers, is because they're the people who are literally building the future. Look around, like it just speaks for itself. Right. And that's why like giving anyone those skills of like knowing what to like, say, do move forward with how to choose things in your life. [56:11] -So important to do now you're just gonna be that much better. 5, 10, 15 years, it compounds quickly. [00:56:17] +So important to do now you're just gonna be that much better. 5, 10, 15 years, it compounds quickly. [56:17] -**Carl Vitullo:** Yeah. Yeah. [00:56:19] +**Carl Vitullo:** Yeah. Yeah. [56:19] ## What if your no could have taught you more than yes? -**Carl Vitullo:** Before we go too far, I see questioning from the chat. Yeah. What if your "No" could have taught you more than your "hell Yes." Cuz you could find so much, so many interesting things at a hell no event. [00:56:28] +**Carl Vitullo:** Before we go too far, I see questioning from the chat. Yeah. What if your "No" could have taught you more than your "hell Yes." Cuz you could find so much, so many interesting things at a hell no event. [56:28] -Yeah. What do you, what do you think about that? I, I have some thoughts. [00:56:33] +Yeah. What do you, what do you think about that? I, I have some thoughts. [56:33] -**Elizabeth Woolf:** That's a really good one. Um, that makes you think of when you're managing, like when you have a bunch of things to do and you put the hardest things at the bottom. [00:56:40] +**Elizabeth Woolf:** That's a really good one. Um, that makes you think of when you're managing, like when you have a bunch of things to do and you put the hardest things at the bottom. [56:40] -**Carl Vitullo:** Mmm [00:56:41] +**Carl Vitullo:** Mmm [56:41] -**Elizabeth Woolf:** and you're just avoiding them, um, yeah. Be really clear, so if it's an event that you're just not sure about or you dunno what the output's gonna be, go into it knowing what you want to get out of it. [00:56:52] +**Elizabeth Woolf:** and you're just avoiding them, um, yeah. Be really clear, so if it's an event that you're just not sure about or you dunno what the output's gonna be, go into it knowing what you want to get out of it. [56:52] -Like for me, I'm lucky at the stage in my life where I don't have kids or a marriage I need to build or an entire family of little peoples that I'm responsible for. So if you wanna experiment with those events that you think might be a hell no, do it, cuz you'll have the time to rejuvenate yourself. As long as those other priorities that you have in your life, you're not completely just shutting down, but also keep track of if you did get drained. [00:57:18] +Like for me, I'm lucky at the stage in my life where I don't have kids or a marriage I need to build or an entire family of little peoples that I'm responsible for. So if you wanna experiment with those events that you think might be a hell no, do it, cuz you'll have the time to rejuvenate yourself. As long as those other priorities that you have in your life, you're not completely just shutting down, but also keep track of if you did get drained. [57:18] -Me personally, yeah, the filter has gotten better as I practiced it more so that's why I can sit here and say like, here's the advice. But definitely I would say try it out and if those "no"s start to come up, listen to them. [00:57:30] +Me personally, yeah, the filter has gotten better as I practiced it more so that's why I can sit here and say like, here's the advice. But definitely I would say try it out and if those "no"s start to come up, listen to them. [57:30] -**Carl Vitullo:** Yeah, I like that because I think there can be several different types of hell no. [00:57:34] +**Carl Vitullo:** Yeah, I like that because I think there can be several different types of hell no. [57:34] -Like is it (laughter), I think the wrong hell no is something based out of fear. [00:57:40] +Like is it (laughter), I think the wrong hell no is something based out of fear. [57:40] -**Elizabeth Woolf:** Mm-hmm. [00:57:40] +**Elizabeth Woolf:** Mm-hmm. [57:40] -**Carl Vitullo:** You know, like if it's a hell no. Like I, I'm, I would, would not be comfortable doing that. Then that's something that you should maybe think twice about avoiding, like maybe that's just an avoidant behavior. Yeah. If it, if it's hell no, like that's not worth my time. [00:57:55] +**Carl Vitullo:** You know, like if it's a hell no. Like I, I'm, I would, would not be comfortable doing that. Then that's something that you should maybe think twice about avoiding, like maybe that's just an avoidant behavior. Yeah. If it, if it's hell no, like that's not worth my time. [57:55] -I, you know, may maybe do some double checks to make sure that you have a, an accurate gauge of your read on something that you might do. Mm-hmm. But yeah, it's like you, like you were saying, as you develop your gut feel mm-hmm. I think you can trust in your "hell no"s a little more. But I think, especially early when you're evaluating things, considering what, what about it is a hell no. [00:58:17] +I, you know, may maybe do some double checks to make sure that you have a, an accurate gauge of your read on something that you might do. Mm-hmm. But yeah, it's like you, like you were saying, as you develop your gut feel mm-hmm. I think you can trust in your "hell no"s a little more. But I think, especially early when you're evaluating things, considering what, what about it is a hell no. [58:17] -**Elizabeth Woolf:** Yeah. I completely agree. Because I have some nights where it's just like, " I'm pooped and I can't bring any kind of Elizabeth that I want to this event," whatever it may be. Yeah. That's allowed, like it actually is, and it took me a long time to learn that. That you don't have to exhaust yourself just to like get to some point. You just, you don't. [00:58:39] +**Elizabeth Woolf:** Yeah. I completely agree. Because I have some nights where it's just like, " I'm pooped and I can't bring any kind of Elizabeth that I want to this event," whatever it may be. Yeah. That's allowed, like it actually is, and it took me a long time to learn that. That you don't have to exhaust yourself just to like get to some point. You just, you don't. [58:39] -**Carl Vitullo:** Yeah. Yeah. Not everything has to be an exhausting journey. [00:58:42] +**Carl Vitullo:** Yeah. Yeah. Not everything has to be an exhausting journey. [58:42] -**Elizabeth Woolf:** No. Cuz there will be the exhausting journeys. Like that's part of, that's just part of waking up, breathing, sleeping, eating. That's just, there's gonna be exhausting journeys in this thing we call life, but filter. Filter as much as you can. [00:58:55] +**Elizabeth Woolf:** No. Cuz there will be the exhausting journeys. Like that's part of, that's just part of waking up, breathing, sleeping, eating. That's just, there's gonna be exhausting journeys in this thing we call life, but filter. Filter as much as you can. [58:55] -**Carl Vitullo:** Sure. Yeah. Make sure you're selecting the best exhausting opportunities. [00:58:59] +**Carl Vitullo:** Sure. Yeah. Make sure you're selecting the best exhausting opportunities. [58:59] -**Elizabeth Woolf:** Yeah (laughs). [00:59:02] +**Elizabeth Woolf:** Yeah (laughs). [59:02] -Yeah. And if it's one, if it's an event that you're afraid of, a hell no that you're afraid of, I'd lean back to, it's that fears are your best clues into how you can be amazing. So if you're afraid of it, try it. Not even kidding. Try it. You will shock yourself every time. And if you're still there and you feel uncomfortable, you tried it. You are incredible for trying it. [00:59:23] +Yeah. And if it's one, if it's an event that you're afraid of, a hell no that you're afraid of, I'd lean back to, it's that fears are your best clues into how you can be amazing. So if you're afraid of it, try it. Not even kidding. Try it. You will shock yourself every time. And if you're still there and you feel uncomfortable, you tried it. You are incredible for trying it. [59:23] -**Carl Vitullo:** Now, you know, to try something else. Yeah. Well, I I love that. I think that's really great. [00:59:27] +**Carl Vitullo:** Now, you know, to try something else. Yeah. Well, I I love that. I think that's really great. [59:27] -I see we have, we've gotten another question out outta the chat that I think is worth bringing up. [00:59:31] +I see we have, we've gotten another question out outta the chat that I think is worth bringing up. [59:31] -**Elizabeth Woolf:** Love it. [00:59:32] +**Elizabeth Woolf:** Love it. [59:32] ## Handling being underleveled when hired -**Carl Vitullo:** Uh, "how do you handle being placed in a position that you feel is below what you're capable of? [00:59:37] +**Carl Vitullo:** Uh, "how do you handle being placed in a position that you feel is below what you're capable of? [59:37] -**Elizabeth Woolf:** That's a phenomenal question. Doesn't get asked enough. [00:59:39] +**Elizabeth Woolf:** That's a phenomenal question. Doesn't get asked enough. [59:39] -**Carl Vitullo:** Yeah. That's a really hard situation to communicate in. I think there's, when you think that you are, you've been indexed too low versus your actual skills, there's a lot of Yeah. A lot of fine communication work. [00:59:53] +**Carl Vitullo:** Yeah. That's a really hard situation to communicate in. I think there's, when you think that you are, you've been indexed too low versus your actual skills, there's a lot of Yeah. A lot of fine communication work. [59:53] -**Elizabeth Woolf:** Yeah. You are now giving difficult feedback, period. [00:59:56] +**Elizabeth Woolf:** Yeah. You are now giving difficult feedback, period. [59:56] -**Carl Vitullo:** Yes. [00:59:56] +**Carl Vitullo:** Yes. [59:56] **Elizabeth Woolf:** So like, let's say you are, you're two positions below, below where you should be. Your counterparts are doing more of the work that you know you can do. [01:00:05] diff --git a/src/transcripts/jenny-truong.md b/src/transcripts/jenny-truong.md index 3e8c541..a5828f4 100644 --- a/src/transcripts/jenny-truong.md +++ b/src/transcripts/jenny-truong.md @@ -9,380 +9,380 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Jenny Truong](https://t -[00:00:00] **Carl Vitullo:** Hello folks. Thank you for joining us for another Reactiflux Office Hours. I'm Carl Vitullo, the sort of community manager for Reactiflux, uh, here today with Jenny Truong talking about states of burnout. Uh, I met her at React Miami, she gave a talk called States of Burnout, and I just thought it was a really great subject to talk about. So, yeah, Jenny, really excited to have you on to talk a little more in depth. +[00:00] **Carl Vitullo:** Hello folks. Thank you for joining us for another Reactiflux Office Hours. I'm Carl Vitullo, the sort of community manager for Reactiflux, uh, here today with Jenny Truong talking about states of burnout. Uh, I met her at React Miami, she gave a talk called States of Burnout, and I just thought it was a really great subject to talk about. So, yeah, Jenny, really excited to have you on to talk a little more in depth. -[00:00:25] So you are head of operations and developer relations at Stately. What is the head of operations and how does that have, what does that have to do with developer relations? +[00:25] So you are head of operations and developer relations at Stately. What is the head of operations and how does that have, what does that have to do with developer relations? -[00:00:33] **Jenny Truong:** Yeah, so thanks for having me. Operations is basically the, they call me the glue behind the company because I basically do all the paperwork and all the HR related tasks and organization behind the startup. So our team right now at Stately is nine people, and most of them are engineers, but I do the payroll and the administrative and the financial, like all that stuff that like how a business runs, I do. And that's why I put it all under operations. +[00:33] **Jenny Truong:** Yeah, so thanks for having me. Operations is basically the, they call me the glue behind the company because I basically do all the paperwork and all the HR related tasks and organization behind the startup. So our team right now at Stately is nine people, and most of them are engineers, but I do the payroll and the administrative and the financial, like all that stuff that like how a business runs, I do. And that's why I put it all under operations. -[00:01:05] **Carl Vitullo:** Sure. Operate the company can make sure it keeps going. +[01:05] **Carl Vitullo:** Sure. Operate the company can make sure it keeps going. -[00:01:07] **Jenny Truong:** Yeah essentially, yeah. +[01:07] **Jenny Truong:** Yeah essentially, yeah. -## [00:01:10] Why do you care about burnout? +## [01:10] Why do you care about burnout? -[00:01:10] **Carl Vitullo:** Sure. Very cool. Where does your passion for talking about burnout come from? Your talk was so well researched and so I know it had, it had so many great concepts to talk about. You were clearly so passionate about it. +[01:10] **Carl Vitullo:** Sure. Very cool. Where does your passion for talking about burnout come from? Your talk was so well researched and so I know it had, it had so many great concepts to talk about. You were clearly so passionate about it. -[00:01:22] **Jenny Truong:** I really want to normalize the way we think about mental health and how like, We also approach it. I, I want to help people understand that like, we're all human. We all experience like this mental load of like, you know, the things that we keep in our head and how we don't express them is very unhealthy. +[01:22] **Jenny Truong:** I really want to normalize the way we think about mental health and how like, We also approach it. I, I want to help people understand that like, we're all human. We all experience like this mental load of like, you know, the things that we keep in our head and how we don't express them is very unhealthy. -[00:01:41] So mental health is something huge that I, I am like trying to spread, if that makes sense. So just, just the idea of like expressing it and, and like having people talk about feelings instead of. Just saying, "hi, how are you" to like, every person we meet, we can either answer the question honestly or just approach the person where it's like, "hi," like take a moment to be like, I've never met you before, or, I've seen you before. I've never had the opportunity to chat. So like, you know, really just have meaningful conversations instead of an empty, Hey, how's it going? Great, how are you? You know? +[01:41] So mental health is something huge that I, I am like trying to spread, if that makes sense. So just, just the idea of like expressing it and, and like having people talk about feelings instead of. Just saying, "hi, how are you" to like, every person we meet, we can either answer the question honestly or just approach the person where it's like, "hi," like take a moment to be like, I've never met you before, or, I've seen you before. I've never had the opportunity to chat. So like, you know, really just have meaningful conversations instead of an empty, Hey, how's it going? Great, how are you? You know? -[00:02:17] **Carl Vitullo:** Yeah, deep conversation instead of shallow platitudes. +[02:17] **Carl Vitullo:** Yeah, deep conversation instead of shallow platitudes. -[00:02:21] **Jenny Truong:** Exactly. +[02:21] **Jenny Truong:** Exactly. -[00:02:23] **Carl Vitullo:** Okay. Very cool. Yeah, I love the, the backdrop of mental health and, and burnout. Those are definitely very closely related topics. Mental health's very close to me as well, I have some various diagnoses. I definitely have had a very personal relationship with burnout in my career too, so, yeah. Excited to get into it with you. +[02:23] **Carl Vitullo:** Okay. Very cool. Yeah, I love the, the backdrop of mental health and, and burnout. Those are definitely very closely related topics. Mental health's very close to me as well, I have some various diagnoses. I definitely have had a very personal relationship with burnout in my career too, so, yeah. Excited to get into it with you. -[00:02:42] **Jenny Truong:** Yeah. And then with burnout, people have this. Idea that if you work at a startup, you're always gonna be burnt out because they're gonna push you to your limits. But my personal experience with working at a startup that's only two years old, it's like you can define the workload that you're putting on yourself and your coworkers. +[02:42] **Jenny Truong:** Yeah. And then with burnout, people have this. Idea that if you work at a startup, you're always gonna be burnt out because they're gonna push you to your limits. But my personal experience with working at a startup that's only two years old, it's like you can define the workload that you're putting on yourself and your coworkers. -[00:03:02] So like, if you can create this movement of like everyone only working as much as they can and understanding your own, like, productivity capacity, or your limitations to how productive you are when you are productive, if you can express that onto your team and that can help them understand like where they are. +[03:02] So like, if you can create this movement of like everyone only working as much as they can and understanding your own, like, productivity capacity, or your limitations to how productive you are when you are productive, if you can express that onto your team and that can help them understand like where they are. -[00:03:20] **Carl Vitullo:** Yeah, definitely. That's reminding me, a couple years ago I wrote a blog post about… I can't remember if it was about burnout, or like, work stress, but one of the things that I researched, I pulled out some government PDFs that were talking about the relationship between productivity and hours worked, and I just, I remember the chart showed that like, okay, yes, at like 30 to 40 to 50 hours, there was a positive correlation between output and time put in. +[03:20] **Carl Vitullo:** Yeah, definitely. That's reminding me, a couple years ago I wrote a blog post about… I can't remember if it was about burnout, or like, work stress, but one of the things that I researched, I pulled out some government PDFs that were talking about the relationship between productivity and hours worked, and I just, I remember the chart showed that like, okay, yes, at like 30 to 40 to 50 hours, there was a positive correlation between output and time put in. -[00:03:49] But after like two or three weeks of 50 hours a week, it started to fall off pretty sharply. So even, you know, 10 extra hours a week may not sound like totally burning the midnight oil to, to people. But yeah, like data shows, there's data showing that it doesn't help to burn yourself out. +[03:49] But after like two or three weeks of 50 hours a week, it started to fall off pretty sharply. So even, you know, 10 extra hours a week may not sound like totally burning the midnight oil to, to people. But yeah, like data shows, there's data showing that it doesn't help to burn yourself out. -[00:04:08] **Jenny Truong:** Yeah, and like it's, it's great that you mentioned that because it reminds me of like, in my research leading up to that presentation in Miami, I found out about how as humans we experience different types of rest deficits. And so like, that's something that we're gonna talk about later, but like we, we experienced seven different types of rest deficits that we could explore. +[04:08] **Jenny Truong:** Yeah, and like it's, it's great that you mentioned that because it reminds me of like, in my research leading up to that presentation in Miami, I found out about how as humans we experience different types of rest deficits. And so like, that's something that we're gonna talk about later, but like we, we experienced seven different types of rest deficits that we could explore. -[00:04:33] And that like opened a whole new world on like how we can just be more creative and like have the intention to do something for us. Like do something, whether it's fun, or like new, or uncomfortable. Like, except it's the fact that you're exploring these different areas so then your brain can like just rest for a little bit. +[04:33] And that like opened a whole new world on like how we can just be more creative and like have the intention to do something for us. Like do something, whether it's fun, or like new, or uncomfortable. Like, except it's the fact that you're exploring these different areas so then your brain can like just rest for a little bit. -[00:04:53] **Carl Vitullo:** Yeah. Yeah. I, we, we can get deeper into it later, but I think even just the, that sentence "seven different types of rest," to me that's very evocative of like, oh yeah, you know, like there are different ways you can become exhausted. You know, I think many people will intuitively understand like, okay, you can be socially drained or you can be, you've worked for 10 hours on a code project and get tapped out on that knowledge work. +[04:53] **Carl Vitullo:** Yeah. Yeah. I, we, we can get deeper into it later, but I think even just the, that sentence "seven different types of rest," to me that's very evocative of like, oh yeah, you know, like there are different ways you can become exhausted. You know, I think many people will intuitively understand like, okay, you can be socially drained or you can be, you've worked for 10 hours on a code project and get tapped out on that knowledge work. -## [00:05:16] Stress vs burnout +## [05:16] Stress vs burnout -[00:05:16] **Carl Vitullo:** So let's, let's start a little bit like, burnout versus stress. Like how, how would you distinguish between those. +[05:16] **Carl Vitullo:** So let's, let's start a little bit like, burnout versus stress. Like how, how would you distinguish between those. -[00:05:22] **Jenny Truong:** So I see stress as a positive thing actually, and hopefully I can influence people to see that stress is actually necessary for humans. Cause in our brains, when we experience stress, it's like cortisol and adrenaline to enhance like our current senses, right? Like whether you're hearing or seeing or feeling things more intensely in the moment. +[05:22] **Jenny Truong:** So I see stress as a positive thing actually, and hopefully I can influence people to see that stress is actually necessary for humans. Cause in our brains, when we experience stress, it's like cortisol and adrenaline to enhance like our current senses, right? Like whether you're hearing or seeing or feeling things more intensely in the moment. -[00:05:47] And so stress to me is like, okay, it's a natural human experience and occurrence in the brain. If we stress for a long period of time, it's going to overwhelm us and like, not deteriorate us, but more of like, it's just gonna bring us down and, and cause a physical, emotional toll on our brains and our body. +[05:47] And so stress to me is like, okay, it's a natural human experience and occurrence in the brain. If we stress for a long period of time, it's going to overwhelm us and like, not deteriorate us, but more of like, it's just gonna bring us down and, and cause a physical, emotional toll on our brains and our body. -[00:06:07] How I see like what stress versus burnout is, is burnout is mostly work related. And what I mean by that is the prolonged experience of stress without an idea of where you want to be. Like, you know, there's a finish line, you don't know how to get there. So burnout, you can think of the things that you are sacrificing. +[06:07] How I see like what stress versus burnout is, is burnout is mostly work related. And what I mean by that is the prolonged experience of stress without an idea of where you want to be. Like, you know, there's a finish line, you don't know how to get there. So burnout, you can think of the things that you are sacrificing. -[00:06:30] Basically you stress to the point where you start giving up these things in life that seem normal, like eating lunch, taking a shower, answering a phone call, and like getting up away and distracting yourself from work. Like those things that you feel guilty about. That's where burnout comes in and differentiates like between what stress is. +[06:30] Basically you stress to the point where you start giving up these things in life that seem normal, like eating lunch, taking a shower, answering a phone call, and like getting up away and distracting yourself from work. Like those things that you feel guilty about. That's where burnout comes in and differentiates like between what stress is. -[00:06:51] So stress is like, it's temporary. And if that temporary becomes like, Hours long of like constant stress and you start like not being able to see how to get to your end goal. It becomes burnout. Because burnout is like you're sacrificing all that time and all that energy and you're putting it into like all these work related tasks that, or you know, like it needs to be completed with a deadline, but you don't know how to get there. +[06:51] So stress is like, it's temporary. And if that temporary becomes like, Hours long of like constant stress and you start like not being able to see how to get to your end goal. It becomes burnout. Because burnout is like you're sacrificing all that time and all that energy and you're putting it into like all these work related tasks that, or you know, like it needs to be completed with a deadline, but you don't know how to get there. -[00:07:18] **Carl Vitullo:** Yeah. And so earlier you, you mentioned stress as, sort of like, heightened senses, the cortisol, the physiological reaction. So, so maybe to contrast, stress with burnout is like acute versus chronic. Like stress is the moment where your body says, "Ooh, I need a little extra oomph to get through this." and burnout is the accumulation of, you know, the damage of being on alert for an extended period of time? Does that sound right? +[07:18] **Carl Vitullo:** Yeah. And so earlier you, you mentioned stress as, sort of like, heightened senses, the cortisol, the physiological reaction. So, so maybe to contrast, stress with burnout is like acute versus chronic. Like stress is the moment where your body says, "Ooh, I need a little extra oomph to get through this." and burnout is the accumulation of, you know, the damage of being on alert for an extended period of time? Does that sound right? -[00:07:44] **Jenny Truong:** Yeah, that sounds great. That's pretty much what it is, but burnout is what you're giving up as well. Like it's what you're trading that all the things that you're trading out to focus on the work that you're doing. +[07:44] **Jenny Truong:** Yeah, that sounds great. That's pretty much what it is, but burnout is what you're giving up as well. Like it's what you're trading that all the things that you're trading out to focus on the work that you're doing. -## [00:07:58] Burnout vs depression +## [07:58] Burnout vs depression -[00:07:58] **Carl Vitullo:** What you were saying about sort of burnout and the feeling guilt about getting up to do non-work things. To me that, that just hits this note that makes me think about, like, some symptoms of depression, like, you know, the anhedonia and loss of things that bring you joy. So what do you think about sort of the, the overlap and where they're different between burnout and depression? +[07:58] **Carl Vitullo:** What you were saying about sort of burnout and the feeling guilt about getting up to do non-work things. To me that, that just hits this note that makes me think about, like, some symptoms of depression, like, you know, the anhedonia and loss of things that bring you joy. So what do you think about sort of the, the overlap and where they're different between burnout and depression? -[00:08:21] **Jenny Truong:** So with my personal experience with depression is that depression's kind of addicting, right? Like what I mean by that is you get comfortable with the idea of like feeling unhappy. So with depression it's like — none of these are choices, by the way. But at the same time with depression, like you are so comfortable with this feeling of like, lack of joy, you're comfortable in this state of like, being unproductive and lazy. I mean, this is just my personal experience, and I hope I don't offend anyone with saying this, but the key difference is that burnout is less of like, you find comfort in, in like the burnout state. +[08:21] **Jenny Truong:** So with my personal experience with depression is that depression's kind of addicting, right? Like what I mean by that is you get comfortable with the idea of like feeling unhappy. So with depression it's like — none of these are choices, by the way. But at the same time with depression, like you are so comfortable with this feeling of like, lack of joy, you're comfortable in this state of like, being unproductive and lazy. I mean, this is just my personal experience, and I hope I don't offend anyone with saying this, but the key difference is that burnout is less of like, you find comfort in, in like the burnout state. -[00:09:07] And you're just pushing through and forcing yourself to like, okay, "I just need to do this, I need to finish this by this deadline." And then it never gets done and you're always unsatisfied. Versus the depression of just like, "Ugh, I don't wanna do anything today." You intentionally want to just distance yourself from the world. +[09:07] And you're just pushing through and forcing yourself to like, okay, "I just need to do this, I need to finish this by this deadline." And then it never gets done and you're always unsatisfied. Versus the depression of just like, "Ugh, I don't wanna do anything today." You intentionally want to just distance yourself from the world. -[00:09:27] **Carl Vitullo:** Yeah. I think maybe another way of saying, "you become comfortable," is like sort of like that sort of stuck in a rut. So if you, you become comfortable with sort of the positive framing of it, of you form these new rhythms in your life around, in some ways it's like, mental health day, you take a day off, you take a day to just breathe, but then you take a second mental health day, and then you take a third. +[09:27] **Carl Vitullo:** Yeah. I think maybe another way of saying, "you become comfortable," is like sort of like that sort of stuck in a rut. So if you, you become comfortable with sort of the positive framing of it, of you form these new rhythms in your life around, in some ways it's like, mental health day, you take a day off, you take a day to just breathe, but then you take a second mental health day, and then you take a third. -[00:09:51] Then so that sort of, "treat yourself," like do your, do yourself and your body well, kind of becomes a rut that it becomes difficult to break out of. So do you think it would be fair to say like, burnout can lead to depression? +[09:51] Then so that sort of, "treat yourself," like do your, do yourself and your body well, kind of becomes a rut that it becomes difficult to break out of. So do you think it would be fair to say like, burnout can lead to depression? -[00:10:05] **Jenny Truong:** Oh, absolutely. And same thing with stress. Stress can lead you to depression as well. It's just, so I want to preface this with, I'm not a medical doctor of any sorts. And I can't diagnose you, but there's a lot of research out there defining the difference between depression and burnout. And what we wanna focus on is, is like with burnout, it's, yes, it's what you're giving up and what you're feeling guilty for, but it's the fear as well. +[10:05] **Jenny Truong:** Oh, absolutely. And same thing with stress. Stress can lead you to depression as well. It's just, so I want to preface this with, I'm not a medical doctor of any sorts. And I can't diagnose you, but there's a lot of research out there defining the difference between depression and burnout. And what we wanna focus on is, is like with burnout, it's, yes, it's what you're giving up and what you're feeling guilty for, but it's the fear as well. -[00:10:34] So it's your intention about trying to, to, let's say, finish up a task. Right? But it's the fear of like, okay, "what if I don't finish this? Everyone at work is gonna think low of me." You know, you're basically, it's hard to explain, but. +[10:34] So it's your intention about trying to, to, let's say, finish up a task. Right? But it's the fear of like, okay, "what if I don't finish this? Everyone at work is gonna think low of me." You know, you're basically, it's hard to explain, but. -[00:10:50] **Carl Vitullo:** Sort of like an avoidant behavior, like the, you anticipate some harm to your, your, your psyche, your reputation, and so you become avoidant of it? +[10:50] **Carl Vitullo:** Sort of like an avoidant behavior, like the, you anticipate some harm to your, your, your psyche, your reputation, and so you become avoidant of it? -[00:10:59] **Jenny Truong:** I think so essentially, but I mean, we all experience this differently. We all experience like different stages of depression and different stages of burnout, and depending on where we are and like how self-aware we are, that's where we can start making a difference. It's not as easy as like, "oh, I noticed I'm depressed, I'm gonna like get out of it." No, it's like the self-awareness really helps guide you on like what your next intention is going to be. +[10:59] **Jenny Truong:** I think so essentially, but I mean, we all experience this differently. We all experience like different stages of depression and different stages of burnout, and depending on where we are and like how self-aware we are, that's where we can start making a difference. It's not as easy as like, "oh, I noticed I'm depressed, I'm gonna like get out of it." No, it's like the self-awareness really helps guide you on like what your next intention is going to be. -## [00:11:25] Mindfulness and self awareness +## [11:25] Mindfulness and self awareness -[00:11:25] **Carl Vitullo:** Yeah, let's dive into that a little more. So self-awareness, mindfulness, I've heard it called the somatic experience. Just sort of being in tune with what your body is telling you and understanding those messages. +[11:25] **Carl Vitullo:** Yeah, let's dive into that a little more. So self-awareness, mindfulness, I've heard it called the somatic experience. Just sort of being in tune with what your body is telling you and understanding those messages. -[00:11:37] What are some things people can do, or what are some things you've done, I guess, to be more in tune with your body and pay attention to early warning indicators for burnout? +[11:37] What are some things people can do, or what are some things you've done, I guess, to be more in tune with your body and pay attention to early warning indicators for burnout? -[00:11:46] **Jenny Truong:** So I went through therapy and that's how I started learning these exercises. But how I've overcome situations where I feel overwhelmed and even notice if I'm in a burnout state is, you sit in that current emotion, or that current like situation, and you ask yourself, "is this something that I should be upset about?" and then you ask yourself, "what kind of feelings am I feeling or emotions that I'm aware of?" And then you ask yourself like, "is this true?" +[11:46] **Jenny Truong:** So I went through therapy and that's how I started learning these exercises. But how I've overcome situations where I feel overwhelmed and even notice if I'm in a burnout state is, you sit in that current emotion, or that current like situation, and you ask yourself, "is this something that I should be upset about?" and then you ask yourself, "what kind of feelings am I feeling or emotions that I'm aware of?" And then you ask yourself like, "is this true?" -[00:12:17] These are really silly questions that I, when I first started asking myself, I thought I was really ridiculous, but once you start honestly answering them, you start realizing like, okay, it is true. Like I'm really angry right now because at myself, because I can't solve these issues and that's probably why it's taken me half the week to just do something as easy as writing a blog post. Right. But with sitting in that current state of mind and, and with working at Stately, I think of everything in, in different states. +[12:17] These are really silly questions that I, when I first started asking myself, I thought I was really ridiculous, but once you start honestly answering them, you start realizing like, okay, it is true. Like I'm really angry right now because at myself, because I can't solve these issues and that's probably why it's taken me half the week to just do something as easy as writing a blog post. Right. But with sitting in that current state of mind and, and with working at Stately, I think of everything in, in different states. -[00:12:48] When you sit in that state and you ask yourself like, "is this true? Is this what I want to feel?" And how do I get out of this stuck feeling or this state that I'm experiencing, whether it's angry or like frustrated or you know, sad. You start getting to know what your limitations are and what your preferences are. +[12:48] When you sit in that state and you ask yourself like, "is this true? Is this what I want to feel?" And how do I get out of this stuck feeling or this state that I'm experiencing, whether it's angry or like frustrated or you know, sad. You start getting to know what your limitations are and what your preferences are. -[00:13:07] **Carl Vitullo:** Yeah, for sure. +[13:07] **Carl Vitullo:** Yeah, for sure. -[00:13:09] **Jenny Truong:** You can even, what I've done is like write down like maybe I don't feel like visiting it right now, cuz it's a, it's like a big mental toll to like currently sit in that and like be intentional and be curious. What I sometimes do is I just write down a statement in my notebook or like a something nearby, like a sticky note, and I put it somewhere where I know I'm going to revisit like the fridge or the bathroom mirror. +[13:09] **Jenny Truong:** You can even, what I've done is like write down like maybe I don't feel like visiting it right now, cuz it's a, it's like a big mental toll to like currently sit in that and like be intentional and be curious. What I sometimes do is I just write down a statement in my notebook or like a something nearby, like a sticky note, and I put it somewhere where I know I'm going to revisit like the fridge or the bathroom mirror. -[00:13:31] I just, I put it there and then I revisit it later, like, "oh, at 2:15 PM today, I was feeling really frustrated and disappointed in myself. What was I doing at that moment in time and like, is this something I want to visit right now?" You know? +[13:31] I just, I put it there and then I revisit it later, like, "oh, at 2:15 PM today, I was feeling really frustrated and disappointed in myself. What was I doing at that moment in time and like, is this something I want to visit right now?" You know? -[00:13:44] **Carl Vitullo:** Yeah, yeah, for sure. Yeah. I see someone in chat saying, using a notebook to externalize their thoughts. I, I think journaling as a window into yourself, your, your sense of self, what your body is doing, what your mind is doing. Yeah. That can be super powerful. I also have done some therapy in my life and that that was a big tool that I feel like I got out of that. +[13:44] **Carl Vitullo:** Yeah, yeah, for sure. Yeah. I see someone in chat saying, using a notebook to externalize their thoughts. I, I think journaling as a window into yourself, your, your sense of self, what your body is doing, what your mind is doing. Yeah. That can be super powerful. I also have done some therapy in my life and that that was a big tool that I feel like I got out of that. -[00:14:08] You know, I think just being, (frustrated thoughtful exhale) making deliberate effort to be in touch with yourself, I think is, it's not easy and it is challenging, but it is, yeah, it, it is super rewarding too. +[14:08] You know, I think just being, (frustrated thoughtful exhale) making deliberate effort to be in touch with yourself, I think is, it's not easy and it is challenging, but it is, yeah, it, it is super rewarding too. -[00:14:21] **Jenny Truong:** It is, and it's really difficult to be curious, because we're like, we've grown in this society where everyone has to have their own opinions and judgment. So when you, you start visiting your thoughts and like different parts of your body, like, "okay, right now I. I feel like my shoulders are really stiff." +[14:21] **Jenny Truong:** It is, and it's really difficult to be curious, because we're like, we've grown in this society where everyone has to have their own opinions and judgment. So when you, you start visiting your thoughts and like different parts of your body, like, "okay, right now I. I feel like my shoulders are really stiff." -[00:14:38] Let me like, make a difference and like lose them and then make the intention to like, "okay, I wanna focus my, my energy here on my shoulders and move them." And then be more curious as to like, why are my shoulders stiff? You know, it's, it's the little things that can make a big difference long term. It's just practicing those little things first. +[14:38] Let me like, make a difference and like lose them and then make the intention to like, "okay, I wanna focus my, my energy here on my shoulders and move them." And then be more curious as to like, why are my shoulders stiff? You know, it's, it's the little things that can make a big difference long term. It's just practicing those little things first. -[00:15:00] **Carl Vitullo:** Right. Right. And it is, it's, it's all part of a feedback loop. You know, it's all part of your body and your mind. Yeah. I, I think like what you said, just sort of paying attention to, oh, my shoulders are tense right now. Like, that can be, I, that's something I do all the time, is like, oh, I'm clenching my jaw. Oh, I'm tense right now. Let me just relax and then, So like, you know, observe your physical response, adjust that physical response, consciously adjust it, and then you know that, that kind of disrupts that feedback loop a little bit I think. +[15:00] **Carl Vitullo:** Right. Right. And it is, it's, it's all part of a feedback loop. You know, it's all part of your body and your mind. Yeah. I, I think like what you said, just sort of paying attention to, oh, my shoulders are tense right now. Like, that can be, I, that's something I do all the time, is like, oh, I'm clenching my jaw. Oh, I'm tense right now. Let me just relax and then, So like, you know, observe your physical response, adjust that physical response, consciously adjust it, and then you know that, that kind of disrupts that feedback loop a little bit I think. -[00:15:30] **Jenny Truong:** Yeah. +[15:30] **Jenny Truong:** Yeah. -## [00:15:31] States of burnout +## [15:31] States of burnout -[00:15:31] **Carl Vitullo:** So you, you mentioned thinking in states, so what are, what are, what are the states of burnout? +[15:31] **Carl Vitullo:** So you, you mentioned thinking in states, so what are, what are, what are the states of burnout? -[00:15:37] **Jenny Truong:** Okay, so Dr. Herbert Friedenberg discovered that there are 12 states of burnout. Twelve is like an overwhelming number. When I first discovered that, I was like, oh my gosh. There's actually five really common states that you can group them together in, and it all starts in this honeymoon phase. +[15:37] **Jenny Truong:** Okay, so Dr. Herbert Friedenberg discovered that there are 12 states of burnout. Twelve is like an overwhelming number. When I first discovered that, I was like, oh my gosh. There's actually five really common states that you can group them together in, and it all starts in this honeymoon phase. -[00:15:55] You'll start getting burnt out, technically, when you become way overly excited and passionate about... whether it's a topic, or your job, or the specific types of tasks that you're doing at a company, and so we call this the honeymoon phase. Within the honeymoon phase it's just you being way too optimistic and saying yes to all the different things that you can do, but are not necessarily responsible for. +[15:55] You'll start getting burnt out, technically, when you become way overly excited and passionate about... whether it's a topic, or your job, or the specific types of tasks that you're doing at a company, and so we call this the honeymoon phase. Within the honeymoon phase it's just you being way too optimistic and saying yes to all the different things that you can do, but are not necessarily responsible for. -[00:16:23] And it starts there as simple as that. And most people don't consider this a burnout state, but if you really think about it, you are taking on more than you should. You're taking on all these responsibilities just because you're passionate, excited, and you're like, I can absolutely stay up till midnight writing all these different articles and blogs to like output, and you can't. +[16:23] And it starts there as simple as that. And most people don't consider this a burnout state, but if you really think about it, you are taking on more than you should. You're taking on all these responsibilities just because you're passionate, excited, and you're like, I can absolutely stay up till midnight writing all these different articles and blogs to like output, and you can't. -[00:16:49] Keep that momentum up for like ever, if that makes sense. You can only do it temporarily, and that's because your mind is like so shocked that this is something that you're finally able to do. You're content doing it, and that excitement is what leads you to the next state of burnout, which is this onset of stress that is like, "okay, I took on all these things. I'm totally capable, but why is it taking me longer to do?" +[16:49] Keep that momentum up for like ever, if that makes sense. You can only do it temporarily, and that's because your mind is like so shocked that this is something that you're finally able to do. You're content doing it, and that excitement is what leads you to the next state of burnout, which is this onset of stress that is like, "okay, I took on all these things. I'm totally capable, but why is it taking me longer to do?" -[00:17:16] And then you start realizing like, okay, am I actually capable? Because like I used to be able to write two blog posts a week, and now I can barely get one done. +[17:16] And then you start realizing like, okay, am I actually capable? Because like I used to be able to write two blog posts a week, and now I can barely get one done. -[00:17:26] So with this onset of stress, you start doubting yourself and you start thinking like, "okay, I should extend my work hours. I should stay up until past 5:00 PM and sacrifice dinner and, and do all these different things to complete all the tasks in the backlog that I should have done last week," and so on. +[17:26] So with this onset of stress, you start doubting yourself and you start thinking like, "okay, I should extend my work hours. I should stay up until past 5:00 PM and sacrifice dinner and, and do all these different things to complete all the tasks in the backlog that I should have done last week," and so on. -[00:17:48] So you start making excuses on,, okay. Work is more important than going to my friend's birthday dinner or work is more important than taking a shower right now and eating dinner and so on. You know, those excuses build up. And then you reach the third state of burnout. These are the most five common states, by the way, so I'm only going up till five. +[17:48] So you start making excuses on,, okay. Work is more important than going to my friend's birthday dinner or work is more important than taking a shower right now and eating dinner and so on. You know, those excuses build up. And then you reach the third state of burnout. These are the most five common states, by the way, so I'm only going up till five. -[00:18:08] But this third state of burnout is like this huge onset of stress where there's an end goal that you have, like this deadline you have, but you have no idea how to get there. The self-doubt gets stronger. You become cynical towards people. You start thinking, man, my coworkers are like so much better than me because they're able to make these PRs multiple times a day or even a week, and I haven't even submit one yet. +[18:08] But this third state of burnout is like this huge onset of stress where there's an end goal that you have, like this deadline you have, but you have no idea how to get there. The self-doubt gets stronger. You become cynical towards people. You start thinking, man, my coworkers are like so much better than me because they're able to make these PRs multiple times a day or even a week, and I haven't even submit one yet. -[00:18:34] Like you start getting jealous, negative views towards not just your coworkers, but people around you, whether it's family or friends. And then if you keep that up, then you'll reach this initial state of burnout. +[18:34] Like you start getting jealous, negative views towards not just your coworkers, but people around you, whether it's family or friends. And then if you keep that up, then you'll reach this initial state of burnout. -[00:18:48] You might not be doing a physical workout, but you wake up like stiff and sore, and realizing, okay I don't wanna work right now and every day feels like a Monday. And you just wake up thinking, "Ugh, not another day. Like, where did my week go?" +[18:48] You might not be doing a physical workout, but you wake up like stiff and sore, and realizing, okay I don't wanna work right now and every day feels like a Monday. And you just wake up thinking, "Ugh, not another day. Like, where did my week go?" -[00:19:03] **Carl Vitullo:** Yeah, and I, I just wanna connect back, "waking up feeling like you've done a workout," back to what you said earlier about the physiological response to stress. It, it's not a muscle exhaustion. +[19:03] **Carl Vitullo:** Yeah, and I, I just wanna connect back, "waking up feeling like you've done a workout," back to what you said earlier about the physiological response to stress. It, it's not a muscle exhaustion. -[00:19:13] It's not, you know, you worked your muscles and did all that, but it is, you know, your, your body floods with cortisol and adrenaline and all of those chemicals, and it it, it heightens everything in your body. Everything in your body is ready to go. So it's does, it does physically drain you being in that heightened state of stress for, for too long. +[19:13] It's not, you know, you worked your muscles and did all that, but it is, you know, your, your body floods with cortisol and adrenaline and all of those chemicals, and it it, it heightens everything in your body. Everything in your body is ready to go. So it's does, it does physically drain you being in that heightened state of stress for, for too long. -[00:19:32] **Jenny Truong:** It does. And same thing with like how I just mentioned earlier, oh, my shoulders are stiff because I'm a little anxious or nervous. It's the little things that if you don't recognize, later tonight or tomorrow, I'm gonna figure out like, oh man, I felt like I just lifted a whole sofa, because my shoulders are like constantly up towards my ears. Yeah. +[19:32] **Jenny Truong:** It does. And same thing with like how I just mentioned earlier, oh, my shoulders are stiff because I'm a little anxious or nervous. It's the little things that if you don't recognize, later tonight or tomorrow, I'm gonna figure out like, oh man, I felt like I just lifted a whole sofa, because my shoulders are like constantly up towards my ears. Yeah. -[00:19:51] **Carl Vitullo:** Right. +[19:51] **Carl Vitullo:** Right. -[00:19:52] Maybe you didn't lift, you know, 50 pounds, but like, what is lifting? It's in terms of duration of a workout, it's a couple of minutes. Whereas if you're, if you're stressed and your muscles are clenched for eight hours. Yeah, I you know, it's, it's a lower expenditure of effort, but it's over a much longer period of time. +[19:52] Maybe you didn't lift, you know, 50 pounds, but like, what is lifting? It's in terms of duration of a workout, it's a couple of minutes. Whereas if you're, if you're stressed and your muscles are clenched for eight hours. Yeah, I you know, it's, it's a lower expenditure of effort, but it's over a much longer period of time. -[00:20:09] **Jenny Truong:** Yes. And so that's, that's why our bodies feel that tension, it's like that tension that's held there for like a long period of time, that's why you're sore the next day. And, and, and it's like, it could be natural. It could be like, okay, I'm used to slouching or I'm used to keeping my shoulders like up towards my ears. +[20:09] **Jenny Truong:** Yes. And so that's, that's why our bodies feel that tension, it's like that tension that's held there for like a long period of time, that's why you're sore the next day. And, and, and it's like, it could be natural. It could be like, okay, I'm used to slouching or I'm used to keeping my shoulders like up towards my ears. -[00:20:27] And, and your body's basically telling you the next day, "Hey, you've done this for too long, can you stop?" +[20:27] And, and your body's basically telling you the next day, "Hey, you've done this for too long, can you stop?" -[00:20:34] **Carl Vitullo:** Right. Yeah, definitely. +[20:34] **Carl Vitullo:** Right. Yeah, definitely. -[00:20:36] **Jenny Truong:** One more. So we reached the last state of the most five common states of burnout that people experience. And that last, that last state is like very bad. So it's technically called habitual burnout, but. It's all burnout in a sense. Like no matter which state that you're in, it's very detrimental to your mental health and physical. +[20:36] **Jenny Truong:** One more. So we reached the last state of the most five common states of burnout that people experience. And that last, that last state is like very bad. So it's technically called habitual burnout, but. It's all burnout in a sense. Like no matter which state that you're in, it's very detrimental to your mental health and physical. -[00:20:57] And so that last state is where it's too late to turn back essentially. And you can't really mentally get out of it yourself. It's very highly recommended that you seek medical or external expertise because at that point, like your mind isn't going to be intentional anymore. It's just like, It's really hard to describe, but in my eyes it's, it's the point where you just become unmotivated to even get outta bed. +[20:57] And so that last state is where it's too late to turn back essentially. And you can't really mentally get out of it yourself. It's very highly recommended that you seek medical or external expertise because at that point, like your mind isn't going to be intentional anymore. It's just like, It's really hard to describe, but in my eyes it's, it's the point where you just become unmotivated to even get outta bed. -[00:21:26] **Carl Vitullo:** Sure. Okay. Yeah I think habitual burnout, unmotivated to get out of bed, that's where it does start sounding like it has a lot of symptoms in common with depression. +[21:26] **Carl Vitullo:** Sure. Okay. Yeah I think habitual burnout, unmotivated to get out of bed, that's where it does start sounding like it has a lot of symptoms in common with depression. -[00:21:37] **Jenny Truong:** Mm-hmm. +[21:37] **Jenny Truong:** Mm-hmm. -[00:21:38] **Carl Vitullo:** Yeah, for sure. +[21:38] **Carl Vitullo:** Yeah, for sure. -[00:21:40] **Jenny Truong:** And that's where that type of burnout can lead to depression. And there's a lot of similarities between the two, and I highly recommend that you research the difference if it really, if it, if you think it's something that affects you. But if you're intentional, if you can try to be, if intentional with the things that your mind and your body are experiencing, that will help so much in recognizing like, okay. Where am I in this state of, whether it's burnout or in your mind, and how do I get somewhere where I want to be? +[21:40] **Jenny Truong:** And that's where that type of burnout can lead to depression. And there's a lot of similarities between the two, and I highly recommend that you research the difference if it really, if it, if you think it's something that affects you. But if you're intentional, if you can try to be, if intentional with the things that your mind and your body are experiencing, that will help so much in recognizing like, okay. Where am I in this state of, whether it's burnout or in your mind, and how do I get somewhere where I want to be? -[00:22:12] **Carl Vitullo:** Yeah, so you mentioned these are five stages of burnout that you pulled from what you can, can you say the name of the researcher again? +[22:12] **Carl Vitullo:** Yeah, so you mentioned these are five stages of burnout that you pulled from what you can, can you say the name of the researcher again? -[00:22:22] **Jenny Truong:** Dr. Herbert Freudenberger? So he's a German-American psychiatrist that researched, you know, all these different types of burnout. One of the reasons why he researched it is because he feels like helping professions suffer more than most other professions. And what I mean by helping professions is like, People in like sales where they're constantly putting out effort to help people outside of just themselves and people in the medical industry. +[22:22] **Jenny Truong:** Dr. Herbert Freudenberger? So he's a German-American psychiatrist that researched, you know, all these different types of burnout. One of the reasons why he researched it is because he feels like helping professions suffer more than most other professions. And what I mean by helping professions is like, People in like sales where they're constantly putting out effort to help people outside of just themselves and people in the medical industry. -[00:22:50] And he also mentions like people in the tech community very briefly, but to me, like I think the tech community and developers we're all in this helping profession because we're building tools that affect people more than just us. +[22:50] And he also mentions like people in the tech community very briefly, but to me, like I think the tech community and developers we're all in this helping profession because we're building tools that affect people more than just us. -[00:23:04] **Carl Vitullo:** Sure. Yeah, that makes sense. You're, you're concerned for others' needs maybe in a very abstract and technical way, but Sure. Yeah. So just to, to restate the, those five stages of burnout. So there's the honeymoon period, the onset of stress, chronic stress. Then like initial burnout and chronic burnout. +[23:04] **Carl Vitullo:** Sure. Yeah, that makes sense. You're, you're concerned for others' needs maybe in a very abstract and technical way, but Sure. Yeah. So just to, to restate the, those five stages of burnout. So there's the honeymoon period, the onset of stress, chronic stress. Then like initial burnout and chronic burnout. -[00:23:24] **Jenny Truong:** Mhm, yeah, those are the most common if you were to categorize all 12. +[23:24] **Jenny Truong:** Mhm, yeah, those are the most common if you were to categorize all 12. -## [00:23:28] When to seek help +## [23:28] When to seek help -[00:23:28] **Carl Vitullo:** Sure. Okay. You know, this is gonna vary a lot, person by person and situation by situation, but, there are tools you can use to sort of manage your own stress and your own levels of burnout. Do you think somewhere along those stages you cross the threshold where it's now the stress has become so chronic, the burnout has become so deep that it's now clear, more clear that external help is, will be needed to get yourself out of that state? +[23:28] **Carl Vitullo:** Sure. Okay. You know, this is gonna vary a lot, person by person and situation by situation, but, there are tools you can use to sort of manage your own stress and your own levels of burnout. Do you think somewhere along those stages you cross the threshold where it's now the stress has become so chronic, the burnout has become so deep that it's now clear, more clear that external help is, will be needed to get yourself out of that state? -[00:23:57] **Jenny Truong:** Personally, I like after researching all of this, I think once you reach any state of those five, you should seek help. Because like let's say you're in the first state and you're like saying yes to everything, because yes, you're capable, but you don't have enough time. And I say that because you only ha you should only work 40 hours a week. +[23:57] **Jenny Truong:** Personally, I like after researching all of this, I think once you reach any state of those five, you should seek help. Because like let's say you're in the first state and you're like saying yes to everything, because yes, you're capable, but you don't have enough time. And I say that because you only ha you should only work 40 hours a week. -[00:24:16] If not less. And so like when you're in that state and you start realizing like, oh no, I don't wanna get burned out. You can, you gotta put up your boundaries, your work boundaries, and you gotta put up, like, you gotta realize, okay, I myself am a priority and if I can't prioritize myself that I won't be performing at my best. +[24:16] If not less. And so like when you're in that state and you start realizing like, oh no, I don't wanna get burned out. You can, you gotta put up your boundaries, your work boundaries, and you gotta put up, like, you gotta realize, okay, I myself am a priority and if I can't prioritize myself that I won't be performing at my best. -[00:24:36] You know, like any state of burnout that you might think you are in, that's where you should seek some type of help. And it does. Some people don't have resources to therapy, right? So you could reach out to even friends and family that you trust enough to listen and, and that you look up to, to seek advice from it. +[24:36] You know, like any state of burnout that you might think you are in, that's where you should seek some type of help. And it does. Some people don't have resources to therapy, right? So you could reach out to even friends and family that you trust enough to listen and, and that you look up to, to seek advice from it. -[00:24:57] It can just be a relative or a best friend or someone in your life that you highly look up to, and I'm sure they're gonna be concerned for your health as well. +[24:57] It can just be a relative or a best friend or someone in your life that you highly look up to, and I'm sure they're gonna be concerned for your health as well. -[00:25:07] **Carl Vitullo:** Yeah, for sure. Yeah. Maybe even a Discord community. +[25:07] **Carl Vitullo:** Yeah, for sure. Yeah. Maybe even a Discord community. -[00:25:10] **Jenny Truong:** Absolutely, and I will say I personally find comfort in talking to a stranger, which is why I talk to a therapist rather than my family, because they're less judgmental. +[25:10] **Jenny Truong:** Absolutely, and I will say I personally find comfort in talking to a stranger, which is why I talk to a therapist rather than my family, because they're less judgmental. -[00:25:21] **Carl Vitullo:** Right. Yeah. That is something that I've thought about a lot in my life is there is something a little freeing in talking to someone who, you know, you won't have an ongoing interaction with, an ongoing relationship with it. You can just kind of, you overlap for what, however long you do, and then you each go your separate ways. +[25:21] **Carl Vitullo:** Right. Yeah. That is something that I've thought about a lot in my life is there is something a little freeing in talking to someone who, you know, you won't have an ongoing interaction with, an ongoing relationship with it. You can just kind of, you overlap for what, however long you do, and then you each go your separate ways. -[00:25:41] Whereas if you're talking to family, if you're talking to someone who knows you deeply, maybe there's so much context there and so much future that it, it can be hard to get into those harder subjects. +[25:41] Whereas if you're talking to family, if you're talking to someone who knows you deeply, maybe there's so much context there and so much future that it, it can be hard to get into those harder subjects. -[00:25:51] **Jenny Truong:** And there's also judgment. We're raised in a society where we have to have all these judgments, and yes, we are allowed to have feelings and preferences, and yes, it is true, but we don't have to push that on people. +[25:51] **Jenny Truong:** And there's also judgment. We're raised in a society where we have to have all these judgments, and yes, we are allowed to have feelings and preferences, and yes, it is true, but we don't have to push that on people. -[00:26:05] **Carl Vitullo:** Judgment, I think is I, so something that I think many of my friends would, uh, I, I think I make a point of talking about sort of the contrast between judgment and curiosity, like, uh, So many. I, I think it is so much more. I think it's very freeing in your life to be conscious of, am I assigning a judgment to this? +[26:05] **Carl Vitullo:** Judgment, I think is I, so something that I think many of my friends would, uh, I, I think I make a point of talking about sort of the contrast between judgment and curiosity, like, uh, So many. I, I think it is so much more. I think it's very freeing in your life to be conscious of, am I assigning a judgment to this? -[00:26:26] And then consciously derailing that and saying, no, like, how can I be curious about this? What about instead of looking to dismiss or assign some kind of value or lack of value to, how can I be curious about this? +[26:26] And then consciously derailing that and saying, no, like, how can I be curious about this? What about instead of looking to dismiss or assign some kind of value or lack of value to, how can I be curious about this? -## [00:26:41] Using curiosity instead of judgement +## [26:41] Using curiosity instead of judgement -[00:26:41] **Jenny Truong:** In therapy, that's where I learned to ask the question, is this true? If it's true, is it an opinion or an emotion or a fact? Like what I mean by is it true? Is is this a fact? And if it's not a fact, then ask yourself why. And it doesn't have to be blaming like, oh, because I, this is what I was raised to think. +[26:41] **Jenny Truong:** In therapy, that's where I learned to ask the question, is this true? If it's true, is it an opinion or an emotion or a fact? Like what I mean by is it true? Is is this a fact? And if it's not a fact, then ask yourself why. And it doesn't have to be blaming like, oh, because I, this is what I was raised to think. -[00:27:00] It could just be. Like a curious why, like why do I feel this strongly about this topic or this statement or this emotion, right? And so with understanding, okay, this is not a fact, so it's not true. And digging deeper into that, like that's where the, you can help yourself become more aware and you also become kind kinder to yourself in a way. +[27:00] It could just be. Like a curious why, like why do I feel this strongly about this topic or this statement or this emotion, right? And so with understanding, okay, this is not a fact, so it's not true. And digging deeper into that, like that's where the, you can help yourself become more aware and you also become kind kinder to yourself in a way. -[00:27:20] Cuz then you realize, okay, I am being judgmental. Whether or not I have reasons to be judgmental and where they stem from doesn't matter. It's the fact that I just noticed this is not a fact. +[27:20] Cuz then you realize, okay, I am being judgmental. Whether or not I have reasons to be judgmental and where they stem from doesn't matter. It's the fact that I just noticed this is not a fact. -[00:27:31] **Carl Vitullo:** Sure. Yeah. Right. I think that, I think that is really powerful. It, it, it, it feels almost trite and too small to be as. Powerful as it is, but it is, I think if, you know, it's, if, if you can bring that energy of sort of interrogating your own thoughts a little bit just now and again, you know, o okay, there's, there's also unhealthy rumination, like you can do it too much, but interrogating it a little bit and just trying to better understand your deeper assumptions that you bring to the world. +[27:31] **Carl Vitullo:** Sure. Yeah. Right. I think that, I think that is really powerful. It, it, it, it feels almost trite and too small to be as. Powerful as it is, but it is, I think if, you know, it's, if, if you can bring that energy of sort of interrogating your own thoughts a little bit just now and again, you know, o okay, there's, there's also unhealthy rumination, like you can do it too much, but interrogating it a little bit and just trying to better understand your deeper assumptions that you bring to the world. -[00:28:02] Yeah. I think that that can be really powerful to inform what am I judgmental against? Should I be, are there good things in there too? +[28:02] Yeah. I think that that can be really powerful to inform what am I judgmental against? Should I be, are there good things in there too? -[00:28:09] **Jenny Truong:** It definitely encourages you to, one, be more self-aware, but two, just be more open-minded. +[28:09] **Jenny Truong:** It definitely encourages you to, one, be more self-aware, but two, just be more open-minded. -[00:28:16] **Carl Vitullo:** Open-minded. Yeah, definitely. There was a, a, a comment in, in the chat that I, I think would be good to talk about. +[28:16] **Carl Vitullo:** Open-minded. Yeah, definitely. There was a, a, a comment in, in the chat that I, I think would be good to talk about. -## [00:28:23] What about the junior devs? +## [28:23] What about the junior devs? -[00:28:23] **Carl Vitullo:** What about the juniors who are trying to get a job? There's no way to work 40 hours and still. Get a place. I think that that's something that I've been aware of in my, my thinking about sort of mental health and where I'm at in my life is I'm 10 years into my career, like I am established, you know, I can go to a conference and network with people and like I'm, I, I have arrived in a se in a way that people who are earlier in their career haven't, and yeah. +[28:23] **Carl Vitullo:** What about the juniors who are trying to get a job? There's no way to work 40 hours and still. Get a place. I think that that's something that I've been aware of in my, my thinking about sort of mental health and where I'm at in my life is I'm 10 years into my career, like I am established, you know, I can go to a conference and network with people and like I'm, I, I have arrived in a se in a way that people who are earlier in their career haven't, and yeah. -[00:28:49] So I guess like thinking about stress and burnout and managing all of that. Do, do you have any, yeah. What, what do you think about, thinking about stress and burnout early in your career when there is so much external pressure to overwork? +[28:49] So I guess like thinking about stress and burnout and managing all of that. Do, do you have any, yeah. What, what do you think about, thinking about stress and burnout early in your career when there is so much external pressure to overwork? -[00:29:04] **Jenny Truong:** I find this as an opportunity to redefine the different rates of productivity for everyone on your team. Right? And I know it's like, it's like a dangerous topic to approach because you're like, well, I wanna overwork because I need to show my worth. And then that's where I move up on the ladder or stay at a company, cuz if not like they'll hire someone else. +[29:04] **Jenny Truong:** I find this as an opportunity to redefine the different rates of productivity for everyone on your team. Right? And I know it's like, it's like a dangerous topic to approach because you're like, well, I wanna overwork because I need to show my worth. And then that's where I move up on the ladder or stay at a company, cuz if not like they'll hire someone else. -[00:29:24] That's the fear. That is all fear that society puts on you and it's all false because, In the end, if you can, like, this is my own personal belief and from my own personal experience, but if you can redefine what your work boundaries are, the people in like, and if they're decent people, they will respect that and say like, okay, this person strictly shuts off and doesn't check their emails after 5:00 PM. +[29:24] That's the fear. That is all fear that society puts on you and it's all false because, In the end, if you can, like, this is my own personal belief and from my own personal experience, but if you can redefine what your work boundaries are, the people in like, and if they're decent people, they will respect that and say like, okay, this person strictly shuts off and doesn't check their emails after 5:00 PM. -[00:29:50] You know, it's like the little boundaries that you can place to make people respect you more and. I'm going to have a lot of people disagree with me on this, but. It's what I firmly believe and what I have done at, even at this startup, at state leader ai, like that's what I tell people. And then, you know what? +[29:50] You know, it's like the little boundaries that you can place to make people respect you more and. I'm going to have a lot of people disagree with me on this, but. It's what I firmly believe and what I have done at, even at this startup, at state leader ai, like that's what I tell people. And then, you know what? -[00:30:08] All my coworkers started doing the same thing after 5:00 PM We don't check Discord, we don't check our emails unless it's an emergency. Then my boss will reach me on my cell phone and tell me like, Hey, we really need this fixed now. Like it's a major bug. And, and that's when I know like, okay, I'll sacrifice this amount of time to fix it, but then the next day, I will remind my coworkers I took three hours, so I'm gonna take like a two and a half hour lunch, for example. +[30:08] All my coworkers started doing the same thing after 5:00 PM We don't check Discord, we don't check our emails unless it's an emergency. Then my boss will reach me on my cell phone and tell me like, Hey, we really need this fixed now. Like it's a major bug. And, and that's when I know like, okay, I'll sacrifice this amount of time to fix it, but then the next day, I will remind my coworkers I took three hours, so I'm gonna take like a two and a half hour lunch, for example. -[00:30:35] That's my advice to you, to be that person, to start that movement essentially, and normalize the way we should respect each other in the workplace. +[30:35] That's my advice to you, to be that person, to start that movement essentially, and normalize the way we should respect each other in the workplace. -## [00:30:44] Contrasting burnout in tech vs other expert fields +## [30:44] Contrasting burnout in tech vs other expert fields -[00:30:44] **Carl Vitullo:** Yeah, for sure I can. Yeah, I can definitely empathize with that. I think it's, cuz it is a, it's a cultural thing on a team. It's a matter of, having healthy boundaries within work is definitely super important. I've thought a little bit about sort of like other career paths. Like, you know, people talk about doctors and burnout and lawyers and burnout. +[30:44] **Carl Vitullo:** Yeah, for sure I can. Yeah, I can definitely empathize with that. I think it's, cuz it is a, it's a cultural thing on a team. It's a matter of, having healthy boundaries within work is definitely super important. I've thought a little bit about sort of like other career paths. Like, you know, people talk about doctors and burnout and lawyers and burnout. -[00:31:05] You know, those are two industries that in a lot of ways have rigidly codified around, burning out new entrants into the, into the field. And I think tech is not quite so rigidly, you know, in that, you know, there's not like the, you know, you, you graduate medical school and you get your first, your internship and your residency. +[31:05] You know, those are two industries that in a lot of ways have rigidly codified around, burning out new entrants into the, into the field. And I think tech is not quite so rigidly, you know, in that, you know, there's not like the, you know, you, you graduate medical school and you get your first, your internship and your residency. -[00:31:28] And like I hear, I've talked with friends who've done that path and it's like, " You do what? You worked for, how long straight, and you were responsible for people's health and lives?" So yeah, I think tech does have more of an opportunity than some fields to set those boundaries. But at, you know, on the flip side, when you're scrambling for any opportunity, I guess it can be really hard to come into it with your own, it, it can be hard to set boundaries. +[31:28] And like I hear, I've talked with friends who've done that path and it's like, " You do what? You worked for, how long straight, and you were responsible for people's health and lives?" So yeah, I think tech does have more of an opportunity than some fields to set those boundaries. But at, you know, on the flip side, when you're scrambling for any opportunity, I guess it can be really hard to come into it with your own, it, it can be hard to set boundaries. -[00:31:56] **Jenny Truong:** It is hard, but that's where like, that's where you have to ask yourself, like, is this gonna be worth it for me to risk, let's say the next six months on being a pushover and being like, and I'm sorry if I said pushover as a strong word, but I consider myself a pushover when I start saying yes to people, to helping them. +[31:56] **Jenny Truong:** It is hard, but that's where like, that's where you have to ask yourself, like, is this gonna be worth it for me to risk, let's say the next six months on being a pushover and being like, and I'm sorry if I said pushover as a strong word, but I consider myself a pushover when I start saying yes to people, to helping them. -[00:32:16] And so I, I'm basically reflecting on myself. You have to ask yourself like, is this gonna be worth it for six months? Because if it's not worth it and then you find out that you've been putting all this hard work in and your employer is, is just not going to promote you or not even going to recognize your work and then claim that work for their own, that's when you need to get out of that workplace and find better opportunities. +[32:16] And so I, I'm basically reflecting on myself. You have to ask yourself like, is this gonna be worth it for six months? Because if it's not worth it and then you find out that you've been putting all this hard work in and your employer is, is just not going to promote you or not even going to recognize your work and then claim that work for their own, that's when you need to get out of that workplace and find better opportunities. -[00:32:39] Cuz there are people out there, there are decent people out there, but there's also a lot of non decent people out there. +[32:39] Cuz there are people out there, there are decent people out there, but there's also a lot of non decent people out there. -[00:32:44] **Carl Vitullo:** Yeah, a lot of people who will happily exploit you for whatever energy you're willing to +[32:44] **Carl Vitullo:** Yeah, a lot of people who will happily exploit you for whatever energy you're willing to -[00:32:49] **Jenny Truong:** Yes, and that is where you need to understand. This place is not for you if they're going to exploit you for that. +[32:49] **Jenny Truong:** Yes, and that is where you need to understand. This place is not for you if they're going to exploit you for that. -[00:32:56] **Carl Vitullo:** Yeah. Yeah. And maybe, maybe another way of thinking about it is, so talking about like the honeymoon period and going, yeah, I can do everything. I can take on everything. And then the, into the onset of stress, maybe a, a similar but distinct way to think about a situation like that if, you, you know, I'm trying to put myself in the shoes of someone early career who wants to get ahead, wants to give it their all. +[32:56] **Carl Vitullo:** Yeah. Yeah. And maybe, maybe another way of thinking about it is, so talking about like the honeymoon period and going, yeah, I can do everything. I can take on everything. And then the, into the onset of stress, maybe a, a similar but distinct way to think about a situation like that if, you, you know, I'm trying to put myself in the shoes of someone early career who wants to get ahead, wants to give it their all. -[00:33:21] Maybe a way of thinking about it is of going into it sort of with your eyes open, aware of burnout and stress as a serious risk, like it is genuinely a risk. It's not something that you can just gloss over and say like, no, it'll be fine. But that, like you were saying about, you know, thinking about it like six months. +[33:21] Maybe a way of thinking about it is of going into it sort of with your eyes open, aware of burnout and stress as a serious risk, like it is genuinely a risk. It's not something that you can just gloss over and say like, no, it'll be fine. But that, like you were saying about, you know, thinking about it like six months. -[00:33:41] So like if, if, when you take something on, considering how long you are willing to over commit yourself and how much, you know, how long you can go at a, at above your capacity. +[33:41] So like if, if, when you take something on, considering how long you are willing to over commit yourself and how much, you know, how long you can go at a, at above your capacity. -[00:33:52] **Jenny Truong:** This also reminds me of like a practice that I started doing. Uh, so I've only a little bit of background on me. I've only been in tech for three and a half, if not four years, including an internship fresh out of a university. And what I started doing after I found out I was completely burned out the first two years of working in tech was that I don't voice. +[33:52] **Jenny Truong:** This also reminds me of like a practice that I started doing. Uh, so I've only a little bit of background on me. I've only been in tech for three and a half, if not four years, including an internship fresh out of a university. And what I started doing after I found out I was completely burned out the first two years of working in tech was that I don't voice. -[00:34:14] What my limitations are and what my boundaries are. So when you, let's say you're in the honeymoon phase and you're so excited. You just got your first job and this is the first company that is willing to, you know, invest in you. +[34:14] What my limitations are and what my boundaries are. So when you, let's say you're in the honeymoon phase and you're so excited. You just got your first job and this is the first company that is willing to, you know, invest in you. -[00:34:25] What you can practice is, is when people ask you to do these favors or these tasks that 4:59 PM is, you can tell them, " I will do this task even though it's not technically part of my responsibilities. I'm happy to take it on and help you achieve it, but I'm not going to work on this until the following workday." Or you can say, I will work on this, but I hope that my lunch will be extended the following, workday and so on. So like, it's kind of like a trade off you. +[34:25] What you can practice is, is when people ask you to do these favors or these tasks that 4:59 PM is, you can tell them, " I will do this task even though it's not technically part of my responsibilities. I'm happy to take it on and help you achieve it, but I'm not going to work on this until the following workday." Or you can say, I will work on this, but I hope that my lunch will be extended the following, workday and so on. So like, it's kind of like a trade off you. -[00:34:56] You have them recognize that you're sacrificing something to help them out. And then in trade, like you trade for either more time to do things for yourself or eat lunch, or you just, you gotta put that boundary out there in the beginning so then they can also recognize, oh, you're right. Like I shouldn't be asking someone to do a task at 4:59 PM. +[34:56] You have them recognize that you're sacrificing something to help them out. And then in trade, like you trade for either more time to do things for yourself or eat lunch, or you just, you gotta put that boundary out there in the beginning so then they can also recognize, oh, you're right. Like I shouldn't be asking someone to do a task at 4:59 PM. -[00:35:20] **Carl Vitullo:** Right. And so maybe that, that makes me think of boundaries as less like hard lines in the sand. Like, oh, I'm not gonna do anything after 5:00 PM on a Friday. But maybe more like, okay, that's a good boundary. I don't want to say not to do that, but thinking of boundaries as your available capacity, maybe. +[35:20] **Carl Vitullo:** Right. And so maybe that, that makes me think of boundaries as less like hard lines in the sand. Like, oh, I'm not gonna do anything after 5:00 PM on a Friday. But maybe more like, okay, that's a good boundary. I don't want to say not to do that, but thinking of boundaries as your available capacity, maybe. -## [00:35:40] Mental inventories +## [35:40] Mental inventories -[00:35:40] **Carl Vitullo:** Maybe this is a good segue into, uh, as we were preparing to get on this call, you brought up the, the idea of like a mental inventory. And so I'm thinking of sort of like, maybe part of setting boundaries is sort of that, being aware of how much you can work, how much of yourself you can give, and then, you know, the follow up the upkeep work is that mental inventory of saying, what am I doing? How much of my capacity am I using? Could you talk a little bit about that idea of a mental inventory? Um, +[35:40] **Carl Vitullo:** Maybe this is a good segue into, uh, as we were preparing to get on this call, you brought up the, the idea of like a mental inventory. And so I'm thinking of sort of like, maybe part of setting boundaries is sort of that, being aware of how much you can work, how much of yourself you can give, and then, you know, the follow up the upkeep work is that mental inventory of saying, what am I doing? How much of my capacity am I using? Could you talk a little bit about that idea of a mental inventory? Um, -[00:36:11] **Jenny Truong:** Yeah, so part of that mental inventory is, is knowing what your priorities are. So if you prioritize yourself, then you can put that respect and reserve for yourself, so you respect yourself enough to let others know. You can contact me after 5:00 PM. I may or may not respond, but like, just the fact that you can put it out there so people understand, you know, you're not going to be working those prolonged hours just to, just to sacrifice, you know, life. +[36:11] **Jenny Truong:** Yeah, so part of that mental inventory is, is knowing what your priorities are. So if you prioritize yourself, then you can put that respect and reserve for yourself, so you respect yourself enough to let others know. You can contact me after 5:00 PM. I may or may not respond, but like, just the fact that you can put it out there so people understand, you know, you're not going to be working those prolonged hours just to, just to sacrifice, you know, life. -[00:36:41] And so part of that mental inventory is, is self-awareness and recognizing, but also putting those boundaries out there. So then, you know, Not to burn yourself out. And I know these are like practices that you'll achieve later when you're early on into the burnout stages, you're not gonna know where to start, how to get there. +[36:41] And so part of that mental inventory is, is self-awareness and recognizing, but also putting those boundaries out there. So then, you know, Not to burn yourself out. And I know these are like practices that you'll achieve later when you're early on into the burnout stages, you're not gonna know where to start, how to get there. -[00:36:59] It's gonna get overwhelming, but you just start small with either writing those sticky notes and putting them around the house where you constantly visit and then yeah, and then accepting like, okay, you're right. I told my coworkers and my boss, I wouldn't be working past 5:00 PM so I'm going to actually take action on this. +[36:59] It's gonna get overwhelming, but you just start small with either writing those sticky notes and putting them around the house where you constantly visit and then yeah, and then accepting like, okay, you're right. I told my coworkers and my boss, I wouldn't be working past 5:00 PM so I'm going to actually take action on this. -[00:37:17] And then you be responsible for yourself. +[37:17] And then you be responsible for yourself. -[00:37:19] **Carl Vitullo:** Right. Ultimately, we are all responsible for ourselves. No one else will look out for us. +[37:19] **Carl Vitullo:** Right. Ultimately, we are all responsible for ourselves. No one else will look out for us. -[00:37:25] **Jenny Truong:** Yes. +[37:25] **Jenny Truong:** Yes. -## [00:37:25] Personal boundaries and 7 types of rest +## [37:25] Personal boundaries and 7 types of rest -[00:37:25] **Carl Vitullo:** ( nervous laughter) Yeah. I, and I guess I also wanna contrast, we've talked a little bit about, you know, sort of like time cutoffs and keeping like, working hours. I have always been a very erratic person, you know, like ADHD and whatever are among my diagnoses. +[37:25] **Carl Vitullo:** ( nervous laughter) Yeah. I, and I guess I also wanna contrast, we've talked a little bit about, you know, sort of like time cutoffs and keeping like, working hours. I have always been a very erratic person, you know, like ADHD and whatever are among my diagnoses. -[00:37:42] So the idea of like getting up at nine in the morning and like working until five with like lunch break has always been very, I don't know, it's grated against me a little bit. So I, I personally have found it very helpful to say, "I will commit this time, this energy that I have to this project, to this company. But like, don't tell me when to do it." I kind of chased my inspiration personally, just for myself, over working 10, 15 years now. I have learned ways to sort of lean into those quirks of how my brain operates. Like, okay, I'm adhd. I struggle to. Do small rote things, but when I, when I get inspired, it's just best to lean into it. +[37:42] So the idea of like getting up at nine in the morning and like working until five with like lunch break has always been very, I don't know, it's grated against me a little bit. So I, I personally have found it very helpful to say, "I will commit this time, this energy that I have to this project, to this company. But like, don't tell me when to do it." I kind of chased my inspiration personally, just for myself, over working 10, 15 years now. I have learned ways to sort of lean into those quirks of how my brain operates. Like, okay, I'm adhd. I struggle to. Do small rote things, but when I, when I get inspired, it's just best to lean into it. -[00:38:25] And if I get inspired at 11:00 PM on a Tuesday, maybe I'll work until two in the morning because that's how my brain works. Then I'm in it. And if I'm not in it right now, then it's, I'm not gonna do as if I try to come back to it later, I won't get the same out output. Yeah. But like still coming at it with that sense of managing your boundaries, managing your capacity, and being in tune with your, with what your body's telling you. I guess. +[38:25] And if I get inspired at 11:00 PM on a Tuesday, maybe I'll work until two in the morning because that's how my brain works. Then I'm in it. And if I'm not in it right now, then it's, I'm not gonna do as if I try to come back to it later, I won't get the same out output. Yeah. But like still coming at it with that sense of managing your boundaries, managing your capacity, and being in tune with your, with what your body's telling you. I guess. -[00:38:51] **Jenny Truong:** I want to start by saying that you're in a very fortunate place where you can work remotely and schedule your own work hours. +[38:51] **Jenny Truong:** I want to start by saying that you're in a very fortunate place where you can work remotely and schedule your own work hours. -[00:39:00] **Carl Vitullo:** a hundred percent. +[39:00] **Carl Vitullo:** a hundred percent. -[00:39:01] **Jenny Truong:** And not all of us are able to schedule our own hours or even work remotely. So this is where the seven types of rests come in, that I absolutely encourage people to explore the seven types of rests, whether it's in a book or a podcast that you come across. +[39:01] **Jenny Truong:** And not all of us are able to schedule our own hours or even work remotely. So this is where the seven types of rests come in, that I absolutely encourage people to explore the seven types of rests, whether it's in a book or a podcast that you come across. -[00:39:19] Look up the Dr. Sandra Dalton Smith. Take a look at her TED Talks. Take a look at like different articles that, um, she's put out there and all the research that she's done, and find one of these practices to do for 15 to 30 minutes a day in between the different tasks that you're completing. Because when you are constantly using your brain to solve critical problems, you are becoming deficit in other areas, like in that mental area, but also different areas like haven't been touched yet in your brain. +[39:19] Look up the Dr. Sandra Dalton Smith. Take a look at her TED Talks. Take a look at like different articles that, um, she's put out there and all the research that she's done, and find one of these practices to do for 15 to 30 minutes a day in between the different tasks that you're completing. Because when you are constantly using your brain to solve critical problems, you are becoming deficit in other areas, like in that mental area, but also different areas like haven't been touched yet in your brain. -[00:39:51] And so what she, what I mean by the seven types of rest is that as humans, like we experience so many different things, thanks to the different lobes of our brain being active, you know, +[39:51] And so what she, what I mean by the seven types of rest is that as humans, like we experience so many different things, thanks to the different lobes of our brain being active, you know, -[00:40:02] **Carl Vitullo:** Sure. Oh yeah, that's actually, I like that framing of it. Sort of thinking of the different areas of rest as different parts of your brain being in use and letting some of them rest and some of them, you know, like, like give an analogy of a workout. You know, you have arm day and you've got leg day. +[40:02] **Carl Vitullo:** Sure. Oh yeah, that's actually, I like that framing of it. Sort of thinking of the different areas of rest as different parts of your brain being in use and letting some of them rest and some of them, you know, like, like give an analogy of a workout. You know, you have arm day and you've got leg day. -[00:40:18] **Jenny Truong:** Yeah. Different parts of your muscles that you are putting attention towards, right? So with your brain and, and discovering like what types of rest deficit you might be in, you can just be like, okay, well you know what? I don't want to like, think critically. Anymore and I need to just take a nap and that's like a physical rest. +[40:18] **Jenny Truong:** Yeah. Different parts of your muscles that you are putting attention towards, right? So with your brain and, and discovering like what types of rest deficit you might be in, you can just be like, okay, well you know what? I don't want to like, think critically. Anymore and I need to just take a nap and that's like a physical rest. -[00:40:36] And we can go into the different seven types of rest if you want or if not, I highly encourage, I want to look her up. Seven types of rest by Sandra Dalton Smith. +[40:36] And we can go into the different seven types of rest if you want or if not, I highly encourage, I want to look her up. Seven types of rest by Sandra Dalton Smith. -[00:40:45] **Carl Vitullo:** Yeah, I, let's get into the seven types of rest. +[40:45] **Carl Vitullo:** Yeah, I, let's get into the seven types of rest. -[00:40:47] **Jenny Truong:** Okay. Yeah, so within physical, which is the first type, you have passive and active, and so you can look into passive as sleeping. Putting your body and your mind into a state where like it's just temporarily idle and on hold and not like exerting physical activities. And then you have the active rest, which is stretching or massages or doing some type of, just the fact that you can just push your shoulders down when they're like raised up really high because you're stressed. +[40:47] **Jenny Truong:** Okay. Yeah, so within physical, which is the first type, you have passive and active, and so you can look into passive as sleeping. Putting your body and your mind into a state where like it's just temporarily idle and on hold and not like exerting physical activities. And then you have the active rest, which is stretching or massages or doing some type of, just the fact that you can just push your shoulders down when they're like raised up really high because you're stressed. -[00:41:16] Just the fact that you doing that is letting your body physically rest. Then we have mental rest, which is the critical thinking and solving problems in order to rest mentally. You can go shop for groceries and find items in the grocery store or check out your to-do list and start crossing things off that you've already completed or even cooking if, if you're able to cook and follow like a recipe that doesn't require too much thinking and cut vegetables or meat, that activity gives your brain a chance to mentally rest. +[41:16] Just the fact that you doing that is letting your body physically rest. Then we have mental rest, which is the critical thinking and solving problems in order to rest mentally. You can go shop for groceries and find items in the grocery store or check out your to-do list and start crossing things off that you've already completed or even cooking if, if you're able to cook and follow like a recipe that doesn't require too much thinking and cut vegetables or meat, that activity gives your brain a chance to mentally rest. -[00:41:48] Then we have social rest, which is where you spend too much time and energy trying to have a conversation, like, I'm gonna be socially drained after this. So one of the things I'm gonna do after our chat is to just sit alone and put my phone on silent and not answer any phone calls for 15 to 30 minutes. +[41:48] Then we have social rest, which is where you spend too much time and energy trying to have a conversation, like, I'm gonna be socially drained after this. So one of the things I'm gonna do after our chat is to just sit alone and put my phone on silent and not answer any phone calls for 15 to 30 minutes. -[00:42:06] That's how much I've realized that I needed in order to socially rest and distance myself, and then be able to have another conversation again and not feel overwhelmed. Some people it could take five minutes. Some people don't even need that type of social rest. +[42:06] That's how much I've realized that I needed in order to socially rest and distance myself, and then be able to have another conversation again and not feel overwhelmed. Some people it could take five minutes. Some people don't even need that type of social rest. -[00:42:21] **Carl Vitullo:** Sure. +[42:21] **Carl Vitullo:** Sure. -[00:42:22] **Jenny Truong:** Yeah. Then we have spiritual rest, which is, think of it as like helping people outside of what can benefit you. +[42:22] **Jenny Truong:** Yeah. Then we have spiritual rest, which is, think of it as like helping people outside of what can benefit you. -[00:42:30] So you could volunteer, you can do activities that are faith-based, like praying it. It's the fact that you're, the actions that you're doing are not going to just benefit you. That's the type of spiritual rest that you can explore. Then we have sensory rest. So with working in tech and always being on the computer and on my phone, there's always emails and pings that I get from discord of, of people needing me for whatever it is they need me for (laughs). +[42:30] So you could volunteer, you can do activities that are faith-based, like praying it. It's the fact that you're, the actions that you're doing are not going to just benefit you. That's the type of spiritual rest that you can explore. Then we have sensory rest. So with working in tech and always being on the computer and on my phone, there's always emails and pings that I get from discord of, of people needing me for whatever it is they need me for (laughs). -[00:42:58] **Carl Vitullo:** Right. +[42:58] **Carl Vitullo:** Right. -[00:42:58] **Jenny Truong:** Yeah. That sensory rest could be as simple as like, okay, shutting off your phone, or if you can't do that, put yourself in a dark room and just have your eyes dilate and like, get used to a different type of environment, so then you're not constantly having like sunlight or the light in your room, like glared into your eyes or the screen of your computer, like constantly putting your eyes to work. +[42:58] **Jenny Truong:** Yeah. That sensory rest could be as simple as like, okay, shutting off your phone, or if you can't do that, put yourself in a dark room and just have your eyes dilate and like, get used to a different type of environment, so then you're not constantly having like sunlight or the light in your room, like glared into your eyes or the screen of your computer, like constantly putting your eyes to work. -[00:43:23] Sensory rest could be as simple as like, what I do is I take a bath once a week and I light candles, and the smell is like a sensory rest. To me because I don't usually smell candles all the time. And same thing with like submerging myself in water, like my body's in a different state where like I could be floating or like it's getting warmed up by the heat of the water and so on. +[43:23] Sensory rest could be as simple as like, what I do is I take a bath once a week and I light candles, and the smell is like a sensory rest. To me because I don't usually smell candles all the time. And same thing with like submerging myself in water, like my body's in a different state where like I could be floating or like it's getting warmed up by the heat of the water and so on. -[00:43:46] You know, that's a sensory rest, which also leads me to creative rest. Creative rest is where you explore different things that are. Not in your comfort zone. So like for example, you might be used to being in your house nine to five, and a creative rest could be just taking a walk. Or what I do is walk my dog. +[43:46] You know, that's a sensory rest, which also leads me to creative rest. Creative rest is where you explore different things that are. Not in your comfort zone. So like for example, you might be used to being in your house nine to five, and a creative rest could be just taking a walk. Or what I do is walk my dog. -[00:44:07] Some people don't have pets, so it could be as simple as just sitting outside and like staring at nature and look at the ducks, fly by or like, you know, waddle by or even if it's like, if you're in a cold place, it's probably not snowing anywhere where you all are right now. But if it is like, it's just as easy as watching the droplets fall from the sky and, and that itself is a creative rest or working at a cafe. +[44:07] Some people don't have pets, so it could be as simple as just sitting outside and like staring at nature and look at the ducks, fly by or like, you know, waddle by or even if it's like, if you're in a cold place, it's probably not snowing anywhere where you all are right now. But if it is like, it's just as easy as watching the droplets fall from the sky and, and that itself is a creative rest or working at a cafe. -[00:44:34] If you work from home and you have the flexibility, put yourself in an environment that you're not commonly like placed in and that you're kind of uncomfortable with. And that's where I don't want people to like force themselves to be uncomfortable, but the fact that you can like place yourself in an area where you're not normally in that itself is a creative rest. +[44:34] If you work from home and you have the flexibility, put yourself in an environment that you're not commonly like placed in and that you're kind of uncomfortable with. And that's where I don't want people to like force themselves to be uncomfortable, but the fact that you can like place yourself in an area where you're not normally in that itself is a creative rest. -[00:44:54] And then lastly, we have emotional rest, which is where you're intentionally trying to be there in a conversation and, and like uplift the other person. My experience with emotional arrest is that before tech, I was in the beauty industry, the cosmetology industry, and I constantly had to tell people like, yeah, like your hair, your skin, your nails look great, and like, I'm gonna do the best job that I can for you. +[44:54] And then lastly, we have emotional rest, which is where you're intentionally trying to be there in a conversation and, and like uplift the other person. My experience with emotional arrest is that before tech, I was in the beauty industry, the cosmetology industry, and I constantly had to tell people like, yeah, like your hair, your skin, your nails look great, and like, I'm gonna do the best job that I can for you. -[00:45:21] But that gets straining if you're working 10 hour days at a salon, which is what I used to do. And then after a couple days, if not a week, I start getting. Emotionally drained where I can't really fake the, Hey, how are you? Like, I'm so excited to see you anymore, and that's where I need that emotional break. +[45:21] But that gets straining if you're working 10 hour days at a salon, which is what I used to do. And then after a couple days, if not a week, I start getting. Emotionally drained where I can't really fake the, Hey, how are you? Like, I'm so excited to see you anymore, and that's where I need that emotional break. -[00:45:41] And just to be honest with the client and say, listen, I can't do these services for you. It's such a high demand that you're asking from me. So I can either have another esthetician help you or I can refer you to a different salon. Like it's the fact that you're being honest. And you're not forcing yourself to smile and, and put services on the other people where you're not having the most effort put in, if that makes sense. +[45:41] And just to be honest with the client and say, listen, I can't do these services for you. It's such a high demand that you're asking from me. So I can either have another esthetician help you or I can refer you to a different salon. Like it's the fact that you're being honest. And you're not forcing yourself to smile and, and put services on the other people where you're not having the most effort put in, if that makes sense. -[00:46:08] **Carl Vitullo:** Yeah. Right, right. As you were saying that, I was just thinking, yeah, that is emotional work that is being responsible for others' emotions is work. Taking a break from that is definitely important. +[46:08] **Carl Vitullo:** Yeah. Right, right. As you were saying that, I was just thinking, yeah, that is emotional work that is being responsible for others' emotions is work. Taking a break from that is definitely important. -## [00:46:19] Body and mind influencing each other +## [46:19] Body and mind influencing each other -[00:46:19] **Carl Vitullo:** I also wanted to go back to what you were saying about like taking a rest, taking a bath with a candle and whatever that was, you know, close to 10 years ago now, I was working with a therapist for the first time, like seriously in my adult life. +[46:19] **Carl Vitullo:** I also wanted to go back to what you were saying about like taking a rest, taking a bath with a candle and whatever that was, you know, close to 10 years ago now, I was working with a therapist for the first time, like seriously in my adult life. -[00:46:33] And that was something that they explicitly told me as like one form of treatment that was useful for me. So, you know, like your mileage may vary, but the justification being like, Tying it back to, you know, mu mu musculature and all sorts of those things like when you're immersed in hot water, your muscles relax, the warmth and the, you know, the pressure is a physi, it will physiologically trigger your muscles to relax. +[46:33] And that was something that they explicitly told me as like one form of treatment that was useful for me. So, you know, like your mileage may vary, but the justification being like, Tying it back to, you know, mu mu musculature and all sorts of those things like when you're immersed in hot water, your muscles relax, the warmth and the, you know, the pressure is a physi, it will physiologically trigger your muscles to relax. -[00:47:00] And so, you know, for me, at that time in my life, I was very stressed. I was very strained. And this therapist I was working with advised me to take a bath, come up with a little mantra that you repeat to yourself and then when you're feeling extremely stressed, when you're in this, you know, in that most acute point of stress, now you have a touch point. +[47:00] And so, you know, for me, at that time in my life, I was very stressed. I was very strained. And this therapist I was working with advised me to take a bath, come up with a little mantra that you repeat to yourself and then when you're feeling extremely stressed, when you're in this, you know, in that most acute point of stress, now you have a touch point. -[00:47:21] Use that mantra to summon the feeling in that moment and just to take the edge off of that stress a little bit, and that really stuck with me as such a, it's such an easy and powerful thing to do. +[47:21] Use that mantra to summon the feeling in that moment and just to take the edge off of that stress a little bit, and that really stuck with me as such a, it's such an easy and powerful thing to do. -[00:47:32] **Jenny Truong:** But it's hard to also mentally like pause on what you're working on and like be able to relax and do that. Before I took baths. I would like not be okay. Like when I first started taking baths, it was really hard to like not think about all the different things in the backlog that I was supposed to complete, you know, so, It's practice. +[47:32] **Jenny Truong:** But it's hard to also mentally like pause on what you're working on and like be able to relax and do that. Before I took baths. I would like not be okay. Like when I first started taking baths, it was really hard to like not think about all the different things in the backlog that I was supposed to complete, you know, so, It's practice. -[00:47:52] You just gotta try it gradually. And here's another thing, you can do the opposite of a warm bath and do an ice bath. That actually really helped me snap out of whatever current thing I'm thinking about and like be immersed in fear that this is gonna hurt. And then like, it's like a quick 32nd dip and then like get out and then you feel so refreshed. +[47:52] You just gotta try it gradually. And here's another thing, you can do the opposite of a warm bath and do an ice bath. That actually really helped me snap out of whatever current thing I'm thinking about and like be immersed in fear that this is gonna hurt. And then like, it's like a quick 32nd dip and then like get out and then you feel so refreshed. -[00:48:14] And if you can't, like let's say you don't have a bathtub and you can't like, Take an ice bath. It could be as simple as getting a big bowl that is as big as your face and dipping your face in like a bowl of ice for 10 seconds, for a full minute, if that. So it would be like six times, 10 seconds, ten second rests, or it's not six times. +[48:14] And if you can't, like let's say you don't have a bathtub and you can't like, Take an ice bath. It could be as simple as getting a big bowl that is as big as your face and dipping your face in like a bowl of ice for 10 seconds, for a full minute, if that. So it would be like six times, 10 seconds, ten second rests, or it's not six times. -[00:48:34] It's like three times I think. I can't count. But you know, just the fact that like you can do that to your brain and your body. It could be like a mental pause on like what exactly is stressing you out and then really help you understand like, okay, you're shocking your mind and your body to where it can pause on exactly what is currently freaking you out in the moment, and then putting you in a different state of mind of whether it's fear or relaxation or, you know, that ice bath would make me fearful until I did it, and then I felt so refreshed afterwards. +[48:34] It's like three times I think. I can't count. But you know, just the fact that like you can do that to your brain and your body. It could be like a mental pause on like what exactly is stressing you out and then really help you understand like, okay, you're shocking your mind and your body to where it can pause on exactly what is currently freaking you out in the moment, and then putting you in a different state of mind of whether it's fear or relaxation or, you know, that ice bath would make me fearful until I did it, and then I felt so refreshed afterwards. -[00:49:08] **Carl Vitullo:** Yeah. Yeah. I, I love that it is like a, Sort of a hacking your body to influence your mind. +[49:08] **Carl Vitullo:** Yeah. Yeah. I, I love that it is like a, Sort of a hacking your body to influence your mind. -[00:49:15] **Jenny Truong:** Yeah, that's one way to put it. +[49:15] **Jenny Truong:** Yeah, that's one way to put it. -[00:49:17] **Carl Vitullo:** Yeah. Yeah. I, you know what, like, it's all connected. You influence one thing and it'll affect the other. Well, we're coming up on an hour here. I did want to, so I, I had looked up Dr. Sandra Dalton Smith and found she has a book called Sacred Rest. +[49:17] **Carl Vitullo:** Yeah. Yeah. I, you know what, like, it's all connected. You influence one thing and it'll affect the other. Well, we're coming up on an hour here. I did want to, so I, I had looked up Dr. Sandra Dalton Smith and found she has a book called Sacred Rest. -[00:49:32] Are you familiar with that? +[49:32] Are you familiar with that? -[00:49:34] **Jenny Truong:** I am, I actually haven't read the full book yet, but it goes into so many details on like what your human, human body is capable of, and the mind. So if you have the time, let's. Listen to the podcast or read it. There's also plenty of articles that she's written as well. +[49:34] **Jenny Truong:** I am, I actually haven't read the full book yet, but it goes into so many details on like what your human, human body is capable of, and the mind. So if you have the time, let's. Listen to the podcast or read it. There's also plenty of articles that she's written as well. -[00:49:51] **Carl Vitullo:** Yeah. Okay. Yeah, I came prepared with a link to that, so yeah, definitely, like if you're feeling stressed, if you're feeling burned out, maybe that's a good resource to, uh, learn some tools to rest. Just good for everyone. Everyone gets stressed. Everyone needs rest. All right, Jenny, thank you so much for coming out. +[49:51] **Carl Vitullo:** Yeah. Okay. Yeah, I came prepared with a link to that, so yeah, definitely, like if you're feeling stressed, if you're feeling burned out, maybe that's a good resource to, uh, learn some tools to rest. Just good for everyone. Everyone gets stressed. Everyone needs rest. All right, Jenny, thank you so much for coming out. -[00:50:07] Before we close, anything else you, uh, you wanna close on? +[50:07] Before we close, anything else you, uh, you wanna close on? -## [00:50:10] Remember you're human +## [50:10] Remember you're human -[00:50:10] **Jenny Truong:** Yeah, so just a reminder that you are human, okay? You can only do so much. But if you push yourself too much, please try to recognize it and realize you're, you're just human. Do as much as you can for other people. You'll get to a limit where you can't anymore. And then you're gonna think like all these negative things about yourself. +[50:10] **Jenny Truong:** Yeah, so just a reminder that you are human, okay? You can only do so much. But if you push yourself too much, please try to recognize it and realize you're, you're just human. Do as much as you can for other people. You'll get to a limit where you can't anymore. And then you're gonna think like all these negative things about yourself. -[00:50:30] Don't do that. Try to be intent, intentional in experiencing life as a human. +[50:30] Don't do that. Try to be intent, intentional in experiencing life as a human. -[00:50:35] **Carl Vitullo:** Yep. We are all human. Be intentional about experiencing life. Great. Great place to close. Awesome. Thanks so much, Jenny. +[50:35] **Carl Vitullo:** Yep. We are all human. Be intentional about experiencing life. Great. Great place to close. Awesome. Thanks so much, Jenny. -[00:50:42] **Jenny Truong:** Thanks for having me. +[50:42] **Jenny Truong:** Thanks for having me. diff --git a/src/transcripts/josh-comeau.md b/src/transcripts/josh-comeau.md index ee86dd1..18bde04 100644 --- a/src/transcripts/josh-comeau.md +++ b/src/transcripts/josh-comeau.md @@ -11,428 +11,428 @@ people: "[Josh W Comeau](https://twitter.com/JoshWComeau)" ## Introductions -**Carl Vitullo:** Welcome, Josh Comeau! Thank you for coming out. Josh Comeau is a indie hacker educator, longtime member of the React community. I found that his explanations of complex subjects have a way of just being very intuitive and interactive, and I'm really excited to have him on and talk about his content creation process, how he's navigated the tech industry, and what he is looking forward to. [00:00:22] +**Carl Vitullo:** Welcome, Josh Comeau! Thank you for coming out. Josh Comeau is a indie hacker educator, longtime member of the React community. I found that his explanations of complex subjects have a way of just being very intuitive and interactive, and I'm really excited to have him on and talk about his content creation process, how he's navigated the tech industry, and what he is looking forward to. [00:22] -This is sort of a first trial of a different format of event that I'm thinking of. So far we've done office hours, but I'm thinking of this more as a community spotlight, just putting some attention on people in the ecosystem who are doing really great work. [00:00:36] +This is sort of a first trial of a different format of event that I'm thinking of. So far we've done office hours, but I'm thinking of this more as a community spotlight, just putting some attention on people in the ecosystem who are doing really great work. [00:36] -Josh, yeah. Anything you wanna say about yourself? [00:00:39] +Josh, yeah. Anything you wanna say about yourself? [00:39] -**Josh W Comeau:** Yeah, I appreciate the invitation. I'm happy to be here. I'm excited to talk about this stuff too. I've been, I think I started using React in 2015. And before that, I mean, I was like a Ruby developer in 2014 tinkering with HTML, CSS, a little bit of PHP, a little bit of WordPress before that. [00:00:55] +**Josh W Comeau:** Yeah, I appreciate the invitation. I'm happy to be here. I'm excited to talk about this stuff too. I've been, I think I started using React in 2015. And before that, I mean, I was like a Ruby developer in 2014 tinkering with HTML, CSS, a little bit of PHP, a little bit of WordPress before that. [00:55] -And it's just been a journey ever since. In 2020, I left the job that I had to become an independent content creator, blogging at my blog and creating online courses, and that's what I've been doing ever since. [00:01:06] +And it's just been a journey ever since. In 2020, I left the job that I had to become an independent content creator, blogging at my blog and creating online courses, and that's what I've been doing ever since. [01:06] -**Carl Vitullo:** Heck yeah. Coming up on three years independent. [00:01:10] +**Carl Vitullo:** Heck yeah. Coming up on three years independent. [01:10] -**Josh W Comeau:** Which is wild. It feels like it's been a few months, maybe. I mean, you know, it simultaneously feels really short and like I've been doing it forever, but [00:01:18] +**Josh W Comeau:** Which is wild. It feels like it's been a few months, maybe. I mean, you know, it simultaneously feels really short and like I've been doing it forever, but [01:18] -**Carl Vitullo:** Yeah. It's nice when things feel that way. It's, you know, it feels like it's got a long road ahead, in a good way. [00:01:23] +**Carl Vitullo:** Yeah. It's nice when things feel that way. It's, you know, it feels like it's got a long road ahead, in a good way. [01:23] **Josh W Comeau:** Because it's true, it does feel like I'm just at the beginning, like I'm in the middle of working on my second course. Cuz it takes me like two years to make a course. But there's several more I could imagine myself doing. So it certainly feels like there's a lot more to come. -## Early career [00:01:35] +## Early career [01:35] -**Carl Vitullo:** Heck yeah. So you sounds like had a very broad web experience early in your career. When did you get your first job and what was it? [00:01:44] +**Carl Vitullo:** Heck yeah. So you sounds like had a very broad web experience early in your career. When did you get your first job and what was it? [01:44] -**Josh W Comeau:** Yeah. It's, you know, it's always hard to count because I started just like tinkering, experimenting with HTML CSS back in 2007. Like, that's when I really, I had Dream Weaver and I did a couple of like freelance projects. It was 2014 when I decided that like, I really wanna start taking this whole thing more seriously. [00:01:59] +**Josh W Comeau:** Yeah. It's, you know, it's always hard to count because I started just like tinkering, experimenting with HTML CSS back in 2007. Like, that's when I really, I had Dream Weaver and I did a couple of like freelance projects. It was 2014 when I decided that like, I really wanna start taking this whole thing more seriously. [01:59] -So I went to a bootcamp. I did a, it was a Ruby based bootcamp in Toronto called BitMaker Labs. It has since been acquired by General Assembly. And, you know, it, typical of bootcamp programs, it was two, three months, 10 weeks, something like that. Immediately after graduating, I got a job at a startup. I was myself and one other person were the first two hires for this company that these two guys had this idea. [00:02:19] +So I went to a bootcamp. I did a, it was a Ruby based bootcamp in Toronto called BitMaker Labs. It has since been acquired by General Assembly. And, you know, it, typical of bootcamp programs, it was two, three months, 10 weeks, something like that. Immediately after graduating, I got a job at a startup. I was myself and one other person were the first two hires for this company that these two guys had this idea. [02:19] -The idea was to create a platform for like, influencers and people who are, you know, have large followings online, to connect with brands to do typical brand deals. Something that actually has gotten a lot bigger since then. And, you know, it's one of those things where I had just graduated from the bootcamp and I was I would say yes to pretty much anything, right? I was looking to get my foot in the door. It was wild because it was me and one other person. Both of us bootcamp graduates, neither of us really know what we were doing, but we figured it out. We did some pretty cool stuff. Like we had a real-time chat room. We had like a two way, two-sided marketplace. [00:02:48] +The idea was to create a platform for like, influencers and people who are, you know, have large followings online, to connect with brands to do typical brand deals. Something that actually has gotten a lot bigger since then. And, you know, it's one of those things where I had just graduated from the bootcamp and I was I would say yes to pretty much anything, right? I was looking to get my foot in the door. It was wild because it was me and one other person. Both of us bootcamp graduates, neither of us really know what we were doing, but we figured it out. We did some pretty cool stuff. Like we had a real-time chat room. We had like a two way, two-sided marketplace. [02:48] -They each had their own views. I was only there for about four months- ish. And then I got a job at a services company called Conrad Group. And, you know, we did a couple of projects for different clients. We built a news reader app for CFOs of a prominent Inc. 500 company that I've been told I'm not supposed to reference by name. I got yelled at for putting it on my LinkedIn. [00:03:06] +They each had their own views. I was only there for about four months- ish. And then I got a job at a services company called Conrad Group. And, you know, we did a couple of projects for different clients. We built a news reader app for CFOs of a prominent Inc. 500 company that I've been told I'm not supposed to reference by name. I got yelled at for putting it on my LinkedIn. [03:06] -**Carl Vitullo:** Okay, wow. [00:03:07] +**Carl Vitullo:** Okay, wow. [03:07] -**Josh W Comeau:** So I did that those two jobs were the first six months of my career and they were really just like, just trying things out. After that I got a job at a company called Breather, and that was my first, like I was there for almost two years. For me two years is considered a long stint, cuz that's the longest I've spent anywhere. [00:03:21] +**Josh W Comeau:** So I did that those two jobs were the first six months of my career and they were really just like, just trying things out. After that I got a job at a company called Breather, and that was my first, like I was there for almost two years. For me two years is considered a long stint, cuz that's the longest I've spent anywhere. [03:21] -I spent two years at Breather, and actually it was a Conrad group, my second job where I got introduced to React because this was early 2015. And they had been primarily using Angular at the time, but React was starting to pick up steam. And so my manager was like, Hey Josh, like we are thinking about this tool. Why don't you spend a couple weeks getting up to speed with it? Build a little like prototype app. And then like, I think it was like a Mad Libs type thing that I built where you put in some words and it scrambles it into a sentence. And it was Flux too. It was React and Flux because that was the do it at the time. [00:03:48] +I spent two years at Breather, and actually it was a Conrad group, my second job where I got introduced to React because this was early 2015. And they had been primarily using Angular at the time, but React was starting to pick up steam. And so my manager was like, Hey Josh, like we are thinking about this tool. Why don't you spend a couple weeks getting up to speed with it? Build a little like prototype app. And then like, I think it was like a Mad Libs type thing that I built where you put in some words and it scrambles it into a sentence. And it was Flux too. It was React and Flux because that was the do it at the time. [03:48] -**Carl Vitullo (editing):** React and flux, does that sound familiar? That's where the name Reactiflux comes from originally. Just a fun little side note. [00:03:55] +**Carl Vitullo (editing):** React and flux, does that sound familiar? That's where the name Reactiflux comes from originally. Just a fun little side note. [03:55] **Josh W Comeau:** And . Yeah. Yeah. Even pre-Redux, like this is really going back. And I figured in a couple weeks that I liked it so much more than I liked Angular, but I had no idea what I was like. It's still just felt so magical, like, okay, I guess, you write this thing that looks like HTML and it works somehow. So it was very cool and I really enjoyed working with it. -## Mid-career [00:04:12] +## Mid-career [04:12] -**Josh W Comeau:** When I went from there to Breather they were primarily using Backbone at the time and I was the only one that had React experience and I had been trying to convince them that like, Hey, this is, like, it's actually a lot better, like what we're doing right now really feels painful in comparison. But you know, it's a hard sell to, let's redo everything. But they put me in charge of what we called Backstage, which was the internal app. [00:04:33] +**Josh W Comeau:** When I went from there to Breather they were primarily using Backbone at the time and I was the only one that had React experience and I had been trying to convince them that like, Hey, this is, like, it's actually a lot better, like what we're doing right now really feels painful in comparison. But you know, it's a hard sell to, let's redo everything. But they put me in charge of what we called Backstage, which was the internal app. [04:33] -I should back up a little bit. Breather is a company like Airbnb for office spaces, and as you might imagine, there's a lot of logistics with that kind of business where after every reservation, a cleaner has to come and clean the space ahead of any other reservations. And so there was like an administration app that we were building and maintaining that was specifically for both the cleaning the cleaners themselves, the people operating the cleaners, so telling them where to go and the customer support staff who would be booking people through the phone or online. [00:04:58] +I should back up a little bit. Breather is a company like Airbnb for office spaces, and as you might imagine, there's a lot of logistics with that kind of business where after every reservation, a cleaner has to come and clean the space ahead of any other reservations. And so there was like an administration app that we were building and maintaining that was specifically for both the cleaning the cleaners themselves, the people operating the cleaners, so telling them where to go and the customer support staff who would be booking people through the phone or online. [04:58] -And so we had this little app that was specifically for employees and I was the only one working on it. And so when it came time to add new features, I just started migrating to React. Like there was no one to tell me no cuz I was the only person doing it. And I built this thing, it was like a calendar view, but it was really interactive and dynamic. Like it would show you in real time what was happening in every space and. I think people were impressed with how quickly I was able to get it built. And so pretty quickly after that I started helping them. And I shouldn't, I don't wanna take too much credit cuz there were lots of other people that did a lot of work too. [00:05:28] +And so we had this little app that was specifically for employees and I was the only one working on it. And so when it came time to add new features, I just started migrating to React. Like there was no one to tell me no cuz I was the only person doing it. And I built this thing, it was like a calendar view, but it was really interactive and dynamic. Like it would show you in real time what was happening in every space and. I think people were impressed with how quickly I was able to get it built. And so pretty quickly after that I started helping them. And I shouldn't, I don't wanna take too much credit cuz there were lots of other people that did a lot of work too. [05:28] -But we started migrating the front end to React as well which was went pretty smoothly. I mean, I left the company before that process was completed, but I would check in with them and hear how it was going. And as far as I know, like the whole thing is react now, so that's always cool. [00:05:39] +But we started migrating the front end to React as well which was went pretty smoothly. I mean, I left the company before that process was completed, but I would check in with them and hear how it was going. And as far as I know, like the whole thing is react now, so that's always cool. [05:39] -I went from there to a company called Unsplash, which— [00:05:42] +I went from there to a company called Unsplash, which— [05:42] -I realize now I'm talking for quite a bit. Let me know, like if you wanna jump to something else, otherwise I'll just keep going. [00:05:47] +I realize now I'm talking for quite a bit. Let me know, like if you wanna jump to something else, otherwise I'll just keep going. [05:47] -**Carl Vitullo:** No, yeah. Happy to let you run. [00:05:49] +**Carl Vitullo:** No, yeah. Happy to let you run. [05:49] -**Josh W Comeau:** Cool. I went to Unsplash, which is like a photography community thing. The idea is that photographers can share their photos and everything is royalty free. Like Creative Commons Zero, so you can use their photos for whatever you want. I was also it was already using React, but I helped us migrate to Redux because or at least I helped us restructure how we were using Redux. [00:06:07] +**Josh W Comeau:** Cool. I went to Unsplash, which is like a photography community thing. The idea is that photographers can share their photos and everything is royalty free. Like Creative Commons Zero, so you can use their photos for whatever you want. I was also it was already using React, but I helped us migrate to Redux because or at least I helped us restructure how we were using Redux. [06:07] -And that was what was cool about that job is that for most of the time that I was there and I wasn't there long, I was only there about six months. The backend was where a bunch of work was needed. Like, we couldn't really do much in the way of new features because the, like, we were having a lot of like scale issues and performance issues on the backend. [00:06:22] +And that was what was cool about that job is that for most of the time that I was there and I wasn't there long, I was only there about six months. The backend was where a bunch of work was needed. Like, we couldn't really do much in the way of new features because the, like, we were having a lot of like scale issues and performance issues on the backend. [06:22] -And so I had the freedom to like, okay, since we're not, we don't have stress in terms of like, you have to be doing all these things. Let's spend time refactoring this application. And so we totally rebuilt it. Which is always very satisfying when you're able to do that. So we did that. I went from there to Khan Academy where I spent a couple years working. [00:06:38] +And so I had the freedom to like, okay, since we're not, we don't have stress in terms of like, you have to be doing all these things. Let's spend time refactoring this application. And so we totally rebuilt it. Which is always very satisfying when you're able to do that. So we did that. I went from there to Khan Academy where I spent a couple years working. [06:38] -Khan Academy also was migrating from Backbone to React. But that started way before I got there. In fact, Khan Academy was one of the first non-Facebook organizations to adopt React like Sophie Albert, who was the manager of the React team for quite a while now she's moved on. She was working at Khan Academy at the time, and this might have even been before React had a public release. [00:06:55] +Khan Academy also was migrating from Backbone to React. But that started way before I got there. In fact, Khan Academy was one of the first non-Facebook organizations to adopt React like Sophie Albert, who was the manager of the React team for quite a while now she's moved on. She was working at Khan Academy at the time, and this might have even been before React had a public release. [06:55] -Like she knew what they were doing and she thought it was cool. So she experimenting with it at Khan Academy. Yeah, I think it was like 2013, 2012, something like really early. And so by the time I got there, they had already, there were a couple of like old views that still used Backbone because there were just, no one ever got around to prioritizing them. [00:07:12] +Like she knew what they were doing and she thought it was cool. So she experimenting with it at Khan Academy. Yeah, I think it was like 2013, 2012, something like really early. And so by the time I got there, they had already, there were a couple of like old views that still used Backbone because there were just, no one ever got around to prioritizing them. [07:12] -But the entire thing had already been on React for a couple years. Yeah, I think I got there in 2016, so yeah, it was a couple years before that. Or 2017 maybe. But yeah, I spent two years there. I jumped around between a few different teams, like I was briefly on, or actually most of my time there was on the teacher team, so we were building tools to be used in classroom. [00:07:27] +But the entire thing had already been on React for a couple years. Yeah, I think I got there in 2016, so yeah, it was a couple years before that. Or 2017 maybe. But yeah, I spent two years there. I jumped around between a few different teams, like I was briefly on, or actually most of my time there was on the teacher team, so we were building tools to be used in classroom. [07:27] -I spent some time on the independent learner team, which was where we focus on people using the site independently, which is most of them, right? People use Khan Academy, which is an educational platform to like brush up on their math skills after school. And yeah, it was a great job. It was a lot of fun. [00:07:41] +I spent some time on the independent learner team, which was where we focus on people using the site independently, which is most of them, right? People use Khan Academy, which is an educational platform to like brush up on their math skills after school. And yeah, it was a great job. It was a lot of fun. [07:41] After a couple years I went from there to Digital Ocean where again, we were migrating from Ember to React, and I came in with relatively a good amount of React experience. There were other people on the team that were familiar as well. -## RSI Injury [00:07:52] +## RSI Injury [07:52] -**Josh W Comeau:** And then finally I wound up at Gatsby Inc. The company behind the Gatsby JS framework. And I was there for about six months. And right around that time, like as I was at Gatsby, I started developing an RSI. So I started having burning, tingling elbows as I was typing. [00:08:06] +**Josh W Comeau:** And then finally I wound up at Gatsby Inc. The company behind the Gatsby JS framework. And I was there for about six months. And right around that time, like as I was at Gatsby, I started developing an RSI. So I started having burning, tingling elbows as I was typing. [08:06] -**Carl Vitullo:** That's a, repetitive strain injury? [00:08:08] +**Carl Vitullo:** That's a, repetitive strain injury? [08:08] -**Josh W Comeau:** I never know if the S stands for stress or sprain. But, or strain either way, though, so you're doing too much with your arms. Yeah. It was a whole saga where I spent a few months trying to figure out how to fix it. In the end, it turned out that actually like a lot of RSI can be prolonged for emotional reasons. It was wild to me because it started, I was in physiotherapy for unrelated reasons. [00:08:30] +**Josh W Comeau:** I never know if the S stands for stress or sprain. But, or strain either way, though, so you're doing too much with your arms. Yeah. It was a whole saga where I spent a few months trying to figure out how to fix it. In the end, it turned out that actually like a lot of RSI can be prolonged for emotional reasons. It was wild to me because it started, I was in physiotherapy for unrelated reasons. [08:30] -I pulled a nerve doing the exercise the physiotherapist gave me, which is very ironic. And everyone I saw kept telling me like, oh yeah, that's the kind of thing that heals in like six to eight weeks at the longest. But it had been bothering me for like months and it started in the other arm, which was wild cause I hadn't pulled anything. [00:08:45] +I pulled a nerve doing the exercise the physiotherapist gave me, which is very ironic. And everyone I saw kept telling me like, oh yeah, that's the kind of thing that heals in like six to eight weeks at the longest. But it had been bothering me for like months and it started in the other arm, which was wild cause I hadn't pulled anything. [08:45] -And I was sharing the story about this on Twitter and like just seeing if other people had experienced it. And so many people kept telling me to read this book called The Mind Body Prescription, which was about like how you, how a lot of physical injuries can be affected by stress or by emotional, like emotional just anything really. [00:09:03] +And I was sharing the story about this on Twitter and like just seeing if other people had experienced it. And so many people kept telling me to read this book called The Mind Body Prescription, which was about like how you, how a lot of physical injuries can be affected by stress or by emotional, like emotional just anything really. [09:03] -So I gave that a try. I started journaling more, tried to be a little bit more open with myself and with emotions and kind of magically that got better. So I spent I think seven or eight months where I was primarily using a microphone and an eye tracker to code and just to do work in general. [00:09:20] +So I gave that a try. I started journaling more, tried to be a little bit more open with myself and with emotions and kind of magically that got better. So I spent I think seven or eight months where I was primarily using a microphone and an eye tracker to code and just to do work in general. [09:20] Fortunately, now that was a couple years ago and I've been happily using a keyboard ever since. But that whole experience gave me the perspective that. I had been working for all these different companies that I've been talking about for several years, and a lot of that work was really satisfying. Like I, I enjoyed contributing to these organizations. I believed in most of the missions that we were doing, right. Khan Academy is a great mission. -## A finite number of keystrokes in us [00:09:40] +## A finite number of keystrokes in us [09:40] -**Josh W Comeau:** But I really liked the idea of doing my own thing. And it had been an idea I had on my calendar or like in the back of my mind for quite a while. And I had the realization that even though like this this nerve injury that I'm having will likely be temporary, you never know what's around the corner, right? [00:09:55] +**Josh W Comeau:** But I really liked the idea of doing my own thing. And it had been an idea I had on my calendar or like in the back of my mind for quite a while. And I had the realization that even though like this this nerve injury that I'm having will likely be temporary, you never know what's around the corner, right? [09:55] -Like, each, every one of us has a finite number of keystrokes in us that we can imagine ourselves, like hopefully decades and decades from now. And if we had the omniscience to know, there would be like a number of floating above our head, which is how many times we've pressed a key on a keyboard, and hopefully that number would begin like the billions or the trillions. [00:10:12] +Like, each, every one of us has a finite number of keystrokes in us that we can imagine ourselves, like hopefully decades and decades from now. And if we had the omniscience to know, there would be like a number of floating above our head, which is how many times we've pressed a key on a keyboard, and hopefully that number would begin like the billions or the trillions. [10:12] -But it's a finite number, right? You. And so I started to think of that as like a currency. Like every time I press a button on the keyboard, that number ticks down by one, right? I only have so many of them remaining in my life. And so I should spend that, those keystrokes doing something that I'm really interested in and passionate about. [00:10:27] +But it's a finite number, right? You. And so I started to think of that as like a currency. Like every time I press a button on the keyboard, that number ticks down by one, right? I only have so many of them remaining in my life. And so I should spend that, those keystrokes doing something that I'm really interested in and passionate about. [10:27] -And so it was during this whole fiasco that I left my job at Gatsby and started hacking on my course platform and the first course that became CSS for JavaScript developers. [00:10:35] +And so it was during this whole fiasco that I left my job at Gatsby and started hacking on my course platform and the first course that became CSS for JavaScript developers. [10:35] -**Carl Vitullo:** Very cool. Wow. Yeah. That's such a powerful way to approach figuring out what's really important to you and thinking about your career as a finite series of interactions. I can see how that would be a very motivating reason to do what's important to you. [00:10:52] +**Carl Vitullo:** Very cool. Wow. Yeah. That's such a powerful way to approach figuring out what's really important to you and thinking about your career as a finite series of interactions. I can see how that would be a very motivating reason to do what's important to you. [10:52] -**Josh W Comeau:** It was definitely a perspective shift, before that my thinking had been, I have all the time in the world, right? It's still, you know, if we assume that I got my first job in 2014 I've been in this career for six years. You know, most people spent 30 or 40 years in their career, so there was no shortage in terms of expected time spent coding. And I figure maybe I'll do what I'm doing now for another 20, 30 years, and then I'll move on to something else. [00:11:13] +**Josh W Comeau:** It was definitely a perspective shift, before that my thinking had been, I have all the time in the world, right? It's still, you know, if we assume that I got my first job in 2014 I've been in this career for six years. You know, most people spent 30 or 40 years in their career, so there was no shortage in terms of expected time spent coding. And I figure maybe I'll do what I'm doing now for another 20, 30 years, and then I'll move on to something else. [11:13] -But I shouldn't take for granted that's how that will work out, right? I was also very, I should mention, very lucky in that I had probably about a year and a half of savings saved up so that I wasn't, like I had the financial freedom to really say, okay, let me spend my let me give this my full attention and really just see what can happen with it, which I know is not a luxury that most people have. [00:11:34] +But I shouldn't take for granted that's how that will work out, right? I was also very, I should mention, very lucky in that I had probably about a year and a half of savings saved up so that I wasn't, like I had the financial freedom to really say, okay, let me spend my let me give this my full attention and really just see what can happen with it, which I know is not a luxury that most people have. [11:34] -But yeah, that was really I had the realization that like, there's really no reason for me not to do this because if it doesn't work out, I will have burned through most of my savings, which is unfortunate, but I felt pretty confident I'd be able to get another job as I had been doing, just doing, you know, typical IC software development work. [00:11:49] +But yeah, that was really I had the realization that like, there's really no reason for me not to do this because if it doesn't work out, I will have burned through most of my savings, which is unfortunate, but I felt pretty confident I'd be able to get another job as I had been doing, just doing, you know, typical IC software development work. [11:49] -And yeah, just when I framed it like that, when I framed it as like, the currency thing about only having so many keystrokes left, it seemed like, just the solution was obvious that it was something I had to do right now. [00:11:58] +And yeah, just when I framed it like that, when I framed it as like, the currency thing about only having so many keystrokes left, it seemed like, just the solution was obvious that it was something I had to do right now. [11:58] -**Carl Vitullo:** Right. Yeah. Yeah. And maybe reframing it a little bit, it sounds like really reckoning with your own mortality in a way. Maybe the mortality of your career, but really realizing how time is finite. Yeah. [00:12:13] +**Carl Vitullo:** Right. Yeah. Yeah. And maybe reframing it a little bit, it sounds like really reckoning with your own mortality in a way. Maybe the mortality of your career, but really realizing how time is finite. Yeah. [12:13] **Josh W Comeau:** I probably should have mentioned that. Yeah. This is a very morbid idea. -## An expectation of being able to code [00:12:16] +## An expectation of being able to code [12:16] -**Josh W Comeau:** And of course, you know, I didn't have any sort of expectation that I wouldn't be able to continue coding. And actually a big part of this whole experience taught me that like no matter what life throws at me, I will find a way, like with how good technology is. Cuz and we were speaking about this before the event started, even with the microphone and the eye tracker being a significantly different way to approach writing code, I was still able to move relatively quickly, like not as fast as I can with the keyboard, but certainly fast enough that it felt viable, right? It seemed like, okay, I'm gonna have to be a little bit more careful with how I prioritize. Like maybe I can't go through and spend as much time polishing things as I would like. Cause maybe I'm moving at half the speed that I normally would, but I can still get a lot done especially if I prioritize a little bit more ruthlessly. [00:12:59] +**Josh W Comeau:** And of course, you know, I didn't have any sort of expectation that I wouldn't be able to continue coding. And actually a big part of this whole experience taught me that like no matter what life throws at me, I will find a way, like with how good technology is. Cuz and we were speaking about this before the event started, even with the microphone and the eye tracker being a significantly different way to approach writing code, I was still able to move relatively quickly, like not as fast as I can with the keyboard, but certainly fast enough that it felt viable, right? It seemed like, okay, I'm gonna have to be a little bit more careful with how I prioritize. Like maybe I can't go through and spend as much time polishing things as I would like. Cause maybe I'm moving at half the speed that I normally would, but I can still get a lot done especially if I prioritize a little bit more ruthlessly. [12:59] **Carl Vitullo:** Right. Yeah. I see that we've had many people join. Lemme just reintroduce very quickly. Josh Comeau is joining us today. He's an indie hacker educator. He has worked at Gatsby, Digital Ocean, Khan Academy, and many others, and is currently an independent educator. And just recently released his course, the Joy of React. And we're here talking about mortality and the limited time we have on Earth. -## Job hopping [00:13:25] +## Job hopping [13:25] -**Carl Vitullo:** But I, if I could back up maybe a little bit. So you've mentioned a lot of shorter stints at various jobs in your career. How have you thought about that? How have you approached the question of, should I stay or should I leave? [00:13:38] +**Carl Vitullo:** But I, if I could back up maybe a little bit. So you've mentioned a lot of shorter stints at various jobs in your career. How have you thought about that? How have you approached the question of, should I stay or should I leave? [13:38] -**Josh W Comeau:** Yeah, so when I was at the bootcamp in 2014 one of the instructors that we had he took like a whiteboard marker and drew a graph and show—granted, this is an audio format, so let me see if I can describe a graph. It shoots up linearly and then slows down, right? Like the, like the first half of a bell curve, right where it goes up and then it starts peaking. [00:13:58] +**Josh W Comeau:** Yeah, so when I was at the bootcamp in 2014 one of the instructors that we had he took like a whiteboard marker and drew a graph and show—granted, this is an audio format, so let me see if I can describe a graph. It shoots up linearly and then slows down, right? Like the, like the first half of a bell curve, right where it goes up and then it starts peaking. [13:58] -**Carl Vitullo:** Plateauing, sure. [00:13:58] +**Carl Vitullo:** Plateauing, sure. [13:58] -**Josh W Comeau:** And he was saying that you hit this plateau maybe like a year and a half, two years into your career and you wanna leave your job before that point, like leave the job where you're still getting that fast momentum. The thing that was being graphed, I should say, was how much you're learning, how much you're growing just, how healthy it is for you as a developer. [00:14:14] +**Josh W Comeau:** And he was saying that you hit this plateau maybe like a year and a half, two years into your career and you wanna leave your job before that point, like leave the job where you're still getting that fast momentum. The thing that was being graphed, I should say, was how much you're learning, how much you're growing just, how healthy it is for you as a developer. [14:14] -**Carl Vitullo:** Sure. Skill advancement. [00:14:16] +**Carl Vitullo:** Sure. Skill advancement. [14:16] -**Josh W Comeau:** Yeah. And his point was that unless like, and there are certainly exceptions, right? Like if you work at a company where you're constantly being moved to new projects in new departments, then that kind of works the same way. But if you're spending more than two years hacking, especially I think mostly like early in your career, like certainly there are lots of benefits to maintaining a project long term. [00:14:33] +**Josh W Comeau:** Yeah. And his point was that unless like, and there are certainly exceptions, right? Like if you work at a company where you're constantly being moved to new projects in new departments, then that kind of works the same way. But if you're spending more than two years hacking, especially I think mostly like early in your career, like certainly there are lots of benefits to maintaining a project long term. [14:33] -But I think his point was that for the first few years you wanna sort of, expose yourself to lots of different code bases and different technologies, right? Like you have to figure out like you get a lot of benefit at first and that benefit slows down. And the more these experiences you have, the more you things you can reference, right? The more you can appreciate, you can bring solutions you learned at one place to another place. It's just like all around good. [00:14:54] +But I think his point was that for the first few years you wanna sort of, expose yourself to lots of different code bases and different technologies, right? Like you have to figure out like you get a lot of benefit at first and that benefit slows down. And the more these experiences you have, the more you things you can reference, right? The more you can appreciate, you can bring solutions you learned at one place to another place. It's just like all around good. [14:54] -And I know that there is this debate, like if an employer sees that you have a bunch of these like six month, nine month, a year stints, the fear of course is that are we gonna hire this person, in six months they're gonna leave. I personally haven't had many issues with that, but I'm very careful not to generalize that to anyone else. Like I recognize that there's a lot of privilege that I have as a white guy in tech. I have no idea. You know, like, it, I don't know how much of the lenience I was given in this particular area is because of that, but I would expect quite a lot. So there is definitely, like, I don't wanna generalize this as good career advice for anybody else. [00:15:25] +And I know that there is this debate, like if an employer sees that you have a bunch of these like six month, nine month, a year stints, the fear of course is that are we gonna hire this person, in six months they're gonna leave. I personally haven't had many issues with that, but I'm very careful not to generalize that to anyone else. Like I recognize that there's a lot of privilege that I have as a white guy in tech. I have no idea. You know, like, it, I don't know how much of the lenience I was given in this particular area is because of that, but I would expect quite a lot. So there is definitely, like, I don't wanna generalize this as good career advice for anybody else. [15:25] -I do think there's much more tolerance for it in tech than other sectors. And you know, my third job was breather. I was there for a little under two years. I think it was like a year, 10 months, something like that. And for me that was like a good enough stretch of time. Like I feel pretty confident that if you asked someone at Breather whether it was worth hiring me for that amount of time, they would say yes, right? I got a lot of good things done when I was there. [00:15:46] +I do think there's much more tolerance for it in tech than other sectors. And you know, my third job was breather. I was there for a little under two years. I think it was like a year, 10 months, something like that. And for me that was like a good enough stretch of time. Like I feel pretty confident that if you asked someone at Breather whether it was worth hiring me for that amount of time, they would say yes, right? I got a lot of good things done when I was there. [15:46] Maybe if it's every six months like that, and if you have five or six of those, like if your resume is two and a half years long and you've worked at six places, maybe that does start to become a problem. But if you spend a couple years somewhere I think that at least in my own experience has been like, it's never come up for me. I've never had an interviewer say that. Granted you never know why you don't get a job, but I've had pretty good luck when it comes to companies that I really wanna work for. -## Unconventional job hunting tips [00:16:09] +## Unconventional job hunting tips [16:09] -**Josh W Comeau:** You know, I also and this might be worth, it's totally not what we're here to talk about, but I do have a kind of an unconventional tip for job hunting. I worked at a bootcamp, right? [00:16:18] +**Josh W Comeau:** You know, I also and this might be worth, it's totally not what we're here to talk about, but I do have a kind of an unconventional tip for job hunting. I worked at a bootcamp, right? [16:18] -For three years I was teaching part-time at a local coding bootcamp called Concordia Bootcamps. I was doing this while I was at Khan Academy, Digital Ocean and Gatsby. I was working 14 hours a week for them. [00:16:26] +For three years I was teaching part-time at a local coding bootcamp called Concordia Bootcamps. I was doing this while I was at Khan Academy, Digital Ocean and Gatsby. I was working 14 hours a week for them. [16:26] -And the advice that most people give in these settings, both at the bootcamp we were at in just generally online, is that it's a numbers game and you want to get out n number of applications a week, right? 15 a day if you can, and grab a templated cover letter and very quickly, like do the find and replace where you put in the company name and the technologies. You know, I am very interested in Acme Inc. Because I am passionate about dynamite or whatever it is. And that I think when you're first starting out, yeah. For your first job, maybe that's good advice. [00:16:55] +And the advice that most people give in these settings, both at the bootcamp we were at in just generally online, is that it's a numbers game and you want to get out n number of applications a week, right? 15 a day if you can, and grab a templated cover letter and very quickly, like do the find and replace where you put in the company name and the technologies. You know, I am very interested in Acme Inc. Because I am passionate about dynamite or whatever it is. And that I think when you're first starting out, yeah. For your first job, maybe that's good advice. [16:55] -As I got my second and third job, I started being much more strategic and like, okay, who are the companies I really wanna work for? And what can I do to make myself a pretty attractive option? [00:17:04] +As I got my second and third job, I started being much more strategic and like, okay, who are the companies I really wanna work for? And what can I do to make myself a pretty attractive option? [17:04] -So the one example was, I liked the idea of working at Spotify. So I built an application with Spotify's api. It's called Panther. It's panther.audio. It's still online if anyone wants to go check it out. Essentially it hits the Spotify API, it pulls information about an artist that you search for and three related artists, and it lets you move through this big node graph of like, okay, this artist is connected to these three artists. And then if you click on one of those artists, it pulls that one to the center. Just a way to discover like related artists to one that you like, as an exercise in like, here's an interesting interface for the data that this API provides. And I applied to Spotify. In fact, I think it was even like I posted it online and people at Spotify saw it and put in a word internally for me, like that's always a good thing. [00:17:46] +So the one example was, I liked the idea of working at Spotify. So I built an application with Spotify's api. It's called Panther. It's panther.audio. It's still online if anyone wants to go check it out. Essentially it hits the Spotify API, it pulls information about an artist that you search for and three related artists, and it lets you move through this big node graph of like, okay, this artist is connected to these three artists. And then if you click on one of those artists, it pulls that one to the center. Just a way to discover like related artists to one that you like, as an exercise in like, here's an interesting interface for the data that this API provides. And I applied to Spotify. In fact, I think it was even like I posted it online and people at Spotify saw it and put in a word internally for me, like that's always a good thing. [17:46] -It didn't work out because it became apparent pretty quick that they wanted me to move to Sweden. And I had just moved to Montreal to be where my partner lived. So I withdrew from that process. I think I had one interview. So it, like, I, it's impossible to know how that would've gone. But certainly it didn't hurt, right? [00:18:00] +It didn't work out because it became apparent pretty quick that they wanted me to move to Sweden. And I had just moved to Montreal to be where my partner lived. So I withdrew from that process. I think I had one interview. So it, like, I, it's impossible to know how that would've gone. But certainly it didn't hurt, right? [18:00] -Like, certainly the fact that I had spent significant time and you don't hear this advice a lot because it's a lot of eggs to put in one basket, right? Like if you spend. 60 hours on a single job application cuz you spent a week and a half building this thing and they're just not hiring junior developers at the time. That's seen as a waste of time, but really, like, it's still a valuable side project. Right. Even it doesn't, I can use that elsewhere and it just it creates it stacks the odds in your favor. Similarly with Khan Academy, right? Khan Academy I forget the numbers, but it was something like, they get several hundred applicants for every open position. [00:18:32] +Like, certainly the fact that I had spent significant time and you don't hear this advice a lot because it's a lot of eggs to put in one basket, right? Like if you spend. 60 hours on a single job application cuz you spent a week and a half building this thing and they're just not hiring junior developers at the time. That's seen as a waste of time, but really, like, it's still a valuable side project. Right. Even it doesn't, I can use that elsewhere and it just it creates it stacks the odds in your favor. Similarly with Khan Academy, right? Khan Academy I forget the numbers, but it was something like, they get several hundred applicants for every open position. [18:32] Like it's a very competitive place to work because so many people use Khan Academy in high school and college and then they graduate. I was also one of the only people there without a CS degree. Like they, they really, in fact, most people had like advanced degrees that were there. And I think the reason I was able to pull that off was a bunch of stuff. -## Personal projects, open source, and networking [00:18:46] +## Personal projects, open source, and networking [18:46] -**Josh W Comeau:** Like, one of them was that I Khan Academy had an open source project called Aphrodite. I had contributed to that project and spoken to some of the developers on it, and in fact, I think I made a couple of contributions to it. I forget exactly. I also became friends with someone that worked there at a hackathon. [00:18:58] +**Josh W Comeau:** Like, one of them was that I Khan Academy had an open source project called Aphrodite. I had contributed to that project and spoken to some of the developers on it, and in fact, I think I made a couple of contributions to it. I forget exactly. I also became friends with someone that worked there at a hackathon. [18:58] -And that was, that's hard to engineer or something like that. But I became friends with someone who worked there. And I put like a lot of work into my cover letter. I saw it as a dream job of mine, so I put a lot of work into it, and it worked out. I went through eight interviews, because that was what their process was and it worked out. [00:19:15] +And that was, that's hard to engineer or something like that. But I became friends with someone who worked there. And I put like a lot of work into my cover letter. I saw it as a dream job of mine, so I put a lot of work into it, and it worked out. I went through eight interviews, because that was what their process was and it worked out. [19:15] -So I do think like I say, right, for your first job, your second job, maybe it's the shotgun approach of just trying to get as many applications as you can out. Maybe that's not a bad idea. Beyond that, I do think like find two or three companies that you would love to work for and put a lot of work into it, because those things matter. [00:19:30] +So I do think like I say, right, for your first job, your second job, maybe it's the shotgun approach of just trying to get as many applications as you can out. Maybe that's not a bad idea. Beyond that, I do think like find two or three companies that you would love to work for and put a lot of work into it, because those things matter. [19:30] -**Carl Vitullo:** Yeah, I've never quite gone that far into picking a company and deciding that I wanted to work there, but I have followed a similar sort of trajectory as what you just described, where, just by following my own in interests and coming up with a project that I thought sounded like fun. And you know, just like maybe this touches on like build in public and learning public kind of topics as well, but just by working on things and publishing them and making them visible to the world I think that can be a very powerful way to get jobs. [00:20:02] +**Carl Vitullo:** Yeah, I've never quite gone that far into picking a company and deciding that I wanted to work there, but I have followed a similar sort of trajectory as what you just described, where, just by following my own in interests and coming up with a project that I thought sounded like fun. And you know, just like maybe this touches on like build in public and learning public kind of topics as well, but just by working on things and publishing them and making them visible to the world I think that can be a very powerful way to get jobs. [20:02] -And it gives you something to network around. You know, if you go to a conference and you're looking for a job or something, it's much easier to start that conversation and find new friends who may then be able to get you an in at a company if you can talk about some project that you're excited about, you know, look at this cool thing I made. [00:20:18] +And it gives you something to network around. You know, if you go to a conference and you're looking for a job or something, it's much easier to start that conversation and find new friends who may then be able to get you an in at a company if you can talk about some project that you're excited about, you know, look at this cool thing I made. [20:18] -**Josh W Comeau:** Yeah, totally. And I would also say there's like a spectrum here, right? It's not like you either spend five minutes or 30 hours. When I worked at Unsplash, I was actually put in charge of hiring my own replacement cause I was leaving and we needed to replace me. So I did a lot of interviewing and I was amazed at how little effort most people put in. [00:20:37] +**Josh W Comeau:** Yeah, totally. And I would also say there's like a spectrum here, right? It's not like you either spend five minutes or 30 hours. When I worked at Unsplash, I was actually put in charge of hiring my own replacement cause I was leaving and we needed to replace me. So I did a lot of interviewing and I was amazed at how little effort most people put in. [20:37] -**Carl Vitullo:** I know, it's shocking. [00:20:38] +**Carl Vitullo:** I know, it's shocking. [20:38] -**Josh W Comeau:** And so if someone put 10 minutes into the application, right? They wrote a paragraph in the cover letter about why they thought our company in particular was interesting. Like little things like that can really help you stand So I do think like the strategy I suggest is like almost imagine a spectrum where the more you wanna work at a place, the more work you put into it. [00:20:56] +**Josh W Comeau:** And so if someone put 10 minutes into the application, right? They wrote a paragraph in the cover letter about why they thought our company in particular was interesting. Like little things like that can really help you stand So I do think like the strategy I suggest is like almost imagine a spectrum where the more you wanna work at a place, the more work you put into it. [20:56] -And you can start by applying to the places you're not super interested in and not put that much energy into them. And maybe that'll give you some practice, right? Like scale the amount of energy into an application based on how much you wanna work. [00:21:08] +And you can start by applying to the places you're not super interested in and not put that much energy into them. And maybe that'll give you some practice, right? Like scale the amount of energy into an application based on how much you wanna work. [21:08] -**Carl Vitullo:** Yeah, I think that's excellent advice. You know, maybe not full templated cover letter or whatever, but you know, if there is a job that you're interested in, that sounds like a really good fit, that sounds like it would be on a team that you could learn from then. Yeah. You know, spending 20 minutes on a more personalized cover letter, I think is absolutely worth the effort. [00:21:29] +**Carl Vitullo:** Yeah, I think that's excellent advice. You know, maybe not full templated cover letter or whatever, but you know, if there is a job that you're interested in, that sounds like a really good fit, that sounds like it would be on a team that you could learn from then. Yeah. You know, spending 20 minutes on a more personalized cover letter, I think is absolutely worth the effort. [21:29] -And on your point about the lack of effort, I've interviewed a number of people over my career and unfortunately, a very effective screener project I found for hiring for a React role was, write a button that increments a counter. It was disappointingly effective at people who claimed, moderate to expert level react knowledge. [00:21:53] +And on your point about the lack of effort, I've interviewed a number of people over my career and unfortunately, a very effective screener project I found for hiring for a React role was, write a button that increments a counter. It was disappointingly effective at people who claimed, moderate to expert level react knowledge. [21:53] -So I, I think a lot of the times the bar is lower than many people expect. [00:22:01] +So I, I think a lot of the times the bar is lower than many people expect. [22:01] -**Josh W Comeau:** Yeah. That's interesting. Like if a job application lists a bunch of requirements, right? It's easy to assume that if you don't match a lot of them, that you're gonna be near the bottom of the people applying. But, I think you probably learned that's not really true. Like you're probably much higher in that stack than you think. [00:22:17] +**Josh W Comeau:** Yeah. That's interesting. Like if a job application lists a bunch of requirements, right? It's easy to assume that if you don't match a lot of them, that you're gonna be near the bottom of the people applying. But, I think you probably learned that's not really true. Like you're probably much higher in that stack than you think. [22:17] -**Carl Vitullo:** Yeah, I definitely agree with that. Yeah. And going back a little further to what you said about job hopping What you said about it not really being a factor that you noticed as a limitation in your career. That's been my experience as well. I had I had a stint where I worked three jobs in a row that I left in under six months. [00:22:36] +**Carl Vitullo:** Yeah, I definitely agree with that. Yeah. And going back a little further to what you said about job hopping What you said about it not really being a factor that you noticed as a limitation in your career. That's been my experience as well. I had I had a stint where I worked three jobs in a row that I left in under six months. [22:36] -I think the shortest was just over four months. And yeah, like nobody ever brought that up in interviews ever again. I got a couple of questions about why I left, and so I did have to come up with a you know, devise a bit of a story, tell a story about what the situation was. [00:22:51] +I think the shortest was just over four months. And yeah, like nobody ever brought that up in interviews ever again. I got a couple of questions about why I left, and so I did have to come up with a you know, devise a bit of a story, tell a story about what the situation was. [22:51] -But yeah, my experience mirrors your own, I think where once you get one job where you stay longer than a couple of months, I think that really shows that you can stay places you are willing to stay, places. You're not getting fired because you're bad at things. You're leaving because you're looking for the next thing, which I think is appealing to many interviewers. [00:23:11] +But yeah, my experience mirrors your own, I think where once you get one job where you stay longer than a couple of months, I think that really shows that you can stay places you are willing to stay, places. You're not getting fired because you're bad at things. You're leaving because you're looking for the next thing, which I think is appealing to many interviewers. [23:11] -**Josh W Comeau:** Yeah. it's funny, that's I had an answer prepared for if someone asks, like, Hey, I've noticed you've worked at a lot of companies in the last couple years. The answer, and it's honestly, it's pretty much true, was, yeah, look, you know, I'm relatively new to the industry. I wanted to try out a few different environments. [00:23:25] +**Josh W Comeau:** Yeah. it's funny, that's I had an answer prepared for if someone asks, like, Hey, I've noticed you've worked at a lot of companies in the last couple years. The answer, and it's honestly, it's pretty much true, was, yeah, look, you know, I'm relatively new to the industry. I wanted to try out a few different environments. [23:25] -So I worked at a services company, I worked at a product company. And now with my application now, I've kind of worked out what sorts of environments I like, and I'm trying to find the kind of place that would fit that environment. And I think that might be you, whoever I'm talking to, right. [00:23:38] +So I worked at a services company, I worked at a product company. And now with my application now, I've kind of worked out what sorts of environments I like, and I'm trying to find the kind of place that would fit that environment. And I think that might be you, whoever I'm talking to, right. [23:38] -Which kind of positions it as, it's not just that you're addicted to leaving companies after six months. Cause really it's a lot of work to leave a company like, I don't think most people are. But that's, I think, the impression people can get. It's more that like, you know, you're trying to find the right sort of environment for you. [00:23:51] +Which kind of positions it as, it's not just that you're addicted to leaving companies after six months. Cause really it's a lot of work to leave a company like, I don't think most people are. But that's, I think, the impression people can get. It's more that like, you know, you're trying to find the right sort of environment for you. [23:51] -**Carl Vitullo:** Right, careers are a bread first search, and as you narrow down, you look for a better fit [00:23:56] +**Carl Vitullo:** Right, careers are a bread first search, and as you narrow down, you look for a better fit [23:56] -**Josh W Comeau:** Mm-hmm. Yeah. Yeah. I like that [00:24:00] +**Josh W Comeau:** Mm-hmm. Yeah. Yeah. I like that [24:00] -**Carl Vitullo:** You know, so you came up. That's a great story. I think that's, I think that would be a very compelling answer. But you were ever, never asked that question? [00:24:06] +**Carl Vitullo:** You know, so you came up. That's a great story. I think that's, I think that would be a very compelling answer. But you were ever, never asked that question? [24:06] -**Josh W Comeau:** Yeah, I never had the chance to give it [00:24:09] +**Josh W Comeau:** Yeah, I never had the chance to give it [24:09] **Carl Vitullo:** Too bad. (laughter) -## Ideation for blog posts [00:24:12] +## Ideation for blog posts [24:12] -**Carl Vitullo:** Maybe changing topics a little bit. So you've been an educator for a long time. Could you talk a little bit about your creative process? How do you find a topic that you think is in need of explaining and how do you take that topic and come up with a way to make it intuitive to people? [00:24:27] +**Carl Vitullo:** Maybe changing topics a little bit. So you've been an educator for a long time. Could you talk a little bit about your creative process? How do you find a topic that you think is in need of explaining and how do you take that topic and come up with a way to make it intuitive to people? [24:27] -**Josh W Comeau:** There's, I have a Notion document, I have the app on my phone, and if I'm out walking or wherever I'm in my life, ideas just pop into my head. Like, maybe I'll think of here's a little UI detail that I think would make a good blog post. Or like, here's a really good analogy for explaining this random thing. [00:24:41] +**Josh W Comeau:** There's, I have a Notion document, I have the app on my phone, and if I'm out walking or wherever I'm in my life, ideas just pop into my head. Like, maybe I'll think of here's a little UI detail that I think would make a good blog post. Or like, here's a really good analogy for explaining this random thing. [24:41] -And over time, these bullet points in my notion document, collect notes on them. And it sort of happens pretty organically, where eventually one of these blog post ideas will have like four or five points that sort of form a vague skeleton. And if I think it would be an interesting thing to write about, then I'll spend the time and bring it over from Notion into markdown. [00:25:02] +And over time, these bullet points in my notion document, collect notes on them. And it sort of happens pretty organically, where eventually one of these blog post ideas will have like four or five points that sort of form a vague skeleton. And if I think it would be an interesting thing to write about, then I'll spend the time and bring it over from Notion into markdown. [25:02] -I write in MDX which is basically Markdown And often it does start from like a particular visualization or a particular analogy, like, I do wanna have some sort of, hook is not really the right word, but some sort of thing that makes this blog post worthwhile. [00:25:16] +I write in MDX which is basically Markdown And often it does start from like a particular visualization or a particular analogy, like, I do wanna have some sort of, hook is not really the right word, but some sort of thing that makes this blog post worthwhile. [25:16] -I should say there's lots of valid ways to do this. [00:25:17] +I should say there's lots of valid ways to do this. [25:17] -Like, there are plenty of people who produce a lot of work that is very valuable, which is tailored around search results, right? Like, just if you get run into an error, then make a blog post about that error. That's not really what I do. Like, I try to have longer, more comprehensive blog posts that dig into a particular idea. [00:25:32] +Like, there are plenty of people who produce a lot of work that is very valuable, which is tailored around search results, right? Like, just if you get run into an error, then make a blog post about that error. That's not really what I do. Like, I try to have longer, more comprehensive blog posts that dig into a particular idea. [25:32] -I have a bunch of ideas that are, I probably have 150, 200 potential post ideas and most of them are never gonna happen cuz they're not particularly good. Right? It's the brainstorming thing of you just throw any idea that you have. But yeah, eventually these ideas, they kind of coalesce into something that I think would be compelling. [00:25:48] +I have a bunch of ideas that are, I probably have 150, 200 potential post ideas and most of them are never gonna happen cuz they're not particularly good. Right? It's the brainstorming thing of you just throw any idea that you have. But yeah, eventually these ideas, they kind of coalesce into something that I think would be compelling. [25:48] -I've noticed there's this fun thing that happens where when I started blogging, I had a pretty small audience, which meant that the only people that were gonna read my blog were people that were in my personal network, roughly at the same level that I was. I don't remember when I started blogging, but it was a long time ago, And I started on Medium. I wrote a few dozen posts for Medium and then I created the blog that I have now, And when I was first doing this, it didn't make sense for me to write introductory, like intro to CSS Transitions because, you know, most of the people that I was working with already do that. [00:26:17] +I've noticed there's this fun thing that happens where when I started blogging, I had a pretty small audience, which meant that the only people that were gonna read my blog were people that were in my personal network, roughly at the same level that I was. I don't remember when I started blogging, but it was a long time ago, And I started on Medium. I wrote a few dozen posts for Medium and then I created the blog that I have now, And when I was first doing this, it didn't make sense for me to write introductory, like intro to CSS Transitions because, you know, most of the people that I was working with already do that. [26:17] -So I would have to find these pretty, Like, niche things. Like, one of my early blog posts was about rehydration and React, which is something that I think a lot of experienced, React developers still struggle with. And like I was getting these weird bugs where like everything looked fine in development, but you deploy it and the wrong elements are in the wrong places. [00:26:34] +So I would have to find these pretty, Like, niche things. Like, one of my early blog posts was about rehydration and React, which is something that I think a lot of experienced, React developers still struggle with. And like I was getting these weird bugs where like everything looked fine in development, but you deploy it and the wrong elements are in the wrong places. [26:34] -And I mean, that's specific to Gatsby because they don't do server-side rendering and development. Um, But yeah, so I would do these like very specialized niche things because those are the types of things that people in my network would benefit from. But as my blog has grown more popular, it's sort of given me the allowance to do more introductory topics because now when I publish something, it spreads beyond my network. [00:26:55] +And I mean, that's specific to Gatsby because they don't do server-side rendering and development. Um, But yeah, so I would do these like very specialized niche things because those are the types of things that people in my network would benefit from. But as my blog has grown more popular, it's sort of given me the allowance to do more introductory topics because now when I publish something, it spreads beyond my network. [26:55] -And I think my most popular blog post now is an Interactive Guide to CSS Transitions. And then I have one about Flexbox as well, which it's interesting, right? Like the further you get in your career, or the further you get in terms of building your network the more introductory you can go. Because even if one of these topics has been covered a hundred times already I know that I can put my own spin on it and I can make it interesting and it will reach those people who otherwise I have no way of reaching [00:27:21] +And I think my most popular blog post now is an Interactive Guide to CSS Transitions. And then I have one about Flexbox as well, which it's interesting, right? Like the further you get in your career, or the further you get in terms of building your network the more introductory you can go. Because even if one of these topics has been covered a hundred times already I know that I can put my own spin on it and I can make it interesting and it will reach those people who otherwise I have no way of reaching [27:21] **Carl Vitullo:** Yeah, that makes a lot of sense. So you started blogging just for yourself and for the people in your network, and then as you gained an audience, you started writing more for that audience. Does that sound right? -## Writing for advanced audiences [00:27:32] +## Writing for advanced audiences [27:32] -**Josh W Comeau:** Yeah, and I think it's like, it's given me the freedom to write about things that may not be directly relevant for the people. At this point I feel like I can write a blog post on anything that interests me or that I think I have an interesting way to present it. [00:27:45] +**Josh W Comeau:** Yeah, and I think it's like, it's given me the freedom to write about things that may not be directly relevant for the people. At this point I feel like I can write a blog post on anything that interests me or that I think I have an interesting way to present it. [27:45] -I think this is one of the problems, right? If you're trying to reach people who are just starting to code, like they're not working as a developer, maybe they're thinking about enrolling in a bootcamp. Maybe they're in a bootcamp. They're gonna know about FreeCodeCamp. Maybe they know about Wes Bos, like they know about the biggest creators, the search, the first result on Google for a given thing. Um, It's like the people who have been doing this for a while that know about more niche creators like myself, and I'd still put myself in that category to a large degree. [00:28:11] +I think this is one of the problems, right? If you're trying to reach people who are just starting to code, like they're not working as a developer, maybe they're thinking about enrolling in a bootcamp. Maybe they're in a bootcamp. They're gonna know about FreeCodeCamp. Maybe they know about Wes Bos, like they know about the biggest creators, the search, the first result on Google for a given thing. Um, It's like the people who have been doing this for a while that know about more niche creators like myself, and I'd still put myself in that category to a large degree. [28:11] -I think it's interesting that the further you get into the content creation thing, the more possible it is to reach people that are earlier in their career, at scale, right? Like when I worked at the bootcamp, I actually did know quite a few people that were in that situation. [00:28:24] +I think it's interesting that the further you get into the content creation thing, the more possible it is to reach people that are earlier in their career, at scale, right? Like when I worked at the bootcamp, I actually did know quite a few people that were in that situation. [28:24] -But, um, I would have no way of reaching people outside the people I met in real life or that were in my direct network like that. [00:28:31] +But, um, I would have no way of reaching people outside the people I met in real life or that were in my direct network like that. [28:31] -**Carl Vitullo:** Right. Yeah. I haven't blogged with any kind of regularity in probably four years now. But my experience as well is that the more introductory topics tend to have a larger natural audience. The first, you know, one to four years of your career, I think are when you tend to learn the most subjects, the most quickly. [00:28:51] +**Carl Vitullo:** Right. Yeah. I haven't blogged with any kind of regularity in probably four years now. But my experience as well is that the more introductory topics tend to have a larger natural audience. The first, you know, one to four years of your career, I think are when you tend to learn the most subjects, the most quickly. [28:51] -And so you're very seeking out new things to learn, new places to learn it from, new ways of thinking about it. The numbers here are maybe fuzzy, but after about four years, I think, you start feeling more confident in your knowledge, and I at least began learning things more on a sort of "just-in-time" basis. Like, oh, I need to do this next week. Let me dig into the subject. [00:29:16] +And so you're very seeking out new things to learn, new places to learn it from, new ways of thinking about it. The numbers here are maybe fuzzy, but after about four years, I think, you start feeling more confident in your knowledge, and I at least began learning things more on a sort of "just-in-time" basis. Like, oh, I need to do this next week. Let me dig into the subject. [29:16] -Trying to write educational content for an intermediate to advanced audience, it's just much harder because there's fewer people actively seeking it out. [00:29:25] +Trying to write educational content for an intermediate to advanced audience, it's just much harder because there's fewer people actively seeking it out. [29:25] -**Josh W Comeau:** It is interesting how that tends to work. And actually, I have a blog post called How to Learn Stuff Quickly which touches on this a little bit. Like when you're first starting to learn something, you don't know what you don't know, right? Like you need a really guided introduction to that thing. And the further you get into it, the more able you are to answer your own questions, to fill in your own gaps. [00:29:44] +**Josh W Comeau:** It is interesting how that tends to work. And actually, I have a blog post called How to Learn Stuff Quickly which touches on this a little bit. Like when you're first starting to learn something, you don't know what you don't know, right? Like you need a really guided introduction to that thing. And the further you get into it, the more able you are to answer your own questions, to fill in your own gaps. [29:44] -And so the learning becomes much more unguided and you can answer more of your own questions cuz you know what you don't know at that point and you can go find those things. Yeah it's funny how that works out. [00:29:53] +And so the learning becomes much more unguided and you can answer more of your own questions cuz you know what you don't know at that point and you can go find those things. Yeah it's funny how that works out. [29:53] -I do think that there is there's still I think a big audience for guided advanced content just for the matter of like, you could figure this thing out. And the example I always think of is like whimsical animations, which is something that I want to create a course on at some point. Because like there are so many things that I just had to figure out the hard way that it took me a lot longer than it would have because there just, like you can certainly Google and find the solution to any discreet problem. [00:30:18] +I do think that there is there's still I think a big audience for guided advanced content just for the matter of like, you could figure this thing out. And the example I always think of is like whimsical animations, which is something that I want to create a course on at some point. Because like there are so many things that I just had to figure out the hard way that it took me a lot longer than it would have because there just, like you can certainly Google and find the solution to any discreet problem. [30:18] -But I think what's harder is to move up a ladder, right? And to kind of get a broader overview and to understand how all these small things connect and what the best tool is to solve a given problem, rather than just searching for the code that you need or the strategy to do it at a more granular level. [00:30:31] +But I think what's harder is to move up a ladder, right? And to kind of get a broader overview and to understand how all these small things connect and what the best tool is to solve a given problem, rather than just searching for the code that you need or the strategy to do it at a more granular level. [30:31] -I think what you're saying is totally right, that when you're first starting out, that's why I think a lot of beginner tutorials are so popular because it's really, there's not really any other way to do it other than to have someone kind of walk you through, okay, these are what the tools are, this is how they work. And to give you that, the skeleton that you can then go on top of. [00:30:46] +I think what you're saying is totally right, that when you're first starting out, that's why I think a lot of beginner tutorials are so popular because it's really, there's not really any other way to do it other than to have someone kind of walk you through, okay, these are what the tools are, this is how they work. And to give you that, the skeleton that you can then go on top of. [30:46] **Carl Vitullo:** Right, right. Yeah, a concept that I try to keep myself too, when I'm doing a new project is have a novelty budget. You know, try and keep keep the reins on how many new things I'm doing at once. And that's just not something do when you're a beginner. When everything is new to you, it's inherently overwhelming. And so a tutorial that gives you a skeleton is a good framework to delegate the setup process so you can focus on what you're trying to learn in the moment. -## Other creators and the power of interactive explanation [00:31:15] +## Other creators and the power of interactive explanation [31:15] -**Carl Vitullo:** Who are some other educators and content creators who you're keeping an eye on? [00:31:20] +**Carl Vitullo:** Who are some other educators and content creators who you're keeping an eye on? [31:20] -**Josh W Comeau:** Yeah. So thing for me you know, my blog uses MDX, which as I mentioned, is Markdown with React components. And the really cool thing about that is that it allows you to like, create bespoke one-off interactions or widgets or code editors or just, you know, things that will help you explain this idea. [00:31:35] +**Josh W Comeau:** Yeah. So thing for me you know, my blog uses MDX, which as I mentioned, is Markdown with React components. And the really cool thing about that is that it allows you to like, create bespoke one-off interactions or widgets or code editors or just, you know, things that will help you explain this idea. [31:35] -And so really I'm always delighted when I see people that publish in a similar style. Now, the two people that come to mind are Maxime Heckel. He blogs at maximeheckel.com, and hopefully I pronounce this even partially correctly. Nanda Syahrasyad, he blogs at nan.fyi. And both of them I'm pretty sure they both use mdx. [00:31:55] +And so really I'm always delighted when I see people that publish in a similar style. Now, the two people that come to mind are Maxime Heckel. He blogs at maximeheckel.com, and hopefully I pronounce this even partially correctly. Nanda Syahrasyad, he blogs at nan.fyi. And both of them I'm pretty sure they both use mdx. [31:55] -They do the same sort of thing that I do, which is to have blog posts that have unique embedded things right in the blog post that let you poke in prod of the idea, right? Maybe there are sliders, maybe there's interactive code that demonstrate the idea that you're talking about. [00:32:07] +They do the same sort of thing that I do, which is to have blog posts that have unique embedded things right in the blog post that let you poke in prod of the idea, right? Maybe there are sliders, maybe there's interactive code that demonstrate the idea that you're talking about. [32:07] -I think about how people learn and, until we had the internet, it was all like, maybe mostly it's books and then you have videos. Maybe you'd get like a VHS that would have a tutorial for something and those are both good and certainly like there are things where video is the best way to learn something. But for a lot of things, I think if you can interact with it, right, like if you can make it, like bring some of the things that video games have in terms of interaction and exploration, it just makes it so much more effective. [00:32:33] +I think about how people learn and, until we had the internet, it was all like, maybe mostly it's books and then you have videos. Maybe you'd get like a VHS that would have a tutorial for something and those are both good and certainly like there are things where video is the best way to learn something. But for a lot of things, I think if you can interact with it, right, like if you can make it, like bring some of the things that video games have in terms of interaction and exploration, it just makes it so much more effective. [32:33] -And I feel like just as a community, we haven't really taken full advantage of that. Like there's so much we could be doing to make educational content more kind of engaging. I don't know if they're a company or a non-profit, but brilliant.org, it's like an interactive textbook is I think how they describe it, where it's like for math and physics and things. You can play with the ideas as you're learning them and it's so much more effective than reading a textbook or watching a video. [00:32:55] +And I feel like just as a community, we haven't really taken full advantage of that. Like there's so much we could be doing to make educational content more kind of engaging. I don't know if they're a company or a non-profit, but brilliant.org, it's like an interactive textbook is I think how they describe it, where it's like for math and physics and things. You can play with the ideas as you're learning them and it's so much more effective than reading a textbook or watching a video. [32:55] -So yeah, those are a couple examples of creators that are that are doing this. But I hope other people get involved cuz , first of all, it's just really fun too, to build them, right? You get to use your programming skills and your content creation skills together, which is always fun. There's so much more potential for what you can do with that [00:33:10] +So yeah, those are a couple examples of creators that are that are doing this. But I hope other people get involved cuz , first of all, it's just really fun too, to build them, right? You get to use your programming skills and your content creation skills together, which is always fun. There's so much more potential for what you can do with that [33:10] -**Carl Vitullo:** That really resonates with me because when you're trying to learn something, I think at the core, what you're doing is building a mental model, and it's so much easier to develop that mental model if you can interact and run tiny little experiments like, you know, if you, if you can play with a simulation and think in your head, I think when I change this, this will happen. If you can get that immediate feedback by interacting with the material you're learning from. I can absolutely see how that is very effective for learning. [00:33:40] +**Carl Vitullo:** That really resonates with me because when you're trying to learn something, I think at the core, what you're doing is building a mental model, and it's so much easier to develop that mental model if you can interact and run tiny little experiments like, you know, if you, if you can play with a simulation and think in your head, I think when I change this, this will happen. If you can get that immediate feedback by interacting with the material you're learning from. I can absolutely see how that is very effective for learning. [33:40] -**Josh W Comeau:** Yeah, and like I mentioned, right, often I'll be walking down the street and I'll think, in fact this happened. I have a blog post on introduction to CSS Transitions. And what I imagined was what if we visualized every frame in the transition? So like if a circle moves from left to right, what if we like have a little shadow, like an outline of where that circle was for every frame? [00:34:02] +**Josh W Comeau:** Yeah, and like I mentioned, right, often I'll be walking down the street and I'll think, in fact this happened. I have a blog post on introduction to CSS Transitions. And what I imagined was what if we visualized every frame in the transition? So like if a circle moves from left to right, what if we like have a little shadow, like an outline of where that circle was for every frame? [34:02] -And that allows you to visualize easing curves. Like if something moves linearly, then all of these circles are equidistant apart. If it has an ease, then it, they bunch up at one end. It allows you to show how frame rate matters, right? Like if you lower the frame rate, you can see that there's less. So like I was, I forget what I was doing, but I wasn't coding. [00:34:18] +And that allows you to visualize easing curves. Like if something moves linearly, then all of these circles are equidistant apart. If it has an ease, then it, they bunch up at one end. It allows you to show how frame rate matters, right? Like if you lower the frame rate, you can see that there's less. So like I was, I forget what I was doing, but I wasn't coding. [34:18] -I was doing something in my regular life and I had that idea. And then pretty much immediately I was like, okay, this has to be a blog post. And that was only possible. Uh, I guess I could have made little videos and then included like a gif of it, but it wouldn't have been, it wouldn't have been as effective. [00:34:30] +I was doing something in my regular life and I had that idea. And then pretty much immediately I was like, okay, this has to be a blog post. And that was only possible. Uh, I guess I could have made little videos and then included like a gif of it, but it wouldn't have been, it wouldn't have been as effective. [34:30] -And it's so cool when you can literally change the easing curve for yourself and then replay the thing and see what it does differently. It's exciting that we have technology to do this now, right? Like it's it's relatively recent, but MDX and tools like it. I forget what it's called, but there is a Vue alternative to this. So it's it not specific to React. Although given that this is a React community, I don't imagine that'll be a problem. It's amazing that we have the tools that we do, and I hope more people will take advantage. [00:34:53] +And it's so cool when you can literally change the easing curve for yourself and then replay the thing and see what it does differently. It's exciting that we have technology to do this now, right? Like it's it's relatively recent, but MDX and tools like it. I forget what it's called, but there is a Vue alternative to this. So it's it not specific to React. Although given that this is a React community, I don't imagine that'll be a problem. It's amazing that we have the tools that we do, and I hope more people will take advantage. [34:53] -**Carl Vitullo:** Yeah. and an example from you that really stuck in my head as the power of explaining things with those sort of interactive elements was, I remember seeing, I think it was on pudding.cool. You did an interactive explanation of sin waves, I think it was, or sound waves. [00:35:08] +**Carl Vitullo:** Yeah. and an example from you that really stuck in my head as the power of explaining things with those sort of interactive elements was, I remember seeing, I think it was on pudding.cool. You did an interactive explanation of sin waves, I think it was, or sound waves. [35:08] -**Josh W Comeau:** Yeah, that was, you know, actually I didn't mention this, but much earlier, in a former life, I went to school for audio engineering, and it was like a six month trade school kind of thing. And I never worked as an audio engineer, but I found it very interesting. And so I had these ideas for how I could visualize that. And it was over like a winter break when I was working at Khan Academy, I had sketches of how this could work, and I decided to see if it could be built, and sure enough it could. Um, And it, yeah, it was a lot of fun. [00:35:34] +**Josh W Comeau:** Yeah, that was, you know, actually I didn't mention this, but much earlier, in a former life, I went to school for audio engineering, and it was like a six month trade school kind of thing. And I never worked as an audio engineer, but I found it very interesting. And so I had these ideas for how I could visualize that. And it was over like a winter break when I was working at Khan Academy, I had sketches of how this could work, and I decided to see if it could be built, and sure enough it could. Um, And it, yeah, it was a lot of fun. [35:34] -I initially it alone, and then the folks at pudding.cool reached out and offered to buy it from me essentially, like to pay me to have it published through their journal. I don't think I was familiar with them before, but I took a look at their work and it was super cool. [00:35:46] +I initially it alone, and then the folks at pudding.cool reached out and offered to buy it from me essentially, like to pay me to have it published through their journal. I don't think I was familiar with them before, but I took a look at their work and it was super cool. [35:46] -It's kind of cool that there are organizations out there that will pay you to do this, which I had no idea. It's another one of those things where it was just an idea that I had. I was honestly kind of waiting for my skills to catch up because I had the idea years before, but I just had no idea how to do it. [00:35:59] +It's kind of cool that there are organizations out there that will pay you to do this, which I had no idea. It's another one of those things where it was just an idea that I had. I was honestly kind of waiting for my skills to catch up because I had the idea years before, but I just had no idea how to do it. [35:59] -Like I figured maybe svg, but I didn't have much SVG experience at the time. Actually I wound up building it twice. I built it in in Canvas partially just as like as a learning exercise, but because I wanted to see which one was more, both performant, but also which one just felt better to use. [00:36:14] +Like I figured maybe svg, but I didn't have much SVG experience at the time. Actually I wound up building it twice. I built it in in Canvas partially just as like as a learning exercise, but because I wanted to see which one was more, both performant, but also which one just felt better to use. [36:14] I forget. I think I wound up going with SVG in the end. It was definitely a challenging project, but a really satisfying one. -## Going before you think you're ready [00:36:19] +## Going before you think you're ready [36:19] -**Carl Vitullo:** What you just said about, it sat with you, it sat in your head for a number of years before you were actually able to get it out onto a webpage. It's sort of that, "overnight success takes many years" concept. It takes so long to, for an idea to percolate around before it becomes fully fleshed out. [00:36:36] +**Carl Vitullo:** What you just said about, it sat with you, it sat in your head for a number of years before you were actually able to get it out onto a webpage. It's sort of that, "overnight success takes many years" concept. It takes so long to, for an idea to percolate around before it becomes fully fleshed out. [36:36] -**Josh W Comeau:** Yeah. And it is, And this is something too, like I probably could have done it earlier. And this is something I've told so many bootcamp students, that like, if you wait until you are a hundred percent ready to do something, you're never gonna do it. Like you have to eventually, whether it's like applying to jobs after, cuz a lot of people, they finish the program and they still feel like they don't have any solid grasp of anything. [00:36:57] +**Josh W Comeau:** Yeah. And it is, And this is something too, like I probably could have done it earlier. And this is something I've told so many bootcamp students, that like, if you wait until you are a hundred percent ready to do something, you're never gonna do it. Like you have to eventually, whether it's like applying to jobs after, cuz a lot of people, they finish the program and they still feel like they don't have any solid grasp of anything. [36:57] -The urge often is to spend a few months solidifying what you've learned so that you're ready to get your first job. When really I think, you can probably advance much quicker by applying to jobs now and then developing those skills on the job. If you wait until you're ready, you're never gonna be ready because there's always… I don't feel like I've ever hit the point where I am a hundred percent confident in everything that I'm doing, and I feel like I know everything there is to know, like, of course not, right? There's always things that I don't know how to do and that I'll figure that out, like you mentioned, right? You figure it out as you go. [00:37:30] +The urge often is to spend a few months solidifying what you've learned so that you're ready to get your first job. When really I think, you can probably advance much quicker by applying to jobs now and then developing those skills on the job. If you wait until you're ready, you're never gonna be ready because there's always… I don't feel like I've ever hit the point where I am a hundred percent confident in everything that I'm doing, and I feel like I know everything there is to know, like, of course not, right? There's always things that I don't know how to do and that I'll figure that out, like you mentioned, right? You figure it out as you go. [37:30] -I probably should have started that project a year or two earlier, but I'm glad I started it when I did, or I'm glad I didn't start it later. [00:37:36] +I probably should have started that project a year or two earlier, but I'm glad I started it when I did, or I'm glad I didn't start it later. [37:36] -**Carl Vitullo:** Sure. (laughter) Yeah. Advice that I have heard is that if you're ever at a point where you know everything you need to do your job, you should find a new job because you're not being challenged anymore. And if you're not being challenged, you aren't growing. [00:37:48] +**Carl Vitullo:** Sure. (laughter) Yeah. Advice that I have heard is that if you're ever at a point where you know everything you need to do your job, you should find a new job because you're not being challenged anymore. And if you're not being challenged, you aren't growing. [37:48] -**Josh W Comeau:** Yeah. This is actually something I mentioned in my new course because I did, so my new course, the Joy of React has a module on hooks and in that hooks module we talk about use effect. And there's just, there's so much confusion about use effect out there, right? It's a challenging api. And, I was building this course, and I decided I was gonna cover effects before refs because I figured most of the things you do with refs require effects, right? Like the typical example is you wanna focus and input after the component mounts. So you use a ref for that, but then to actually do the focusing, you have to do that in an effect. [00:38:24] +**Josh W Comeau:** Yeah. This is actually something I mentioned in my new course because I did, so my new course, the Joy of React has a module on hooks and in that hooks module we talk about use effect. And there's just, there's so much confusion about use effect out there, right? It's a challenging api. And, I was building this course, and I decided I was gonna cover effects before refs because I figured most of the things you do with refs require effects, right? Like the typical example is you wanna focus and input after the component mounts. So you use a ref for that, but then to actually do the focusing, you have to do that in an effect. [38:24] -And so I, we covered effects and I kept finding myself setting up the examples where like, I would have to have these disclaimers, like, this isn't really how you should do this, and later on we'll learn why. And I showed it to some people and the feedback was a lot of like yeah, like this, it's kind of hard to follow. [00:38:40] +And so I, we covered effects and I kept finding myself setting up the examples where like, I would have to have these disclaimers, like, this isn't really how you should do this, and later on we'll learn why. And I showed it to some people and the feedback was a lot of like yeah, like this, it's kind of hard to follow. [38:40] And so I wound up redoing a huge chunk of it. Like I spent probably five or six weeks just redoing and structuring it differently so that refs are covered first and everything does work way better in that. But it really did, like I had a couple days there where I was just like, my goodness, should I even continue with this course? Like it's taken so much longer than I thought it would And it just struck me that like, this is how so many people feel when working with hooks. -## Ignoring imposter syndrome [00:39:01] +## Ignoring imposter syndrome [39:01] -**Josh W Comeau:** So in the redone content, the first video before the effects is like, just an honest conversation about how, like there will be times where you feel like you don't know what you're doing, and should you ever share some code that you've written on Twitter that uses an effect, people will come outta the woodwork and tell you that you're doing it wrong. Like, this shouldn't be like this, you should do this instead. The best practice is this, right? You shouldn't use an effect for this. You should use something. And all of this advice is, not all of it. Most of it is very, very good, like the person sharing it is good intentioned and trying to help, maybe they made the same mistake and they're trying to share it. [00:39:34] +**Josh W Comeau:** So in the redone content, the first video before the effects is like, just an honest conversation about how, like there will be times where you feel like you don't know what you're doing, and should you ever share some code that you've written on Twitter that uses an effect, people will come outta the woodwork and tell you that you're doing it wrong. Like, this shouldn't be like this, you should do this instead. The best practice is this, right? You shouldn't use an effect for this. You should use something. And all of this advice is, not all of it. Most of it is very, very good, like the person sharing it is good intentioned and trying to help, maybe they made the same mistake and they're trying to share it. [39:34] -And the advice is usually helpful. Like your code will be better if you follow that advice. But like the big but at the end of all this, the, this run on sentence, is that it still works. Like most of the code that most of us write is not optimal, but it still works. And you should never feel guilt or shame for writing code that isn't like the top, that isn't the most conventional, the most aligned with best practices. [00:39:59] +And the advice is usually helpful. Like your code will be better if you follow that advice. But like the big but at the end of all this, the, this run on sentence, is that it still works. Like most of the code that most of us write is not optimal, but it still works. And you should never feel guilt or shame for writing code that isn't like the top, that isn't the most conventional, the most aligned with best practices. [39:59] -I can tell you, like I worked at Kahn Academy, which as I mentioned was one of the first organizations outside of Facebook to use React. We did so many things that were like objectively wrong. Like, I'll give you an example. We used Redux. We had like five different Redux stores because we had a different Redux store for every concern. And sometimes things overlapped, so we'd have to sync things between different Redux stores. Which if, you know Redux, like that's the big thing that you're not supposed to do. [00:40:23] +I can tell you, like I worked at Kahn Academy, which as I mentioned was one of the first organizations outside of Facebook to use React. We did so many things that were like objectively wrong. Like, I'll give you an example. We used Redux. We had like five different Redux stores because we had a different Redux store for every concern. And sometimes things overlapped, so we'd have to sync things between different Redux stores. Which if, you know Redux, like that's the big thing that you're not supposed to do. [40:23] -**Carl Vitullo:** Right, that's sort of a cardinal sin, [00:40:25] +**Carl Vitullo:** Right, that's sort of a cardinal sin, [40:25] -**Josh W Comeau:** But I'll tell you what. We never got a support ticket that said, Hey uh, I'm trying to learn physics on your program, and you're, you have too many Redux stores. Right? Like this invisible to the user. It slows you down in your development a little bit, which is it is still a good idea to fix these things. But you can absolutely create brilliant things, while still making pretty foundational mistakes. And that's just the way it goes. [00:40:47] +**Josh W Comeau:** But I'll tell you what. We never got a support ticket that said, Hey uh, I'm trying to learn physics on your program, and you're, you have too many Redux stores. Right? Like this invisible to the user. It slows you down in your development a little bit, which is it is still a good idea to fix these things. But you can absolutely create brilliant things, while still making pretty foundational mistakes. And that's just the way it goes. [40:47] -And the, the reason I thought of all this was when I look at code, I started this course platform in early 2020. It uses Hooks exclusively, or almost exclusively Hooks came out in 2019. So when I started working on this course, platform Hooks were new and none of us knew like what the best practices were, right? [00:41:03] +And the, the reason I thought of all this was when I look at code, I started this course platform in early 2020. It uses Hooks exclusively, or almost exclusively Hooks came out in 2019. So when I started working on this course, platform Hooks were new and none of us knew like what the best practices were, right? [41:03] I have a lot of eslint disable next line before my dependency array in the use effect hook, which is what you're not supposed to do. Uh, But the course platform works just fine. And I am, you know, there's like the Boy Scout thing of, like, every time you touch a piece of code to make it a little bit better. -## "Best practices" vs "Happy practices" [00:41:16] +## "Best practices" vs "Happy practices" [41:16] -**Josh W Comeau:** So I am slowly getting rid of those bad practices, but I'm pretty sure that no bugs have been caused by these bad practices. No experiences have been degraded. And the course platform works pretty well. So, uh, you know, I think it's the important thing I realize and that I hope other people realize in this course is that none of this stuff is life or death. [00:41:35] +**Josh W Comeau:** So I am slowly getting rid of those bad practices, but I'm pretty sure that no bugs have been caused by these bad practices. No experiences have been degraded. And the course platform works pretty well. So, uh, you know, I think it's the important thing I realize and that I hope other people realize in this course is that none of this stuff is life or death. [41:35] -Like, You will make mistakes, that's fine. And if you look back at code that you wrote a year or two ago as I've been doing, working on my course platform, and you're embarrassed by the code, that's a good thing because it means that you have grown that much better in the time since. [00:41:48] +Like, You will make mistakes, that's fine. And if you look back at code that you wrote a year or two ago as I've been doing, working on my course platform, and you're embarrassed by the code, that's a good thing because it means that you have grown that much better in the time since. [41:48] -**Carl Vitullo:** Yeah. And you know, in the community, we get a lot of questions like, what's the best, you know, form library, what's the best component toolkit? What's the best way to fetch data? And [00:41:59] +**Carl Vitullo:** Yeah. And you know, in the community, we get a lot of questions like, what's the best, you know, form library, what's the best component toolkit? What's the best way to fetch data? And [41:59] -**Josh W Comeau:** Hmm. [00:42:00] +**Josh W Comeau:** Hmm. [42:00] -**Carl Vitullo:** I thought of this because you mentioned optimal, and "best", or "optimal" is just it's couched in so much context, In order to correctly answer that question, that, there is no best, no optimal. It, It depends on what you're optimizing for. And you know, sometimes you're optimizing for speed of authoring. Maybe you need to ship a feature in two weeks and you know, there's some deadline that's crucial and yeah, you know what the the optimal code for that is something that works. So, yeah, just, uh, optimal or best is so subjective. [00:42:33] +**Carl Vitullo:** I thought of this because you mentioned optimal, and "best", or "optimal" is just it's couched in so much context, In order to correctly answer that question, that, there is no best, no optimal. It, It depends on what you're optimizing for. And you know, sometimes you're optimizing for speed of authoring. Maybe you need to ship a feature in two weeks and you know, there's some deadline that's crucial and yeah, you know what the the optimal code for that is something that works. So, yeah, just, uh, optimal or best is so subjective. [42:33] -**Josh W Comeau:** So my React course still has a couple modules yet to come, and I, I haven't quite figured out the structure for it, but I do think one of the, if not an entire module a chunk of a module is going to be on things that I've learned about using React effectively, like building on everything that we've learned so far, here are some things that I used to do that I've since learned are not as good as they could be, or, and my plan is to call them "happy practices" rather than "best practices." Cuz like, they're not the best, they're, they're just things that make me happy. I think that's ultimately a better way to look at it cuz you're right, there's no such thing as a best practice because it really depends on the circumstances. [00:43:05] +**Josh W Comeau:** So my React course still has a couple modules yet to come, and I, I haven't quite figured out the structure for it, but I do think one of the, if not an entire module a chunk of a module is going to be on things that I've learned about using React effectively, like building on everything that we've learned so far, here are some things that I used to do that I've since learned are not as good as they could be, or, and my plan is to call them "happy practices" rather than "best practices." Cuz like, they're not the best, they're, they're just things that make me happy. I think that's ultimately a better way to look at it cuz you're right, there's no such thing as a best practice because it really depends on the circumstances. [43:05] -**Carl Vitullo:** Yeah, absolutely. Some Bob Ross vibes there. Happy little braces. [00:43:10] +**Carl Vitullo:** Yeah, absolutely. Some Bob Ross vibes there. Happy little braces. [43:10] -**Josh W Comeau:** I mean, it's called the Joy of React. [00:43:12] +**Josh W Comeau:** I mean, it's called the Joy of React. [43:12] -**Carl Vitullo:** Should bring joy to people. [00:43:13] +**Carl Vitullo:** Should bring joy to people. [43:13] -**Josh W Comeau:** I figure I should lean into that. [00:43:16] +**Josh W Comeau:** I figure I should lean into that. [43:16] -**Carl Vitullo:** If there's anything else you wanna talk about on your course, I'd love to hear it. Two years in progress, what are you looking to do next with it? [00:43:23] +**Carl Vitullo:** If there's anything else you wanna talk about on your course, I'd love to hear it. Two years in progress, what are you looking to do next with it? [43:23] **Josh W Comeau:** I think I started working on this in early of last year, so it's been about a year. And I did take about a month off, cuz now I have two courses. So there was a month there where I was going back and updating a bunch of stuff in the CSS course. -## Taking breaks, not unit testing [00:43:34] +## Taking breaks, not unit testing [43:34] -**Josh W Comeau:** I say that it takes about two years to make a course. Really it's about a year and a half. And then I take a six month break in between making them both to support the new course and also just recharge a little bit. And so I've been working on it for about a year. [00:43:45] +**Josh W Comeau:** I say that it takes about two years to make a course. Really it's about a year and a half. And then I take a six month break in between making them both to support the new course and also just recharge a little bit. And so I've been working on it for about a year. [43:45] -The course is about two thirds finished. Like the plan is to have six modules and three projects, and right now there are four modules and two projects. So literally two thirds done. And yeah, so over the next few months, the plan is to finish that course. There have been a lot of questions about like, what is to come in those modules, and I definitely have some ideas. [00:44:01] +The course is about two thirds finished. Like the plan is to have six modules and three projects, and right now there are four modules and two projects. So literally two thirds done. And yeah, so over the next few months, the plan is to finish that course. There have been a lot of questions about like, what is to come in those modules, and I definitely have some ideas. [44:01] -This is another thing that I think catches people off guard. One of the more common requests I've gotten is to cover component testing because my course doesn't touch on it at all, and I don't do any component testing. like in my course platform, the only test that I have are end-to-end tests, and I have maybe like 20 or 30 of them. It's not extensive. [00:44:19] +This is another thing that I think catches people off guard. One of the more common requests I've gotten is to cover component testing because my course doesn't touch on it at all, and I don't do any component testing. like in my course platform, the only test that I have are end-to-end tests, and I have maybe like 20 or 30 of them. It's not extensive. [44:19] -It covers the most critical flows, like, signing up and onboarding stuff, right? The things that, I want to know if this thing breaks cuz it, progress tracking is another one. But no, don't really, uh, do any component testing and I, I used to, but it's been four or five years since I did like Enzyme. I don't even know if Enzyme exists anymore. [00:44:36] +It covers the most critical flows, like, signing up and onboarding stuff, right? The things that, I want to know if this thing breaks cuz it, progress tracking is another one. But no, don't really, uh, do any component testing and I, I used to, but it's been four or five years since I did like Enzyme. I don't even know if Enzyme exists anymore. [44:36] -**Carl Vitullo:** That's been my experience too. I remember early in my career, I wrote so many unit tests . And then at some point I realized like, you know what? These tests are just breaking constantly for no reason. They're not giving me value. [00:44:48] +**Carl Vitullo:** That's been my experience too. I remember early in my career, I wrote so many unit tests . And then at some point I realized like, you know what? These tests are just breaking constantly for no reason. They're not giving me value. [44:48] -I haven't quite gotten all the way out to end-to-end tests, just because I've found them flaky. They're difficult to set up. Mocking is a challenge, yeah. If it doesn't alert you reliably of a critical breakage, then… tests can be more harmful than helpful in a lot of cases. [00:45:06] +I haven't quite gotten all the way out to end-to-end tests, just because I've found them flaky. They're difficult to set up. Mocking is a challenge, yeah. If it doesn't alert you reliably of a critical breakage, then… tests can be more harmful than helpful in a lot of cases. [45:06] -So yeah, I think your experience with testing I think is maybe more broadly applicable than many developers realize. [00:45:13] +So yeah, I think your experience with testing I think is maybe more broadly applicable than many developers realize. [45:13] -**Josh W Comeau:** Yeah, I wanna make clear that this is my own subjective personal opinion and not even a, an opinion I feel very confident in, but I think it makes sense for unit tests when you have a library or a component library, anything where it's like other developers are consuming your tool because yeah, you wanna make sure that like your API is rigid, right? [00:45:30] +**Josh W Comeau:** Yeah, I wanna make clear that this is my own subjective personal opinion and not even a, an opinion I feel very confident in, but I think it makes sense for unit tests when you have a library or a component library, anything where it's like other developers are consuming your tool because yeah, you wanna make sure that like your API is rigid, right? [45:30] If you're not doing a major version bump, then like I feel like that is really good to have. In your own code where you're not versioning it, there's no semantic versioning and it, it's so much work to keep the tests up to date as you make changes. Snapshot tests make that a little bit nicer, but again, I haven't done them in years, so I have no confidence in my ability to explain how to use them well. -## How do you work in public? [00:45:50] +## How do you work in public? [45:50] -**Carl Vitullo:** We do, we do have a question in the chat of, how do you actually work in public? Do you have any thoughts you wanna share on that? [00:45:57] +**Carl Vitullo:** We do, we do have a question in the chat of, how do you actually work in public? Do you have any thoughts you wanna share on that? [45:57] -**Josh W Comeau:** Yeah, that's a great question. I think for myself personally, it's tricky to say if this is generalizable because, my business right now is creating courses and so it really does help me to, just get people to be aware of the mind you, I guess this is generally applicable cuz you do want people to know about the things that you're doing. You never know how, like a thing that you share will be noticed by someone that works at a company that you wanna work for and appreciated by them. [00:46:20] +**Josh W Comeau:** Yeah, that's a great question. I think for myself personally, it's tricky to say if this is generalizable because, my business right now is creating courses and so it really does help me to, just get people to be aware of the mind you, I guess this is generally applicable cuz you do want people to know about the things that you're doing. You never know how, like a thing that you share will be noticed by someone that works at a company that you wanna work for and appreciated by them. [46:20] -So I and I don't have too rigid of a strategy. Often, And I've been neglecting this recently, but for a long time, whenever I either learned or was reminded of like a cool trick, whether it's like a CSS thing, like I think my most popular tweet is, uh, how the CSS filter drop shadow behaves quite a bit like the CSS property box-shadow, but if you apply it to an image and that image is transparent, so say you have like my little 3D mascot character, it'll apply the shadow to the outline of the image rather than just the box, like the square that the image takes up. Um, and that was like a cool. It is pretty neat. I think I already knew that, but I remembered that this thing existed, so I spent the 10 minutes to like format it nicely into a tweet to show the before and after. That was like a really helpful thing because it, I think it got something like 7,000 likes, like it, it spread pretty far beyond the people that typically follow me. And I do think like there's the audience building aspect, which I do think, like I mentioned, even if you're not trying to sell a course, it's still useful cuz it grows your network and you never know when those connections come in. [00:47:20] +So I and I don't have too rigid of a strategy. Often, And I've been neglecting this recently, but for a long time, whenever I either learned or was reminded of like a cool trick, whether it's like a CSS thing, like I think my most popular tweet is, uh, how the CSS filter drop shadow behaves quite a bit like the CSS property box-shadow, but if you apply it to an image and that image is transparent, so say you have like my little 3D mascot character, it'll apply the shadow to the outline of the image rather than just the box, like the square that the image takes up. Um, and that was like a cool. It is pretty neat. I think I already knew that, but I remembered that this thing existed, so I spent the 10 minutes to like format it nicely into a tweet to show the before and after. That was like a really helpful thing because it, I think it got something like 7,000 likes, like it, it spread pretty far beyond the people that typically follow me. And I do think like there's the audience building aspect, which I do think, like I mentioned, even if you're not trying to sell a course, it's still useful cuz it grows your network and you never know when those connections come in. [47:20] -But, it's also just really good for organizing your own thoughts, the same thing as true of teaching. You realize what you don't understand when you try to explain it. Like you might think you have a pretty solid grasp of something, and then someone asks you a question and you open your mouth and all of a sudden you realize that there's this gaping hole in your knowledge. Like you actually can't explain it as coherently as you thought you would be able to. [00:47:40] +But, it's also just really good for organizing your own thoughts, the same thing as true of teaching. You realize what you don't understand when you try to explain it. Like you might think you have a pretty solid grasp of something, and then someone asks you a question and you open your mouth and all of a sudden you realize that there's this gaping hole in your knowledge. Like you actually can't explain it as coherently as you thought you would be able to. [47:40] -And learning in public gives you a lot of the same benefit. Like you go to tweet something, and this is something that happens to me too. Like, I'll tweet something that I just discovered that I thought was cool, and people will ask like deep questions that like, I don't know, I just found out this thing existed. But it's a good question! Sometimes I'll just say I don't know, you, if you find out, let me know. But, if it is something I'm interested in, that gives me the impetus to do the digging and to answer it. And that's something that, you know, I wind up benefiting from that because I answer that question. [00:48:08] +And learning in public gives you a lot of the same benefit. Like you go to tweet something, and this is something that happens to me too. Like, I'll tweet something that I just discovered that I thought was cool, and people will ask like deep questions that like, I don't know, I just found out this thing existed. But it's a good question! Sometimes I'll just say I don't know, you, if you find out, let me know. But, if it is something I'm interested in, that gives me the impetus to do the digging and to answer it. And that's something that, you know, I wind up benefiting from that because I answer that question. [48:08] -**Carl Vitullo:** Yeah. Yeah. I can't remember if this is the right term, but, concept of, paradox of expertise, I think is maybe it, where as you become more expert in some domain of knowledge, you become so immersed in the jargon that you lose the ability to communicate that knowledge to others because, you know, your your fundamental building blocks that you have your mental model based on are so specialized that other people can't even follow what you're saying. [00:48:38] +**Carl Vitullo:** Yeah. Yeah. I can't remember if this is the right term, but, concept of, paradox of expertise, I think is maybe it, where as you become more expert in some domain of knowledge, you become so immersed in the jargon that you lose the ability to communicate that knowledge to others because, you know, your your fundamental building blocks that you have your mental model based on are so specialized that other people can't even follow what you're saying. [48:38] -Like blogging and trying to communicate things; it's a good exercise because communication is such a influential aspect of anyone's career. Even if you're not a professional educator, justifying your ideas and convincing other people that your solution is correct or good in some dimension So, yeah making small efforts to communicate what you know to others, I think is just so beneficial. Even if you're not trying to become an educator or trying to build a personal brand. [00:49:06] +Like blogging and trying to communicate things; it's a good exercise because communication is such a influential aspect of anyone's career. Even if you're not a professional educator, justifying your ideas and convincing other people that your solution is correct or good in some dimension So, yeah making small efforts to communicate what you know to others, I think is just so beneficial. Even if you're not trying to become an educator or trying to build a personal brand. [49:06] -**Josh W Comeau:** There's just so many benefits. Trying to explain something changes how you think about it. What you're saying is totally true. It's hard to remember what it was like not to know something. If we imagine like the connections into your brain as like paths through a forest, right? People walk the same path over time and so that gets worn down there, you lose the ability to wander off that path. Like you get stuck in these thought patterns and explaining things, teaching people, sharing things in public is a great way to veer off that path. [00:49:33] +**Josh W Comeau:** There's just so many benefits. Trying to explain something changes how you think about it. What you're saying is totally true. It's hard to remember what it was like not to know something. If we imagine like the connections into your brain as like paths through a forest, right? People walk the same path over time and so that gets worn down there, you lose the ability to wander off that path. Like you get stuck in these thought patterns and explaining things, teaching people, sharing things in public is a great way to veer off that path. [49:33] -**Carl Vitullo:** Get off in the weeds. [00:49:34] +**Carl Vitullo:** Get off in the weeds. [49:34] -**Josh W Comeau:** Yeah, exactly. That's a good way to say it. [00:49:36] +**Josh W Comeau:** Yeah, exactly. That's a good way to say it. [49:36] -**Carl Vitullo:** Yeah, that's a really nice metaphor. I like that a lot. [00:49:38] +**Carl Vitullo:** Yeah, that's a really nice metaphor. I like that a lot. [49:38] -**Josh W Comeau:** I just came up with it. So that's. Usually I have to prepare these things. [00:49:41] +**Josh W Comeau:** I just came up with it. So that's. Usually I have to prepare these things. [49:41] **Carl Vitullo:** Nice. We are just a little bit over time here. -## AI's impact on web development [00:49:45] +## AI's impact on web development [49:45] -**Carl Vitullo:** Maybe one last quick question from that same post in the chat. Do you have any opinions on AI and whether it's going to destroy our future careers as software developers? Is that something you think about? [00:49:56] +**Carl Vitullo:** Maybe one last quick question from that same post in the chat. Do you have any opinions on AI and whether it's going to destroy our future careers as software developers? Is that something you think about? [49:56] -**Josh W Comeau:** I have a bunch of thoughts. I do think that it will make redundant some of the things that we do as developers, right? Like, I think that's been true of pretty much every new technology that comes around. I struggle to imagine that we'll ever get to a place where someone will type in, like build me an Airbnb application, but for dog rental and like, it'll spit out a fully functional app that not only will do exactly what you expected in what you intended for it to do, but will be modifiable by you, it just strikes me as like not something that's around the corner. Honestly I think the bigger disruption is things like Squarespace or Webflow. [00:50:36] +**Josh W Comeau:** I have a bunch of thoughts. I do think that it will make redundant some of the things that we do as developers, right? Like, I think that's been true of pretty much every new technology that comes around. I struggle to imagine that we'll ever get to a place where someone will type in, like build me an Airbnb application, but for dog rental and like, it'll spit out a fully functional app that not only will do exactly what you expected in what you intended for it to do, but will be modifiable by you, it just strikes me as like not something that's around the corner. Honestly I think the bigger disruption is things like Squarespace or Webflow. [50:36] -I think that has probably already disrupted many, many of our jobs, right? I imagine it used to be that if you're like a bakery or a dentist and you want a website, you have to like find someone and pay them. Whereas now you go to Webflow and you find the template that you like and you fill in the information. [00:50:50] +I think that has probably already disrupted many, many of our jobs, right? I imagine it used to be that if you're like a bakery or a dentist and you want a website, you have to like find someone and pay them. Whereas now you go to Webflow and you find the template that you like and you fill in the information. [50:50] -I think that's a wonderful thing because it means that small business owners are no longer required to spend tens of thousands or hundreds of thousands of dollars hiring a team to do this. But it also means that like us developers can work on more interesting, challenging projects like. I imagine I would probably feel bored if I spent a whole career building static landing pages for similarly kinds… it just seems like it's, there's not a lot of variety there, and that it wouldn't challenge me as much as some of the work that can be done now that can't be done in tools like Squarespace or Webflow. I don't think our jobs are going anywhere, anytime soon. I do think that these tools will make some of our jobs easier, and will make some of the work that we do… it'll free us up from the more rote parts of our job and let us spend more time on the challenging problem solving design type stuff. [00:51:39] +I think that's a wonderful thing because it means that small business owners are no longer required to spend tens of thousands or hundreds of thousands of dollars hiring a team to do this. But it also means that like us developers can work on more interesting, challenging projects like. I imagine I would probably feel bored if I spent a whole career building static landing pages for similarly kinds… it just seems like it's, there's not a lot of variety there, and that it wouldn't challenge me as much as some of the work that can be done now that can't be done in tools like Squarespace or Webflow. I don't think our jobs are going anywhere, anytime soon. I do think that these tools will make some of our jobs easier, and will make some of the work that we do… it'll free us up from the more rote parts of our job and let us spend more time on the challenging problem solving design type stuff. [51:39] -**Carl Vitullo:** I think that's exactly my take on it as well. It's just another tool. And our jobs didn't go away when Squarespace and Webflow came out. It just changed and evolved. I think I agree with you a hundred percent on AI's influence on our job as well. Yeah. [00:51:54] +**Carl Vitullo:** I think that's exactly my take on it as well. It's just another tool. And our jobs didn't go away when Squarespace and Webflow came out. It just changed and evolved. I think I agree with you a hundred percent on AI's influence on our job as well. Yeah. [51:54] -Well Josh, thanks so much for coming out. It's been really great chatting with you. [00:51:57] +Well Josh, thanks so much for coming out. It's been really great chatting with you. [51:57] -**Josh W Comeau:** Oh, the pleasure's all mine. This was, this was a lot of fun. I hope it was uh, useful or interesting in some way. [00:52:02] +**Josh W Comeau:** Oh, the pleasure's all mine. This was, this was a lot of fun. I hope it was uh, useful or interesting in some way. [52:02] **Carl Vitullo:** Yeah, absolutely. Yeah, we'll sign off here. Josh has more courses coming out, so check it out at joyreact.com. Thanks so much. diff --git a/src/transcripts/matt-pocock_mapleleaf.md b/src/transcripts/matt-pocock_mapleleaf.md index 45ad1dc..eeb0f1e 100644 --- a/src/transcripts/matt-pocock_mapleleaf.md +++ b/src/transcripts/matt-pocock_mapleleaf.md @@ -11,7 +11,7 @@ people: "[Matt Pocock](https://github.com/mattpocockuk)" -[00:00:00] +[00:00] **Carl Vitullo:** I'm here today with Matt Pockock and Maple Leaf. Matt is a TypeScript educator working independently. And he has spent time at both Vercel and Stately, which are two companies that I've been keeping an eye on and ones that I think are doing really exciting work. Matt, could you tell us a little bit about yourself? @@ -19,11 +19,11 @@ people: "[Matt Pocock](https://github.com/mattpocockuk)" So I was working on TurboRepo, so I'm interested in in bundlers, in kind of in state machines, state charts. But my real love this year is TypeScript. So I've been working on a TypeScript course called Total TypeScript. And if you've been following me on Twitter, you know that I've been putting out videos, putting out education materials, doing YouTube stuff. And a lot of that is really my first love. -My background [00:01:00] is as a teacher and singing teacher and voice coach. And so I'm kind of falling back in love with teaching again, but this time teaching people to code instead of teaching people to speak. So yeah, that's kind of _me_, and in 2023, I'm focusing on I, we launched the first module of the course in December and this year I'm planning on releasing more modules, kind of like really, really building out some quality free materials that's like a free beginner's course on the site. And also building out this paid course too. +My background [01:00] is as a teacher and singing teacher and voice coach. And so I'm kind of falling back in love with teaching again, but this time teaching people to code instead of teaching people to speak. So yeah, that's kind of _me_, and in 2023, I'm focusing on I, we launched the first module of the course in December and this year I'm planning on releasing more modules, kind of like really, really building out some quality free materials that's like a free beginner's course on the site. And also building out this paid course too. **Carl Vitullo:** Very nice. It's so cool that you used to do singing and voice coaching. What a transition from that into software developer and developer advocacy. I really think of a lot of the work you've been doing on state machines and you're at the cutting edge of web development with things like Stately and Vercel and TurboPack. That's really amazing. I'd love to talk a little bit more about how you made that transition. But before we do that MapleLeaf, can you say a little bit about your background? -**MapleLeaf:** Yeah, for sure. I've been programming for a total of about 10 or so more [00:02:00] years mostly in the WebDev space. Reacting, just been hanging out in communities, just talking to people helping people out. Also just dabbling in whatever else catches my interest. Started out with an interest in game development and eventually just slid into a web when when I looked at it and realized like how ubiquitous the platform is and the tooling and like the feedback loops that a lot of stuff like that. And yeah, that's pretty much me. +**MapleLeaf:** Yeah, for sure. I've been programming for a total of about 10 or so more [02:00] years mostly in the WebDev space. Reacting, just been hanging out in communities, just talking to people helping people out. Also just dabbling in whatever else catches my interest. Started out with an interest in game development and eventually just slid into a web when when I looked at it and realized like how ubiquitous the platform is and the tooling and like the feedback loops that a lot of stuff like that. And yeah, that's pretty much me. **Carl Vitullo:** Yeah, makes sense. I think that's a pretty familiar story. And so you and Matt know each other a little bit, but this is the first time you're meeting in person, as it were, sharing a live space. @@ -37,23 +37,23 @@ My background [00:01:00] is as a teacher and singing teacher and voice coach. An **MapleLeaf:** A cult. -**Matt Pocock:** Yeah, it's a cult, but we know we're, we're welcoming [00:03:00] and you know, we like new people, new faces, and. TypeScript seems to just be everywhere on Twitch at the moment as well. So like Theo on Twitch and Primeagen on Twitch are constantly talking about TypeScript or mentioning TypeScript. It seems to be one of the hot topics to talk about alongside Bun, alongside, you know a bunch of other stuff, so, and solid as well. So yeah, I guess that's the circles we've been moving in. +**Matt Pocock:** Yeah, it's a cult, but we know we're, we're welcoming [03:00] and you know, we like new people, new faces, and. TypeScript seems to just be everywhere on Twitch at the moment as well. So like Theo on Twitch and Primeagen on Twitch are constantly talking about TypeScript or mentioning TypeScript. It seems to be one of the hot topics to talk about alongside Bun, alongside, you know a bunch of other stuff, so, and solid as well. So yeah, I guess that's the circles we've been moving in. **MapleLeaf:** Yeah. Pretty much same. **Carl Vitullo:** Nice. Yeah, the web development, TypeScript, live community, the people really staying on top of everything. That's awesome. So Matt, you said that you were working on the XState Core team at the start of 2022. How'd you get involved with XState and how long had you been participating in Open Source before you joined the company? -**Matt Pocock:** Yeah, a lot of a lot of my open source experience was really with XState, and XState at the time kind of didn't have a very good TypeScript experience. A lot of it was, you know, the library was originally built in vanilla JavaScript, then ported it over to TypeScript and it's pretty hard to [00:04:00] do… what XState does is it does finite state machines and state charts, and those are really very config heavy ways to build logic in your application. So you provide like this big wall of essentially JSON to a function, and then that gives you a load of methods, gives you kind of like a, an event handler lets you monitor the state of your application. +**Matt Pocock:** Yeah, a lot of a lot of my open source experience was really with XState, and XState at the time kind of didn't have a very good TypeScript experience. A lot of it was, you know, the library was originally built in vanilla JavaScript, then ported it over to TypeScript and it's pretty hard to [04:00] do… what XState does is it does finite state machines and state charts, and those are really very config heavy ways to build logic in your application. So you provide like this big wall of essentially JSON to a function, and then that gives you a load of methods, gives you kind of like a, an event handler lets you monitor the state of your application. It's really, really cool and like really an amazing solution for for complicated state and complicated applications. But the TypeScript experience was kind of, really bad because it's really hard to get inference when you are just dealing with an enormous object, basically. TypeScript lives off function calls and we needed a different api or a different solution if we were gonna solve it. -So I was working at a company at the time and we were using XState a lot and I wanted to be more type safe, let's say. And so I built something called XState CodeGen which basically used like an AST parser to look at the file in your [00:05:00] application where a state machine was, and then give that more powerful types. +So I was working at a company at the time and we were using XState a lot and I wanted to be more type safe, let's say. And so I built something called XState CodeGen which basically used like an AST parser to look at the file in your [05:00] application where a state machine was, and then give that more powerful types. So this was a really fun pet project that I've worked on for quite a while. And it meant I was coming into contact with really complicated TypeScript, like trying to work out how to build things, how to interact with the types that were in XState already. And so I knew the core code base really, really well and I started chatting to David Khourshid who's the main guy behind XState. You know, if we say state machines three times David will appear. And so yeah, and I kind of got involved through that and started doing more contributions to to prs, to reviewing prs, reviewing the documentation. And then when David started Stately, which is a company built around XState, building visual tooling for state machines and state charts. When that happened, he basically said, do you wanna join? And I said, hell yeah, sounds great. And so I was with them for about a year and then I joined Vercel after that. -**Carl Vitullo:** Heck yeah. That's really cool. Wait, so you said that [00:06:00] you had written a tool that worked on the AST of the state machine code to generate types. Is that right? +**Carl Vitullo:** Heck yeah. That's really cool. Wait, so you said that [06:00] you had written a tool that worked on the AST of the state machine code to generate types. Is that right? **Matt Pocock:** Yes. @@ -63,11 +63,11 @@ When that happened, he basically said, do you wanna join? And I said, hell yeah, When I was at Stately, actually, we shipped this as part of a VSCode extension. So now if you have XState then you can have the VSCode extension and it will automatically provide you really beautiful types along with your your work. And so, yeah, it was cool to see that properly shipped and out there in the world. -**Carl Vitullo:** Oh, interesting. So instead of [00:07:00] fully changing the api, from the config blob to something maybe more function based, which TypeScript would be more ready to understand without a lot of extra massaging, by shipping this VSCode tool, you were able to keep the API for XState the same, but still provide a great types experience. +**Carl Vitullo:** Oh, interesting. So instead of [07:00] fully changing the api, from the config blob to something maybe more function based, which TypeScript would be more ready to understand without a lot of extra massaging, by shipping this VSCode tool, you were able to keep the API for XState the same, but still provide a great types experience. **Matt Pocock:** Exactly, because stability in the API was really, really key. So we didn't wanna move off version four, basically, XState is still on version four. I'm not involved with the core team anymore. So having that sense that the API was stable, that XState was stable, but also wanting to fix all of these type based problems with the api, it felt like type gen was the only answer. -**Carl Vitullo:** Sure. Wow, that's very cool. I've been aware of based tools for a number of years now. I've never probably gotten over the hurdle of learning how to use them. I'm aware of all of the crazy powerful things you can do, but you know, it's just, it seems like every time I try and actually get in there… I know the React team recommended an AST tool… Code [00:08:00] mods? +**Carl Vitullo:** Sure. Wow, that's very cool. I've been aware of based tools for a number of years now. I've never probably gotten over the hurdle of learning how to use them. I'm aware of all of the crazy powerful things you can do, but you know, it's just, it seems like every time I try and actually get in there… I know the React team recommended an AST tool… Code [08:00] mods? **Matt Pocock:** Yeah, that's right. @@ -77,7 +77,7 @@ When I was at Stately, actually, we shipped this as part of a VSCode extension. And all of that, that's based off an AST parser. So if it sees a TypeScript conditional type, it will just sort of log it and, and show you it. So I'm, I'm really interested in, in all of that work because when you get your head around it and you can understand it and you understand astexplorer.net and you understand all of the tools, you understand Babel which is what I'm using, it's amazing what you can get done. It really is. -**MapleLeaf:** I guess the hard part is getting to that understanding , because like when I dug into those tools myself, there's not really a lot of guidance. There's like basic tutorials in some places, but most of it you kinda had to like figure out on [00:09:00] your own to look at examples. But I guess that's programming +**MapleLeaf:** I guess the hard part is getting to that understanding , because like when I dug into those tools myself, there's not really a lot of guidance. There's like basic tutorials in some places, but most of it you kinda had to like figure out on [09:00] your own to look at examples. But I guess that's programming **Matt Pocock:** Yeah, it's also like VSCode extension development is like that as well. Like, because every time you Google something to do with, you know, VSCode extension, it will give you a VSCode extension that solves the problem. You know, so there's, there's no way to Google for it really. You basically have to live off a whole lot of examples and that's a hard problem. @@ -85,7 +85,7 @@ That's a hard problem for a bunch of different stuff. And AST parsing is one of **Carl Vitullo:** Yeah. Makes sense. That's very cool though. Having that other level of… insight into, or, you know, really access into the code, it feels like it just opens so many more doors for what you can possibly do. You know, really kind of meta programming, just programming at a different level, at a different scale even. -**Matt Pocock:** Yep, absolutely. Although if you can avoid it, it's always better to avoid it. For instance, I worked on a project before where we used GraphQL and GraphQL codegen, and that's a kind of similar kettle of fish really, because with GraphQL, you've got this [00:10:00] DSL, you've got domain specific language, which contains all of the types that you're ever gonna need from your backend. +**Matt Pocock:** Yep, absolutely. Although if you can avoid it, it's always better to avoid it. For instance, I worked on a project before where we used GraphQL and GraphQL codegen, and that's a kind of similar kettle of fish really, because with GraphQL, you've got this [10:00] DSL, you've got domain specific language, which contains all of the types that you're ever gonna need from your backend. So if you take those GraphQL files, you can turn them via CLI into TypeScript. You are having to run like a sidecar development process, alongside your dev server to monitor those, to change those over, and that always provides a slightly worse experience than if you were to just handle the inference by TypeScript. @@ -93,7 +93,7 @@ So something like TRPC, for instance, doesn't need a dev script, it's just uses **MapleLeaf:** Mm-hmm. -**Carl Vitullo:** Sure that makes sense. Yeah. And that's giving me flashbacks to a coworker of mine talking about Go Lang pre generics and a, a number of years ago where he would talk about like, oh, I need some standard data structure. Let me write code generations so that I [00:11:00] can use it with the data types I'm using. +**Carl Vitullo:** Sure that makes sense. Yeah. And that's giving me flashbacks to a coworker of mine talking about Go Lang pre generics and a, a number of years ago where he would talk about like, oh, I need some standard data structure. Let me write code generations so that I [11:00] can use it with the data types I'm using. **Matt Pocock:** Hmm @@ -105,7 +105,7 @@ So something like TRPC, for instance, doesn't need a dev script, it's just uses **Matt Pocock:** I was a so singing teacher and vocal coach. I did that for six years. I got like a master's in it. I have like this whole other YouTube channel where I'm teaching people accents and stuff. So I'm like the only person on YouTube that has to do SEO against myself. I'm competing with the name Matt Pocock against a previous version of me, which is kind of Terminator. -I did that for a long time and it felt like a superpower when it came to development too, because I felt like I could explain things a lot better to non-technical people. I felt like I could get my ideas across better than other people could. It's felt like an amazing advantage and I think meant that I went from junior to mid to senior to lead a lot faster than than I expected to [00:12:00] actually, because it felt like I was being put in front of clients more. It felt like I was given responsibility more often because I could explain what I was doing, and obviously my communication skills were better, or, you know were good. +I did that for a long time and it felt like a superpower when it came to development too, because I felt like I could explain things a lot better to non-technical people. I felt like I could get my ideas across better than other people could. It's felt like an amazing advantage and I think meant that I went from junior to mid to senior to lead a lot faster than than I expected to [12:00] actually, because it felt like I was being put in front of clients more. It felt like I was given responsibility more often because I could explain what I was doing, and obviously my communication skills were better, or, you know were good. **Carl Vitullo:** Sure. Yeah. We have talked about career and advancement a number of times on previous office hours we've done, and I think that that's a point that we hit on pretty frequently is that moving from junior to senior, one of the largest ways you can do so is by having strong communication skills. @@ -113,17 +113,17 @@ So it's, it's, it's cool to hear you echo that. **Matt Pocock:** Yeah, for sure. It really paid me back faster than I was expecting it to, because I figured I'd change from voice coaching to developer and sure, okay, we'll see. I'll take a pay cut and I'll see what happens. And it felt like I just joined with the right language at the right time, like, JavaScript still is exploding, TypeScript still is exploding. -I'm kind of interested to see what you think about this idea. I think that TypeScript itself is becoming so ubiquitous that it makes sense to learn it [00:13:00] alongside JavaScript as a new developer coming into the space. I'm wondering what you both think of that idea, whether you should learn, you should obviously learn JavaScripts kind of to a really good level, but should you be learning the TypeScript syntax alongside it, or should you be using the JavaScript syntax? +I'm kind of interested to see what you think about this idea. I think that TypeScript itself is becoming so ubiquitous that it makes sense to learn it [13:00] alongside JavaScript as a new developer coming into the space. I'm wondering what you both think of that idea, whether you should learn, you should obviously learn JavaScripts kind of to a really good level, but should you be learning the TypeScript syntax alongside it, or should you be using the JavaScript syntax? What do you think? **MapleLeaf:** Personally I think both paths are valid, but, and because of that, if I were to recommend one path, if the ever maybe my answer would change depending on the person, but I think it is definitely perfectly fine to learn TypeScript alongside JavaScript or even just TypeScript by itself. Especially if you're coming from a typed language. -**Carl Vitullo:** Yeah, for sure. When I think about how I learned, the first language I learned or was taught was C++, which is, you know, it doesn't get a lot more type safe than that. And I do think that learning such a rigorous language early on and being forced by a very picky compiler to [00:14:00] think in terms of types in advance, and needing to think about how they all fit together and how they get changed from one to another or et cetera. +**Carl Vitullo:** Yeah, for sure. When I think about how I learned, the first language I learned or was taught was C++, which is, you know, it doesn't get a lot more type safe than that. And I do think that learning such a rigorous language early on and being forced by a very picky compiler to [14:00] think in terms of types in advance, and needing to think about how they all fit together and how they get changed from one to another or et cetera. All, all the things that you don't need to think about when you're doing JavaScript, cuz it will just either do it for you or just keep trucking along when you screw it up. I think being forced to think about all those before my code would even run was helpful in some ways. Obviously it can be a huge slow down when you're actually just trying to ship code, but I think when you're learning, it forces you to slow down and think about what will this code do rather than… even in my professional career, I find myself sometimes falling into a short cycle of not actually thinking about what is this code about to do. Just kind of like, make a change, save, see what it does. Oh, it didn't work. Make a change, save, see what it does. Oh, it didn't work. -So I think in that regard, forcing a little bit of slowdown and giving you an automated checker. Yeah, I think that, I think that could be a really powerful [00:15:00] thing to have when you're learning a new language. +So I think in that regard, forcing a little bit of slowdown and giving you an automated checker. Yeah, I think that, I think that could be a really powerful [15:00] thing to have when you're learning a new language. So I, yeah, I think I agree with you. I think that learning TypeScript at the same time as learning JavaScript is a really good thing for new learners to do. @@ -131,37 +131,37 @@ So I, yeah, I think I agree with you. I think that learning TypeScript at the sa The IDE support is just gonna be so much better. And often what I find myself doing when I develop with TypeScript is I tend to spend a lot more time in my IDE and less time looking at the browser console. When it was purely JavaScripts I would basically make a change tab over, make a change tab over make change tab over, just like you're saying. -But when I'm working in TypeScript, it might be, let's say 10 minutes before I even tab over and I still get a sense of whether my code is going to work or not and what it's going to do. I feel less scared by the results of my code. I feel like [00:16:00] things are more predictable and I think getting into that flow and making that your expectation of how you work is really good because I think what TypeScript gives you, that JavaScript doesn't give you so much, is it gives you a really, really fast time to error, right? +But when I'm working in TypeScript, it might be, let's say 10 minutes before I even tab over and I still get a sense of whether my code is going to work or not and what it's going to do. I feel less scared by the results of my code. I feel like [16:00] things are more predictable and I think getting into that flow and making that your expectation of how you work is really good because I think what TypeScript gives you, that JavaScript doesn't give you so much, is it gives you a really, really fast time to error, right? The time from when you make a mistake to when you know about the mistake in TypeScript is smaller than JavaScript. Shorter than JavaScript, right? You are going to know almost as soon as you call a function wrong because it's gonna give you a red squiggly line. It's gonna tell you why you called that wrong. Whereas when you were working in JavaScript, you would have to tab over to the function. It might sort of accept what you're doing, not actually throw an error, but then the thing that you return isn't quite right, like you just wouldn't get that feedback the moment that you need it. Whereas TypeScript is, is really, really good for that. -**Carl Vitullo:** Definitely. Yeah. I mean with JavaScript you miss an argument and it's just gonna keep on trucking until you get undefined is not a function or cannot read property off undefined. So [00:17:00] yeah, definitely I think you're absolutely right there about TypeScript, shortening that time to error. I think that's a really powerful way to think about it. +**Carl Vitullo:** Definitely. Yeah. I mean with JavaScript you miss an argument and it's just gonna keep on trucking until you get undefined is not a function or cannot read property off undefined. So [17:00] yeah, definitely I think you're absolutely right there about TypeScript, shortening that time to error. I think that's a really powerful way to think about it. **Matt Pocock:** Yep. It's a feedback loop, right? And you know, as web devs, we love a good feedback loop. We want it as tight as we can possibly get, and I like my feedback loops within my own IDE. Not having to tab over, not having to switch context even, to lose sight of my code. I just feel so powerful. **Carl Vitullo:** Definitely. Yeah, and I know I personally have a problem where, moving from IDE to browser may not be a large context switch, but you know, the browser has all of my things, it has all of my tabs open and, you know, maybe while I'm waiting for that hot reload to finish settling down, I tab over to Discord and suddenly it's been 20 minutes and I haven't seen what the changed my code did. -**Matt Pocock:** Mm-hmm. . Yeah. And it's about like the if, cuz I, I'm a bit of a productivity freak. You know, I like looking at ways that I can code faster or like do my [00:18:00] stuff faster. And one thing that I really like is that it reduces the minimum time it takes to do something. You know, like if you are gonna code something in JavaScript, you are building in a sort of minimum time that you're gonna spend tapping over, that you're gonna spend checking the browser console that you're gonna spend refreshing the browser. +**Matt Pocock:** Mm-hmm. . Yeah. And it's about like the if, cuz I, I'm a bit of a productivity freak. You know, I like looking at ways that I can code faster or like do my [18:00] stuff faster. And one thing that I really like is that it reduces the minimum time it takes to do something. You know, like if you are gonna code something in JavaScript, you are building in a sort of minimum time that you're gonna spend tapping over, that you're gonna spend checking the browser console that you're gonna spend refreshing the browser. You know, TypeScript removes some of those minimums. It takes you into a place where you can actually work a lot faster because your tools are working at the speed that you are. Like, sure, people say like, yeah, you're gonna have to fix these random arbitrary errors and stuff. And, and like you said, with C++, there's always a, like a piece of that when you're working in type languages, but when it's going well, my God, it feels so much better than JavaScript can. Is that your experience too, maple? -**MapleLeaf:** Yeah, definitely. Sometimes I get stuck on errors that I fix just just for the sake of fixing errors, but like most of the time it's stuff that I'm like, oh, that's right. It could possibly be undefined. Or, oh, maybe that key actually isn't there and it makes me think [00:19:00] about like how I'm actually coding and whether or not I can just make things structurally better just solve the problem in a different way. +**MapleLeaf:** Yeah, definitely. Sometimes I get stuck on errors that I fix just just for the sake of fixing errors, but like most of the time it's stuff that I'm like, oh, that's right. It could possibly be undefined. Or, oh, maybe that key actually isn't there and it makes me think [19:00] about like how I'm actually coding and whether or not I can just make things structurally better just solve the problem in a different way. **Matt Pocock:** Totally. It makes you think about data structure first too, as well. Like I mean, you can, you can go and blast your code base with `any` and sort of like patch it through and get a JavaScript-like experience. But often what I find myself doing is working at that kind of meta programming level again, it's like thinking about the data structures that are going through my app modifying them and often that little extra step before you start coding, or doing the types before you start working on the runtime stuff that can give you a lot of extra velocity going forward. -**Carl Vitullo:** Yeah, most definitely. Yeah. And I something that one of our last office hours discussed was, Retsam mentioned, he said that one of his TypeScript jokes is that the answer is always to use a discriminated union. And I had never heard it put quite like that, but I feel like that was one of my big personal TypeScript level up moments is moving from [00:20:00] thinking about it sort of in the way that I had thought about prop types in React. +**Carl Vitullo:** Yeah, most definitely. Yeah. And I something that one of our last office hours discussed was, Retsam mentioned, he said that one of his TypeScript jokes is that the answer is always to use a discriminated union. And I had never heard it put quite like that, but I feel like that was one of my big personal TypeScript level up moments is moving from [20:00] thinking about it sort of in the way that I had thought about prop types in React. Because before TypeScript was really prevalent, that was how I tried to do some degree of type safety in my web apps. And with that you can say here's a a, an object blob. These properties are optional. But what really changed my thinking was not , are these optional, but do these belong to two different types of objects? Is there some discriminator where when this is set to this value, then it has this shape and when it's set to this value, it has this different shape. And then once you start thinking of it, not as this is optional, but this is only present in some cases, for me, that really shifted how I thought about designing the data flowing through my apps and really shifted it towards a more robust and resilient form of data structure. -**Matt Pocock:** What you're describing there is, is [00:21:00] basically union types, right? And. Union types in TypeScript let you basically see into every possible future of your code, right? You know, your function might be called with this, or it might be called with this. And if it's called like this, then this could happen. +**Matt Pocock:** What you're describing there is, is [21:00] basically union types, right? And. Union types in TypeScript let you basically see into every possible future of your code, right? You know, your function might be called with this, or it might be called with this. And if it's called like this, then this could happen. And TypeScript sort of ends up being like Dr. Strange, you know, like looking through all of these possible futures for the one that can possibly work or the one that can possibly fail. And when you think about union types like that, for those who don't know, there's a syntax in TypeScript that just lets you specify like string or number. And a discriminated union is a way of specifying an object, which let's say it has a type property, which is called the discriminator. That type might be A or B. And what TypeScript lets you do is it lets you say, okay, if you pass something with type A, then it's got a property of something with a number, let's say. -And if you pass a type B, then it's gotta be something else with a string. And so this lets you be [00:22:00] really clever with, especially how you declare like component props, for instance. So imagine you had like a modal where for instance, you needed to pass like a create action to it. Like this is a create type of modal where you pass certain props it lets you be really, really smart with how you define these things. And TypeScript will make sure that all possible futures inside that component and outside that component are covered. +And if you pass a type B, then it's gotta be something else with a string. And so this lets you be [22:00] really clever with, especially how you declare like component props, for instance. So imagine you had like a modal where for instance, you needed to pass like a create action to it. Like this is a create type of modal where you pass certain props it lets you be really, really smart with how you define these things. And TypeScript will make sure that all possible futures inside that component and outside that component are covered. **Carl Vitullo:** Yeah, I really like how you said that it lets your code see into all possible futures. I think that's a really powerful way of thinking about it. I, I think that's very true. @@ -169,13 +169,13 @@ And if you pass a type B, then it's gotta be something else with a string. And s **Carl Vitullo:** So how long has it been since you changed careers into software? -**Matt Pocock:** It's been about six years. So I, yeah, six years. I was interested in it while I was doing my my previous career, which was voice coaching. I saw most of my clients like one-on-one, so it meant that I had a lot of times kill kind of like in between lessons and stuff. And so I would be sort of like coding up these little example apps [00:23:00] and, you know, flashcard apps and eventually messing with that, with web audio APIs and like trying to make stuff that would make my lessons better in JavaScript, which was a ton of fun. +**Matt Pocock:** It's been about six years. So I, yeah, six years. I was interested in it while I was doing my my previous career, which was voice coaching. I saw most of my clients like one-on-one, so it meant that I had a lot of times kill kind of like in between lessons and stuff. And so I would be sort of like coding up these little example apps [23:00] and, you know, flashcard apps and eventually messing with that, with web audio APIs and like trying to make stuff that would make my lessons better in JavaScript, which was a ton of fun. It meant I sort of had no production experience when I went and got myself a job. But I knew quite a lot of really weird things about the DOM and things about strange APIs and the web and that sort of thing. And it got me interested by what the potential of JavaScript was and especially the web stuff as well. It seemed like you could do some amazing stuff if you just looked in these weird MDN docs. And I think that intro pushed me into the weirder bits of web development really early on. **Carl Vitullo:** What sort of weirder bits of web development do you think you were drawn to first? -**Matt Pocock:** Well, I think to go back to what you were saying before, you were saying that working in C++ gave you a sense that you needed to make the compiler happy, but it forced you to think in this very rigorous way about [00:24:00] what you were building and what you were coding. +**Matt Pocock:** Well, I think to go back to what you were saying before, you were saying that working in C++ gave you a sense that you needed to make the compiler happy, but it forced you to think in this very rigorous way about [24:00] what you were building and what you were coding. When I was, when I started working on web applications, I sort of felt like there wasn't a overarching structure or, or philosophy to what I was building. When I was a voice coach. There are various competing philosophies about how best to teach voice. I was a proponent of something called the Estill method, which focuses on anatomy, focuses on all of the different muscles and things to do in the neck, whereas other people are focused more on imagery and, and focused on these high-flying ideas. @@ -185,49 +185,49 @@ You know? There's no edge. It's a butter knife, you know? **Carl Vitullo:** Right. Everyone's on the same page already. -**Matt Pocock:** Yeah, exactly. Or they're in their camps, you know? It's like if the framework wars just ended, and then everyone just[00:25:00] sat down. Whereas web development I found immediately exciting because I could see there was a discourse happening, there was stuff going on, but I felt like, React wasn't really opinionated enough for me. +**Matt Pocock:** Yeah, exactly. Or they're in their camps, you know? It's like if the framework wars just ended, and then everyone just[25:00] sat down. Whereas web development I found immediately exciting because I could see there was a discourse happening, there was stuff going on, but I felt like, React wasn't really opinionated enough for me. I think React is wonderful. I still use it all the time, but it didn't give me enough. And I felt like Angular was too opinionated in some terms, or using the wrong abstraction. So what I wanted to find was and I was drawn to the weird stuff, to the weird ideas that people were having about how you should structure your code, how you should structure your logic. And that's what I think drew me to state machines because this wasn't a way of thinking about code, a way of thinking about your application that is old, you know, it's like I don't know, 50 years old at this point. I think like state charts in particular 40 years old where David Harrell started it and that felt like a sort of singing, teaching pedagogy to me, you know? -So it felt like I was joining something that had a lot of academic thought behind it and let me think about my code in a way that felt [00:26:00] novel and felt like the right abstraction level. So I sort of answered your question there, but I totally sort of didn't as well. Apologies for that. +So it felt like I was joining something that had a lot of academic thought behind it and let me think about my code in a way that felt [26:00] novel and felt like the right abstraction level. So I sort of answered your question there, but I totally sort of didn't as well. Apologies for that. **Carl Vitullo:** No, it's that was a phenomenal answer. It got my brain whirring in a bunch of different directions, so I think that's the best kind of answer. But yeah, I mean, what you were saying about the schools of thought, people have been learning and teaching singing for millennia, even if it takes 20 years to thoroughly explore a specific thought about how you might go about doing it. We have had so many generations of people who have made serious effort, who have dedicated their lives to serious exploration of one specific niche of it. So **Matt Pocock:** Mm-hmm. -**Carl Vitullo:** That's a thought I've had about software before is that our field is just so young compared to humanity, compared to all of these other schools of thought, or rather to all these other industries or things that people learn.[00:27:00] +**Carl Vitullo:** That's a thought I've had about software before is that our field is just so young compared to humanity, compared to all of these other schools of thought, or rather to all these other industries or things that people learn.[27:00] So it's, you know something old in computers is what, at the oldest, about 70 years. Math concepts will go a little bit deeper, you know, you get into algebra or things like that, but, Yeah, like you said, you know, state machines, they're 40 years old. That's the earliest, or state charts at least. So I think that's a really fascinating thing to contemplate is just how young everything is and how up for active debate everything is. -**Matt Pocock:** Absolutely. It, it's a very nice mindset to approach Twitter with as well. Nothing matters. Like this is all gonna change in about five years or something. And I think that's what's interesting about where things are at this particular moment is that it doesn't feel like things, especially in terms of React, haven't really changed much philosophically in the past four or five years, I'd say maybe can't remember when hooks came in, but hooks I guess was a slight change of philosophy and approach, making logic a bit more [00:28:00] composable, a bit more interesting. +**Matt Pocock:** Absolutely. It, it's a very nice mindset to approach Twitter with as well. Nothing matters. Like this is all gonna change in about five years or something. And I think that's what's interesting about where things are at this particular moment is that it doesn't feel like things, especially in terms of React, haven't really changed much philosophically in the past four or five years, I'd say maybe can't remember when hooks came in, but hooks I guess was a slight change of philosophy and approach, making logic a bit more [28:00] composable, a bit more interesting. But fundamentally the mental model of React hasn't changed at all really since its inception. And it feels like it's the dominant way of thinking now, components and structuring your app in a certain way. And, and I think the interesting thing about TypeScript is that it is bringing something relatively fresh to the conversation. Even though it's been around 10 years, it's slowly convincing people that, okay, maybe these contracts for your components are actually really important and more important than prop types let you be. They let you be safer than prop types would allow you to be. So I think that feels novel and it's, I again, that's a philosophy I can get behind. TypeScript asks you to work slightly differently than you would work in JavaScript, as we've touched on before, it makes you think in a more domain specific way. -It makes you think more about the the structure of your types and which components or which parts of your app should [00:29:00] understand or should rely on different types in your app, let's say you're using Prisma for instance, and that grabs like a user type from your database. +It makes you think more about the the structure of your types and which components or which parts of your app should [29:00] understand or should rely on different types in your app, let's say you're using Prisma for instance, and that grabs like a user type from your database. Prisma uses a codegen thing. It's one of the good codegen things. It sort of prints a load of types into your node modules. Then you can pull those out. But should your nav bar be using the exact user type that's in your database or should it re declare it? These are problems that you basically don't need to think about if you're just using pure JavaScript, but TypeScript gives you this extra level of sort of philosophical thinking on top. **Carl Vitullo:** Yeah, sure. And it's an extra burden of something to think about, but once you get that muscle memory of thinking of in terms of those as like, what data is going to pass through this, where does the type for it come from? And the mechanics of importing it and making that all work pretty fluidly. You don't need to check that the data is flowing correctly like you would in JavaScript once you have TypeScript all set up. -**Matt Pocock:** Yep. Absolutely. And that's something that [00:30:00] XState gave me as well, was a sense of I was sure that what was happening was supposed to happen. It sort of feels of a piece like TypeScript helps you prevent impossible data and finite state machines and state charts help you prevent impossible states. They feel of a piece +**Matt Pocock:** Yep. Absolutely. And that's something that [30:00] XState gave me as well, was a sense of I was sure that what was happening was supposed to happen. It sort of feels of a piece like TypeScript helps you prevent impossible data and finite state machines and state charts help you prevent impossible states. They feel of a piece **Carl Vitullo:** Yeah, I like that. I don't think I'd ever quite heard state machines and types contrasted in quite that way, but I think that's a really powerful way to think about it. It's guarantees for your data and guarantees for your logic. **Matt Pocock:** Exactly. And if you're using something like Zod as well, which I've been thinking about a lot, which is a runtime, sort of schema based validation library, then you can get these sort of runtime guarantees as well. Because TypeScript is not actually type safe. It just gives you the feeling of being type safe. -You know, you can just like destroy everything if you want to very, very easily because JavaScript just lets you do that. Whereas if you're using something like Zod, which gives you an element of runtime type safety as well, [00:31:00] or things like Yup or Ajv, then you're gonna get even more confidence and your app is gonna be even more robust. +You know, you can just like destroy everything if you want to very, very easily because JavaScript just lets you do that. Whereas if you're using something like Zod, which gives you an element of runtime type safety as well, [31:00] or things like Yup or Ajv, then you're gonna get even more confidence and your app is gonna be even more robust. **Carl Vitullo:** Right. Oh, sure. I see. Zod is a validation library for data. So TypeScript will give you type assertions, but those can have holes in them, whether it's from any or assertions or external data, and so Zod is a method of ensuring that your runtime matches your compile time? **Matt Pocock:** Exactly. Yeah. So Zod is a library for ensuring that those two match it's useful for more mundane stuff too. So, like form validation, making sure that the things passed to your API endpoints are all okay. But if you want an extra level of robustness, it makes you think about the edges of your application more, so if you're contacting a third party API that you are sort of sure if you trust, but not sure if you trust actually. -Then you can actually just validate the data that's coming back with a schema validation like Zod. And that will make sure that if the thing that's coming [00:32:00] back is not quite right, then it's gonna fail at that point and it's gonna fail early without infecting your app. +Then you can actually just validate the data that's coming back with a schema validation like Zod. And that will make sure that if the thing that's coming [32:00] back is not quite right, then it's gonna fail at that point and it's gonna fail early without infecting your app. Because you know, the hardest errors to debug are the ones, and this happens in JavaScript all the time, is the ones where you don't protect against the thing that's coming into your app and you suddenly get undefined as not a function. And like you suddenly just, it breaks everything. @@ -239,13 +239,13 @@ Because you know, the hardest errors to debug are the ones, and this happens in **Matt Pocock:** Yep. And fail fast too. As we said earlier, like about times script, fail it in your IDE, don't fail it in your browser console. Don't fail it in production. -**MapleLeaf:** As much as possible For sure. And that's that's a lot. That's a pretty big motivation behind the stuff that I've been doing with Remix, for example, like finding out how to close [00:33:00] the "gaps in the type system", places where mistakes can be made. And I have observed that that's a place where I feel like people need to experience it and try for themselves before they see the true value in it. I've even seen Theo himself say he didn't see the power of TRPC until he spent a bit of time with it. +**MapleLeaf:** As much as possible For sure. And that's that's a lot. That's a pretty big motivation behind the stuff that I've been doing with Remix, for example, like finding out how to close [33:00] the "gaps in the type system", places where mistakes can be made. And I have observed that that's a place where I feel like people need to experience it and try for themselves before they see the true value in it. I've even seen Theo himself say he didn't see the power of TRPC until he spent a bit of time with it. **Matt Pocock:** Absolutely, and this is a common thing amongst people adopting TypeScript is that they don't really get a sense of how good it is or how confident they feel with it until they try it. Because I think as a JavaScript developer, you're sort of used to feeling like you have no help. You know, you are used to living in a kind of terrifying world and it's kind of nice in the wild West because you, you can kill anything, you know, you can just do whatever you like. Like you have complete freedom, you have nothing saying that you failed except, you know, when, you know, it fails in the browser or something, you know, it works on my machine, whatever. -Whereas TypeScript does give you like you get a sort of [00:34:00] sense of, okay, I have this kind of English teacher like watching over my work now and giving me like squiggly red lines whenever I get something wrong and they're like right there all the time. And people who are used to the Wild West don't like that. +Whereas TypeScript does give you like you get a sort of [34:00] sense of, okay, I have this kind of English teacher like watching over my work now and giving me like squiggly red lines whenever I get something wrong and they're like right there all the time. And people who are used to the Wild West don't like that. But it also. Gives you this immense sense of power. Sometimes it feels like you are contacting a deity. You know what I mean? Like you are just like, how the hell can you know that? That's incredible. And TRPC gives you that feeling too. @@ -255,13 +255,13 @@ And then that's when you start seeing the value of institutions like OSHA so Typ **Matt Pocock:** Yeah, it's like the NHS absolutely. -**MapleLeaf:** I feel like there's also a pride element, like eventually you start to think less about like being [00:35:00] good and doing things the hard way just to feel good about it and more about just getting stuff done, even if it means having all of your tooling hold your hand along the way, you just stop caring, +**MapleLeaf:** I feel like there's also a pride element, like eventually you start to think less about like being [35:00] good and doing things the hard way just to feel good about it and more about just getting stuff done, even if it means having all of your tooling hold your hand along the way, you just stop caring, **Matt Pocock:** Yeah, I like the feeling that I could turn up to work drunk and TypeScript would still like be fine. It would still prevent me from doing mistakes. And actually I think to be honest, like with tools like GitHub co-pilot with chatGPT, it's gonna be even more important to have tools like TypeScript that can hold the hand of experimental AI stuff before AI takes our jobs. It's gonna be important to have guardrails so that you don't just spew out random code, cuz you are right Maple. Like, that's a really good point, _you feel_ powerful when you code in JavaScript in TypeScript, you don't feel powerful, you don't feel powerless. -You sort of feel like, okay, I'm, I'm in dialogue with something. I'm pair programming with something. Whereas [00:36:00] JavaScript feels quite independent. Does that sound like a fair characterization? +You sort of feel like, okay, I'm, I'm in dialogue with something. I'm pair programming with something. Whereas [36:00] JavaScript feels quite independent. Does that sound like a fair characterization? **MapleLeaf:** Yeah. @@ -273,29 +273,29 @@ And obviously this takes a while to get into the mindset of thinking in types an **Carl Vitullo:** I think that I personally have found that how TypeScript has affected my thinking when I'm programming is largely through making me think, how can I make this auto complete better . VSCode gives me such a rich intellisense, a rich sense of what data is flowing through that when I end up deciding to go deeper on some specific type, it's because I have discovered a flaw in the intelligence. -Like it's, it's not telling me the right thing or it's not telling me the most specific thing it could, and that has been my [00:37:00] personal driver for trying to learn more, trying to get better, is hitting some friction point and thinking, Hmm, how can I use types to give me more information? +Like it's, it's not telling me the right thing or it's not telling me the most specific thing it could, and that has been my [37:00] personal driver for trying to learn more, trying to get better, is hitting some friction point and thinking, Hmm, how can I use types to give me more information? **Matt Pocock:** That's a lot of what I'm thinking of covering in my course too. Like a lot of javaScript if, even if we don't think about it in this way, is built around functions, you know, like functions, functions, functions. Everything in JavaScript is a function. Everything in React as a function. And with functions, you are basically declaring a contract. You are saying this must be called in this certain way and it returns a certain thing. Even if you're not experiencing like that. And if we didn't use functions, like imagine that world, then you would be able to get pretty good inference on basically anything because everything would be static. -You would just have the stuff you've got and then the objects and like TypeScript will understand the objects that are there, the variables you've declared. But when you have a function, then you basically put a [00:38:00] barrier in that inference and you lose a bit of The dynamism that you can get just by understanding all the stuff that's in the file and inferring it and blah, blah, blah, blah, blah. +You would just have the stuff you've got and then the objects and like TypeScript will understand the objects that are there, the variables you've declared. But when you have a function, then you basically put a [38:00] barrier in that inference and you lose a bit of The dynamism that you can get just by understanding all the stuff that's in the file and inferring it and blah, blah, blah, blah, blah. Except when you use generics. So generics let you pull in TypeScript inference to basically be able to infer the output of a function from the input of a function or infer things about the inputs from other things you've input to the function. So it gives you a lot of that dynamism and that's, I imagine that that's where you're going with that Carl with like you trying to get better and think about this stuff more? **Carl Vitullo:** Yeah, that's definitely a part of it. It also makes me think of a distinction that has come up before in events we've done is the, the, the concept of like app types versus library types. And for the different approach that you have to come at the types based on what context you're writing them in. -And I think things like generics in functions is [00:39:00] one aspect of that. Because libraries might be used in so many different contexts, then they have to be written with types that are flexible enough to support all those different use cases, which I think is a real challenge. +And I think things like generics in functions is [39:00] one aspect of that. Because libraries might be used in so many different contexts, then they have to be written with types that are flexible enough to support all those different use cases, which I think is a real challenge. **Matt Pocock:** It is. Yeah. Especially with most of the things people use libraries for, they're going to need some kind of dynamism in them. Data fetching libraries, the dynamic thing is what you're fetching or the arguments that you need for that. The form libraries, the the state of your form is going to be the dynamic thing, and each of these can be expressed in generics. You are right in that there's this kind of divide between app types and lib types. And often if you're using an app, then you are going to need to basically just be a consumer of those library types. And often the most painful errors that you are going to get are when you don't understand those library types well enough or you can't read the declaration files. -A lot of what we think of as kind of like [00:40:00] the most complicated transcript areas to solve, There. When you interact with third party libraries and you are looking at types you don't understand, there's often this huge wall of declarations if you like, find in definition and stuff, and that can be the most terrifying experience for a new person. +A lot of what we think of as kind of like [40:00] the most complicated transcript areas to solve, There. When you interact with third party libraries and you are looking at types you don't understand, there's often this huge wall of declarations if you like, find in definition and stuff, and that can be the most terrifying experience for a new person. I think this stuff is not as hard as it seems. It's an extra little learning curve, but the tools that we have make working with generics really, really nice. There's some stuff to learn and some new syntax that looks really, really alien. -But if you can be the person who goes, okay, I'm gonna add a generic to this function. I'm gonna make a generic table components that can accept any kind of data and render out a beautiful table. If you can be the person that adds that to your team, then that's a senior level job that you've just done. TypeScript and advanced TypeScript really puts you in a position of being able to enable your team members to give them a developer experience that they've could hardly even [00:41:00] imagine before. +But if you can be the person who goes, okay, I'm gonna add a generic to this function. I'm gonna make a generic table components that can accept any kind of data and render out a beautiful table. If you can be the person that adds that to your team, then that's a senior level job that you've just done. TypeScript and advanced TypeScript really puts you in a position of being able to enable your team members to give them a developer experience that they've could hardly even [41:00] imagine before. And what that means is there's code that will depend on you, right? Or like depend on knowledge of advanced generics. But really, if you look at it and understand it and go through some of the material, it is, it's not as complex as it seems. And what I'm finding is there's a lot more use cases for generics in the application code than I really realized. @@ -303,7 +303,7 @@ I've been looking at a lot of, kind of like, as part of the course stuff, I've b **MapleLeaf:** Yeah, definitely. -**Matt Pocock:** And what kind of like, is that affecting like your stuff at [00:42:00] work as well? Or like do you do any application level stuff with advanced generics or is it mostly library stuff? +**Matt Pocock:** And what kind of like, is that affecting like your stuff at [42:00] work as well? Or like do you do any application level stuff with advanced generics or is it mostly library stuff? **MapleLeaf:** At work, it's pretty simple since the stuff that I haven't the stuff that I work on doesn't get too deep in the weeds when it comes to TypeScript. It's definitely like more of my personal projects where I think about like, How I can take the abstractions that I have and how I can improve upon them, and that's when generics are more or less required. @@ -311,11 +311,11 @@ I've been looking at a lot of, kind of like, as part of the course stuff, I've b **Carl Vitullo:** Yeah, I definitely agree with everything you just said about if you can improve the developer experience for your teammates, that's like a senior developer moment. I really feel like that's been one of the driving motivators behind a lot of my learning and advancement up towards senior, you know, in the like three or four years it took where I felt like I was progressing from early career into like, no, I am senior, I am established, I know what I'm doing. -And just really looking for opportunities where you can [00:43:00] improve the experience just a little bit. Because every time you can save yourself five minutes on an ongoing basis, just by removing a point of friction, you're saving that time for everyone else as well. I think that that kind of focus of and skill development for developer experience really pays dividends over the long run. When people talk about a code base that's drowning in tech debt, I think that's what they're talking about is months or years of lack of attention on developer experience. +And just really looking for opportunities where you can [43:00] improve the experience just a little bit. Because every time you can save yourself five minutes on an ongoing basis, just by removing a point of friction, you're saving that time for everyone else as well. I think that that kind of focus of and skill development for developer experience really pays dividends over the long run. When people talk about a code base that's drowning in tech debt, I think that's what they're talking about is months or years of lack of attention on developer experience. **Matt Pocock:** Absolutely. And one thing that's interesting about generics is that when you add a generic to a function, you're basically saying when people use this function, they won't need to annotate it in any way. So by you doing more TypeScript, you are basically saying, okay, every other member on my team needs to do less TypeScript. -They can work more in like just without, after annotating anything. You know, it's literally just JavaScript. I [00:44:00] find that kind of the most compelling argument for bringing a more advanced TypeScript mindset into your work, which is if you do it, other folks won't have to. +They can work more in like just without, after annotating anything. You know, it's literally just JavaScript. I [44:00] find that kind of the most compelling argument for bringing a more advanced TypeScript mindset into your work, which is if you do it, other folks won't have to. **Carl Vitullo:** Agreed. Yeah. A thought that I have put to words at various points in my career is that like, really one senior developer can support four or five junior or mid-level developers. And I think that the actual nuts and bolts the mechanics of how that support comes across is exactly what we were just saying. @@ -325,15 +325,15 @@ If one person has the expertise to get the experience in a certain way, Then eve **Carl Vitullo:** DX, haha. -**Matt Pocock:** People say like abstractions by default get a bad rap [00:45:00] these days, like avoid hasty abstractions and all this stuff. But if you find the right abstraction and you build it in the right way or the right set of abstractions, you can save your team an enormous amount of time. +**Matt Pocock:** People say like abstractions by default get a bad rap [45:00] these days, like avoid hasty abstractions and all this stuff. But if you find the right abstraction and you build it in the right way or the right set of abstractions, you can save your team an enormous amount of time. And like it's so satisfying to like, imagine that you've got a team of people that are building components that are super similar or building hooks that are super similar. If you can find a way to abstract out the stuff that's the same about them and you can find something that's DRY find something that works and you can use TypeScript to bring that all together in a beautiful DX and massively increase your team's velocity then, I mean, my God, that's, that's such a satisfying thing to do in your own career and have the congratulations from them and see that your work suddenly just got easier. -**Carl Vitullo:** Definitely, definitely. Yeah. That reminds me of one of my most memorable wins of my entire career. It was this sort of like [00:46:00] hacked together, rigged up server side rendering monstrosity. At the time I joined every time they made a change, they had to kill the server process and restart it. And because it was bundled with Webpack, that meant they were starting with a cold cache on every change. +**Carl Vitullo:** Definitely, definitely. Yeah. That reminds me of one of my most memorable wins of my entire career. It was this sort of like [46:00] hacked together, rigged up server side rendering monstrosity. At the time I joined every time they made a change, they had to kill the server process and restart it. And because it was bundled with Webpack, that meant they were starting with a cold cache on every change. I joined and eight people had dealt with a minute and a half long build every time they made any kind of change to the code whatsoever for months. And so I came in and I said, wow, this is unacceptable. I bet I could fix this. And me and two other new joiners who didn't have any assigned tasks yet, just spent three hours and just got a watch mode working. -Like all of the, all the only change, like we didn't change the code, we just changed the build process so that it supported watch and rebuild and that got the the rebuild time on changes down from a minute and a half to 10 seconds and. I still have that on my resume as one the biggest wins of my career because how many times do people run a rebuild a day? How many people are on a team? [00:47:00] How many hours a month did I just save? +Like all of the, all the only change, like we didn't change the code, we just changed the build process so that it supported watch and rebuild and that got the the rebuild time on changes down from a minute and a half to 10 seconds and. I still have that on my resume as one the biggest wins of my career because how many times do people run a rebuild a day? How many people are on a team? [47:00] How many hours a month did I just save? **Matt Pocock:** Like as developers we're often one layer away from the people that we're actually helping. You know, like we're building tools for people that we don't actually see, you know? So often the way that you can feel a bit of reciprocity, that you can feel the impact of what you do is by helping your colleagues, and that's definitely been one of the most satisfying things in my career is, is focusing on that. @@ -347,7 +347,7 @@ Like all of the, all the only change, like we didn't change the code, we just ch **Matt Pocock:** No worries at all. Lovely to meet you both. -**Carl Vitullo:** Yeah. Absolutely. Well, yeah I, one thing that I, I thought I might close with and I'm springing up this on you a little bit, but has there, have there been any books that you think have been uniquely impactful in your professional career?[00:48:00] +**Carl Vitullo:** Yeah. Absolutely. Well, yeah I, one thing that I, I thought I might close with and I'm springing up this on you a little bit, but has there, have there been any books that you think have been uniquely impactful in your professional career?[48:00] **Matt Pocock:** I'm not much of a tech reader, unfortunately. I know that there's a couple of really excellent books about TypeScript, like Josh Goldberg's TypeScript book Effective TypeScript. @@ -361,7 +361,7 @@ Like all of the, all the only change, like we didn't change the code, we just ch **Carl Vitullo:** Yeah. And you're working on a course right now, right? -**Matt Pocock:** That's right. I'm working on Total TypeScript which is, it's at totaltypescript.com. We released the first module which is all about transforming types to other types. And the second module is dropping soon which is all about generics, actually. So an intro to generics. Then the third module is gonna be about advanced [00:49:00] patterns in TypeScript. +**Matt Pocock:** That's right. I'm working on Total TypeScript which is, it's at totaltypescript.com. We released the first module which is all about transforming types to other types. And the second module is dropping soon which is all about generics, actually. So an intro to generics. Then the third module is gonna be about advanced [49:00] patterns in TypeScript. **Carl Vitullo:** Thank you so much for coming out. It's been really great talking to you. diff --git a/src/transcripts/react-miami-2023.md b/src/transcripts/react-miami-2023.md index 18ebde2..9416813 100644 --- a/src/transcripts/react-miami-2023.md +++ b/src/transcripts/react-miami-2023.md @@ -11,356 +11,356 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_), [Michelle Bakels](https://t [Listen](https://spotifyanchor-web.app.link/e/NA8dzcQFWyb) or [subscribe](https://podcasters.spotify.com/pod/show/reactiflux/) -**Carl Vitullo:** I'm here today speaking with Michelle Bakels, who is working with G2i as director of developer Health and organizer of the React Miami Conference, which is coming up in a couple of weeks on April 20th. [00:00:13] +**Carl Vitullo:** I'm here today speaking with Michelle Bakels, who is working with G2i as director of developer Health and organizer of the React Miami Conference, which is coming up in a couple of weeks on April 20th. [00:13] -Yeah, Michelle, thanks so much for joining us. [00:00:15] +Yeah, Michelle, thanks so much for joining us. [00:15] -**Michelle Bakels:** Yeah, so thanks so much. I am organizing the React Miami Conference. We have a partnership between G2i, which is the company that one of your moderators Gabe Greenberg, is the founder of, and JS World Conferences, which is a huge conference organizing body that's based out of the Netherlands. [00:00:33] +**Michelle Bakels:** Yeah, so thanks so much. I am organizing the React Miami Conference. We have a partnership between G2i, which is the company that one of your moderators Gabe Greenberg, is the founder of, and JS World Conferences, which is a huge conference organizing body that's based out of the Netherlands. [00:33] -They do JS world conferences. They do Vue Conf, React Conf over there. And so, um, yeah, So I co co-organized that with them, and I am the director of developer health at G2i as well, so I, outside of the conference I work on initiatives to support the mental and physical health of software developers. I've also been really active in the South Florida tech community for a really long time, so I am on the board of organization called South Florida Tech Hub Foundation, which is a nonprofit that helps provide like, tech Pathways in South Florida. [00:01:10] +They do JS world conferences. They do Vue Conf, React Conf over there. And so, um, yeah, So I co co-organized that with them, and I am the director of developer health at G2i as well, so I, outside of the conference I work on initiatives to support the mental and physical health of software developers. I've also been really active in the South Florida tech community for a really long time, so I am on the board of organization called South Florida Tech Hub Foundation, which is a nonprofit that helps provide like, tech Pathways in South Florida. [01:10] -And then also I'm on the board of 1909, which is also a non-profit, that's a community of creators, entrepreneurs, founders, small business owners in Palm Beach County. Just help them thrive. [00:01:23] +And then also I'm on the board of 1909, which is also a non-profit, that's a community of creators, entrepreneurs, founders, small business owners in Palm Beach County. Just help them thrive. [01:23] -**Carl Vitullo:** That's awesome. Wow. So you're, involved with so many different community based organizations, that's really great. [00:01:29] +**Carl Vitullo:** That's awesome. Wow. So you're, involved with so many different community based organizations, that's really great. [01:29] -**Michelle Bakels:** Yeah, I'm like a community addict (laughter). I like, can't get enough. [00:01:33] +**Michelle Bakels:** Yeah, I'm like a community addict (laughter). I like, can't get enough. [01:33] ## Developer health, and planning a conference -**Carl Vitullo:** Oh, that's incredible. Very nice. Could you talk a little bit about developer health, and how that has influenced how you think about the conference? [00:01:41] +**Carl Vitullo:** Oh, that's incredible. Very nice. Could you talk a little bit about developer health, and how that has influenced how you think about the conference? [01:41] -**Michelle Bakels:** Yeah, um, that's such a good question, because obviously because like this is such a, a core piece of G2i is to, to focus on developer health. We brought it into the conference as well. The conference is on Miami Beach. So for one, it is absolutely beautiful place to be, to relax, to get some sun, enjoy some life. [00:02:03] +**Michelle Bakels:** Yeah, um, that's such a good question, because obviously because like this is such a, a core piece of G2i is to, to focus on developer health. We brought it into the conference as well. The conference is on Miami Beach. So for one, it is absolutely beautiful place to be, to relax, to get some sun, enjoy some life. [02:03] -So like, sometimes conferences can be like really hectic for attendees, but even though we have a lot going on in our conference, we do encourage people to really, like, kinda take a step back and enjoy what's around. I've been to a lot of conferences where you kind of like, fly into the city, you go to the conference location, you grind all day at the conference, and then you fly out right away. [00:02:25] +So like, sometimes conferences can be like really hectic for attendees, but even though we have a lot going on in our conference, we do encourage people to really, like, kinda take a step back and enjoy what's around. I've been to a lot of conferences where you kind of like, fly into the city, you go to the conference location, you grind all day at the conference, and then you fly out right away. [02:25] -We really try and like, integrate our conference into the Miami Tech scene and into just like, basically Miami culture as a whole so that it can be like a little bit more relaxing. Like you kind of leave, like you learned a lot of stuff, but you also leave like, a little bit happier, more relaxed, not really stressed out. [00:02:42] +We really try and like, integrate our conference into the Miami Tech scene and into just like, basically Miami culture as a whole so that it can be like a little bit more relaxing. Like you kind of leave, like you learned a lot of stuff, but you also leave like, a little bit happier, more relaxed, not really stressed out. [02:42] -And then furthermore, we have a couple of talks this year that are specifically designed around giving developers advice and support on you know, how to maintain mental health and physical health. [00:02:55] +And then furthermore, we have a couple of talks this year that are specifically designed around giving developers advice and support on you know, how to maintain mental health and physical health. [02:55] -**Carl Vitullo:** Oh, that's great. [00:02:56] +**Carl Vitullo:** Oh, that's great. [02:56] -**Michelle Bakels:** Yeah, we have like three talks that are like, really specifically developer health focused. [00:03:01] +**Michelle Bakels:** Yeah, we have like three talks that are like, really specifically developer health focused. [03:01] ## Tejas Kumar, React as a developer health tool -**Michelle Bakels:** One of them is Tejas Kumar, who is really well known conference speaker. If you don't follow Tejas, he has you know, like a long history of health related issues stemming from a sun allergy. He's gone through a lot ,and so he's gonna talk about how, you know, coding and specifically React, kind of like helped him through a lot of this. So it's called "React as a developer health tool." So that's really cool. [00:03:26] +**Michelle Bakels:** One of them is Tejas Kumar, who is really well known conference speaker. If you don't follow Tejas, he has you know, like a long history of health related issues stemming from a sun allergy. He's gone through a lot ,and so he's gonna talk about how, you know, coding and specifically React, kind of like helped him through a lot of this. So it's called "React as a developer health tool." So that's really cool. [03:26] ## Jenny Truong, unexpected states of burnout -**Michelle Bakels:** Then we have Jenny Truong of Stately. She's going to be talking about the unexpected states of burnout, she actually, like, if you're familiar with Stately and how it, it basically is like state machines and like diagrams and stuff. She's actually gonna kind of take that visual and that concept and map out, diagram out, burnout like how we experience it in the terms of like state. So that's yeah, it's super interesting. Like, I was like, this is so clever. [00:03:55] +**Michelle Bakels:** Then we have Jenny Truong of Stately. She's going to be talking about the unexpected states of burnout, she actually, like, if you're familiar with Stately and how it, it basically is like state machines and like diagrams and stuff. She's actually gonna kind of take that visual and that concept and map out, diagram out, burnout like how we experience it in the terms of like state. So that's yeah, it's super interesting. Like, I was like, this is so clever. [03:55] ## Andrew Shew, mental tooling from professional baseball -**Michelle Bakels:** And then there's also Andrew Shew of Vercel. He's a content engineer, but he was a pro baseball player for six years before he went be a full Slack developer for Vercel. So he's gonna talk about all of the mental tooling that professional baseball players use to perform their best. And how you can literally take like the tools of professional athletes and apply them to your work so that you can. [00:04:21] +**Michelle Bakels:** And then there's also Andrew Shew of Vercel. He's a content engineer, but he was a pro baseball player for six years before he went be a full Slack developer for Vercel. So he's gonna talk about all of the mental tooling that professional baseball players use to perform their best. And how you can literally take like the tools of professional athletes and apply them to your work so that you can. [04:21] -Athletes, the longevity of their career is so important. So if they themselves too hard, like they have to find that barrier between like giving their best performance but not putting themselves out for a season. And that's where like engineers kind of break that. Like we constantly burn out, so we go into that injury area so often. [00:04:41] +Athletes, the longevity of their career is so important. So if they themselves too hard, like they have to find that barrier between like giving their best performance but not putting themselves out for a season. And that's where like engineers kind of break that. Like we constantly burn out, so we go into that injury area so often. [04:41] -So he's gonna share like the tools of like, okay, how do you pace yourself so that you're performing as best as you can over a long period of time. So that one's gonna be really interesting too. [00:04:52] +So he's gonna share like the tools of like, okay, how do you pace yourself so that you're performing as best as you can over a long period of time. So that one's gonna be really interesting too. [04:52] -**Carl Vitullo:** Yeah, I'm really interested to hear a professional athlete talk about that aspect of health and really thinking about. Thinking about the long term, like yeah, this is, this is not a sprint, this is a livelihood. This is something you will likely do for your life. So, yeah. Oh, that's so interesting. [00:05:09] +**Carl Vitullo:** Yeah, I'm really interested to hear a professional athlete talk about that aspect of health and really thinking about. Thinking about the long term, like yeah, this is, this is not a sprint, this is a livelihood. This is something you will likely do for your life. So, yeah. Oh, that's so interesting. [05:09] ## Early bird outdoor activities -**Michelle Bakels:** it's super interesting. And we, and then we also have like the second morning, so it's a two day conference. So the second morning we have our, basically our developer health, like choose your own adventure. Basically if you're an early bird you can wake up and do yoga on the beach, which we had last year but we have a couple more options this year. [00:05:27] +**Michelle Bakels:** it's super interesting. And we, and then we also have like the second morning, so it's a two day conference. So the second morning we have our, basically our developer health, like choose your own adventure. Basically if you're an early bird you can wake up and do yoga on the beach, which we had last year but we have a couple more options this year. [05:27] -Um, One of our speakers, Henri Helvetica, He's going to be leading like a 30 minute run in the morning. So you can choose that or the Sunrise Yoga or another one of our speakers, will Johnson, is going to be leading basically beach volleyball. So you can kind of like choose which one you wanna do, if you wanna wake up early and get active. [00:05:46] +Um, One of our speakers, Henri Helvetica, He's going to be leading like a 30 minute run in the morning. So you can choose that or the Sunrise Yoga or another one of our speakers, will Johnson, is going to be leading basically beach volleyball. So you can kind of like choose which one you wanna do, if you wanna wake up early and get active. [05:46] -**Carl Vitullo:** Okay. That's pretty fun. I'm in a beach volleyball league in New York, so I'll have to, I'll have to try and check that out. [00:05:53] +**Carl Vitullo:** Okay. That's pretty fun. I'm in a beach volleyball league in New York, so I'll have to, I'll have to try and check that out. [05:53] -**Michelle Bakels:** Yes absolutely. [00:05:54] +**Michelle Bakels:** Yes absolutely. [05:54] ## Who is the target audience for React Miami? -**Carl Vitullo:** I, I see a question in the chat here. Who's the target audience of this conference? Is that mostly gonna be aimed at people who are already working with React professionally? [00:06:03] +**Carl Vitullo:** I, I see a question in the chat here. Who's the target audience of this conference? Is that mostly gonna be aimed at people who are already working with React professionally? [06:03] -**Michelle Bakels:** Um, Yeah, so we have I would say React developer or JavaScript developer, and it can be from beginner to experienced. We try to have a range of topics that can kind of like speak to both ends of a career. [00:06:18] +**Michelle Bakels:** Um, Yeah, so we have I would say React developer or JavaScript developer, and it can be from beginner to experienced. We try to have a range of topics that can kind of like speak to both ends of a career. [06:18] -**Carl Vitullo:** That makes sense. Yeah. I feel like every conference is gonna have some talks that are very educational for anyone who is just trying to learn. But then a lot of the developer health kind of talks, that sounds a little bit more professionally oriented. [00:06:31] +**Carl Vitullo:** That makes sense. Yeah. I feel like every conference is gonna have some talks that are very educational for anyone who is just trying to learn. But then a lot of the developer health kind of talks, that sounds a little bit more professionally oriented. [06:31] -**Michelle Bakels:** Yeah, it's a good one too for beginners though, because I mean, to be able to get ahead of those burnout experiences early in your career and like develop those good habits early is. Really like beneficial. But yeah, there's like some that are gonna be, I imagine a bit advanced, for example, Sunil Pai, who's like just prolific in, in web development… [00:06:54] +**Michelle Bakels:** Yeah, it's a good one too for beginners though, because I mean, to be able to get ahead of those burnout experiences early in your career and like develop those good habits early is. Really like beneficial. But yeah, there's like some that are gonna be, I imagine a bit advanced, for example, Sunil Pai, who's like just prolific in, in web development… [06:54] -**Carl Vitullo:** We just had him on. [00:06:55] +**Carl Vitullo:** We just had him on. [06:55] -**Michelle Bakels:** Yeah. Like, yes, exactly. He's so amazing. He's gonna be talking about this you know, collaborative app that he's working on, realtime collaborative app. And I imagine that the technical content of that talk is going to maybe go over a few people's heads, probably even go over my head. [00:07:14] +**Michelle Bakels:** Yeah. Like, yes, exactly. He's so amazing. He's gonna be talking about this you know, collaborative app that he's working on, realtime collaborative app. And I imagine that the technical content of that talk is going to maybe go over a few people's heads, probably even go over my head. [07:14] -He also has this like super interactive moment built into his talk that, you know, anybody can have fun. Like, you know, maybe you're catching like 10 or 20% of what he's saying, but it'll still be really fun cuz he has this like really fun activity planned for everyone. [00:07:30] +He also has this like super interactive moment built into his talk that, you know, anybody can have fun. Like, you know, maybe you're catching like 10 or 20% of what he's saying, but it'll still be really fun cuz he has this like really fun activity planned for everyone. [07:30] -**Carl Vitullo:** Yeah. And we do have a discount code to give away. If you're thinking about a conference I think this one sounds like a pretty great one to go to. [00:07:38] +**Carl Vitullo:** Yeah. And we do have a discount code to give away. If you're thinking about a conference I think this one sounds like a pretty great one to go to. [07:38] -**Carl Vitullo (editing):** If you do grab one, at reactmiami.com, make sure you use our discount code, REACTIFLUX10 [00:07:44] +**Carl Vitullo (editing):** If you do grab one, at reactmiami.com, make sure you use our discount code, REACTIFLUX10 [07:44] ## Speakers Michelle is excited for -**Carl Vitullo:** You've mentioned some of the speakers, especially the ones talking around developer health and burnout. Who are some of the speakers you're really interested in hearing from? [00:07:52] +**Carl Vitullo:** You've mentioned some of the speakers, especially the ones talking around developer health and burnout. Who are some of the speakers you're really interested in hearing from? [07:52] -**Michelle Bakels:** It's really hard for me to say because all of them, I do do most of the selection for the speaker lineup. Not a hundred percent, but very close to. I think obviously the developer health talks are gonna be super interesting. [00:08:06] +**Michelle Bakels:** It's really hard for me to say because all of them, I do do most of the selection for the speaker lineup. Not a hundred percent, but very close to. I think obviously the developer health talks are gonna be super interesting. [08:06] -Christopher Chedeau, who's like one of the React pioneers of like, the GOATs of React, he's gonna be speaking and he's gonna be talking about. I don't know if, if you guys follow him, then you'll have seen these like tweets of him kind of like learning in public, building in public, this in browser video editor. [00:08:28] +Christopher Chedeau, who's like one of the React pioneers of like, the GOATs of React, he's gonna be speaking and he's gonna be talking about. I don't know if, if you guys follow him, then you'll have seen these like tweets of him kind of like learning in public, building in public, this in browser video editor. [08:28] -I don't know that he's spoken about this at any other conferences yet, and it's very much something that he's like actively building, and he's going to be talking about that, which I'm really excited about. So his talk is one that I'm super looking forward to. [00:08:44] +I don't know that he's spoken about this at any other conferences yet, and it's very much something that he's like actively building, and he's going to be talking about that, which I'm really excited about. So his talk is one that I'm super looking forward to. [08:44] -Julian Benegas of Basement Studio. So I don't know if you guys are familiar with Basement Studio. They're like based in Argentina. They're a design and dev shop in Argentina, and they are so high quality, like, they're the minds behind, like the Next.JS rebrand. They just did Mr. Beast's new website, which is like an award-winning website. [00:09:07] +Julian Benegas of Basement Studio. So I don't know if you guys are familiar with Basement Studio. They're like based in Argentina. They're a design and dev shop in Argentina, and they are so high quality, like, they're the minds behind, like the Next.JS rebrand. They just did Mr. Beast's new website, which is like an award-winning website. [09:07] -They actually do a lot of the work behind, like the Vercel website, like what you see on Vercel's site. They work really closely with the Vercel design team. And they have like a upcoming project with Solana and like a really cool like metaverse fashion show project too. So their head of development is gonna be giving a talk about Scrolly Telling. [00:09:28] +They actually do a lot of the work behind, like the Vercel website, like what you see on Vercel's site. They work really closely with the Vercel design team. And they have like a upcoming project with Solana and like a really cool like metaverse fashion show project too. So their head of development is gonna be giving a talk about Scrolly Telling. [09:28] -Basically like captivating your audience, like on your landing page by like on scroll animations and like telling a story, like as you know, a user goes through your website, and I don't know if you guys saw uh, Next.JS conf like. Uh, Guillermo RA's keynote, the basement studio team built out that whole keynote. So, I can only imagine what their talk is gonna look like. So that's another one that's gonna be amazing. [00:09:54] +Basically like captivating your audience, like on your landing page by like on scroll animations and like telling a story, like as you know, a user goes through your website, and I don't know if you guys saw uh, Next.JS conf like. Uh, Guillermo RA's keynote, the basement studio team built out that whole keynote. So, I can only imagine what their talk is gonna look like. So that's another one that's gonna be amazing. [09:54] -**Carl Vitullo:** Yeah. That's pretty incredible. The Next website… It felt like it's on the cutting edge of web design, leading the charge on that. So that's, that's pretty cool. I I, I didn't realize that that team that had built, that was based in Argentina. I've definitely heard a lot about Argentina based development companies. It sounds like there's a, a lot of really cool stuff happening in Argentina. [00:10:14] +**Carl Vitullo:** Yeah. That's pretty incredible. The Next website… It felt like it's on the cutting edge of web design, leading the charge on that. So that's, that's pretty cool. I I, I didn't realize that that team that had built, that was based in Argentina. I've definitely heard a lot about Argentina based development companies. It sounds like there's a, a lot of really cool stuff happening in Argentina. [10:14] -**Michelle Bakels:** Argentina has such strong talent. It's like blows my mind how underrated it is. It's like phenomenal. Like the people that you see working from Argentina, like they're just, they have such great talent. [00:10:27] +**Michelle Bakels:** Argentina has such strong talent. It's like blows my mind how underrated it is. It's like phenomenal. Like the people that you see working from Argentina, like they're just, they have such great talent. [10:27] -**Carl Vitullo:** Yeah, and Christopher Chedeau, I'm always interested to hear him talk. He's such a, intelligent and giving person. We, we actually had him on a couple weeks ago to talk about the React documentary uh, which he helped organize and we ended up getting deep into the history of Reactiflux because turned out he helped organize Reactiflux too, he was one of the behind the scenes guys, [00:10:48] +**Carl Vitullo:** Yeah, and Christopher Chedeau, I'm always interested to hear him talk. He's such a, intelligent and giving person. We, we actually had him on a couple weeks ago to talk about the React documentary uh, which he helped organize and we ended up getting deep into the history of Reactiflux because turned out he helped organize Reactiflux too, he was one of the behind the scenes guys, [10:48] -**Michelle Bakels:** I was listening in on that one. That one was super interesting. Yeah [00:10:52] +**Michelle Bakels:** I was listening in on that one. That one was super interesting. Yeah [10:52] -**Carl Vitullo:** So that's some of the speakers you're excited about. [00:10:55] +**Carl Vitullo:** So that's some of the speakers you're excited about. [10:55] ## Michelle's philosophy for organizing a conference -**Carl Vitullo:** Could you talk a little, a little bit about the, I guess, the philosophy that you've approached organizing a conference from, like, how have you thought about creating space and programming to help developers with their careers? [00:11:09] +**Carl Vitullo:** Could you talk a little, a little bit about the, I guess, the philosophy that you've approached organizing a conference from, like, how have you thought about creating space and programming to help developers with their careers? [11:09] -**Michelle Bakels:** That's such a good question. It's like this question like between that question and like how do you choose speakers, I always feel like that Always Sunny in Philadelphia meme of like that crazy map with like the red string. I'm like, so this is how it works. This. [00:11:23] +**Michelle Bakels:** That's such a good question. It's like this question like between that question and like how do you choose speakers, I always feel like that Always Sunny in Philadelphia meme of like that crazy map with like the red string. I'm like, so this is how it works. This. [11:23] -**Carl Vitullo:** You go insane for a couple days. [00:11:26] +**Carl Vitullo:** You go insane for a couple days. [11:26] -**Michelle Bakels:** Yeah. But, but yeah, like hopefully I can like come up with like a comprehensive answer to this, [00:11:34] +**Michelle Bakels:** Yeah. But, but yeah, like hopefully I can like come up with like a comprehensive answer to this, [11:34] -So, how do I think about creating a conference to help devs with their careers? So, so first of all, like born and raised South Floridian. So the conference is on my home turf, I'm like very well connected with the community and with the environment that we're working in. So, again, like I really try and bring the city into our conference and vice versa, so that people are really, oh, what's up South Floridian. Okay. So like, I'm like looking at the chat too. [00:12:03] +So, how do I think about creating a conference to help devs with their careers? So, so first of all, like born and raised South Floridian. So the conference is on my home turf, I'm like very well connected with the community and with the environment that we're working in. So, again, like I really try and bring the city into our conference and vice versa, so that people are really, oh, what's up South Floridian. Okay. So like, I'm like looking at the chat too. [12:03] -So try and like, bring it all together to really feel like community, because I think part of what makes a conference the most successful it can be for attendees is to facilitate networking as much as possible. [00:12:17] +So try and like, bring it all together to really feel like community, because I think part of what makes a conference the most successful it can be for attendees is to facilitate networking as much as possible. [12:17] -The talks are all obviously like the key learning moments, on the books. But it's like being able to talk to the speakers, network with the speakers, and network with the other people there and create, like all of these relationships is so important. [00:12:32] +The talks are all obviously like the key learning moments, on the books. But it's like being able to talk to the speakers, network with the speakers, and network with the other people there and create, like all of these relationships is so important. [12:32] -We definitely wanna make it like a fun environment where you wanna stay and you wanna hang out and that you can relax and you don't feel stressed. So like you're really there as your best self, and like an energetic person. So there's definitely that aspect to it. I think also like a huge part of our philosophy is diversity of our speaker lineup and diversity of our attendees. If you don't know, like Miami is an incredibly diverse city. [00:13:00] +We definitely wanna make it like a fun environment where you wanna stay and you wanna hang out and that you can relax and you don't feel stressed. So like you're really there as your best self, and like an energetic person. So there's definitely that aspect to it. I think also like a huge part of our philosophy is diversity of our speaker lineup and diversity of our attendees. If you don't know, like Miami is an incredibly diverse city. [13:00] -We want to be true to that in our conference as well. We really try to, first and foremost, I, I have the personal belief that your speaker lineup is gonna be a reflection of the people who are going to come to the conference. [00:13:15] +We want to be true to that in our conference as well. We really try to, first and foremost, I, I have the personal belief that your speaker lineup is gonna be a reflection of the people who are going to come to the conference. [13:15] -So if you have like, all of these big names, everybody's like super senior, they've been in the game for like two decades. Like it's gonna probably feel a little bit intimidating and it's might not feel like the most welcoming place for everyone. I definitely want. People to be able to like look at the speaker lineup and be like, oh, there's first time speakers, there's a lot of women, there's experts. [00:13:39] +So if you have like, all of these big names, everybody's like super senior, they've been in the game for like two decades. Like it's gonna probably feel a little bit intimidating and it's might not feel like the most welcoming place for everyone. I definitely want. People to be able to like look at the speaker lineup and be like, oh, there's first time speakers, there's a lot of women, there's experts. [13:39] -So like, there's just this range of attendees that can come and see themselves being comfortable in this environment. So I think diversity is like huge for us. And then of course, like the community aspect and then of, for just logistics, we co-organized this with JS World Conference, who's like, a pro at putting together conferences. [00:14:00] +So like, there's just this range of attendees that can come and see themselves being comfortable in this environment. So I think diversity is like huge for us. And then of course, like the community aspect and then of, for just logistics, we co-organized this with JS World Conference, who's like, a pro at putting together conferences. [14:00] -And so logistically they are just like on top of every single aspect of like operations. So that's the main, the main kind of like concept behind the conference. [00:14:12] +And so logistically they are just like on top of every single aspect of like operations. So that's the main, the main kind of like concept behind the conference. [14:12] -**Carl Vitullo:** Sure. Yeah. Very nice. Yeah. I love what you said about the speaker lineup driving who feels comfortable showing up. I think that's so true and that's such a… nobody will ever will ever tell you why they didn't show up. Like you never get to talk with the people who don't come to a conference. [00:14:29] +**Carl Vitullo:** Sure. Yeah. Very nice. Yeah. I love what you said about the speaker lineup driving who feels comfortable showing up. I think that's so true and that's such a… nobody will ever will ever tell you why they didn't show up. Like you never get to talk with the people who don't come to a conference. [14:29] -I think keeping that in mind and designing a speaker layout so that people looking at what's gonna be happening will feel comfortable, will feel like, yes, these are my people, I can show up and be a part of this. I, I, I love that. That's such a great way to think about it. [00:14:43] +I think keeping that in mind and designing a speaker layout so that people looking at what's gonna be happening will feel comfortable, will feel like, yes, these are my people, I can show up and be a part of this. I, I, I love that. That's such a great way to think about it. [14:43] -**Michelle Bakels:** Thank you. Yeah, we try and do a lot of scholarships too. So our scholarship closed like last week, I think, but you know, we have 500 attendees max for our conference, and last year I, we were able to give away 60 scholarship tickets to help with diversity inclusion. And this year is a little bit of a different year for conferences, but I think we've done, I think we've been able to do 40 tickets so far. 30 or 40 scholarship tickets so far. [00:15:13] +**Michelle Bakels:** Thank you. Yeah, we try and do a lot of scholarships too. So our scholarship closed like last week, I think, but you know, we have 500 attendees max for our conference, and last year I, we were able to give away 60 scholarship tickets to help with diversity inclusion. And this year is a little bit of a different year for conferences, but I think we've done, I think we've been able to do 40 tickets so far. 30 or 40 scholarship tickets so far. [15:13] -We actually have a sponsorship package where we, you know, if companies come to us and they're like, oh, I wanna be a bronze sponsor, which is like $5,000 level. We also have what's, basically we called it DE&I sponsorship as well. So instead of saying like, I want my $5,000 to go to the conference, it's almost like dedicated funds for, the way that you would do dedicated funds to a nonprofit and you're like, I want my \$5,000 specifically to go towards funding tickets from your diversity inclusion applicants. [00:15:43] +We actually have a sponsorship package where we, you know, if companies come to us and they're like, oh, I wanna be a bronze sponsor, which is like $5,000 level. We also have what's, basically we called it DE&I sponsorship as well. So instead of saying like, I want my $5,000 to go to the conference, it's almost like dedicated funds for, the way that you would do dedicated funds to a nonprofit and you're like, I want my \$5,000 specifically to go towards funding tickets from your diversity inclusion applicants. [15:43] -**Carl Vitullo:** Right. Very nice. Okay. So they can pay to help support the logistics and operations of the conference, or they can give money directly to paying for tickets for attendees who otherwise might not be able to make it. That seems like a great way to structure sponsorship. [00:15:56] +**Carl Vitullo:** Right. Very nice. Okay. So they can pay to help support the logistics and operations of the conference, or they can give money directly to paying for tickets for attendees who otherwise might not be able to make it. That seems like a great way to structure sponsorship. [15:56] ## Putting on a conference in 2023 -**Carl Vitullo:** While you were just saying that, about it being, you know, a different time for conferences, we're in 2023, it's starting to feel like the pandemic is over. How is designing a large event that people are gonna be traveling to attend to, how is, how has that been? [00:16:11] +**Carl Vitullo:** While you were just saying that, about it being, you know, a different time for conferences, we're in 2023, it's starting to feel like the pandemic is over. How is designing a large event that people are gonna be traveling to attend to, how is, how has that been? [16:11] -**Michelle Bakels:** I mean, we did our conference last year. So yeah, it was like last year was I think the first. It was like last April, I would say that was like the first time that a lot of people started really, I think traveling. So now we have had like a full calendar year of people traveling and going to all kinds of different events. [00:16:32] +**Michelle Bakels:** I mean, we did our conference last year. So yeah, it was like last year was I think the first. It was like last April, I would say that was like the first time that a lot of people started really, I think traveling. So now we have had like a full calendar year of people traveling and going to all kinds of different events. [16:32] -And so, the people that are comfortable with traveling and attending conferences, I think people are like getting to be a little bit more comfortable with that. I don't even think that the issues this year are necessarily with that so much as the economy of the tech industry right now is it, it's in a really tough place. Like one, one of the toughest spots that it's been in a really long time. So, or maybe ever. [00:16:57] +And so, the people that are comfortable with traveling and attending conferences, I think people are like getting to be a little bit more comfortable with that. I don't even think that the issues this year are necessarily with that so much as the economy of the tech industry right now is it, it's in a really tough place. Like one, one of the toughest spots that it's been in a really long time. So, or maybe ever. [16:57] -So yeah, we're just very cognizant of, you know, we depend a lot on sponsorships, obviously, to be able to meet our attendees expectations. And so many companies just have their marketing budgets frozen until q3 and it usually takes about three months to like work with a company on a sponsorship. [00:17:14] +So yeah, we're just very cognizant of, you know, we depend a lot on sponsorships, obviously, to be able to meet our attendees expectations. And so many companies just have their marketing budgets frozen until q3 and it usually takes about three months to like work with a company on a sponsorship. [17:14] -So I think, let's say this kind of like hard economic hardship flushes itself out on time with what's projected? I think it'll be in, you know, Q4 when conferences start actually kind, kinda like seeing the typical sponsorships and numbers that they used to. [00:17:32] +So I think, let's say this kind of like hard economic hardship flushes itself out on time with what's projected? I think it'll be in, you know, Q4 when conferences start actually kind, kinda like seeing the typical sponsorships and numbers that they used to. [17:32] -**Carl Vitullo:** So you, you are a native South Floridian. Could you talk a little bit about the Miami tech scene and how that's evolved in the time you've been working as a professional? [00:17:41] +**Carl Vitullo:** So you, you are a native South Floridian. Could you talk a little bit about the Miami tech scene and how that's evolved in the time you've been working as a professional? [17:41] -**Michelle Bakels:** Yeah, so, so basically I've been a software developer for like the last seven years, maybe eight now. So basically when I started learning how to code and I, I learned like I got a computer science degree, but I took my classes all like remotely from Florida State University. I've always just been in South Florida since I started coding. [00:18:03] +**Michelle Bakels:** Yeah, so, so basically I've been a software developer for like the last seven years, maybe eight now. So basically when I started learning how to code and I, I learned like I got a computer science degree, but I took my classes all like remotely from Florida State University. I've always just been in South Florida since I started coding. [18:03] -And when I started coding, it was so hard to find a community especially because I'm like really in Palm Beach County. But it was so hard to find a community where I could like connect with other developers and I could learn from them, or I could find like a mentor. [00:18:18] +And when I started coding, it was so hard to find a community especially because I'm like really in Palm Beach County. But it was so hard to find a community where I could like connect with other developers and I could learn from them, or I could find like a mentor. [18:18] -Right around the same time that I was looking for a community, there was one getting started called Palm Beach Tech. So I really just threw myself into that community and, and tried to pull together pieces around that of technical people in, in South Florida. And Palm Beach Tech grew to expand to the region, which is now called South Florida Tech Hub and as I mentioned earlier in the interview, like I'm now the chair of the foundation for South Florida Tech Hub. [00:18:48] +Right around the same time that I was looking for a community, there was one getting started called Palm Beach Tech. So I really just threw myself into that community and, and tried to pull together pieces around that of technical people in, in South Florida. And Palm Beach Tech grew to expand to the region, which is now called South Florida Tech Hub and as I mentioned earlier in the interview, like I'm now the chair of the foundation for South Florida Tech Hub. [18:48] -So that's one of those things that's like really evolved over time, of starting as a few like disparate meetups coming together as a proper nonprofit organization that has like big tech companies to like Office Depot and also NextEra Energy, which if you're familiar with it, is the world's leading producer of renewable energy, but like having companies like that involved in the organization. [00:19:11] +So that's one of those things that's like really evolved over time, of starting as a few like disparate meetups coming together as a proper nonprofit organization that has like big tech companies to like Office Depot and also NextEra Energy, which if you're familiar with it, is the world's leading producer of renewable energy, but like having companies like that involved in the organization. [19:11] -So that's kind of like the north region perspective, and then in the south region closer to Miami, you had also like a lot of people, 10, 15 years ago that were. Pulling together, you know, pieces to build a tech community. [00:19:27] +So that's kind of like the north region perspective, and then in the south region closer to Miami, you had also like a lot of people, 10, 15 years ago that were. Pulling together, you know, pieces to build a tech community. [19:27] -So React Miami is kind of like a conference within a conference. We have a partnership with a general tech conference called eMerge Americas. And one of the reasons why I really love working with them is because, a) all of our attendees get free tickets to eMerge America so they can like, enjoy this conference that's like, 40 times bigger than ours, at the enjoying React Miami, but also the founders of eMerge Americas are like, tried and true, like Miamians and like Miami Tech Builders. [00:19:55] +So React Miami is kind of like a conference within a conference. We have a partnership with a general tech conference called eMerge Americas. And one of the reasons why I really love working with them is because, a) all of our attendees get free tickets to eMerge America so they can like, enjoy this conference that's like, 40 times bigger than ours, at the enjoying React Miami, but also the founders of eMerge Americas are like, tried and true, like Miamians and like Miami Tech Builders. [19:55] -So the founder of eMerge, his name is Manny Medina, he moved to Miami from Cuba and he had a telecom company and he wanted to sell it and, you know, stay in Miami and everybody was like, no, you have to move to San Francisco or New York to sell a company. [00:20:11] +So the founder of eMerge, his name is Manny Medina, he moved to Miami from Cuba and he had a telecom company and he wanted to sell it and, you know, stay in Miami and everybody was like, no, you have to move to San Francisco or New York to sell a company. [20:11] -And he was like, absolutely not, I'm staying in Miami. And this was, I think, a little over 10 years ago, maybe 12 years ago. He is like, "absolutely not, I'm staying in Miami and I'm gonna sell my company from Miami Beach." And so he did just that. And he sold his company to Verizon for I think like \$1.2 billion. [00:20:33] +And he was like, absolutely not, I'm staying in Miami. And this was, I think, a little over 10 years ago, maybe 12 years ago. He is like, "absolutely not, I'm staying in Miami and I'm gonna sell my company from Miami Beach." And so he did just that. And he sold his company to Verizon for I think like \$1.2 billion. [20:33] -**Carl Vitullo:** Wow. [00:20:34] +**Carl Vitullo:** Wow. [20:34] -**Michelle Bakels:** Yeah, like something really high. Like really crazy like that. And he's basically taken that money, created eMerge Americas with his daughter Melissa, who's now the president of, of eMerge. And they are, for the last decade, been putting on eMerge America's conference every single community event that pops up, like they'll sponsor it, they'll support it. [00:20:58] +**Michelle Bakels:** Yeah, like something really high. Like really crazy like that. And he's basically taken that money, created eMerge Americas with his daughter Melissa, who's now the president of, of eMerge. And they are, for the last decade, been putting on eMerge America's conference every single community event that pops up, like they'll sponsor it, they'll support it. [20:58] -When they heard about React Miami, they were like, how can we get involved? Like how can we help you? Which is like, I think a hallmark of South Florida tech community in Miami tech community is this phrase, how can I help? [00:21:10] +When they heard about React Miami, they were like, how can we get involved? Like how can we help you? Which is like, I think a hallmark of South Florida tech community in Miami tech community is this phrase, how can I help? [21:10] -Which has become almost a cliche because of like the tweet from Mayor Suarez. But it is really something that we say all the time, like very collaborative. So, you know, over the years it's been very like grassroots, building up the tech community, bringing in resources, making connections. [00:21:25] +Which has become almost a cliche because of like the tweet from Mayor Suarez. But it is really something that we say all the time, like very collaborative. So, you know, over the years it's been very like grassroots, building up the tech community, bringing in resources, making connections. [21:25] -And then of course, over 2020 we had people from San Francisco, you know, investors from San Francisco, VCs from San Francisco come in and recognize what's happening in our region. And then they kind of like made it Twitter famous, I guess. So it was growing at a great rate already in building up. And then we kind of just had this like, kind of like boom over the last couple years. [00:21:53] +And then of course, over 2020 we had people from San Francisco, you know, investors from San Francisco, VCs from San Francisco come in and recognize what's happening in our region. And then they kind of like made it Twitter famous, I guess. So it was growing at a great rate already in building up. And then we kind of just had this like, kind of like boom over the last couple years. [21:53] -**Carl Vitullo:** Nice. Oh, very great. Yeah. What a, what a great story of somebody building something on their own. Staying authentic to their roots, you know, giving back where the city they came from and the city that helped them build their business. That's, that's so great. And now to have it be this huge network of different conferences, that's a really incredible like origin story. [00:22:14] +**Carl Vitullo:** Nice. Oh, very great. Yeah. What a, what a great story of somebody building something on their own. Staying authentic to their roots, you know, giving back where the city they came from and the city that helped them build their business. That's, that's so great. And now to have it be this huge network of different conferences, that's a really incredible like origin story. [22:14] -**Michelle Bakels:** Yeah, they are amazing. I definitely admire Melissa Medina is like, it's so funny cuz she's the organizer and president of eMerge, but at the same time she's absolutely like a role model of mine. I definitely look up to her. [00:22:27] +**Michelle Bakels:** Yeah, they are amazing. I definitely admire Melissa Medina is like, it's so funny cuz she's the organizer and president of eMerge, but at the same time she's absolutely like a role model of mine. I definitely look up to her. [22:27] ## Choosing topics for the conference -**Carl Vitullo:** We had some good questions show up in the chat. When you're scheduling the speakers, how do the topics get chosen? Do you have an idea in mind of what topics you'd like to have on stage and then you find people who could talk about them? Or do you do outreach specifically to speakers? Is it inbound? [00:22:42] +**Carl Vitullo:** We had some good questions show up in the chat. When you're scheduling the speakers, how do the topics get chosen? Do you have an idea in mind of what topics you'd like to have on stage and then you find people who could talk about them? Or do you do outreach specifically to speakers? Is it inbound? [22:42] -**Michelle Bakels:** It's both. So usually we have to, in order to stimulate sales of tickets, we have to have some speakers announced. So we usually do a preliminary outreach to a couple people that we feel would be a good representation of our conference and what we're looking for. So it'll be a mix of some first time speakers. To very experienced speakers and like experts in the field. [00:23:09] +**Michelle Bakels:** It's both. So usually we have to, in order to stimulate sales of tickets, we have to have some speakers announced. So we usually do a preliminary outreach to a couple people that we feel would be a good representation of our conference and what we're looking for. So it'll be a mix of some first time speakers. To very experienced speakers and like experts in the field. [23:09] -And then among those people that we reach out to, we try and also have racial and gender diversity represented as well. So that is what we call the speaker preview. And that's direct outreach. And that's like the down low, like, "Hey, don't say anything. We're gonna do a big announcement" kind of thing. [00:23:26] +And then among those people that we reach out to, we try and also have racial and gender diversity represented as well. So that is what we call the speaker preview. And that's direct outreach. And that's like the down low, like, "Hey, don't say anything. We're gonna do a big announcement" kind of thing. [23:26] -And then throughout this whole time we have our call for papers open as well. I would say that as far, if — this is like my Always Sunny in Philadelphia moment again — but like I would say that like as far as picking topics and speakers from the CFPs, I really don't think that I have with certainty, some kind of knowledge ahead of time of exactly what the speaker lineup will end up looking like, because there are so many people that apply for the CFP that I'm like, "how did you even find this? Like you're not on Twitter, you're not on Instagram. Like, how did you even hear about us?" And they're like, and, and they're just the most incredible people. [00:24:06] +And then throughout this whole time we have our call for papers open as well. I would say that as far, if — this is like my Always Sunny in Philadelphia moment again — but like I would say that like as far as picking topics and speakers from the CFPs, I really don't think that I have with certainty, some kind of knowledge ahead of time of exactly what the speaker lineup will end up looking like, because there are so many people that apply for the CFP that I'm like, "how did you even find this? Like you're not on Twitter, you're not on Instagram. Like, how did you even hear about us?" And they're like, and, and they're just the most incredible people. [24:06] -And they, maybe they've never even spoken at a conference, but you read the other things that they've done and you're like, "oh my God, I have to have you here." And so, I would say that there's definitely a mix of just trying to find like a huge range of diversity among the speakers. Which makes it just so interesting. [00:24:23] +And they, maybe they've never even spoken at a conference, but you read the other things that they've done and you're like, "oh my God, I have to have you here." And so, I would say that there's definitely a mix of just trying to find like a huge range of diversity among the speakers. Which makes it just so interesting. [24:23] -And then as far as topics go definitely wanna try and hit what's trending. Obviously things that are really important to people, but I also try and avoid things that are trendy, if that makes sense. There was some like, Twitter explosion around like suspense, for example, last year. And React 18 actually came out like two months after our CFP actually closed. [00:24:51] +And then as far as topics go definitely wanna try and hit what's trending. Obviously things that are really important to people, but I also try and avoid things that are trendy, if that makes sense. There was some like, Twitter explosion around like suspense, for example, last year. And React 18 actually came out like two months after our CFP actually closed. [24:51] -And so people were like, why isn't there a talk on this? And I'm like, well, we chose our whole lineup before this even came out. And aside from that, you can see how like the discussion around suspense like really quieted down. So it's like, you know, for the people that are coming, a lot of times they're sent by their companies and a lot of times they're like, maybe not even on Twitter or part of these conversations. [00:25:14] +And so people were like, why isn't there a talk on this? And I'm like, well, we chose our whole lineup before this even came out. And aside from that, you can see how like the discussion around suspense like really quieted down. So it's like, you know, for the people that are coming, a lot of times they're sent by their companies and a lot of times they're like, maybe not even on Twitter or part of these conversations. [25:14] -And so you wanna try and find the things that appeal to enterprise and corporate developers as well. People who can't change their tech stack decisions or their design decisions based on like, what's happening on Twitter, right? So you also wanna try and keep like the tried and true talk. [00:25:30] +And so you wanna try and find the things that appeal to enterprise and corporate developers as well. People who can't change their tech stack decisions or their design decisions based on like, what's happening on Twitter, right? So you also wanna try and keep like the tried and true talk. [25:30] -So I try and always have, straight React talk, talks that involve machine learning, talks that involve type safety, you know, a little bit of backend, and infrastructure. So it's like, yes, it's front end, but I think that the days of like just somebody being solely a front end developer is kind of fading away. [00:25:52] +So I try and always have, straight React talk, talks that involve machine learning, talks that involve type safety, you know, a little bit of backend, and infrastructure. So it's like, yes, it's front end, but I think that the days of like just somebody being solely a front end developer is kind of fading away. [25:52] -So it's like I kind of try and feel out like a lineup of topics that speaks more to the full stack developer that does React as the front end. [00:26:02] +So it's like I kind of try and feel out like a lineup of topics that speaks more to the full stack developer that does React as the front end. [26:02] -**Carl Vitullo:** Yeah, that definitely makes sense. That's a trend that I've noticed as well. And I guess that the React core team has sort of been pushing as well a lot more emphasis on crossing the client server boundary. That makes sense. Yeah. What you said about tr picking things that are trending but not trendy, that sounds like a tough balance to reach. [00:26:21] +**Carl Vitullo:** Yeah, that definitely makes sense. That's a trend that I've noticed as well. And I guess that the React core team has sort of been pushing as well a lot more emphasis on crossing the client server boundary. That makes sense. Yeah. What you said about tr picking things that are trending but not trendy, that sounds like a tough balance to reach. [26:21] -**Michelle Bakels:** (laughter) It is, and sometimes get called out. [00:26:25] +**Michelle Bakels:** (laughter) It is, and sometimes get called out. [26:25] -**Carl Vitullo:** Sure. Right. Yeah. It's picking something that people are excited about, but that has staying power survive the life cycle of organizing a conference. Yeah. That sounds like a, a tricky balance. [00:26:36] +**Carl Vitullo:** Sure. Right. Yeah. It's picking something that people are excited about, but that has staying power survive the life cycle of organizing a conference. Yeah. That sounds like a, a tricky balance. [26:36] -**Michelle Bakels:** Yes. Yeah, you, because the videos last forever and you obviously, you wanna have something beneficial to people in the moment, but you also wanna have something that people can watch again in two years, and it's still informative. [00:26:48] +**Michelle Bakels:** Yes. Yeah, you, because the videos last forever and you obviously, you wanna have something beneficial to people in the moment, but you also wanna have something that people can watch again in two years, and it's still informative. [26:48] -**Carl Vitullo:** Right. Somewhat timeless at least. [00:26:51] +**Carl Vitullo:** Right. Somewhat timeless at least. [26:51] ## Reaching out to first-time speakers -**Carl Vitullo:** Did I hear you say that you do some outreach early in the conference to first time speakers? [00:26:56] +**Carl Vitullo:** Did I hear you say that you do some outreach early in the conference to first time speakers? [26:56] -**Michelle Bakels:** Yes. [00:26:57] +**Michelle Bakels:** Yes. [26:57] -**Carl Vitullo:** How do you do that? How do you discover people, first time speakers to reach out to at that phase? [00:27:02] +**Carl Vitullo:** How do you do that? How do you discover people, first time speakers to reach out to at that phase? [27:02] -**Michelle Bakels:** It's actually one of the very small benefits of being chronically online. So I spend a lot of time on Twitter and you connect with all kinds of people. You start to like be able to see who these like rising star developers are. [00:27:17] +**Michelle Bakels:** It's actually one of the very small benefits of being chronically online. So I spend a lot of time on Twitter and you connect with all kinds of people. You start to like be able to see who these like rising star developers are. [27:17] -We usually try and have like a good handful of first time speakers, but one of our first time speakers was Will Johnson of Auth0 and Okta. And I think you can see like how much he's blown up over the last year with his content and, and the material that he creates. [00:27:34] +We usually try and have like a good handful of first time speakers, but one of our first time speakers was Will Johnson of Auth0 and Okta. And I think you can see like how much he's blown up over the last year with his content and, and the material that he creates. [27:34] -And then another one is Camie Ramos who was a first time speaker and React Miami was her first conference. I remember one night at the speaker hotel like, Brandon Bayer, Tejas Kumar, Kent Dodds, Facundo Giuliani, like all of them on the back patio of the speaker hotel, giving her feedback on like her practicing her talk. And now she's probably given like 20 conference talks. Like she's in such high demand now and traveling all over the world since then. [00:28:01] +And then another one is Camie Ramos who was a first time speaker and React Miami was her first conference. I remember one night at the speaker hotel like, Brandon Bayer, Tejas Kumar, Kent Dodds, Facundo Giuliani, like all of them on the back patio of the speaker hotel, giving her feedback on like her practicing her talk. And now she's probably given like 20 conference talks. Like she's in such high demand now and traveling all over the world since then. [28:01] -So I think like part of it is just being online and like seeing, okay, who's building, who's creating, who has like, who's kind of walking into a topic or a niche and is gonna probably have a lot to say about it. [00:28:15] +So I think like part of it is just being online and like seeing, okay, who's building, who's creating, who has like, who's kind of walking into a topic or a niche and is gonna probably have a lot to say about it. [28:15] -So that's how you, how I kind of find the first time speakers. [00:28:19] +So that's how you, how I kind of find the first time speakers. [28:19] -**Carl Vitullo:** Yeah, I like that, that's a really good answer. [00:28:21] +**Carl Vitullo:** Yeah, I like that, that's a really good answer. [28:21] -You had said earlier that one of your, one of the driving motivations behind the conference is… networking is such an important aspect. So hearing a story of a first time speaker being given an opportunity to be in network with these very experienced speakers, and that being a, a spring pad for her, at least for her speaking career. [00:28:42] +You had said earlier that one of your, one of the driving motivations behind the conference is… networking is such an important aspect. So hearing a story of a first time speaker being given an opportunity to be in network with these very experienced speakers, and that being a, a spring pad for her, at least for her speaking career. [28:42] -You know, who what that, how that reflects back on the actual career, but, oh, that's so great. That's, that's such a good example of a, a success. [00:28:50] +You know, who what that, how that reflects back on the actual career, but, oh, that's so great. That's, that's such a good example of a, a success. [28:50] -**Michelle Bakels:** Yeah, it's something that's really awesome. And I think also I have this, I don't wanna like curse, but like, basically like no a-hole policy. So it's like, even if you're like the biggest superstar in the world, but you're like constantly picking fights on Twitter, I probably am not gonna like, Ask you to be a part of like our super lineup because I love those moments. [00:29:13] +**Michelle Bakels:** Yeah, it's something that's really awesome. And I think also I have this, I don't wanna like curse, but like, basically like no a-hole policy. So it's like, even if you're like the biggest superstar in the world, but you're like constantly picking fights on Twitter, I probably am not gonna like, Ask you to be a part of like our super lineup because I love those moments. [29:13] -Like the people that are, like the veterans that do come, they're so generous with their knowledge and their time, and I think that's so important. And so I think it's also like finding the right personalities that make everyone feel comfortable when they're there. And, you know, Tejas Kumar, I think is like an exemplary speaker here because, he's even offered this year to do one-on-one coaching and feedback the whole time leading up to the conference. So speakers can reach out to him and like get feedback from him. And he obviously spoken at like a hundred conferences and is a pro. [00:29:45] +Like the people that are, like the veterans that do come, they're so generous with their knowledge and their time, and I think that's so important. And so I think it's also like finding the right personalities that make everyone feel comfortable when they're there. And, you know, Tejas Kumar, I think is like an exemplary speaker here because, he's even offered this year to do one-on-one coaching and feedback the whole time leading up to the conference. So speakers can reach out to him and like get feedback from him. And he obviously spoken at like a hundred conferences and is a pro. [29:45] -**Carl Vitullo:** I had an opportunity to speak with him, really for the first time. I, you know, I had met him at conferences, but we had him on to talk about his new business and going independent a couple of weeks ago. Yeah, I really, he's just so generous, so generous and so enthusiastic. [00:30:00] +**Carl Vitullo:** I had an opportunity to speak with him, really for the first time. I, you know, I had met him at conferences, but we had him on to talk about his new business and going independent a couple of weeks ago. Yeah, I really, he's just so generous, so generous and so enthusiastic. [30:00] -**Michelle Bakels:** Mm-hmm. [00:30:01] +**Michelle Bakels:** Mm-hmm. [30:01] -**Carl Vitullo:** Like you said about getting the right personalities to have the event feel good. Someone who knows a lot and who gets joy from bringing other people up to their level. I think that's, such a good energy to, to bring. [00:30:13] +**Carl Vitullo:** Like you said about getting the right personalities to have the event feel good. Someone who knows a lot and who gets joy from bringing other people up to their level. I think that's, such a good energy to, to bring. [30:13] -**Michelle Bakels:** Yeah, definitely. I think all of those guys, Facundo, Kent Dodds, Brandon Bayer, they all have that energy and there's like, I love that. I love seeing them spend time with the speakers ahead of time and give feedback. It's like warms your heart. [00:30:27] +**Michelle Bakels:** Yeah, definitely. I think all of those guys, Facundo, Kent Dodds, Brandon Bayer, they all have that energy and there's like, I love that. I love seeing them spend time with the speakers ahead of time and give feedback. It's like warms your heart. [30:27] -**Carl Vitullo:** Yeah. Sort of, I guess a follow up to the question I asked about reaching out to first time speakers. [00:30:32] +**Carl Vitullo:** Yeah. Sort of, I guess a follow up to the question I asked about reaching out to first time speakers. [30:32] ## Tips for wanna-be speakers? -**Carl Vitullo:** Any tips for people who have never spoken, getting their first speaking opportunity? [00:30:37] +**Carl Vitullo:** Any tips for people who have never spoken, getting their first speaking opportunity? [30:37] -**Michelle Bakels:** I'll preface this by saying that the things that would stand out to me are not true for all conferences. All of the things that I described on like how I do a speaker lineup, that is not true for everyone. All conferences kind of have their own criteria of who they choose. [00:30:52] +**Michelle Bakels:** I'll preface this by saying that the things that would stand out to me are not true for all conferences. All of the things that I described on like how I do a speaker lineup, that is not true for everyone. All conferences kind of have their own criteria of who they choose. [30:52] -So with that said, I would say, there are some conferences that just are not interested in first time speakers. If you apply to one of those conferences, unfortunately, like it's so hard to like, we try and like kind of lay out the criteria in our CFP, but not every conference does that. [00:31:09] +So with that said, I would say, there are some conferences that just are not interested in first time speakers. If you apply to one of those conferences, unfortunately, like it's so hard to like, we try and like kind of lay out the criteria in our CFP, but not every conference does that. [31:09] -You could very well accidentally apply to one of these conferences that are like, "we only want celebrities" and you know, I would say biggest thing is just not to take it personally. Like if you get rejected, it pretty much happens to everyone and it will happen to even the experts, like even the veterans get rejected still to this day. [00:31:27] +You could very well accidentally apply to one of these conferences that are like, "we only want celebrities" and you know, I would say biggest thing is just not to take it personally. Like if you get rejected, it pretty much happens to everyone and it will happen to even the experts, like even the veterans get rejected still to this day. [31:27] -So with that said, I would say, if you don't have any conference experience, it's really important to convey to the organizer what kind of energy you're gonna bring to the stage, how you are as a speaker. We want people who are on stage who are going to like, engage the audience. You know, seem really energetic. That carries over to the recordings and stuff that go up on YouTube afterwards. [00:31:51] +So with that said, I would say, if you don't have any conference experience, it's really important to convey to the organizer what kind of energy you're gonna bring to the stage, how you are as a speaker. We want people who are on stage who are going to like, engage the audience. You know, seem really energetic. That carries over to the recordings and stuff that go up on YouTube afterwards. [31:51] -So we want people who are also really good at explaining their ideas. So if there is an opportunity, even if it's optional, always try and submit a video or something of you talking about your topic, you know, what your ideas are or how you're gonna be as a speaker because there's just no premise for it that anybody can reference. And I think that's like the biggest thing is for people to get an idea of who you are. Cause culture is huge at conferences. So I would say that is a video is really helpful. [00:32:21] +So we want people who are also really good at explaining their ideas. So if there is an opportunity, even if it's optional, always try and submit a video or something of you talking about your topic, you know, what your ideas are or how you're gonna be as a speaker because there's just no premise for it that anybody can reference. And I think that's like the biggest thing is for people to get an idea of who you are. Cause culture is huge at conferences. So I would say that is a video is really helpful. [32:21] -If you don't do a video, don't skimp out on, you know, describing what your talk is about. Don't skimp out on your bio. You know, you'll see like somebody like Ken Wheeler today, his bio is, "an award-winning, critically acclaimed music producer that's just doing computer stuff for the money." [00:32:40] +If you don't do a video, don't skimp out on, you know, describing what your talk is about. Don't skimp out on your bio. You know, you'll see like somebody like Ken Wheeler today, his bio is, "an award-winning, critically acclaimed music producer that's just doing computer stuff for the money." [32:40] -A first time speaker can't submit that as a bio. Ken Wheeler can submit that. Cause everybody knows Ken Wheeler now. [00:32:47] +A first time speaker can't submit that as a bio. Ken Wheeler can submit that. Cause everybody knows Ken Wheeler now. [32:47] -**Carl Vitullo:** Ken Wheeler has a brand. [00:32:49] +**Carl Vitullo:** Ken Wheeler has a brand. [32:49] -**Michelle Bakels:** Yeah, exactly. So it's like, at least three to five sentences, like explain, you know, the most impressive things about you. And yeah, I think somebody said context is key. How does it relate to this conference? You're basically like trying to get hired, right? So like, why should we pick you? [00:33:05] +**Michelle Bakels:** Yeah, exactly. So it's like, at least three to five sentences, like explain, you know, the most impressive things about you. And yeah, I think somebody said context is key. How does it relate to this conference? You're basically like trying to get hired, right? So like, why should we pick you? [33:05] -And then your topic idea, just make it really clear and make it really well understood, like why you're the expert to talk about. Thing, like if there's, you know, 10 people who submitted talks on accessibility, why should they choose yours? What are you gonna bring in your talk that's gonna be really important and beneficial to the audience? [00:33:24] +And then your topic idea, just make it really clear and make it really well understood, like why you're the expert to talk about. Thing, like if there's, you know, 10 people who submitted talks on accessibility, why should they choose yours? What are you gonna bring in your talk that's gonna be really important and beneficial to the audience? [33:24] -So those are definitely a couple of my biggest tips. [00:33:27] +So those are definitely a couple of my biggest tips. [33:27] -**Carl Vitullo:** Yeah, that makes sense. I know that a lot of the time, many speakers at conferences are either professional developer relations, you know, they're working for a company specifically to go to conferences and speak about the product. Consultants or people like that will do it for a branding opportunity. [00:33:44] +**Carl Vitullo:** Yeah, that makes sense. I know that a lot of the time, many speakers at conferences are either professional developer relations, you know, they're working for a company specifically to go to conferences and speak about the product. Consultants or people like that will do it for a branding opportunity. [33:44] -There's a lot of competition and, and like you said about some conferences really focusing in on the celebrity speakers. I imagine that those conferences are not going to tell you that's what they're doing. [00:33:54] +There's a lot of competition and, and like you said about some conferences really focusing in on the celebrity speakers. I imagine that those conferences are not going to tell you that's what they're doing. [33:54] -**Michelle Bakels:** No, no, like just on the D-L, like between all 50 of us and whoever listens to the recording, like I know for a fact that there are conferences that rank really highly, like the number of Twitter followers that you have. They're never gonna put that on their website, but it is what it is. [00:34:12] +**Michelle Bakels:** No, no, like just on the D-L, like between all 50 of us and whoever listens to the recording, like I know for a fact that there are conferences that rank really highly, like the number of Twitter followers that you have. They're never gonna put that on their website, but it is what it is. [34:12] -**Carl Vitullo:** Right. Yeah, that makes sense. I like how you describe it as, you are trying to be hired, basically, you know, it's, it's lower stakes because it's one event, not an ongoing, compensation structure. But yeah, you are selling yourself in a very similar way to a job interview. [00:34:26] +**Carl Vitullo:** Right. Yeah, that makes sense. I like how you describe it as, you are trying to be hired, basically, you know, it's, it's lower stakes because it's one event, not an ongoing, compensation structure. But yeah, you are selling yourself in a very similar way to a job interview. [34:26] -One piece of advice I've heard given before that I'd love to hear your take on, is to speak at meetups because it's a smaller scale, lower stakes environment to get a speaking experience. [00:34:36] +One piece of advice I've heard given before that I'd love to hear your take on, is to speak at meetups because it's a smaller scale, lower stakes environment to get a speaking experience. [34:36] -**Michelle Bakels:** Yeah. Yeah, I definitely think it's definitely good advice if you're able to do that, to try and find a virtual meetup. Or a one in your community, or you can just organize one yourself. I think that's a really great way to get speaking experience and I think it's a really great way to get your ideas across. [00:34:53] +**Michelle Bakels:** Yeah. Yeah, I definitely think it's definitely good advice if you're able to do that, to try and find a virtual meetup. Or a one in your community, or you can just organize one yourself. I think that's a really great way to get speaking experience and I think it's a really great way to get your ideas across. [34:53] -We don't limit the number of proposals somebody can like send us, so there are definitely a few people that submit tons of talks that, sometimes it feels like, well, are you. You know, is this for a line item on your LinkedIn, or do you really care about talking about this thing? And so sometimes I can really tell that people care about that thing that they wanna talk about, but it, you know, we have a single track conference and at some point we have to cut off who we accept. [00:35:21] +We don't limit the number of proposals somebody can like send us, so there are definitely a few people that submit tons of talks that, sometimes it feels like, well, are you. You know, is this for a line item on your LinkedIn, or do you really care about talking about this thing? And so sometimes I can really tell that people care about that thing that they wanna talk about, but it, you know, we have a single track conference and at some point we have to cut off who we accept. [35:21] -And I would say also, just like if your talk doesn't get accepted, even if you make your own video at home, just talking about this thing the next time you go to apply for a conference, now you have a video of you talking about this thing. And you know, like you have people who are like interested in you talking about it. [00:35:40] +And I would say also, just like if your talk doesn't get accepted, even if you make your own video at home, just talking about this thing the next time you go to apply for a conference, now you have a video of you talking about this thing. And you know, like you have people who are like interested in you talking about it. [35:40] -Like you kind of have an audience which makes you more compelling, you know, for the next time around. [00:35:46] +Like you kind of have an audience which makes you more compelling, you know, for the next time around. [35:46] -**Carl Vitullo:** Right. Yeah, that makes sense. Yeah. So I guess maybe one point of feedback that could be valuable for someone trying to get the first time speaking experience is just start speaking, find any opportunity you can to get a platform of, to talk on whether it's Meetup in person or virtually. [00:36:03] +**Carl Vitullo:** Right. Yeah, that makes sense. Yeah. So I guess maybe one point of feedback that could be valuable for someone trying to get the first time speaking experience is just start speaking, find any opportunity you can to get a platform of, to talk on whether it's Meetup in person or virtually. [36:03] -I know, you know, like we've had a number of people reach out to reactiflux to me to say, Hey, I'd love to come on and do an office hours event. [00:36:10] +I know, you know, like we've had a number of people reach out to reactiflux to me to say, Hey, I'd love to come on and do an office hours event. [36:10] -**Carl Vitullo (editing):** Hint, hint! We accept inbound requests to speak at events like this, you can DM me, vcarl, or email hello@reactiflux.com. [00:36:18] +**Carl Vitullo (editing):** Hint, hint! We accept inbound requests to speak at events like this, you can DM me, vcarl, or email hello@reactiflux.com. [36:18] -**Carl Vitullo:** So yeah, I think we are one stage event where people , could come up and talk. I've heard of like virtual coffee podcasts, things like that. There's, I think there are a lot of speaking opportunities that are maybe lower stakes, a lower barrier to entry than you know, in-person live on stage at a conference. [00:36:35] +**Carl Vitullo:** So yeah, I think we are one stage event where people , could come up and talk. I've heard of like virtual coffee podcasts, things like that. There's, I think there are a lot of speaking opportunities that are maybe lower stakes, a lower barrier to entry than you know, in-person live on stage at a conference. [36:35] -**Michelle Bakels:** Absolutely for sure. [00:36:37] +**Michelle Bakels:** Absolutely for sure. [36:37] ## Will talks be recorded? (yes) -**Carl Vitullo:** One question about the conference, for people who attend virtually, will the presentations be recorded? [00:36:42] +**Carl Vitullo:** One question about the conference, for people who attend virtually, will the presentations be recorded? [36:42] -**Michelle Bakels:** Yeah, so we'll have, as we get closer to the conference, I mean, we're two weeks away, so I guess it should be in a couple of days, hopefully. We're going to have a link up to register for the live stream, which is going to be free. So we're gonna have a live stream of the conference and then, I would say about, it takes two weeks of post-production work to get the talks all ready to go. [00:37:04] +**Michelle Bakels:** Yeah, so we'll have, as we get closer to the conference, I mean, we're two weeks away, so I guess it should be in a couple of days, hopefully. We're going to have a link up to register for the live stream, which is going to be free. So we're gonna have a live stream of the conference and then, I would say about, it takes two weeks of post-production work to get the talks all ready to go. [37:04] -So I think at probably at least two weeks after the conference, then the recordings will be up. For anybody who wants to watch. [00:37:12] +So I think at probably at least two weeks after the conference, then the recordings will be up. For anybody who wants to watch. [37:12] ## Documentary screening, afterparty, beautiful venue -**Carl Vitullo:** Sure. Yeah, that's a lot of video content. Anything about the conference you feel like should be highlighted? [00:37:17] +**Carl Vitullo:** Sure. Yeah, that's a lot of video content. Anything about the conference you feel like should be highlighted? [37:17] -**Michelle Bakels:** We gotta talk about so many fun things about the conference. I think again, I mean, I think we have like an amazing speaker lineup that's super interesting. Two days in Miami Beach, like , cannot beat that, in my opinion. I think one thing that we didn't talk about yet is the opening party. [00:37:35] +**Michelle Bakels:** We gotta talk about so many fun things about the conference. I think again, I mean, I think we have like an amazing speaker lineup that's super interesting. Two days in Miami Beach, like , cannot beat that, in my opinion. I think one thing that we didn't talk about yet is the opening party. [37:35] -The conference starts on a Thursday morning, so the night before on Wednesday, we're gonna have a React documentary screening. There's a rooftop cinema club on Miami Beach, which is obviously a rooftop cinema, which is very cool. And it's very fun, they have like, almost feels like carnival concessions, and then like these comfy Adirondack chairs in a, in front of a big screen. [00:37:57] +The conference starts on a Thursday morning, so the night before on Wednesday, we're gonna have a React documentary screening. There's a rooftop cinema club on Miami Beach, which is obviously a rooftop cinema, which is very cool. And it's very fun, they have like, almost feels like carnival concessions, and then like these comfy Adirondack chairs in a, in front of a big screen. [37:57] -We're gonna have some networking. We're gonna screen the React documentary, and then afterwards we're going to have Ida Bechtle, who was on the Reactiflux. For the documentary, Ida and Christopher Trudeau are both going to do a live short Q&A with Sunil Pai. [00:38:13] +We're gonna have some networking. We're gonna screen the React documentary, and then afterwards we're going to have Ida Bechtle, who was on the Reactiflux. For the documentary, Ida and Christopher Trudeau are both going to do a live short Q&A with Sunil Pai. [38:13] -So they're gonna kind of have like a Q&A conversation for about 15 minutes after the documentary, and then you'll be able to network with them after the documentary screening as well. And it's just such a fun environment. [00:38:25] +So they're gonna kind of have like a Q&A conversation for about 15 minutes after the documentary, and then you'll be able to network with them after the documentary screening as well. And it's just such a fun environment. [38:25] -And we're also gonna have like a, a DJ who's a really cool DJ because they're actually like, South Florida, founder, entrepreneur, community builder person. And then they like have like the DJ thing too going. So it's like a really cool person to meet. And also do a great job DJing. So she's gonna DJ for the opening party and she's gonna DJ for the after party, which is at the backyard, at Marsai hotel, which is just this gorgeous hotel on the beach. [00:38:53] +And we're also gonna have like a, a DJ who's a really cool DJ because they're actually like, South Florida, founder, entrepreneur, community builder person. And then they like have like the DJ thing too going. So it's like a really cool person to meet. And also do a great job DJing. So she's gonna DJ for the opening party and she's gonna DJ for the after party, which is at the backyard, at Marsai hotel, which is just this gorgeous hotel on the beach. [38:53] -if you ever see any pictures of React Miami or the videos of React Miami with this kind of like outdoor boardwalk kind of thing with like a shallow pool and like these lily pad platforms, that's the Marsai Hotel. We did our opening brunch there last year and now we're doing our after party again. [00:39:11] +if you ever see any pictures of React Miami or the videos of React Miami with this kind of like outdoor boardwalk kind of thing with like a shallow pool and like these lily pad platforms, that's the Marsai Hotel. We did our opening brunch there last year and now we're doing our after party again. [39:11] -DJ Lovely uh, is gonna be DJing that as well. It's just this really cool backyard chill area and the beach is like right on the other side of the gate and it's just like, so cool. So those are kind of the extra little gems. [00:39:25] +DJ Lovely uh, is gonna be DJing that as well. It's just this really cool backyard chill area and the beach is like right on the other side of the gate and it's just like, so cool. So those are kind of the extra little gems. [39:25] -**Carl Vitullo:** Yeah, that sounds pretty awesome. The opening and closing party especially, that sounds like something not to miss. [00:39:32] +**Carl Vitullo:** Yeah, that sounds pretty awesome. The opening and closing party especially, that sounds like something not to miss. [39:32] -**Michelle Bakels:** Yes. [00:39:33] +**Michelle Bakels:** Yes. [39:33] -**Carl Vitullo:** Cool. Well, we're coming up on an hour here. Yeah, Michelle, thank you so much for coming out. This has been a really great talking to you about React Miami and conferences in general. [00:39:40] +**Carl Vitullo:** Cool. Well, we're coming up on an hour here. Yeah, Michelle, thank you so much for coming out. This has been a really great talking to you about React Miami and conferences in general. [39:40] -**Michelle Bakels:** Thank you. Yeah, it was like definitely fun to have this conversation and like I said, an hour ago or so, I could talk about React Miami forever, so I enjoyed it. [00:39:52] +**Michelle Bakels:** Thank you. Yeah, it was like definitely fun to have this conversation and like I said, an hour ago or so, I could talk about React Miami forever, so I enjoyed it. [39:52] ## Where can people learn more? -**Carl Vitullo:** For sure. Yeah. Well, where can people find more information about either what you're doing or the conference itself? [00:39:58] +**Carl Vitullo:** For sure. Yeah. Well, where can people find more information about either what you're doing or the conference itself? [39:58] -**Michelle Bakels:** you have some good, perfect links here in the chat. So reactmiami.com is our website. ReactMiamiConf is our Twitter, where we post everything first. We're also on Instagram at React Miami Conf. And then for me on Twitter at Michelle Bakels. So you got the best links already up [00:40:18] +**Michelle Bakels:** you have some good, perfect links here in the chat. So reactmiami.com is our website. ReactMiamiConf is our Twitter, where we post everything first. We're also on Instagram at React Miami Conf. And then for me on Twitter at Michelle Bakels. So you got the best links already up [40:18] -**Carl Vitullo:** Perfect. Excellent. Yeah. Thanks so much for coming out. It's been really great talking to you. [00:40:21] +**Carl Vitullo:** Perfect. Excellent. Yeah. Thanks so much for coming out. It's been really great talking to you. [40:21] -**Michelle Bakels:** Of course. Thank you. [00:40:23] +**Michelle Bakels:** Of course. Thank you. [40:23] **Carl Vitullo (editing):** All right. Thanks for listening! If this has piqued your interest, it is not too late to get a ticket, though I'm not so sure about flights and hotels. If you do grab one, at reactmiami.com, make sure you use our discount code, REACTIFLUX10. Thanks so much for listening! diff --git a/src/transcripts/sunil-pai_mark-erikson_rewrites.md b/src/transcripts/sunil-pai_mark-erikson_rewrites.md index 0350ec0..7189729 100644 --- a/src/transcripts/sunil-pai_mark-erikson_rewrites.md +++ b/src/transcripts/sunil-pai_mark-erikson_rewrites.md @@ -11,418 +11,418 @@ people: "[Mark Erikson](https://twitter.com/acemarke) and [Sunil Pai](https://tw ## Introductions -**Carl Vitullo:** Thanks so much for joining us for another Office Hours in Reactiflux. I'm here today with Mark Erickson, acemarke, and Sunil Pai, threepointone. Mark. I'm sure you all know Mark. He's been here for years! [00:00:10] +**Carl Vitullo:** Thanks so much for joining us for another Office Hours in Reactiflux. I'm here today with Mark Erickson, acemarke, and Sunil Pai, threepointone. Mark. I'm sure you all know Mark. He's been here for years! [00:10] -Many of you may know Sunil Pai. He's been on the React Core team. He worked at Facebook, he worked at CloudFlare , he has worked at a bunch of places and given a bunch of conference talks and is currently doing his own startup party kit for interactive multi-player experiences. Sunil, you want to introduce yourself a little bit. [00:00:28] +Many of you may know Sunil Pai. He's been on the React Core team. He worked at Facebook, he worked at CloudFlare , he has worked at a bunch of places and given a bunch of conference talks and is currently doing his own startup party kit for interactive multi-player experiences. Sunil, you want to introduce yourself a little bit. [00:28] -**Sunil Pai:** But you did such a good job! [00:00:29] +**Sunil Pai:** But you did such a good job! [00:29] -Hey. Hi. Yeah, my name's Sunil. I did all those things. I'm super excited to be talking about rewrites because, mostly, we don't even talk about product engineering and social media anyway. A lot of the attention goes to libraries and design patterns and well, a bunch of hyped up stuff. [00:00:45] +Hey. Hi. Yeah, my name's Sunil. I did all those things. I'm super excited to be talking about rewrites because, mostly, we don't even talk about product engineering and social media anyway. A lot of the attention goes to libraries and design patterns and well, a bunch of hyped up stuff. [00:45] -But product engineering is what drives the world and rewrites are such an important part of it, and I wanted to share some of my experiences. Also, I get to hang with my buddy Mark. Hi Mark. [00:00:56] +But product engineering is what drives the world and rewrites are such an important part of it, and I wanted to share some of my experiences. Also, I get to hang with my buddy Mark. Hi Mark. [00:56] -**Mark Erikson:** Yo! [00:00:57] +**Mark Erikson:** Yo! [00:57] -**Carl Vitullo:** Yeah, definitely agree. Rewrites are just a very real part of managing tech debt over a product that's going to be used and maintained over a period of years. So I think they approach inevitability as a product continues to be maintained. [00:01:11] +**Carl Vitullo:** Yeah, definitely agree. Rewrites are just a very real part of managing tech debt over a product that's going to be used and maintained over a period of years. So I think they approach inevitability as a product continues to be maintained. [01:11] ## First rewrite -**Carl Vitullo:** Sunil, so what was the first rewrite project that crossed your path in your career? [00:01:16] +**Carl Vitullo:** Sunil, so what was the first rewrite project that crossed your path in your career? [01:16] -**Sunil Pai:** The first big one was when I joined Yahoo in late 2010, early 2011. Yahoo at the time was going through a not so great period, that they'd just gotten a new CEO and everyone was happy with him because he used to be the ex-CTO of PayPal. [00:01:33] +**Sunil Pai:** The first big one was when I joined Yahoo in late 2010, early 2011. Yahoo at the time was going through a not so great period, that they'd just gotten a new CEO and everyone was happy with him because he used to be the ex-CTO of PayPal. [01:33] -But then one day in the news, I think some. Investor was trying to take over the board or something, discovered that he had faked his computer engineering degree, so he got fired for it. It was hilarious, it was so dramatic. But then my favorite CEO of all time took over Yahoo, Marisa Meyers, she's so cool. [00:01:51] +But then one day in the news, I think some. Investor was trying to take over the board or something, discovered that he had faked his computer engineering degree, so he got fired for it. It was hilarious, it was so dramatic. But then my favorite CEO of all time took over Yahoo, Marisa Meyers, she's so cool. [01:51] -In the middle of that, we were rewriting Yahoo Maps to move away from being a fully Yahoo product to using the tiles from Nokia as a provider and. That was a fun project. [00:02:02] +In the middle of that, we were rewriting Yahoo Maps to move away from being a fully Yahoo product to using the tiles from Nokia as a provider and. That was a fun project. [02:02] -It was also an interesting time for the company. Fun fact, if I'm right, Yahoo Maps and Google Maps actually launched within 24 hours of each other. Some, some point during the two thousands, but Google just, yeah, but Google just killed it. They did such a great job. Anyway but this was my first job doing a rewrite, and I was worried, but I learned a bunch of things right then how to do it without collapsing and failing. [00:02:25] +It was also an interesting time for the company. Fun fact, if I'm right, Yahoo Maps and Google Maps actually launched within 24 hours of each other. Some, some point during the two thousands, but Google just, yeah, but Google just killed it. They did such a great job. Anyway but this was my first job doing a rewrite, and I was worried, but I learned a bunch of things right then how to do it without collapsing and failing. [02:25] -But that's, that's the first one that I did. That's, that's my first one. [00:02:28] +But that's, that's the first one that I did. That's, that's my first one. [02:28] -**Carl Vitullo:** And how long had you been working as a professional developer at that point? [00:02:31] +**Carl Vitullo:** And how long had you been working as a professional developer at that point? [02:31] -**Sunil Pai:** I had been a professional software engineer for about seven years by then. [00:02:36] +**Sunil Pai:** I had been a professional software engineer for about seven years by then. [02:36] -**Carl Vitullo:** Oh wow. Okay. So pretty established. [00:02:39] +**Carl Vitullo:** Oh wow. Okay. So pretty established. [02:39] -**Mark Erikson:** You actually got to do new stuff for a while. [00:02:41] +**Mark Erikson:** You actually got to do new stuff for a while. [02:41] -**Sunil Pai:** I did get to do new stuff, of course. When I started off as a JavaScript engineer, it wasn't even considered real engineering. It was widgets, and we were the worst paid in the office for a while. [00:02:52] +**Sunil Pai:** I did get to do new stuff, of course. When I started off as a JavaScript engineer, it wasn't even considered real engineering. It was widgets, and we were the worst paid in the office for a while. [02:52] ## Some web dev history -**Sunil Pai:** And honestly, that was great because people just left you alone and you could learn. I remember when Firebug 0.1 was launched, it was incredible, like just such a great day. For the younger folks in the audience, before you had your fancy dev tools, you had to use window.alert() to actually debug your code and see what the values were, sometimes there were bugs that didn't show up when you used alerts. So it was a lot of trial and error to build these applications. [00:03:16] +**Sunil Pai:** And honestly, that was great because people just left you alone and you could learn. I remember when Firebug 0.1 was launched, it was incredible, like just such a great day. For the younger folks in the audience, before you had your fancy dev tools, you had to use window.alert() to actually debug your code and see what the values were, sometimes there were bugs that didn't show up when you used alerts. So it was a lot of trial and error to build these applications. [03:16] -I don't think that was the concept of a rewrite at the time. I think it was always burn everything down and let's just do a new thing. So the, it wasn't really a rewrite. People just used to build stuff and then build it again. Yahoo had a way more serious way of approaching front end programming. They had their own module system, bundlers, delivery and insight. [00:03:37] +I don't think that was the concept of a rewrite at the time. I think it was always burn everything down and let's just do a new thing. So the, it wasn't really a rewrite. People just used to build stuff and then build it again. Yahoo had a way more serious way of approaching front end programming. They had their own module system, bundlers, delivery and insight. [03:37] -And that was one of the reasons a rewrite could make sense because we could actually say, Hey, let's work on these modules first. Hey, let's make an architecture diagram where these things point to these things. And thankfully I could write JavaScript professionally by that time, so it wasn't too hard. I think it was good. [00:03:54] +And that was one of the reasons a rewrite could make sense because we could actually say, Hey, let's work on these modules first. Hey, let's make an architecture diagram where these things point to these things. And thankfully I could write JavaScript professionally by that time, so it wasn't too hard. I think it was good. [03:54] ## Mark's refactor experience -**Carl Vitullo:** For sure. Yeah. Mark, let me throw it over to you . So you've mentioned doing a lot of refactors and like major maintenance work in your career. Could you just talk about that sort of at a high level for a minute? [00:04:05] +**Carl Vitullo:** For sure. Yeah. Mark, let me throw it over to you . So you've mentioned doing a lot of refactors and like major maintenance work in your career. Could you just talk about that sort of at a high level for a minute? [04:05] -**Mark Erikson:** Yeah, so right before we started, I was actually jotting down a list and trying to trace what time have I actually spent doing rewrites. I think basically I've spent about half my career at least doing rewrites or migrations or another [00:04:19] +**Mark Erikson:** Yeah, so right before we started, I was actually jotting down a list and trying to trace what time have I actually spent doing rewrites. I think basically I've spent about half my career at least doing rewrites or migrations or another [04:19] -2011 and 2012, I built a brand new app using GWT, Google Web Toolkit, which was a Java to JavaScript compiler. 2016, I went back and I replaced the GWT client entirely with React and Redux. 2017, the Backbone app that I was working on needed some new features, but I got frustrated with Backbone and figured out how to put React and Redux in the middle of all the Backbone. [00:04:46] +2011 and 2012, I built a brand new app using GWT, Google Web Toolkit, which was a Java to JavaScript compiler. 2016, I went back and I replaced the GWT client entirely with React and Redux. 2017, the Backbone app that I was working on needed some new features, but I got frustrated with Backbone and figured out how to put React and Redux in the middle of all the Backbone. [04:46] -2019 we got permission to finish migrating our Backbone app to React and Redux, and there was another team's GWT app that we were going to completely replace the client with React and Redux. We spent a year prototyping that, had some good progress, then those projects got canceled entirely. [00:05:04] +2019 we got permission to finish migrating our Backbone app to React and Redux, and there was another team's GWT app that we were going to completely replace the client with React and Redux. We spent a year prototyping that, had some good progress, then those projects got canceled entirely. [05:04] -I got switched over to be the team lead for an existing internal tool that was built with the classical MEAN stack, so Angular one on the client side and Express on the backend. And we spent the next two years migrating the client side to be to use the Next framework with React, Redux and TypeScript on the front end and converting the backend Express app to be TypeScript. [00:05:30] +I got switched over to be the team lead for an existing internal tool that was built with the classical MEAN stack, so Angular one on the client side and Express on the backend. And we spent the next two years migrating the client side to be to use the Next framework with React, Redux and TypeScript on the front end and converting the backend Express app to be TypeScript. [05:30] -And then in 2022, I joined Replay, and the Replay code base started as a copy paste of the Firefox dev tools. It used React and Redux, but it was very old school React and Redux from like 2015. And so we spent the next nine months modernizing that, deleting a lot of code, converting the entire code base TypeScript modernizing the Redux and bringing in really, really fancy stuff like alpha level React suspense things. [00:05:59] +And then in 2022, I joined Replay, and the Replay code base started as a copy paste of the Firefox dev tools. It used React and Redux, but it was very old school React and Redux from like 2015. And so we spent the next nine months modernizing that, deleting a lot of code, converting the entire code base TypeScript modernizing the Redux and bringing in really, really fancy stuff like alpha level React suspense things. [05:59] -So yeah, I've, I've spent at least as much time doing a rewrite or a migration of some kind as I have spent actually getting to build anything new in shiny. [00:06:08] +So yeah, I've, I've spent at least as much time doing a rewrite or a migration of some kind as I have spent actually getting to build anything new in shiny. [06:08] -**Carl Vitullo:** Yeah. Wow. That's a lot of rewrites and major refactor projects through your career. [00:06:13] +**Carl Vitullo:** Yeah. Wow. That's a lot of rewrites and major refactor projects through your career. [06:13] -Rewrites are definitely very fraught. I don't think I've ever been on a project that was branded as a major rewrite that was successful. I did work one place that transitioned from Backbone to React, but that was a gradual transition, not a rewrite. [00:06:28] +Rewrites are definitely very fraught. I don't think I've ever been on a project that was branded as a major rewrite that was successful. I did work one place that transitioned from Backbone to React, but that was a gradual transition, not a rewrite. [06:28] -Sunil, I really liked the points you raised about like product engineering and the reality of rewrites as a necessary part of engineering. [00:06:36] +Sunil, I really liked the points you raised about like product engineering and the reality of rewrites as a necessary part of engineering. [06:36] ## Zero cost feedback loops -**Sunil Pai:** I've been thinking about this ever since we started talking about it on Twitter. I think my one line banger for this is, rewrites are possible if you have a zero cost feedback loop. And what I mean by that is, at any point of time, you should be able to demonstrate what the status of the existing project is, but also the work in progress is. [00:06:56] +**Sunil Pai:** I've been thinking about this ever since we started talking about it on Twitter. I think my one line banger for this is, rewrites are possible if you have a zero cost feedback loop. And what I mean by that is, at any point of time, you should be able to demonstrate what the status of the existing project is, but also the work in progress is. [06:56] -So you'd be like, Hey, I'm, I'm trying out something new. Have a look at it. Can you share it very simply with a link to something. Are you able to get feedback on something before it's deployed? Are you able to deploy everything immediately to a smaller audience? And is it easy to revert a change? [00:07:13] +So you'd be like, Hey, I'm, I'm trying out something new. Have a look at it. Can you share it very simply with a link to something. Are you able to get feedback on something before it's deployed? Are you able to deploy everything immediately to a smaller audience? And is it easy to revert a change? [07:13] -So this is what I call zero cost feedback. So if you can do this, that means that you can do course corrections, not just every sprint, and not just every day. Like you can do course corrections every hour if you want to. [00:07:26] +So this is what I call zero cost feedback. So if you can do this, that means that you can do course corrections, not just every sprint, and not just every day. Like you can do course corrections every hour if you want to. [07:26] ## Sunil's two largest rewrites -**Sunil Pai:** So the two projects that I think about for this are the two biggest rewrites that I've done, so one is we rewrote an e-commerce website, myntra.com, which is a very big apparel, clothing site in India. It got acquired by Flip Card simply because we scaled. Those were great days, and that was at the point of time when every PHP site was being rewritten with Node just so that it could scale. And we had to do that without shutting down the site. Like you, you can't say, Hey, come back in six months. You still need to have sales. [00:07:53] +**Sunil Pai:** So the two projects that I think about for this are the two biggest rewrites that I've done, so one is we rewrote an e-commerce website, myntra.com, which is a very big apparel, clothing site in India. It got acquired by Flip Card simply because we scaled. Those were great days, and that was at the point of time when every PHP site was being rewritten with Node just so that it could scale. And we had to do that without shutting down the site. Like you, you can't say, Hey, come back in six months. You still need to have sales. [07:53] -The second one was Wrangler, which is the CLI for CloudFlare workers. That's another situation where we are like, shit. The existing cli, it wasn't particularly bad, but it was incredibly hard to iterate on. [00:08:06] +The second one was Wrangler, which is the CLI for CloudFlare workers. That's another situation where we are like, shit. The existing cli, it wasn't particularly bad, but it was incredibly hard to iterate on. [08:06] -Like it was built with Rust and it was fast-ish, but it didn't really matter because it was mostly IO bound, and the one part of the thing that should have been in Rust was the bundler, but they used webpack instead, which is actually much slower. So we flipped it and we redid the entire CLI with TypeScript and used ESBuild as the bundler instead. So it made everything faster. [00:08:26] +Like it was built with Rust and it was fast-ish, but it didn't really matter because it was mostly IO bound, and the one part of the thing that should have been in Rust was the bundler, but they used webpack instead, which is actually much slower. So we flipped it and we redid the entire CLI with TypeScript and used ESBuild as the bundler instead. So it made everything faster. [08:26] -But I remember the way we did both these projects, which is from day one, we started doing demos and, Hey, do you wanna see a cool trick? Imagine if you could use Wrangler without a configuration file, and we just infer everything. [00:08:38] +But I remember the way we did both these projects, which is from day one, we started doing demos and, Hey, do you wanna see a cool trick? Imagine if you could use Wrangler without a configuration file, and we just infer everything. [08:38] -So you start off with the, "wow, look at how great the experience could be," and then start filling in those features. And on the e-commerce side of thing, it was a, "Hey, how quickly can we put up a much quicker shop?" Every E-commerce site has like five pages. It has a homepage, it has a search page, it has a details page, it has a cart and a checkout, roughly speaking. [00:08:56] +So you start off with the, "wow, look at how great the experience could be," and then start filling in those features. And on the e-commerce side of thing, it was a, "Hey, how quickly can we put up a much quicker shop?" Every E-commerce site has like five pages. It has a homepage, it has a search page, it has a details page, it has a cart and a checkout, roughly speaking. [08:56] -So we started off with a search page because that's where most of the SEO juice would land. So we figured, if we could fix that, then we could work on the other parts really quickly. Being able to make a setup where we are like, "Hey, for every PR we can make a deploy preview that you can check if you want to and give feedback on." [00:09:13] +So we started off with a search page because that's where most of the SEO juice would land. So we figured, if we could fix that, then we could work on the other parts really quickly. Being able to make a setup where we are like, "Hey, for every PR we can make a deploy preview that you can check if you want to and give feedback on." [09:13] -Vercel has now actually formalized this by not only having preview URLs, but also having comments on previews. I don't know if you've seen this. It's such a great feature, by the way. Phenomenal stuff. I think that's why they did it. [00:09:24] +Vercel has now actually formalized this by not only having preview URLs, but also having comments on previews. I don't know if you've seen this. It's such a great feature, by the way. Phenomenal stuff. I think that's why they did it. [09:24] -With the Wrangler cli, we used to publish every commit to a beta tag. We'd go into the community Discord and tell a bunch of people, "Hey, like, you wanna try something new? Just do `npx wrangler@beta this thing`." [00:09:34] +With the Wrangler cli, we used to publish every commit to a beta tag. We'd go into the community Discord and tell a bunch of people, "Hey, like, you wanna try something new? Just do `npx wrangler@beta this thing`." [09:34] -if you are doing sprints, that would mean in a year you got about 26 chances for reviews and course correction. But if you do every commit, that means you have about a thousand chances at course correction. So that's a 20, 40 x in increase in opportunities to fix the thing. [00:09:51] +if you are doing sprints, that would mean in a year you got about 26 chances for reviews and course correction. But if you do every commit, that means you have about a thousand chances at course correction. So that's a 20, 40 x in increase in opportunities to fix the thing. [09:51] -And I think that's the thing I wanted to talk about today, which is that's how you do rewrites. You don't do rewrites by saying, Hey, we are disappearing for six months, and we'll come up with something that looks exactly the same, but better for some reason. The trick is to just iterate like mad. What do you think? [00:10:06] +And I think that's the thing I wanted to talk about today, which is that's how you do rewrites. You don't do rewrites by saying, Hey, we are disappearing for six months, and we'll come up with something that looks exactly the same, but better for some reason. The trick is to just iterate like mad. What do you think? [10:06] -**Carl Vitullo:** Yeah, I really like that framing. I hadn't really considered about sprints versus commits and opportunities for review, but I think that's a really good way to think about it. It's so many more opportunities to get feedback. And what you also said about where those successful rewrites in your career came from, it sounds like they all started from a real point of friction for users. [00:10:27] +**Carl Vitullo:** Yeah, I really like that framing. I hadn't really considered about sprints versus commits and opportunities for review, but I think that's a really good way to think about it. It's so many more opportunities to get feedback. And what you also said about where those successful rewrites in your career came from, it sounds like they all started from a real point of friction for users. [10:27] -There was some technical reason why the current solution was not working as well as it could have for users and by making small demos of what improvements could look like and then working to get those into a suitable replacement. That does seem like a, a much more successful way to approach a rewrite than saying, "ah, this is old! We need something new!" And vanishing for six months, like you said. [00:10:51] +There was some technical reason why the current solution was not working as well as it could have for users and by making small demos of what improvements could look like and then working to get those into a suitable replacement. That does seem like a, a much more successful way to approach a rewrite than saying, "ah, this is old! We need something new!" And vanishing for six months, like you said. [10:51] ## Mark's experience, government project timelines -**Mark Erikson:** Funny, I'm definitely not gonna disagree, but it is kind of funny that my own career has had a somewhat different arc and experience in those terms. And a lot of it's because I spent the majority of my career working at a large government contractor where we would typically do development cycles that were six to eight months, maybe even like a year long. [00:11:12] +**Mark Erikson:** Funny, I'm definitely not gonna disagree, but it is kind of funny that my own career has had a somewhat different arc and experience in those terms. And a lot of it's because I spent the majority of my career working at a large government contractor where we would typically do development cycles that were six to eight months, maybe even like a year long. [11:12] -And even after that, there would be several more months of testing cycles and whatnot before the software finally got deployed. And on top of that, we were generally building internal tools, so we didn't have chances to show things off to customers and whatnot. [00:11:27] +And even after that, there would be several more months of testing cycles and whatnot before the software finally got deployed. And on top of that, we were generally building internal tools, so we didn't have chances to show things off to customers and whatnot. [11:27] -So a couple of the, a couple of the things that I worked on like the rewrite that I did in 2016 I was actually able to basically disappear for like six to eight months and work on that stuff. Or the project we're working on in 2019 was going to be a ground up rewrite of the two different clients ,and we had all of 2019 to do prototyping and proof of concepting, which started to look an awful lot like real development, but can't do that cuz contract says we're not allowed to do development. [00:11:55] +So a couple of the, a couple of the things that I worked on like the rewrite that I did in 2016 I was actually able to basically disappear for like six to eight months and work on that stuff. Or the project we're working on in 2019 was going to be a ground up rewrite of the two different clients ,and we had all of 2019 to do prototyping and proof of concepting, which started to look an awful lot like real development, but can't do that cuz contract says we're not allowed to do development. [11:55] -And we were going to spend all of 2020 officially executing on that development. So very different environment from what you were describing but to kind of go along and, and support the point that you were making, the internal tool that I worked on in 20 and 21 was a live app. It was still an internal tool with a relatively limited user base, but we had actual people using it and as we were trained to do that, angular to next migration. [00:12:24] +And we were going to spend all of 2020 officially executing on that development. So very different environment from what you were describing but to kind of go along and, and support the point that you were making, the internal tool that I worked on in 20 and 21 was a live app. It was still an internal tool with a relatively limited user base, but we had actual people using it and as we were trained to do that, angular to next migration. [12:24] -We had to do it in a way that the site never went down and that we didn't, you know, go off and disappear for six months and be utterly unresponsive to user feedback. So we had to do it in a very iterative kind of way where every time we did a release, we were making an improvement and, being able to respond to, you know, bug fixes and that kind of thing. [00:12:45] +We had to do it in a way that the site never went down and that we didn't, you know, go off and disappear for six months and be utterly unresponsive to user feedback. So we had to do it in a very iterative kind of way where every time we did a release, we were making an improvement and, being able to respond to, you know, bug fixes and that kind of thing. [12:45] -And then the same thing with Replay, where we completely gutted and rebuilt the client side bit by bit over the course of last year. And it was always functional, but it was always getting better as we went. [00:12:59] +And then the same thing with Replay, where we completely gutted and rebuilt the client side bit by bit over the course of last year. And it was always functional, but it was always getting better as we went. [12:59] ## Replay, Mark's current work -**Sunil Pai:** Actually, I'd love to hear more about your experiences in Replay, by the way. It's just such a fascinating product. Company and all my favorite people are inside it, so I tell, tell us more. I want, I wanna hear more. [00:13:11] +**Sunil Pai:** Actually, I'd love to hear more about your experiences in Replay, by the way. It's just such a fascinating product. Company and all my favorite people are inside it, so I tell, tell us more. I want, I wanna hear more. [13:11] -**Mark Erikson:** Okay, fine! twisted my arm, okay! [00:13:15] +**Mark Erikson:** Okay, fine! twisted my arm, okay! [13:15] -All All right, so quick sales pitch. I currently work for Replay, which is a time traveling debugger for JavaScript applications. And the basic sales pitch is that you download our special forks of either Firefox currently or Chrome coming shortly. You open up your website, you press the record button, use your program for a couple minutes, like, you know, press the button that accidentally makes everything crash, and hit save, and it uploads the recording to the cloud. [00:13:44] +All All right, so quick sales pitch. I currently work for Replay, which is a time traveling debugger for JavaScript applications. And the basic sales pitch is that you download our special forks of either Firefox currently or Chrome coming shortly. You open up your website, you press the record button, use your program for a couple minutes, like, you know, press the button that accidentally makes everything crash, and hit save, and it uploads the recording to the cloud. [13:44] -You go to our website and log in, open up the recording, and now you see what appears to be the Firefox dev tools as an app in the browser because it basically did start as the Firefox dev tools as an app in the browser. [00:13:58] +You go to our website and log in, open up the recording, and now you see what appears to be the Firefox dev tools as an app in the browser because it basically did start as the Firefox dev tools as an app in the browser. [13:58] -But instead of debugging and like only being able to, you know, step forward, step forward, step forward — oops, I went too far. You now have the ability to jump to any point in time in the recording, and you can add print statements, which are kind of like console logs, but with superpowers. So if I put a print statement on a line that got run 10 times, I will now see 10 different messages from that line over in the console area because it's evaluating that at every time the line of code ran. [00:14:35] +But instead of debugging and like only being able to, you know, step forward, step forward, step forward — oops, I went too far. You now have the ability to jump to any point in time in the recording, and you can add print statements, which are kind of like console logs, but with superpowers. So if I put a print statement on a line that got run 10 times, I will now see 10 different messages from that line over in the console area because it's evaluating that at every time the line of code ran. [14:35] -And then you can jump to any one of those points. You can hover over the variables and see what their values were at that point in time. You can do the usual browser or the debugger, step in, step out, step over. And it's. It is amazing. I love using it as a programmer because it is possible to debug things that would've just been completely unsolvable otherwise. [00:14:59] +And then you can jump to any one of those points. You can hover over the variables and see what their values were at that point in time. You can do the usual browser or the debugger, step in, step out, step over. And it's. It is amazing. I love using it as a programmer because it is possible to debug things that would've just been completely unsolvable otherwise. [14:59] -And I'm having a ton of fun building features for this. I've gotten to build some really cool things, like just within the last couple weeks I built a new experimental feature that checks to see if you're debugging an app that uses React. And if you are it reverse engineers every time you called Reacts set state function and shows that as a list over in the sidebar. [00:15:24] +And I'm having a ton of fun building features for this. I've gotten to build some really cool things, like just within the last couple weeks I built a new experimental feature that checks to see if you're debugging an app that uses React. And if you are it reverse engineers every time you called Reacts set state function and shows that as a list over in the sidebar. [15:24] -And it also works the same way if you did a Redux dispatch too, because it turns out that every React render funnels through the same function. And so I look at the internals of React and sort of backtrack that and figure out what part of your code triggered the update. [00:15:38] +And it also works the same way if you did a Redux dispatch too, because it turns out that every React render funnels through the same function. And so I look at the internals of React and sort of backtrack that and figure out what part of your code triggered the update. [15:38] -**Sunil Pai:** So tell us about the rewrite. If I understand right, the rewrite was for perf reasons, right? It was starting to get a little unusable. [00:15:46] +**Sunil Pai:** So tell us about the rewrite. If I understand right, the rewrite was for perf reasons, right? It was starting to get a little unusable. [15:46] -**Mark Erikson:** It was about maintainability. [00:15:47] +**Mark Erikson:** It was about maintainability. [15:47] -So Replay's client started as a literal copy paste of the source code for the entire Firefox browser dev tools as it existed about three years ago. And that code was React and Redux, but it was primarily written around 2015, 2016. So very early in Redux's life cycle and just when React was starting to get popular. And there were a lot of problems with this. One is that the code itself was extremely verbose. [00:16:17] +So Replay's client started as a literal copy paste of the source code for the entire Firefox browser dev tools as it existed about three years ago. And that code was React and Redux, but it was primarily written around 2015, 2016. So very early in Redux's life cycle and just when React was starting to get popular. And there were a lot of problems with this. One is that the code itself was extremely verbose. [16:17] -Think about all the old school Redux you've seen that has, you know, switch case statements everywhere and, you know, lots of verbose action creators and spread operators and all that sort of thing. It was using the old school React Connect api. It was using class components, and in fact the Firefox dev tools had some unique build constraints. Like for the longest time they could not use Babel to to compile JSX. And so there were some very old components that were still using this really, really ancient thing called React dom factories, where you called functions named div and span and li, instead of having the JSX angle bracket tags, [00:16:59] +Think about all the old school Redux you've seen that has, you know, switch case statements everywhere and, you know, lots of verbose action creators and spread operators and all that sort of thing. It was using the old school React Connect api. It was using class components, and in fact the Firefox dev tools had some unique build constraints. Like for the longest time they could not use Babel to to compile JSX. And so there were some very old components that were still using this really, really ancient thing called React dom factories, where you called functions named div and span and li, instead of having the JSX angle bracket tags, [16:59] -The Firefox dev tools code, once upon a time, was written using the Flow type checking syntax. They had actually stripped all the Flow types out sometime before we uh, Replay started. So the code was all plain JavaScript. It was about 150,000 lines of code, and it was using a bunch of weird patterns that were also specific to the Firefox dev tools, where there were these mutable class instances that were wrappers around fetching data from the backend protocol that did the analysis of like, here's the contents of an object. [00:17:34] +The Firefox dev tools code, once upon a time, was written using the Flow type checking syntax. They had actually stripped all the Flow types out sometime before we uh, Replay started. So the code was all plain JavaScript. It was about 150,000 lines of code, and it was using a bunch of weird patterns that were also specific to the Firefox dev tools, where there were these mutable class instances that were wrappers around fetching data from the backend protocol that did the analysis of like, here's the contents of an object. [17:34] -So when I joined the code base was open source and you could even go back and look at how it looked, you know, a year ago. I knew it was React and Redux. I could look at it and say, okay, here's all the ways that Modern Redux Code can, you know, make this easier to work with. And so I started doing some of that work shortly after I joined. [00:17:52] +So when I joined the code base was open source and you could even go back and look at how it looked, you know, a year ago. I knew it was React and Redux. I could look at it and say, okay, here's all the ways that Modern Redux Code can, you know, make this easier to work with. And so I started doing some of that work shortly after I joined. [17:52] -There was about 20% of the code base that had been written in the previous couple years specific to Replay that was relatively modern. It was TypeScript, mostly used function components and some React Redux hooks. But it was more specific to the new Replay features that had been built. So like all, all the existing debugger functionality basically was still the old school code. [00:18:15] +There was about 20% of the code base that had been written in the previous couple years specific to Replay that was relatively modern. It was TypeScript, mostly used function components and some React Redux hooks. But it was more specific to the new Replay features that had been built. So like all, all the existing debugger functionality basically was still the old school code. [18:15] -So I began trying to modernize the Redex code. I began trying to migrate large chunks of the codebase to TypeScript piece by piece. And later on in the year, Brian Vaughn, who used to be on the React team, joined and he started rewriting things like the the print statement and breakpoint functionality. [00:18:35] +So I began trying to modernize the Redex code. I began trying to migrate large chunks of the codebase to TypeScript piece by piece. And later on in the year, Brian Vaughn, who used to be on the React team, joined and he started rewriting things like the the print statement and breakpoint functionality. [18:35] -And he began to introduce new patterns like React suspense for data fetching. Late in like, kinda like around August, September I went in and spent a couple months trying to eradicate that mutable class data wrapper instance pattern. For a while I didn't think I was gonna be able to do it. And then by chipping away at it piece by piece, I finally isolated the last parts down and was able to rip them out in one giant swoop. [00:19:02] +And he began to introduce new patterns like React suspense for data fetching. Late in like, kinda like around August, September I went in and spent a couple months trying to eradicate that mutable class data wrapper instance pattern. For a while I didn't think I was gonna be able to do it. And then by chipping away at it piece by piece, I finally isolated the last parts down and was able to rip them out in one giant swoop. [19:02] -It was a nine month effort, but by the time we were done, the code base was down to about 90,000 lines, including a lot of the new functionality we'd rewritten after deleting like 40,000 lines of code that was entirely dead. [00:19:15] +It was a nine month effort, but by the time we were done, the code base was down to about 90,000 lines, including a lot of the new functionality we'd rewritten after deleting like 40,000 lines of code that was entirely dead. [19:15] -All but a couple thousand lines of the code base are now TypeScript. It's better organized. It's much more readable, and we now actually have a good foundation and we've been able to spend the last couple months moving forward and building shiny new features on top of that. [00:19:29] +All but a couple thousand lines of the code base are now TypeScript. It's better organized. It's much more readable, and we now actually have a good foundation and we've been able to spend the last couple months moving forward and building shiny new features on top of that. [19:29] ## Rewrites on small teams -**Carl Vitullo:** Nice. Heck yeah. And so you mentioned yourself and Brian Vaughn. How many other engineers were working on the code base while this rewrite was underway? [00:19:38] +**Carl Vitullo:** Nice. Heck yeah. And so you mentioned yourself and Brian Vaughn. How many other engineers were working on the code base while this rewrite was underway? [19:38] -**Mark Erikson:** Really just me and Brian. There we have, we have another teammate Holger who kind of splits his time between the front end and the back end. But for the most part, it's the two of us. [00:19:48] +**Mark Erikson:** Really just me and Brian. There we have, we have another teammate Holger who kind of splits his time between the front end and the back end. But for the most part, it's the two of us. [19:48] -**Carl Vitullo:** I've always thought having a smaller team makes things like rewrites so much easier. One of the major struggles, anytime I've tried to make a major code change that approaches a rewrite, separate from all of the technical challenges of actually changing the code. If you have other teammates who are still used to the, the old patterns, used to the old ways of doing things, then you have a social problem there as well. That just adds on the challenge. [00:20:11] +**Carl Vitullo:** I've always thought having a smaller team makes things like rewrites so much easier. One of the major struggles, anytime I've tried to make a major code change that approaches a rewrite, separate from all of the technical challenges of actually changing the code. If you have other teammates who are still used to the, the old patterns, used to the old ways of doing things, then you have a social problem there as well. That just adds on the challenge. [20:11] ## Suspense rewrite at Facebook -**Carl Vitullo:** Yeah. Sunil, I wanna toss up your way cuz we, your experience sounds like it's, has included some larger teams doing big rewrites. You mentioned in the prep, the suspense rewrite at Facebook. Can you talk about that a little bit? [00:20:23] +**Carl Vitullo:** Yeah. Sunil, I wanna toss up your way cuz we, your experience sounds like it's, has included some larger teams doing big rewrites. You mentioned in the prep, the suspense rewrite at Facebook. Can you talk about that a little bit? [20:23] -**Sunil Pai:** Oh, that was that was a) fascinating, b) it was also one of the secret things nobody wanted to do, so what happened is, and at some point somebody's going to correct me about these details. But this is how I remember it. React had finished the fiber rewrite, and that underway working on the suspense. [00:20:39] +**Sunil Pai:** Oh, that was that was a) fascinating, b) it was also one of the secret things nobody wanted to do, so what happened is, and at some point somebody's going to correct me about these details. But this is how I remember it. React had finished the fiber rewrite, and that underway working on the suspense. [20:39] -Hooks were already out there, and in fact, they were already being used inside Facebook for all their other projects. But suspense it turned out, required a bit of a rewrite from scratch. They'd tried a bunch to introduce it to existing code, and it worked well for some parts. [00:20:57] +Hooks were already out there, and in fact, they were already being used inside Facebook for all their other projects. But suspense it turned out, required a bit of a rewrite from scratch. They'd tried a bunch to introduce it to existing code, and it worked well for some parts. [20:57] -But they realized… so the reason that time slicing, suspense, et cetera, was built into React. The Facebook use case that drove it is that on facebook.com, especially on the main feed, you have code from a number of teams on the same page. Specifically because there are different kinds of cards and panels. [00:21:15] +But they realized… so the reason that time slicing, suspense, et cetera, was built into React. The Facebook use case that drove it is that on facebook.com, especially on the main feed, you have code from a number of teams on the same page. Specifically because there are different kinds of cards and panels. [21:15] -There'll be one, which is a… man, I don't even use Facebook that much, but you know what I mean, like every card is slightly different. And they're usually built by like different teams. These are teams spread across the world, and there are thousands of engineers. So you can end up in a position where, for example, one, not badly coded, but let's say a CPU intense card, can make every other card suffer and it's hard to coordinate. [00:21:37] +There'll be one, which is a… man, I don't even use Facebook that much, but you know what I mean, like every card is slightly different. And they're usually built by like different teams. These are teams spread across the world, and there are thousands of engineers. So you can end up in a position where, for example, one, not badly coded, but let's say a CPU intense card, can make every other card suffer and it's hard to coordinate. [21:37] -So there's a good computer science concept to solve this of cooperative multitasking, where you try to adjust CPU across different concerns based on priorities and whatnot. So one thing can't just take over completely. [00:21:51] +So there's a good computer science concept to solve this of cooperative multitasking, where you try to adjust CPU across different concerns based on priorities and whatnot. So one thing can't just take over completely. [21:51] -A big offshoot of this was the Scheduler project, which was supposed to become a web standard, and the team still talks to the Chrome team, I think, well, I don't know. It's been a couple of years, so I don't know if they're still doing that. But at some point it'll become a first class API that the browser provides you. [00:22:06] +A big offshoot of this was the Scheduler project, which was supposed to become a web standard, and the team still talks to the Chrome team, I think, well, I don't know. It's been a couple of years, so I don't know if they're still doing that. But at some point it'll become a first class API that the browser provides you. [22:06] -But that was effectively invented inside React. I think Andrew did a lot of that work, as did Sebastian, but Andrew did a lot of it, from what I remember, And anyway, so, but for that to work, as you can imagine, the entire page has to be written with using the new React and components that take advantage of it with suspense and deferred transitions and what have you. [00:22:30] +But that was effectively invented inside React. I think Andrew did a lot of that work, as did Sebastian, but Andrew did a lot of it, from what I remember, And anyway, so, but for that to work, as you can imagine, the entire page has to be written with using the new React and components that take advantage of it with suspense and deferred transitions and what have you. [22:30] -So the whole team just started building that out. It was kind of fun because they also took the opportunity to change the whole design up. If you remember, it used to be the whole blues and grays before it became this bright white, well, they have a dark mode as well. So that was a project that I kind of got to see from the outside, but I didn't really write any of the code myself. [00:22:47] +So the whole team just started building that out. It was kind of fun because they also took the opportunity to change the whole design up. If you remember, it used to be the whole blues and grays before it became this bright white, well, they have a dark mode as well. So that was a project that I kind of got to see from the outside, but I didn't really write any of the code myself. [22:47] -I did some research for them on images and stuff, but it was fascinating to see probably one of the world's biggest websites/homepages being rewritten from scratch. And the way they did that is, because they have the world's best analytics, metrics, and dev tooling available, they have the best feature flagging system so they can push out, everybody merges to main. [00:23:11] +I did some research for them on images and stuff, but it was fascinating to see probably one of the world's biggest websites/homepages being rewritten from scratch. And the way they did that is, because they have the world's best analytics, metrics, and dev tooling available, they have the best feature flagging system so they can push out, everybody merges to main. [23:11] -There's no branch-based developer workflow inside Facebook, but they do it with feature flags on and they turn on the feature flags for a small group of people and do measurements and see if it worked fine, and if it did, they turn it on for a larger group of people, et cetera. [00:23:24] +There's no branch-based developer workflow inside Facebook, but they do it with feature flags on and they turn on the feature flags for a small group of people and do measurements and see if it worked fine, and if it did, they turn it on for a larger group of people, et cetera. [23:24] -If there are errors on the page, they have some mad science which is able to target which diff/PR actually caused it, and potentially automatically back it out. And just a lot of feedback because everything was in the same repo. It's the, their big giant mono repo thing with 200,000 components. [00:23:42] +If there are errors on the page, they have some mad science which is able to target which diff/PR actually caused it, and potentially automatically back it out. And just a lot of feedback because everything was in the same repo. It's the, their big giant mono repo thing with 200,000 components. [23:42] -All these sound like ridiculous numbers to me, by the way. [00:23:44] +All these sound like ridiculous numbers to me, by the way. [23:44] -But because it was that way, it meant that anybody could be like, Hey, I think I can make this a little better. I see, I see a common problem. And and that's kind of the nature of how. Facebook's code base also grows, like even though everybody has ownership, you can actually just send a PR that makes something better. [00:23:59] +But because it was that way, it meant that anybody could be like, Hey, I think I can make this a little better. I see, I see a common problem. And and that's kind of the nature of how. Facebook's code base also grows, like even though everybody has ownership, you can actually just send a PR that makes something better. [23:59] -One of my favorite things in the two and a half years that I spent there was seeing Sophie Albert's touches everywhere. Like if you just do a blame on any arbitrary piece of code, you'll probably see Sophie somewhere there, just like, "Hey, I made this better and fixed performance by 60% or fixed this bug." it was incredible to see. [00:24:17] +One of my favorite things in the two and a half years that I spent there was seeing Sophie Albert's touches everywhere. Like if you just do a blame on any arbitrary piece of code, you'll probably see Sophie somewhere there, just like, "Hey, I made this better and fixed performance by 60% or fixed this bug." it was incredible to see. [24:17] -But the point I'm making is if you want to undertake a rewrite of facebook.com, it's not enough to say, "Hey, we have the will." You also need the tooling and all these guardrails around you so that you can do it right, that you can iterate so quickly. They would've been up the river. [00:24:34] +But the point I'm making is if you want to undertake a rewrite of facebook.com, it's not enough to say, "Hey, we have the will." You also need the tooling and all these guardrails around you so that you can do it right, that you can iterate so quickly. They would've been up the river. [24:34] -Is that the phrase? I don't know what the phrase is. [00:24:35] +Is that the phrase? I don't know what the phrase is. [24:35] -**Carl Vitullo (editing):** There's two sayings he might be thinking of here. There's "up the river," a saying that originates from Sing-Sing Prison, which was "up the river" from New York City. But he might also be thinking of "up shit creek without a paddle" which is probably the one I'd go with. [00:24:47] +**Carl Vitullo (editing):** There's two sayings he might be thinking of here. There's "up the river," a saying that originates from Sing-Sing Prison, which was "up the river" from New York City. But he might also be thinking of "up shit creek without a paddle" which is probably the one I'd go with. [24:47] -**Sunil Pai:** They would've been a shit show if they didn't have tooling like that. That's. [00:24:51] +**Sunil Pai:** They would've been a shit show if they didn't have tooling like that. That's. [24:51] ## Tooling support to make rewrites work -**Carl Vitullo:** The feature flagging definitely sounds like a prerequisite for any kind of major re-architecture for an app like Facebook that needs to keep working for everyone at all times. The tooling you mentioned of being able to assign a new error back to a specific change, that sounds pretty incredible and it definitely sounds like a huge enabling factor for a team, or, for an organization as large as Facebook with so many engineers all touching the same code that definitely seems like a massive win for iteration speed. If you can safely push changes and know that, if the change doesn't work, it will be caught and repaired quickly. [00:25:29] +**Carl Vitullo:** The feature flagging definitely sounds like a prerequisite for any kind of major re-architecture for an app like Facebook that needs to keep working for everyone at all times. The tooling you mentioned of being able to assign a new error back to a specific change, that sounds pretty incredible and it definitely sounds like a huge enabling factor for a team, or, for an organization as large as Facebook with so many engineers all touching the same code that definitely seems like a massive win for iteration speed. If you can safely push changes and know that, if the change doesn't work, it will be caught and repaired quickly. [25:29] -**Sunil Pai:** At the very least, even if it's not repaired, even if it isolates it down to, let's say, five PRs instead of say, the one, right? Every Facebook employee has one of the work phones or whatever, I think it was called Banana phone, I forget what it called, it's the version of PagerDuty or something. Like you'll get screamed at by your phone where you're like, oh shit, something's going wrong, so you can like hop on and fix it immediately. Instead of waiting for a whole day where you are losing revenue and you, and it's affecting only some group of people somewhere in the world because you didn't do your LTR CSS right, or some shit like that. [00:26:04] +**Sunil Pai:** At the very least, even if it's not repaired, even if it isolates it down to, let's say, five PRs instead of say, the one, right? Every Facebook employee has one of the work phones or whatever, I think it was called Banana phone, I forget what it called, it's the version of PagerDuty or something. Like you'll get screamed at by your phone where you're like, oh shit, something's going wrong, so you can like hop on and fix it immediately. Instead of waiting for a whole day where you are losing revenue and you, and it's affecting only some group of people somewhere in the world because you didn't do your LTR CSS right, or some shit like that. [26:04] -**Carl Vitullo (editing):** Quick note: LTR that he's referencing here is left to right, as contrasted with RTL or right to left, which is a text rendering, which is used in some languages like Arabic, Hebrew, Uighur, or a bunch of other languages. RTL rendering is notorious for causing subtle bugs because of deeply embedded assumptions developers have about layout direction. So for instance flexbox layout needs to be reversed in RTL rendering. [00:26:29] +**Carl Vitullo (editing):** Quick note: LTR that he's referencing here is left to right, as contrasted with RTL or right to left, which is a text rendering, which is used in some languages like Arabic, Hebrew, Uighur, or a bunch of other languages. RTL rendering is notorious for causing subtle bugs because of deeply embedded assumptions developers have about layout direction. So for instance flexbox layout needs to be reversed in RTL rendering. [26:29] -**Sunil Pai:** The only way you can do this is with automated like analytics and mon monitoring. It's impossible to do it without that. It was during that, in a couple of other projects that I really understood the value of building that. [00:26:39] +**Sunil Pai:** The only way you can do this is with automated like analytics and mon monitoring. It's impossible to do it without that. It was during that, in a couple of other projects that I really understood the value of building that. [26:39] -So, for example, even React, right? Like React does a public release like, twice a year max, right? But internally in Facebook, they. Actually, when I joined, they used to do it roughly once a week, but then they fixed… I think Brian actually made the builds a lot faster. I don't remember who did it. But they got it so that they could push it pretty much every day. And sometimes we'd do it two or three times a day, that you'd push it out to facebook.com. And the way to do that is to say, "Hey, we're pushing it out. But we are enabling it literally only for the six people on the React team so that we get to see it, nobody else would see it." [00:27:11] +So, for example, even React, right? Like React does a public release like, twice a year max, right? But internally in Facebook, they. Actually, when I joined, they used to do it roughly once a week, but then they fixed… I think Brian actually made the builds a lot faster. I don't remember who did it. But they got it so that they could push it pretty much every day. And sometimes we'd do it two or three times a day, that you'd push it out to facebook.com. And the way to do that is to say, "Hey, we're pushing it out. But we are enabling it literally only for the six people on the React team so that we get to see it, nobody else would see it." [27:11] -And then we'd be like, okay, fine. I'm gonna push it out to some other people. During a meeting with review, we'd be like, "Hey, which feature flags have we forgotten to turn off," or what have you. Which is why every time a React release comes out more often than less, most questions are answered Yes. [00:27:25] +And then we'd be like, okay, fine. I'm gonna push it out to some other people. During a meeting with review, we'd be like, "Hey, which feature flags have we forgotten to turn off," or what have you. Which is why every time a React release comes out more often than less, most questions are answered Yes. [27:25] -With the reason that the hooks are not called use mount, use unmount is because we tried it and it didn't work. That's why we went to the model that they have right now, et cetera. So, yeah, you need, you need some kind of feedback loop. [00:27:36] +With the reason that the hooks are not called use mount, use unmount is because we tried it and it didn't work. That's why we went to the model that they have right now, et cetera. So, yeah, you need, you need some kind of feedback loop. [27:36] -If you're a smaller team, and if your users are developers, the good thing about it is they'll just abuse you on Twitter. Like that's a good signal as well. So, that's, that, that's an option as well. As long as you have some kind of feedback loop, you are, you're just gold. You, you can move fairly quickly. [00:27:51] +If you're a smaller team, and if your users are developers, the good thing about it is they'll just abuse you on Twitter. Like that's a good signal as well. So, that's, that, that's an option as well. As long as you have some kind of feedback loop, you are, you're just gold. You, you can move fairly quickly. [27:51] -**Carl Vitullo:** A feedback loop that includes the end users of what you're changing? [00:27:55] +**Carl Vitullo:** A feedback loop that includes the end users of what you're changing? [27:55] -**Sunil Pai:** Exactly, yes. [00:27:56] +**Sunil Pai:** Exactly, yes. [27:56] -**Carl Vitullo:** That definitely seems essential. I guess fundamentally the point of a rewrite is to improve things without degrading the experience for anyone. So definitely can see why tight feedback loops would be super important there. [00:28:08] +**Carl Vitullo:** That definitely seems essential. I guess fundamentally the point of a rewrite is to improve things without degrading the experience for anyone. So definitely can see why tight feedback loops would be super important there. [28:08] -**Mark Erikson:** Yeah, on a, on a much, much smaller scale than that the. The Angular app that I was working on in, in 20 and 21 I ended up building the world's tiniest feature flag system. It was one file with a single JavaScript object that mapped flag names to booleans. It was all built in at compiled time and, you know, there was no way to like, you know, dynamically change it or roll it out to different subsets of users. [00:28:34] +**Mark Erikson:** Yeah, on a, on a much, much smaller scale than that the. The Angular app that I was working on in, in 20 and 21 I ended up building the world's tiniest feature flag system. It was one file with a single JavaScript object that mapped flag names to booleans. It was all built in at compiled time and, you know, there was no way to like, you know, dynamically change it or roll it out to different subsets of users. [28:34] -But even just having that one little file and the, you know, is flag enabled function made it possible for us to build certain things and, and iterate on those over time. [00:28:44] +But even just having that one little file and the, you know, is flag enabled function made it possible for us to build certain things and, and iterate on those over time. [28:44] -**Carl Vitullo:** I think feature flagging is one of those very essential responsibilities within a code base that once you grow beyond a certain number of users and a certain number of engineers, it just becomes a hard requirement. [00:28:56] +**Carl Vitullo:** I think feature flagging is one of those very essential responsibilities within a code base that once you grow beyond a certain number of users and a certain number of engineers, it just becomes a hard requirement. [28:56] ## Zero cost feedback loops, revisited -**Carl Vitullo:** Yeah. Sunil, I wanted to go back to what you said about the zero cost. Was it zero cost rewrites? [00:29:03] +**Carl Vitullo:** Yeah. Sunil, I wanted to go back to what you said about the zero cost. Was it zero cost rewrites? [29:03] -**Sunil Pai:** Zero cost feedback loops… or some shit. I I made a phrase that sounded very smart. We'll have to check the tape later. [00:29:09] +**Sunil Pai:** Zero cost feedback loops… or some shit. I I made a phrase that sounded very smart. We'll have to check the tape later. [29:09] -**Carl Vitullo (editing):** I checked the tape and it is in fact, zero cost feedback loops! [00:29:13] +**Carl Vitullo (editing):** I checked the tape and it is in fact, zero cost feedback loops! [29:13] -**Carl Vitullo:** Could you talk a little bit more about how you go about designing zero cost feedback loops and how to get them set up and working effectively? [00:29:20] +**Carl Vitullo:** Could you talk a little bit more about how you go about designing zero cost feedback loops and how to get them set up and working effectively? [29:20] -**Sunil Pai:** There are like two classes of tools. The let me tell you about the one that I did it from scratch for. So this was when we were building the CLI for CloudFlare workers called Wrangler. I spun up the Rust code base and the first time I did a build, I think it took something like 12 minutes. [00:29:34] +**Sunil Pai:** There are like two classes of tools. The let me tell you about the one that I did it from scratch for. So this was when we were building the CLI for CloudFlare workers called Wrangler. I spun up the Rust code base and the first time I did a build, I think it took something like 12 minutes. [29:34] -And I was like, this is insane. I think they had a dev mode or something, but I was too stupid to know how to write and uh, I used Rust anyway. And this is for me, where, I come from a world where not only can I press F5 or Command R and refresh my browser and immediately see changes, in fact, now our build systems actually push changes with hot reload and stuff and React actually made that so cool, right? That for me is how I would like to program. I would like to type some code and immediately see what the change is. [00:30:01] +And I was like, this is insane. I think they had a dev mode or something, but I was too stupid to know how to write and uh, I used Rust anyway. And this is for me, where, I come from a world where not only can I press F5 or Command R and refresh my browser and immediately see changes, in fact, now our build systems actually push changes with hot reload and stuff and React actually made that so cool, right? That for me is how I would like to program. I would like to type some code and immediately see what the change is. [30:01] -So the first form of feedback loop you want to do is local. Like how fast can you write code and see the changes yourself and choosing tools that have a compile cycle are not compatible with this. This was also why I was so happy when I discovered React Native and realized I wouldn't have to write Objective C or Java for any part of my life. [00:30:21] +So the first form of feedback loop you want to do is local. Like how fast can you write code and see the changes yourself and choosing tools that have a compile cycle are not compatible with this. This was also why I was so happy when I discovered React Native and realized I wouldn't have to write Objective C or Java for any part of my life. [30:21] -The first time I demoed hot reloading in a mobile app to other people inside Myntra, they thought I was cheating. Like they thought I was a liar. It was an incredible feeling. So choosing JavaScript actually like makes that so simple. And not only did I use choose JavaScript, I also decided to go full in on ES build at the time. [00:30:39] +The first time I demoed hot reloading in a mobile app to other people inside Myntra, they thought I was cheating. Like they thought I was a liar. It was an incredible feeling. So choosing JavaScript actually like makes that so simple. And not only did I use choose JavaScript, I also decided to go full in on ES build at the time. [30:39] -So ES build is the fastest bundler out there right now, the trade-offs are that you can't do some things with it, right? Like you can't do some fancy code level transforms and extraction. [00:30:51] +So ES build is the fastest bundler out there right now, the trade-offs are that you can't do some things with it, right? Like you can't do some fancy code level transforms and extraction. [30:51] -It turns out it didn't matter in this case. Oh, it also doesn't support CSS module bundle splitting or some, something like that. It didn't matter for the CLI. [00:30:58] +It turns out it didn't matter in this case. Oh, it also doesn't support CSS module bundle splitting or some, something like that. It didn't matter for the CLI. [30:58] -But what it did mean is I could set up a thing where I could write some code and immediately run the CLI again. Like I could have a command that just ran on every change and it was instantaneous. The same kind of experience that I have when I developed front end applications. I got that when I was building a CLI as well. [00:31:17] +But what it did mean is I could set up a thing where I could write some code and immediately run the CLI again. Like I could have a command that just ran on every change and it was instantaneous. The same kind of experience that I have when I developed front end applications. I got that when I was building a CLI as well. [31:17] -That meant that my local feedback loop was, "Okay, is this working? Is this not working? Does this look good? Does this not look good?" It was instantaneous. That's one thing. The second thing I did is I set it up so that every commit to the repository got published to NPM with a beta tag. [00:31:34] +That meant that my local feedback loop was, "Okay, is this working? Is this not working? Does this look good? Does this not look good?" It was instantaneous. That's one thing. The second thing I did is I set it up so that every commit to the repository got published to NPM with a beta tag. [31:34] -This was awesome because… I'm also a big fan of the NPX command, I don't know how many people here know this, but you don't really need to npm install a utility to start using it in your terminal. You can literally say, NPX, say Wrangler, and it'll automatically install it for you. But what that meant is I could Make a PR, land it and on the team chat, I'd be like, "Hey, run this command in your terminal and tell me what you think." [00:32:00] +This was awesome because… I'm also a big fan of the NPX command, I don't know how many people here know this, but you don't really need to npm install a utility to start using it in your terminal. You can literally say, NPX, say Wrangler, and it'll automatically install it for you. But what that meant is I could Make a PR, land it and on the team chat, I'd be like, "Hey, run this command in your terminal and tell me what you think." [32:00] -`npx wrangler@beta-dev some-file-or-the-other`. So be being able to share that with people became a zero cost thing without having to do a full npm release and change logs and all that, no. We just immediately just started shipping everything that got committed. That's the second thing. [00:32:15] +`npx wrangler@beta-dev some-file-or-the-other`. So be being able to share that with people became a zero cost thing without having to do a full npm release and change logs and all that, no. We just immediately just started shipping everything that got committed. That's the second thing. [32:15] -In fact, we actually got this brilliant dude on the team named Greg Bribe. You might see him on Twitter, et cetera. He set it up so that it published to a private reg a, when I say private registry, just just a CloudFlare worker, in fact. It published GitHub artifacts to that so that you could use Wrangler before it was even committed to the main repository, it would do a publish for a PR. [00:32:37] +In fact, we actually got this brilliant dude on the team named Greg Bribe. You might see him on Twitter, et cetera. He set it up so that it published to a private reg a, when I say private registry, just just a CloudFlare worker, in fact. It published GitHub artifacts to that so that you could use Wrangler before it was even committed to the main repository, it would do a publish for a PR. [32:37] -So you could try a PR before it even got committed, which was also great for feedback because, well, obviously, right, like even for people who are trying to contribute and stuff, they'd be like, "Hey, you can try out this command to try out this change that I've built out for you." So that feedback loop got better. [00:32:52] +So you could try a PR before it even got committed, which was also great for feedback because, well, obviously, right, like even for people who are trying to contribute and stuff, they'd be like, "Hey, you can try out this command to try out this change that I've built out for you." So that feedback loop got better. [32:52] -One of the lessons I learned from not doing so well when I was in Facebook was that I need to communicate more. So I've become an over communicative asshole. Like if you look at me the wrong way, I'll show you a demo of what I'm working on right now. [00:33:04] +One of the lessons I learned from not doing so well when I was in Facebook was that I need to communicate more. So I've become an over communicative asshole. Like if you look at me the wrong way, I'll show you a demo of what I'm working on right now. [33:04] -Like, Hey, hey, can, hey, can you, quickly jump on the call right now? Here's a link. Just come on, just come on for like 30 seconds. I wanna show you something. And I did this with my CTO, I did this with my SVP, I did this with the PMs, I did this with the team, just nonstop. You could wake me up and I'd do a demo for you, like, in, in the middle of my sleep or whatever. [00:33:20] +Like, Hey, hey, can, hey, can you, quickly jump on the call right now? Here's a link. Just come on, just come on for like 30 seconds. I wanna show you something. And I did this with my CTO, I did this with my SVP, I did this with the PMs, I did this with the team, just nonstop. You could wake me up and I'd do a demo for you, like, in, in the middle of my sleep or whatever. [33:20] -But what this meant, especially because we were doing this in 2021, 2022, when we are still working from home, is we had this absurd level of transparency into the Wrangler project from anyone in the team. I would keep demoing it everywhere. Everybody knew what was going on. There was no, oh shit, they're spending six months to rewrite wrangle. [00:33:38] +But what this meant, especially because we were doing this in 2021, 2022, when we are still working from home, is we had this absurd level of transparency into the Wrangler project from anyone in the team. I would keep demoing it everywhere. Everybody knew what was going on. There was no, oh shit, they're spending six months to rewrite wrangle. [33:38] -They're like, no, it's been three days and Sunil hasn't shown us a demo yet. He's either ill or he is dead. Uh, So by making sure we had all of these things going, and that's just it. Anytime we did a release, I made it a point to drop a thing in the main chat channel saying, "Hey, the Wrangler 0.41 is out, and here are the new things in it, and here's a GIF for it." [00:33:58] +They're like, no, it's been three days and Sunil hasn't shown us a demo yet. He's either ill or he is dead. Uh, So by making sure we had all of these things going, and that's just it. Anytime we did a release, I made it a point to drop a thing in the main chat channel saying, "Hey, the Wrangler 0.41 is out, and here are the new things in it, and here's a GIF for it." [33:58] -There's a level of presentation that you want to do to get people interested in it as well, so, even before we did a full launch, a lot of people were already using it because we did a beta launch six months into the thing which that was the public beta launch and people just started using it right then. [00:34:13] +There's a level of presentation that you want to do to get people interested in it as well, so, even before we did a full launch, a lot of people were already using it because we did a beta launch six months into the thing which that was the public beta launch and people just started using it right then. [34:13] -But by the time we did a full launch, it was just so solid. Like it worked super well. So that's what I mean, like you, you have to look at every single interaction of your workflow for building and sharing it with the world and say, "Hey, how do we make this dirt simple," like anybody should be able to use it. So that's what I did. [00:34:30] +But by the time we did a full launch, it was just so solid. Like it worked super well. So that's what I mean, like you, you have to look at every single interaction of your workflow for building and sharing it with the world and say, "Hey, how do we make this dirt simple," like anybody should be able to use it. So that's what I did. [34:30] -That's, and you can do this even with frontend apps, it's actually easier with frontend application. Like there's a reason why Vercel and Netlify have like preview URLs in your PR, because it's so powerful to say, Hey, we can have a look and decide what to do with this. Even if you're not in the same room or whatever. [00:34:46] +That's, and you can do this even with frontend apps, it's actually easier with frontend application. Like there's a reason why Vercel and Netlify have like preview URLs in your PR, because it's so powerful to say, Hey, we can have a look and decide what to do with this. Even if you're not in the same room or whatever. [34:46] -I would be surprised if every person here couldn't go back to whatever they were working on and say, "Hey, I think I can make this faster, this easier, this, can we just rethink this so that the feedback loop gets shorter?" That, I think, is, is key. That's what I think. [00:35:01] +I would be surprised if every person here couldn't go back to whatever they were working on and say, "Hey, I think I can make this faster, this easier, this, can we just rethink this so that the feedback loop gets shorter?" That, I think, is, is key. That's what I think. [35:01] -**Carl Vitullo:** Yeah, definitely. You know, you mentioned hot reloading and PR previews, both of those really became much more prevalent through my career. Like, I think I had three or four years of experience when Hot Reloading came out. You know, it became mainstream through React. I think Netlify did a lot of work for growing the mindshare of people realizing you can preview PRs. And both of those were seismic shifts for how productive I could be as an individual developer. [00:35:27] +**Carl Vitullo:** Yeah, definitely. You know, you mentioned hot reloading and PR previews, both of those really became much more prevalent through my career. Like, I think I had three or four years of experience when Hot Reloading came out. You know, it became mainstream through React. I think Netlify did a lot of work for growing the mindshare of people realizing you can preview PRs. And both of those were seismic shifts for how productive I could be as an individual developer. [35:27] ## Automation as a way to enable communication -**Carl Vitullo:** And I think what you're saying about all the communication you do in process of doing these rewrites and getting user feedback, it strikes me that by automating all of the deployment and building work and getting those as tight and fast as possible, it really frees you, you up, you as a human to do the more human side of that launch that you know, it lets you do that required communication because like you said, you need feedback and if you're spending, you know, 80% of your time writing the code, you only really have enough bandwidth to do one other thing. [00:36:04] +**Carl Vitullo:** And I think what you're saying about all the communication you do in process of doing these rewrites and getting user feedback, it strikes me that by automating all of the deployment and building work and getting those as tight and fast as possible, it really frees you, you up, you as a human to do the more human side of that launch that you know, it lets you do that required communication because like you said, you need feedback and if you're spending, you know, 80% of your time writing the code, you only really have enough bandwidth to do one other thing. [36:04] -So, if that one other thing is building and shipping the code, then I think your stores of energy are gonna be so much lower for the incredibly important communication side of things. [00:36:13] +So, if that one other thing is building and shipping the code, then I think your stores of energy are gonna be so much lower for the incredibly important communication side of things. [36:13] -**Sunil Pai:** Mm-hmm. Yeah. And you like, I don't know if it's apparent enough, but I have a massive ego. Like, I like it when like people look at my shit and whether it's good or not. Like I need the external validation. It's not a very healthy way to be, but it makes for good software. [00:36:28] +**Sunil Pai:** Mm-hmm. Yeah. And you like, I don't know if it's apparent enough, but I have a massive ego. Like, I like it when like people look at my shit and whether it's good or not. Like I need the external validation. It's not a very healthy way to be, but it makes for good software. [36:28] -**Carl Vitullo:** Well, you do keep making good shit. So, I think that ego's pretty well deserved. [00:36:32] +**Carl Vitullo:** Well, you do keep making good shit. So, I think that ego's pretty well deserved. [36:32] ## How to evaluate a possible rewrite -**Carl Vitullo:** I wanna bring this back a little bit to, as an individual developer, if I am on a team and I think that there is opportunity to rewrite something, you know, I, I see some user pain, I see some maintenance burden that I think is substantially slowing down development progress. [00:36:47] +**Carl Vitullo:** I wanna bring this back a little bit to, as an individual developer, if I am on a team and I think that there is opportunity to rewrite something, you know, I, I see some user pain, I see some maintenance burden that I think is substantially slowing down development progress. [36:47] -What do you think would be your first step to initiate a rewrite project? How would you think about framing that problem to others, to convince them that it's something that needs to happen? Or even identifying to yourself like, yes, this problem is important enough to undertake a large rewrite project. [00:37:05] +What do you think would be your first step to initiate a rewrite project? How would you think about framing that problem to others, to convince them that it's something that needs to happen? Or even identifying to yourself like, yes, this problem is important enough to undertake a large rewrite project. [37:05] -**Sunil Pai:** I think not only are you supposed to identify the problem and that's a big part of it anyway, it's like, "Hey, we have a problem." But you have to give people a glimpse of what's possible. Like you have to be, either you have to do it via prototype or you can even say, Hey, some other people are doing it this way, or what, what? [00:37:24] +**Sunil Pai:** I think not only are you supposed to identify the problem and that's a big part of it anyway, it's like, "Hey, we have a problem." But you have to give people a glimpse of what's possible. Like you have to be, either you have to do it via prototype or you can even say, Hey, some other people are doing it this way, or what, what? [37:24] -Whatever, because. One of the big things about a rewrite is getting buy-in in the beginning, and that is so hard to do for rewrites right now, and understandably so because 9 out of 10 rewrites don't come from the right place I think. And I'm glad that I've had accountability checks in my life because I've proposed many rewrites that shouldn't have happened and gladly didn't happen as well. [00:37:44] +Whatever, because. One of the big things about a rewrite is getting buy-in in the beginning, and that is so hard to do for rewrites right now, and understandably so because 9 out of 10 rewrites don't come from the right place I think. And I'm glad that I've had accountability checks in my life because I've proposed many rewrites that shouldn't have happened and gladly didn't happen as well. [37:44] -Actively looking for buy-in also keeps you honest to yourself where you're like, "Okay, fine. I'm going to go up to the most serious person in my orbit of influence and see if I can convince them whether a rewrite is a good thing." In my situation, it was trying to convince Kenton Varda, the principal engineer of CloudFlare workers, and he thought it was a very bad idea. [00:38:05] +Actively looking for buy-in also keeps you honest to yourself where you're like, "Okay, fine. I'm going to go up to the most serious person in my orbit of influence and see if I can convince them whether a rewrite is a good thing." In my situation, it was trying to convince Kenton Varda, the principal engineer of CloudFlare workers, and he thought it was a very bad idea. [38:05] -So I was like, okay, fine. Let me demo an alternate Wrangler experience where we fix some of the other issues and then he was like, okay, fine. You know what, just try it for a while and let's see how it goes. So that for me counts as buy-in where I'm like, okay, fine. He didn't say no, it wasn't a clear yes, but he didn't say no. [00:38:21] +So I was like, okay, fine. Let me demo an alternate Wrangler experience where we fix some of the other issues and then he was like, okay, fine. You know what, just try it for a while and let's see how it goes. So that for me counts as buy-in where I'm like, okay, fine. He didn't say no, it wasn't a clear yes, but he didn't say no. [38:21] -And then I eventually convinced him like it worked. It was right, and he agreed as well. But getting buy-in does two things, right? One is it of course, it gives you the space to to execute, but also it gives you It means the people who gave you buy-in also are encouraging of you and willing to excuse some mistakes. [00:38:40] +And then I eventually convinced him like it worked. It was right, and he agreed as well. But getting buy-in does two things, right? One is it of course, it gives you the space to to execute, but also it gives you It means the people who gave you buy-in also are encouraging of you and willing to excuse some mistakes. [38:40] -Because if you go in instead saying, I'm gonna do this rewrite. I don't give a shit what any of you all are saying, I think it's the right thing to do. That means they're waiting for the first moment that you slip up. The moment you slip, make even the single mistake — and you will — they'll be like, well, you tried, sorry. We are done. We are shutting down this project. [00:38:55] +Because if you go in instead saying, I'm gonna do this rewrite. I don't give a shit what any of you all are saying, I think it's the right thing to do. That means they're waiting for the first moment that you slip up. The moment you slip, make even the single mistake — and you will — they'll be like, well, you tried, sorry. We are done. We are shutting down this project. [38:55] -So I think, I think there's a very human side of this that needs to be like, worked out before you start writing the code. [00:39:02] +So I think, I think there's a very human side of this that needs to be like, worked out before you start writing the code. [39:02] -**Mark Erikson:** Absolutely, yeah. And they're like, there's. There's a lot of considerations that have to go in, you know, like, why are you wanting to do the rewrite in the first place? I think certainly the JavaScript ecosystem has a sort of well-deserved and not good reputation for, there's a new framework coming out every five minutes, and everyone's busy rewriting things all the time. [00:39:22] +**Mark Erikson:** Absolutely, yeah. And they're like, there's. There's a lot of considerations that have to go in, you know, like, why are you wanting to do the rewrite in the first place? I think certainly the JavaScript ecosystem has a sort of well-deserved and not good reputation for, there's a new framework coming out every five minutes, and everyone's busy rewriting things all the time. [39:22] -It's true that new tools, new frameworks can offer advantages over the existing ones. But it's also true that just because a new tool exists doesn't mean you should automatically go throw away everything you've built and start chasing towards the new shiny. So you need to spend some time and consider like, what actual problems are we seeing in the code base? [00:39:43] +It's true that new tools, new frameworks can offer advantages over the existing ones. But it's also true that just because a new tool exists doesn't mean you should automatically go throw away everything you've built and start chasing towards the new shiny. So you need to spend some time and consider like, what actual problems are we seeing in the code base? [39:43] -Is it, the builds are too slow? Is it that the tool that we're using is end of life and will not be receiving any more updates? Is there a user facing problem that can only be addressed by a major re architecture and, you know, really consider the justifications for why you're wanting to do this, and then use that as part of that ammunition for convincing the rest of the team and management that it's worth doing. [00:40:09] +Is it, the builds are too slow? Is it that the tool that we're using is end of life and will not be receiving any more updates? Is there a user facing problem that can only be addressed by a major re architecture and, you know, really consider the justifications for why you're wanting to do this, and then use that as part of that ammunition for convincing the rest of the team and management that it's worth doing. [40:09] ## Smell tests for justifications -**Carl Vitullo:** Mark, are there any examples of justifications for rewrites that now don't pass your smell test? Say, a more junior engineer comes to you and says, I think we need to rewrite this because X. What are some examples of X that would give you pause, would make you ask them to think harder about it? [00:40:25] +**Carl Vitullo:** Mark, are there any examples of justifications for rewrites that now don't pass your smell test? Say, a more junior engineer comes to you and says, I think we need to rewrite this because X. What are some examples of X that would give you pause, would make you ask them to think harder about it? [40:25] -**Mark Erikson:** The biggest one I think I would have concerns with is, changing to a different tool or framework because it's being recommended by, I don't know, influencers on Twitter, YouTube, or like a hacker news post or something. Like, that's, that's what I was pointing to a second ago. [00:40:43] +**Mark Erikson:** The biggest one I think I would have concerns with is, changing to a different tool or framework because it's being recommended by, I don't know, influencers on Twitter, YouTube, or like a hacker news post or something. Like, that's, that's what I was pointing to a second ago. [40:43] -There are new tools coming out all the time and just because a new tool exists does not mean you should automatically shift over to it. Something we did a few times when I was at my previous company, was a trade study. So it was a, you know, lightly formalized process where you say like, we're considering like a range of possible tools that we might switch to, or even comparing like our current tool versus a set of different tools. [00:41:09] +There are new tools coming out all the time and just because a new tool exists does not mean you should automatically shift over to it. Something we did a few times when I was at my previous company, was a trade study. So it was a, you know, lightly formalized process where you say like, we're considering like a range of possible tools that we might switch to, or even comparing like our current tool versus a set of different tools. [41:09] -And you actually take the time to lay out a list of criteria that you're interested in, assign weights and scores to each of the different criteria. Try to do a non-biased evaluation of each of the different tools in the different categories, and then actually add up the scores and see like, which of these tools seems to be the best based on the criteria that we care about. [00:41:31] +And you actually take the time to lay out a list of criteria that you're interested in, assign weights and scores to each of the different criteria. Try to do a non-biased evaluation of each of the different tools in the different categories, and then actually add up the scores and see like, which of these tools seems to be the best based on the criteria that we care about. [41:31] -And the criteria could be anything from, how well does this tool seem to be supported versus like, how good is the documentation? How many other examples are there out there? You know, like actually taking the time to do your homework and make an informed decision rather than jumping on something just because you saw a demo somewhere. [00:41:51] +And the criteria could be anything from, how well does this tool seem to be supported versus like, how good is the documentation? How many other examples are there out there? You know, like actually taking the time to do your homework and make an informed decision rather than jumping on something just because you saw a demo somewhere. [41:51] -**Carl Vitullo:** Hey, I saw Mark Erickson and Sunil Pai recommended this tool. I think we should jump on it. [00:41:55] +**Carl Vitullo:** Hey, I saw Mark Erickson and Sunil Pai recommended this tool. I think we should jump on it. [41:55] -**Sunil Pai:** Yeah, don't listen to my recommendations on anything at this point. I, I, I feel so overwhelmed. Yeah. No. [00:42:02] +**Sunil Pai:** Yeah, don't listen to my recommendations on anything at this point. I, I, I feel so overwhelmed. Yeah. No. [42:02] -**Carl Vitullo:** for sure. Well, yeah. Sunil, I'd love to hear your response to that same question. What are some reasons to do a rewrite that you don't really buy anymore? [00:42:11] +**Carl Vitullo:** for sure. Well, yeah. Sunil, I'd love to hear your response to that same question. What are some reasons to do a rewrite that you don't really buy anymore? [42:11] -**Sunil Pai:** The one that I always get suspicious of is, it is faster and better in every way. And this is just actually, it's one derived away from influencer told me so, because what the influencer usually says, "Hey, it's faster and better in every way." And fundamentally speaking, this is not possible unless you change the laws of physics, right? [00:42:30] +**Sunil Pai:** The one that I always get suspicious of is, it is faster and better in every way. And this is just actually, it's one derived away from influencer told me so, because what the influencer usually says, "Hey, it's faster and better in every way." And fundamentally speaking, this is not possible unless you change the laws of physics, right? [42:30] -Like, why, what if you're telling me framework B is better and faster than framework A? Why does framework A not do it? What is the reason? If it's legacy, it's legacy if is this? But I need to understand at a very deep level why it doesn't do this. And can we retrofit that functionality onto framework A? Can we buy five years with it? [00:42:47] +Like, why, what if you're telling me framework B is better and faster than framework A? Why does framework A not do it? What is the reason? If it's legacy, it's legacy if is this? But I need to understand at a very deep level why it doesn't do this. And can we retrofit that functionality onto framework A? Can we buy five years with it? [42:47] -Because if you're saying that, then that means in five years A is doing that. And usually the answer is — and I hate using this phrasing, but it's true — it's because it hasn't been exposed to enough edge cases yet, to enough situations. It's actually not as broadly applicable simply because it hasn't been tried in as many separate scenarios yet the idea of being battle tested. [00:43:07] +Because if you're saying that, then that means in five years A is doing that. And usually the answer is — and I hate using this phrasing, but it's true — it's because it hasn't been exposed to enough edge cases yet, to enough situations. It's actually not as broadly applicable simply because it hasn't been tried in as many separate scenarios yet the idea of being battle tested. [43:07] -And it's because the moment you start doing that, you end up having… either you make a trade off in the system or you decide to not go towards that use case. Those are the two choices that you have, and that is what makes framework B more like framework A, the more time that passes. [00:43:21] +And it's because the moment you start doing that, you end up having… either you make a trade off in the system or you decide to not go towards that use case. Those are the two choices that you have, and that is what makes framework B more like framework A, the more time that passes. [43:21] -This is only slightly related. This is why I'm excited about Astro as a framework, because Astro very clearly has said, "Here are the four cases we are good for marketing, blogs, portfolios, e-commerce. Don't use this to build your fancy next interactive app." And that is a, such a brave decision. But oh, it is such a good decision because it means they can now focus that, and that they're telling you the trade-offs right there. [00:43:45] +This is only slightly related. This is why I'm excited about Astro as a framework, because Astro very clearly has said, "Here are the four cases we are good for marketing, blogs, portfolios, e-commerce. Don't use this to build your fancy next interactive app." And that is a, such a brave decision. But oh, it is such a good decision because it means they can now focus that, and that they're telling you the trade-offs right there. [43:45] -A framework that is honest about their use cases is telling you that trade-offs right there. And I, I trust tools that do that more than we're like, well, this is a new version of React called "Ne-act". Sure. Ne-act and it is better than React in every way. And you're like, really? Have you, are you sure? Are you sure? You're telling me you, you're smarter than Andrew? No, I'm not. I'm not so sure of that. Let's see. We'll, I'll keep an eye on you, but let's revisit this in six months. But yeah, people saying that solution B is better and faster in every way without anything novel changing for what caused the situation to happen. [00:44:19] +A framework that is honest about their use cases is telling you that trade-offs right there. And I, I trust tools that do that more than we're like, well, this is a new version of React called "Ne-act". Sure. Ne-act and it is better than React in every way. And you're like, really? Have you, are you sure? Are you sure? You're telling me you, you're smarter than Andrew? No, I'm not. I'm not so sure of that. Let's see. We'll, I'll keep an eye on you, but let's revisit this in six months. But yeah, people saying that solution B is better and faster in every way without anything novel changing for what caused the situation to happen. [44:19] -That's always nah, no. Nice. [00:44:22] +That's always nah, no. Nice. [44:22] -**Mark Erikson:** That's also the hazard with those proof of concept demos to show that a rewrite is feasible because proof of concept demo only has a fraction of the features and the use cases that the old code covered and of course it's gonna be faster, simpler, easier to look at cuz you aren't dealing with all the complexity that the existing system does. [00:44:44] +**Mark Erikson:** That's also the hazard with those proof of concept demos to show that a rewrite is feasible because proof of concept demo only has a fraction of the features and the use cases that the old code covered and of course it's gonna be faster, simpler, easier to look at cuz you aren't dealing with all the complexity that the existing system does. [44:44] -**Carl Vitullo:** Right. [00:44:45] +**Carl Vitullo:** Right. [44:45] ## Joel's Spolksy's cultural impact on rewrites -**Mark Erikson:** There's a classic article from a guy named Joel Spolsky who used to write a, a software blog that was very well known in influential like 15, 20 years ago. And he wrote an article way back in the day where he talked about the net, the Netscape folks rewriting Netscape source code. [00:45:05] +**Mark Erikson:** There's a classic article from a guy named Joel Spolsky who used to write a, a software blog that was very well known in influential like 15, 20 years ago. And he wrote an article way back in the day where he talked about the net, the Netscape folks rewriting Netscape source code. [45:05] -It was either Netscape or Firefox, one of the two early on and basically saying like, look, you stopped the world for a couple years, and in the process you've thrown away all the knowledge of the world that was embedded in your source code. And you've lost all that information. Like, yeah, that function was ugly, but that's because it solved like six different user facing bugs and now that's all gone. [00:45:28] +It was either Netscape or Firefox, one of the two early on and basically saying like, look, you stopped the world for a couple years, and in the process you've thrown away all the knowledge of the world that was embedded in your source code. And you've lost all that information. Like, yeah, that function was ugly, but that's because it solved like six different user facing bugs and now that's all gone. [45:28] -**Carl Vitullo:** Right. [00:45:28] +**Carl Vitullo:** Right. [45:28] -**Mark Erikson:** like you, you have to be very careful about both throwing away knowledge that was hard earned over time by the evolution of the system as well as the, you know, the lu of the new shiny and, oh look, this demo is fast and simple. And as Sunil said, well, yeah, it's because you haven't dealt with most of the complexity yet. [00:45:48] +**Mark Erikson:** like you, you have to be very careful about both throwing away knowledge that was hard earned over time by the evolution of the system as well as the, you know, the lu of the new shiny and, oh look, this demo is fast and simple. And as Sunil said, well, yeah, it's because you haven't dealt with most of the complexity yet. [45:48] -**Sunil Pai:** So that's Spolsky post itself, by the way, my bone to pick with that post is that people use that to dismiss all rewrites. And because the lesson from the post also is, oh shit, Netscape shouldn't have done a full rewrite, they should have done an incremental thing because that's just it; at the point, the browser wasn't even, particularly, they were not solving a real user problem, I think, with that rewrite. And of course it was the late nineties, people were on acid the whole time. I don't know. Right. [00:46:14] +**Sunil Pai:** So that's Spolsky post itself, by the way, my bone to pick with that post is that people use that to dismiss all rewrites. And because the lesson from the post also is, oh shit, Netscape shouldn't have done a full rewrite, they should have done an incremental thing because that's just it; at the point, the browser wasn't even, particularly, they were not solving a real user problem, I think, with that rewrite. And of course it was the late nineties, people were on acid the whole time. I don't know. Right. [46:14] -**Carl Vitullo:** Right, leading into the dot-com crash. [00:46:16] +**Carl Vitullo:** Right, leading into the dot-com crash. [46:16] -Sunil had to hop off the call at this point because we hit the hour and he had another meeting, but mark and I kept chatting for another few minutes. [00:46:23] +Sunil had to hop off the call at this point because we hit the hour and he had another meeting, but mark and I kept chatting for another few minutes. [46:23] ## Readability as a justification for rewriting -**Carl Vitullo:** I have one other thought I wanna say, I think for me, the top unjustified rewrite, you know, among my top worst reasons to do a rewrite is it's not readable. I think so many times, especially on smaller teams, and especially from I think less experienced developers, you join a new code base, you start trying to work on it and it's, it just feels hard. [00:46:47] +**Carl Vitullo:** I have one other thought I wanna say, I think for me, the top unjustified rewrite, you know, among my top worst reasons to do a rewrite is it's not readable. I think so many times, especially on smaller teams, and especially from I think less experienced developers, you join a new code base, you start trying to work on it and it's, it just feels hard. [46:47] -And I think that that is often seen as a justification for a rewrite. And this is something that I feel like I have had to overcome in my career. Just like I've worked at a bunch of different companies and I al so frequently, I've come in thought, "oh, this is garbage, we gotta start over!" Now, at this point in my career, I just feel like that is wrong 100% of the time. [00:47:05] +And I think that that is often seen as a justification for a rewrite. And this is something that I feel like I have had to overcome in my career. Just like I've worked at a bunch of different companies and I al so frequently, I've come in thought, "oh, this is garbage, we gotta start over!" Now, at this point in my career, I just feel like that is wrong 100% of the time. [47:05] -Give it 18 months to settle down before you decide that the code is the problem. Develop your experience with working with it and feel out the pain points a little bit more. [00:47:16] +Give it 18 months to settle down before you decide that the code is the problem. Develop your experience with working with it and feel out the pain points a little bit more. [47:16] -**Mark Erikson:** Yep. So a, a couple different waves of thought. With rewrites in general. And, and this goes back to the point I was making a minute ago about, you know, having all this existing knowledge of the system encoded in the existing code base. When you start a rewrite or a migration, it is very, very important to actually capture the intent and the purpose of the system. [00:47:42] +**Mark Erikson:** Yep. So a, a couple different waves of thought. With rewrites in general. And, and this goes back to the point I was making a minute ago about, you know, having all this existing knowledge of the system encoded in the existing code base. When you start a rewrite or a migration, it is very, very important to actually capture the intent and the purpose of the system. [47:42] -Whether it's like some combination of documentation and automated tests. So, for example, if you're, if you're doing a rewrite and you're looking at an existing feature There's probably a lot of code that is sitting around and some of it might not be necessary anymore. Maybe the systems requirements have changed over time and there's some code that is there handling the use case that isn't actually relevant. [00:48:09] +Whether it's like some combination of documentation and automated tests. So, for example, if you're, if you're doing a rewrite and you're looking at an existing feature There's probably a lot of code that is sitting around and some of it might not be necessary anymore. Maybe the systems requirements have changed over time and there's some code that is there handling the use case that isn't actually relevant. [48:09] -And in the rewrite we can safely drop that. But you have to know what requirements you're trying to match with the new system in order to know that it's safe to drop that old code. Or the flip side is you have to know here are the requirements we need to match and we need to make sure that we build equivalent functionality all the way through. [00:48:29] +And in the rewrite we can safely drop that. But you have to know what requirements you're trying to match with the new system in order to know that it's safe to drop that old code. Or the flip side is you have to know here are the requirements we need to match and we need to make sure that we build equivalent functionality all the way through. [48:29] -So being able to document the existing system and the current needs and requirements so that you can cross compare versus the old code and see what needs to be persisted is, is very, very critical. And then just, just as a general thing, I feel like as an industry, we really don't spend much time teaching people how to maintain code, how to deal with legacy systems, , how to do things that aren't just sitting down and building a new project from scratch. [00:48:55] +So being able to document the existing system and the current needs and requirements so that you can cross compare versus the old code and see what needs to be persisted is, is very, very critical. And then just, just as a general thing, I feel like as an industry, we really don't spend much time teaching people how to maintain code, how to deal with legacy systems, , how to do things that aren't just sitting down and building a new project from scratch. [48:55] -Like it's, it's great that tools will let you get up and started running and have something productive in five minutes with a single command, and that's good. But most of us are gonna spend our, the majority of our time working on systems that have been around for years. Tens of thousands of lines of code that were written by other people over time, two-thirds of those people aren't even at the company anymore, and learning how to work within existing systems is a critical skill and I, I really don't feel like we teach anything about that either in formal, you know, college, you know, CS degrees or even informally. [00:49:33] +Like it's, it's great that tools will let you get up and started running and have something productive in five minutes with a single command, and that's good. But most of us are gonna spend our, the majority of our time working on systems that have been around for years. Tens of thousands of lines of code that were written by other people over time, two-thirds of those people aren't even at the company anymore, and learning how to work within existing systems is a critical skill and I, I really don't feel like we teach anything about that either in formal, you know, college, you know, CS degrees or even informally. [49:33] -**Carl Vitullo:** Yeah, that's, that's a really good point. Working with Legacy Code, you know, legacy Code is a bit of a, a [00:49:39] +**Carl Vitullo:** Yeah, that's, that's a really good point. Working with Legacy Code, you know, legacy Code is a bit of a, a [49:39] -**Mark Erikson:** L Legacy Code is anything that I wrote more than five minutes ago. [00:49:44] +**Mark Erikson:** L Legacy Code is anything that I wrote more than five minutes ago. [49:44] -**Carl Vitullo:** Right. Right. Yeah. [00:49:46] +**Carl Vitullo:** Right. Right. Yeah. [49:46] -And that's, that is an essential skill. Reading other people's code, figuring out what their intentions were as they were writing it. Yeah. That is a, an incredibly important skill. [00:49:55] +And that's, that is an essential skill. Reading other people's code, figuring out what their intentions were as they were writing it. Yeah. That is a, an incredibly important skill. [49:55] -What you just said about how we emphasize new projects so much. Maybe that does incentivize people not to think about it, it, it biases them in favor of rewrites because we have so much of our brain, so much of the marketing materials, so much of the new launches are targeting that use case of do something new. Yeah. [00:50:15] +What you just said about how we emphasize new projects so much. Maybe that does incentivize people not to think about it, it, it biases them in favor of rewrites because we have so much of our brain, so much of the marketing materials, so much of the new launches are targeting that use case of do something new. Yeah. [50:15] ## Software lifespan -**Mark Erikson:** There's also, you know, there's other factors as well. I mean, software does have a limited lifespan. Requirements change, teams change, bits expire. But also that like, a lot of people might only be on a team for a couple years, which means that A), there's loss of a lot of institutional knowledge, but also people don't generally have time to see the effects of the decisions they made. [00:50:36] +**Mark Erikson:** There's also, you know, there's other factors as well. I mean, software does have a limited lifespan. Requirements change, teams change, bits expire. But also that like, a lot of people might only be on a team for a couple years, which means that A), there's loss of a lot of institutional knowledge, but also people don't generally have time to see the effects of the decisions they made. [50:36] -I was lucky enough to spend, either seven or nine years, depending on how you slice it, on one project. And so I, I saw the initial decisions. I was there as we did the initial design work. I saw how some of those decisions panned out well, and others not so much. I made some of the decisions about the evolution of the code base, and they were the right decisions early on. And five years later, things had changed and we had to revisit those. [00:51:03] +I was lucky enough to spend, either seven or nine years, depending on how you slice it, on one project. And so I, I saw the initial decisions. I was there as we did the initial design work. I saw how some of those decisions panned out well, and others not so much. I made some of the decisions about the evolution of the code base, and they were the right decisions early on. And five years later, things had changed and we had to revisit those. [51:03] -Being able to see the impacts of those decisions and how they either cause problems or worked out well has, has been a really useful experience for me. [00:51:12] +Being able to see the impacts of those decisions and how they either cause problems or worked out well has, has been a really useful experience for me. [51:12] -**Carl Vitullo:** Absolutely. Well, I think that's an awesome note to end it on. Yeah, Mark, thanks so much for coming out. Sunil's gone already, but it was really great to talk with both of you. [00:51:21] +**Carl Vitullo:** Absolutely. Well, I think that's an awesome note to end it on. Yeah, Mark, thanks so much for coming out. Sunil's gone already, but it was really great to talk with both of you. [51:21] -**Mark Erikson:** Yep. Good discussion. And really glad Sunil could pop in and give us a whole bunch of insight. [00:51:25] +**Mark Erikson:** Yep. Good discussion. And really glad Sunil could pop in and give us a whole bunch of insight. [51:25] **Carl Vitullo:** Yeah, definitely. All right. Thanks so much everyone for staying with us and learning about rewrites. diff --git a/src/transcripts/tejas-kumar.md b/src/transcripts/tejas-kumar.md index dc2459a..27e10d3 100644 --- a/src/transcripts/tejas-kumar.md +++ b/src/transcripts/tejas-kumar.md @@ -11,398 +11,398 @@ people: "[Tejas Kumar](http://twitter.com/tejaskumar_)" ## Introduction -**Carl Vitullo:** Tejas, thanks so much for joining us. Excited to have you. I know you have worked in developer relations for years. You've worked at companies like Vercel, Xata, G2i, Spotify, and you're now working independently as an educator and content creator. [00:00:13] +**Carl Vitullo:** Tejas, thanks so much for joining us. Excited to have you. I know you have worked in developer relations for years. You've worked at companies like Vercel, Xata, G2i, Spotify, and you're now working independently as an educator and content creator. [00:13] -Yeah. Anything else? Any major points that I missed? [00:00:16] +Yeah. Anything else? Any major points that I missed? [00:16] -**Tejas Kumar:** No, you got it man. That's that's a great introduction. I like how short it was. It's it's nice. Now we can get into actually a nice conversation. [00:00:24] +**Tejas Kumar:** No, you got it man. That's that's a great introduction. I like how short it was. It's it's nice. Now we can get into actually a nice conversation. [00:24] **Carl Vitullo:** heck yeah. Yeah. Maybe we can start off with, I know you are currently starting a company and it's a little bit too early to get into the fine details of it, but Yeah. Why are you starting a company. -## Why are you starting a company [00:00:35] +## Why are you starting a company [00:35] -**Tejas Kumar:** That's an excellent question. And I found, I, I really don't do it lightly because I know that nine out of 10 companies fail and all of this. But I feel like the stars kind of align for one, I've wanted to do this for years. And two, I, I don't know if y'all have had Sunil Pai on this on this like discussion office hours thing. [00:00:54] +**Tejas Kumar:** That's an excellent question. And I found, I, I really don't do it lightly because I know that nine out of 10 companies fail and all of this. But I feel like the stars kind of align for one, I've wanted to do this for years. And two, I, I don't know if y'all have had Sunil Pai on this on this like discussion office hours thing. [00:54] -**Carl Vitullo:** We haven't actually. I'm familiar with him and he's an incredible person. I followed him for years. He's great. [00:00:59] +**Carl Vitullo:** We haven't actually. I'm familiar with him and he's an incredible person. I followed him for years. He's great. [00:59] -**Tejas Kumar:** Yes. I highly recommend. Let's, we need to make that happen because he's, especially now, he's doing the same thing, right? He's. He started a company called Cool Computer Club. He's building something awesome called Party Kit. And he took me aside in November in a tech conference after I had quit my job at Xata. [00:01:15] +**Tejas Kumar:** Yes. I highly recommend. Let's, we need to make that happen because he's, especially now, he's doing the same thing, right? He's. He started a company called Cool Computer Club. He's building something awesome called Party Kit. And he took me aside in November in a tech conference after I had quit my job at Xata. [01:15] -And he said, listen man you are in a very special point of your life right now because this is one of the rare occasions where you'll have literally no job and all the time to do all the things you've ever dreamed of. Also I've worked for the last 15 years nonstop. I've been an, I've been an employee for the past 15 years without a break. [00:01:32] +And he said, listen man you are in a very special point of your life right now because this is one of the rare occasions where you'll have literally no job and all the time to do all the things you've ever dreamed of. Also I've worked for the last 15 years nonstop. I've been an, I've been an employee for the past 15 years without a break. [01:32] -And in those 15 years you come up with dreams and things and you hear, more importantly, you hear about the pain that companies have. And my most recent role in Xata as the director of developer relations, I got to see the pain that a lot of companies have to endure doing developer relations. [00:01:50] +And in those 15 years you come up with dreams and things and you hear, more importantly, you hear about the pain that companies have. And my most recent role in Xata as the director of developer relations, I got to see the pain that a lot of companies have to endure doing developer relations. [01:50] -And then I became an angel investor last year and, got to see like from the cap table perspective how hard DevRel is for companies, firstly to hire great people, and either there's not enough talent or there's not enough talent that the companies are willing to pay for. You do get great talent at a very high price. [00:02:07] +And then I became an angel investor last year and, got to see like from the cap table perspective how hard DevRel is for companies, firstly to hire great people, and either there's not enough talent or there's not enough talent that the companies are willing to pay for. You do get great talent at a very high price. [02:07] -And so companies will end up like maybe hiring like less than that price. And they might hire inexperienced people and then it's, DevRel is so young that it hasn't really been codified very well. And so what happens is either the person doesn't perform according to the company's expectations and they let them go. Or the company uses the vague role of DevRel to overwork people and overwhelm them, and both ways. One of the sides, if not both, has trouble. So I've seen this pain and the company I'm starting aims to codify and fix what we think of DevRel and really help companies get the most out of DevRel. So I'm really excited about that. [00:02:46] +And so companies will end up like maybe hiring like less than that price. And they might hire inexperienced people and then it's, DevRel is so young that it hasn't really been codified very well. And so what happens is either the person doesn't perform according to the company's expectations and they let them go. Or the company uses the vague role of DevRel to overwork people and overwhelm them, and both ways. One of the sides, if not both, has trouble. So I've seen this pain and the company I'm starting aims to codify and fix what we think of DevRel and really help companies get the most out of DevRel. So I'm really excited about that. [02:46] -**Carl Vitullo:** Yeah, that makes a lot of sense. I think of DevRel as being, it's one of those things that I think now a lot of teams, especially companies that run like SaaS products or otherwise have developers as one of their target customers think of it as something that, they need to do in order to develop their business. [00:03:04] +**Carl Vitullo:** Yeah, that makes a lot of sense. I think of DevRel as being, it's one of those things that I think now a lot of teams, especially companies that run like SaaS products or otherwise have developers as one of their target customers think of it as something that, they need to do in order to develop their business. [03:04] -But I think the finer points of "what does it mean to start a developer relations program" are not well understood. So is that sort of the niche you're look, you're looking to explore? [00:03:14] +But I think the finer points of "what does it mean to start a developer relations program" are not well understood. So is that sort of the niche you're look, you're looking to explore? [03:14] -**Tejas Kumar:** Exactly not just looking to explore, but looking to surf. Is this exactly, that is companies one thinking about do you even need DevRel and two if the consensus that you do, which we're seeing by the way, just a massive like hockey stick style growth of dev tools companies these days as well. [00:03:30] +**Tejas Kumar:** Exactly not just looking to explore, but looking to surf. Is this exactly, that is companies one thinking about do you even need DevRel and two if the consensus that you do, which we're seeing by the way, just a massive like hockey stick style growth of dev tools companies these days as well. [03:30] -## DevRel and community are immeasurable [00:03:30] +## DevRel and community are immeasurable [03:30] -**Tejas Kumar:** And chances are most of them need DevRel. But then, how do you go about doing it? A lot of people have no idea how to measure DevRel. In fact, you'll see a lot of conference talks, even some by me, where people, they try to answer the question, how do you measure dev? And the answer they come up with is just don't because they say it's immeasurable. [00:03:49] +**Tejas Kumar:** And chances are most of them need DevRel. But then, how do you go about doing it? A lot of people have no idea how to measure DevRel. In fact, you'll see a lot of conference talks, even some by me, where people, they try to answer the question, how do you measure dev? And the answer they come up with is just don't because they say it's immeasurable. [03:49] -**Carl Vitullo:** Yeah that's something that I feel, deep in my heart and soul about. How I've thought about community is, there, there are a lot of metrics I could track in running Reactiflux, and I, there are metrics that I do track, like number of active members week to week or whatever, that's information that I use to inform I don't use it as a target. [00:04:09] +**Carl Vitullo:** Yeah that's something that I feel, deep in my heart and soul about. How I've thought about community is, there, there are a lot of metrics I could track in running Reactiflux, and I, there are metrics that I do track, like number of active members week to week or whatever, that's information that I use to inform I don't use it as a target. [04:09] -It's not oh no we lost 15 active members. We need to bump those numbers up. And, too often people try to come up with metrics and then those metrics become the only thing that matters. Yeah I definitely I relate to what you said about just don't do it, don't measure. As soon as you start measuring that, those become the target that becomes, reason to do it. And the reason to do it is so much broader than those metrics. [00:04:34] +It's not oh no we lost 15 active members. We need to bump those numbers up. And, too often people try to come up with metrics and then those metrics become the only thing that matters. Yeah I definitely I relate to what you said about just don't do it, don't measure. As soon as you start measuring that, those become the target that becomes, reason to do it. And the reason to do it is so much broader than those metrics. [04:34] -**Tejas Kumar:** Exactly. And it's so interesting you say that because the word relations isn't the name dev relations. Imagine if you took your relationships with your friends or your close, family even and said what are the goals for this relationship? How do we, that's immediately a turnoff in most relationships because it, it ends up like commoditizing the people. [00:04:56] +**Tejas Kumar:** Exactly. And it's so interesting you say that because the word relations isn't the name dev relations. Imagine if you took your relationships with your friends or your close, family even and said what are the goals for this relationship? How do we, that's immediately a turnoff in most relationships because it, it ends up like commoditizing the people. [04:56] -And I've, this is one of the mistakes I've seen companies make is they, through whatever wacky DevRel measurement process they'll try to come up with, they turn people into commodities or assets to be exploited. And that deep there's a lot to be said about devaluing people with that, but I think that's a big criti that's a big factor. [00:05:16] +And I've, this is one of the mistakes I've seen companies make is they, through whatever wacky DevRel measurement process they'll try to come up with, they turn people into commodities or assets to be exploited. And that deep there's a lot to be said about devaluing people with that, but I think that's a big criti that's a big factor. [05:16] -And I think the solution to it is to recognize, okay, this is something that has a lot to do with people. And in many ways it's, it has parallels. I would even say with politics. Like a politician's approval rating is very similar to a dev tools company's approval rating among developers. And so you have to go at it from that campaigning angle. [00:05:34] +And I think the solution to it is to recognize, okay, this is something that has a lot to do with people. And in many ways it's, it has parallels. I would even say with politics. Like a politician's approval rating is very similar to a dev tools company's approval rating among developers. And so you have to go at it from that campaigning angle. [05:34] -Like you, you don't see like presidential candidates just outright, saying, Hey, what's the, like what's the goal of campaigning? They'll probably have those conversations behind doors, but they're trying to really connect with people on a very real level. And I think that's where DevRel stands. [00:05:51] +Like you, you don't see like presidential candidates just outright, saying, Hey, what's the, like what's the goal of campaigning? They'll probably have those conversations behind doors, but they're trying to really connect with people on a very real level. And I think that's where DevRel stands. [05:51] -## Extractive relationships in DevRel and community [00:05:58] +## Extractive relationships in DevRel and community [05:58] -**Carl Vitullo:** Yeah, that makes a lot of sense. And it, something that I've said and thought about a lot is in, in community, and I think also within developer relations, one of the things you can optimize for is engagement. Who's reacting, who's participating. But as soon as you start trying, as soon as that becomes the goal, it's it incentivizes you to do a lot of things that I think are harmful to the broader picture of it, to what like you said, to forming relationships with these people. [00:06:21] +**Carl Vitullo:** Yeah, that makes a lot of sense. And it, something that I've said and thought about a lot is in, in community, and I think also within developer relations, one of the things you can optimize for is engagement. Who's reacting, who's participating. But as soon as you start trying, as soon as that becomes the goal, it's it incentivizes you to do a lot of things that I think are harmful to the broader picture of it, to what like you said, to forming relationships with these people. [06:21] -Like I think one of the common approaches to build a community when companies try to do it, is just to do things like giveaways or, raffles. and it just sets up this like transactional exploitative nature of this relationship, which is just it just poisons the well, and as soon as you start from that place, it's so hard to claw your way out and get to authentically and deeply connecting with people. [00:06:47] +Like I think one of the common approaches to build a community when companies try to do it, is just to do things like giveaways or, raffles. and it just sets up this like transactional exploitative nature of this relationship, which is just it just poisons the well, and as soon as you start from that place, it's so hard to claw your way out and get to authentically and deeply connecting with people. [06:47] -## Swag and broken trust [00:06:50] +## Swag and broken trust [06:50] -**Tejas Kumar:** Yeah, exactly. This is where, so at Xata, I'm really proud of this man at Xata. When, where I was leading DevRel. We had the best reputation on any conference sponsor, booth floor. And that's because we had a lot of swag to give people. And it was also the most inclusive swag. Like we had earrings, we had like t-shirts in both men and women's cuts, for example. [00:07:10] +**Tejas Kumar:** Yeah, exactly. This is where, so at Xata, I'm really proud of this man at Xata. When, where I was leading DevRel. We had the best reputation on any conference sponsor, booth floor. And that's because we had a lot of swag to give people. And it was also the most inclusive swag. Like we had earrings, we had like t-shirts in both men and women's cuts, for example. [07:10] -And people showed up and it was really interesting. They were like hesitant to take the stuff we just openly wanted to give away. And when we asked them why they said they, they were just surprised that they could take it. They were like they said to us, oh no, these other companies with booths they asked us for contact information in exchange for this water bottle. [00:07:26] +And people showed up and it was really interesting. They were like hesitant to take the stuff we just openly wanted to give away. And when we asked them why they said they, they were just surprised that they could take it. They were like they said to us, oh no, these other companies with booths they asked us for contact information in exchange for this water bottle. [07:26] -And they looked at us in disbelief. They're like, wait, so we can just have it really? And they're like, yeah, can I have two? Sure. Because we don't we spend the money. We got these things. We don't really care about, extracting money and contact information from you. We want to genuinely give you this because we want to bless you. [00:07:41] +And they looked at us in disbelief. They're like, wait, so we can just have it really? And they're like, yeah, can I have two? Sure. Because we don't we spend the money. We got these things. We don't really care about, extracting money and contact information from you. We want to genuinely give you this because we want to bless you. [07:41] -And if you either use our thing or you don't, that's secondary. We can talk about that later. So this, what does this do? Already sets the groundwork for a healthy relationship. It's look unconditionally, we're gonna support you. And if you want to, if you don't want to support us, that's fine, but that builds way more trust than something transactional like you were talking about. [00:08:00] +And if you either use our thing or you don't, that's secondary. We can talk about that later. So this, what does this do? Already sets the groundwork for a healthy relationship. It's look unconditionally, we're gonna support you. And if you want to, if you don't want to support us, that's fine, but that builds way more trust than something transactional like you were talking about. [08:00] -So thinking through these really high level things and working with companies to train their DevRel people to think at this level is what my new company's about. [00:08:10] +So thinking through these really high level things and working with companies to train their DevRel people to think at this level is what my new company's about. [08:10] -**Carl Vitullo:** Very nice. Yeah. Okay. I like that a lot. Yeah. And it's even just hearing you tell that story, like those people, those companies and groups who approach the relationships from that sort of transactional nature, I'll give you this if you give me that. Like it doesn't just poison their own well, it sets a standard that people then come to expect from all companies doing that. So yeah I could see how there's a lot of value in getting people to do it well, like not just for those companies, but for the whole industry. [00:08:40] +**Carl Vitullo:** Very nice. Yeah. Okay. I like that a lot. Yeah. And it's even just hearing you tell that story, like those people, those companies and groups who approach the relationships from that sort of transactional nature, I'll give you this if you give me that. Like it doesn't just poison their own well, it sets a standard that people then come to expect from all companies doing that. So yeah I could see how there's a lot of value in getting people to do it well, like not just for those companies, but for the whole industry. [08:40] -**Tejas Kumar:** Exactly. And can you imagine an industry where all of the dev tools companies compete with each other on who can best serve their developer communities and who can best bless their developer communities. What's awesome about this? Through that competition, developers win, a lot. And that's what I'm going for is what's best for developers and developer communities at the cost of companies that can afford it. [00:09:02] +**Tejas Kumar:** Exactly. And can you imagine an industry where all of the dev tools companies compete with each other on who can best serve their developer communities and who can best bless their developer communities. What's awesome about this? Through that competition, developers win, a lot. And that's what I'm going for is what's best for developers and developer communities at the cost of companies that can afford it. [09:02] -**Carl Vitullo:** Yeah. Okay. I like that a lot. [00:09:04] +**Carl Vitullo:** Yeah. Okay. I like that a lot. [09:04] -## Transactional relationships [00:09:07] +## Transactional relationships [09:07] -**Tejas Kumar:** With Reactiflux, right? Like the, I'm sure like talking to you about this, you've got the same passion, I would say for developer communities and giveaways and wellbeing. I guess I don't see anything transactional in Reactiflux almost ever and what I do see is a lot of, service to the community. [00:09:21] +**Tejas Kumar:** With Reactiflux, right? Like the, I'm sure like talking to you about this, you've got the same passion, I would say for developer communities and giveaways and wellbeing. I guess I don't see anything transactional in Reactiflux almost ever and what I do see is a lot of, service to the community. [09:21] -So it sounds like you would have resonating thoughts about that. [00:09:25] +So it sounds like you would have resonating thoughts about that. [09:25] -**Carl Vitullo:** Yeah. Trying to not be transactional is one of the reasons I try and do events like this nobody, no money is changing hands here. We don't have any sponsorship for these events. We just, I just try to reach out to people who I think will have interesting things to say and who I can have a good conversation with and benefit the members who are interested in tuning in. [00:09:47] +**Carl Vitullo:** Yeah. Trying to not be transactional is one of the reasons I try and do events like this nobody, no money is changing hands here. We don't have any sponsorship for these events. We just, I just try to reach out to people who I think will have interesting things to say and who I can have a good conversation with and benefit the members who are interested in tuning in. [09:47] -It's interesting to hear you say that you think of this as a very non-transactional space, because I actually think of it differently. I think that one of the struggles we've had at a, community level is that 95% of the members, the only way they participate is by asking for and providing help, which I think is a very transactional relationship. [00:10:08] +It's interesting to hear you say that you think of this as a very non-transactional space, because I actually think of it differently. I think that one of the struggles we've had at a, community level is that 95% of the members, the only way they participate is by asking for and providing help, which I think is a very transactional relationship. [10:08] -It's, you have a problem, you hop into, Reactiflux, you ask, and in a couple of hours you've had a conversation. Cool. Thanks. Bye. Trying to break away from that sort of hop in, hop out, transactional help is, has been one of the things that I've been, I don't wanna force a change, but just trying to provide opportunities for deeper relationships to form and doing events like this, I think is one way that we can encourage that, so this is we do some office hours. [00:10:38] +It's, you have a problem, you hop into, Reactiflux, you ask, and in a couple of hours you've had a conversation. Cool. Thanks. Bye. Trying to break away from that sort of hop in, hop out, transactional help is, has been one of the things that I've been, I don't wanna force a change, but just trying to provide opportunities for deeper relationships to form and doing events like this, I think is one way that we can encourage that, so this is we do some office hours. [10:38] -I'd like to do more office hours where we get community members just talking about their experiences. As well as, I thought I've had recently as refocusing events where we have external guests coming in like you and position those as a "community spotlight." Here is somebody who we, I as a community leader think is doing something really great and deserves a little bit more recognition. [00:11:03] +I'd like to do more office hours where we get community members just talking about their experiences. As well as, I thought I've had recently as refocusing events where we have external guests coming in like you and position those as a "community spotlight." Here is somebody who we, I as a community leader think is doing something really great and deserves a little bit more recognition. [11:03] -**Tejas Kumar:** Wow. Thanks. It's a nice compliment in there. I appreciate that. [00:11:08] +**Tejas Kumar:** Wow. Thanks. It's a nice compliment in there. I appreciate that. [11:08] -**Carl Vitullo:** Yeah. You said in, as we were preparing that one of the reasons you were think you were interested in doing a company was to not be one of those people who keeps talking about one of these days doing something. [00:11:21] +**Carl Vitullo:** Yeah. You said in, as we were preparing that one of the reasons you were think you were interested in doing a company was to not be one of those people who keeps talking about one of these days doing something. [11:21] -Can you talk a little bit about that? [00:11:23] +Can you talk a little bit about that? [11:23] -## Fear about trying something new [00:11:28] +## Fear about trying something new [11:28] -**Tejas Kumar:** yeah. I've been a part of this discord for a while though I haven't really asked for help or anything. But I feel like everyone here, the 80 plus people that are here have the ability, through code, to build literally anything we want, any software we want, any app we want, right? [00:11:39] +**Tejas Kumar:** yeah. I've been a part of this discord for a while though I haven't really asked for help or anything. But I feel like everyone here, the 80 plus people that are here have the ability, through code, to build literally anything we want, any software we want, any app we want, right? [11:39] -I'm sure there's in the room, over a hundred people in the room. There's potential and ideas like, oh, I wanna build this. Oh, I've been dreaming about this one app and this, but we don't do it. And I've fallen afraid of that myself, where I working in DevRel for as long as I have, I've seen so many pain points and so many things that I think could be improved. [00:11:58] +I'm sure there's in the room, over a hundred people in the room. There's potential and ideas like, oh, I wanna build this. Oh, I've been dreaming about this one app and this, but we don't do it. And I've fallen afraid of that myself, where I working in DevRel for as long as I have, I've seen so many pain points and so many things that I think could be improved. [11:58] -And I spent the past year 2022 working in this space and kind of just complaining oh, if I had a company, I would do this differently. Oh, I would what was I'd hire all the women and people of color and fix the state of, inequity and all this stuff. And it's, I find it, what I was saying earlier, it's very easy to like shake your fist at the sky and say these things. [00:12:16] +And I spent the past year 2022 working in this space and kind of just complaining oh, if I had a company, I would do this differently. Oh, I would what was I'd hire all the women and people of color and fix the state of, inequity and all this stuff. And it's, I find it, what I was saying earlier, it's very easy to like shake your fist at the sky and say these things. [12:16] -But when I thought about actually doing it multiple times, I immediately felt fear. And this fear immediately made me back away from it without actually backing away from it. It made me, and this is something I don't know I'd love to hear if you can relate. It made me back away from it. But still at the same time feel like I'm doing something towards it. [00:12:35] +But when I thought about actually doing it multiple times, I immediately felt fear. And this fear immediately made me back away from it without actually backing away from it. It made me, and this is something I don't know I'd love to hear if you can relate. It made me back away from it. But still at the same time feel like I'm doing something towards it. [12:35] -It's so weird, Carl. What I mean by that is I quit my job, right? And I thought, as I mentioned, Sunil Pai told me, "hey, you're in a great time to do that thing you've been putting off." So I said, great, I'm gonna do it. But then I'd start to feel the fear and then I'd be like, you know what? No, I'm just gonna take a job. [00:12:51] +It's so weird, Carl. What I mean by that is I quit my job, right? And I thought, as I mentioned, Sunil Pai told me, "hey, you're in a great time to do that thing you've been putting off." So I said, great, I'm gonna do it. But then I'd start to feel the fear and then I'd be like, you know what? No, I'm just gonna take a job. [12:51] -I'd call CloudFlare. I'd be like, Hey, I heard you're hiring developer advocates. Can I and that would happen over and over again to the point where I got really frustrated with myself. Why do I keep applying for jobs I have this dream? And ultimately it took some reflection when I realized, listen It's better to try this thing, to build it, maybe fail than to not try at all. [00:13:14] +I'd call CloudFlare. I'd be like, Hey, I heard you're hiring developer advocates. Can I and that would happen over and over again to the point where I got really frustrated with myself. Why do I keep applying for jobs I have this dream? And ultimately it took some reflection when I realized, listen It's better to try this thing, to build it, maybe fail than to not try at all. [13:14] -And that statement is really what cemented me to start building this thing. And you know what? It probably will fail Carl. Nine out of 10 startups fail. And that's, I don't think that's a bad thing. I feel like it's, it gives you closure. When I was a younger single guy there was this whole thing about oh, let's see if I can talk to this pretty girl at the thing. [00:13:31] +And that statement is really what cemented me to start building this thing. And you know what? It probably will fail Carl. Nine out of 10 startups fail. And that's, I don't think that's a bad thing. I feel like it's, it gives you closure. When I was a younger single guy there was this whole thing about oh, let's see if I can talk to this pretty girl at the thing. [13:31] -And a lot of guys were afraid of rejection. But like on the other side of that, Quote, unquote, failure at the time when you're a young man chasing women is oftentimes a feeling of Hey, wait a second. I did that and I tried and now I'm not gonna spend the rest of the day regretting that I chickened out. [00:13:49] +And a lot of guys were afraid of rejection. But like on the other side of that, Quote, unquote, failure at the time when you're a young man chasing women is oftentimes a feeling of Hey, wait a second. I did that and I tried and now I'm not gonna spend the rest of the day regretting that I chickened out. [13:49] -So that's what's really the driving force here. And I feel like there's people here who are similar, who feel like an inkling of entrepreneurialism, but it's snuffed out by fear and also by people around them telling them, oh, maybe, pay the bills with this or that. [00:14:03] +So that's what's really the driving force here. And I feel like there's people here who are similar, who feel like an inkling of entrepreneurialism, but it's snuffed out by fear and also by people around them telling them, oh, maybe, pay the bills with this or that. [14:03] -And and full disclosure, like it's very risky and I'm watching, my family finances go down day by day every day that my company doesn't make money. But it's part of it. It's part of it because I feel like in tech we have this bubble where like we just take our money and, react front end engineer salaries for granted and everything's. [00:14:25] +And and full disclosure, like it's very risky and I'm watching, my family finances go down day by day every day that my company doesn't make money. But it's part of it. It's part of it because I feel like in tech we have this bubble where like we just take our money and, react front end engineer salaries for granted and everything's. [14:25] -Given, you know what I'm saying? And to be able to be able to feel like human things once in a while. It's very exciting. Anyway, sorry I'm ranting a bit, but hope that answers your question. [00:14:35] +Given, you know what I'm saying? And to be able to be able to feel like human things once in a while. It's very exciting. Anyway, sorry I'm ranting a bit, but hope that answers your question. [14:35] -**Carl Vitullo:** Yeah. No, I think that was a great answer that I there's so much to respond to there, to in there. I really deeply and viscerally feel what you were saying about the fear of starting a company… actually taking a real shot at it is so hard because, it probably will fail. Most people who try something new do not replicate their software developer salary in the first year or even in the first five years. [00:14:58] +**Carl Vitullo:** Yeah. No, I think that was a great answer that I there's so much to respond to there, to in there. I really deeply and viscerally feel what you were saying about the fear of starting a company… actually taking a real shot at it is so hard because, it probably will fail. Most people who try something new do not replicate their software developer salary in the first year or even in the first five years. [14:58] -**Tejas Kumar:** Yeah. There's the other side to it too. There's the other side where you expect to fall, but then you fall in reverse AKA flying. And this happened to I don't know if y'all have had James Q Quick on the channel. [00:15:10] +**Tejas Kumar:** Yeah. There's the other side to it too. There's the other side where you expect to fall, but then you fall in reverse AKA flying. And this happened to I don't know if y'all have had James Q Quick on the channel. [15:10] -**Carl Vitullo:** We have not, I'm familiar with his name. [00:15:12] +**Carl Vitullo:** We have not, I'm familiar with his name. [15:12] -**Tejas Kumar:** He was, he's been a developer advocate for most of his career I'd say. And he was working at Planet Scale, so a direct competitor to Xata at the time. That's how I know him. And he got laid off, dude. And he got laid off and he, again, he was in the same place I was without a job, and he was like, I'm and when he got laid off, I was working at a competitor and I messaged him instantly and I said, oh, you got laid off Mr. Competitor, come work for us. We'll treat you good, right? And he said, yeah, cool, cool. I'll get back to you. But first I've been dreaming of being a YouTuber for such a long time. [00:15:44] +**Tejas Kumar:** He was, he's been a developer advocate for most of his career I'd say. And he was working at Planet Scale, so a direct competitor to Xata at the time. That's how I know him. And he got laid off, dude. And he got laid off and he, again, he was in the same place I was without a job, and he was like, I'm and when he got laid off, I was working at a competitor and I messaged him instantly and I said, oh, you got laid off Mr. Competitor, come work for us. We'll treat you good, right? And he said, yeah, cool, cool. I'll get back to you. But first I've been dreaming of being a YouTuber for such a long time. [15:44] -I wanna just try this YouTube thing. I wanna be a full-time content creator. See how it goes. We'll probably fail, but whatever. Carl, like within the first year being a content creator, he made basically his salary back just doing it. Exactly. And that's, those are the stories we need to hear more of because I think, we hear too much of the negative and it's probably good cuz it protects us, but there's also the other side. [00:16:06] +I wanna just try this YouTube thing. I wanna be a full-time content creator. See how it goes. We'll probably fail, but whatever. Carl, like within the first year being a content creator, he made basically his salary back just doing it. Exactly. And that's, those are the stories we need to hear more of because I think, we hear too much of the negative and it's probably good cuz it protects us, but there's also the other side. [16:06] -**Carl Vitullo:** Yeah. Yeah. I do. I've been listening to a podcast, People I Mostly Admire, which I would recommend. It's really great. It's from one of the authors of Freakonomics. And one of the points that he hits on in a lot of his interviews is, "talk more about failure." Just because fail, it's so common and there's so much you can learn about things that don't work. [00:16:29] +**Carl Vitullo:** Yeah. Yeah. I do. I've been listening to a podcast, People I Mostly Admire, which I would recommend. It's really great. It's from one of the authors of Freakonomics. And one of the points that he hits on in a lot of his interviews is, "talk more about failure." Just because fail, it's so common and there's so much you can learn about things that don't work. [16:29] -Like, why didn't it work? Was this, a, what are the specific details about this attempt that made it not work? And really just normalize that yeah, you know what, you try something new, you try something hard, you try something out of your experience. And yeah, it probably won't go well but you learn something, you get better at it and you can try again later. [00:16:49] +Like, why didn't it work? Was this, a, what are the specific details about this attempt that made it not work? And really just normalize that yeah, you know what, you try something new, you try something hard, you try something out of your experience. And yeah, it probably won't go well but you learn something, you get better at it and you can try again later. [16:49] -**Tejas Kumar:** Exactly man. And that learning it's for one, like from, so I'm currently living that, Carl, I'm in the middle of that, right? And it's exhilarating. It's like learning how to deal with dude. I wrote an SOW myself the other day, like a statement of work. [00:17:04] +**Tejas Kumar:** Exactly man. And that learning it's for one, like from, so I'm currently living that, Carl, I'm in the middle of that, right? And it's exhilarating. It's like learning how to deal with dude. I wrote an SOW myself the other day, like a statement of work. [17:04] -**Carl Vitullo:** Yeah I'm in the same boat. I'm writing those too. [00:17:07] +**Carl Vitullo:** Yeah I'm in the same boat. I'm writing those too. [17:07] -## Trying something new; an exercise in empathy [00:17:13] +## Trying something new; an exercise in empathy [17:13] -**Tejas Kumar:** Dude, it's nuts. spent three hours writing a 13 page contract thinking, oh my gosh, I better hire someone don't know, it's just exhilarating not knowing where your next paycheck's gonna come and working I'm reminded so I grew up in a Muslim country and I'm reminded of, I, if there's any Muslims in the audience, but I'm reminded of, Ramadan from the Muslim it's this thing where you for an entire And the reason they do it, they They don't eat like from sunrise to sunset, which in some countries closer to the poles where a day is 14, 16 hours, it's pretty wild. And they do this for a month. and I was wondering why when I was younger and they said it's because we want to feel what people who don't have a lot feel, it's literally, it's a month long exercise in empathy. And that I think is pretty cool. [00:17:50] +**Tejas Kumar:** Dude, it's nuts. spent three hours writing a 13 page contract thinking, oh my gosh, I better hire someone don't know, it's just exhilarating not knowing where your next paycheck's gonna come and working I'm reminded so I grew up in a Muslim country and I'm reminded of, I, if there's any Muslims in the audience, but I'm reminded of, Ramadan from the Muslim it's this thing where you for an entire And the reason they do it, they They don't eat like from sunrise to sunset, which in some countries closer to the poles where a day is 14, 16 hours, it's pretty wild. And they do this for a month. and I was wondering why when I was younger and they said it's because we want to feel what people who don't have a lot feel, it's literally, it's a month long exercise in empathy. And that I think is pretty cool. [17:50] -And that's exactly where I think we both are because it's not to say we're I've been an employee in a startup. I've been employee number six. I've been an employee at a large company like Spotify. I've been an employee at a mid-size startup like G2i. [00:18:02] +And that's exactly where I think we both are because it's not to say we're I've been an employee in a startup. I've been employee number six. I've been an employee at a large company like Spotify. I've been an employee at a mid-size startup like G2i. [18:02] -What I've had in common with all these roles is I've worked with founders, but I've never been a founder and I've never been able to empathize with the things they have to deal with. Then this is what I'm talking about, like an exercise in empathy that way. it's nuts, man. I will probably never speak ill of another founder ever again. [00:18:19] +What I've had in common with all these roles is I've worked with founders, but I've never been a founder and I've never been able to empathize with the things they have to deal with. Then this is what I'm talking about, like an exercise in empathy that way. it's nuts, man. I will probably never speak ill of another founder ever again. [18:19] -## Carl's past failed company [00:18:25] +## Carl's past failed company [18:25] -**Carl Vitullo:** Yeah it's a hard life. It's, it is just full of so many challenges. I'm in a similar sort of spot. I've been working independently for the past year trying to do community and technical community consulting and yeah, it's, this is not my first company that I founded, but going back to what you said about feeling the fear to get started the last time I started a company was like 2014 or 15, and I was trying to do a subscription box service with my partner at the time. [00:18:50] +**Carl Vitullo:** Yeah it's a hard life. It's, it is just full of so many challenges. I'm in a similar sort of spot. I've been working independently for the past year trying to do community and technical community consulting and yeah, it's, this is not my first company that I founded, but going back to what you said about feeling the fear to get started the last time I started a company was like 2014 or 15, and I was trying to do a subscription box service with my partner at the time. [18:50] -**Tejas Kumar:** Nice. [00:18:50] +**Tejas Kumar:** Nice. [18:50] -**Carl Vitullo:** like we did it for about a year and a half and ended up shutting it down and just I learned so many things through doing it badly. Oops, I didn't file all my taxes right. here's a two grand in IRS… scary letters from the IRS are not fun. But, I, so I did it badly once and then I spent six years working at companies and not trying again. [00:19:11] +**Carl Vitullo:** like we did it for about a year and a half and ended up shutting it down and just I learned so many things through doing it badly. Oops, I didn't file all my taxes right. here's a two grand in IRS… scary letters from the IRS are not fun. But, I, so I did it badly once and then I spent six years working at companies and not trying again. [19:11] -But then that experience of having done it so badly and failed pretty hard just gave me, when I started thinking about it again and okay, I wanna take, I wanna do it seriously this time. What does that mean? It just gave me, it shoved the door open, just that little bit much wider where I understood more about what it takes and how to do it right. [00:19:30] +But then that experience of having done it so badly and failed pretty hard just gave me, when I started thinking about it again and okay, I wanna take, I wanna do it seriously this time. What does that mean? It just gave me, it shoved the door open, just that little bit much wider where I understood more about what it takes and how to do it right. [19:30] -**Tejas Kumar:** you're, you're in a similar place now. I, you may or may not be starting something, but you're, you've been independent Do you feel like you might lean towards putting that, into putting those things you've learned in practice again, [00:19:42] +**Tejas Kumar:** you're, you're in a similar place now. I, you may or may not be starting something, but you're, you've been independent Do you feel like you might lean towards putting that, into putting those things you've learned in practice again, [19:42] -**Carl Vitullo:** Yeah. I am doing that a little bit right now. I, but more in the consulting work than building. I don't know. I think of consulting very differently from building a startup, building a company. Yeah. But another dimension of it that I'm just really enjoying is the freedom to pursue self-directed goals. [00:20:00] +**Carl Vitullo:** Yeah. I am doing that a little bit right now. I, but more in the consulting work than building. I don't know. I think of consulting very differently from building a startup, building a company. Yeah. But another dimension of it that I'm just really enjoying is the freedom to pursue self-directed goals. [20:00] -I think that is just such a great aspect of working independently or trying to start a company is needing to take stock of short-term goals. Okay, where does the next dollar come from? What is work that I can do right now that will get me closer to that next dollar, but also set up something bigger down the line? [00:20:19] +I think that is just such a great aspect of working independently or trying to start a company is needing to take stock of short-term goals. Okay, where does the next dollar come from? What is work that I can do right now that will get me closer to that next dollar, but also set up something bigger down the line? [20:19] -**Tejas Kumar:** yeah. So you think short and long term at the same time? [00:20:22] +**Tejas Kumar:** yeah. So you think short and long term at the same time? [20:22] -**Carl Vitullo:** Right. It's so challenging though. [00:20:23] +**Carl Vitullo:** Right. It's so challenging though. [20:23] -**Tejas Kumar:** Yeah. No, I agree. I, what you've done for me, Carl, in this discussion already, which I'm super thankful for, given me confidence that failure isn't that bad. I'm full disclosure, man, I'm terrified, but like talking about how you failed with this tax stuff and you took a job and it was fine, and then you tried again. That's It's a bounce back story. [00:20:41] +**Tejas Kumar:** Yeah. No, I agree. I, what you've done for me, Carl, in this discussion already, which I'm super thankful for, given me confidence that failure isn't that bad. I'm full disclosure, man, I'm terrified, but like talking about how you failed with this tax stuff and you took a job and it was fine, and then you tried again. That's It's a bounce back story. [20:41] -**Carl Vitullo:** Yeah, And I mean ultimately we work, we all work in tech. We have a lot of skills and I think that is, so freeing in a way that like, yeah, there's always something to fall back to if doing something on your own doesn't work. There's always other jobs. [00:20:53] +**Carl Vitullo:** Yeah, And I mean ultimately we work, we all work in tech. We have a lot of skills and I think that is, so freeing in a way that like, yeah, there's always something to fall back to if doing something on your own doesn't work. There's always other jobs. [20:53] -**Tejas Kumar:** Yeah. And I feel like that's a really good encouragement to the people listening. Is there's always, especially in a community like this, there's a job board here in Reactiflux, you know what Carl, that's where I'm if everything fails and I need a job straight to the job board. [00:21:06] +**Tejas Kumar:** Yeah. And I feel like that's a really good encouragement to the people listening. Is there's always, especially in a community like this, there's a job board here in Reactiflux, you know what Carl, that's where I'm if everything fails and I need a job straight to the job board. [21:06] -**Carl Vitullo:** Straight to the job board. There we go. I didn't really expect to get so deep into entrepreneurship and whatever on this, but I'm glad we did. [00:21:12] +**Carl Vitullo:** Straight to the job board. There we go. I didn't really expect to get so deep into entrepreneurship and whatever on this, but I'm glad we did. [21:12] -**Tejas Kumar:** Me neither. I do feel like it's, I don't know if it's interesting for the people, I mean with the name like Reactiflux, I expect us to be talking about react and things which not complaining. I could talk about entrepreneurship all day. Especially cuz it's currently my whole personality and adventure. [00:21:28] +**Tejas Kumar:** Me neither. I do feel like it's, I don't know if it's interesting for the people, I mean with the name like Reactiflux, I expect us to be talking about react and things which not complaining. I could talk about entrepreneurship all day. Especially cuz it's currently my whole personality and adventure. [21:28] **Carl Vitullo:** Independent content creator. But yeah. Let's bring it back a little bit more into the technical side of things. -## New web technologies you're excited for [00:21:34] +## New web technologies you're excited for [21:34] -**Carl Vitullo:** What are some new technologies that you're excited about in web development? In the web space? [00:21:40] +**Carl Vitullo:** What are some new technologies that you're excited about in web development? In the web space? [21:40] -**Tejas Kumar:** Ooooh. [00:21:40] +**Tejas Kumar:** Ooooh. [21:40] -**Carl Vitullo:** Big question. [00:21:41] +**Carl Vitullo:** Big question. [21:41] -**Tejas Kumar:** That's an excellent question. That's a great question. So part of my independence from employment is starting a YouTube channel. And this answers that question in a broad context, but I'm not gonna be one oh, just click the link and go to my YouTube type of answers. [00:21:55] +**Tejas Kumar:** That's an excellent question. That's a great question. So part of my independence from employment is starting a YouTube channel. And this answers that question in a broad context, but I'm not gonna be one oh, just click the link and go to my YouTube type of answers. [21:55] -A lot of people have asked me actually about this YouTube channel, like, why are you starting it bro? Theo and there's Primagen, there's all these YouTubers already. [00:22:03] +A lot of people have asked me actually about this YouTube channel, like, why are you starting it bro? Theo and there's Primagen, there's all these YouTubers already. [22:03] -**Carl Vitullo:** Crowded space. [00:22:04] +**Carl Vitullo:** Crowded space. [22:04] -**Tejas Kumar:** It's a crowded space, but I feel what I'm, what my intention for YouTube is not really to create tutorials. [00:22:09] +**Tejas Kumar:** It's a crowded space, but I feel what I'm, what my intention for YouTube is not really to create tutorials. [22:09] -There's plenty of coding tutorials and they're awesome, but my intention is to like, talk about tech that I find in the web and not just talk about like we just did with the entrepreneurial stuff. Like deeply review them and discuss their trade offs, and what's exciting and what's worth it and why it's exciting and so on. [00:22:26] +There's plenty of coding tutorials and they're awesome, but my intention is to like, talk about tech that I find in the web and not just talk about like we just did with the entrepreneurial stuff. Like deeply review them and discuss their trade offs, and what's exciting and what's worth it and why it's exciting and so on. [22:26] -## Zod and tRPC, type safety on network calls [00:22:27] +## Zod and tRPC, type safety on network calls [22:27] -**Tejas Kumar:** To bring it back to your question, one of the videos I'm currently working on is a video on, Zod, have you heard of and used Zod Carl? [00:22:34] +**Tejas Kumar:** To bring it back to your question, one of the videos I'm currently working on is a video on, Zod, have you heard of and used Zod Carl? [22:34] -**Carl Vitullo:** Oh, I've heard of it. Is that's the like validation library, sort of like, Yup or Joi [00:22:39] +**Carl Vitullo:** Oh, I've heard of it. Is that's the like validation library, sort of like, Yup or Joi [22:39] -**Tejas Kumar:** It's like that, but more, and that's why I love it so much. It does do validation of types and ske and json. If it's an object, you'll do validation on schema as well. But it also pairs perfectly with TypeScript such that you don't have to write types and TypeScript anymore. [00:22:54] +**Tejas Kumar:** It's like that, but more, and that's why I love it so much. It does do validation of types and ske and json. If it's an object, you'll do validation on schema as well. But it also pairs perfectly with TypeScript such that you don't have to write types and TypeScript anymore. [22:54] -You just do type of whatever your Zod thing is and you get a TypeScript type just for free. [00:22:59] +You just do type of whatever your Zod thing is and you get a TypeScript type just for free. [22:59] -**Carl Vitullo:** Wait that's pretty cool. [00:23:00] +**Carl Vitullo:** Wait that's pretty cool. [23:00] -**Tejas Kumar:** it completely changes way you, it works as a source for your types, which then you take and plug into type native things like tRPC, to generate like APIs and things. [00:23:10] +**Tejas Kumar:** it completely changes way you, it works as a source for your types, which then you take and plug into type native things like tRPC, to generate like APIs and things. [23:10] -And then what you've end up, what you've ended up creating is a completely end-to-end type safe client server relationship, but also at runtime, not just build and compile time because Zod validates on the run time. Your apps are just way more robust with Zod and tRPC. [00:23:27] +And then what you've end up, what you've ended up creating is a completely end-to-end type safe client server relationship, but also at runtime, not just build and compile time because Zod validates on the run time. Your apps are just way more robust with Zod and tRPC. [23:27] -So I think those two are technologies in the front end space that I'm, and in the backend space because they're I'm quite excited about those as full stack holistic TypeScript technologies. [00:23:36] +So I think those two are technologies in the front end space that I'm, and in the backend space because they're I'm quite excited about those as full stack holistic TypeScript technologies. [23:36] -**Carl Vitullo:** Yeah, definitely. Yeah. I think that tRPC was the context in which I had have heard about Zod most. Yeah. And I've been hearing for years about generating types off. API schemas, I think the first person heard talk about that was Jared Palmer back in like 2017. He was, generated a GraphQL schema and then used that to create types for the front end consuming it. [00:24:01] +**Carl Vitullo:** Yeah, definitely. Yeah. I think that tRPC was the context in which I had have heard about Zod most. Yeah. And I've been hearing for years about generating types off. API schemas, I think the first person heard talk about that was Jared Palmer back in like 2017. He was, generated a GraphQL schema and then used that to create types for the front end consuming it. [24:01] -And I just remember it was like a light bulb, like mind explosion moment. Like, wait, you can do that. Holy shit. I can, prevent my app from shipping a breaking change. What!? So yeah it's cool to see new approaches to that. [00:24:14] +And I just remember it was like a light bulb, like mind explosion moment. Like, wait, you can do that. Holy shit. I can, prevent my app from shipping a breaking change. What!? So yeah it's cool to see new approaches to that. [24:14] -## Chronological Snobbery and jQuery [00:24:18] +## Chronological Snobbery and jQuery [24:18] -**Tejas Kumar:** Yeah. I also the code gen route is actually, gosh, I'm, so there's a term one of my favorite authors CS Lewis uses, he calls it chronological snobbery . That's when we look at the past and go like, oh my gosh, that's so primitive. You know? Some of us would look at jQuery and talk about it like that. [00:24:32] +**Tejas Kumar:** Yeah. I also the code gen route is actually, gosh, I'm, so there's a term one of my favorite authors CS Lewis uses, he calls it chronological snobbery . That's when we look at the past and go like, oh my gosh, that's so primitive. You know? Some of us would look at jQuery and talk about it like that. [24:32] -Oh my gosh, jQuery. But jQuery still runs most of the web. It runs more of the web than React But what I'm about to say sounds very chronologically snobbish. But, this like Graph QL code gen type stuff is no longer the premier way, no-breaking-change, type-safety, API server and client like it, it just isn't, because… [00:24:53] +Oh my gosh, jQuery. But jQuery still runs most of the web. It runs more of the web than React But what I'm about to say sounds very chronologically snobbish. But, this like Graph QL code gen type stuff is no longer the premier way, no-breaking-change, type-safety, API server and client like it, it just isn't, because… [24:53] -think about it, right? Like you, you have your terminal talk to some server, do an introspection query, and then generate files on your file system. Those files can be out of sync with the server and you have to work on some type of like Chokidar, like watcher magic to make sure that when you save the code is gen. It's clunky because there's so many moving parts. Whereas tRPC, is all of it. tRPC does the schema description exactly like GraphQL and it also exports for you a data fetching library that's type safe using your description and has runtime validation with Zod. It's taken the best of this graph ql code gen stuff, and like evolved it to 2023. [00:25:35] +think about it, right? Like you, you have your terminal talk to some server, do an introspection query, and then generate files on your file system. Those files can be out of sync with the server and you have to work on some type of like Chokidar, like watcher magic to make sure that when you save the code is gen. It's clunky because there's so many moving parts. Whereas tRPC, is all of it. tRPC does the schema description exactly like GraphQL and it also exports for you a data fetching library that's type safe using your description and has runtime validation with Zod. It's taken the best of this graph ql code gen stuff, and like evolved it to 2023. [25:35] -It's quite exciting. In fact, again, I have to thank you Carl for this discussion because it's basically writing my next YouTube script for me. [00:25:42] +It's quite exciting. In fact, again, I have to thank you Carl for this discussion because it's basically writing my next YouTube script for me. [25:42] -**Carl Vitullo:** Great. Yeah, no I, tRPC is definitely, I haven't I haven't yet had occasion to use it, but it's definitely top of my list of tools to reach for. [00:25:52] +**Carl Vitullo:** Great. Yeah, no I, tRPC is definitely, I haven't I haven't yet had occasion to use it, but it's definitely top of my list of tools to reach for. [25:52] -## React as a middle aged man [00:26:02] +## React as a middle aged man [26:02] -**Tejas Kumar:** Yeah. tRPC and Zod. About what's exciting also, I think there was an awesome tweet, man. Have y'all had, I'm about to ask you if you've had another person on this Feel free to feel free just to know, but have y'all had, Jani Eväkallio on this, on, on [00:26:05] +**Tejas Kumar:** Yeah. tRPC and Zod. About what's exciting also, I think there was an awesome tweet, man. Have y'all had, I'm about to ask you if you've had another person on this Feel free to feel free just to know, but have y'all had, Jani Eväkallio on this, on, on [26:05] -**Carl Vitullo:** Oh no we haven't. I'm familiar with him though. He worked at Formiddable Labs for a long time and is, I think he's also doing an entrepreneurship thing right now. [00:26:13] +**Carl Vitullo:** Oh no we haven't. I'm familiar with him though. He worked at Formiddable Labs for a long time and is, I think he's also doing an entrepreneurship thing right now. [26:13] -**Tejas Kumar:** Yeah. He's got a, AI writing tool, which is phenomenal. I bring him up because he tweeted something today that was hilarious. I thought it was so good that I retweeted it. He said React is in its middle-aged man era. It's at the top of its economic productivity, but culturally completely irrelevant. [00:26:32] +**Tejas Kumar:** Yeah. He's got a, AI writing tool, which is phenomenal. I bring him up because he tweeted something today that was hilarious. I thought it was so good that I retweeted it. He said React is in its middle-aged man era. It's at the top of its economic productivity, but culturally completely irrelevant. [26:32] -At the top of its economic productivity, but culturally completely irrelevant. I thought that was hilarious. Because React is exactly that. It's not maybe completely irrelevant, it's just this like mature thing that cool, it exists, but it's not really as sexy as it once was. [00:26:49] +At the top of its economic productivity, but culturally completely irrelevant. I thought that was hilarious. Because React is exactly that. It's not maybe completely irrelevant, it's just this like mature thing that cool, it exists, but it's not really as sexy as it once was. [26:49] -**Carl Vitullo:** Right, it's not the, hype generator that it was, five years ago, five, 10 years ago. [00:26:54] +**Carl Vitullo:** Right, it's not the, hype generator that it was, five years ago, five, 10 years ago. [26:54] -**Tejas Kumar:** Yeah, exactly, because like server components is this huge shift and it's a massive one, but people don't seem to care as much as they did about hooks. [00:27:03] +**Tejas Kumar:** Yeah, exactly, because like server components is this huge shift and it's a massive one, but people don't seem to care as much as they did about hooks. [27:03] -**Carl Vitullo:** Yeah. That reminds me of years ago when I was at, working at my first startup, I read, I, I can't remember if it was like a TechCrunch article or just like a blog post, but it used the metaphor of a clock face to talk about startup life cycle. [00:27:19] +**Carl Vitullo:** Yeah. That reminds me of years ago when I was at, working at my first startup, I read, I, I can't remember if it was like a TechCrunch article or just like a blog post, but it used the metaphor of a clock face to talk about startup life cycle. [27:19] -And it really, it put this idea in my head that I've seen apply to all sorts of things, and I think that's a good example of it, where, early in something's life. It is, it's the darling, it's the, everyone loves that. Everyone's so excited for the possibilities. And then over time as those possibilities get explored, and some of them pan out, some of them don't, the energy drops and like skepticism comes in and then like later on as it gets older and starts to fade out of relevance or hype, then people start cheering its downfall. And I don't think react is quite into the cheering its downfall phase of that, but it's certainly into the the phase of its life where it's getting a lot more skepticism than it used to. [00:27:59] +And it really, it put this idea in my head that I've seen apply to all sorts of things, and I think that's a good example of it, where, early in something's life. It is, it's the darling, it's the, everyone loves that. Everyone's so excited for the possibilities. And then over time as those possibilities get explored, and some of them pan out, some of them don't, the energy drops and like skepticism comes in and then like later on as it gets older and starts to fade out of relevance or hype, then people start cheering its downfall. And I don't think react is quite into the cheering its downfall phase of that, but it's certainly into the the phase of its life where it's getting a lot more skepticism than it used to. [27:59] -**Tejas Kumar:** Yeah, but I think part of that comes from the same reason why there is so much hate on JavaScript. And Ja for example, like I could literally open my console right now and type for you JavaScript type of null. And the type of null is an object, right? And oh my gosh, that's so stupid. [00:28:15] +**Tejas Kumar:** Yeah, but I think part of that comes from the same reason why there is so much hate on JavaScript. And Ja for example, like I could literally open my console right now and type for you JavaScript type of null. And the type of null is an object, right? And oh my gosh, that's so stupid. [28:15] -## React compared with Qwik's design goals [00:28:27] +## React compared with Qwik's design goals [28:27] -How can null be an object? I And JavaScript will still have some hate, but there is no arguing with the fact that it is the best language, the only language of the web so I feel like React is there, React is locked into its own design and unfortunately, It's design is outdated. [00:28:36] +How can null be an object? I And JavaScript will still have some hate, but there is no arguing with the fact that it is the best language, the only language of the web so I feel like React is there, React is locked into its own design and unfortunately, It's design is outdated. [28:36] -It's design does not allow for some of the sexy new stuff we're in libraries like Qwik and Solid, because it was not designed for that. And you have things like quick coming in this ridiculous level of code splitting where a pool of workers can in unison, collaboratively hydrate, not even hydrate collaboratively, send different parts of your website to the browser pa in parallel. [00:29:01] +It's design does not allow for some of the sexy new stuff we're in libraries like Qwik and Solid, because it was not designed for that. And you have things like quick coming in this ridiculous level of code splitting where a pool of workers can in unison, collaboratively hydrate, not even hydrate collaboratively, send different parts of your website to the browser pa in parallel. [29:01] -**Carl Vitullo:** Oh, interesting. [00:29:02] +**Carl Vitullo:** Oh, interesting. [29:02] -**Tejas Kumar:** Nuts And yeah, it's absolutely nuts. And react can't even come to this zip code because it was never designed for that level of code splitting and distributed So I think that's losing its sex appeal cuz there's plenty of sex appeal being had in newer things that are able to be designed for modern architectures, [00:29:19] +**Tejas Kumar:** Nuts And yeah, it's absolutely nuts. And react can't even come to this zip code because it was never designed for that level of code splitting and distributed So I think that's losing its sex appeal cuz there's plenty of sex appeal being had in newer things that are able to be designed for modern architectures, [29:19] -**Carl Vitullo:** yeah. That's interesting. I haven't, I've heard of quick, but I haven't really dug into it before. So that's a new description to me. So it, it uses cloudflare's edge workers, that sort of technology. [00:29:31] +**Carl Vitullo:** yeah. That's interesting. I haven't, I've heard of quick, but I haven't really dug into it before. So that's a new description to me. So it, it uses cloudflare's edge workers, that sort of technology. [29:31] -**Tejas Kumar:** It can use that. You know react, when you ship, react to a user. What you're shipping is React js, the, that's the browser, like React library. You're shipping React dom, which is massive, which is like 200 kilobytes. And if it's a NextJS site, you're probably also shipping like the NextJS run time. And if you use get static props, you're probably shipping like a huge bunch of json. You're shipping a lot like the JavaScript you'll multiple kilobytes, sometimes hundreds. [00:29:55] +**Tejas Kumar:** It can use that. You know react, when you ship, react to a user. What you're shipping is React js, the, that's the browser, like React library. You're shipping React dom, which is massive, which is like 200 kilobytes. And if it's a NextJS site, you're probably also shipping like the NextJS run time. And if you use get static props, you're probably shipping like a huge bunch of json. You're shipping a lot like the JavaScript you'll multiple kilobytes, sometimes hundreds. [29:55] -Qwik is one kilobyte constantly, always on first load, actually less. Because it's so small, they inline all of Qwik directly into the HTML that you serve. And then how it works is when you hover over something interactive, or rather, when you interact with something interactive, let's say for example, you have a button that has an on click callback. At build time quick will wrap that callback with the dynamic import to the file that contains the callback. [00:30:24] +Qwik is one kilobyte constantly, always on first load, actually less. Because it's so small, they inline all of Qwik directly into the HTML that you serve. And then how it works is when you hover over something interactive, or rather, when you interact with something interactive, let's say for example, you have a button that has an on click callback. At build time quick will wrap that callback with the dynamic import to the file that contains the callback. [30:24] -So you write code that looks just like react, but at build time Qwik will split out closures like from on click handlers into separate modules. It'll replace your on click handler with a dynamic import of getting that on click handler. So then your user, enjoys the one kilobyte first load clicks on a button, which triggers a dynamic import of this other module. And that then pulls that down the wire and then your call back. The page rather the JavaScript bundle slowly grows as people use your thing as opposed to everything upfront. And the benefit is if a user never interacts with something, they never download the code for it. [00:31:04] +So you write code that looks just like react, but at build time Qwik will split out closures like from on click handlers into separate modules. It'll replace your on click handler with a dynamic import of getting that on click handler. So then your user, enjoys the one kilobyte first load clicks on a button, which triggers a dynamic import of this other module. And that then pulls that down the wire and then your call back. The page rather the JavaScript bundle slowly grows as people use your thing as opposed to everything upfront. And the benefit is if a user never interacts with something, they never download the code for it. [31:04] -**Carl Vitullo:** Yeah that's I'm thinking of optimizations I've done to add code splitting on, by a page or by a feature or something like that. That was all a manual work. I had to figure out where the seams were and like, and analyze like what was coming and where to figure out where a good seam to introduce was. [00:31:20] +**Carl Vitullo:** Yeah that's I'm thinking of optimizations I've done to add code splitting on, by a page or by a feature or something like that. That was all a manual work. I had to figure out where the seams were and like, and analyze like what was coming and where to figure out where a good seam to introduce was. [31:20] -Okay, so quick does all of that– [00:31:22] +Okay, so quick does all of that– [31:22] -**Tejas Kumar:** Automatically. [00:31:23] +**Tejas Kumar:** Automatically. [31:23] -So when you're talking about finding the seams, right, Carl? I feel a big deterrent to code splitting and React is, closures. In the body of a function component, if you have use state at the top, then In the component's return in the JSX tree you have on click and you have something that uses that state variable from outside the scope of your function. You can't code split that because it's using something outside its closure. So Qwik does that, it does like compiler level magic to put the closure and the outside state together in some file that is lazy loaded And it does all of that for you. And it just like splits literally everything. [00:32:04] +So when you're talking about finding the seams, right, Carl? I feel a big deterrent to code splitting and React is, closures. In the body of a function component, if you have use state at the top, then In the component's return in the JSX tree you have on click and you have something that uses that state variable from outside the scope of your function. You can't code split that because it's using something outside its closure. So Qwik does that, it does like compiler level magic to put the closure and the outside state together in some file that is lazy loaded And it does all of that for you. And it just like splits literally everything. [32:04] -**Carl Vitullo:** Okay. That's very cool. Yeah, cuz one of the sort of, I think of it as a failure mode for optimizations I've tried to do with code splitting. It ends up where, okay cool, great. The code for this particular page is loaded asynchronously, but the only code that is only used on that page is like four kilobytes. [00:32:25] +**Carl Vitullo:** Okay. That's very cool. Yeah, cuz one of the sort of, I think of it as a failure mode for optimizations I've tried to do with code splitting. It ends up where, okay cool, great. The code for this particular page is loaded asynchronously, but the only code that is only used on that page is like four kilobytes. [32:25] -Okay, great. You're, you've cut four kilobytes off your initial load, but now you've introduced more latency when people try to get to that page. So it's a wash. [00:32:32] +Okay, great. You're, you've cut four kilobytes off your initial load, but now you've introduced more latency when people try to get to that page. So it's a wash. [32:32] -**Tejas Kumar:** That's why I'm so excited about Quick also, by the I'm not like here trying to evangelize quick, we kind of just drifted at the topic, but I feel like, builder io, so the people who make quick, this is their like, full-time job to think about all this stuff that we tried to think about and I've pressed them hard. I've spoken to the guy in charge and I was like, okay, dude, but I get that one kilobyte first load and my, my internet connection dies. Then I can't even click on your button cuz it's all dynamic, it's all lazy, loaded. And he looks at me and he's like, no dude. And I said, explain. [00:33:00] +**Tejas Kumar:** That's why I'm so excited about Quick also, by the I'm not like here trying to evangelize quick, we kind of just drifted at the topic, but I feel like, builder io, so the people who make quick, this is their like, full-time job to think about all this stuff that we tried to think about and I've pressed them hard. I've spoken to the guy in charge and I was like, okay, dude, but I get that one kilobyte first load and my, my internet connection dies. Then I can't even click on your button cuz it's all dynamic, it's all lazy, loaded. And he looks at me and he's like, no dude. And I said, explain. [33:00] -So when it loads that first kilobyte it also has a manifest of things to prefetch. And as soon as you get pixels on the screen and that first paint, it immediately starts prefetching all of the other modules. Not only does it prefetch all of the code split modules in the background, so not blocking it also prefetch them in an order of likelihood to be interacted with that it calculates. [00:33:26] +So when it loads that first kilobyte it also has a manifest of things to prefetch. And as soon as you get pixels on the screen and that first paint, it immediately starts prefetching all of the other modules. Not only does it prefetch all of the code split modules in the background, so not blocking it also prefetch them in an order of likelihood to be interacted with that it calculates. [33:26] -**Carl Vitullo:** Do you know if that's like part of the runtime, is it will do, like realtime monitoring of what people are interacting with and update that priority list. They do. [00:33:34] +**Carl Vitullo:** Do you know if that's like part of the runtime, is it will do, like realtime monitoring of what people are interacting with and update that priority list. They do. [33:34] -**Tejas Kumar:** think, I think it is right now, I think that's why it's beta, because that's pretty hard to get right. I [00:33:39] +**Tejas Kumar:** think, I think it is right now, I think that's why it's beta, because that's pretty hard to get right. I [33:39] -**Carl Vitullo:** Yeah, that's a hard problem. That's interesting, huh. Okay. That's very cool. [00:33:43] +**Carl Vitullo:** Yeah, that's a hard problem. That's interesting, huh. Okay. That's very cool. [33:43] -**Tejas Kumar:** Yeah. Exactly. And since everything is code split, I think the really cool thing is you could serve different parts from different workers all at the edge and get these, like of trademark, blazing fast load times. And so when you have all of this innovation in the UI space and you look back at React, it's this tweet from Yani about React being this middle-aged man that's not so relevant, but at the top of its productivity, I think is just on the nose, like on hammer on the nail. [00:34:12] +**Tejas Kumar:** Yeah. Exactly. And since everything is code split, I think the really cool thing is you could serve different parts from different workers all at the edge and get these, like of trademark, blazing fast load times. And so when you have all of this innovation in the UI space and you look back at React, it's this tweet from Yani about React being this middle-aged man that's not so relevant, but at the top of its productivity, I think is just on the nose, like on hammer on the nail. [34:12] -**Carl Vitullo:** Another thing I'd love to talk with you about is, I know you're working on a course platform, is that right? You and Sara Vieira. [00:34:22] +**Carl Vitullo:** Another thing I'd love to talk with you about is, I know you're working on a course platform, is that right? You and Sara Vieira. [34:22] -**Tejas Kumar:** Sarah and I are building this thing because we want to empower people to make great stuff and profit from it. And also we want to empower the people who download and buy these courses to enrich their careers. I feel like in some way it's a direct competitor to egghead. [00:34:39] +**Tejas Kumar:** Sarah and I are building this thing because we want to empower people to make great stuff and profit from it. And also we want to empower the people who download and buy these courses to enrich their careers. I feel like in some way it's a direct competitor to egghead. [34:39] -But one thing about me, Carl, I, I hate competition. I I'm the most anti-competitive person on earth. it's not like I hate the people that compete against me. That's not what I'm saying. I hate the notion of competition. I think it's a scarcity thought. [00:34:52] +But one thing about me, Carl, I, I hate competition. I I'm the most anti-competitive person on earth. it's not like I hate the people that compete against me. That's not what I'm saying. I hate the notion of competition. I think it's a scarcity thought. [34:52] -And I'm more instead of saying, we compete, I prefer to say we complete the landscape. And so we do the course platform is basically egghead, but in many ways, less curated. Like If you've tried to teach on egghead, they'll send you like a microphone and they have like guidelines for how you can do a course I feel like they should, because there's so many instructors. We're going about it by being a bit different. Instead of. Opening the net really wide to everybody initially being an instructor and then policing them with, you know, use this microphone and speak this way. [00:35:27] +And I'm more instead of saying, we compete, I prefer to say we complete the landscape. And so we do the course platform is basically egghead, but in many ways, less curated. Like If you've tried to teach on egghead, they'll send you like a microphone and they have like guidelines for how you can do a course I feel like they should, because there's so many instructors. We're going about it by being a bit different. Instead of. Opening the net really wide to everybody initially being an instructor and then policing them with, you know, use this microphone and speak this way. [35:27] -We're just gonna be pretty casual about it. Hey, you want to teach? Here you go. You have a basic webcam and mic. Awesome. Good luck. And give them the tools and the training and whatever they need as teachers ourselves. And then say, good luck. Sell your course for whatever you want. Use whatever you want. We'll support you. And also an to try and empower people who aren't well represented in the industry as Like women and people of color, like if they wanna teach giving them the best skills and tools to do that, and creating a platform on which they can sell their courses. [00:35:58] +We're just gonna be pretty casual about it. Hey, you want to teach? Here you go. You have a basic webcam and mic. Awesome. Good luck. And give them the tools and the training and whatever they need as teachers ourselves. And then say, good luck. Sell your course for whatever you want. Use whatever you want. We'll support you. And also an to try and empower people who aren't well represented in the industry as Like women and people of color, like if they wanna teach giving them the best skills and tools to do that, and creating a platform on which they can sell their courses. [35:58] -I've heard from a lot of women actually who want to do courses that. Like on YouTube, for example, like, oh, I would love to teach on YouTube, but I'm scared of the comments I'll get from people. [00:36:09] +I've heard from a lot of women actually who want to do courses that. Like on YouTube, for example, like, oh, I would love to teach on YouTube, but I'm scared of the comments I'll get from people. [36:09] -**Carl Vitullo:** Oh, yeah. [00:36:09] +**Carl Vitullo:** Oh, yeah. [36:09] -**Tejas Kumar:** So creating a platform where that's and allows people to feel empowered instead of intimidated is something that's important to us. [00:36:17] +**Tejas Kumar:** So creating a platform where that's and allows people to feel empowered instead of intimidated is something that's important to us. [36:17] -**Carl Vitullo:** I've seen a lot of independent educators building their own their own platforms. You I'm thinking of like Matt Pocock and, Josh Comeau, both developing their own educational platform rather than going to somebody like Egghead. So, is is, is that the sort of creator you're thinking of serving more, or is it a little bit more similar to Eggheads [00:36:39] +**Carl Vitullo:** I've seen a lot of independent educators building their own their own platforms. You I'm thinking of like Matt Pocock and, Josh Comeau, both developing their own educational platform rather than going to somebody like Egghead. So, is is, is that the sort of creator you're thinking of serving more, or is it a little bit more similar to Eggheads [36:39] -**Tejas Kumar:** No, these people are famous. also Pocock is not doing his own platform. Is teaching. He's partnering with Badass Courses. [00:36:47] +**Tejas Kumar:** No, these people are famous. also Pocock is not doing his own platform. Is teaching. He's partnering with Badass Courses. [36:47] -But yeah, no, Josh Comeau is, in my opinion, Carl, Josh Comeau is like the best educator I know. He's up there with Kent Dodds. I respect Josh immensely because of exactly that. Like, he'll build the platform. He puts so much care into it. Like he makes these like awesome 3D graphics go. It's just beautiful. Like nobody can disagree with the fact that it's just stunning work. [00:37:11] +But yeah, no, Josh Comeau is, in my opinion, Carl, Josh Comeau is like the best educator I know. He's up there with Kent Dodds. I respect Josh immensely because of exactly that. Like, he'll build the platform. He puts so much care into it. Like he makes these like awesome 3D graphics go. It's just beautiful. Like nobody can disagree with the fact that it's just stunning work. [37:11] -Not necessarily Josh as well, because Josh has, the passion, the drive, the skills, the everything [00:37:18] +Not necessarily Josh as well, because Josh has, the passion, the drive, the skills, the everything [37:18] -**Carl Vitullo:** He'll build everything he needs. [00:37:20] +**Carl Vitullo:** He'll build everything he needs. [37:20] -**Tejas Kumar:** We're after the people who, feel like they could but are maybe not fully confident in themselves. We're after the kind of people who, like if you go to them and say, I believe you can sell a bunch of courses cuz you're very smart. They would look at you and get shy and be like, oh, I don't, I doubt that I'm skeptic. [00:37:37] +**Tejas Kumar:** We're after the people who, feel like they could but are maybe not fully confident in themselves. We're after the kind of people who, like if you go to them and say, I believe you can sell a bunch of courses cuz you're very smart. They would look at you and get shy and be like, oh, I don't, I doubt that I'm skeptic. [37:37] -So people who like doubt the people you want to help sell courses. And the cool thing is we're building it using, react NextJS. We're doing it in public over live streams every so often. We had one today, I'm exhausted. It was a like three hour live stream. But yeah, we're doing it in public to show people listen, like it's, we want to, do it in public to, to show people how much we mess up and hate the fact that sometimes doing auth is hard. [00:38:02] +So people who like doubt the people you want to help sell courses. And the cool thing is we're building it using, react NextJS. We're doing it in public over live streams every so often. We had one today, I'm exhausted. It was a like three hour live stream. But yeah, we're doing it in public to show people listen, like it's, we want to, do it in public to, to show people how much we mess up and hate the fact that sometimes doing auth is hard. [38:02] -**Carl Vitullo:** Right. Yeah. That's funny. I feel like authentication is one of those things, everyone needs it, so it can't be that hard, right? No, no. It, it's hard. [00:38:10] +**Carl Vitullo:** Right. Yeah. That's funny. I feel like authentication is one of those things, everyone needs it, so it can't be that hard, right? No, no. It, it's hard. [38:10] -**Tejas Kumar:** Yeah. And oftentimes it's because of the silliest things. It's like, Oh, I forgotten my dot or I put something in my dot N, but I forgot to restart the dev server or something like this. [00:38:19] +**Tejas Kumar:** Yeah. And oftentimes it's because of the silliest things. It's like, Oh, I forgotten my dot or I put something in my dot N, but I forgot to restart the dev server or something like this. [38:19] -**Carl Vitullo:** Classic. Okay. Yeah. Very nice. I love the, uh, the build in public ethos. I think that makes a lot of sense for a course platform as well. [00:38:27] +**Carl Vitullo:** Classic. Okay. Yeah. Very nice. I love the, uh, the build in public ethos. I think that makes a lot of sense for a course platform as well. [38:27] -**Tejas Kumar:** Yeah, [00:38:27] +**Tejas Kumar:** Yeah, [38:27] -**Carl Vitullo:** it's kind of dog food to your own process. Show what producing the content looks [00:38:33] +**Carl Vitullo:** it's kind of dog food to your own process. Show what producing the content looks [38:33] -**Tejas Kumar:** exactly. And the cool thing is once we're done with that, the platform's just gonna be open If anybody wants to take it and use it for their own, like Matt Pocock TypeScript course, whatever, they can just feel free, like clone the repo, do whatever you want. So the plan is to monetize the actual course content from creators. [00:38:49] +**Tejas Kumar:** exactly. And the cool thing is once we're done with that, the platform's just gonna be open If anybody wants to take it and use it for their own, like Matt Pocock TypeScript course, whatever, they can just feel free, like clone the repo, do whatever you want. So the plan is to monetize the actual course content from creators. [38:49] -And of course creators keep 100% of whatever money their course makes. What we're thinking of doing is every creator course creator, like they plug in their like stripe to the platform. And then, it's just a direct line between the person on the other side who clicks buy and the creator. We, we don't do any app store, like 30% nonsense. [00:39:10] +And of course creators keep 100% of whatever money their course makes. What we're thinking of doing is every creator course creator, like they plug in their like stripe to the platform. And then, it's just a direct line between the person on the other side who clicks buy and the creator. We, we don't do any app store, like 30% nonsense. [39:10] -All of it, just for the sake of education and learning and fun. I'm sure you're, you can relate Carl. It's another way of expressing I am unemployed and I have way too much time, [00:39:21] +All of it, just for the sake of education and learning and fun. I'm sure you're, you can relate Carl. It's another way of expressing I am unemployed and I have way too much time, [39:21] -**Carl Vitullo:** Right. When you have so much time, it becomes a challenge to fill it. Yeah. Well, you've, you've definitely got a lot of things going on. [00:39:29] +**Carl Vitullo:** Right. When you have so much time, it becomes a challenge to fill it. Yeah. Well, you've, you've definitely got a lot of things going on. [39:29] -**Tejas Kumar:** Yeah, I'm really excited about it. it. And then, this chat has so many insights and ideas that I didn't even know I had. that's because of your awesome skills as a host and conversationalist, so I appreciate that. [00:39:40] +**Tejas Kumar:** Yeah, I'm really excited about it. it. And then, this chat has so many insights and ideas that I didn't even know I had. that's because of your awesome skills as a host and conversationalist, so I appreciate that. [39:40] -**Carl Vitullo:** That's the whole point of talking to people is see what you didn't know you knew. [00:39:44] +**Carl Vitullo:** That's the whole point of talking to people is see what you didn't know you knew. [39:44] -Anything else you wanna touch on before we wrap up? I'm curious to hear what your experience with Angel investing has been. If you want to share a little bit about that [00:39:53] +Anything else you wanna touch on before we wrap up? I'm curious to hear what your experience with Angel investing has been. If you want to share a little bit about that [39:53] -**Tejas Kumar:** yeah. As a first time non-employee founder person, I've, I've been diving a lot into finance actually, and investments and taxes and all of this. And, I see more of the value of Angel investing actually now as a founder. it's been good. it's been, It's been interesting. There's criteria to, to be an angel investor, oftentimes you can even circumvent that if you really want to. But these safeguards are put place to protect you because angel investing is like the riskiest type of investing on Earth. And it has to be, it has to be money that you're 100% comfortable losing. [00:40:27] +**Tejas Kumar:** yeah. As a first time non-employee founder person, I've, I've been diving a lot into finance actually, and investments and taxes and all of this. And, I see more of the value of Angel investing actually now as a founder. it's been good. it's been, It's been interesting. There's criteria to, to be an angel investor, oftentimes you can even circumvent that if you really want to. But these safeguards are put place to protect you because angel investing is like the riskiest type of investing on Earth. And it has to be, it has to be money that you're 100% comfortable losing. [40:27] -It has to be cash that you're willing to set on fire, like the Joker in The Dark Night. [00:40:31] +It has to be cash that you're willing to set on fire, like the Joker in The Dark Night. [40:31] -**Carl Vitullo:** Are you referencing like the accredited investor check? [00:40:34] +**Carl Vitullo:** Are you referencing like the accredited investor check? [40:34] -**Tejas Kumar:** yeah. So that check is also very interesting cause it doesn't help those of us who don't live in the usa. So I'm more than capable of, at least when I started, I was more than of angel investing. Because I was talked into it by my friend, Show Depot from Polygon. [00:40:47] +**Tejas Kumar:** yeah. So that check is also very interesting cause it doesn't help those of us who don't live in the usa. So I'm more than capable of, at least when I started, I was more than of angel investing. Because I was talked into it by my friend, Show Depot from Polygon. [40:47] -He is like, dude, write some checks. And I was like, sure man. How? [00:40:49] +He is like, dude, write some checks. And I was like, sure man. How? [40:49] -**Carl Vitullo:** How? Big question. [00:40:51] +**Carl Vitullo:** How? Big question. [40:51] -**Tejas Kumar:** Anyway, long story short. Well it turns out it's not hard. You talk to founders and you say, Hey, I wanna support with an angel check. You them your address and your money and your ID stuff, and they have their lawyers look at it and they send you, a contract saying you'll pay them that much. [00:41:06] +**Tejas Kumar:** Anyway, long story short. Well it turns out it's not hard. You talk to founders and you say, Hey, I wanna support with an angel check. You them your address and your money and your ID stuff, and they have their lawyers look at it and they send you, a contract saying you'll pay them that much. [41:06] -And most often it depends on the type of company. Some company will straight up give you like ownership contractually in exchange for your angel check, of course proportionate to your angel check and the valuation of the company at the time. Angel checks vary in size, and I've seen the smallest angel checks are like $5,000. The largest angel checks are $800,000. I've seen weird sizes of all shapes. I wanna be the kind of who's comfortable enough to Angel invest \$800,000, honestly. [00:41:38] +And most often it depends on the type of company. Some company will straight up give you like ownership contractually in exchange for your angel check, of course proportionate to your angel check and the valuation of the company at the time. Angel checks vary in size, and I've seen the smallest angel checks are like $5,000. The largest angel checks are $800,000. I've seen weird sizes of all shapes. I wanna be the kind of who's comfortable enough to Angel invest \$800,000, honestly. [41:38] -But proportionate to your investment, you get, an ownership stake in the company. Some companies do this new thing that Y Combinator invented called A SAFE, which is a sale agreement of future equity. it aims to just simplify it. So you give them money and they give you an agreement to sell you equity in the future, when the valuation is higher. And you usually will have some type of like maximum valuation cap. [00:42:02] +But proportionate to your investment, you get, an ownership stake in the company. Some companies do this new thing that Y Combinator invented called A SAFE, which is a sale agreement of future equity. it aims to just simplify it. So you give them money and they give you an agreement to sell you equity in the future, when the valuation is higher. And you usually will have some type of like maximum valuation cap. [42:02] -**Carl Vitullo:** Right. Okay. Yeah. Right. That's like a convertible debt, I think is a term used to reference that? [00:42:06] +**Carl Vitullo:** Right. Okay. Yeah. Right. That's like a convertible debt, I think is a term used to reference that? [42:06] -**Tejas Kumar:** Yes, it's the, it's like convertible debt version two is the SAFE. And yeah, that's basically it. It's just you sign contracts, you send addresses, you send money. And over time, the hope is that the companies have some type of exit. Either they go public, they sell, or some other very wealthy investors who's up and they're like, oh, what are those shares? Who does that belong to? I'll buy it from them. [00:42:27] +**Tejas Kumar:** Yes, it's the, it's like convertible debt version two is the SAFE. And yeah, that's basically it. It's just you sign contracts, you send addresses, you send money. And over time, the hope is that the companies have some type of exit. Either they go public, they sell, or some other very wealthy investors who's up and they're like, oh, what are those shares? Who does that belong to? I'll buy it from them. [42:27] -**Carl Vitullo:** Ahh, secondary market. [00:42:28] +**Carl Vitullo:** Ahh, secondary market. [42:28] -**Tejas Kumar:** Right. And they have to buy it from you at the valuation of the company, which And then you get way wealthier. But and all the angel investing I've done, it's literally money I don't mind this money that I didn't even know I had. [00:42:41] +**Tejas Kumar:** Right. And they have to buy it from you at the valuation of the company, which And then you get way wealthier. But and all the angel investing I've done, it's literally money I don't mind this money that I didn't even know I had. [42:41] -Dude, I've been a tech employee for 15 years and over that time I've accumulated scary amounts of money, as I'm sure multiple engineers have. And I didn't know what to do with it. So I decided let's just angel invest and what I've angel invested, I'm okay to lose, but I've strategically angel invested not so much in the companies, but in the founders. [00:43:02] +Dude, I've been a tech employee for 15 years and over that time I've accumulated scary amounts of money, as I'm sure multiple engineers have. And I didn't know what to do with it. So I decided let's just angel invest and what I've angel invested, I'm okay to lose, but I've strategically angel invested not so much in the companies, but in the founders. [43:02] -In the founders who I'm like, listen, like if their company fails, there's no hope for any of like some of the smartest people in the world, who I'm convinced are able to pivot and save their company in an emergency event. But who I'm also convinced that will not have emergencies cuz they're just absolutely brilliant So for me it's about the people and then whatever company it is, I don't really care. But then, there's also some savings that I was not comfortable betting with angel investing. And I learned about like safer investments like ETFs. There's a whole bunch I could say about all of that. [00:43:34] +In the founders who I'm like, listen, like if their company fails, there's no hope for any of like some of the smartest people in the world, who I'm convinced are able to pivot and save their company in an emergency event. But who I'm also convinced that will not have emergencies cuz they're just absolutely brilliant So for me it's about the people and then whatever company it is, I don't really care. But then, there's also some savings that I was not comfortable betting with angel investing. And I learned about like safer investments like ETFs. There's a whole bunch I could say about all of that. [43:34] -I've, since I've become unemployed and since I've started, I recently invested 60% of all the cash I've ever made my entire life in different places. This happened like three days ago. And dude, like losing quote unquote, losing 60% of everything you've ever worked for, is pretty nuts. [00:43:51] +I've, since I've become unemployed and since I've started, I recently invested 60% of all the cash I've ever made my entire life in different places. This happened like three days ago. And dude, like losing quote unquote, losing 60% of everything you've ever worked for, is pretty nuts. [43:51] -And I did it for multiple reasons. One, to beat inflation because at least in Germany, year on year, cash is losing 10% of its value year on year. So I did it to beat inflation, but also I did it to feel the squeeze. I wanna feel like, oh my gosh, we don't have any money. the hope is it would motivate me with this business be successful. [00:44:11] +And I did it for multiple reasons. One, to beat inflation because at least in Germany, year on year, cash is losing 10% of its value year on year. So I did it to beat inflation, but also I did it to feel the squeeze. I wanna feel like, oh my gosh, we don't have any money. the hope is it would motivate me with this business be successful. [44:11] -**Carl Vitullo:** Yeah, everything you're saying, just I feel like I lived at some point over the last year. It's just funny to hear someone else doing the same things as me. Probably six or eight months ago I had a similar kind of… [00:44:23] +**Carl Vitullo:** Yeah, everything you're saying, just I feel like I lived at some point over the last year. It's just funny to hear someone else doing the same things as me. Probably six or eight months ago I had a similar kind of… [44:23] -I've been working in tech for 10 years, I've made an amount of money, and over the last year, especially going independent, it's like, okay, one source of money is income through selling a product, selling my skills as a consultant. But you know, what, another source of income or a source of money is, growth in investments. So I started thinking of it as well, no, if I'm gonna work for myself, maybe one of the highest leverage actions I can take is smartly investing the money that I already have. [00:44:57] +I've been working in tech for 10 years, I've made an amount of money, and over the last year, especially going independent, it's like, okay, one source of money is income through selling a product, selling my skills as a consultant. But you know, what, another source of income or a source of money is, growth in investments. So I started thinking of it as well, no, if I'm gonna work for myself, maybe one of the highest leverage actions I can take is smartly investing the money that I already have. [44:57] -Yeah, so, over the past year I ended up speaking to, a bunch of advisors and reading books and articles and about like diversification and tax loss harvesting and all the financial details and with the amount of money I have invested, like if I can get an extra of 4% gains through diversification or whatever, then that could, that could extend my runway of how long I can be independent by months or years even. [00:45:25] +Yeah, so, over the past year I ended up speaking to, a bunch of advisors and reading books and articles and about like diversification and tax loss harvesting and all the financial details and with the amount of money I have invested, like if I can get an extra of 4% gains through diversification or whatever, then that could, that could extend my runway of how long I can be independent by months or years even. [45:25] -So, it's, it's one of those things working independently and needing to proactively think about where your money will be coming from rather than just, semi passively taking a paycheck every two weeks. Is it really forces you to think differently about where your priorities are. [00:45:40] +So, it's, it's one of those things working independently and needing to proactively think about where your money will be coming from rather than just, semi passively taking a paycheck every two weeks. Is it really forces you to think differently about where your priorities are. [45:40] -**Tejas Kumar:** Exactly, and I feel like as engineers we're all capable of doing that. Cause we spend most of our careers optimizing one thing or the other. So we could optimize that, [00:45:47] +**Tejas Kumar:** Exactly, and I feel like as engineers we're all capable of doing that. Cause we spend most of our careers optimizing one thing or the other. So we could optimize that, [45:47] -**Carl Vitullo:** Yeah, yeah. We spend our whole careers learning new skills and putting them to practice immediately. well, why can't one of those skills be financial literacy? [00:45:55] +**Carl Vitullo:** Yeah, yeah. We spend our whole careers learning new skills and putting them to practice immediately. well, why can't one of those skills be financial literacy? [45:55] -**Tejas Kumar:** Exactly. [00:45:56] +**Tejas Kumar:** Exactly. [45:56] -**Carl Vitullo:** All right, well, I think that's a good place to end it. Tejas, thanks so much for coming out. This was isn't a great conversation. It went so many [00:46:01] +**Carl Vitullo:** All right, well, I think that's a good place to end it. Tejas, thanks so much for coming out. This was isn't a great conversation. It went so many [46:01] -**Tejas Kumar:** I really appreciate it. Thanks for having me, Carl. [00:46:04] +**Tejas Kumar:** I really appreciate it. Thanks for having me, Carl. [46:04] -**Carl Vitullo:** Yeah, thanks so much for coming out. [00:46:05] +**Carl Vitullo:** Yeah, thanks so much for coming out. [46:05] **Tejas Kumar:** All right. Take care. Bye. diff --git a/src/transcripts/tmir-2024-01.md b/src/transcripts/tmir-2024-01.md index 4157fe9..25adac8 100644 --- a/src/transcripts/tmir-2024-01.md +++ b/src/transcripts/tmir-2024-01.md @@ -15,43 +15,43 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t - Quick hits - - [[00:00:32](#reviewing-layoffs)]: [Layoffs.fyi](https://layoffs.fyi/) - - [[00:03:06](#conferences)]: Conferences + - [[00:32](#reviewing-layoffs)]: [Layoffs.fyi](https://layoffs.fyi/) + - [[03:06](#conferences)]: Conferences - [React Paris](https://react.paris/) March 22nd, Paris, FR - [Epic Web](https://www.epicweb.dev/conf) April 11th, Park City, UT - [React Miami](https://www.reactmiami.com/) April 19-20th, Miami, FL - [React Connection / RN Connection](https://reactconnection.io/) April 22nd, Paris, FR - [React Conf 2024](https://conf.react.dev) May 15-16 Henderson, NV - - [[00:03:58](#library-releases)]: New releases + - [[03:58](#library-releases)]: New releases - [React Aria generally available](https://react-spectrum.adobe.com/releases/2023-12-20.html) - [New shadcn/ui components](https://ui.shadcn.com/docs/changelog) - [Eslint v9 alpha 0](https://eslint.org/blog/2023/12/eslint-v9.0.0-alpha.0-released/) - [jQuery 4.0??](https://github.com/jquery/jquery/issues/5365) - [date-fns v3](https://blog.date-fns.org/v3-is-out/) - [ReScript v11](https://rescript-lang.org/blog/release-11-0-0) -- [[00:08:08](#react-libraries-for-2024-by-robin-wieruch)]: [React Libraries for 2024](https://www.robinwieruch.de/react-libraries/) -- [[00:09:54](#rising-stars-on-github)]: [Rising Stars for JS, React ecosystem](https://risingstars.js.org/2023/en#section-react) -- [[00:10:56](#bytes.dev-2024-predictions)]: [2024 bytes.dev predictions](https://bytes.dev/archives/250) -- [[00:12:29](#speculating-on-react-19)]: React 19 and upcoming features +- [[08:08](#react-libraries-for-2024-by-robin-wieruch)]: [React Libraries for 2024](https://www.robinwieruch.de/react-libraries/) +- [[09:54](#rising-stars-on-github)]: [Rising Stars for JS, React ecosystem](https://risingstars.js.org/2023/en#section-react) +- [[10:56](#bytes.dev-2024-predictions)]: [2024 bytes.dev predictions](https://bytes.dev/archives/250) +- [[12:29](#speculating-on-react-19)]: React 19 and upcoming features - Context Selectors! [Discussion](https://twitter.com/acdlite/status/1741188563926962190) and a [summary from](https://interbolt.org/blog/react-use-selector-optimization/) [Colin Campbell](https://twitter.com/interbolt_colin) - [Proper Web Component support planned for React 19](https://github.com/facebook/react/issues/11347#issuecomment-1899140345) - [Web Components 2024 feature updates](https://eisenbergeffect.medium.com/web-components-2024-winter-update-445f27e7613a) - - [[00:19:01](#upcoming-client-features-in-react)]: [Rick Hanlon: some upcoming client features I'm excited about](https://twitter.com/rickhanlonii/status/1747333623152275685) + - [[19:01](#upcoming-client-features-in-react)]: [Rick Hanlon: some upcoming client features I'm excited about](https://twitter.com/rickhanlonii/status/1747333623152275685) - [New client-side hooks coming in React 19](https://marmelab.com/blog/2024/01/23/react-19-new-hooks.html) - [React Forget updates](https://twitter.com/dan_abramov2/status/1747640983980806466) - Framework updates - - [[00:22:34](#remix-spa-mode)]: [Remix working on “SPA mode”](https://github.com/remix-run/remix/pull/8338) + - [[22:34](#remix-spa-mode)]: [Remix working on “SPA mode”](https://github.com/remix-run/remix/pull/8338) - [Likely stabilize as Vite plugin does](https://github.com/remix-run/remix/discussions/7638#discussioncomment-8286839) - [Remix also working on RSC support](https://twitter.com/ryanflorence/status/1752166725028872432), and will have [differences from Next’s approach](https://twitter.com/ryanflorence/status/1752711755384692854). - - [[00:24:53](#next-14.1)]: [Next.js 14.1](https://nextjs.org/blog/next-14-1) -- [[00:27:56](#annoyed-at-react-roundup)]: “Annoyed at React” roundup + - [[24:53](#next-14.1)]: [Next.js 14.1](https://nextjs.org/blog/next-14-1) +- [[27:56](#annoyed-at-react-roundup)]: “Annoyed at React” roundup - [Kind of annoyed at React](https://blog.cassidoo.co/post/annoyed-at-react/) - [React, where are you going?](https://dev.to/matfrana/react-where-are-you-going-5284) - [Mark’s reply](https://dev.to/matfrana/react-where-are-you-going-5284#comment-2c8g3) - [Ryan Florence on Twitter](https://twitter.com/ryanflorence/status/1747699804598395215) - [Increasingly miffed about the state of React releases](https://macwright.com/2024/01/03/miffed-about-react) - [React is getting a bit of a kicking lately](https://piccalil.li/blog/react-is-getting-a-bit-of-a-kicking-recently/) -- [[00:37:55](#rsc-updates)]: RSCs +- [[37:55](#rsc-updates)]: RSCs - [RSCs: The Good, the Bad, and the Ugly](https://www.mayank.co/blog/react-server-components/) - [Leerob reacts](https://www.youtube.com/watch?v=8DyzsSWNcDE) - [The Two Reacts](https://overreacted.io/the-two-reacts/) @@ -59,38 +59,38 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t - [“RSC does not require a server”](https://twitter.com/dan_abramov2/status/1745795274977493317) – Dan - [React Server Components paradigm](https://www.telerik.com/blogs/react-server-components-paradigm) - ⚡ Lightning round ⚡ - - [[00:47:40](#ryan-carniato-js-frameworks-into-2024)]: [Ryan Carniatto, JS Frameworks heading into 2024](https://dev.to/this-is-learning/javascript-frameworks-heading-into-2024-i3l) - - [[00:48:15](#rspack)]: [RSBuild guide to migrating from CRA](https://rsbuild.dev/guide/migration/cra) - - [[00:50:10](#benchmarking-react-native-styling)]: [React Native styling tool benchmarks](https://www.reddit.com/r/reactnative/comments/1adasz4/react_native_cssstylesheet_frameworks_benchmark/) - - [[00:50:40](#weird-things-engineers-believe-about-web-development)]: [Weird things engineers believe about Web development](https://birtles.blog/2024/01/06/weird-things-engineers-believe-about-development/) - - [[00:51:59](#tea.xyz)]: [Homebrew creator launching Tea.xyz, an OSS funding project](https://twitter.com/mxcl/status/1749894737862025330?s=46&t=uXPe0cHZZfyFyGotvsr9IQ) - - [[00:55:44](#everything-on-npm)]: [NPM registry prank leaves developers unable to unpublish packages](https://www.scmagazine.com/news/npm-registry-prank-leaves-developers-unable-to-unpublish-packages) - - [[00:57:00](#codepen-top-10)]: [CodePen top 10](https://codepen.io/2023/popular/pens/10) - - [[00:57:37](#v8-performance-improvements)]: [V8 performance improvements](https://v8.dev/blog/holiday-season-2023) + - [[47:40](#ryan-carniato-js-frameworks-into-2024)]: [Ryan Carniatto, JS Frameworks heading into 2024](https://dev.to/this-is-learning/javascript-frameworks-heading-into-2024-i3l) + - [[48:15](#rspack)]: [RSBuild guide to migrating from CRA](https://rsbuild.dev/guide/migration/cra) + - [[50:10](#benchmarking-react-native-styling)]: [React Native styling tool benchmarks](https://www.reddit.com/r/reactnative/comments/1adasz4/react_native_cssstylesheet_frameworks_benchmark/) + - [[50:40](#weird-things-engineers-believe-about-web-development)]: [Weird things engineers believe about Web development](https://birtles.blog/2024/01/06/weird-things-engineers-believe-about-development/) + - [[51:59](#tea.xyz)]: [Homebrew creator launching Tea.xyz, an OSS funding project](https://twitter.com/mxcl/status/1749894737862025330?s=46&t=uXPe0cHZZfyFyGotvsr9IQ) + - [[55:44](#everything-on-npm)]: [NPM registry prank leaves developers unable to unpublish packages](https://www.scmagazine.com/news/npm-registry-prank-leaves-developers-unable-to-unpublish-packages) + - [[57:00](#codepen-top-10)]: [CodePen top 10](https://codepen.io/2023/popular/pens/10) + - [[57:37](#v8-performance-improvements)]: [V8 performance improvements](https://v8.dev/blog/holiday-season-2023) -[00:00:00] **Carl Vitullo:** Thanks everyone for joining us for January's this month in React. I'm Carl. I am a staff product developer and freelance community manager here at React Tofl, the Discord for React Professionals. And Mark, you wanna introduce yourself? +[00:00] **Carl Vitullo:** Thanks everyone for joining us for January's this month in React. I'm Carl. I am a staff product developer and freelance community manager here at React Tofl, the Discord for React Professionals. And Mark, you wanna introduce yourself? -[00:00:14] **Mark Erikson:** Hi, I'm Mark. My day job is at Replay io where we're building a time, traveling demographer JavaScript. +[00:14] **Mark Erikson:** Hi, I'm Mark. My day job is at Replay io where we're building a time, traveling demographer JavaScript. -[00:00:20] And in my copious amount of spare time, I maintain Redux. +[00:20] And in my copious amount of spare time, I maintain Redux. -[00:00:23] **Carl Vitullo:** Seems like it's been a big month. I don't know if that's just January, but yeah, let's dive right into it. I'm going to start off with a couple of, like, quick hits of small news. +[00:23] **Carl Vitullo:** Seems like it's been a big month. I don't know if that's just January, but yeah, let's dive right into it. I'm going to start off with a couple of, like, quick hits of small news. ## Reviewing layoffs [Layoffs.fyi](https://layoffs.fyi/) -[00:00:32] **Carl Vitullo:** I've been keeping track of layoffs. fyi. The first month of 2024 is looking not great. January layoffs have picked up a decent amount compared to last month, but compared to last year, January 2023, they're down like 70%. So, seems like it's trending in a good direction on an annual basis, but my instinct is that the next year is going to still be pretty rough. +[00:32] **Carl Vitullo:** I've been keeping track of layoffs. fyi. The first month of 2024 is looking not great. January layoffs have picked up a decent amount compared to last month, but compared to last year, January 2023, they're down like 70%. So, seems like it's trending in a good direction on an annual basis, but my instinct is that the next year is going to still be pretty rough. -[00:00:58] Getting more specific, in January, 2022, there were five layoffs with about half a thousand affected. 2022 had a pretty steady upward trend for the rest of the year, which spiked really sharply in November. And then again, in January of 2023. Uh, so 2023 in January, there were 277 layoffs with about 89,000 affected. Jumping ahead to this year. January, there were 118 layoffs with about 31,000 affected. So this January is significantly less bad than last January, but compared to two years ago, it is... not even close it is super super high, still. +[00:58] Getting more specific, in January, 2022, there were five layoffs with about half a thousand affected. 2022 had a pretty steady upward trend for the rest of the year, which spiked really sharply in November. And then again, in January of 2023. Uh, so 2023 in January, there were 277 layoffs with about 89,000 affected. Jumping ahead to this year. January, there were 118 layoffs with about 31,000 affected. So this January is significantly less bad than last January, but compared to two years ago, it is... not even close it is super super high, still. -[00:01:38] But looking at this annually as part of a cycle, um, I attribute some of this, I'd attribute the spike in November to businesses wanting to avoid holiday layoffs and sort of front-loading those. +[01:38] But looking at this annually as part of a cycle, um, I attribute some of this, I'd attribute the spike in November to businesses wanting to avoid holiday layoffs and sort of front-loading those. -[00:01:49] So instead of splitting that same number of layoffs across two months, just doing it all at once in November. Um, and then. In January with new financial fears, starting new budgets. Uh, Annual decisions being made. In this fearful atmosphere management is biasing towards reducing expenses and lengthening runways, which I think is why there was such a large spike in January. +[01:49] So instead of splitting that same number of layoffs across two months, just doing it all at once in November. Um, and then. In January with new financial fears, starting new budgets. Uh, Annual decisions being made. In this fearful atmosphere management is biasing towards reducing expenses and lengthening runways, which I think is why there was such a large spike in January. -[00:02:17] I also want to note that the first time the us fed hiked interest rates was in March of 2022. So looking at how. Low layoffs were in the first months of 2022, and then seeing how they spiked, or rather how they grew over time through the rest of the year. I think that a large part of the thrashing, ensuring that we're seeing right now in layoffs and, um, poor job climate is due to really national and global scale economic conditions. +[02:17] I also want to note that the first time the us fed hiked interest rates was in March of 2022. So looking at how. Low layoffs were in the first months of 2022, and then seeing how they spiked, or rather how they grew over time through the rest of the year. I think that a large part of the thrashing, ensuring that we're seeing right now in layoffs and, um, poor job climate is due to really national and global scale economic conditions. -[00:02:49] Uh, you know, there's no more zero interest rates, so no more zero interest rate phenomenons, and nobody quite knows what the. Important financial metrics to optimize for, and even what to target are in this new funding environment. So I think that's really important context to keep in mind when thinking about layoffs. +[02:49] Uh, you know, there's no more zero interest rates, so no more zero interest rate phenomenons, and nobody quite knows what the. Important financial metrics to optimize for, and even what to target are in this new funding environment. So I think that's really important context to keep in mind when thinking about layoffs. ## Conferences @@ -100,21 +100,21 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t - [React Connection / RN Connection](https://reactconnection.io/) April 22nd, Paris, FR - [React Conf 2024](https://conf.react.dev) May 15-16 Henderson, NV -[00:03:06] **Carl Vitullo:** Conferences coming up in the next two to three months. I'm just going to run through a couple. +[03:06] **Carl Vitullo:** Conferences coming up in the next two to three months. I'm just going to run through a couple. -[00:03:11] We've got React Paris going on in March, towards the end of March 22nd, in fact. +[03:11] We've got React Paris going on in March, towards the end of March 22nd, in fact. -[00:03:17] Epic Web, which is hosted by Kent C. Dodds. That's going to be going on in April 11th in Park City, Utah. +[03:17] Epic Web, which is hosted by Kent C. Dodds. That's going to be going on in April 11th in Park City, Utah. -[00:03:24] React Miami, April 19th and 20th, in Miami, obviously. +[03:24] React Miami, April 19th and 20th, in Miami, obviously. -[00:03:29] Another Paris conference it looks like, or, I guess conference. +[03:29] Another Paris conference it looks like, or, I guess conference. -[00:03:33] **Mark Erikson:** It's an actual conference, and in fact, I will be speaking at React Connection Paris. +[03:33] **Mark Erikson:** It's an actual conference, and in fact, I will be speaking at React Connection Paris. -[00:03:37] **Carl Vitullo:** React Connection, React Native Connection, April 22nd in Paris. That's two Paris conferences exactly one month apart. So that's neat. +[03:37] **Carl Vitullo:** React Connection, React Native Connection, April 22nd in Paris. That's two Paris conferences exactly one month apart. So that's neat. -[00:03:46] And React Conf, the React Conf, is happening for the first time in three or four years. So that's, we're going to talk more about that later, but definitely pretty excited to see what they've got to share. +[03:46] And React Conf, the React Conf, is happening for the first time in three or four years. So that's, we're going to talk more about that later, but definitely pretty excited to see what they've got to share. ## Library releases @@ -125,79 +125,79 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t - [date-fns v3](https://blog.date-fns.org/v3-is-out/) - [ReScript v11](https://rescript-lang.org/blog/release-11-0-0) -[00:03:58] **Carl Vitullo:** All right, continuing on. Some more quick hits before we dive into the real proper link discussion. A number of new releases, just like smaller libraries, that don't quite merit a full discussion round in the main segment. Just thought I'd run through them real quick. +[03:58] **Carl Vitullo:** All right, continuing on. Some more quick hits before we dive into the real proper link discussion. A number of new releases, just like smaller libraries, that don't quite merit a full discussion round in the main segment. Just thought I'd run through them real quick. -[00:04:13] React ARIA from Adobe, which I As far as I understand is a component library more specifically aimed like the value proposition of it being accessibility, an area I always think of as an accessibility thing. That is a huge advantage of using a component toolkit like that is getting the long tail of smaller benefits like accessibility. So definitely interested to see that. +[04:13] React ARIA from Adobe, which I As far as I understand is a component library more specifically aimed like the value proposition of it being accessibility, an area I always think of as an accessibility thing. That is a huge advantage of using a component toolkit like that is getting the long tail of smaller benefits like accessibility. So definitely interested to see that. -[00:04:36] **Mark Erikson:** The important bit to distinguish there is React Aria, the original form of it is actually a whole bunch of hooks that are kind of like the headless data type management. Here's a hook for managing slider data or something. And this specifically, I believe they've then built their own component library on top of that. You've always been able to use the hooks yourself in your own components, but they've now also built a set of components that make use of those hooks as well. +[04:36] **Mark Erikson:** The important bit to distinguish there is React Aria, the original form of it is actually a whole bunch of hooks that are kind of like the headless data type management. Here's a hook for managing slider data or something. And this specifically, I believe they've then built their own component library on top of that. You've always been able to use the hooks yourself in your own components, but they've now also built a set of components that make use of those hooks as well. -[00:05:04] **Carl Vitullo:** Starting from the core primitives, ironing out the functionality there and then exposing it for, through a different means of accessing it. That sounds really cool. I'm really into it. +[05:04] **Carl Vitullo:** Starting from the core primitives, ironing out the functionality there and then exposing it for, through a different means of accessing it. That sounds really cool. I'm really into it. -[00:05:13] There are new ShadCN UI components. I don't have a list prepared to read off. Oh, yes I do. Carousel, drawer, pagination, resizable, a toast component called sonner, and a bunch of CLI updates. Yeah, love ShadCN UI. Love the concept. So, check it out. +[05:13] There are new ShadCN UI components. I don't have a list prepared to read off. Oh, yes I do. Carousel, drawer, pagination, resizable, a toast component called sonner, and a bunch of CLI updates. Yeah, love ShadCN UI. Love the concept. So, check it out. -[00:05:30] ESLint has a new version 9 alpha 0. Don't have anything prepared to speak about there. It's not ready for production use just to get feedback right now, but it caught my eye that there's a new major version of ESLint coming. +[05:30] ESLint has a new version 9 alpha 0. Don't have anything prepared to speak about there. It's not ready for production use just to get feedback right now, but it caught my eye that there's a new major version of ESLint coming. -[00:05:44] Speaking of major versions, there is a major version of jQuery version 4 that is in the works. It's not released yet, but I caught discussion of the announcement blog post and upgrade guide, so cool! jQuery, blast from the past, love to see it. +[05:44] Speaking of major versions, there is a major version of jQuery version 4 that is in the works. It's not released yet, but I caught discussion of the announcement blog post and upgrade guide, so cool! jQuery, blast from the past, love to see it. -[00:05:59] Two more here for you. There's `date-fns` v3. `date-fns` is definitely a great library. Good replacement tool for Moment, if you're still using Moment. And yeah, I love it. It's great. Major version. +[05:59] Two more here for you. There's `date-fns` v3. `date-fns` is definitely a great library. Good replacement tool for Moment, if you're still using Moment. And yeah, I love it. It's great. Major version. -[00:06:11] And last one. This is a little bit more of a stretch, but Rescript has Major Version 11 coming out. It's a compile to JavaScript typed language that I saw described as TypeScript the good parts. I haven't used it. I'm not super familiar with what its value proposition is, but yeah. New version. Seems cool. Love an experimental language. +[06:11] And last one. This is a little bit more of a stretch, but Rescript has Major Version 11 coming out. It's a compile to JavaScript typed language that I saw described as TypeScript the good parts. I haven't used it. I'm not super familiar with what its value proposition is, but yeah. New version. Seems cool. Love an experimental language. -[00:06:32] **Mark Erikson:** There is some amount of buzz around what was originally known as, let's see, what was it before Rescript? Something else that started with RE, and I can't think of it right now. The language itself started as a fork of OCaml with more JavaScript like syntax. +[06:32] **Mark Erikson:** There is some amount of buzz around what was originally known as, let's see, what was it before Rescript? Something else that started with RE, and I can't think of it right now. The language itself started as a fork of OCaml with more JavaScript like syntax. -[00:06:49] Jordan Walke and Chung Lo and some other folks in the React community were really trying to push this around like 2017 or so. And it felt like there might be enough bleed over from the React community to make it a thing. And there was a whole series of forks around the tool and the language syntax that really killed any actual momentum it had. +[06:49] Jordan Walke and Chung Lo and some other folks in the React community were really trying to push this around like 2017 or so. And it felt like there might be enough bleed over from the React community to make it a thing. And there was a whole series of forks around the tool and the language syntax that really killed any actual momentum it had. -[00:07:12] And that combined with TypeScript really taking over as the definitive way to write types for JavaScript. I feel like it's moment passed around 2017, so there's, you know, apparently some, still some development work ongoing, and there's, there's always arguments of, use a better language, and it fixes some of the issues with TypeScript and JavaScript, but I think in practice TypeScript is good enough at this point, and, and the ecosystem momentum is there. +[07:12] And that combined with TypeScript really taking over as the definitive way to write types for JavaScript. I feel like it's moment passed around 2017, so there's, you know, apparently some, still some development work ongoing, and there's, there's always arguments of, use a better language, and it fixes some of the issues with TypeScript and JavaScript, but I think in practice TypeScript is good enough at this point, and, and the ecosystem momentum is there. -[00:07:40] **Carl Vitullo:** Tile to JavaScript language is a pretty hard sell on starting. If you're going to start a new product that they're going to maintain for years, it's a big swing to try and use a brand new language. But I always appreciate seeing experimental languages. I think that's where a lot of the experimentation happens. +[07:40] **Carl Vitullo:** Tile to JavaScript language is a pretty hard sell on starting. If you're going to start a new product that they're going to maintain for years, it's a big swing to try and use a brand new language. But I always appreciate seeing experimental languages. I think that's where a lot of the experimentation happens. -[00:07:56] And then maybe some of the learnings from running a language like that will be brought back into JavaScript, the ECMAScript process, or into TypeScript itself. Love to see it. +[07:56] And then maybe some of the learnings from running a language like that will be brought back into JavaScript, the ECMAScript process, or into TypeScript itself. Love to see it. -[00:08:07] +[08:07] ## [React Libraries for 2024 by Robin Wieruch](https://www.robinwieruch.de/react-libraries/) -[00:08:08] **Carl Vitullo:** We're going to start off talking about React libraries for 2024 from Robin Wieruch, which I hope I'm not butchering that too badly. +[08:08] **Carl Vitullo:** We're going to start off talking about React libraries for 2024 from Robin Wieruch, which I hope I'm not butchering that too badly. -[00:08:16] **Mark Erikson:** I don't know how to pronounce his last name either. +[08:16] **Mark Erikson:** I don't know how to pronounce his last name either. -[00:08:18] **Carl Vitullo:** Robin has been publishing very high quality blog posts and explanations and Just great content for years and years. I remember reading his stuff way back in 2015, 16, I want to say. And this is yet another in the same vein. It's a huge, very comprehensive list of recommended tools for all sorts of different aspects of building a real production website. +[08:18] **Carl Vitullo:** Robin has been publishing very high quality blog posts and explanations and Just great content for years and years. I remember reading his stuff way back in 2015, 16, I want to say. And this is yet another in the same vein. It's a huge, very comprehensive list of recommended tools for all sorts of different aspects of building a real production website. -[00:08:45] I mean, the table of contents, it's A full page on its own. Starting a new project, package manager, state management, data fetching, authentication, database, testing, rich text editor, drag and drop, mail. Just, it's a great list. Definitely worth reading, definitely worth checking out, especially if you're in a position of spinning up a new Greenfield project. +[08:45] I mean, the table of contents, it's A full page on its own. Starting a new project, package manager, state management, data fetching, authentication, database, testing, rich text editor, drag and drop, mail. Just, it's a great list. Definitely worth reading, definitely worth checking out, especially if you're in a position of spinning up a new Greenfield project. -[00:09:05] Something like that. +[09:05] Something like that. -[00:09:07] **Mark Erikson:** And, and actually on, on that note, uh, Robin also just put up a post, um, talking about how to actually create a new React project in 2024. His argument, not surprisingly, is start with Vite, especially if you're learning, it's, it's simpler, there's Fewer concepts to learn at once, and then here's when you would consider Vite, here's when you would consider Next, here's when you would consider Astro. +[09:07] **Mark Erikson:** And, and actually on, on that note, uh, Robin also just put up a post, um, talking about how to actually create a new React project in 2024. His argument, not surprisingly, is start with Vite, especially if you're learning, it's, it's simpler, there's Fewer concepts to learn at once, and then here's when you would consider Vite, here's when you would consider Next, here's when you would consider Astro. -[00:09:31] **Carl Vitullo:** What I have found myself reaching for personally when I'm starting out has been either just whatever Next or Remix. They both ship starter kits, but I've been using React for 10 years. I appreciate the concept of a novelty budget when working with a, uh, starting a new project. So, limiting the number of new concepts you're exposing yourself to is definitely smart advice. +[09:31] **Carl Vitullo:** What I have found myself reaching for personally when I'm starting out has been either just whatever Next or Remix. They both ship starter kits, but I've been using React for 10 years. I appreciate the concept of a novelty budget when working with a, uh, starting a new project. So, limiting the number of new concepts you're exposing yourself to is definitely smart advice. ## [Rising Stars on GitHub](https://risingstars.js.org/2023/en#section-react) -[00:09:54] **Carl Vitullo:** Very cool. Somewhat related, I came across a Rising Stars Annual award thing. It's a tracking open source projects that gained the most stars on GitHub over 2023. Pretty cool. Top 10, I think, for the React ecosystem were ShadCNUI, Excalidraw which I don't know, it's a, it's not a library. It's not really a React tool. +[09:54] **Carl Vitullo:** Very cool. Somewhat related, I came across a Rising Stars Annual award thing. It's a tracking open source projects that gained the most stars on GitHub over 2023. Pretty cool. Top 10, I think, for the React ecosystem were ShadCNUI, Excalidraw which I don't know, it's a, it's not a library. It's not really a React tool. -[00:10:21] I know it was created by. Christopher Chedeau . Christopher Chedeau, thank you. So I think that's why it's in here. I love it, but it's not, I don't know if I would call it a React project. Anyway, it did beat out Next. JS though, that's number three. Zustand, number four, Refine, Docusaurus, love Docusaurus, CreateT3App, NextUI, Tremor, and Serverless stack. +[10:21] I know it was created by. Christopher Chedeau . Christopher Chedeau, thank you. So I think that's why it's in here. I love it, but it's not, I don't know if I would call it a React project. Anyway, it did beat out Next. JS though, that's number three. Zustand, number four, Refine, Docusaurus, love Docusaurus, CreateT3App, NextUI, Tremor, and Serverless stack. -[00:10:42] So that's the top 10. There's a whole lot more, and they had a bunch of different ecosystems represented. It's a pretty cool list, pretty neat to see. Yeah, I've seen a comment in the chat, sad not to see UnoCSS. That's a new one to me. Wanted to check out though. +[10:42] So that's the top 10. There's a whole lot more, and they had a bunch of different ecosystems represented. It's a pretty cool list, pretty neat to see. Yeah, I've seen a comment in the chat, sad not to see UnoCSS. That's a new one to me. Wanted to check out though. ## [Bytes.dev 2024 Predictions](https://bytes.dev/archives/250) -[00:10:56] **Carl Vitullo:** Cool, yeah, another, keeping the thread of 2024, I don't know, analysis, predictions, Bytes, the Bytes. dev newsletter, which is one of the places that I pull links from to discuss, it put out a a list of predictions for 2024 and This is put out by Tyler McGinnis. He's been huge in the React ecosystem for years and years. I think bytes. dev is like one of the largest developer newsletters. Definitely a great source. +[10:56] **Carl Vitullo:** Cool, yeah, another, keeping the thread of 2024, I don't know, analysis, predictions, Bytes, the Bytes. dev newsletter, which is one of the places that I pull links from to discuss, it put out a a list of predictions for 2024 and This is put out by Tyler McGinnis. He's been huge in the React ecosystem for years and years. I think bytes. dev is like one of the largest developer newsletters. Definitely a great source. -[00:11:23] Some of his predictions though, +[11:23] Some of his predictions though, -[00:11:25] bun becomes the default runtime for the front end. That seems like a big swing. I don't know. Mark, what do you think about that? +[11:25] bun becomes the default runtime for the front end. That seems like a big swing. I don't know. Mark, what do you think about that? -[00:11:30] **Mark Erikson:** So the caveat here is that the Bytes newsletter is written in a very intentional tongue in cheek humorous style. +[11:30] **Mark Erikson:** So the caveat here is that the Bytes newsletter is written in a very intentional tongue in cheek humorous style. -[00:11:38] There's real links and real thoughts, but Bytes is very much a sarcastic humor kind of newsletter rather than a strict straight to the point newsletter. So most of these predictions are very tongue in cheek. +[11:38] There's real links and real thoughts, but Bytes is very much a sarcastic humor kind of newsletter rather than a strict straight to the point newsletter. So most of these predictions are very tongue in cheek. -[00:11:51] **Carl Vitullo:** Second prediction was more than three of your favorite open source software slash dev tool startups will die. +[11:51] **Carl Vitullo:** Second prediction was more than three of your favorite open source software slash dev tool startups will die. -[00:11:57] **Mark Erikson:** I mean, that one's pretty much a given, right? +[11:57] **Mark Erikson:** I mean, that one's pretty much a given, right? -[00:11:59] **Carl Vitullo:** Yeah, right. Fair. But you could make that about any startup class over an annual timescale, but fair enough. AI will replace no code, low code tools. Seems plausible. Maybe not this year. Netlify gets acquired by GoDaddy. Yeah. Well, I don't know. I won't go through every single one, but I, one, another one that I did was no one will figure out what local first actually means. +[11:59] **Carl Vitullo:** Yeah, right. Fair. But you could make that about any startup class over an annual timescale, but fair enough. AI will replace no code, low code tools. Seems plausible. Maybe not this year. Netlify gets acquired by GoDaddy. Yeah. Well, I don't know. I won't go through every single one, but I, one, another one that I did was no one will figure out what local first actually means. -[00:12:19] I have opinions there. I feel like local first is a good thing to strive for, but hopefully more people figure it out this year.(chuckles) Cool. Mark, you want to tell us about React 19? +[12:19] I have opinions there. I feel like local first is a good thing to strive for, but hopefully more people figure it out this year.(chuckles) Cool. Mark, you want to tell us about React 19? ## Speculating on React 19 @@ -208,115 +208,115 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t - [New client-side hooks coming in React 19](https://marmelab.com/blog/2024/01/23/react-19-new-hooks.html) - [React Forget updates](https://twitter.com/dan_abramov2/status/1747640983980806466) -[00:12:29] **Mark Erikson:** Yes, so when we did this last month and we were doing some predictions for this year, saying that I expect React 19 to probably happen this year because we were seeing some initial discussions and mentions from the React team, and while we still don't actually have a timeline, there is a lot more activity going on. +[12:29] **Mark Erikson:** Yes, so when we did this last month and we were doing some predictions for this year, saying that I expect React 19 to probably happen this year because we were seeing some initial discussions and mentions from the React team, and while we still don't actually have a timeline, there is a lot more activity going on. -[00:12:50] On that front, item one, Satya, one of the React Forget team members, happened to drop by one of our discussion threads over in the Tech Reads and News channel and said that the general discussion of the React team seems to be that the next stable release of React will be React 19, there hasn't been any specific discussions or plans around a React 18. 3 minor version, and that generally matches just the other bits and pieces of discussion I've seen so far. +[12:50] On that front, item one, Satya, one of the React Forget team members, happened to drop by one of our discussion threads over in the Tech Reads and News channel and said that the general discussion of the React team seems to be that the next stable release of React will be React 19, there hasn't been any specific discussions or plans around a React 18. 3 minor version, and that generally matches just the other bits and pieces of discussion I've seen so far. -[00:13:20] So we can probably expect that the next actual release will be React 19. One really big thing that came out In some Twitter threads is the idea that React might finally ship a form of context selectors. +[13:20] So we can probably expect that the next actual release will be React 19. One really big thing that came out In some Twitter threads is the idea that React might finally ship a form of context selectors. -[00:13:36] This was a proposal that was first done back in 2019 by Josh Story, who at the time was just a community member. He now currently works for Vercel building server side React stuff. Andrew Clarke played with a prototype of building context selectors in like 2020 and then it's the concept sat around and hasn't gone anywhere, especially with all the focus on suspense and server components. +[13:36] This was a proposal that was first done back in 2019 by Josh Story, who at the time was just a community member. He now currently works for Vercel building server side React stuff. Andrew Clarke played with a prototype of building context selectors in like 2020 and then it's the concept sat around and hasn't gone anywhere, especially with all the focus on suspense and server components. -[00:14:01] But in this discussion thread, the React team has said that their approach for implementing quote, context selectors And optimizing re renders when a component only needs one piece of data from a context will actually be to use the new named use, which is still horribly confusing. Like, you're going to be able to call the use hook inside of use memo, and that basically becomes like your selector function, in a sense. +[14:01] But in this discussion thread, the React team has said that their approach for implementing quote, context selectors And optimizing re renders when a component only needs one piece of data from a context will actually be to use the new named use, which is still horribly confusing. Like, you're going to be able to call the use hook inside of use memo, and that basically becomes like your selector function, in a sense. -[00:14:34] And that will actually allow React to look at the contents of what you've returned, and maybe even call the memo callback itself, separately from rendering, determine that, look, nothing actually changed, and actually be able to skip out of potential re renders that way. I don't know if this will actually be in React 19 yet, I don't know if it's Something that they've proof of concepted already, but that's, that is a pretty big deal. +[14:34] And that will actually allow React to look at the contents of what you've returned, and maybe even call the memo callback itself, separately from rendering, determine that, look, nothing actually changed, and actually be able to skip out of potential re renders that way. I don't know if this will actually be in React 19 yet, I don't know if it's Something that they've proof of concepted already, but that's, that is a pretty big deal. -[00:15:04] We've been waiting for that one for a while. Another one that we've been waiting for a very long time is proper web component support. React allows you to render web component elements. They're just, HTML string tags in that sense, but there's been lots of complexity around being able to accurately pass props into web components because of the differences between React passing around JavaScript values as props. +[15:04] We've been waiting for that one for a while. Another one that we've been waiting for a very long time is proper web component support. React allows you to render web component elements. They're just, HTML string tags in that sense, but there's been lots of complexity around being able to accurately pass props into web components because of the differences between React passing around JavaScript values as props. -[00:15:31] Versus web components having attributes that are strings versus properties that have to be set via JavaScript. And I don't understand all the nuances there, I have not used web components. But a, like an issue was filed back in like 2017, complaining that React did not have correct support for interacting with web components. +[15:31] Versus web components having attributes that are strings versus properties that have to be set via JavaScript. And I don't understand all the nuances there, I have not used web components. But a, like an issue was filed back in like 2017, complaining that React did not have correct support for interacting with web components. -[00:15:55] It took four years until someone from Meta finally went through all the arguments and proposals of what the exact semantics should be, and finally implemented An experimental feature that made them work right for React, but that feature has sat inexperimental for the last two plus years. And so they finally commented on that thread a couple weeks ago and said, this will be in React 19, finally. +[15:55] It took four years until someone from Meta finally went through all the arguments and proposals of what the exact semantics should be, and finally implemented An experimental feature that made them work right for React, but that feature has sat inexperimental for the last two plus years. And so they finally commented on that thread a couple weeks ago and said, this will be in React 19, finally. -[00:16:24] **Carl Vitullo:** I've never really used Web Components either. In a lot of ways, they felt like they were trying to solve the same challenges, or a similar set of challenges that React did. But in many ways, React seems to take on a much larger scope. I mean, I think that's exemplified by the emphasis on React Server Components now, where you Like web components are trying to componentize web and that's cool, that's great. +[16:24] **Carl Vitullo:** I've never really used Web Components either. In a lot of ways, they felt like they were trying to solve the same challenges, or a similar set of challenges that React did. But in many ways, React seems to take on a much larger scope. I mean, I think that's exemplified by the emphasis on React Server Components now, where you Like web components are trying to componentize web and that's cool, that's great. -[00:16:50] But React has componentized UI across, I mean, it's used in mobile, it's used in web to make the UI for video games. It's crossing the server client boundary now in a very meaningful way. So I mean, that's why I've, that's why I have never used web components is because I have never felt a pain that they seem to solve that React was not already trying to solve on its own. +[16:50] But React has componentized UI across, I mean, it's used in mobile, it's used in web to make the UI for video games. It's crossing the server client boundary now in a very meaningful way. So I mean, that's why I've, that's why I have never used web components is because I have never felt a pain that they seem to solve that React was not already trying to solve on its own. -[00:17:14] Yeah, so I don't know. Cool to see it coming in though. It'll be interesting to have, cool to have it as another option. But I'm skeptical that it's going to be that meaningful in the grand scheme of things just because, okay, It's kind, it's, it's the new render target in a way. +[17:14] Yeah, so I don't know. Cool to see it coming in though. It'll be interesting to have, cool to have it as another option. But I'm skeptical that it's going to be that meaningful in the grand scheme of things just because, okay, It's kind, it's, it's the new render target in a way. -[00:17:29] It's like not the normal DOM. You'd need a compatibility shim make it work with React Native. So I guess maybe that's a good analogy. +[17:29] It's like not the normal DOM. You'd need a compatibility shim make it work with React Native. So I guess maybe that's a good analogy. -[00:17:39] **Mark Erikson:** There's been lots and lots of arguments. I mean, like a lot of web component fans hate React, you know, because it's too, it's too big. It's too much JavaScript. +[17:39] **Mark Erikson:** There's been lots and lots of arguments. I mean, like a lot of web component fans hate React, you know, because it's too, it's too big. It's too much JavaScript. -[00:17:47] It tries to take over the, the browser, et cetera. +[17:47] It tries to take over the, the browser, et cetera. -[00:17:49] **Carl Vitullo:** It doesn't use the platform. Yeah. +[17:49] **Carl Vitullo:** It doesn't use the platform. Yeah. -[00:17:51] **Mark Erikson:** Right, right. I think the best pitch for web components plus React that would benefit from this new support is maybe your company has. The Vue apps and Angular apps and React apps, you're trying to have a unified design system and you build that design system as web components, so you only have to implement it once. +[17:51] **Mark Erikson:** Right, right. I think the best pitch for web components plus React that would benefit from this new support is maybe your company has. The Vue apps and Angular apps and React apps, you're trying to have a unified design system and you build that design system as web components, so you only have to implement it once. -[00:18:14] And then you can now use those design components properly from within React. +[18:14] And then you can now use those design components properly from within React. -[00:18:20] **Carl Vitullo:** Intuitively makes sense to me. I strongly suspect that the technical realities of making that work are going to be pretty painful. But yeah, cool. It sounds like a large team. kind of challenge. I don't know. But yeah, I think it, I think to me the mental model that makes sense for it is it's a little bit like dropping down into native code on React Native, but on the web. +[18:20] **Carl Vitullo:** Intuitively makes sense to me. I strongly suspect that the technical realities of making that work are going to be pretty painful. But yeah, cool. It sounds like a large team. kind of challenge. I don't know. But yeah, I think it, I think to me the mental model that makes sense for it is it's a little bit like dropping down into native code on React Native, but on the web. -[00:18:43] If you're using web components, you're, you're working at a lower level of abstraction than, than most components you would write in React. +[18:43] If you're using web components, you're, you're working at a lower level of abstraction than, than most components you would write in React. -[00:18:51] **Mark Erikson:** Yep. I've been complaining about the React teams, you know, seemingly single focus on server components to the Somewhat detriment of new features for the client side. +[18:51] **Mark Erikson:** Yep. I've been complaining about the React teams, you know, seemingly single focus on server components to the Somewhat detriment of new features for the client side. ## [Upcoming client features in React](https://twitter.com/rickhanlonii/status/1747333623152275685) -[00:19:01] **Mark Erikson:** Having said that, Rick Hanlon from the React team did recently put up a Twitter thread where he pointed out that there are a number of new features that work in the client and in some cases can be considered client side only. There's a, these are primarily a new series of built in hooks. poorly named UseHook, which can accept a promise and will be the new official trigger for suspense behavior. +[19:01] **Mark Erikson:** Having said that, Rick Hanlon from the React team did recently put up a Twitter thread where he pointed out that there are a number of new features that work in the client and in some cases can be considered client side only. There's a, these are primarily a new series of built in hooks. poorly named UseHook, which can accept a promise and will be the new official trigger for suspense behavior. -[00:19:26] You could, you will also be able to call the UseHook and pass in a context object to grab the context value, and apparently you can actually call that inside of loops and non rendering functions like callbacks, and so there will be some very interesting flexibility out of that. There's some improvements to StartTransition and FormActions, and then some new hooks for FormState, FormStatus, and OptimisticUpdates. +[19:26] You could, you will also be able to call the UseHook and pass in a context object to grab the context value, and apparently you can actually call that inside of loops and non rendering functions like callbacks, and so there will be some very interesting flexibility out of that. There's some improvements to StartTransition and FormActions, and then some new hooks for FormState, FormStatus, and OptimisticUpdates. -[00:19:56] All those do exist in the latest Canaries, so if you're using Next. js, those are probably available, but they will hopefully actually become stable as part of React 19. So I do have a link under here where someone wrote a follow up article that actually gives some further details about some of those. +[19:56] All those do exist in the latest Canaries, so if you're using Next. js, those are probably available, but they will hopefully actually become stable as part of React 19. So I do have a link under here where someone wrote a follow up article that actually gives some further details about some of those. -[00:20:15] And then, while it's not specifically listed in there, some other things we can expect are they will finally be removing some deprecated features like the Legacy Context API. Given that it's been deprecated for multiple years, I expect that very few people listening have ever actually used it. People have asked the React team to clean up dead features for a long time, and they're finally going to be doing some of that. +[20:15] And then, while it's not specifically listed in there, some other things we can expect are they will finally be removing some deprecated features like the Legacy Context API. Given that it's been deprecated for multiple years, I expect that very few people listening have ever actually used it. People have asked the React team to clean up dead features for a long time, and they're finally going to be doing some of that. -[00:20:38] And React 19 should also include the source maps work that I did. +[20:38] And React 19 should also include the source maps work that I did. -[00:20:44] **Carl Vitullo:** Yeah, I mean I guess that's the big advantage. That's what you do with a major version release, is you remove all the things you deprecated over the, since the last release. So, with, what, 5 years? Since 18? +[20:44] **Carl Vitullo:** Yeah, I mean I guess that's the big advantage. That's what you do with a major version release, is you remove all the things you deprecated over the, since the last release. So, with, what, 5 years? Since 18? -[00:20:56] **Mark Erikson:** No, 18, 18 came out in 21, sometime in 22, I think. +[20:56] **Mark Erikson:** No, 18, 18 came out in 21, sometime in 22, I think. -[00:21:03] **Carl Vitullo:** Oh, was it that recently? Okay. Yeah. I guess I'm conflating with hooks, so cool. Yeah. And just to enumerate the upcoming client features that Rick was excited about, there's use in two contact or. Two settings. There's usePromise, which, like you said, is the, uh, how we're going to be interacting with suspense or, yeah, interacting with suspense from now on. +[21:03] **Carl Vitullo:** Oh, was it that recently? Okay. Yeah. I guess I'm conflating with hooks, so cool. Yeah. And just to enumerate the upcoming client features that Rick was excited about, there's use in two contact or. Two settings. There's usePromise, which, like you said, is the, uh, how we're going to be interacting with suspense or, yeah, interacting with suspense from now on. -[00:21:25] UseContext. I don't know, I don't, I appreciate this simplicity being added by this use hook, but calling it a use hook and then not having it follow the rules of hooks as has been established for many years. It just seems like it adds confusion to me. I don't know. We'll have to see how that shakes out. +[21:25] UseContext. I don't know, I don't, I appreciate this simplicity being added by this use hook, but calling it a use hook and then not having it follow the rules of hooks as has been established for many years. It just seems like it adds confusion to me. I don't know. We'll have to see how that shakes out. -[00:21:45] **Mark Erikson:** That plus the literal naming and how carefully I had to word that sentence for it to make any sense. +[21:45] **Mark Erikson:** That plus the literal naming and how carefully I had to word that sentence for it to make any sense. -[00:21:52] **Carl Vitullo:** So, I don't know. We'll see. But yeah, async transitions in the start transition. Function, form actions for React server components, useFormState, useFormStatus, and useOptimistic. So there's our enumerated upcoming client features, so keep an eye out for those. I think those are currently available in a Canary release, so if you want to play with those. +[21:52] **Carl Vitullo:** So, I don't know. We'll see. But yeah, async transitions in the start transition. Function, form actions for React server components, useFormState, useFormStatus, and useOptimistic. So there's our enumerated upcoming client features, so keep an eye out for those. I think those are currently available in a Canary release, so if you want to play with those. -[00:22:13] And very cool to have your source maps PR ship out. Finally! Ha ha ha. Looking forward to seeing that. Hopefully, I just want to see, I'd like to see people react like, oh my god, you can do this now! Ah, debugging got so much easier! Yeah. +[22:13] And very cool to have your source maps PR ship out. Finally! Ha ha ha. Looking forward to seeing that. Hopefully, I just want to see, I'd like to see people react like, oh my god, you can do this now! Ah, debugging got so much easier! Yeah. -[00:22:26] **Mark Erikson:** For the ten of us who actually try to debug into React. +[22:26] **Mark Erikson:** For the ten of us who actually try to debug into React. -[00:22:30] **Carl Vitullo:** Well, hopefully it'll make the stack traces easier to read anyway. +[22:30] **Carl Vitullo:** Well, hopefully it'll make the stack traces easier to read anyway. -[00:22:33] +[22:33] ## [Remix SPA mode](https://github.com/remix-run/remix/pull/8338) -[00:22:34] **Carl Vitullo:** Let's move on to some framework updates. Remix is working on a single page application mode, which I think is interesting. I think this makes a lot of sense as a general framing for things like Intuitively, I think my mental model for, like, different forms of complex web applications, there's solutions like Gatsby that did full static generation. +[22:34] **Carl Vitullo:** Let's move on to some framework updates. Remix is working on a single page application mode, which I think is interesting. I think this makes a lot of sense as a general framing for things like Intuitively, I think my mental model for, like, different forms of complex web applications, there's solutions like Gatsby that did full static generation. -[00:22:57] Like, you can only, you do a build time and then you publish a bunch of HTML and JavaScript. Then the opposite of that would be like Next and Remix, which are full server client frameworks that help you figure out how to write code across that seam. So, Remix adding more flexibility to cover different areas in that spectrum, I think is really interesting. +[22:57] Like, you can only, you do a build time and then you publish a bunch of HTML and JavaScript. Then the opposite of that would be like Next and Remix, which are full server client frameworks that help you figure out how to write code across that seam. So, Remix adding more flexibility to cover different areas in that spectrum, I think is really interesting. -[00:23:20] It's like a single page application, fully static assets shipped from a CDN to the client's browser. That has real use cases. That is the simplest way to host an application. Lowest cost, lowest upkeep, lowest deployment complexity, all of that. That's still a real niche that has real reasons to reach for that. +[23:20] It's like a single page application, fully static assets shipped from a CDN to the client's browser. That has real use cases. That is the simplest way to host an application. Lowest cost, lowest upkeep, lowest deployment complexity, all of that. That's still a real niche that has real reasons to reach for that. -[00:23:39] Then, one step advanced from that is something that has a build time generation step. Then, up to the full server, able to respond to requests individually, that is sort of classic Remix or Next. So, I'm excited to see this. They mentioned that it's likely to stabilize as the Vite plugin that they, that we'd talked about, I think, last time, maybe November. +[23:39] Then, one step advanced from that is something that has a build time generation step. Then, up to the full server, able to respond to requests individually, that is sort of classic Remix or Next. So, I'm excited to see this. They mentioned that it's likely to stabilize as the Vite plugin that they, that we'd talked about, I think, last time, maybe November. -[00:24:04] But yeah, so SPA mode likely to stabilize alongside the Vite plugin. They're also looking at server component support. It sounds like they're going to be having some different Approaches from how Next is doing it. Yeah, curious to see what they come up with. Ryan Florence has been a little bit on a tear with some good tweets lately. +[24:04] But yeah, so SPA mode likely to stabilize alongside the Vite plugin. They're also looking at server component support. It sounds like they're going to be having some different Approaches from how Next is doing it. Yeah, curious to see what they come up with. Ryan Florence has been a little bit on a tear with some good tweets lately. -[00:24:24] Yeah, I don't know. It feels like something changed. It feels like he's been, uh, a little more visible, at least in my feed lately. +[24:24] Yeah, I don't know. It feels like something changed. It feels like he's been, uh, a little more visible, at least in my feed lately. -[00:24:31] **Mark Erikson:** He'd actually take it. 6 months mostly off Twitter, and at least I might have actually deleted his account at one point. +[24:31] **Mark Erikson:** He'd actually take it. 6 months mostly off Twitter, and at least I might have actually deleted his account at one point. -[00:24:37] **Carl Vitullo:** Yeah, that scans, because I had just felt like I didn't see anything from him for a long time, and I was wondering if that was, I don't know, my consumption habits changing, the algorithm giving me different things, but yeah. Good to see him back because a lot of this is top tier, really great info, really great news. +[24:37] **Carl Vitullo:** Yeah, that scans, because I had just felt like I didn't see anything from him for a long time, and I was wondering if that was, I don't know, my consumption habits changing, the algorithm giving me different things, but yeah. Good to see him back because a lot of this is top tier, really great info, really great news. ## [Next 14.1](https://nextjs.org/blog/next-14-1) -[00:24:53] **Carl Vitullo:** Yeah. Okay. Moving on to from Remix to Next. Next shipped 14. 1. Just going to run through some of the changes. I haven't played with this myself, so just going to, I'm basically summarizing the blog post here. But yeah, they talk about performance improvements, lots of faster local server startup. +[24:53] **Carl Vitullo:** Yeah. Okay. Moving on to from Remix to Next. Next shipped 14. 1. Just going to run through some of the changes. I haven't played with this myself, so just going to, I'm basically summarizing the blog post here. But yeah, they talk about performance improvements, lots of faster local server startup. -[00:25:12] Faster code updates, a lot faster, say up to 96. 3, very precise. Faster code updates with fast refresh. Faster initial route compiled without caching. And they mentioned that they're, it's not so okay. It looks like they've been adding a lot of caching to get rebuilds faster. They talk about. Adding, in the future, disk caching. +[25:12] Faster code updates, a lot faster, say up to 96. 3, very precise. Faster code updates with fast refresh. Faster initial route compiled without caching. And they mentioned that they're, it's not so okay. It looks like they've been adding a lot of caching to get rebuilds faster. They talk about. Adding, in the future, disk caching. -[00:25:32] So right now you start up the server, and every time you rebuild, the cache is there. The cache is warm. But starting the server has a cold cache, so it's slower. So a disk cache would dump that memory cache to disk, so that when you restart the server, it Still has a warm calf, so it starts up faster. Major trade off there is that you introduce a whole new category of caching bugs. +[25:32] So right now you start up the server, and every time you rebuild, the cache is there. The cache is warm. But starting the server has a cold cache, so it's slower. So a disk cache would dump that memory cache to disk, so that when you restart the server, it Still has a warm calf, so it starts up faster. Major trade off there is that you introduce a whole new category of caching bugs. -[00:25:55] I know when, many moons ago, when I was developing very actively on a Gatsby project, I remember one of my debugging steps. Once one A step less desperate than deleting node modules was deleting the cache. It will be cool to see if performance improvements come out of that. That is always something I'm aware of, just the increased complexity of additional layers of caching. +[25:55] I know when, many moons ago, when I was developing very actively on a Gatsby project, I remember one of my debugging steps. Once one A step less desperate than deleting node modules was deleting the cache. It will be cool to see if performance improvements come out of that. That is always something I'm aware of, just the increased complexity of additional layers of caching. -[00:26:18] They talk about improved self hosting, new documentation. for some custom cache handling. And I'm going to bring in another tweet that I saw, I don't know if I'll be able to get the link quickly, but I did see, um, a tweet from Dan Abramov in the context of Next. He mentioned that he thought it would be very valuable if Next shipped like a simple mode that did not have any of the advanced features that require The host, to be aware of it. +[26:18] They talk about improved self hosting, new documentation. for some custom cache handling. And I'm going to bring in another tweet that I saw, I don't know if I'll be able to get the link quickly, but I did see, um, a tweet from Dan Abramov in the context of Next. He mentioned that he thought it would be very valuable if Next shipped like a simple mode that did not have any of the advanced features that require The host, to be aware of it. -[00:26:47] So right now, a lot of things, a lot of features in Next only work exactly as advertised if you're also hosting on Vercel. And that's been a criticism, that's been a criticism especially in the context of Yes, thank you, Mark. Especially in the context of Next and Vercel having a lot of core team members for React, it being tightly coupled to a paid hosting provider rubs some people the wrong way. +[26:47] So right now, a lot of things, a lot of features in Next only work exactly as advertised if you're also hosting on Vercel. And that's been a criticism, that's been a criticism especially in the context of Yes, thank you, Mark. Especially in the context of Next and Vercel having a lot of core team members for React, it being tightly coupled to a paid hosting provider rubs some people the wrong way. -[00:27:15] So I, that makes sense. I think that would be really cool to see, just make it a little bit more portable, especially as like the bleeding edge of React development. It would be nice if that was not required to be hosted on a specific platform. +[27:15] So I, that makes sense. I think that would be really cool to see, just make it a little bit more portable, especially as like the bleeding edge of React development. It would be nice if that was not required to be hosted on a specific platform. -[00:27:28] There's some other improvements, TurboPack improvements, developer experience improvements. One that I thought was minor but significant is push state and replace state support in AppRouter. I didn't realize this was missing or something you couldn't do, but yeah, sounds like now you can use the native browser history APIs while you're using the next AppRouter. Not specifically sure what that will enable, but Intuitively, it feels like it should open some new doors. +[27:28] There's some other improvements, TurboPack improvements, developer experience improvements. One that I thought was minor but significant is push state and replace state support in AppRouter. I didn't realize this was missing or something you couldn't do, but yeah, sounds like now you can use the native browser history APIs while you're using the next AppRouter. Not specifically sure what that will enable, but Intuitively, it feels like it should open some new doors. ## Annoyed at React roundup @@ -327,53 +327,53 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t - [Increasingly miffed about the state of React releases](https://macwright.com/2024/01/03/miffed-about-react) - [React is getting a bit of a kicking lately](https://piccalil.li/blog/react-is-getting-a-bit-of-a-kicking-recently/) -[00:27:56] **Carl Vitullo:** Can we talk about all the people who are annoyed at React? +[27:56] **Carl Vitullo:** Can we talk about all the people who are annoyed at React? -[00:27:59] **Mark Erikson:** Yes, let's. One of the hazards of being part of a large tool community, and especially one that is in some ways as controversial as React is, is that there's inevitably waves of discontent that come out. And we've seen this pop up in different ways over the years. +[27:59] **Mark Erikson:** Yes, let's. One of the hazards of being part of a large tool community, and especially one that is in some ways as controversial as React is, is that there's inevitably waves of discontent that come out. And we've seen this pop up in different ways over the years. -[00:28:18] I mean, 2017, 2018, there were a lot of people who were posting comments about how much they hated Redux and wanted to kill it. So this is not a new phenomenon, but there has been a very definite series of posts and sentiment from people over the last month or so expressing annoyance with React. And, I'll say this as a meta comment, the real problem at the moment is that there are 30 different overlapping semi related things that people are complaining about. +[28:18] I mean, 2017, 2018, there were a lot of people who were posting comments about how much they hated Redux and wanted to kill it. So this is not a new phenomenon, but there has been a very definite series of posts and sentiment from people over the last month or so expressing annoyance with React. And, I'll say this as a meta comment, the real problem at the moment is that there are 30 different overlapping semi related things that people are complaining about. -[00:28:51] And the problem is, everyone is complaining about a slightly different subset of problems, and It's making it impossible for anyone to actually have a clear and specific discussion about what things this person is actually upset about versus what someone else is upset about. There's complaints about React being tied to Vercel. +[28:51] And the problem is, everyone is complaining about a slightly different subset of problems, and It's making it impossible for anyone to actually have a clear and specific discussion about what things this person is actually upset about versus what someone else is upset about. There's complaints about React being tied to Vercel. -[00:29:14] There's complaints about React's versioning strategy. There's complaints about how the React team does marketing and DevRel or not. There's complaints about the fact that Next and Remix are highly listed in the React docs as tools to start projects. But Vite is relegated to an expandable details section that literally says, Well, I guess if you want to use this, we can't stop you. +[29:14] There's complaints about React's versioning strategy. There's complaints about how the React team does marketing and DevRel or not. There's complaints about the fact that Next and Remix are highly listed in the React docs as tools to start projects. But Vite is relegated to an expandable details section that literally says, Well, I guess if you want to use this, we can't stop you. -[00:29:43] There's complaints about server components not being sufficiently documented in the actual React docs. And a lot of these complaints are very vibe related. Like, a lot of this stuff isn't specific, technical concerns, and so it's really hard for anyone to meaningfully and coherently discuss a lot of these complaints. +[29:43] There's complaints about server components not being sufficiently documented in the actual React docs. And a lot of these complaints are very vibe related. Like, a lot of this stuff isn't specific, technical concerns, and so it's really hard for anyone to meaningfully and coherently discuss a lot of these complaints. -[00:30:09] So some of the current wave kicked off with Cassidy Williams. Very smart person, well known in the community, has been around for a while. Put up a post where she said she's kind of annoyed at React. It, it is a very, there's a lot of vibes in there. She's very real, she's very actually frustrated. At the same time, if you look at the list of things she says, it's several different pieces, and a lot of it isn't even technical. +[30:09] So some of the current wave kicked off with Cassidy Williams. Very smart person, well known in the community, has been around for a while. Put up a post where she said she's kind of annoyed at React. It, it is a very, there's a lot of vibes in there. She's very real, she's very actually frustrated. At the same time, if you look at the list of things she says, it's several different pieces, and a lot of it isn't even technical. -[00:30:34] And, and I'm not discounting her frustration, I'm noting that it's the kind of frustration that can't be solved with. Let's put out a new release. Or something. There was another post that came out a couple days later in response called React, where are you going? Very well written, and it was actually, I believe Published by someone who works on a tool called React Cosmos and some of his complaints came because they'd been trying to update the tool to work properly with the next app router and server components and they got it working but it was a very hard effort and they had to make changes to the API that actually made it less, harder to work with. This person put up a post that expressed a different set of grapes, and among other things, actually suggested that maybe what we need is a new React framework That is owned by the community, and it has like, a steering committee of prominent React community members as like a starting point before we even actually begin any development. +[30:34] And, and I'm not discounting her frustration, I'm noting that it's the kind of frustration that can't be solved with. Let's put out a new release. Or something. There was another post that came out a couple days later in response called React, where are you going? Very well written, and it was actually, I believe Published by someone who works on a tool called React Cosmos and some of his complaints came because they'd been trying to update the tool to work properly with the next app router and server components and they got it working but it was a very hard effort and they had to make changes to the API that actually made it less, harder to work with. This person put up a post that expressed a different set of grapes, and among other things, actually suggested that maybe what we need is a new React framework That is owned by the community, and it has like, a steering committee of prominent React community members as like a starting point before we even actually begin any development. -[00:31:39] And the author actually tagged a whole bunch of people by name on both Twitter and the article, and I was one of the people tagged. So I went in and I wrote a pretty long comment where, you know, I was doing, trying to actually respond to some of the points in the article, but then also saying, look, there is a lot of confusion and miscommunication going on right now. +[31:39] And the author actually tagged a whole bunch of people by name on both Twitter and the article, and I was one of the people tagged. So I went in and I wrote a pretty long comment where, you know, I was doing, trying to actually respond to some of the points in the article, but then also saying, look, there is a lot of confusion and miscommunication going on right now. -[00:32:01] And to be like, to be entirely frank, this has been frustrating for me. I'm, I read discussion. I want people to have meaningful discussion. And, okay, look, fine, it's, it's Twitter, it's, you know, Reddit, it's comment threads, I know too many people talking in too many places for it to be real discussion, but it would be nice if we could at least agree on what we're discussing, and the meta problem right now is that no one is. +[32:01] And to be like, to be entirely frank, this has been frustrating for me. I'm, I read discussion. I want people to have meaningful discussion. And, okay, look, fine, it's, it's Twitter, it's, you know, Reddit, it's comment threads, I know too many people talking in too many places for it to be real discussion, but it would be nice if we could at least agree on what we're discussing, and the meta problem right now is that no one is. -[00:32:25] I have seriously considered writing a 5, 000 word blog post that is just, Here is the definitive list of the 30 different topics the React ecosystem is arguing about right now. Now that we have this list, please continue arguing, just know that you're, here are the specific things that we're discussing. +[32:25] I have seriously considered writing a 5, 000 word blog post that is just, Here is the definitive list of the 30 different topics the React ecosystem is arguing about right now. Now that we have this list, please continue arguing, just know that you're, here are the specific things that we're discussing. -[00:32:44] **Carl Vitullo:** At the beginning of the argument, please make sure to enumerate which of these you are arguing about (both laugh). Yeah, yeah, I think the vibes you were talking about, especially in Cassidy's post, is, I think that's very real, but also the vibes are so important and impossible to measure that it's, I don't know, I think she had a really, One of the things that she talks about was it's frustrating that diversity efforts visibly took a backseat with React leadership, and there's just not as many voices from a variety of different people anymore. +[32:44] **Carl Vitullo:** At the beginning of the argument, please make sure to enumerate which of these you are arguing about (both laugh). Yeah, yeah, I think the vibes you were talking about, especially in Cassidy's post, is, I think that's very real, but also the vibes are so important and impossible to measure that it's, I don't know, I think she had a really, One of the things that she talks about was it's frustrating that diversity efforts visibly took a backseat with React leadership, and there's just not as many voices from a variety of different people anymore. -[00:33:13] And, you know, like, how do you, like, what a vibe. That is such a vibe check kind of complaint, and Speaking of vibes, I picked up on a vibe that there were, there was a lot of frustration from within the core team about how the React documentation rewrite went, and yeah, that took a couple of years, and seemed like it really burned out quite a number of people on the core team. +[33:13] And, you know, like, how do you, like, what a vibe. That is such a vibe check kind of complaint, and Speaking of vibes, I picked up on a vibe that there were, there was a lot of frustration from within the core team about how the React documentation rewrite went, and yeah, that took a couple of years, and seemed like it really burned out quite a number of people on the core team. -[00:33:35] And if you are burned out from Social, political aspects of this technical work, then you don't have as much energy to bring to that technical work. So it's like, if there's problems with the vibes, then I don't know what the solution there is, but it feels like it's gonna just have a, like, downstream detriment across the board. +[33:35] And if you are burned out from Social, political aspects of this technical work, then you don't have as much energy to bring to that technical work. So it's like, if there's problems with the vibes, then I don't know what the solution there is, but it feels like it's gonna just have a, like, downstream detriment across the board. -[00:33:53] **Mark Erikson:** There's a few other good articles and bits of discussion out there. Ryan Florence made a tweet saying he's still very much all in on React as the best way to build apps, but, you know, Remix is working on trying to Have an alternative vision for how do you build a full stack app other than Next? +[33:53] **Mark Erikson:** There's a few other good articles and bits of discussion out there. Ryan Florence made a tweet saying he's still very much all in on React as the best way to build apps, but, you know, Remix is working on trying to Have an alternative vision for how do you build a full stack app other than Next? -[00:34:11] Tom McWright put out a post where he measured the times between React stable releases and noted that the time from 18. 2 until now, is going on a year and a half, I think, and that's the longest we've ever gone between official stable releases of React, and meanwhile you've got Next using Canary builds And so there's definitely frustration over how the versioning strategy is going right now. Andy Bell just put up a post, uh, in the last day or so, saying that React's getting a bit of a kicking lately. +[34:11] Tom McWright put out a post where he measured the times between React stable releases and noted that the time from 18. 2 until now, is going on a year and a half, I think, and that's the longest we've ever gone between official stable releases of React, and meanwhile you've got Next using Canary builds And so there's definitely frustration over how the versioning strategy is going right now. Andy Bell just put up a post, uh, in the last day or so, saying that React's getting a bit of a kicking lately. -[00:34:44] So a little bit of the meta commentary there. But it was actually a very well balanced post that said, Look, there's, there are different tools and different trade offs. Certainly the ecosystem, the web dev ecosystem has first swung hard in the direction of Client side rendering and now we're kind of back in a server side thing and where do web components fit in this? +[34:44] So a little bit of the meta commentary there. But it was actually a very well balanced post that said, Look, there's, there are different tools and different trade offs. Certainly the ecosystem, the web dev ecosystem has first swung hard in the direction of Client side rendering and now we're kind of back in a server side thing and where do web components fit in this? -[00:35:04] But it was actually a pretty decent take some time and think about the trade offs for your situation. In practice, none of this actually necessarily affects you, the individual developer, working on an app for your day job. But there is some value in having a sense of what the big conversation is. +[35:04] But it was actually a pretty decent take some time and think about the trade offs for your situation. In practice, none of this actually necessarily affects you, the individual developer, working on an app for your day job. But there is some value in having a sense of what the big conversation is. -[00:35:21] Because, honestly, my goal out of all this would be that the React DevRel team does a bunch of work to improve the React docs. I have repeatedly griped that there's a bunch of things that I think should be done in the React docs that I'm shocked that they haven't done yet. If there's anything that comes out of this discussion, I'd like to see a lot of docs improvements. +[35:21] Because, honestly, my goal out of all this would be that the React DevRel team does a bunch of work to improve the React docs. I have repeatedly griped that there's a bunch of things that I think should be done in the React docs that I'm shocked that they haven't done yet. If there's anything that comes out of this discussion, I'd like to see a lot of docs improvements. -[00:35:43] **Carl Vitullo:** All of this conversation, all of this kind of annoyed, where are you going? Increasingly miffed, a bit of a kicking. Last month I went off on a little bit of a rant. I would say in defense of the React core team, like, I think they are truly at the bleeding edge of the web ecosystem. +[35:43] **Carl Vitullo:** All of this conversation, all of this kind of annoyed, where are you going? Increasingly miffed, a bit of a kicking. Last month I went off on a little bit of a rant. I would say in defense of the React core team, like, I think they are truly at the bleeding edge of the web ecosystem. -[00:36:00] And I think that in a very real way, they have been setting the tone, setting the subject of discussion that everyone else then builds on. And in so many different dimensions, like, Hooks came out of nowhere and invented this new approach to designing an API for web frameworks. Like, nobody else, I can't think of another project and hooks came out that shipped an ESLint plugin as part of using it correctly. +[36:00] And I think that in a very real way, they have been setting the tone, setting the subject of discussion that everyone else then builds on. And in so many different dimensions, like, Hooks came out of nowhere and invented this new approach to designing an API for web frameworks. Like, nobody else, I can't think of another project and hooks came out that shipped an ESLint plugin as part of using it correctly. -[00:36:34] Okay, this has enough weird little trade offs of how we've made it work that we need supporting tooling in order to help you. use it correctly, use it well. And now, that's very common. Like, now that's something that, like, Tailwind does. So I, to me, that was something that the core, the React core team introduced to the ecosystem that, as part of API design, you also think about it more holistically, not just, okay, I import this module, what's the function signature? +[36:34] Okay, this has enough weird little trade offs of how we've made it work that we need supporting tooling in order to help you. use it correctly, use it well. And now, that's very common. Like, now that's something that, like, Tailwind does. So I, to me, that was something that the core, the React core team introduced to the ecosystem that, as part of API design, you also think about it more holistically, not just, okay, I import this module, what's the function signature? -[00:37:02] But, okay, I install this package, I import it, what does the error message look like? In my IDE, just a very user centered framing of how to do API design and thinking of what tools are they likely to already use, everything possible to give them the best experience we know how to do. +[37:02] But, okay, I install this package, I import it, what does the error message look like? In my IDE, just a very user centered framing of how to do API design and thinking of what tools are they likely to already use, everything possible to give them the best experience we know how to do. -[00:37:22] Ryan Florence's tweet, he says, React is still the best rendering library for the web and the people behind it are doing are just doing their best and actually doing a great job. And I think that's extremely true. They are doing a really great job, but what they're trying to do is so advanced and so new that it's just really hard to get every detail of it right. And I think that part of the reason that they are now subject to so much criticism is because of how much they've gotten right in the past, and they've elevated the bar repeatedly, and so now the bar is super high and people have very high expectations. +[37:22] Ryan Florence's tweet, he says, React is still the best rendering library for the web and the people behind it are doing are just doing their best and actually doing a great job. And I think that's extremely true. They are doing a really great job, but what they're trying to do is so advanced and so new that it's just really hard to get every detail of it right. And I think that part of the reason that they are now subject to so much criticism is because of how much they've gotten right in the past, and they've elevated the bar repeatedly, and so now the bar is super high and people have very high expectations. ## RSC updates @@ -384,166 +384,166 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t - [“RSC does not require a server”](https://twitter.com/dan_abramov2/status/1745795274977493317) – Dan - [React Server Components paradigm](https://www.telerik.com/blogs/react-server-components-paradigm) -[00:37:55] **Carl Vitullo:** Should we go on to RSCs? A lot of stuff there. What a month! +[37:55] **Carl Vitullo:** Should we go on to RSCs? A lot of stuff there. What a month! -[00:37:59] **Mark Erikson:** Similar to some of the complaints, there was a really good post a few weeks ago called RSCs, the good, the bad, and the ugly. And one thing I appreciated was this was largely focused on technical aspects. +[37:59] **Mark Erikson:** Similar to some of the complaints, there was a really good post a few weeks ago called RSCs, the good, the bad, and the ugly. And one thing I appreciated was this was largely focused on technical aspects. -[00:38:09] Someone tried to use RSCs and gave a bunch of very specific feedback on here's what they're trying to do. Here are some of the pain points I ran into in terms of understanding, like, where do I put the use server versus use client markers? And then, I think there were some additional mentions at the bottom of bigger piece complaints about some of the direction of React and Next, but it was a good article overall, very well written, not Not flame bait, like this was a substantive technical discussion and criticism. +[38:09] Someone tried to use RSCs and gave a bunch of very specific feedback on here's what they're trying to do. Here are some of the pain points I ran into in terms of understanding, like, where do I put the use server versus use client markers? And then, I think there were some additional mentions at the bottom of bigger piece complaints about some of the direction of React and Next, but it was a good article overall, very well written, not Not flame bait, like this was a substantive technical discussion and criticism. -[00:38:42] Worth reading through that to get a sense of some of the pain points with Next and server components specifically. Which is part of the picture, the issue right now. Is there still really only one real production way to use server components right now. So, Lee Rob, uh, Lee Robinson, who's the primary dev rel. +[38:42] Worth reading through that to get a sense of some of the pain points with Next and server components specifically. Which is part of the picture, the issue right now. Is there still really only one real production way to use server components right now. So, Lee Rob, uh, Lee Robinson, who's the primary dev rel. -[00:39:02] for Vercel and Next did put up a post responding to some of the points that were raised in the Good, Bad, and Ugly post. So, some back and forth there. You can get a, have a chance to compare the thoughts there. Dan Abramov has resumed blogging, and if you've been watching him on Twitter, he has been iterating in public, trying to figure out, like, what is, what are the best analogies and metaphors and tools. +[39:02] for Vercel and Next did put up a post responding to some of the points that were raised in the Good, Bad, and Ugly post. So, some back and forth there. You can get a, have a chance to compare the thoughts there. Dan Abramov has resumed blogging, and if you've been watching him on Twitter, he has been iterating in public, trying to figure out, like, what is, what are the best analogies and metaphors and tools. -[00:39:29] To try to get people to wrap their head around server components and the mindset shift that's involved. And in some ways this is kind of frustrating because he is rapid tweeting lots of different ideas, lots of different catchphrases. Server components are like this. Well, server components are like that. +[39:29] To try to get people to wrap their head around server components and the mindset shift that's involved. And in some ways this is kind of frustrating because he is rapid tweeting lots of different ideas, lots of different catchphrases. Server components are like this. Well, server components are like that. -[00:39:48] And he's been building on some of that and he's got a couple different blog posts up. And I think we probably linked one of them last time where he's building up a series of posts. lead you to think about server components, but he literally hasn't even mentioned the word server component yet. He's been trying to help you understand, where does code run? +[39:48] And he's been building on some of that and he's got a couple different blog posts up. And I think we probably linked one of them last time where he's building up a series of posts. lead you to think about server components, but he literally hasn't even mentioned the word server component yet. He's been trying to help you understand, where does code run? -[00:40:10] Sometimes code runs on one computer, sometimes code runs on another computer. What if we had a way to control where that code runs? so he's working up to a metaphor to help people understand the mental model behind server components. And so I know he said that this is turning into an actual blog post series, he's got a few more posts he wants to write, and so this post, the two Reacts, is trying to work towards that train of thought. +[40:10] Sometimes code runs on one computer, sometimes code runs on another computer. What if we had a way to control where that code runs? so he's working up to a metaphor to help people understand the mental model behind server components. And so I know he said that this is turning into an actual blog post series, he's got a few more posts he wants to write, and so this post, the two Reacts, is trying to work towards that train of thought. -[00:40:41] There was another explainer post from someone else completely. called RSC is React Server Plus Component. One of the other debates on Twitter, and tying into the people are confused or annoyed, is that the term React Server Components is highly confusing, because they don't always have to run on a literal server. +[40:41] There was another explainer post from someone else completely. called RSC is React Server Plus Component. One of the other debates on Twitter, and tying into the people are confused or annoyed, is that the term React Server Components is highly confusing, because they don't always have to run on a literal server. -[00:41:05] Like, not on a web server as we think about it. Like, they can be used at build time and generate static output. They are not strictly a server side rendering concept, and Dan has been frantically trying to make the point that, depending on how you use the technology, like, you could even use it, like, inside of a web worker or something? +[41:05] Like, not on a web server as we think about it. Like, they can be used at build time and generate static output. They are not strictly a server side rendering concept, and Dan has been frantically trying to make the point that, depending on how you use the technology, like, you could even use it, like, inside of a web worker or something? -[00:41:27] Like, what, server components really are, like, a pre rendering method that spits out Serialize, React, as JSON. It just so happens that most of the time, and especially with Next, that happens in response to an API request. This blog post is trying to make the argument that rather than saying React Server Components with the implication that it runs on a web server, it's think of your code as like a React Server, React Client split, and the code for React Server could run At anywhere, at any time, depending on the bundler and the system architecture. +[41:27] Like, what, server components really are, like, a pre rendering method that spits out Serialize, React, as JSON. It just so happens that most of the time, and especially with Next, that happens in response to an API request. This blog post is trying to make the argument that rather than saying React Server Components with the implication that it runs on a web server, it's think of your code as like a React Server, React Client split, and the code for React Server could run At anywhere, at any time, depending on the bundler and the system architecture. -[00:42:09] I realize there's a lot of semantics and technical nuance there, but I thought this was actually one of the better posts. And then there's, again, like I said, Dan has been trying to make the point that they don't require a literal web server. And then there's been a number of other different articles and discussion about this as well. +[42:09] I realize there's a lot of semantics and technical nuance there, but I thought this was actually one of the better posts. And then there's, again, like I said, Dan has been trying to make the point that they don't require a literal web server. And then there's been a number of other different articles and discussion about this as well. -[00:42:25] So the mental model and how do you teach server components, I think, is. One of the biggest outstanding questions. And again, I would love to see more of this in the actual docs. +[42:25] So the mental model and how do you teach server components, I think, is. One of the biggest outstanding questions. And again, I would love to see more of this in the actual docs. -[00:42:35] **Carl Vitullo:** But, okay, so hopefully this is the putting it out there, ideating phase that then gets brought back in the rough draft, first pass. +[42:35] **Carl Vitullo:** But, okay, so hopefully this is the putting it out there, ideating phase that then gets brought back in the rough draft, first pass. -[00:42:45] So hopefully this does get brought back into the documentation as well, but I don't know if that's been I don't know how consistently that's happened over the last year or two. Something about Dan's, the two Reacts posts that stood out to me, I think that he had something really good to say. +[42:45] So hopefully this does get brought back into the documentation as well, but I don't know if that's been I don't know how consistently that's happened over the last year or two. Something about Dan's, the two Reacts posts that stood out to me, I think that he had something really good to say. -[00:43:00] I mean, just like the opening line of it was, I suppose I want to display something on your screen. Whether I want to display a web page, an interactive web app, or a native app you might download, at least two devices must be involved. Your device and mine. I think that is such a great, useful framing for what they're doing here. +[43:00] I mean, just like the opening line of it was, I suppose I want to display something on your screen. Whether I want to display a web page, an interactive web app, or a native app you might download, at least two devices must be involved. Your device and mine. I think that is such a great, useful framing for what they're doing here. -[00:43:17] Why React server components? It's, there are always at least two machines, the developer's machine, whether that's a local computer that they're running a build on or a server or a serverless function being executed somewhere, and the client machine. There's always a client machine. There's always something else. +[43:17] Why React server components? It's, there are always at least two machines, the developer's machine, whether that's a local computer that they're running a build on or a server or a serverless function being executed somewhere, and the client machine. There's always a client machine. There's always something else. -[00:43:38] So because of that, there's always going to be. Communication between those two and so that's my mental model for React server components is they are iterating on what that communication bridge looks like and how to interact with it. +[43:38] So because of that, there's always going to be. Communication between those two and so that's my mental model for React server components is they are iterating on what that communication bridge looks like and how to interact with it. -[00:43:53] **Mark Erikson:** There's been lots of arguments about what would be a better name for server components. +[43:53] **Mark Erikson:** There's been lots of arguments about what would be a better name for server components. -[00:43:57] People have suggested dozens of different options. My vote would be React serialized components. I think that is the best retrofit for the acronym RSC and I think it's the best explanation technically in terms of what it does rather than the literal word server. You are serializing a component's output. +[43:57] People have suggested dozens of different options. My vote would be React serialized components. I think that is the best retrofit for the acronym RSC and I think it's the best explanation technically in terms of what it does rather than the literal word server. You are serializing a component's output. -[00:44:19] What it does, what happens after that depends on the environment. Maybe you're going to turn it straight into HTML on the server. Maybe you're going to output a file to disk. But ultimately what's happening is there's a pass that serializes the element output and then does something with it. +[44:19] What it does, what happens after that depends on the environment. Maybe you're going to turn it straight into HTML on the server. Maybe you're going to output a file to disk. But ultimately what's happening is there's a pass that serializes the element output and then does something with it. -[00:44:36] **Carl Vitullo:** Yeah, that actually makes a lot of sense. +[44:36] **Carl Vitullo:** Yeah, that actually makes a lot of sense. -[00:44:38] I don't know if I, I don't know if we want to coin a brand new Well, I don't know if this is coined, but anyway, that's interesting. That's a, that is a good framing for it. Serialized is a little bit more evocative of The benefits and constraints, then server. Of course there's a server. Yeah, okay. That's interesting, I like that. +[44:38] I don't know if I, I don't know if we want to coin a brand new Well, I don't know if this is coined, but anyway, that's interesting. That's a, that is a good framing for it. Serialized is a little bit more evocative of The benefits and constraints, then server. Of course there's a server. Yeah, okay. That's interesting, I like that. -[00:44:56] Okay, we're down to our last link, which I guess we'll just go right on +[44:56] Okay, we're down to our last link, which I guess we'll just go right on -[00:45:00] **Mark Erikson:** ahead. Yes, so I have been happily highlighting the progress of the React Forget compiler over the last few months. So, there was a blog post in March of last year. Where they said, we're working on it. There were two different conference talks at React India and React Advanced where the React team actually said, we're working on it and here's some of our progress. +[45:00] **Mark Erikson:** ahead. Yes, so I have been happily highlighting the progress of the React Forget compiler over the last few months. So, there was a blog post in March of last year. Where they said, we're working on it. There were two different conference talks at React India and React Advanced where the React team actually said, we're working on it and here's some of our progress. -[00:45:20] There was a bit of very interesting discussion on Twitter a couple weeks ago where they talked a bit about some of the technical implementation. So, it is currently implemented as a Babel plugin. Having said that, the Babel plugin is basically just acting as a front end for the actual compiler logic. +[45:20] There was a bit of very interesting discussion on Twitter a couple weeks ago where they talked a bit about some of the technical implementation. So, it is currently implemented as a Babel plugin. Having said that, the Babel plugin is basically just acting as a front end for the actual compiler logic. -[00:45:41] The compiler itself is currently written in TypeScript, I believe, and not strictly tied to Babel itself. So, there were some thoughts about, I mean, there was some discussion of, well, how fast is it to run? Can you use it for fast refresh? Could it be translated to Rust someday? And one of the other possibilities that came up, Meta has been working on something that they call Static Hermes. +[45:41] The compiler itself is currently written in TypeScript, I believe, and not strictly tied to Babel itself. So, there were some thoughts about, I mean, there was some discussion of, well, how fast is it to run? Can you use it for fast refresh? Could it be translated to Rust someday? And one of the other possibilities that came up, Meta has been working on something that they call Static Hermes. -[00:46:07] Hermes is the JavaScript engine that's used for React Native. It's a completely separate JavaScript implementation. And they've got a research project where they use the Hermes engine to compile your JavaScript or TypeScript code to a native binary. And have seen some interesting early results from that. +[46:07] Hermes is the JavaScript engine that's used for React Native. It's a completely separate JavaScript implementation. And they've got a research project where they use the Hermes engine to compile your JavaScript or TypeScript code to a native binary. And have seen some interesting early results from that. -[00:46:29] One other possibility for maybe making the Forget compiler execute faster. Instead of translating it to Rust, maybe they compile the TypeScript code to native with Static Hermes. We'll still know ETA on when this comes out. I have my fingers crossed that we'll see you some more details about it at React Conf in May. +[46:29] One other possibility for maybe making the Forget compiler execute faster. Instead of translating it to Rust, maybe they compile the TypeScript code to native with Static Hermes. We'll still know ETA on when this comes out. I have my fingers crossed that we'll see you some more details about it at React Conf in May. -[00:46:47] But it was interesting to hear a bit more of the technical details of what it's taking to actually build this. +[46:47] But it was interesting to hear a bit more of the technical details of what it's taking to actually build this. -[00:46:54] **Carl Vitullo:** Yeah, definitely. I have not been following it super closely. +[46:54] **Carl Vitullo:** Yeah, definitely. I have not been following it super closely. -[00:46:57] **Mark Erikson:** That's why I'm here. +[46:57] **Mark Erikson:** That's why I'm here. -[00:46:58] **Carl Vitullo:** Yeah, right? Thank you. We can pay attention to slightly different things that overlap and have a great conversation (laughs). +[46:58] **Carl Vitullo:** Yeah, right? Thank you. We can pay attention to slightly different things that overlap and have a great conversation (laughs). -[00:47:05] Yeah, my general M. O. on a lot of these experimental features is keep an eye out, know what they're called, check in once in a while, and then when they're released, cool, I have a framework for understanding why it exists. Excited to see what comes out of it, but I know this is I don't know. I've seen skepticism that it will be released in a timely manner, though it's not yet. +[47:05] Yeah, my general M. O. on a lot of these experimental features is keep an eye out, know what they're called, check in once in a while, and then when they're released, cool, I have a framework for understanding why it exists. Excited to see what comes out of it, but I know this is I don't know. I've seen skepticism that it will be released in a timely manner, though it's not yet. -[00:47:26] I mean, I'm still catching up on server components, so I just don't have the mental bandwidth to also pay attention to a whole optimizing compiler as well. On to the lightning round. We've got a bunch of links here. I think we should just pick and choose rather than going fully down the list, but +[47:26] I mean, I'm still catching up on server components, so I just don't have the mental bandwidth to also pay attention to a whole optimizing compiler as well. On to the lightning round. We've got a bunch of links here. I think we should just pick and choose rather than going fully down the list, but ## [⚡ Ryan Carniato, JS Frameworks into 2024](https://dev.to/this-is-learning/javascript-frameworks-heading-into-2024-i3l) -[00:47:40] **Carl Vitullo:** Ryan Carniato had a solid write up on JavaScript frameworks as we head into 2024. +[47:40] **Carl Vitullo:** Ryan Carniato had a solid write up on JavaScript frameworks as we head into 2024. -[00:47:48] Mark, tell us what that giggle was about. +[47:48] Mark, tell us what that giggle was about. -[00:47:50] **Mark Erikson:** So he's the author of SolidJS. +[47:50] **Mark Erikson:** So he's the author of SolidJS. -[00:47:52] **Carl Vitullo:** Okay. I did, I, okay. I did not recognize the name. I, sorry, but a lot of talk about signals. And so that makes a lot of sense. +[47:52] **Carl Vitullo:** Okay. I did, I, okay. I did not recognize the name. I, sorry, but a lot of talk about signals. And so that makes a lot of sense. -[00:48:01] **Mark Erikson:** Yeah. Ryan's articles are always excellent. He is so good at. Discussing both technical details and trade offs and nuances. So his posts about what's going on in the front end ecosystem are always worth reading. +[48:01] **Mark Erikson:** Yeah. Ryan's articles are always excellent. He is so good at. Discussing both technical details and trade offs and nuances. So his posts about what's going on in the front end ecosystem are always worth reading. ## [⚡ RSPack](https://rsbuild.dev/guide/migration/cra) -[00:48:15] **Mark Erikson:** Next up, so, there's a tool called rsPack, and it is a of Webpack to Rust. Literally, they've implemented all of Webpack's public API in Rust. I think the engineers behind it work at ByteDance, a company that does TikTok. +[48:15] **Mark Erikson:** Next up, so, there's a tool called rsPack, and it is a of Webpack to Rust. Literally, they've implemented all of Webpack's public API in Rust. I think the engineers behind it work at ByteDance, a company that does TikTok. -[00:48:34] There's a second layer called rsbuild, which is like basically more of an ES builds API, but using rspack as. The implementation layer underneath and I recently saw a tweet suggesting that talking about they've got documentation on how to migrate from create React app to using RS build and I actually had a like my presentation slide tool set. +[48:34] There's a second layer called rsbuild, which is like basically more of an ES builds API, but using rspack as. The implementation layer underneath and I recently saw a tweet suggesting that talking about they've got documentation on how to migrate from create React app to using RS build and I actually had a like my presentation slide tool set. -[00:49:02] I was using React App with Craco to override the webpack config. And I thought for several years, like, I should switch this over to Vite. But, one, I'm too lazy. Two, that's a rabbit hole. Three, I, my setup uses a webpack plugin in order to parse the markdown that I use to write my slides. And so, I was actually curious about this, and in about one hour, I was able to switch from my CRA setup to using RSBuild, and the compile time went from 30 seconds to one second. +[49:02] I was using React App with Craco to override the webpack config. And I thought for several years, like, I should switch this over to Vite. But, one, I'm too lazy. Two, that's a rabbit hole. Three, I, my setup uses a webpack plugin in order to parse the markdown that I use to write my slides. And so, I was actually curious about this, and in about one hour, I was able to switch from my CRA setup to using RSBuild, and the compile time went from 30 seconds to one second. -[00:49:38] I then made it harder on myself and spent and burned like two hours trying to upgrade the version of the MDX markdown syntax that I could use. But that was a separate problem from doing the actual switch. So I know there's a lot of people who are trying to switch from create React app to Vite, and that's absolutely a thing you can do, but you might also want to look at using rsbuild instead, because it's webpack compatible and you might actually have to do less work to switch over. +[49:38] I then made it harder on myself and spent and burned like two hours trying to upgrade the version of the MDX markdown syntax that I could use. But that was a separate problem from doing the actual switch. So I know there's a lot of people who are trying to switch from create React app to Vite, and that's absolutely a thing you can do, but you might also want to look at using rsbuild instead, because it's webpack compatible and you might actually have to do less work to switch over. -[00:50:08] Yeah, +[50:08] Yeah, -[00:50:09] **Carl Vitullo:** very cool. Very nice. +[50:09] **Carl Vitullo:** very cool. Very nice. ## [⚡ Benchmarking React Native styling](https://www.reddit.com/r/reactnative/comments/1adasz4/react_native_cssstylesheet_frameworks_benchmark/) -[00:50:10] **Carl Vitullo:** I saw a cool post on Reddit. Somebody made a project benchmarking different CSS and stylesheet implementations. It's basically a microbenchmarks list. I don't really know how applicable these are. I don't really know exactly what this would mean from a broader performance. +[50:10] **Carl Vitullo:** I saw a cool post on Reddit. Somebody made a project benchmarking different CSS and stylesheet implementations. It's basically a microbenchmarks list. I don't really know how applicable these are. I don't really know exactly what this would mean from a broader performance. -[00:50:27] perspective. But, you know, it looked like they put some real work into benchmarking a variety of different approaches in React Native for applying styles, and not sure how much more there is to say on that, though. +[50:27] perspective. But, you know, it looked like they put some real work into benchmarking a variety of different approaches in React Native for applying styles, and not sure how much more there is to say on that, though. ## [⚡ Weird things engineers believe about Web development](https://birtles.blog/2024/01/06/weird-things-engineers-believe-about-development/) -[00:50:40] **Mark Erikson:** Uh, one article that I really liked, a, an engineer who used to work on the internals of Mozilla Firefox, developing the browser itself, put up a post talking about weird things engineers believe about web development, and it was actually kind of a, here's the stuff that browser engineers think people care about, and then there's the stuff that web developers actually care about, and these are not necessarily the same thing. +[50:40] **Mark Erikson:** Uh, one article that I really liked, a, an engineer who used to work on the internals of Mozilla Firefox, developing the browser itself, put up a post talking about weird things engineers believe about web development, and it was actually kind of a, here's the stuff that browser engineers think people care about, and then there's the stuff that web developers actually care about, and these are not necessarily the same thing. -[00:51:04] So, it was just an interesting check on the mindsets of the people using the browsers vs the people building the browsers. I think +[51:04] So, it was just an interesting check on the mindsets of the people using the browsers vs the people building the browsers. I think -[00:51:14] **Carl Vitullo:** this is a super important read. I think these are, I don't know, there's just this, you get this feedback cycle in knowledge where somebody learned something, they write about it, and then other people learn that from the people who wrote about it. And so you get like a game of telephone going on. +[51:14] **Carl Vitullo:** this is a super important read. I think these are, I don't know, there's just this, you get this feedback cycle in knowledge where somebody learned something, they write about it, and then other people learn that from the people who wrote about it. And so you get like a game of telephone going on. -[00:51:31] So then several, multiple years later, everyone knows all of these things. But if you go back to the actual primary source, some of them are a little warped. Some of them are outright wrong. So this feels like that going back to the primary source. Somebody's up to date on what people claim they know, what the common knowledge is, but they have experience with the actual underlying technology that provides those constraints. So definitely, we recommend reading this. +[51:31] So then several, multiple years later, everyone knows all of these things. But if you go back to the actual primary source, some of them are a little warped. Some of them are outright wrong. So this feels like that going back to the primary source. Somebody's up to date on what people claim they know, what the common knowledge is, but they have experience with the actual underlying technology that provides those constraints. So definitely, we recommend reading this. ## [⚡ Tea.xyz](https://twitter.com/mxcl/status/1749894737862025330?s=46&t=uXPe0cHZZfyFyGotvsr9IQ) -[00:51:59] **Carl Vitullo:** I came across a cool project by the guy who created Homebrew, which is like the de facto dependency manager for macOS. It's like apt for Unix. But, so he is launching an open source software funding project that is I think blockchain based and whatever, so all of the whatever skepticism you have for that is probably warranted, but I'm always interested in new approaches for improving the economic situation of open source maintenance. +[51:59] **Carl Vitullo:** I came across a cool project by the guy who created Homebrew, which is like the de facto dependency manager for macOS. It's like apt for Unix. But, so he is launching an open source software funding project that is I think blockchain based and whatever, so all of the whatever skepticism you have for that is probably warranted, but I'm always interested in new approaches for improving the economic situation of open source maintenance. -[00:52:32] It is notoriously a very thankless job kind of situation. Yeah, I don't know, Mark, I'm curious if you have any thoughts on this as the only open source maintainer between the two of us. But yeah, it's broadly interesting to me. +[52:32] It is notoriously a very thankless job kind of situation. Yeah, I don't know, Mark, I'm curious if you have any thoughts on this as the only open source maintainer between the two of us. But yeah, it's broadly interesting to me. -[00:52:45] **Mark Erikson:** I saw this mentioned, I didn't glance at it, so I don't have a lot of thoughts on this tool itself. The flip side is there's another tool in the same sort of space called thanks. +[52:45] **Mark Erikson:** I saw this mentioned, I didn't glance at it, so I don't have a lot of thoughts on this tool itself. The flip side is there's another tool in the same sort of space called thanks. -[00:52:57] dev. One of the complaints about How do we fund open source maintainers has always been the trickle effect. If I provide, if my project uses Jest, ESLint and Webpack and Babel, do I send funds just to those projects? What about all the dependencies those projects are built out of? And so there's been a couple of different attempts over the years to figure out like, how do you divvy this up? +[52:57] dev. One of the complaints about How do we fund open source maintainers has always been the trickle effect. If I provide, if my project uses Jest, ESLint and Webpack and Babel, do I send funds just to those projects? What about all the dependencies those projects are built out of? And so there's been a couple of different attempts over the years to figure out like, how do you divvy this up? -[00:53:24] And one that I'm actually getting a little bit of something out of is this thanks. dev thing. So, companies like Sentry are donating chunks of money to this intermediary and the intermediary is scanning all the package JSONs and using a particular algorithm to figure out, like, what, what percentage each of the dependencies and sub dependencies that you would actually get, and, you know, full transparency, I'm not getting much out of this, but, you know, like, 15, 20 bucks every now and then, it's okay, it's non zero, okay, cool, thank you. +[53:24] And one that I'm actually getting a little bit of something out of is this thanks. dev thing. So, companies like Sentry are donating chunks of money to this intermediary and the intermediary is scanning all the package JSONs and using a particular algorithm to figure out, like, what, what percentage each of the dependencies and sub dependencies that you would actually get, and, you know, full transparency, I'm not getting much out of this, but, you know, like, 15, 20 bucks every now and then, it's okay, it's non zero, okay, cool, thank you. -[00:53:58] **Carl Vitullo:** I get a similar amount of money from the Medium blogging I did five years ago. It's not nothing, it's not that much. Whether it's enough money to warrant the additional need to remember to add it as income when I file my taxes is debatable. +[53:58] **Carl Vitullo:** I get a similar amount of money from the Medium blogging I did five years ago. It's not nothing, it's not that much. Whether it's enough money to warrant the additional need to remember to add it as income when I file my taxes is debatable. -[00:54:11] But, yeah, I don't know. It's a hard problem. It's as yet unsolved. I'm always interested in seeing a new approach, trying to solve it. Analyzing package. json and things like that is cool. I kicked around the thought of trying to do a business in this space a number of years ago. Hey, we're Reactiflux. We have so many people donating their time to answering questions. +[54:11] But, yeah, I don't know. It's a hard problem. It's as yet unsolved. I'm always interested in seeing a new approach, trying to solve it. Analyzing package. json and things like that is cool. I kicked around the thought of trying to do a business in this space a number of years ago. Hey, we're Reactiflux. We have so many people donating their time to answering questions. -[00:54:32] Open source maintainers, but ultimately where I came down on it is it's just so hard to attribute relative value between different projects that like, okay, you can scan thousands, millions of package. json files to understand the dependencies and what depends a lot on this and but then there's also there's so many deep utility functions, deep utility modules that You look at the MP M and they're downloaded like billions of times and it's like that real, is that, should that get the most money outta this? +[54:32] Open source maintainers, but ultimately where I came down on it is it's just so hard to attribute relative value between different projects that like, okay, you can scan thousands, millions of package. json files to understand the dependencies and what depends a lot on this and but then there's also there's so many deep utility functions, deep utility modules that You look at the MP M and they're downloaded like billions of times and it's like that real, is that, should that get the most money outta this? -[00:55:06] I don't know. When I, when I was doing my own thought exercises and this never left thought land, I never did anything with these thoughts, but when I was thinking about it, it's, I don't know if you can get to the socially understood value versus. Any of the metrics that are available from analyzing dependencies, it seemed like too big of a gulf between the two of them to be obviously valuable to me, but I'm very cool to see anyone who is taking hard problem of open source funding and trying, building code, doing marketing, taking revenue and distributing it back out. +[55:06] I don't know. When I, when I was doing my own thought exercises and this never left thought land, I never did anything with these thoughts, but when I was thinking about it, it's, I don't know if you can get to the socially understood value versus. Any of the metrics that are available from analyzing dependencies, it seemed like too big of a gulf between the two of them to be obviously valuable to me, but I'm very cool to see anyone who is taking hard problem of open source funding and trying, building code, doing marketing, taking revenue and distributing it back out. -[00:55:41] Anyone doing that, I will support 100%. +[55:41] Anyone doing that, I will support 100%. ## [⚡ `everything` on npm](https://www.scmagazine.com/news/npm-registry-prank-leaves-developers-unable-to-unpublish-packages) -[00:55:44] **Mark Erikson:** Yep, and then the last one I got is, there was a recent, I don't know, issue, problem, whatever, with the npm registry, where some folks were experimenting with, Is it possible to make a package that literally depends on every other package in the entire npm registry? And they actually ran into some problems doing this, because there's like a maximum size in your package, or maximum number of dependencies you can have for one package, and what they ended up doing was chunking it up, so the top level package depended on 15, 20 other sub packages, and each of those depended on 5 to 8 packages in all of the npm registry. +[55:44] **Mark Erikson:** Yep, and then the last one I got is, there was a recent, I don't know, issue, problem, whatever, with the npm registry, where some folks were experimenting with, Is it possible to make a package that literally depends on every other package in the entire npm registry? And they actually ran into some problems doing this, because there's like a maximum size in your package, or maximum number of dependencies you can have for one package, and what they ended up doing was chunking it up, so the top level package depended on 15, 20 other sub packages, and each of those depended on 5 to 8 packages in all of the npm registry. -[00:56:26] What this resulted in, though, was it made it impossible to unpublish anything. From the entire NPM registry. Yet another weakness in both how NPM works and how people use NPM. First we had LeftPad, where we found out that unpublishing something dependent on by thousands of other libraries breaks everything. +[56:26] What this resulted in, though, was it made it impossible to unpublish anything. From the entire NPM registry. Yet another weakness in both how NPM works and how people use NPM. First we had LeftPad, where we found out that unpublishing something dependent on by thousands of other libraries breaks everything. -[00:56:49] We've had a few other issues over the years, and now this one. It was dealt with, but people continue to find more ways to break NPM. +[56:49] We've had a few other issues over the years, and now this one. It was dealt with, but people continue to find more ways to break NPM. -[00:56:57] **Carl Vitullo:** Alright, I'm gonna run through a couple here at the very end. +[56:57] **Carl Vitullo:** Alright, I'm gonna run through a couple here at the very end. ## [⚡ CodePen top 10](https://codepen.io/2023/popular/pens/10) -[00:57:00] **Carl Vitullo:** I loved this, CodePen put out a Top 10 CodePens of 2023. Love creative coding, love people just making little fun visual things. +[57:00] **Carl Vitullo:** I loved this, CodePen put out a Top 10 CodePens of 2023. Love creative coding, love people just making little fun visual things. -[00:57:10] Just for the joy of it, just to explore a new concept or to make something pretty. Creative coding is not a, an aspect of software development that we have in Reactiflux, had a lot of, people do that in CodePen, people do that in Glitch, people do that in, there's other platforms that are very well suited to it, and we've just never gotten a lot of that energy in Reactiflux. +[57:10] Just for the joy of it, just to explore a new concept or to make something pretty. Creative coding is not a, an aspect of software development that we have in Reactiflux, had a lot of, people do that in CodePen, people do that in Glitch, people do that in, there's other platforms that are very well suited to it, and we've just never gotten a lot of that energy in Reactiflux. -[00:57:30] But yeah, really cool, I loved some of these projects, definitely check it out, especially if you're looking for inspiration on a project to work on yourself. +[57:30] But yeah, really cool, I loved some of these projects, definitely check it out, especially if you're looking for inspiration on a project to work on yourself. ## [⚡ V8 performance improvements](https://v8.dev/blog/holiday-season-2023) -[00:57:37] **Carl Vitullo:** And last link from me, V8 Performance Improvements. This is, like, extremely nitty gritty, like, close to the metal kind of knowledge. It's probably not going to be very practical in, you know, you as a software developer. +[57:37] **Carl Vitullo:** And last link from me, V8 Performance Improvements. This is, like, extremely nitty gritty, like, close to the metal kind of knowledge. It's probably not going to be very practical in, you know, you as a software developer. -[00:57:52] But they're adding yet another new level of optimizer, which is interesting. I don't know, I thought it was a good read. It's nice to understand a little bit more about how your code is being executed. There are specific people who will need to know implementation details like that. I know that the, I'm sure that the React core team has done a lot of performance optimization to ensure that the way their code is being interpreted and optimized and the way it runs through these processes results in a as close to optimal performance as possible. +[57:52] But they're adding yet another new level of optimizer, which is interesting. I don't know, I thought it was a good read. It's nice to understand a little bit more about how your code is being executed. There are specific people who will need to know implementation details like that. I know that the, I'm sure that the React core team has done a lot of performance optimization to ensure that the way their code is being interpreted and optimized and the way it runs through these processes results in a as close to optimal performance as possible. -[00:58:25] I have an affinity for this type of low level post about where our code runs. But yeah, I just thought it was interesting to go through a little bit of history. It's also been 16 years since V8 was released. 16 years since Chrome came out, which is wild. What an era. It's the new era of the web. Definitely check that out if you're interested in bare metal stuff. +[58:25] I have an affinity for this type of low level post about where our code runs. But yeah, I just thought it was interesting to go through a little bit of history. It's also been 16 years since V8 was released. 16 years since Chrome came out, which is wild. What an era. It's the new era of the web. Definitely check that out if you're interested in bare metal stuff. -[00:58:48] Thank you so much everyone for joining us. We'll be back on the last Wednesday of February here in the live stage or back in your podcast feed just as soon as we can. If you see anything newsworthy, definitely let us know in the tech reads and news channel of Reactiflux, but yeah, we also check. Quite a range of newsletters and other sources. +[58:48] Thank you so much everyone for joining us. We'll be back on the last Wednesday of February here in the live stage or back in your podcast feed just as soon as we can. If you see anything newsworthy, definitely let us know in the tech reads and news channel of Reactiflux, but yeah, we also check. Quite a range of newsletters and other sources. -[00:59:08] Mark and I both moderate the React. js subreddit. I love bytes. dev, React Status, ThisWeekInReact. There's close to a dozen sources that I pull links from here. Thanks for joining us. See you next month. +[59:08] Mark and I both moderate the React. js subreddit. I love bytes. dev, React Status, ThisWeekInReact. There's close to a dozen sources that I pull links from here. Thanks for joining us. See you next month. diff --git a/src/transcripts/tmir-2024-03.md b/src/transcripts/tmir-2024-03.md index 822f234..57461a9 100644 --- a/src/transcripts/tmir-2024-03.md +++ b/src/transcripts/tmir-2024-03.md @@ -70,426 +70,426 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t - [[49:26](#vercel-adds-remix+vite-support)] [Vercel adds support for Remix+Vite](https://vercel.com/changelog/support-for-remix-with-vite) - [[50:05](#navigating-the-future-of-frontend)] [Navigating the future of frontend](https://frontendmastery.com/posts/navigating-the-future-of-frontend/) -[00:00:00] **Carl Vitullo:** Thanks for joining us for March's This Month in React! Coming to you live from Reactiflux, the Discord for React professionals. I'm Carl. I'm a staff product developer and freelance community manager here at Reactiflux. +[00:00] **Carl Vitullo:** Thanks for joining us for March's This Month in React! Coming to you live from Reactiflux, the Discord for React professionals. I'm Carl. I'm a staff product developer and freelance community manager here at Reactiflux. -[00:00:13] **Mark Erikson:** Hi, I'm Mark Erikson. My day job, I work at Replay. io, where we're building a time traveling debugger for JavaScript, and outside of that, I do Redux stuff. +[00:13] **Mark Erikson:** Hi, I'm Mark Erikson. My day job, I work at Replay. io, where we're building a time traveling debugger for JavaScript, and outside of that, I do Redux stuff. -[00:00:22] **Carl Vitullo:** We got a lot of good stuff to discuss and digest here. Lot more details coming out for React 19. We got TypeScript 5. 4, and lots of interesting stuff kind of at the margins. Not really core tools or libraries within React necessarily, but a lot of things all over the place. +[00:22] **Carl Vitullo:** We got a lot of good stuff to discuss and digest here. Lot more details coming out for React 19. We got TypeScript 5. 4, and lots of interesting stuff kind of at the margins. Not really core tools or libraries within React necessarily, but a lot of things all over the place. ## Layoffs (seems better!) -[00:00:39] **Carl Vitullo:** I'm going to start off with some layoffs news. At time of recording, you know, it's the 27th, so we'll have to see if anything else happens, but layoffs.fyi is showing 33 companies with layoffs, which is the fewest layoffs by count in that way in close to two years, since April 2022. So nice to see that number go down. +[00:39] **Carl Vitullo:** I'm going to start off with some layoffs news. At time of recording, you know, it's the 27th, so we'll have to see if anything else happens, but layoffs.fyi is showing 33 companies with layoffs, which is the fewest layoffs by count in that way in close to two years, since April 2022. So nice to see that number go down. -[00:00:58] This month has about 7, 200 laid off so far, which is on the lower end, it's not the lowest of the last year, but it's towards the lower end of the average range. Last March, so one year ago, there were 122 layoffs with about 38, 000 affected. So, 33 layoffs with about 7, 000 affected is a large decline, so that's nice. That's pretty good. +[00:58] This month has about 7, 200 laid off so far, which is on the lower end, it's not the lowest of the last year, but it's towards the lower end of the average range. Last March, so one year ago, there were 122 layoffs with about 38, 000 affected. So, 33 layoffs with about 7, 000 affected is a large decline, so that's nice. That's pretty good. ## New releases -[00:01:20] On to some new releases. We have a pretty big list this month. +[01:20] On to some new releases. We have a pretty big list this month. -[00:01:23] **Carl Vitullo:** We've got some news from React Native. They are going to be putting out a 0. 74 release soon. They've had a really cool post up , or I guess like a docs page, talking about their new architecture. Not a ton of super concrete items coming out in there. But they did talk a lot about the general new architecture, re architecting how React Native works. We're going to talk a little bit about some of that, too, later on, talking about React Strict DOM, that package that they released last month. +[01:23] **Carl Vitullo:** We've got some news from React Native. They are going to be putting out a 0. 74 release soon. They've had a really cool post up , or I guess like a docs page, talking about their new architecture. Not a ton of super concrete items coming out in there. But they did talk a lot about the general new architecture, re architecting how React Native works. We're going to talk a little bit about some of that, too, later on, talking about React Strict DOM, that package that they released last month. -[00:01:53] Moving on a bit, TypeScript 5. 4, sounds like it's not a huge release, but One thing that I thought was super notable, worth taking note of, they are recommending against using the compiler options paths configuration flag in favor of package. json imports. Since you use the paths for import aliases, moving that out of a TypeScript specific configuration option and into a general module configuration option I think is absolutely phenomenal. +[01:53] Moving on a bit, TypeScript 5. 4, sounds like it's not a huge release, but One thing that I thought was super notable, worth taking note of, they are recommending against using the compiler options paths configuration flag in favor of package. json imports. Since you use the paths for import aliases, moving that out of a TypeScript specific configuration option and into a general module configuration option I think is absolutely phenomenal. -[00:02:23] Getting that standardized I think is going to simplify a lot of things. +[02:23] Getting that standardized I think is going to simplify a lot of things. -[00:02:26] **Mark Erikson:** It's particularly interesting because I've seen other tools actually start to use TypeScript's own paths option as the source of truth. So, I guess, you know, switching over to a package. json setup is making it more tool agnostic, in a way, but the question as always is, how long will it take for other tools to also support that kind of configuration? +[02:26] **Mark Erikson:** It's particularly interesting because I've seen other tools actually start to use TypeScript's own paths option as the source of truth. So, I guess, you know, switching over to a package. json setup is making it more tool agnostic, in a way, but the question as always is, how long will it take for other tools to also support that kind of configuration? -[00:02:47] **Carl Vitullo:** I am just excited to see something go out from, I don't know, kind of move from TypeScript into standards, but yeah, generally seems like a quieter release. +[02:47] **Carl Vitullo:** I am just excited to see something go out from, I don't know, kind of move from TypeScript into standards, but yeah, generally seems like a quieter release. -[00:02:56] NoInfer is one of the biggest things they called out and sounds like it's mostly useful in library contexts. Mark, you did point out something coming up in 5. 5 that looks really interesting though, you want to introduce that? +[02:56] NoInfer is one of the biggest things they called out and sounds like it's mostly useful in library contexts. Mark, you did point out something coming up in 5. 5 that looks really interesting though, you want to introduce that? -[00:03:10] **Mark Erikson:** TypeScript has the idea of, I'm always a little hazy on the terminology, typeguards or predicates, which are functions that take some object and you assert at the type level that if the function returns true, then the type of the value must be this thing. +[03:10] **Mark Erikson:** TypeScript has the idea of, I'm always a little hazy on the terminology, typeguards or predicates, which are functions that take some object and you assert at the type level that if the function returns true, then the type of the value must be this thing. -[00:03:25] And so it's a way to mix together control flow and telling TypeScript what a thing looks like at compile time. And the problem is that when you do an operation like array filtering, that has not actually done the type narrowing that you might expect. So, you might be filtering to ensure that, you know, the returned array only contains real values and removes null or undefined, but TypeScript wouldn't actually pick up on that so far. +[03:25] And so it's a way to mix together control flow and telling TypeScript what a thing looks like at compile time. And the problem is that when you do an operation like array filtering, that has not actually done the type narrowing that you might expect. So, you might be filtering to ensure that, you know, the returned array only contains real values and removes null or undefined, but TypeScript wouldn't actually pick up on that so far. -[00:03:51] And so you might have to do, like, an extra cast or some other check to make sure that the output array has the correct type. Well, TypeScript 5. 5, which should be out in a few months, actually now has a PR merged that uses TypeScript's existing inference in new ways inside of filter functions so that you can do normal logic when filtering and TypeScript will try to narrow down the returned array type based on the logic in the filter callback. +[03:51] And so you might have to do, like, an extra cast or some other check to make sure that the output array has the correct type. Well, TypeScript 5. 5, which should be out in a few months, actually now has a PR merged that uses TypeScript's existing inference in new ways inside of filter functions so that you can do normal logic when filtering and TypeScript will try to narrow down the returned array type based on the logic in the filter callback. -[00:04:18] It's not a huge deal, but it's gonna be a nice little quality of life thing. And then I also saw a tweet mentioning that the TypeScript team is continuing to do work on the publishing process to try to shrink the install size. I think as of, like, TS 4. 9. Installing TypeScript was around 50 megs. They did a lot of work with TS 5. 0 to change their internal setup, which dropped it to like 30. And it looks like as of 5. 5, it might be down to 20 ish or so. So, you know, hey, smaller install size, always a good thing. +[04:18] It's not a huge deal, but it's gonna be a nice little quality of life thing. And then I also saw a tweet mentioning that the TypeScript team is continuing to do work on the publishing process to try to shrink the install size. I think as of, like, TS 4. 9. Installing TypeScript was around 50 megs. They did a lot of work with TS 5. 0 to change their internal setup, which dropped it to like 30. And it looks like as of 5. 5, it might be down to 20 ish or so. So, you know, hey, smaller install size, always a good thing. -[00:04:50] **Carl Vitullo:** Much, much later, I'm going to talk a little bit about a Node. js 2023 year in review, and that has the opposite trend. It has a chart in there showing the binary size for the Linux binary for Node. js, and it is much, much larger than it used to be. So, good to see that TypeScript is going the other direction. Maybe they can cancel each other out a little bit. +[04:50] **Carl Vitullo:** Much, much later, I'm going to talk a little bit about a Node. js 2023 year in review, and that has the opposite trend. It has a chart in there showing the binary size for the Linux binary for Node. js, and it is much, much larger than it used to be. So, good to see that TypeScript is going the other direction. Maybe they can cancel each other out a little bit. -[00:05:09] I'm just going to run through a bunch of other releases pretty quick. +[05:09] I'm just going to run through a bunch of other releases pretty quick. -[00:05:12] Remix released 2. 8. Looks like it's just a bunch of minor changes, configuration stuff. +[05:12] Remix released 2. 8. Looks like it's just a bunch of minor changes, configuration stuff. -[00:05:17] Mantine has 7. 7 out. I didn't see any changes in there that really jumped out to me. It looks like a bunch of new components, a couple new hooks. useStateHistory looks neat, undo is always a challenge. +[05:17] Mantine has 7. 7 out. I didn't see any changes in there that really jumped out to me. It looks like a bunch of new components, a couple new hooks. useStateHistory looks neat, undo is always a challenge. -[00:05:29] RSBuild released a version, 0. 5, which they say it's most of a 1. 0 release that will happen approximately in Q3 of this year, but it'll be much, much later this year. +[05:29] RSBuild released a version, 0. 5, which they say it's most of a 1. 0 release that will happen approximately in Q3 of this year, but it'll be much, much later this year. -[00:05:40] I saw a cool fringe language inspired by Elm. Gleam, released a version 1. First stable release of a new experimental language. I always need to see how people play around with different languages. It says it's inspired by languages such as Elm, OCaml, and Rust. Experimental languages. Lots of stuff going on there. +[05:40] I saw a cool fringe language inspired by Elm. Gleam, released a version 1. First stable release of a new experimental language. I always need to see how people play around with different languages. It says it's inspired by languages such as Elm, OCaml, and Rust. Experimental languages. Lots of stuff going on there. ## ShadCN March 2024 update -[00:05:58] **Carl Vitullo:** Okay, here's another big one. We've got some ShadCN new updates. They put out a March 2024 update, which is the first time they have done one of these update posts since I think December. So definitely worth calling out. It looks like the single biggest new thing that they have is blocks, they call it. +[05:58] **Carl Vitullo:** Okay, here's another big one. We've got some ShadCN new updates. They put out a March 2024 update, which is the first time they have done one of these update posts since I think December. So definitely worth calling out. It looks like the single biggest new thing that they have is blocks, they call it. -[00:06:15] Which looks like it's basically template pages for very common and like very low differentiation application pages like a settings UI, or two factor, an authentication page, some other things like that, so it's basically just, copy these out, use it yourself. It looks neat. It looks exactly like every instance of those pages that I've done many times over my career. +[06:15] Which looks like it's basically template pages for very common and like very low differentiation application pages like a settings UI, or two factor, an authentication page, some other things like that, so it's basically just, copy these out, use it yourself. It looks neat. It looks exactly like every instance of those pages that I've done many times over my career. -[00:06:36] So having a nice copy paste target for that is, seems super helpful. They also had one for an input one time password, like the classic, you know, paste in these six digits and it will appear in nice pretty blocks. Again, something I've implemented many times and there's never any variation, but for some reason you can never use the last one you did, so nice to see that. +[06:36] So having a nice copy paste target for that is, seems super helpful. They also had one for an input one time password, like the classic, you know, paste in these six digits and it will appear in nice pretty blocks. Again, something I've implemented many times and there's never any variation, but for some reason you can never use the last one you did, so nice to see that. ## Astro 4.5, AstroDB -[00:06:55] **Carl Vitullo:** One more big one here that I'm just going to kind of blast through because I find it interesting. So Astro, the static site generator, I guess. I don't know if that's quite accurate, but. +[06:55] **Carl Vitullo:** One more big one here that I'm just going to kind of blast through because I find it interesting. So Astro, the static site generator, I guess. I don't know if that's quite accurate, but. -[00:07:05] **Mark Erikson:** Close enough for now. +[07:05] **Mark Erikson:** Close enough for now. -[00:07:07] **Carl Vitullo:** They released 4. 5, improved developer experience, a dev audit UI for site performance and accessibility issues, which is cool. They are announcing that they're offering a hosted database in conjunction with their site generation, the site building tool. They're calling it "the database platform for content driven websites" and also describe it as "Astro DB is a fully managed SQL database designed exclusively for Astro." it's got Drizzle built in and uses LibSQL. +[07:07] **Carl Vitullo:** They released 4. 5, improved developer experience, a dev audit UI for site performance and accessibility issues, which is cool. They are announcing that they're offering a hosted database in conjunction with their site generation, the site building tool. They're calling it "the database platform for content driven websites" and also describe it as "Astro DB is a fully managed SQL database designed exclusively for Astro." it's got Drizzle built in and uses LibSQL. -[00:07:37] Apparently Lib SQL is a fork of SQLite, which, they posted a deep dive that goes into a lot of the sort of the history and how this whole thing unfolded. And they talk about trying to make it work spring of last year with SQLite, but they ran into constraints with the fact that SQLite relies on compiled components within it, the C native code produced performance constraints that didn't really work very well within serverless environments. So they then tried again with this fork of SQLite that does not use those same native compiled, subcomponents within it. that's super cool, I think this is neat. +[07:37] Apparently Lib SQL is a fork of SQLite, which, they posted a deep dive that goes into a lot of the sort of the history and how this whole thing unfolded. And they talk about trying to make it work spring of last year with SQLite, but they ran into constraints with the fact that SQLite relies on compiled components within it, the C native code produced performance constraints that didn't really work very well within serverless environments. So they then tried again with this fork of SQLite that does not use those same native compiled, subcomponents within it. that's super cool, I think this is neat. -[00:08:11] It sounds like they're very much positioning themselves as a WordPress competitor. So it's, you know, content driven websites with an included database. Like, that sounds like WordPress to me. So I think that's pretty cool. Astro's been doing a lot of things, this really does seem like a substantial change to the core offering. +[08:11] It sounds like they're very much positioning themselves as a WordPress competitor. So it's, you know, content driven websites with an included database. Like, that sounds like WordPress to me. So I think that's pretty cool. Astro's been doing a lot of things, this really does seem like a substantial change to the core offering. -[00:08:29] **Mark Erikson:** And purely from a technical perspective, it is interesting to see that there's been a number of tools and services that are being built using SQLite as more than just like a local datastore as of late. +[08:29] **Mark Erikson:** And purely from a technical perspective, it is interesting to see that there's been a number of tools and services that are being built using SQLite as more than just like a local datastore as of late. -[00:08:40] I think Cloudflare Durable Objects, are built on SQLite. You've got this AstroDB, I think I've seen a couple other tools as well. A lot of tools that are basing themselves around SQLite in some way. +[08:40] I think Cloudflare Durable Objects, are built on SQLite. You've got this AstroDB, I think I've seen a couple other tools as well. A lot of tools that are basing themselves around SQLite in some way. -[00:08:52] **Carl Vitullo:** Yeah, definitely. I read a really good blog post talking about why SQLite makes sense in a lot more contexts than we've generally given it credit for. +[08:52] **Carl Vitullo:** Yeah, definitely. I read a really good blog post talking about why SQLite makes sense in a lot more contexts than we've generally given it credit for. -[00:09:01] And, yeah, it seems like people are really experimenting in real meaningful ways with different places to use it, which I think is awesome. I think it's a great project. You know, co locate your database with your executing code because it's small and fast, keep it a single binary. +[09:01] And, yeah, it seems like people are really experimenting in real meaningful ways with different places to use it, which I think is awesome. I think it's a great project. You know, co locate your database with your executing code because it's small and fast, keep it a single binary. -[00:09:15] Yeah, this is not quite directly related, but while we're talking about databases, I also heard about, PGLite, which is a Postgres implementation packaged as a WASM module, which, that's neat. +[09:15] Yeah, this is not quite directly related, but while we're talking about databases, I also heard about, PGLite, which is a Postgres implementation packaged as a WASM module, which, that's neat. -[00:09:27] It's not quite SQLite, but if you need a database in your browser app, it seems like a cool new option. +[09:27] It's not quite SQLite, but if you need a database in your browser app, it seems like a cool new option. -[00:09:34] **Mark Erikson:** There's probably also some kind of application for, I don't know, running end to end tests in the back end with that as like an in memory database or something like that? +[09:34] **Mark Erikson:** There's probably also some kind of application for, I don't know, running end to end tests in the back end with that as like an in memory database or something like that? -[00:09:43] **Carl Vitullo:** Yeah, that's actually, that blog post I mentioned about SQLite, that was one of the things that they've said that SQLite has been relegated to just being like the test database because it's, you know, super fast and, you know, super easy to spin up. So, yeah. Definitely makes sense in those sorts of contexts. +[09:43] **Carl Vitullo:** Yeah, that's actually, that blog post I mentioned about SQLite, that was one of the things that they've said that SQLite has been relegated to just being like the test database because it's, you know, super fast and, you know, super easy to spin up. So, yeah. Definitely makes sense in those sorts of contexts. ## Upcoming conferences -[00:09:58] **Carl Vitullo:** Blasting through conferences. +[09:58] **Carl Vitullo:** Blasting through conferences. -[00:09:59] Epic Web is coming up April 10th and 11th in Park City, Utah. +[09:59] Epic Web is coming up April 10th and 11th in Park City, Utah. -[00:10:03] React Miami, Mark and I will both be there, is April 19th. We actually have a discount code. So if you are interested in going to React Miami, make sure to, one, get your ticket soon, cause it's in like three weeks, and get your ticket with the code REACTIFLUX4EVER with number 4. +[10:03] React Miami, Mark and I will both be there, is April 19th. We actually have a discount code. So if you are interested in going to React Miami, make sure to, one, get your ticket soon, cause it's in like three weeks, and get your ticket with the code REACTIFLUX4EVER with number 4. -[00:10:21] Very much looking forward to that though. There's React Connection and React Native Connection on April 22nd and 23rd in Paris. +[10:21] Very much looking forward to that though. There's React Connection and React Native Connection on April 22nd and 23rd in Paris. -[00:10:27] **Mark Erikson:** And I will be speaking there going straight from Miami. +[10:27] **Mark Erikson:** And I will be speaking there going straight from Miami. -[00:10:30] **Carl Vitullo:** Haa, wonderful, yeah, 20th to 22nd, that's a quick turn for an international flight across the Atlantic. +[10:30] **Carl Vitullo:** Haa, wonderful, yeah, 20th to 22nd, that's a quick turn for an international flight across the Atlantic. -[00:10:36] There's PostCon April 30th and May 1st. That's from Postman. So they're doing like an API conference, they're calling it. +[10:36] There's PostCon April 30th and May 1st. That's from Postman. So they're doing like an API conference, they're calling it. -[00:10:42] And then the big one, React Conf, is happening May 15th and 16th in Henderson, Nevada, just outside Las Vegas. Cool. +[10:42] And then the big one, React Conf, is happening May 15th and 16th in Henderson, Nevada, just outside Las Vegas. Cool. -[00:10:50] Alright, whew, we finally made it to the main bulk of the content. Yeah, Mark, you want to take us off with our first set of discussions? +[10:50] Alright, whew, we finally made it to the main bulk of the content. Yeah, Mark, you want to take us off with our first set of discussions? ## React 19 and React Compiler -[00:10:58] **Mark Erikson:** Alright, so there's a number of pieces of news around React 19 and the React compiler tool that was announced a couple months ago. So first off, I saw a PR go up just a day or so ago. React's codebase has lots of feature flags because they build React for many different use cases. There's internal Facebook builds, public open source builds, React Native builds, experimental builds, canary builds, lots of different combinations. +[10:58] **Mark Erikson:** Alright, so there's a number of pieces of news around React 19 and the React compiler tool that was announced a couple months ago. So first off, I saw a PR go up just a day or so ago. React's codebase has lots of feature flags because they build React for many different use cases. There's internal Facebook builds, public open source builds, React Native builds, experimental builds, canary builds, lots of different combinations. -[00:11:23] And so the React team is constantly adding new feature flags, altering the feature flags, changing the default value. And so this PR makes it sound as though what's in Canary right now is what's expected to go into React 19. So that sounds like a, you know, fairly meaningful step towards a potential React 19 release. +[11:23] And so the React team is constantly adding new feature flags, altering the feature flags, changing the default value. And so this PR makes it sound as though what's in Canary right now is what's expected to go into React 19. So that sounds like a, you know, fairly meaningful step towards a potential React 19 release. -[00:11:43] Also, if you've just been keeping an eye on the list of pull requests in the repository, there have been a ton of internal cleanup PRs where they've been changing over a lot of the existing tests to actually use some of the more modern React APIs, like, uh, React on client slash render, instead of the old React render, et cetera. +[11:43] Also, if you've just been keeping an eye on the list of pull requests in the repository, there have been a ton of internal cleanup PRs where they've been changing over a lot of the existing tests to actually use some of the more modern React APIs, like, uh, React on client slash render, instead of the old React render, et cetera. -[00:12:01] One thing that wasn't entirely clear from the React labs blog post in February is that React 19 and React compiler are not directly tied together. They're both things that are in progress, but React compiler is a separate project. And it probably will come out sometime after React 19 is released. So, different projects, separate schedules, but still both very much in flight. +[12:01] One thing that wasn't entirely clear from the React labs blog post in February is that React 19 and React compiler are not directly tied together. They're both things that are in progress, but React compiler is a separate project. And it probably will come out sometime after React 19 is released. So, different projects, separate schedules, but still both very much in flight. -[00:12:29] Speaking of React Compiler, there's been a couple good posts discussing how it works and what practical effects it'll have. Nadia Makarevich has done multiple great blog posts about React rendering somewhat similar to the post that I had written a while back. And she put up a post talking about React 19 and React Compiler and, you know, some of the practical benefits like not having to write code that does a lot of your own memoization logic because the compiler will do it for you and it will help with rendering performance. +[12:29] Speaking of React Compiler, there's been a couple good posts discussing how it works and what practical effects it'll have. Nadia Makarevich has done multiple great blog posts about React rendering somewhat similar to the post that I had written a while back. And she put up a post talking about React 19 and React Compiler and, you know, some of the practical benefits like not having to write code that does a lot of your own memoization logic because the compiler will do it for you and it will help with rendering performance. -[00:12:59] And then, Satya, who is on the actual React compiler team, and has popped in and hung around Reactiflux a decent amount, put up a couple really good posts talking about the internal implementation details of the compiler itself. The compiler is currently exposed to the world as a Babel plugin, but that's more for ease of integration with the existing build tool ecosystem. +[12:59] And then, Satya, who is on the actual React compiler team, and has popped in and hung around Reactiflux a decent amount, put up a couple really good posts talking about the internal implementation details of the compiler itself. The compiler is currently exposed to the world as a Babel plugin, but that's more for ease of integration with the existing build tool ecosystem. -[00:13:24] The way I understand it is that the Babel plugin basically acts as just kind of like an outer shell and then all the real logic is like a full blown compiler from scratch that the Babel plugin kind of forwards everything to. +[13:24] The way I understand it is that the Babel plugin basically acts as just kind of like an outer shell and then all the real logic is like a full blown compiler from scratch that the Babel plugin kind of forwards everything to. -[00:13:38] So, you know, perhaps at first to make use of it. You would need to have Babel set up, but with the way they've got it designed, they would eventually be able to, you know, maybe expose it as, you know, an SWC plugin, or its own standalone tool, or something like that. Also, sort of tied to React 19, there was, I don't know, maybe controversy is a little strong, but kerfluffle? Annoyance? Frustration back and forth? +[13:38] So, you know, perhaps at first to make use of it. You would need to have Babel set up, but with the way they've got it designed, they would eventually be able to, you know, maybe expose it as, you know, an SWC plugin, or its own standalone tool, or something like that. Also, sort of tied to React 19, there was, I don't know, maybe controversy is a little strong, but kerfluffle? Annoyance? Frustration back and forth? -[00:14:03] **Carl Vitullo:** A joke that didn't land. +[14:03] **Carl Vitullo:** A joke that didn't land. -[00:14:04] **Mark Erikson:** Yeah. So, a little bit of background. The React Three Fiber ecosystem is pretty large. uh, DRCMDA, however you pronounce his username, uh, I think his name's Paul Henschel, and a bunch of other folks have done some amazing work over the last few years to create a React renderer that wraps the three.js 3D WebGL library so that you can write React components that render full blown 3D scenes and control them. And while I have not played with this myself, I've seen lots of examples and snippets and videos of some incredibly impressive demos and apps and tools that they've built over the last few years. +[14:04] **Mark Erikson:** Yeah. So, a little bit of background. The React Three Fiber ecosystem is pretty large. uh, DRCMDA, however you pronounce his username, uh, I think his name's Paul Henschel, and a bunch of other folks have done some amazing work over the last few years to create a React renderer that wraps the three.js 3D WebGL library so that you can write React components that render full blown 3D scenes and control them. And while I have not played with this myself, I've seen lots of examples and snippets and videos of some incredibly impressive demos and apps and tools that they've built over the last few years. -[00:14:44] Now, one issue is that React three fiber is its own separate React renderer different from React DOM. Like, they both have their own copies of React's core logic embedded in them. And React has a limitation that different renderers in the same program don't actually know about each other. And so, if you think about a typical web app, you're probably using React DOM to render the outer page, and then you might be using React Three Fiber to render, you know, like a 3D animated scene or a game or something inside of the page. +[14:44] Now, one issue is that React three fiber is its own separate React renderer different from React DOM. Like, they both have their own copies of React's core logic embedded in them. And React has a limitation that different renderers in the same program don't actually know about each other. And so, if you think about a typical web app, you're probably using React DOM to render the outer page, and then you might be using React Three Fiber to render, you know, like a 3D animated scene or a game or something inside of the page. -[00:15:22] And the problem is that if you try to render a context provider, In, like, React DOM, React Three Fiber will not see it, because they are effectively totally separate worlds that just happen to be nested in each other. And so, there was a PR, there was an issue request all the way back in 2019, where some folks like the React Three Fiber people were asking, " Can React add a way to try to share context?" +[15:22] And the problem is that if you try to render a context provider, In, like, React DOM, React Three Fiber will not see it, because they are effectively totally separate worlds that just happen to be nested in each other. And so, there was a PR, there was an issue request all the way back in 2019, where some folks like the React Three Fiber people were asking, " Can React add a way to try to share context?" -[00:15:48] between renderers. And that PR has been open for a long time, er, issue, and nothing's happened with it. So, the React Three Fiber folks ended up writing a very intentionally hacky package called `its-fine`, which, you know, references that goofy little, like, dog in the fire meme. It very intentionally reaches into React's internals and accesses fields that you're not supposed to be able to grab context instances from. +[15:48] between renderers. And that PR has been open for a long time, er, issue, and nothing's happened with it. So, the React Three Fiber folks ended up writing a very intentionally hacky package called `its-fine`, which, you know, references that goofy little, like, dog in the fire meme. It very intentionally reaches into React's internals and accesses fields that you're not supposed to be able to grab context instances from. -[00:16:15] And pass them across the renderer boundary so that you could have like your context provider with user data or something at the top of the whole application and both React DOM and React Three Fiber could read from it. Well, a few weeks ago, Sebastien Mårkbage from the React team put up a tweet where he linked to the dependents of the it's fine package and said, " yeah, this is a list of Packages and tools that will break in React 19," which is fair. +[16:15] And pass them across the renderer boundary so that you could have like your context provider with user data or something at the top of the whole application and both React DOM and React Three Fiber could read from it. Well, a few weeks ago, Sebastien Mårkbage from the React team put up a tweet where he linked to the dependents of the it's fine package and said, " yeah, this is a list of Packages and tools that will break in React 19," which is fair. -[00:16:41] I mean, it's a package that intentionally reaches into React's internals. You have to expect that there's going to be breakage. So that's a very legitimate observation. +[16:41] I mean, it's a package that intentionally reaches into React's internals. You have to expect that there's going to be breakage. So that's a very legitimate observation. -[00:16:50] But then it kind of went off the rails a little bit. Another one of the React team members, Rick Hanlon, actually posted a PR in the React repo that he labeled, " it's not fine," and that PR literally just looks for the existence of the it's fine package in your project and throws an error if it's detected. Now, while he didn't explicitly say it in the initial version of the PR, it was obvious this was a joke and it was never going to be merged. But, I'll be honest, speaking personally, I found that joke to be in very bad taste. +[16:50] But then it kind of went off the rails a little bit. Another one of the React team members, Rick Hanlon, actually posted a PR in the React repo that he labeled, " it's not fine," and that PR literally just looks for the existence of the it's fine package in your project and throws an error if it's detected. Now, while he didn't explicitly say it in the initial version of the PR, it was obvious this was a joke and it was never going to be merged. But, I'll be honest, speaking personally, I found that joke to be in very bad taste. -[00:17:23] To me, as a library maintainer, if people are writing code in a way that reaches into my own library's internals, that usually says to me that there's some use case that I haven't considered that I ought to at least think about trying to handle. and make a public API for. As an example, with React Redux, up through version 5, used the old style React context system. +[17:23] To me, as a library maintainer, if people are writing code in a way that reaches into my own library's internals, that usually says to me that there's some use case that I haven't considered that I ought to at least think about trying to handle. and make a public API for. As an example, with React Redux, up through version 5, used the old style React context system. -[00:17:50] And everybody knew that you could reach in and grab the Redux store by accessing `this.context.store`, but it was never part of our public API. And so when we switched over to the new context API in version 6, Number one, all those old usages broke. And number two, we actually publicly added a useStore hook, that, you know, just grabs the store off of new context and returns it. And so it's not something we recommend using, but it's a thing people sometimes had a reason to do. And so we provided an API to do it. +[17:50] And everybody knew that you could reach in and grab the Redux store by accessing `this.context.store`, but it was never part of our public API. And so when we switched over to the new context API in version 6, Number one, all those old usages broke. And number two, we actually publicly added a useStore hook, that, you know, just grabs the store off of new context and returns it. And so it's not something we recommend using, but it's a thing people sometimes had a reason to do. And so we provided an API to do it. -[00:18:26] So my stance as a maintainer and a community person here is that, number one, the joke PR was a bad idea. The React team has had enough issues with marketing and PR and DevRel. +[18:26] So my stance as a maintainer and a community person here is that, number one, the joke PR was a bad idea. The React team has had enough issues with marketing and PR and DevRel. -[00:18:39] Mistakes in the last few years and this really did not help the situation. And number two, you know, making the original observation that, hey, these things are going to break is fine, but maybe instead of making a joke, Pierre saying, "haha, we're going to ban this package", maybe you should be trying to address the legitimate request for a way to use React that does not officially work right now. +[18:39] Mistakes in the last few years and this really did not help the situation. And number two, you know, making the original observation that, hey, these things are going to break is fine, but maybe instead of making a joke, Pierre saying, "haha, we're going to ban this package", maybe you should be trying to address the legitimate request for a way to use React that does not officially work right now. -[00:19:02] **Carl Vitullo:** It looks like this did turn into that as well. In a reply on that, you know, joke PR, Sebastien Mårkbage did come in with some like real analysis on, you know, he said, I spent some time investigation or investigating. "The proper solution behaves like a portal should forward the value during a concurrent render into the child." +[19:02] **Carl Vitullo:** It looks like this did turn into that as well. In a reply on that, you know, joke PR, Sebastien Mårkbage did come in with some like real analysis on, you know, he said, I spent some time investigation or investigating. "The proper solution behaves like a portal should forward the value during a concurrent render into the child." -[00:19:26] Yeah, it's, it basically, it sounds like what he was saying is, " it's tough, it would require some adjustment to these other guarantees that we make, will take a fair amount of time to evaluate whether this is going to be actually possible. It's not our top priority because of the bit of a fringe need." +[19:26] Yeah, it's, it basically, it sounds like what he was saying is, " it's tough, it would require some adjustment to these other guarantees that we make, will take a fair amount of time to evaluate whether this is going to be actually possible. It's not our top priority because of the bit of a fringe need." -[00:19:42] Which, all very fair. So I'm glad this did come back and get some, like, real technical back and forth. it just felt like it felt a little bit like targeted and kind of mean spirited. So, you know, glad it came back and had some more meaningful discussion about the problem and what the right solution— +[19:42] Which, all very fair. So I'm glad this did come back and get some, like, real technical back and forth. it just felt like it felt a little bit like targeted and kind of mean spirited. So, you know, glad it came back and had some more meaningful discussion about the problem and what the right solution— -[00:20:00] **Mark Erikson:** the technical feasibility aspect of it. Yeah. +[20:00] **Mark Erikson:** the technical feasibility aspect of it. Yeah. ## React Strict DOM, Why is it so Great? -[00:20:02] **Carl Vitullo:** Yeah, most definitely. +[20:02] **Carl Vitullo:** Yeah, most definitely. -[00:20:04] Next one, there was a really great post called, React Strict DOM, Why is it so great? From Syzmon Rybczak? I am so sorry if I'm murdering that, but, interestingly, he, he claims to be 17 and working at Callstack. So, wow, cool. This is a great post flat out. And this is a phenomenal post for a 17 year old developer. Like, wow, cool. Somebody to keep an eye on. +[20:04] Next one, there was a really great post called, React Strict DOM, Why is it so great? From Syzmon Rybczak? I am so sorry if I'm murdering that, but, interestingly, he, he claims to be 17 and working at Callstack. So, wow, cool. This is a great post flat out. And this is a phenomenal post for a 17 year old developer. Like, wow, cool. Somebody to keep an eye on. -[00:20:24] But, talking about, React Strict DOM, and, sort of the, Technical background of where it came from and contrasting it with React Native for web. Actually, as I was reading this, it reminded me of some of the discussion we've had, but this is a really great long form write up of, that hits a lot of the same notes that we discussed previously, but with added benefit of pretty great technical diagrams made with Excalidraw . Yeah, definitely good to check out. +[20:24] But, talking about, React Strict DOM, and, sort of the, Technical background of where it came from and contrasting it with React Native for web. Actually, as I was reading this, it reminded me of some of the discussion we've had, but this is a really great long form write up of, that hits a lot of the same notes that we discussed previously, but with added benefit of pretty great technical diagrams made with Excalidraw . Yeah, definitely good to check out. -[00:20:52] It talks about how React Native Web is It's ultimately a shim that offers compatibility with the React Native API, which the big downside of that is because of the approach it took, it is necessarily a relatively large shim, and adding A large core package to a web app, just it, it inflates the bundle significantly, more significantly than not using it, which is just the extra friction, which makes it just that much harder to get adoption. +[20:52] It talks about how React Native Web is It's ultimately a shim that offers compatibility with the React Native API, which the big downside of that is because of the approach it took, it is necessarily a relatively large shim, and adding A large core package to a web app, just it, it inflates the bundle significantly, more significantly than not using it, which is just the extra friction, which makes it just that much harder to get adoption. -[00:21:23] And since React Native Web didn't really get adoption. So the React strict DOM approach sort of comes at it backwards, where it takes web APIs to render components out and, because it is taking such a different approach to a similar problem, it is able to keep the size of this shim, this compatibility layer, much, much smaller. +[21:23] And since React Native Web didn't really get adoption. So the React strict DOM approach sort of comes at it backwards, where it takes web APIs to render components out and, because it is taking such a different approach to a similar problem, it is able to keep the size of this shim, this compatibility layer, much, much smaller. -[00:21:44] So it looks like the core of it is coming from these two CSS and HTML exports from the ReactStrict DOM package, and those are how React Native would then understand how to handle these UI primitives. +[21:44] So it looks like the core of it is coming from these two CSS and HTML exports from the ReactStrict DOM package, and those are how React Native would then understand how to handle these UI primitives. -[00:21:59] **Mark Erikson:** Yeah, another way to put it is that the React Native web package gave you what looked like React Native components, so you would write your web code as if it were targeting React Native. +[21:59] **Mark Erikson:** Yeah, another way to put it is that the React Native web package gave you what looked like React Native components, so you would write your web code as if it were targeting React Native. -[00:22:12] With React Script Dom, it's flipped, so that you're You write React Native code as if you were targeting the web, and so you write, you know, your components return a, quote, div on both platforms, but now with React Strict DOM, what you said was a div on native actually becomes a React Native view instead. +[22:12] With React Script Dom, it's flipped, so that you're You write React Native code as if you were targeting the web, and so you write, you know, your components return a, quote, div on both platforms, but now with React Strict DOM, what you said was a div on native actually becomes a React Native view instead. -[00:22:33] **Carl Vitullo:** Yes. Thank you for that. I guess I didn't realize that the React Strict DOM package is built on StyleX? Like it looks like that is very core to what is enabling this, I guess? I know you have explained StyleX to me at least once before and I just don't have a, it doesn't, it didn't stick in my brain. +[22:33] **Carl Vitullo:** Yes. Thank you for that. I guess I didn't realize that the React Strict DOM package is built on StyleX? Like it looks like that is very core to what is enabling this, I guess? I know you have explained StyleX to me at least once before and I just don't have a, it doesn't, it didn't stick in my brain. -[00:22:50] **Mark Erikson:** As usual, I've only glanced at it myself. +[22:50] **Mark Erikson:** As usual, I've only glanced at it myself. -[00:22:52] It is yet another CSS in JS type tool. It was developed internally at Meta, like many of the other tools that they've put out there. As I understand it, some of the defining features are it's more of a compile time tool instead of runtime. And I believe it compiles down to more of an atomic CSS setup so that it. +[22:52] It is yet another CSS in JS type tool. It was developed internally at Meta, like many of the other tools that they've put out there. As I understand it, some of the defining features are it's more of a compile time tool instead of runtime. And I believe it compiles down to more of an atomic CSS setup so that it. -[00:23:14] Like over time, the amount of extra styles that get generated stay pretty limited because, you know, like everywhere you use like a certain margin size or something that only ultimately adds one rule to the code base. +[23:14] Like over time, the amount of extra styles that get generated stay pretty limited because, you know, like everywhere you use like a certain margin size or something that only ultimately adds one rule to the code base. -[00:23:28] **Carl Vitullo:** It's definitely similar ish to the like compiler for the Tailwind compiler works ish, but operating on a different set of, uh, underlying primitives. +[23:28] **Carl Vitullo:** It's definitely similar ish to the like compiler for the Tailwind compiler works ish, but operating on a different set of, uh, underlying primitives. -[00:23:37] Very interesting. Didn't realize that it was so connected to React strict DOM. So that's pretty cool. +[23:37] Very interesting. Didn't realize that it was so connected to React strict DOM. So that's pretty cool. ## Server Components updates -[00:23:42] **Mark Erikson:** Moving right along, we have a few different articles and bits of information related to server components. There was A couple articles that discussed kind of like some of the philosophical or conceptual model of React and server components. +[23:42] **Mark Erikson:** Moving right along, we have a few different articles and bits of information related to server components. There was A couple articles that discussed kind of like some of the philosophical or conceptual model of React and server components. -[00:23:57] There was one article in particular that tried to go back to React's, early selling point of your UI is a function of state. And, when we say state, we normally think about state in components, or maybe state in, you know, You know, an external state library like Redux or Jotai or something. The article makes the point that there could actually be lots and lots of sources of state in your application. +[23:57] There was one article in particular that tried to go back to React's, early selling point of your UI is a function of state. And, when we say state, we normally think about state in components, or maybe state in, you know, You know, an external state library like Redux or Jotai or something. The article makes the point that there could actually be lots and lots of sources of state in your application. -[00:24:22] You know, there's the URL, there's server files, there's the current time, operating system settings, environment variables, You know, lots of different potential sources of state. And so, you know, kind of walking back philosophically about, you know, how do these concepts tie together. And the author goes in a couple different directions. +[24:22] You know, there's the URL, there's server files, there's the current time, operating system settings, environment variables, You know, lots of different potential sources of state. And so, you know, kind of walking back philosophically about, you know, how do these concepts tie together. And the author goes in a couple different directions. -[00:24:40] On the one hand, extrapolating some of React's principles, you know, the React team has always been very focused on composability. And that's why we ended up with the custom hooks model that we did, because it enables arbitrary composition of hooks. On the other hand, the author also put up a follow up post saying that they think that Next actually kind of breaks some of these React fundamentals with the way that server components work and some of the way you have to actually structure your code base and your data flow. +[24:40] On the one hand, extrapolating some of React's principles, you know, the React team has always been very focused on composability. And that's why we ended up with the custom hooks model that we did, because it enables arbitrary composition of hooks. On the other hand, the author also put up a follow up post saying that they think that Next actually kind of breaks some of these React fundamentals with the way that server components work and some of the way you have to actually structure your code base and your data flow. -[00:25:10] I don't have a particularly strong opinion here, but it's always nice to see people actually kind of thinking through the concepts and the consequences involved. +[25:10] I don't have a particularly strong opinion here, but it's always nice to see people actually kind of thinking through the concepts and the consequences involved. -[00:25:18] **Carl Vitullo:** Yeah, and I really like the focus on. Discussing what state is. I feel like the, you know, the React ecosystem has been talking about state and state management for so long that, you know, there's always a game of telephone that happens in trying to communicate concepts out. +[25:18] **Carl Vitullo:** Yeah, and I really like the focus on. Discussing what state is. I feel like the, you know, the React ecosystem has been talking about state and state management for so long that, you know, there's always a game of telephone that happens in trying to communicate concepts out. -[00:25:34] And I feel like where that has ended up over the years in the React ecosystem is people think state is a single blob of JSON. You know, that their app uses. But what this article is bringing back up is like, no, that's not the only type of state. State is something that your app needs to track in order to function correctly. +[25:34] And I feel like where that has ended up over the years in the React ecosystem is people think state is a single blob of JSON. You know, that their app uses. But what this article is bringing back up is like, no, that's not the only type of state. State is something that your app needs to track in order to function correctly. -[00:25:55] So yeah, I just wanted to call that out. I think that's a really useful clarification. +[25:55] So yeah, I just wanted to call that out. I think that's a really useful clarification. -[00:26:00] **Mark Erikson:** There was also a pretty good post over at Builder. io entitled, Why React Server Components are Breaking Builds to Win Tomorrow. I actually didn't quite catch the where in this it's talking about the breaking builds concept specifically, but it does a pretty good job of talking about the different concepts of rendering on the client, versus rendering on the server, versus streaming HTML, and how suspense and server components actually make some of these capabilities possible. So it's a pretty good kind of like technical architectural walkthrough. +[26:00] **Mark Erikson:** There was also a pretty good post over at Builder. io entitled, Why React Server Components are Breaking Builds to Win Tomorrow. I actually didn't quite catch the where in this it's talking about the breaking builds concept specifically, but it does a pretty good job of talking about the different concepts of rendering on the client, versus rendering on the server, versus streaming HTML, and how suspense and server components actually make some of these capabilities possible. So it's a pretty good kind of like technical architectural walkthrough. -[00:26:31] Moving on a little further to the ecosystem. The Waku project from Daishikado, who's the author of Jotai and Valtio and Maintainer as Zustand, is making good progress. They've announced that they're working on a Pages router. +[26:31] Moving on a little further to the ecosystem. The Waku project from Daishikado, who's the author of Jotai and Valtio and Maintainer as Zustand, is making good progress. They've announced that they're working on a Pages router. -[00:26:44] And I believe they're up to version 0. 20. Not sure what the roadmap is to 1. 0, but it's definitely a nice alternative approach to what we've seen with Next. And I believe they're pretty serious about trying to make it like a full blown, meaningful, usable framework based on server components. Similarly, Lee Robinson from Vercel actually just tweeted out a list of at least a half dozen different projects that are working on server component support in some fashion. +[26:44] And I believe they're up to version 0. 20. Not sure what the roadmap is to 1. 0, but it's definitely a nice alternative approach to what we've seen with Next. And I believe they're pretty serious about trying to make it like a full blown, meaningful, usable framework based on server components. Similarly, Lee Robinson from Vercel actually just tweeted out a list of at least a half dozen different projects that are working on server component support in some fashion. -[00:27:14] And so there's definitely work being done in the ecosystem. More specifically, the Redwood project. which originally went all in on GraphQL as the back end, just announced that they have finally managed to succeed in integrating server components. And I think they actually put up a post a few months ago saying that we are all in on server components as a concept. +[27:14] And so there's definitely work being done in the ecosystem. More specifically, the Redwood project. which originally went all in on GraphQL as the back end, just announced that they have finally managed to succeed in integrating server components. And I think they actually put up a post a few months ago saying that we are all in on server components as a concept. -[00:27:36] So, server components have been out in Next for a while. We know that Remix is working on them, but there's other tools and frameworks that are trying to adopt them as well. And finally, I, one slight counterpoint, found an article just a little bit earlier where a company said, you know, we've tried server components and we like them, and we tried the new React server actions support. +[27:36] So, server components have been out in Next for a while. We know that Remix is working on them, but there's other tools and frameworks that are trying to adopt them as well. And finally, I, one slight counterpoint, found an article just a little bit earlier where a company said, you know, we've tried server components and we like them, and we tried the new React server actions support. -[00:27:57] But they ran into a few technical details, or technical issues. They didn't get a lot of details. It looked like something about some bundle problems, and then they felt that there was too much magic going on at the architectural level, and so they actually dropped server actions and went back to using tRPC instead. +[27:57] But they ran into a few technical details, or technical issues. They didn't get a lot of details. It looked like something about some bundle problems, and then they felt that there was too much magic going on at the architectural level, and so they actually dropped server actions and went back to using tRPC instead. -[00:28:13] **Carl Vitullo:** Interesting. Yeah. Too much magic is a very hand wavy type of complaint that can be used for all sorts of different, uh, underlying problems. So I'm curious what some more of those technical details would have been. But it's cool to see more experimentation and a wider range of experiments being done with server components generally. +[28:13] **Carl Vitullo:** Interesting. Yeah. Too much magic is a very hand wavy type of complaint that can be used for all sorts of different, uh, underlying problems. So I'm curious what some more of those technical details would have been. But it's cool to see more experimentation and a wider range of experiments being done with server components generally. -[00:28:33] When we first talked about WACU, I kind of expected it to be like just sort of an experiment, just sort of a like trial, because we'd seen a couple of those. We've seen, we had seen a couple of people just throwing together a project, doing it for learning, doing it to just explore. There's been. Pretty consistent development on Waku, so very interesting to see. +[28:33] When we first talked about WACU, I kind of expected it to be like just sort of an experiment, just sort of a like trial, because we'd seen a couple of those. We've seen, we had seen a couple of people just throwing together a project, doing it for learning, doing it to just explore. There's been. Pretty consistent development on Waku, so very interesting to see. -[00:28:52] We'll have to see if it grows into a, like, serious competitor framework for, you know, okay, like, if it makes it to Remix or Next tier, then I would be very impressed. But, you know, they're definitely working on it in a much more meaningful way than I was anticipating originally. +[28:52] We'll have to see if it grows into a, like, serious competitor framework for, you know, okay, like, if it makes it to Remix or Next tier, then I would be very impressed. But, you know, they're definitely working on it in a much more meaningful way than I was anticipating originally. ## Apple walks back on PWAs, neat Safari features -[00:29:06] **Carl Vitullo:** A bit of a follow up to something we talked about last month of, uh, Apple's Attempted undoing of PWAs attempted. +[29:06] **Carl Vitullo:** A bit of a follow up to something we talked about last month of, uh, Apple's Attempted undoing of PWAs attempted. -[00:29:15] I don't know how to frame that, but the last month. Apple announced they were going to drop support for progressive web applications for installing a web app to your home screen. They very quickly walked that back. And actually now, like I was just checking in on WebKit updates and they're adding more support for progressive web apps. +[29:15] I don't know how to frame that, but the last month. Apple announced they were going to drop support for progressive web applications for installing a web app to your home screen. They very quickly walked that back. And actually now, like I was just checking in on WebKit updates and they're adding more support for progressive web apps. -[00:29:32] They are most specifically, they're going to be supporting the shortcuts manifest property, which allows you to add context items for the home icon. So, you know. On a Mac, if you add it to the dock, you can right click on it and it will show up a couple of options that take you to specific URLs within the app. +[29:32] They are most specifically, they're going to be supporting the shortcuts manifest property, which allows you to add context items for the home icon. So, you know. On a Mac, if you add it to the dock, you can right click on it and it will show up a couple of options that take you to specific URLs within the app. -[00:29:51] So, you know, it's a shortcut. It's a context item for your home screen icon that takes you to somewhere specifically within the app. Like, these are the kind of things that Like what progressive web apps have been a thing for like a decade now. Like there was never a technical reason why Apple could not support shortcuts in this. +[29:51] So, you know, it's a shortcut. It's a context item for your home screen icon that takes you to somewhere specifically within the app. Like, these are the kind of things that Like what progressive web apps have been a thing for like a decade now. Like there was never a technical reason why Apple could not support shortcuts in this. -[00:30:08] So this feels like a shift of tack to more meaningfully support progressive web apps so that they can entrench themselves and say like, no, look, we are, we do support alternatives. We're not a monopoly while they're defending lawsuits against the iPhone and app store. So cool. You know, if that ends up bringing more meaningful support of progressive web apps. Uh, I'm pretty excited. You have to see how that shakes out though. +[30:08] So this feels like a shift of tack to more meaningfully support progressive web apps so that they can entrench themselves and say like, no, look, we are, we do support alternatives. We're not a monopoly while they're defending lawsuits against the iPhone and app store. So cool. You know, if that ends up bringing more meaningful support of progressive web apps. Uh, I'm pretty excited. You have to see how that shakes out though. -[00:30:32] Another small, interesting thing coming from here, not related to progressive web apps, just Safari web kit features. They added a like progressive enhancement type option for checkbox. So they added a switch attribute to the input in Safari. +[30:32] Another small, interesting thing coming from here, not related to progressive web apps, just Safari web kit features. They added a like progressive enhancement type option for checkbox. So they added a switch attribute to the input in Safari. -[00:30:48] So if you say input type checkbox switch. It will render as a switch. It was one of those solutions that felt really obvious in hindsight, and I have implemented so many switches in my career, and they are a pain in the butt to get to work correctly. So having a native option, like, now I want Chrome and Firefox to roll it out, like, immediately, because it is Just a great improvement. +[30:48] So if you say input type checkbox switch. It will render as a switch. It was one of those solutions that felt really obvious in hindsight, and I have implemented so many switches in my career, and they are a pain in the butt to get to work correctly. So having a native option, like, now I want Chrome and Firefox to roll it out, like, immediately, because it is Just a great improvement. -[00:31:08] It's a very small, but very meaningful improvement. I love to see, it's not even like innovation in form inputs. It's just like fixing a problem, fixing something that's been missing for 15 years at this point. +[31:08] It's a very small, but very meaningful improvement. I love to see, it's not even like innovation in form inputs. It's just like fixing a problem, fixing something that's been missing for 15 years at this point. -[00:31:21] **Mark Erikson:** Nicole, who had been heading up a lot of Chrome's work around interacting with frameworks, I know that she had spearheaded a lot of efforts to try to improve native form controls as a concept. +[31:21] **Mark Erikson:** Nicole, who had been heading up a lot of Chrome's work around interacting with frameworks, I know that she had spearheaded a lot of efforts to try to improve native form controls as a concept. -[00:31:33] I also know there's a project called Open UI, which is somewhere between let's build another set of web components, but also let's kind of like prototype and experiment with what additional built in browser forms and features would look like. And what if there were a tabs or a carousel kind of control built into browsers natively? +[31:33] I also know there's a project called Open UI, which is somewhere between let's build another set of web components, but also let's kind of like prototype and experiment with what additional built in browser forms and features would look like. And what if there were a tabs or a carousel kind of control built into browsers natively? -[00:31:56] And so they've been doing work to try to spec those out. +[31:56] And so they've been doing work to try to spec those out. -[00:31:59] **Carl Vitullo:** Oh, very cool. In some ways, I feel like in trying to be agnostic and provide maximum flexibility to developers, I feel like we used to have, like, the operating systems, before everything moved into being web based, operating systems provided, like, a very limited toolkit of, like, here are your UI elements. +[31:59] **Carl Vitullo:** Oh, very cool. In some ways, I feel like in trying to be agnostic and provide maximum flexibility to developers, I feel like we used to have, like, the operating systems, before everything moved into being web based, operating systems provided, like, a very limited toolkit of, like, here are your UI elements. -[00:32:18] **Mark Erikson:** And bring back the styled win Windows XP Common Controls, Doug on it. . +[32:18] **Mark Erikson:** And bring back the styled win Windows XP Common Controls, Doug on it. . -[00:32:23] **Carl Vitullo:** Right, right. Where's the, where's the Windows 95, you know, tab list? Like, okay. Sure. Uh, we've had a lot more experimentation in different types of UIs and different types of ex uh, different types of user experiences. But like, man, you know, it's, I feel like it's also gotten super fragmented. +[32:23] **Carl Vitullo:** Right, right. Where's the, where's the Windows 95, you know, tab list? Like, okay. Sure. Uh, we've had a lot more experimentation in different types of UIs and different types of ex uh, different types of user experiences. But like, man, you know, it's, I feel like it's also gotten super fragmented. -[00:32:38] And so maybe this is the pendulum. Maybe, you know, it went, it started by technical necessity on a super constrained set of core components that you just added. And then we went all the way, maximum flexibility. You can do anything you want, anything and everything. And now people are going like, uh, I'm tired of figuring out new unfamiliar UIs. +[32:38] And so maybe this is the pendulum. Maybe, you know, it went, it started by technical necessity on a super constrained set of core components that you just added. And then we went all the way, maximum flexibility. You can do anything you want, anything and everything. And now people are going like, uh, I'm tired of figuring out new unfamiliar UIs. -[00:32:57] I'm tired of implementing things from scratch. So, uh, yeah, I, maybe we'll. Consolidate a little more back on a simpler set of UI primitives. +[32:57] I'm tired of implementing things from scratch. So, uh, yeah, I, maybe we'll. Consolidate a little more back on a simpler set of UI primitives. ## Mental Health in Open Source -[00:33:05] **Mark Erikson:** All right, changing topics completely. There was an excellent article this week from Anthony Fu, who is a prolific maintainer and developer within the Vite and Vue ecosystems. +[33:05] **Mark Erikson:** All right, changing topics completely. There was an excellent article this week from Anthony Fu, who is a prolific maintainer and developer within the Vite and Vue ecosystems. -[00:33:17] And, you know, strictly speaking, this has nothing to do with React, but it is an excellent article. And so he wrote about mental health in open source. And he talked about, you know, he got involved in open source kind of by accident. Thanks And he made a lot of great points that absolutely resonated with me. +[33:17] And, you know, strictly speaking, this has nothing to do with React, but it is an excellent article. And so he wrote about mental health in open source. And he talked about, you know, he got involved in open source kind of by accident. Thanks And he made a lot of great points that absolutely resonated with me. -[00:33:34] Like, as a fellow open source maintainer, I 100 percent absolutely agree and endorse and stamp and repeat every single thing that he said in this post. So we talked about, you know, not being prepared, like, as a maintainer, you are a developer, and tech support, and marketing, and docs writer, and team leader, and project manager, and, you know, a whole bunch of other hats, and nobody teaches you how to do any of this stuff. +[33:34] Like, as a fellow open source maintainer, I 100 percent absolutely agree and endorse and stamp and repeat every single thing that he said in this post. So we talked about, you know, not being prepared, like, as a maintainer, you are a developer, and tech support, and marketing, and docs writer, and team leader, and project manager, and, you know, a whole bunch of other hats, and nobody teaches you how to do any of this stuff. -[00:34:03] But there's also a really big problem with expectations, both internal and external. You know, users file bug reports, and they expect their bug to be fixed right away. But then, as a maintainer, you also put a lot of pressure on yourself to try to get stuff done. And I unfortunately am very guilty of this. +[34:03] But there's also a really big problem with expectations, both internal and external. You know, users file bug reports, and they expect their bug to be fixed right away. But then, as a maintainer, you also put a lot of pressure on yourself to try to get stuff done. And I unfortunately am very guilty of this. -[00:34:21] I routinely have put far too much expectations and self responsibility to get certain things done. And then I feel bad when I don't live up to my own expectations. As an example, I've said that this year I want to do a refresh pass on the Redux docs tutorials. And I've sat down like three different evenings and made some progress on it, but I've been otherwise focused on some different things and my brain is yelling at me because I quote, haven't made as much progress as I should have made by the end of March. +[34:21] I routinely have put far too much expectations and self responsibility to get certain things done. And then I feel bad when I don't live up to my own expectations. As an example, I've said that this year I want to do a refresh pass on the Redux docs tutorials. And I've sat down like three different evenings and made some progress on it, but I've been otherwise focused on some different things and my brain is yelling at me because I quote, haven't made as much progress as I should have made by the end of March. -[00:34:54] Nobody's watching me. Nobody is keeping track. Like, I've tweeted that I was gonna do this, but like, no one is watching me. It's my own head that is yelling at me because I don't feel like I've gotten enough done. And so Anthony has, you know, some similar points that he makes in his post. And then he also talks about, you know, in some ways your dream of working on this tool can become its own entire second job. +[34:54] Nobody's watching me. Nobody is keeping track. Like, I've tweeted that I was gonna do this, but like, no one is watching me. It's my own head that is yelling at me because I don't feel like I've gotten enough done. And so Anthony has, you know, some similar points that he makes in his post. And then he also talks about, you know, in some ways your dream of working on this tool can become its own entire second job. -[00:35:17] So there's not like a specific solution that he discusses, but everything he said on that post, like is absolutely my own experience and it's very much worth reading. +[35:17] So there's not like a specific solution that he discusses, but everything he said on that post, like is absolutely my own experience and it's very much worth reading. -[00:35:28] **Carl Vitullo:** Definitely worth reading. You have a lot of good things to say about like making your hobby, your job, that definitely resonates with me because that's kind of what I've been trying to do with the community stuff here in Reactiflux, part of why we are doing this podcast is because I thought, you know what, podcasts, that's the way to make money, not that it's worked yet, but you know, hey, sooner or later. +[35:28] **Carl Vitullo:** Definitely worth reading. You have a lot of good things to say about like making your hobby, your job, that definitely resonates with me because that's kind of what I've been trying to do with the community stuff here in Reactiflux, part of why we are doing this podcast is because I thought, you know what, podcasts, that's the way to make money, not that it's worked yet, but you know, hey, sooner or later. -[00:35:48] But yeah, this is, I definitely thought this was a really great and, I think it's a pretty vulnerable post. He's being very open about the difficulty of taking on this category of work. So yeah, also he talks, he says in the beginning, it's been about four years since I started doing open source and that's like, man, that puts him at. +[35:48] But yeah, this is, I definitely thought this was a really great and, I think it's a pretty vulnerable post. He's being very open about the difficulty of taking on this category of work. So yeah, also he talks, he says in the beginning, it's been about four years since I started doing open source and that's like, man, that puts him at. -[00:36:07] 2019, 2020? 2020? That's four years ago? What? I don't know. This blew my mind a little bit. I have never been an open source maintainer, really. I did briefly take over a, you know, abandoned project and did a little bit of work on it. But, you know, it was so small that I don't feel like I can meaningfully claim the open source maintainer. +[36:07] 2019, 2020? 2020? That's four years ago? What? I don't know. This blew my mind a little bit. I have never been an open source maintainer, really. I did briefly take over a, you know, abandoned project and did a little bit of work on it. But, you know, it was so small that I don't feel like I can meaningfully claim the open source maintainer. -[00:36:27] But, you Even just, even a very small library that was, ultimately was functionally replaced by a browser standard, it was a sticky, you know, Sticky banner library. Even just doing that for a couple of, I guess it was close to a year, just fielding issues and diagnosing and figuring out the, whether the answer to a question is yes, this is the bug that needs to be fixed or no, this is a +[36:27] But, you Even just, even a very small library that was, ultimately was functionally replaced by a browser standard, it was a sticky, you know, Sticky banner library. Even just doing that for a couple of, I guess it was close to a year, just fielding issues and diagnosing and figuring out the, whether the answer to a question is yes, this is the bug that needs to be fixed or no, this is a -[00:36:49] **Mark Erikson:** Intentional design limitation or something. +[36:49] **Mark Erikson:** Intentional design limitation or something. -[00:36:52] **Carl Vitullo:** There we go. Yes. This is an intentional constraint that. The trade offs are such that this is the correct decision. That's a lot of mental energy to expend. Like, you know, separate from, and I never did any blogging on it. I never, you know, spoke at any conferences. It was like a, an extremely small part of my, Attention. +[36:52] **Carl Vitullo:** There we go. Yes. This is an intentional constraint that. The trade offs are such that this is the correct decision. That's a lot of mental energy to expend. Like, you know, separate from, and I never did any blogging on it. I never, you know, spoke at any conferences. It was like a, an extremely small part of my, Attention. -[00:37:09] And it still wore on me a little bit. So yeah, definitely a really good post to read. Really good projects alive that all of us use to do our jobs. Yeah, definitely recommend reading it. +[37:09] And it still wore on me a little bit. So yeah, definitely a really good post to read. Really good projects alive that all of us use to do our jobs. Yeah, definitely recommend reading it. ## Angular, meet Wiz -[00:37:20] **Carl Vitullo:** I'll move us on. This is even farther afield from React, but, um, I saw Sarah Drasner tweeted that the Angular is going to be merging with a heretofore unopensourced internal Google framework called Wiz. +[37:20] **Carl Vitullo:** I'll move us on. This is even farther afield from React, but, um, I saw Sarah Drasner tweeted that the Angular is going to be merging with a heretofore unopensourced internal Google framework called Wiz. -[00:37:36] Wiz was brand new to me, I had never heard of it. So. Hearing that, you know, Angular, one of these huge projects, one of the projects in web is going to be internally combining with a never open source project. That's a pretty big statement. That's a pretty big plan. +[37:36] Wiz was brand new to me, I had never heard of it. So. Hearing that, you know, Angular, one of these huge projects, one of the projects in web is going to be internally combining with a never open source project. That's a pretty big statement. That's a pretty big plan. -[00:37:51] It looks like this ultimately came from a exploration of using signals within, you know, signals and reactivity within Angular and drawing inspiration from this well understood internal framework called Wiz that I believe it is. +[37:51] It looks like this ultimately came from a exploration of using signals within, you know, signals and reactivity within Angular and drawing inspiration from this well understood internal framework called Wiz that I believe it is. -[00:38:07] No. Okay. So the combination of Angular and Wiz is already rolled out to 100 percent of YouTube traffic. So like, this is not, you know, an abstract. Intent to, like, no, this is done. This is, you know, I took this as a similar in weight to when the React core team announced that server components were being used on the Instagram web property, you know? +[38:07] No. Okay. So the combination of Angular and Wiz is already rolled out to 100 percent of YouTube traffic. So like, this is not, you know, an abstract. Intent to, like, no, this is done. This is, you know, I took this as a similar in weight to when the React core team announced that server components were being used on the Instagram web property, you know? -[00:38:29] So this is a meaningful investment. One of the big reasons that I think this is worth discussing on our React news show, Malte Ube, he is currently working at Vercel. He did a lot of work on Wiz. Back in the day at Google, he, and he had a really good post where he talked about like, why was that? Why was Wiz developed? +[38:29] So this is a meaningful investment. One of the big reasons that I think this is worth discussing on our React news show, Malte Ube, he is currently working at Vercel. He did a lot of work on Wiz. Back in the day at Google, he, and he had a really good post where he talked about like, why was that? Why was Wiz developed? ## Designing Very Large Javascript Applications -[00:38:49] **Carl Vitullo:** What problem was it trying to solve? And so he put up this blog post called Designing Very Large JavaScript Applications, which is ostensibly about Wiz and about, you know, these frameworks. But I found it to be a really clear and cogent articulation of a lot of the challenges that React. is trying to solve as well. +[38:49] **Carl Vitullo:** What problem was it trying to solve? And so he put up this blog post called Designing Very Large JavaScript Applications, which is ostensibly about Wiz and about, you know, these frameworks. But I found it to be a really clear and cogent articulation of a lot of the challenges that React. is trying to solve as well. -[00:39:08] It's, you know, it talks about like the challenges of centralizing configuration and how, you know, things like a routes configuration file or the webpack configuration file, when you start maintaining a Enormous web application begins to be such a large constraint as to be like prohibitive. Like it just, it doesn't work. +[39:08] It's, you know, it talks about like the challenges of centralizing configuration and how, you know, things like a routes configuration file or the webpack configuration file, when you start maintaining a Enormous web application begins to be such a large constraint as to be like prohibitive. Like it just, it doesn't work. -[00:39:29] You can't scale it. It ends up being append only. And so then you end up loading the bundle, like it becomes fragile because nobody wants to remove things. So then nobody wants to change, make certain categories of changes. Definitely a really good post discussing a lot of the finer points around bundling and architecture limits of current tooling and the most challenging. +[39:29] You can't scale it. It ends up being append only. And so then you end up loading the bundle, like it becomes fragile because nobody wants to remove things. So then nobody wants to change, make certain categories of changes. Definitely a really good post discussing a lot of the finer points around bundling and architecture limits of current tooling and the most challenging. -[00:39:49] Parts of large and complex applications. Uh, specifically he talks about Google search results and you know, now they serve up lots of little, uh, widgets as the first result. Like, you know, you search some math and it will spit out a calculator. You search a currency conversion and it puts up. +[39:49] Parts of large and complex applications. Uh, specifically he talks about Google search results and you know, now they serve up lots of little, uh, widgets as the first result. Like, you know, you search some math and it will spit out a calculator. You search a currency conversion and it puts up. -[00:40:03] A calculator. Or all sorts of those things. Like each of those is basically its own tiny web app, and so if you just pull up Google, obviously they cannot serve up dozens and dozens of these tiny web apps that you're not using. So that's sort of the category, that's the backdrop and the framing for this architecture that's gotten. +[40:03] A calculator. Or all sorts of those things. Like each of those is basically its own tiny web app, and so if you just pull up Google, obviously they cannot serve up dozens and dozens of these tiny web apps that you're not using. So that's sort of the category, that's the backdrop and the framing for this architecture that's gotten. -[00:40:21] Yeah, definitely really interesting. Definitely recommend giving it a read. +[40:21] Yeah, definitely really interesting. Definitely recommend giving it a read. -[00:40:24] **Mark Erikson:** One other small tangent off that is, you know, we've heard the discussions and the arguments about front end development doesn't get the respect that it deserves for being its own very complicated domain. And I think that post is a very good example of, you know, real world apps have a lot of complexity and there are, they have their own unique sets of constraints and concerns and potential problems they have to work through. +[40:24] **Mark Erikson:** One other small tangent off that is, you know, we've heard the discussions and the arguments about front end development doesn't get the respect that it deserves for being its own very complicated domain. And I think that post is a very good example of, you know, real world apps have a lot of complexity and there are, they have their own unique sets of constraints and concerns and potential problems they have to work through. -[00:40:47] Yeah, +[40:47] Yeah, -[00:40:48] **Carl Vitullo:** very true. And on that note, something that struck me reading it is that is an entirely different set of constraints than I personally have ever experienced in my career. So of all of the weird, quirky, you know, specific reasons why like this tool doesn't work for this product or whatever, That was a whole new category that I've never encountered, like, I, you know, I don't work on a Google type app where there might be one of a hundred and fifty different things served on the same page. +[40:48] **Carl Vitullo:** very true. And on that note, something that struck me reading it is that is an entirely different set of constraints than I personally have ever experienced in my career. So of all of the weird, quirky, you know, specific reasons why like this tool doesn't work for this product or whatever, That was a whole new category that I've never encountered, like, I, you know, I don't work on a Google type app where there might be one of a hundred and fifty different things served on the same page. -[00:41:16] So I just thought that was really interesting. It was a glimpse into a different part of the web world. Just broadened my perspective just that little bit much more. +[41:16] So I just thought that was really interesting. It was a glimpse into a different part of the web world. Just broadened my perspective just that little bit much more. -[00:41:23] **Mark Erikson:** I mean, similarly, you were talking earlier about like, you know, I've implemented, you know, a half dozen input widgets or something in my career. +[41:23] **Mark Erikson:** I mean, similarly, you were talking earlier about like, you know, I've implemented, you know, a half dozen input widgets or something in my career. -[00:41:30] Like, I've never done anything like that. I mean, I've never worked on a project that really made meaningful use of a router. At all. Like everything I've worked on in my career has basically been the equivalent of a desktop app that runs in a browser that, you know, it's an app, not like pages or routing. +[41:30] Like, I've never done anything like that. I mean, I've never worked on a project that really made meaningful use of a router. At all. Like everything I've worked on in my career has basically been the equivalent of a desktop app that runs in a browser that, you know, it's an app, not like pages or routing. -[00:41:51] So like I've barely ever used routing in my own career because the products I've worked on just haven't required it. +[41:51] So like I've barely ever used routing in my own career because the products I've worked on just haven't required it. -[00:41:58] **Carl Vitullo:** Yeah. I think that is so true and very underappreciated even within frontend. I think that so like you said, I've implemented a lot of checkboxes. That's because I've jumped around to a lot of different startups and I've worked on a lot of greenfield projects. +[41:58] **Carl Vitullo:** Yeah. I think that is so true and very underappreciated even within frontend. I think that so like you said, I've implemented a lot of checkboxes. That's because I've jumped around to a lot of different startups and I've worked on a lot of greenfield projects. -[00:42:11] So I actually think that I have a relatively rare perspective on the industry of, you know, I didn't spend six years at, you know, Google. Four years at Facebook. In, in my, over my 10 year career, I worked at nine different companies. Like, you know, I've seen a lot of different types of products. I've worked in advertising tech, agriculture tech, cryptocurrencies, done brochure sales sites for credit card companies. +[42:11] So I actually think that I have a relatively rare perspective on the industry of, you know, I didn't spend six years at, you know, Google. Four years at Facebook. In, in my, over my 10 year career, I worked at nine different companies. Like, you know, I've seen a lot of different types of products. I've worked in advertising tech, agriculture tech, cryptocurrencies, done brochure sales sites for credit card companies. -[00:42:34] So like, I have worked in a bunch of different contexts. And what I've learned is that Well, something I experienced was that surprisingly little of what I used in one company was immediately relevant at the next company. Like, the architectures were just so different that the assumptions I couldn't bring any of my past assumptions. +[42:34] So like, I have worked in a bunch of different contexts. And what I've learned is that Well, something I experienced was that surprisingly little of what I used in one company was immediately relevant at the next company. Like, the architectures were just so different that the assumptions I couldn't bring any of my past assumptions. -[00:42:53] I had to leave all those assumptions at the door and just rediscover a new problem space every time I joined a new company. And so here's Malte discussing an entirely new type of architectural constraint that I have never encountered, despite my wide range of encountered problems. Last thing I'll say on that, he gave a talk at JSConf Australia in 2018. +[42:53] I had to leave all those assumptions at the door and just rediscover a new problem space every time I joined a new company. And so here's Malte discussing an entirely new type of architectural constraint that I have never encountered, despite my wide range of encountered problems. Last thing I'll say on that, he gave a talk at JSConf Australia in 2018. -[00:43:13] Speaking about Wiz and talking a little bit about his decision not to open source. He says at the time didn't want to compete with React. There were already so many options, adding another one seemed unnecessary. And like, yeah, I, 2018, I feel like that was about peak JavaScript fatigue era. Um, but now he describes that decision not to open source as a misread of the market demand. +[43:13] Speaking about Wiz and talking a little bit about his decision not to open source. He says at the time didn't want to compete with React. There were already so many options, adding another one seemed unnecessary. And like, yeah, I, 2018, I feel like that was about peak JavaScript fatigue era. Um, but now he describes that decision not to open source as a misread of the market demand. -[00:43:36] So that's interesting. So just bringing it back to Angular meets Wiz. I think, yeah, I'm going to be paying attention to that to see how that shakes out a little bit more. It seems like it's, he regards it as a correction to a mistake made like five or six years ago. +[43:36] So that's interesting. So just bringing it back to Angular meets Wiz. I think, yeah, I'm going to be paying attention to that to see how that shakes out a little bit more. It seems like it's, he regards it as a correction to a mistake made like five or six years ago. ## Lightning round -[00:43:51] **Carl Vitullo:** We're into the lightning round. We are over an hour. +[43:51] **Carl Vitullo:** We're into the lightning round. We are over an hour. -[00:43:53] **Mark Erikson:** Lightning the lightning round. +[43:53] **Mark Erikson:** Lightning the lightning round. -[00:43:55] **Carl Vitullo:** Yeah, lightning the lightning round. Cool. +[43:55] **Carl Vitullo:** Yeah, lightning the lightning round. Cool. ## ⚡️ Interaction to Next Paint, new Core Web Vital ⚡️ -[00:43:56] **Carl Vitullo:** First off, there is a new Core Web Vital, which are the, like, lighthouse, Performance characteristics that are measured by Google. I believe the Core Web Vitals are one relatively significant input to search ranking for like search engine optimization. +[43:56] **Carl Vitullo:** First off, there is a new Core Web Vital, which are the, like, lighthouse, Performance characteristics that are measured by Google. I believe the Core Web Vitals are one relatively significant input to search ranking for like search engine optimization. -[00:44:12] Interaction to NextPaint, INP, is replacing first input delay as a Core Web Vital. So really quick overview, uh, first input delay was You open up a new website, how long until that code responds to the first input you give it? You know, a click, a scroll, a keystroke. That is no longer going to be a Core Web Vital, and instead it will be how long between an interaction and the next paint. +[44:12] Interaction to NextPaint, INP, is replacing first input delay as a Core Web Vital. So really quick overview, uh, first input delay was You open up a new website, how long until that code responds to the first input you give it? You know, a click, a scroll, a keystroke. That is no longer going to be a Core Web Vital, and instead it will be how long between an interaction and the next paint. -[00:44:36] Notably, that's A change from measuring like startup responsiveness to ongoing responsiveness, which I think is very important. 'cause you know, it's much easier to do a, a one-time optimization of the app as it's loading versus a just optimizing the entire app so it's more responsive and just faster, better. So yeah, definitely seems like a much more meaningful metric. +[44:36] Notably, that's A change from measuring like startup responsiveness to ongoing responsiveness, which I think is very important. 'cause you know, it's much easier to do a, a one-time optimization of the app as it's loading versus a just optimizing the entire app so it's more responsive and just faster, better. So yeah, definitely seems like a much more meaningful metric. ## ⚡️ RSPack charts a path to 1.0 ⚡️ -[00:44:56] **Mark Erikson:** Next up, there's been a plethora of rust based javaScript build tools as of late. One of those is called RS Pack, which is a rust based reimplementation of the entire web pack tool being built by ance. RS Build is a layer on top of that from the same team that makes the web pack layer easier to use. +[44:56] **Mark Erikson:** Next up, there's been a plethora of rust based javaScript build tools as of late. One of those is called RS Pack, which is a rust based reimplementation of the entire web pack tool being built by ance. RS Build is a layer on top of that from the same team that makes the web pack layer easier to use. -[00:45:20] So conceptually this is like a CRE React app equivalent, and they actually have how to migrate from CRA in their docs. They have announced plans for their roadmap to a 1.0 release. For what it's worth, I tried out RS build in one relatively small CRA project that I had, and it worked great. Like the build time dropped from like 30 seconds to one second. +[45:20] So conceptually this is like a CRE React app equivalent, and they actually have how to migrate from CRA in their docs. They have announced plans for their roadmap to a 1.0 release. For what it's worth, I tried out RS build in one relatively small CRA project that I had, and it worked great. Like the build time dropped from like 30 seconds to one second. ## ⚡️ Remix might merge React Router in?? ⚡️ -[00:45:42] **Mark Erikson:** Entirely other news, Ryan Florence has been talking about how the Remix team has been continually adding more features to React Router, things like loaders and such. And so he's now tossing out the idea that they might end up effectively merging the Remix and React Router projects in some way. Details TBD. But it's something that they're thinking about. +[45:42] **Mark Erikson:** Entirely other news, Ryan Florence has been talking about how the Remix team has been continually adding more features to React Router, things like loaders and such. And so he's now tossing out the idea that they might end up effectively merging the Remix and React Router projects in some way. Details TBD. But it's something that they're thinking about. ## ⚡ Declarative Shadow DOM in all major browsers ⚡️ -[00:46:08] **Carl Vitullo:** I have another broad web update here. Declarative Shadow DOM is now available in all major browsers. This is related to web components. I know that one of the major criticisms in the past several years, many years, has been Of web components has been that it is not possible to use them without JavaScript. +[46:08] **Carl Vitullo:** I have another broad web update here. Declarative Shadow DOM is now available in all major browsers. This is related to web components. I know that one of the major criticisms in the past several years, many years, has been Of web components has been that it is not possible to use them without JavaScript. -[00:46:27] How they get added to the page is through JavaScript. And so if you are trying to make, there are many categories of web products, web properties. Where that just doesn't work. You can't use JavaScript, you can't rely on it, many reasons it doesn't work. And so, this is a declarative version of Shadow DOM that is now supported in all major browsers. +[46:27] How they get added to the page is through JavaScript. And so if you are trying to make, there are many categories of web products, web properties. Where that just doesn't work. You can't use JavaScript, you can't rely on it, many reasons it doesn't work. And so, this is a declarative version of Shadow DOM that is now supported in all major browsers. -[00:46:46] And, theoretically, maybe this will unlock a new era of experimentation in web toolkits. Now that we can use Web components without JavaScript. I think that we might start seeing some more experimentation. This kind of feels like what web components have always been meant to be. So yeah, interesting. +[46:46] And, theoretically, maybe this will unlock a new era of experimentation in web toolkits. Now that we can use Web components without JavaScript. I think that we might start seeing some more experimentation. This kind of feels like what web components have always been meant to be. So yeah, interesting. ## ⚡️ React Native community map ⚡️ -[00:47:05] **Mark Erikson:** Okay, next up, there's a developer named Lorenzo Sciandra, who works at Microsoft, I believe, on Microsoft's maintenance of React Native for Windows and React Native for Mac, and he's put together a repository list that points to lots of community resources for React Native. Discords and servers and discussions. So if you're interested in React Native and other possible community resources, that's useful. +[47:05] **Mark Erikson:** Okay, next up, there's a developer named Lorenzo Sciandra, who works at Microsoft, I believe, on Microsoft's maintenance of React Native for Windows and React Native for Mac, and he's put together a repository list that points to lots of community resources for React Native. Discords and servers and discussions. So if you're interested in React Native and other possible community resources, that's useful. -[00:47:31] **Carl Vitullo:** Yep, we're on there. Woo! (chuckles) +[47:31] **Carl Vitullo:** Yep, we're on there. Woo! (chuckles) ## ⚡️ Node.js 2023 Year in Review ⚡️ -[00:47:34] **Carl Vitullo:** As mentioned much earlier, there was a Node. js 2023 year in review post. +[47:34] **Carl Vitullo:** As mentioned much earlier, there was a Node. js 2023 year in review post. -[00:47:39] It's mostly just sort of talking about, like, Technical overview of how Node itself has changed over the years. So it's not so much like how you use it or, you know, performance. It's here is how usage of different versions have, has trended over time as different ones have gone end of life or been released. +[47:39] It's mostly just sort of talking about, like, Technical overview of how Node itself has changed over the years. So it's not so much like how you use it or, you know, performance. It's here is how usage of different versions have, has trended over time as different ones have gone end of life or been released. -[00:47:58] It has a great chart of the binary size per version over time, which let me just call out. So version 10. 24. was about 40 megabytes or mebibytes. I'm just going to call it megabytes. Version 21. 6 was 98. So that's a long time. Version 10 versus version 21. I think that's Like close to 10 years, something like that. +[47:58] It has a great chart of the binary size per version over time, which let me just call out. So version 10. 24. was about 40 megabytes or mebibytes. I'm just going to call it megabytes. Version 21. 6 was 98. So that's a long time. Version 10 versus version 21. I think that's Like close to 10 years, something like that. -[00:48:22] But yeah, seeing it 2. 5X in size over that time is, yeah, I guess it's been kind of append only. So yeah, like we discussed earlier, TypeScript has been focusing on reducing its install size. It sounds like there might be growing appetite to do so in Node as well. But this is just sort of like a, it's a pretty deep in the weeds discussion of how Node has evolved, and specifically some of the changes in 2023. So I found it was a good read. Not immediately actionable in any kind of way, but just sort of broad context. Stay on top of what's going on. +[48:22] But yeah, seeing it 2. 5X in size over that time is, yeah, I guess it's been kind of append only. So yeah, like we discussed earlier, TypeScript has been focusing on reducing its install size. It sounds like there might be growing appetite to do so in Node as well. But this is just sort of like a, it's a pretty deep in the weeds discussion of how Node has evolved, and specifically some of the changes in 2023. So I found it was a good read. Not immediately actionable in any kind of way, but just sort of broad context. Stay on top of what's going on. ## ⚡️ Tailwind preview of 4.0 ⚡️ -[00:48:57] **Mark Erikson:** Next up, Tailwind is working on a new version and they've put up a post talking about some of the changes that they're making for version four. The biggest one is they've got a whole new CSS engine. +[48:57] **Mark Erikson:** Next up, Tailwind is working on a new version and they've put up a post talking about some of the changes that they're making for version four. The biggest one is they've got a whole new CSS engine. -[00:49:08] Apparently it's built on top of Lightning CSS, a Rust based CSS parser and translator from the author of Parcel, but they're working to make it the whole thing smaller, faster, built in. They're also making some potential changes to the configuration so it actually kind of looks and feels more like CSS in the process. +[49:08] Apparently it's built on top of Lightning CSS, a Rust based CSS parser and translator from the author of Parcel, but they're working to make it the whole thing smaller, faster, built in. They're also making some potential changes to the configuration so it actually kind of looks and feels more like CSS in the process. ## ⚡️ Vercel adds Remix+Vite support ⚡️ -[00:49:26] **Carl Vitullo:** So, Vercel has announced that they are now supporting Remix with Vite. Pretty cool. Just especially because they maintain Next. It seems nice that they would pretty quickly jump on adding support for some new features coming out of Remix. They say in this post, they collaborated with the Remix team to add server bundles to Remix, which we discussed really briefly last month as a kind of confusing, deep optimization. +[49:26] **Carl Vitullo:** So, Vercel has announced that they are now supporting Remix with Vite. Pretty cool. Just especially because they maintain Next. It seems nice that they would pretty quickly jump on adding support for some new features coming out of Remix. They say in this post, they collaborated with the Remix team to add server bundles to Remix, which we discussed really briefly last month as a kind of confusing, deep optimization. -[00:49:52] So just to see that. Vercel is meaningfully working to support some kind of fringe, niche features within one of their major competitors. Cool. That seems really nice. Very glad to see that. Also adds support for Remix features like the streaming, server side rendering, API routes, more advanced caching, data mutations. +[49:52] So just to see that. Vercel is meaningfully working to support some kind of fringe, niche features within one of their major competitors. Cool. That seems really nice. Very glad to see that. Also adds support for Remix features like the streaming, server side rendering, API routes, more advanced caching, data mutations. -[00:50:13] Yeah. Happy to see that. +[50:13] Yeah. Happy to see that. ## ⚡️ Navigating the Future of Frontend ⚡️ -[00:50:15] **Mark Erikson:** And finally, there's an author named Rem, uh, I don't know any more details about them, that's just their handle, who has put up a series of very good posts at a site called Frontend Mastery, talking about various aspects of React and frontend development. And the latest one's called Navigating the Future of Frontend. +[50:15] **Mark Erikson:** And finally, there's an author named Rem, uh, I don't know any more details about them, that's just their handle, who has put up a series of very good posts at a site called Frontend Mastery, talking about various aspects of React and frontend development. And the latest one's called Navigating the Future of Frontend. -[00:50:32] And it talks about some of the aspects of JavaScript frameworks, and their capabilities, and what are some of these tools even doing for you. And talks about some of the directions that they are going these days in terms of routing, and mingling backend and frontend, and dealing with caching, and components that can be used on the server or on the client, and in a mix of some way. +[50:32] And it talks about some of the aspects of JavaScript frameworks, and their capabilities, and what are some of these tools even doing for you. And talks about some of the directions that they are going these days in terms of routing, and mingling backend and frontend, and dealing with caching, and components that can be used on the server or on the client, and in a mix of some way. -[00:50:55] So it's not like a specifically actionable post, but it's a useful guide to, like, where have we been and where are we going. +[50:55] So it's not like a specifically actionable post, but it's a useful guide to, like, where have we been and where are we going. -[00:51:02] **Carl Vitullo:** Yeah, definitely looks like a really interesting post. And I just realized, just now, that it's not on Frontend Masters, it's Frontend Mastery, which is not an educational platform hahaha. +[51:02] **Carl Vitullo:** Yeah, definitely looks like a really interesting post. And I just realized, just now, that it's not on Frontend Masters, it's Frontend Mastery, which is not an educational platform hahaha. -[00:51:12] **Mark Erikson:** It looks like it's basically this one person's blog. +[51:12] **Mark Erikson:** It looks like it's basically this one person's blog. -[00:51:15] **Carl Vitullo:** Interesting. Yeah, I, I saw the link and I had assumed that it was really the front end masters, which makes perfect sense because they've been doing web education for my entire career, insofar as I learned React by taking a front end masters class. But yeah, no, this is front end mastery. +[51:15] **Carl Vitullo:** Interesting. Yeah, I, I saw the link and I had assumed that it was really the front end masters, which makes perfect sense because they've been doing web education for my entire career, insofar as I learned React by taking a front end masters class. But yeah, no, this is front end mastery. -[00:51:29] It's just somebody's blog. Still, it's really good, really good post to echo everything Mark just said. +[51:29] It's just somebody's blog. Still, it's really good, really good post to echo everything Mark just said. -[00:51:34] That's everything we got. We'll be back on the last Wednesday of next month in April on the live stage here in Reactiflux or back in your podcast feed just as soon as we can. We gather sources from This Week in React, Bytes. dev, React Status, Next. js Weekly, React Digest, the React. js subreddit, here in Reactiflux, and directly from people publishing articles on Twitter or whatever. +[51:34] That's everything we got. We'll be back on the last Wednesday of next month in April on the live stage here in Reactiflux or back in your podcast feed just as soon as we can. We gather sources from This Week in React, Bytes. dev, React Status, Next. js Weekly, React Digest, the React. js subreddit, here in Reactiflux, and directly from people publishing articles on Twitter or whatever. -[00:51:57] If you see anything newsworthy, definitely let us know in the Tech Reads News channel here in Reactiflux, or let me know by sending an email to hello at reactiflux. com with T M I R in the subject line. It's an acronym for the show. +[51:57] If you see anything newsworthy, definitely let us know in the Tech Reads News channel here in Reactiflux, or let me know by sending an email to hello at reactiflux. com with T M I R in the subject line. It's an acronym for the show. -[00:52:11] I read literally every email that comes in, including spam and all sorts of other things. So yeah, if you send an email to hello at reactiflux. com, I will read it. And if this is a show you get value from and want to support, the best way to do so is submit a review or tell your friends and co workers about it. +[52:11] I read literally every email that comes in, including spam and all sorts of other things. So yeah, if you send an email to hello at reactiflux. com, I will read it. And if this is a show you get value from and want to support, the best way to do so is submit a review or tell your friends and co workers about it. -[00:52:26] Just drop it in Slack. And I know that I will personally thank you if I am ever made aware of you broadcasting us. Cool. Thank you so much. See you next month. +[52:26] Just drop it in Slack. And I know that I will personally thank you if I am ever made aware of you broadcasting us. Cool. Thank you so much. See you next month. diff --git a/src/transcripts/tmir-2024-05.md b/src/transcripts/tmir-2024-05.md index 23f909d..ae67c12 100644 --- a/src/transcripts/tmir-2024-05.md +++ b/src/transcripts/tmir-2024-05.md @@ -71,543 +71,543 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_), [Mark Erikson](https://twit - [Security Risks of Postman](https://www.leeholmes.com/security-risks-of-postman/) - [Angular v18 is now available!](https://blog.angular.dev/angular-v18-is-now-available-e79d5ac0affe) -**Carl Vitullo:** Hello everyone. Thank you for joining us for May's This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. We're coming to you live from Reactiflux, the place for professional React developers. We have so much news this month because there was ReactConf and so many of the things that we had been discussing over the last three or four months actually like dropped and landed. [00:00:23] +**Carl Vitullo:** Hello everyone. Thank you for joining us for May's This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. We're coming to you live from Reactiflux, the place for professional React developers. We have so much news this month because there was ReactConf and so many of the things that we had been discussing over the last three or four months actually like dropped and landed. [00:23] -And are available and there are eight hours of talks discussing all of the things that we have been like punditing and talking heads about direct from the source. So I am excited about that. We're going to dig into it. [00:00:34] +And are available and there are eight hours of talks discussing all of the things that we have been like punditing and talking heads about direct from the source. So I am excited about that. We're going to dig into it. [00:34] -But first, I'm Carl. I'm a staff product developer and freelance community manager here at Reactiflux, where I run community programs like these and build tools to help keep the community running. [00:00:44] +But first, I'm Carl. I'm a staff product developer and freelance community manager here at Reactiflux, where I run community programs like these and build tools to help keep the community running. [00:44] -Before I hand it off to Mark I'm gonna hand it off first to our new guest host for the month where it's a bit of a trial. [00:00:50] +Before I hand it off to Mark I'm gonna hand it off first to our new guest host for the month where it's a bit of a trial. [00:50] -**Mark Erikson:** I think he's gonna do fine! [00:00:51] +**Mark Erikson:** I think he's gonna do fine! [00:51] -**Carl Vitullo:** Mark, thank you for introducing me to our new guest host! Do you want to introduce yourself? [00:00:56] +**Carl Vitullo:** Mark, thank you for introducing me to our new guest host! Do you want to introduce yourself? [00:56] -**Mo Khazali:** Nice to be here with you all. So my name is Mo. I head the mobile team at Theodo and I've been sort of an active part of the React and React Native ecosystem for a few years now. And I help organize some meetup groups like the React Native London meetup and have here and there dabbled in some open source contributions within the ecosystem with libraries like Expo and Tamagui. [00:01:16] +**Mo Khazali:** Nice to be here with you all. So my name is Mo. I head the mobile team at Theodo and I've been sort of an active part of the React and React Native ecosystem for a few years now. And I help organize some meetup groups like the React Native London meetup and have here and there dabbled in some open source contributions within the ecosystem with libraries like Expo and Tamagui. [01:16] -Very happy to be here with you all and looking forward to chatting all things React Native. [00:01:20] +Very happy to be here with you all and looking forward to chatting all things React Native. [01:20] -**Carl Vitullo:** Awesome. Thanks for joining us. [00:01:21] +**Carl Vitullo:** Awesome. Thanks for joining us. [01:21] -**Mark Erikson:** And I'm Mark Erikson, my day job is working at Replay. io, where we're building a time traveling debugger for JavaScript. And outside of Replay, I do Redux stuff. [00:01:30] +**Mark Erikson:** And I'm Mark Erikson, my day job is working at Replay. io, where we're building a time traveling debugger for JavaScript. And outside of Replay, I do Redux stuff. [01:30] -**Carl Vitullo:** Some quick hits before we get into the main news. [00:01:33] +**Carl Vitullo:** Some quick hits before we get into the main news. [01:33] ## Layoffs news -**Carl Vitullo:** Quick layoffs overview from layoffs. fyi. This month, over May, there were 9, 600 laid off. from 36 companies, which is down quite a bit actually from April. last month in April, there were 22, 000 laid off from 57 companies. So that's improving a little bit. So far, this year has been substantially better than last year, but that's not saying very much because last year was like, the worst year in the last 20 years. So improving steadily is still not great. [00:02:02] +**Carl Vitullo:** Quick layoffs overview from layoffs. fyi. This month, over May, there were 9, 600 laid off. from 36 companies, which is down quite a bit actually from April. last month in April, there were 22, 000 laid off from 57 companies. So that's improving a little bit. So far, this year has been substantially better than last year, but that's not saying very much because last year was like, the worst year in the last 20 years. So improving steadily is still not great. [02:02] ## New Releases -**Carl Vitullo:** Some new releases. It looks like there's been a couple of new releases in sort of the fallout of React 18. [00:02:07] +**Carl Vitullo:** Some new releases. It looks like there's been a couple of new releases in sort of the fallout of React 18. [02:07] ## Docusaurus 3.3 -**Carl Vitullo:** 3 coming out, there's a Docusaurus just doing a minor release on 3. 3. Nothing too new there, it's basically just like fixing some new warnings that popped up. [00:02:17] +**Carl Vitullo:** 3 coming out, there's a Docusaurus just doing a minor release on 3. 3. Nothing too new there, it's basically just like fixing some new warnings that popped up. [02:17] ## Mantine 7.9.0 -**Carl Vitullo:** Mantine has also put out a 7. 9. 0 release. Mantine seems pretty cool, I haven't played with it too much myself, I don't play with very many UI toolkits, but this is high on my list of ones to look at. [00:02:30] +**Carl Vitullo:** Mantine has also put out a 7. 9. 0 release. Mantine seems pretty cool, I haven't played with it too much myself, I don't play with very many UI toolkits, but this is high on my list of ones to look at. [02:30] ## Astro 4.8 -**Carl Vitullo:** There's also Astro 4. 8, which just came out. They're coming out with a couple of new things that look pretty interesting. You know, also like classic performance improvements and bug fixes. They have an experimental Astro Actions, which, you know, okay. We have one more thing in the ecosystem called Actions, which is unfortunate, they pitch it as, "actions make it easy to define and call backend functions with full type safety from your client code." And full type safety on a backend request is wonderful. Happy to see that. That's pretty great. [00:03:00] +**Carl Vitullo:** There's also Astro 4. 8, which just came out. They're coming out with a couple of new things that look pretty interesting. You know, also like classic performance improvements and bug fixes. They have an experimental Astro Actions, which, you know, okay. We have one more thing in the ecosystem called Actions, which is unfortunate, they pitch it as, "actions make it easy to define and call backend functions with full type safety from your client code." And full type safety on a backend request is wonderful. Happy to see that. That's pretty great. [03:00] -They also have an experimental request rewriting feature. Request rewriting is pretty important on a large production application. It's where you receive a request on one URL and handle it internally as if it was a different URL. So you can do stuff like aliases or rewrites or silent redirects and things like that. [00:03:18] +They also have an experimental request rewriting feature. Request rewriting is pretty important on a large production application. It's where you receive a request on one URL and handle it internally as if it was a different URL. So you can do stuff like aliases or rewrites or silent redirects and things like that. [03:18] ## Redwood 7.5 -**Carl Vitullo:** There's also Redwood 7. 5. I recently spoke with the Redwood folks at ReactConf and it got, it actually got me a lot more excited about the project. [00:03:26] +**Carl Vitullo:** There's also Redwood 7. 5. I recently spoke with the Redwood folks at ReactConf and it got, it actually got me a lot more excited about the project. [03:26] ## Upcoming conferences -**Carl Vitullo:** All right, switching into some upcoming conferences. Me and Mo are going to bounce off each other here a little bit. [00:03:32] +**Carl Vitullo:** All right, switching into some upcoming conferences. Me and Mo are going to bounce off each other here a little bit. [03:32] ## Render Atlanta -**Carl Vitullo:** In two weeks, I am sad that I will not be able to make it to this one, but Render Atlanta is happening June 12th through 14th in Atlanta, Georgia. [00:03:41] +**Carl Vitullo:** In two weeks, I am sad that I will not be able to make it to this one, but Render Atlanta is happening June 12th through 14th in Atlanta, Georgia. [03:41] -Looks like a really great conference. I have heard nothing but phenomenal things from past years, and it looks like a great crew is heading out there this year. So yeah, definitely check it out if you are looking for a conference this month. [00:03:52] +Looks like a really great conference. I have heard nothing but phenomenal things from past years, and it looks like a great crew is heading out there this year. So yeah, definitely check it out if you are looking for a conference this month. [03:52] -Yeah, Mo? [00:03:53] +Yeah, Mo? [03:53] ## Future Frontend -**Mo Khazali:** And just around the same time, so June 13th to 14th, Future Frontend is happening in Helsinki. [00:03:58] +**Mo Khazali:** And just around the same time, so June 13th to 14th, Future Frontend is happening in Helsinki. [03:58] -So that's up north in Finland. And I can personally attest to how good this conference is. It's one of those conferences that has a real community feel to it. You know, 100, 150, 200 people coming. And everyone is super passionate about building front end apps, not just in the React world, but across boundaries. And that means you get some really cool wacky ideas coming up. [00:04:15] +So that's up north in Finland. And I can personally attest to how good this conference is. It's one of those conferences that has a real community feel to it. You know, 100, 150, 200 people coming. And everyone is super passionate about building front end apps, not just in the React world, but across boundaries. And that means you get some really cool wacky ideas coming up. [04:15] -Last year, someone demoed a talking hamster that was built in JavaScript, which was one of the most wacky and coolest conference talks I've ever seen in my life, and I really enjoyed it. So would definitely give it a shot if you're kind of in Europe and around at that time. [00:04:27] +Last year, someone demoed a talking hamster that was built in JavaScript, which was one of the most wacky and coolest conference talks I've ever seen in my life, and I really enjoyed it. So would definitely give it a shot if you're kind of in Europe and around at that time. [04:27] -**Carl Vitullo:** And I, I believe one of the organizers is, uh, Juho Vepsäläinen. He has been active in Reactiflux from very early on, he used to have a channel himself for his project, SurviveJS. [00:04:37] +**Carl Vitullo:** And I, I believe one of the organizers is, uh, Juho Vepsäläinen. He has been active in Reactiflux from very early on, he used to have a channel himself for his project, SurviveJS. [04:37] -So I, he's been on my radar for my entire career. He seems like a wonderful person. I've never met him in person though. So I'm sad that I also won't be able to fly out to, you know, I can't make the Georgia, so Finland is a bit of a tough sell. [00:04:49] +So I, he's been on my radar for my entire career. He seems like a wonderful person. I've never met him in person though. So I'm sad that I also won't be able to fly out to, you know, I can't make the Georgia, so Finland is a bit of a tough sell. [04:49] ## React Norway -**Carl Vitullo:** But that week is a heavy conference month because React Norway is also happening June 14th in Larvik, Norway. I don't know anything about the organizers there. So, can't comment. [00:05:01] +**Carl Vitullo:** But that week is a heavy conference month because React Norway is also happening June 14th in Larvik, Norway. I don't know anything about the organizers there. So, can't comment. [05:01] ## React Summit -**Carl Vitullo:** There's also React Summit, June 14th and 18th in Amsterdam in the Netherlands with a remote option as well. React Summit definitely, uh, I've spoken with the organizers in the past and they seem quite great. I have not attended it myself though. [00:05:15] +**Carl Vitullo:** There's also React Summit, June 14th and 18th in Amsterdam in the Netherlands with a remote option as well. React Summit definitely, uh, I've spoken with the organizers in the past and they seem quite great. I have not attended it myself though. [05:15] ## React Nexus -**Mo Khazali:** At the very beginning of July, 4th to 5th of July, in Bangalore, in India, there's React Nexus. Now, last year I had the pleasure of attending React Nexus, and it was such a great community. [00:05:24] +**Mo Khazali:** At the very beginning of July, 4th to 5th of July, in Bangalore, in India, there's React Nexus. Now, last year I had the pleasure of attending React Nexus, and it was such a great community. [05:24] -I gave a talk then and really just an amazing level of energy there. I think it was about four or five, 600 developers all there. And I really felt like there was something unique about it. There was a lot of passion and a lot of drive there and people were just genuinely interested in learning. So really would recommend it if you're kind of near the South, South Asia area to definitely give React Nexus a try. [00:05:43] +I gave a talk then and really just an amazing level of energy there. I think it was about four or five, 600 developers all there. And I really felt like there was something unique about it. There was a lot of passion and a lot of drive there and people were just genuinely interested in learning. So really would recommend it if you're kind of near the South, South Asia area to definitely give React Nexus a try. [05:43] ## Chain React -**Mo Khazali:** Around a couple of weeks after that, there's Chain React. So that's July 17th to 19th. That's in Portland, Oregon. Now, I haven't had the opportunity to visit Chain React, but I'm very close with some of the organizers of it, the folks from Infinite Red. I've met them here and there at different conferences, most recently last week, actually, and they are a lovely crew, are a lot of fun, genuinely so much energy and fun, and I've heard nothing but great things about Chain React. So if you're US based and can make it out to Portland, definitely would recommend going to Chain React. [00:06:12] +**Mo Khazali:** Around a couple of weeks after that, there's Chain React. So that's July 17th to 19th. That's in Portland, Oregon. Now, I haven't had the opportunity to visit Chain React, but I'm very close with some of the organizers of it, the folks from Infinite Red. I've met them here and there at different conferences, most recently last week, actually, and they are a lovely crew, are a lot of fun, genuinely so much energy and fun, and I've heard nothing but great things about Chain React. So if you're US based and can make it out to Portland, definitely would recommend going to Chain React. [06:12] ## The Geek Conf -**Mo Khazali:** And then a week after that on July 25th, there is the Geek Conf. I happen to know these organizers because they're a key part of the React Native community, the folks from GeekyAnts, and they are hosting a conference in Berlin. So it's the first year that they're doing this and I'll be doing a talk there. So a shameless plug that you should definitely come around and we should hang out. [00:06:31] +**Mo Khazali:** And then a week after that on July 25th, there is the Geek Conf. I happen to know these organizers because they're a key part of the React Native community, the folks from GeekyAnts, and they are hosting a conference in Berlin. So it's the first year that they're doing this and I'll be doing a talk there. So a shameless plug that you should definitely come around and we should hang out. [06:31] -But the Geek Conf is really kind of intersecting web and React Native, which I think is the direction that the ecosystem is going towards. They have some really great lineup of speakers coming around. Folks like Tejas Kumar and Bruno Polino and many others, not including myself there, which I don't consider myself to be a great speaker. So you should come for those folks, and maybe we can hang out in the process as well. [00:06:50] +But the Geek Conf is really kind of intersecting web and React Native, which I think is the direction that the ecosystem is going towards. They have some really great lineup of speakers coming around. Folks like Tejas Kumar and Bruno Polino and many others, not including myself there, which I don't consider myself to be a great speaker. So you should come for those folks, and maybe we can hang out in the process as well. [06:50] -**Carl Vitullo:** Let's jump into the main content then. [00:06:53] +**Carl Vitullo:** Let's jump into the main content then. [06:53] ## React Conf Recap -**Carl Vitullo:** Obviously the main subject this month is going to be React Conf. They put up a post on the blog with a React Conf 2024 recap, which is phenomenal. [00:07:03] +**Carl Vitullo:** Obviously the main subject this month is going to be React Conf. They put up a post on the blog with a React Conf 2024 recap, which is phenomenal. [07:03] -Something I appreciate, they link to the section in the live stream where each of the talks happened. So appreciate that. I feel like so many conferences take weeks to get their conference recordings up. So just leaving the live stream up and linking to the talks. What a solution, it's so good. Something else I found impressive. The livestream recording already has 165, 000 watches. Nope, sorry, since I watched it last night, it's now up to 167,000, which is wild. [00:07:29] +Something I appreciate, they link to the section in the live stream where each of the talks happened. So appreciate that. I feel like so many conferences take weeks to get their conference recordings up. So just leaving the live stream up and linking to the talks. What a solution, it's so good. Something else I found impressive. The livestream recording already has 165, 000 watches. Nope, sorry, since I watched it last night, it's now up to 167,000, which is wild. [07:29] -They open with a recorded bit from the CTO of Meta and then go to Seth Webster, manager of the React team. And he just shouted out on Twitter after the fact, because he was getting some questions about his voice, he apparently had COVID and has had some enduring health effects as a result of complications from that. So I just thought it was really like powerful of him to take center stage, introducing the concept, knowing that that's his experience right now. So, I just wanted to shout that out. He put up a really good, a little explanation of it after the fact. And, I just thought it was really powerful. Wanted to give that a little bit of a signal boost. [00:08:04] +They open with a recorded bit from the CTO of Meta and then go to Seth Webster, manager of the React team. And he just shouted out on Twitter after the fact, because he was getting some questions about his voice, he apparently had COVID and has had some enduring health effects as a result of complications from that. So I just thought it was really like powerful of him to take center stage, introducing the concept, knowing that that's his experience right now. So, I just wanted to shout that out. He put up a really good, a little explanation of it after the fact. And, I just thought it was really powerful. Wanted to give that a little bit of a signal boost. [08:04] -**Mark Erikson:** Nice to touch on the fact that there are real people with real human concerns involved in building the tools that we actually use. [00:08:12] +**Mark Erikson:** Nice to touch on the fact that there are real people with real human concerns involved in building the tools that we actually use. [08:12] -**Carl Vitullo:** Yes, the human aspect of React. But yeah. Let's also dig into some of the technical aspect of React as well. Mark, you want to lead us in here? [00:08:21] +**Carl Vitullo:** Yes, the human aspect of React. But yeah. Let's also dig into some of the technical aspect of React as well. Mark, you want to lead us in here? [08:21] ## React 19 RC -**Mark Erikson:** Happily. Pointing to a couple of the big announcements from the conference. The first one was that React 19 itself has actually gone straight all the way from beta to release candidate. [00:08:31] +**Mark Erikson:** Happily. Pointing to a couple of the big announcements from the conference. The first one was that React 19 itself has actually gone straight all the way from beta to release candidate. [08:31] -I wasn't sure that they would even get to this step by the conference, but clearly they feel pretty good about the overall stability of, you know, what they've been trying to work on. I'm not going to try to go through all the various features and everything. If you've been listening to the podcast for the last few months, you've heard us discuss most of them at some point. [00:08:49] +I wasn't sure that they would even get to this step by the conference, but clearly they feel pretty good about the overall stability of, you know, what they've been trying to work on. I'm not going to try to go through all the various features and everything. If you've been listening to the podcast for the last few months, you've heard us discuss most of them at some point. [08:49] -And the blog post itself does actually touch on all the major things that are in there. Things like, you know, hooks for dealing with for the new HTML streaming capabilities for things like assets. A lot of different stuff in there and whether these are going to have direct relevance for your own application will always vary, but there's been a lot of time and effort put into all these different pieces and how they tie together, even strictly on the client side, beyond things like server components as well. [00:09:21] +And the blog post itself does actually touch on all the major things that are in there. Things like, you know, hooks for dealing with for the new HTML streaming capabilities for things like assets. A lot of different stuff in there and whether these are going to have direct relevance for your own application will always vary, but there's been a lot of time and effort put into all these different pieces and how they tie together, even strictly on the client side, beyond things like server components as well. [09:21] -Definitely worth taking a look at the RC blog posts, a great summary of what all is there in React 19. Related to that specifically, of course, there were talks at the conference that then went deeper into some of these aspects. Lydia Howley and Sam Selkoff both had talks that kind of gave overviews of the pieces there, especially some of the server component stuff. Worth watching those if you get a chance. [00:09:44] +Definitely worth taking a look at the RC blog posts, a great summary of what all is there in React 19. Related to that specifically, of course, there were talks at the conference that then went deeper into some of these aspects. Lydia Howley and Sam Selkoff both had talks that kind of gave overviews of the pieces there, especially some of the server component stuff. Worth watching those if you get a chance. [09:44] ## Server Components on Expo -**Mark Erikson:** Along with that, there was also a talk from the Expo team and Evan Bacon talking about how server components might actually fit into the React Native side of things. Mo, you have any thoughts on that one? [00:09:55] +**Mark Erikson:** Along with that, there was also a talk from the Expo team and Evan Bacon talking about how server components might actually fit into the React Native side of things. Mo, you have any thoughts on that one? [09:55] -**Mo Khazali:** Yeah, so, this is something that the Expo team's been kind of silently working in the background for a little while, there was an interesting tweet that Evan had at one point. I think it was in a tweet exchange where he was like, if you look through my Git commits and my sort of hobby repos, you'll see the direction that Expo's going, because it's a very direct sign into my psyche. And you can see that he started working on this several months ago, and it's finally come to fruition. [00:10:15] +**Mo Khazali:** Yeah, so, this is something that the Expo team's been kind of silently working in the background for a little while, there was an interesting tweet that Evan had at one point. I think it was in a tweet exchange where he was like, if you look through my Git commits and my sort of hobby repos, you'll see the direction that Expo's going, because it's a very direct sign into my psyche. And you can see that he started working on this several months ago, and it's finally come to fruition. [10:15] -But they've kind of been trying to work out what server components mean in a React Native ecosystem, which was, it was a big question mark, I think, for everyone in the community, because traditionally mobile apps are client side, and what does it mean to have the server rendering native layer components and elements? [00:10:31] +But they've kind of been trying to work out what server components mean in a React Native ecosystem, which was, it was a big question mark, I think, for everyone in the community, because traditionally mobile apps are client side, and what does it mean to have the server rendering native layer components and elements? [10:31] -I think they delivered on a phenomenal demo. There's still a long way to go before it reaches production and something that we can use, but really the core is that as long as there's sort of native layer supports for the right components, you can stream any JS that you want across the wire that's sort of serialized in the RSC way. [00:10:48] +I think they delivered on a phenomenal demo. There's still a long way to go before it reaches production and something that we can use, but really the core is that as long as there's sort of native layer supports for the right components, you can stream any JS that you want across the wire that's sort of serialized in the RSC way. [10:48] -And then that can render native layer components on the device, which is quite cool. And what that means is you can basically stream JS that can orchestrate certain native behaviors, like maybe showing a native share card or showing a contact card on someone's phone. Those are sort of native elements, but they can still be orchestrated and sent across the wire with JS. [00:11:05] +And then that can render native layer components on the device, which is quite cool. And what that means is you can basically stream JS that can orchestrate certain native behaviors, like maybe showing a native share card or showing a contact card on someone's phone. Those are sort of native elements, but they can still be orchestrated and sent across the wire with JS. [11:05] -I'd really recommend going through and watching the demo that they had, because the majority of the talk is actually the demo, and you'll get a real good sense of what that means and what it would look like in practice. And interestingly, in the aftermath of it, it fueled a massive debate across the entire React Native ecosystem on the place where debates always get fueled, which is Twitter or X these days. It was a question of, because you can just basically send any JavaScript across the wire that will change how the app behaves, what does that really mean for Apple's terms of service? [00:11:32] +I'd really recommend going through and watching the demo that they had, because the majority of the talk is actually the demo, and you'll get a real good sense of what that means and what it would look like in practice. And interestingly, in the aftermath of it, it fueled a massive debate across the entire React Native ecosystem on the place where debates always get fueled, which is Twitter or X these days. It was a question of, because you can just basically send any JavaScript across the wire that will change how the app behaves, what does that really mean for Apple's terms of service? [11:32] -And there was a bunch of people who were like, this absolutely violates Apple's terms of service. Your app will get rejected. Why is Expo doing this to the community? Why are they putting them down a rabbit hole? [00:11:40] +And there was a bunch of people who were like, this absolutely violates Apple's terms of service. Your app will get rejected. Why is Expo doing this to the community? Why are they putting them down a rabbit hole? [11:40] -And then other people saying, no, absolutely not. You can basically replace the entire JavaScript bundle today in React Native. So why should this change it? So interesting debates came out of it, but nonetheless, there's some exciting stuff going on. And I think we're just at the very tip of the iceberg so far. [00:11:55] +And then other people saying, no, absolutely not. You can basically replace the entire JavaScript bundle today in React Native. So why should this change it? So interesting debates came out of it, but nonetheless, there's some exciting stuff going on. And I think we're just at the very tip of the iceberg so far. [11:55] -**Carl Vitullo:** Yeah, a couple months ago, I had presumed that server components were just not going to be a thing on React Native, and was very surprised that they had full plans to integrate and make them work, pretty much the same as how it does on web. [00:12:09] +**Carl Vitullo:** Yeah, a couple months ago, I had presumed that server components were just not going to be a thing on React Native, and was very surprised that they had full plans to integrate and make them work, pretty much the same as how it does on web. [12:09] -So yeah, definitely worth checking out the demo to see how they get that going. [00:12:12] +So yeah, definitely worth checking out the demo to see how they get that going. [12:12] ## React for Two Computers -**Mo Khazali:** On top of that, afterwards, there was a talk by Dan Abramov, where he went over the paradigm of React for two computers, kind of sticking with the server component mode and model. And it was a really primitive explanation. I really love explanations like this, where someone kind of breaks things down into the very, very basic primitives. [00:12:30] +**Mo Khazali:** On top of that, afterwards, there was a talk by Dan Abramov, where he went over the paradigm of React for two computers, kind of sticking with the server component mode and model. And it was a really primitive explanation. I really love explanations like this, where someone kind of breaks things down into the very, very basic primitives. [12:30] -Like you've got a web server. Here's how you can render HTML on the web and send it across to the client. Okay, what happens if we start to extract certain parts of this, separate them out and see how you can kind of construct React server components from scratch. I think Dan did a post on, it was something on GitHub that he posted, which kind of walked through the thinking for this talk, but really articulating it in a talk, put it into a nice story. [00:12:51] +Like you've got a web server. Here's how you can render HTML on the web and send it across to the client. Okay, what happens if we start to extract certain parts of this, separate them out and see how you can kind of construct React server components from scratch. I think Dan did a post on, it was something on GitHub that he posted, which kind of walked through the thinking for this talk, but really articulating it in a talk, put it into a nice story. [12:51] -It was quite fascinating. And I think it was a really good explanation for anyone who wants to really understand server components. I don't know if you had any thoughts on it, Mark, yourself, but I quite enjoyed that. [00:13:00] +It was quite fascinating. And I think it was a really good explanation for anyone who wants to really understand server components. I don't know if you had any thoughts on it, Mark, yourself, but I quite enjoyed that. [13:00] -**Mark Erikson:** A couple bits. He actually did put up a post earlier this year on his blog called The Two Reacts, which I think directly is, the exact same line of thought that led into this talk. [00:13:10] +**Mark Erikson:** A couple bits. He actually did put up a post earlier this year on his blog called The Two Reacts, which I think directly is, the exact same line of thought that led into this talk. [13:10] -If you've watched Dan over the last year and a half, he's been throwing a lot of ideas against the wall to see what sticks in terms of teaching people server components and the mental model that, and like, we're trying to figure out what mental model makes sense to both explain it and make use of it properly. [00:13:29] +If you've watched Dan over the last year and a half, he's been throwing a lot of ideas against the wall to see what sticks in terms of teaching people server components and the mental model that, and like, we're trying to figure out what mental model makes sense to both explain it and make use of it properly. [13:29] -The thought process here of, you know, it's expanding React to the server, but also it's still one React tree just split across two computers is something worth trying to wrap your mind around. [00:13:42] +The thought process here of, you know, it's expanding React to the server, but also it's still one React tree just split across two computers is something worth trying to wrap your mind around. [13:42] -**Carl Vitullo:** Yeah, I was just thinking of whether I wanted to share this under the React compiler notes, and I think I'll get deeper into it. [00:13:47] +**Carl Vitullo:** Yeah, I was just thinking of whether I wanted to share this under the React compiler notes, and I think I'll get deeper into it. [13:47] -But, I do think that this is a continuation of a pretty stable vision that the core team has had for React. From the outset, server rendering was something that was, you know, ostensibly possible to do with React. And there were many years and people were just kind of like wild westing it and doing it themselves and, you know, render to string and, Oh, cool. Now we can render a, you know, like a streamable HTML. [00:14:12] +But, I do think that this is a continuation of a pretty stable vision that the core team has had for React. From the outset, server rendering was something that was, you know, ostensibly possible to do with React. And there were many years and people were just kind of like wild westing it and doing it themselves and, you know, render to string and, Oh, cool. Now we can render a, you know, like a streamable HTML. [14:12] -This is not new, it's just a new attempt at solving the same problem in a way that does it better than previously. So it's just a, you know, it's one more incremental step forward. [00:14:23] +This is not new, it's just a new attempt at solving the same problem in a way that does it better than previously. So it's just a, you know, it's one more incremental step forward. [14:23] -**Mark Erikson:** Yeah, I actually had a chance to talk with Ricky Hanlon while I was there in Vegas, actually, ironically, like five feet from where Carl's sitting right now, and he was talking a bit about, we didn't exactly know what the end state looked like, but we had a lot of intuitions about what it would feel like when we got there, and There, there was like partially a master plan, but also partially not. [00:14:48] +**Mark Erikson:** Yeah, I actually had a chance to talk with Ricky Hanlon while I was there in Vegas, actually, ironically, like five feet from where Carl's sitting right now, and he was talking a bit about, we didn't exactly know what the end state looked like, but we had a lot of intuitions about what it would feel like when we got there, and There, there was like partially a master plan, but also partially not. [14:48] -It was just, we think these are the big problems we need to solve along the way. And that's how we ended up in things like hooks and whatnot. Eventually those have led to the point where now the grand vision is kind of coming together. [00:15:02] +It was just, we think these are the big problems we need to solve along the way. And that's how we ended up in things like hooks and whatnot. Eventually those have led to the point where now the grand vision is kind of coming together. [15:02] -**Mo Khazali:** And I guess just to go in from the React Native perspective as well, me and Evan were having a chat about this at App.Js and a few other people as well were kind of echoing the same sentiment, which is it's been the same in the React Native ecosystem. [00:15:14] +**Mo Khazali:** And I guess just to go in from the React Native perspective as well, me and Evan were having a chat about this at App.Js and a few other people as well were kind of echoing the same sentiment, which is it's been the same in the React Native ecosystem. [15:14] -Larger scale organizations have been using server driven UI, where you kind of describe your layout in the form of a JSON object and ship that through an API endpoint or from your CMS directly to define how your page is layouted. [00:15:27] +Larger scale organizations have been using server driven UI, where you kind of describe your layout in the form of a JSON object and ship that through an API endpoint or from your CMS directly to define how your page is layouted. [15:27] -And server components on React Native as well are just kind of a continuation of that same paradigm of starting to move some of the layouting and some of the business logic of your front end app over to the server to kind of optimize it and also allow for more flexibility and better performance in many cases. [00:15:43] +And server components on React Native as well are just kind of a continuation of that same paradigm of starting to move some of the layouting and some of the business logic of your front end app over to the server to kind of optimize it and also allow for more flexibility and better performance in many cases. [15:43] -Like you say, it's just a natural continuation, whether you're on web or on mobile. [00:15:46] +Like you say, it's just a natural continuation, whether you're on web or on mobile. [15:46] ## Q&As with React and React Native Core team -**Mark Erikson:** So, wrapping up a couple of the talk links here, there were also Q& As with both the React core team and React native core teams. I admittedly did not have a chance to watch these, but there's, I'm going to assume that there is material worth watching in both those sets of discussions. [00:16:04] +**Mark Erikson:** So, wrapping up a couple of the talk links here, there were also Q& As with both the React core team and React native core teams. I admittedly did not have a chance to watch these, but there's, I'm going to assume that there is material worth watching in both those sets of discussions. [16:04] -**Carl Vitullo:** Sadly, I missed it as well. There was just too many interesting people to have great conversations with. I did hear that, I saw like a kind of snarky, sarcastic tweet from someone on the, I can't remember who now, someone on the React Native team, saying something to the effect of, like, we dropped so many bombs in this React Native Q& A and you're talking about this? Just as sort of a meta commentary on the Twitter discourse. It sounds like the core team thought that they got very deep in the weeds talking about some of the, talking about the technical details. [00:16:33] +**Carl Vitullo:** Sadly, I missed it as well. There was just too many interesting people to have great conversations with. I did hear that, I saw like a kind of snarky, sarcastic tweet from someone on the, I can't remember who now, someone on the React Native team, saying something to the effect of, like, we dropped so many bombs in this React Native Q& A and you're talking about this? Just as sort of a meta commentary on the Twitter discourse. It sounds like the core team thought that they got very deep in the weeds talking about some of the, talking about the technical details. [16:33] ## React Compiler -**Mark Erikson:** All right, moving along to another fairly sizable announcement from the conference and something I've been very eagerly waiting for it at the point that I almost stood up and did actually cheer when it happened. [00:16:43] +**Mark Erikson:** All right, moving along to another fairly sizable announcement from the conference and something I've been very eagerly waiting for it at the point that I almost stood up and did actually cheer when it happened. [16:43] -The long awaited React compiler is now actually both open source and usable. Finally! The React team had been promising that it's real, trust us, it works. And they'd said at a couple talks last year that, you know, we're trialing it in production in a couple real Facebook sites. [00:17:03] +The long awaited React compiler is now actually both open source and usable. Finally! The React team had been promising that it's real, trust us, it works. And they'd said at a couple talks last year that, you know, we're trialing it in production in a couple real Facebook sites. [17:03] -It is now open source. You can now actually use it. And they've dropped a lot of information about how it actually works as well. So it's now actually officially listed in the docs. And there's instructions for setting up and using it. It's worth noting that in its current form, the way to use it is as a Babel plugin, which means that ironically we've been doing all this work to switch our build tooling over to Rust, and suddenly we might actually need to re add Babel, just to get the compiler to work. [00:17:31] +It is now open source. You can now actually use it. And they've dropped a lot of information about how it actually works as well. So it's now actually officially listed in the docs. And there's instructions for setting up and using it. It's worth noting that in its current form, the way to use it is as a Babel plugin, which means that ironically we've been doing all this work to switch our build tooling over to Rust, and suddenly we might actually need to re add Babel, just to get the compiler to work. [17:31] -Having said that, the compiler itself is like 90 percent it s own code, and it's really just using the Babel plugin layer as a way to manage the parsing of the code. But they've even played around with an eventual rewrite of some of the compiler logic in Rust. Um, there will likely be other alternative ways to load it into your build system down the road. [00:17:55] +Having said that, the compiler itself is like 90 percent it s own code, and it's really just using the Babel plugin layer as a way to manage the parsing of the code. But they've even played around with an eventual rewrite of some of the compiler logic in Rust. Um, there will likely be other alternative ways to load it into your build system down the road. [17:55] -So, it's not like it's Strictly built out of Babel. One really neat piece is that they actually have a live playground. If you ever went to the Babel website, Babel has a playground that shows you, if you write some JavaScript code and have certain compilation settings activated, here's what the output looks like. [00:18:14] +So, it's not like it's Strictly built out of Babel. One really neat piece is that they actually have a live playground. If you ever went to the Babel website, Babel has a playground that shows you, if you write some JavaScript code and have certain compilation settings activated, here's what the output looks like. [18:14] -They've got a playground for the compiler as well. And I think this is really valuable on multiple levels. One, is that it literally shows you what the output will look like, so you can get a sense of the transpiled code without having to do an actual build step. It also actually has a set of vertical sidebars which show you what the actual compiler internals are outputting at each step of the transformation process. [00:18:43] +They've got a playground for the compiler as well. And I think this is really valuable on multiple levels. One, is that it literally shows you what the output will look like, so you can get a sense of the transpiled code without having to do an actual build step. It also actually has a set of vertical sidebars which show you what the actual compiler internals are outputting at each step of the transformation process. [18:43] -The compiler itself is awesome. A real, no kidding, deep compiler, like, with all the, you know, real world compiler optimizations. And so getting a sense of both what kinds of passes they're doing and what the results look like, I think is really cool. There were a couple of really good talks at the conference about it. [00:19:01] +The compiler itself is awesome. A real, no kidding, deep compiler, like, with all the, you know, real world compiler optimizations. And so getting a sense of both what kinds of passes they're doing and what the results look like, I think is really cool. There were a couple of really good talks at the conference about it. [19:01] -Lauren Tan did a kind of a usage walkthrough, you know, let's add it to a project. Let's use it. The React DevTools will now show you if certain components have been optimized. She even had written her own little proof of concept VS Code plugin that would show in your editor if certain components were being optimized. That's not actually available yet that I know of. They may end up releasing like an official version of that VS Code plugin at some point. [00:19:29] +Lauren Tan did a kind of a usage walkthrough, you know, let's add it to a project. Let's use it. The React DevTools will now show you if certain components have been optimized. She even had written her own little proof of concept VS Code plugin that would show in your editor if certain components were being optimized. That's not actually available yet that I know of. They may end up releasing like an official version of that VS Code plugin at some point. [19:29] -Meanwhile, Sathya and Mofei, also on the compiler team, did more of a deep dive into how it works. And Mofei in particular did a live coding demo where she showed like, let's actually write a little Babel plugin that makes use of some of the compiler internal, and see how the output of it changes as they add each piece of the compiler logic to it. [00:19:50] +Meanwhile, Sathya and Mofei, also on the compiler team, did more of a deep dive into how it works. And Mofei in particular did a live coding demo where she showed like, let's actually write a little Babel plugin that makes use of some of the compiler internal, and see how the output of it changes as they add each piece of the compiler logic to it. [19:50] -One more good explainer, Jack Harrington had a chance to do, I think, both a video and a blog post where he walked through using the compiler and talked about some of the usage changes and the mental model aspects. I think one of the big pieces for people to understand is that this does several different things. [00:20:10] +One more good explainer, Jack Harrington had a chance to do, I think, both a video and a blog post where he walked through using the compiler and talked about some of the usage changes and the mental model aspects. I think one of the big pieces for people to understand is that this does several different things. [20:10] -One is it adds like the dependency array aspects to useEffect, useMemo that we've always kind of wanted so we don't have to do it ourselves. [00:20:18] +One is it adds like the dependency array aspects to useEffect, useMemo that we've always kind of wanted so we don't have to do it ourselves. [20:18] -Another is that it overall optimizes the rendering performance of components. But on top of that, it kind of flips the mental model of React rendering on its head. [00:20:29] +Another is that it overall optimizes the rendering performance of components. But on top of that, it kind of flips the mental model of React rendering on its head. [20:29] -One of the big things you've always needed to know is that React renders recursively by default, and now the compiler flips it, so that finally, only components whose data actually changed will re render. So this is a big deal. [00:20:42] +One of the big things you've always needed to know is that React renders recursively by default, and now the compiler flips it, so that finally, only components whose data actually changed will re render. So this is a big deal. [20:42] -**Carl Vitullo:** Yeah, I also saw on Twitter, just sort of an open question that I thought was a good one to ask. [00:20:48] +**Carl Vitullo:** Yeah, I also saw on Twitter, just sort of an open question that I thought was a good one to ask. [20:48] -Jamie Kyle asked if library authors were going to be expected to ship components and hooks pre compiled. And Sathya responded that like, yep, they're just like all of the other transpiling, compiling in the ecosystem. You know, if you're authoring in TypeScript or Flow or, I can't think of any other compiled things off the top of my head, then yeah, so you published the compiled artifacts to npm, so I thought that was worth calling out for anyone here who might maintain a library. [00:21:17] +Jamie Kyle asked if library authors were going to be expected to ship components and hooks pre compiled. And Sathya responded that like, yep, they're just like all of the other transpiling, compiling in the ecosystem. You know, if you're authoring in TypeScript or Flow or, I can't think of any other compiled things off the top of my head, then yeah, so you published the compiled artifacts to npm, so I thought that was worth calling out for anyone here who might maintain a library. [21:17] -**Mark Erikson:** It's worth noting that the compiler output does expect to use a new hook that is, strictly speaking, only available in React 19. Having said that, there is a very simple polyfill. [00:21:31] +**Mark Erikson:** It's worth noting that the compiler output does expect to use a new hook that is, strictly speaking, only available in React 19. Having said that, there is a very simple polyfill. [21:31] -It's really just a useMemo that allocates an array. That polyfill ought to make the compiler's output work if your app is still on React 17 or 18. So, in theory, you could drop this into an existing React 17 or 18 application and still get the same performance benefits. Which is nice because, you know, basically nobody's on React 19 yet. [00:21:54] +It's really just a useMemo that allocates an array. That polyfill ought to make the compiler's output work if your app is still on React 17 or 18. So, in theory, you could drop this into an existing React 17 or 18 application and still get the same performance benefits. Which is nice because, you know, basically nobody's on React 19 yet. [21:54] -**Mo Khazali:** I guess in terms of another small detail as well, to keep in mind if you're trying to add this in, is the React compiler, as far as I'm aware, expects for you to list it as the first Babel plugin in your config, and the idea with there is they want to have the state of your code base before any other plugins mess around with it and transform it. [00:22:12] +**Mo Khazali:** I guess in terms of another small detail as well, to keep in mind if you're trying to add this in, is the React compiler, as far as I'm aware, expects for you to list it as the first Babel plugin in your config, and the idea with there is they want to have the state of your code base before any other plugins mess around with it and transform it. [22:12] -So, it's, that's just a little gotcha in case you are trying to integrate it. Just now into your app, hearing about this. [00:22:18] +So, it's, that's just a little gotcha in case you are trying to integrate it. Just now into your app, hearing about this. [22:18] -**Mark Erikson:** And again, with Carl, with what you said earlier, it's, this is a vision that the React team has had for a while. You know, they, they'd said early on that they designed the hooks APIs, you know, specifically the dependency arrays under the assumption that someday a future magical compiler could do that for you. [00:22:36] +**Mark Erikson:** And again, with Carl, with what you said earlier, it's, this is a vision that the React team has had for a while. You know, they, they'd said early on that they designed the hooks APIs, you know, specifically the dependency arrays under the assumption that someday a future magical compiler could do that for you. [22:36] -They honestly weren't sure if, and when they would ever get around to it. And it was pointed out that they didn't have compiler expertise on the team. At the time that they were making that assumption, but that was a thing that they assumed would eventually happen. You know, they played around with a proof of concept compiler called prepack years ago. [00:22:54] +They honestly weren't sure if, and when they would ever get around to it. And it was pointed out that they didn't have compiler expertise on the team. At the time that they were making that assumption, but that was a thing that they assumed would eventually happen. You know, they played around with a proof of concept compiler called prepack years ago. [22:54] -That attempt didn't work out. And even this current compiler took a couple of different attempts to really figure out what they, what it was supposed to do and how they were going to do it. But the thought process of we could use a compiler has been around for a while. A couple other quick notes to wrap this up. [00:23:12] +That attempt didn't work out. And even this current compiler took a couple of different attempts to really figure out what they, what it was supposed to do and how they were going to do it. But the thought process of we could use a compiler has been around for a while. A couple other quick notes to wrap this up. [23:12] -Lauren Tan did a talk all the way back in 2016 that has kind of a couple indirect precursors to the thought process of the compiler and using it. They apparently used it in the official React Conf app. And the BlueSky Twitter alternative is already using it in production, partly because Dan works on BlueSky now. [00:23:32] +Lauren Tan did a talk all the way back in 2016 that has kind of a couple indirect precursors to the thought process of the compiler and using it. They apparently used it in the official React Conf app. And the BlueSky Twitter alternative is already using it in production, partly because Dan works on BlueSky now. [23:32] -And also the React core team added it to BlueSky to help prove that it would work in a separate real world application. [00:23:39] +And also the React core team added it to BlueSky to help prove that it would work in a separate real world application. [23:39] ## Remix is merging (back?) into React Router -**Mark Erikson:** I'll toss out one other announcement that came out of the conference. So Ryan Florence did a talk where he announced that Remix and React Router are merging, sort of, conceptually. [00:23:51] +**Mark Erikson:** I'll toss out one other announcement that came out of the conference. So Ryan Florence did a talk where he announced that Remix and React Router are merging, sort of, conceptually. [23:51] -The way he put it is that Remix itself, at this point, is basically just the latest version of React Router plus a Vite plugin that adds the actual build steps. And so, rather than continuing to put more things into the Remix packages specifically, they're just gonna move a couple more things over into the React Router packages, label that React Router v7, and it has an optional Vite plugin if you want to do server usage. [00:24:21] +The way he put it is that Remix itself, at this point, is basically just the latest version of React Router plus a Vite plugin that adds the actual build steps. And so, rather than continuing to put more things into the Remix packages specifically, they're just gonna move a couple more things over into the React Router packages, label that React Router v7, and it has an optional Vite plugin if you want to do server usage. [24:21] -Um, this of course was met with much confusion and complaining on Twitter. Personally, it makes sense to me. And it's worth watching Ryan's talk to get a sense of why they're going this way. [00:24:32] +Um, this of course was met with much confusion and complaining on Twitter. Personally, it makes sense to me. And it's worth watching Ryan's talk to get a sense of why they're going this way. [24:32] -**Carl Vitullo:** Yeah, and this was surprising. I won't say that it wasn't surprising. I just thought that, like, Remix, I mean, they're a venture backed business. They got acquired by Shopify. I am surprised to see them say that Remix is just not going to be a thing anymore. For that, for those branding reasons, branding and funding and,[00:24:49] +**Carl Vitullo:** Yeah, and this was surprising. I won't say that it wasn't surprising. I just thought that, like, Remix, I mean, they're a venture backed business. They got acquired by Shopify. I am surprised to see them say that Remix is just not going to be a thing anymore. For that, for those branding reasons, branding and funding and,[24:49] -**Mark Erikson:** The caveat there is Ryan said in both the talk and the later blog post that they put up, like, we have more plans for Remix as both a brand and a set of tools that we want to circle back to in a few months. [00:25:05] +**Mark Erikson:** The caveat there is Ryan said in both the talk and the later blog post that they put up, like, we have more plans for Remix as both a brand and a set of tools that we want to circle back to in a few months. [25:05] -Like, we have some idea of something new we want to do with it, but for now the focus is like, let's just roll all this stuff into the next version of React Router and then you can pick and choose whether it's just doing client side stuff or server side stuff too. [00:25:19] +Like, we have some idea of something new we want to do with it, but for now the focus is like, let's just roll all this stuff into the next version of React Router and then you can pick and choose whether it's just doing client side stuff or server side stuff too. [25:19] -**Mo Khazali:** And I guess on the Shopify piece, Carl, I'd love to get your thoughts, but I feel like Shopify kind of achieved what they were trying to achieve with Remix, which was ultimately they took it and made it the backbone of Hydrogen, which was their own sort of, I guess, framework, so to speak. [00:25:33] +**Mo Khazali:** And I guess on the Shopify piece, Carl, I'd love to get your thoughts, but I feel like Shopify kind of achieved what they were trying to achieve with Remix, which was ultimately they took it and made it the backbone of Hydrogen, which was their own sort of, I guess, framework, so to speak. [25:33] -And it's great if you've ever used it to make a Shopify app. I don't know if that, maybe they're looking to get more out of it or not, but I feel like it probably achieved at least some of the purpose of why they, they, backed it as a framework and invested in it. [00:25:44] +And it's great if you've ever used it to make a Shopify app. I don't know if that, maybe they're looking to get more out of it or not, but I feel like it probably achieved at least some of the purpose of why they, they, backed it as a framework and invested in it. [25:44] -**Carl Vitullo:** That's true. Yeah. And I guess, actually, I don't know this, but I think it was an acqui-hire, they started working at Shopify? Yeah. So that, that certainly makes sense, Shopify got their value out of business transaction for sure. But, so I guess, as surprising as it was to me for them to announce that they're now moving back to React Router as their primary brand for the work they're doing right now, they also have a long history of doing things like this. [00:26:09] +**Carl Vitullo:** That's true. Yeah. And I guess, actually, I don't know this, but I think it was an acqui-hire, they started working at Shopify? Yeah. So that, that certainly makes sense, Shopify got their value out of business transaction for sure. But, so I guess, as surprising as it was to me for them to announce that they're now moving back to React Router as their primary brand for the work they're doing right now, they also have a long history of doing things like this. [26:09] -The React Router folks put out React Router and then they've done at least one, I think, departure that sort of builds on because they had done Reach router for a while because they had some new concepts that they wanted to explore. And I think that is a phenomenally responsible way to approach public experimentation in an open source setting. [00:26:30] +The React Router folks put out React Router and then they've done at least one, I think, departure that sort of builds on because they had done Reach router for a while because they had some new concepts that they wanted to explore. And I think that is a phenomenally responsible way to approach public experimentation in an open source setting. [26:30] -They have a large enough audience that if they announce a new project, people will give it a shot. And I think it is so smart, in terms of, like, branding and messaging and, managing expectations, I think they are tremendously smart and thoughtful about how they use brands, because, you know, you can do, like, a major version, you can do a beta or an RC, or, you know, do, like, an experimental phase in a project, but I think it is really great and honestly kind of them to the community to say like no This is different enough that we are giving it a new brand and we're gonna experiment and then now twice now They've said "cool, we learned a bunch of stuff and we're just gonna bring it back, now it's just React Router again." [00:27:12] +They have a large enough audience that if they announce a new project, people will give it a shot. And I think it is so smart, in terms of, like, branding and messaging and, managing expectations, I think they are tremendously smart and thoughtful about how they use brands, because, you know, you can do, like, a major version, you can do a beta or an RC, or, you know, do, like, an experimental phase in a project, but I think it is really great and honestly kind of them to the community to say like no This is different enough that we are giving it a new brand and we're gonna experiment and then now twice now They've said "cool, we learned a bunch of stuff and we're just gonna bring it back, now it's just React Router again." [27:12] -So because React Router specifically React Router is such a like foundational part of the Ecosystem. Like, you know, the React team has never blessed a routing tool to use with React. So it's, they've always just been the de facto one to use. And I think it is really marvelous that they have taken that position with such seriousness and done this kind of thoughtful experimentation with it. [00:27:38] +So because React Router specifically React Router is such a like foundational part of the Ecosystem. Like, you know, the React team has never blessed a routing tool to use with React. So it's, they've always just been the de facto one to use. And I think it is really marvelous that they have taken that position with such seriousness and done this kind of thoughtful experimentation with it. [27:38] -**Mark Erikson:** I can vouch that naming and branding and getting people to migrate is a really hard problem. [00:27:45] +**Mark Erikson:** I can vouch that naming and branding and getting people to migrate is a really hard problem. [27:45] -**Carl Vitullo:** I want to call that out, I think it's really clever and smart and, just having been in the ecosystem since 2015 and watching a lot of thrashing and watching a lot of arguing on Twitter about like this and that and the other, I think they've been really consistently great about, once all the dust settles, at the time it was kind of confusing, but so I guess I want to be the voice that's like," it's going to be okay." [00:28:08] +**Carl Vitullo:** I want to call that out, I think it's really clever and smart and, just having been in the ecosystem since 2015 and watching a lot of thrashing and watching a lot of arguing on Twitter about like this and that and the other, I think they've been really consistently great about, once all the dust settles, at the time it was kind of confusing, but so I guess I want to be the voice that's like," it's going to be okay." [28:08] ## Effect JS -**Carl Vitullo:** Okay, moving on to the next subject, I guess. This was a subject that I almost brought in on the last episode and held off because it seemed a little bit too out there. But I dug into it a little bit over the last month. [00:28:19] +**Carl Vitullo:** Okay, moving on to the next subject, I guess. This was a subject that I almost brought in on the last episode and held off because it seemed a little bit too out there. But I dug into it a little bit over the last month. [28:19] -Effect, they have released 3. 0 and they are now calling it production ready. It, it had crossed my radar in April with some people asking folks like Kent C. Dodds and other prominent educators, what they thought about it. So, and the consensus I saw then was like, looks neat, but it's real big. That's a lot to learn. I'm not, I'm not dipping my toes in yet. [00:28:41] +Effect, they have released 3. 0 and they are now calling it production ready. It, it had crossed my radar in April with some people asking folks like Kent C. Dodds and other prominent educators, what they thought about it. So, and the consensus I saw then was like, looks neat, but it's real big. That's a lot to learn. I'm not, I'm not dipping my toes in yet. [28:41] -And basically what I understand it to be is a, it's almost a standard library for TypeScript, but it's also. Like a functional programming kind of paradigm, like it introduces new concepts for all the way down to console. log. So there's a fetch replacement. There's a console. log replacement. There's a promise replacement. It's an enormous surface area for the API. So in a very real way, it's like learning a new language, which is why I held off on this, because it's a Big swing. [00:29:15] +And basically what I understand it to be is a, it's almost a standard library for TypeScript, but it's also. Like a functional programming kind of paradigm, like it introduces new concepts for all the way down to console. log. So there's a fetch replacement. There's a console. log replacement. There's a promise replacement. It's an enormous surface area for the API. So in a very real way, it's like learning a new language, which is why I held off on this, because it's a Big swing. [29:15] -It is an enormous swing. One of the reasons I decided to bring it in is that I learned while digging into it that Johannes Schickling is one of the people backing this, one of the creators of the project. And he's been, I can't remember what his first project was. I've been following him for, it feels like forever. He was the founder of Prisma, which was a very influential ORM, schema declaration model. [00:29:40] +It is an enormous swing. One of the reasons I decided to bring it in is that I learned while digging into it that Johannes Schickling is one of the people backing this, one of the creators of the project. And he's been, I can't remember what his first project was. I've been following him for, it feels like forever. He was the founder of Prisma, which was a very influential ORM, schema declaration model. [29:40] -**Mark Erikson:** He's done some GraphQL stuff, and I actually had a chance to meet him in person back in December, and one of the ideas he's been playing around with is like a local first application where every single bit of the code from fetch data to literal client side state is held in an in memory SQLite database. [00:29:59] +**Mark Erikson:** He's done some GraphQL stuff, and I actually had a chance to meet him in person back in December, and one of the ideas he's been playing around with is like a local first application where every single bit of the code from fetch data to literal client side state is held in an in memory SQLite database. [29:59] -So, like, rather than a bunch of used state hooks, he's got, like, reactive hooks that tie into SQLite running as WASM in the browser, and literally every bit of data in that example. is coming straight out of that SQLite database. Which sounds odd, but when you see it in practice, it's like, oh, I can see the intent behind why he's playing with this idea. [00:30:22] +So, like, rather than a bunch of used state hooks, he's got, like, reactive hooks that tie into SQLite running as WASM in the browser, and literally every bit of data in that example. is coming straight out of that SQLite database. Which sounds odd, but when you see it in practice, it's like, oh, I can see the intent behind why he's playing with this idea. [30:22] -**Mo Khazali:** I don't know if you folks recall Project Lightspeed, that Meta did a few years ago, I think it was like 2019, 2020. With the messenger app that they did, it was a very similar approach, which was everything on the client side is backed by SQLite database, the data fetching, the layouting, the local state. So I don't think it's an, it's that odd of a paradigm. [00:30:40] +**Mo Khazali:** I don't know if you folks recall Project Lightspeed, that Meta did a few years ago, I think it was like 2019, 2020. With the messenger app that they did, it was a very similar approach, which was everything on the client side is backed by SQLite database, the data fetching, the layouting, the local state. So I don't think it's an, it's that odd of a paradigm. [30:40] -It sounds like a, it could be a good scalable way to handle things. So interesting to hear that somebody else is like digging into that vision, Mark. [00:30:47] +It sounds like a, it could be a good scalable way to handle things. So interesting to hear that somebody else is like digging into that vision, Mark. [30:47] -**Mark Erikson:** So with the effect thing, like I echo what you're saying, Carl, is like, just trying to describe what the project is. And a couple bullet points is hard. If I could attempt to restate what you were saying a minute ago, it's multiple different pieces. [00:31:01] +**Mark Erikson:** So with the effect thing, like I echo what you're saying, Carl, is like, just trying to describe what the project is. And a couple bullet points is hard. If I could attempt to restate what you were saying a minute ago, it's multiple different pieces. [31:01] -One is that there's some similarity to the Redux Saga package, where instead of using Async await syntax, and actually kicking off things like async requests right now, I think your code uses generators and generally returns descriptions of like what kind of side effectful behavior you want the code to execute. [00:31:26] +One is that there's some similarity to the Redux Saga package, where instead of using Async await syntax, and actually kicking off things like async requests right now, I think your code uses generators and generally returns descriptions of like what kind of side effectful behavior you want the code to execute. [31:26] -But nothing actually happens until you return those descriptions to some kind of runner that actually goes off and does the work. Another aspect is that instead of relying on throwing errors just from any piece of the code, you actually end up specifying at the type level that this function could return a number and could throw a, like, could not parse integer error, or something like that. [00:31:54] +But nothing actually happens until you return those descriptions to some kind of runner that actually goes off and does the work. Another aspect is that instead of relying on throwing errors just from any piece of the code, you actually end up specifying at the type level that this function could return a number and could throw a, like, could not parse integer error, or something like that. [31:54] -And so you, like, it's a very, like I said, functional programming way of modeling code. Returned values versus possible thrown errors, and they have an entire JavaScript standard library built up because as we all know, one of the weaknesses of the JS ecosystem is we don't have much of a standard library built into the language itself. [00:32:17] +And so you, like, it's a very, like I said, functional programming way of modeling code. Returned values versus possible thrown errors, and they have an entire JavaScript standard library built up because as we all know, one of the weaknesses of the JS ecosystem is we don't have much of a standard library built into the language itself. [32:17] -And there's a whole bunch of primitives around async concurrency. So things like retries and, you know, iteration, backoffs, and that sort of thing. So, like, that, as usual, I've not played with it, I've only tried to skim over the docs, and, yeah, like, my own reaction is like, Wow, that's a lot, I can't even wrap my head around this, but I think that's the best description I can come up with, and I think I see where they're trying to go with this. [00:32:45] +And there's a whole bunch of primitives around async concurrency. So things like retries and, you know, iteration, backoffs, and that sort of thing. So, like, that, as usual, I've not played with it, I've only tried to skim over the docs, and, yeah, like, my own reaction is like, Wow, that's a lot, I can't even wrap my head around this, but I think that's the best description I can come up with, and I think I see where they're trying to go with this. [32:45] -**Carl Vitullo:** I did dig around a little bit more than trying to read the documentation. I was directed to, a wonderful 10 minute introduction about it. That was what really sold me, and I'm like, yep, okay, we're gonna talk about this. So I definitely recommend checking that out. Um, from Ethan Niser, yeah, just, it's a great 10 minute introduction. [00:33:02] +**Carl Vitullo:** I did dig around a little bit more than trying to read the documentation. I was directed to, a wonderful 10 minute introduction about it. That was what really sold me, and I'm like, yep, okay, we're gonna talk about this. So I definitely recommend checking that out. Um, from Ethan Niser, yeah, just, it's a great 10 minute introduction. [33:02] -And going back to Johannes Schickling, he gave a, an hour long talk titled Production Grade TypeScript at, they put on a conference, they put on a conference already, Effect Days 2024. It was also great. It was much deeper in the weeds. At one point he said, like, "I'm sure that a lot of people watching this talk on YouTube are going to be angry I'm not explaining what effect is." And I was like, dang it, that's me. I wanted to know what effect is (laughter). But it was a great talk besides that, uh, it just didn't quite answer the question I was hoping for. [00:33:32] +And going back to Johannes Schickling, he gave a, an hour long talk titled Production Grade TypeScript at, they put on a conference, they put on a conference already, Effect Days 2024. It was also great. It was much deeper in the weeds. At one point he said, like, "I'm sure that a lot of people watching this talk on YouTube are going to be angry I'm not explaining what effect is." And I was like, dang it, that's me. I wanted to know what effect is (laughter). But it was a great talk besides that, uh, it just didn't quite answer the question I was hoping for. [33:32] -If he's got bona fides in, like, querying, schema, GraphQL, as well as local first, like, to me, those both extensively deal with the hardest parts of asynchronous behavior, with, like, retries and backoffs, like you were mentioning. So that is A lot of very deep experience with some very hard problems. [00:33:53] +If he's got bona fides in, like, querying, schema, GraphQL, as well as local first, like, to me, those both extensively deal with the hardest parts of asynchronous behavior, with, like, retries and backoffs, like you were mentioning. So that is A lot of very deep experience with some very hard problems. [33:53] -And I do love local first. I think it is an absolutely wonderful paradigm and it is very challenging right now. So if we end up getting a relatively widely used and supported standard library that makes things like exponential backoff and retries and responding to different kinds of errors in different ways. Then. All of the myriad things that make asynchronous behavior difficult, then that sounds pretty cool. [00:34:19] +And I do love local first. I think it is an absolutely wonderful paradigm and it is very challenging right now. So if we end up getting a relatively widely used and supported standard library that makes things like exponential backoff and retries and responding to different kinds of errors in different ways. Then. All of the myriad things that make asynchronous behavior difficult, then that sounds pretty cool. [34:19] -I'm pretty excited about it. So, I don't know, that's, that's all I will say on effect. [00:34:23] +I'm pretty excited about it. So, I don't know, that's, that's all I will say on effect. [34:23] ## Forensics of React Server Components -**Mark Erikson:** All right, moving along. We've discussed and linked to a lot of articles over the last few months that attempt to dig in and explain various aspects of React server components. [00:34:34] +**Mark Erikson:** All right, moving along. We've discussed and linked to a lot of articles over the last few months that attempt to dig in and explain various aspects of React server components. [34:34] -What are they? Why would you care about them? How do you use them? How would you even go about building your own server components based framework? [00:34:42] +What are they? Why would you care about them? How do you use them? How would you even go about building your own server components based framework? [34:42] -And we want to point to one article along those lines this month, the forensics of React server components. This one does a really good job of laying out a lot of the different pieces and how they fit together. [00:34:54] +And we want to point to one article along those lines this month, the forensics of React server components. This one does a really good job of laying out a lot of the different pieces and how they fit together. [34:54] -It talks about, you know, client side rendering and kind of illustrates some of the data fetching and rendering workflow, server side rendering, and how data gets fetched on the server and rendered and loaded into the client. Hydration and servers and some of the issues with that, and then goes and digs into server components and kind of walks through a lot of what the data flow and mental model of where data and where server components fit into the life cycle, how the data fetching behaves, the interactions between server components and client components, and even shows some examples of the serialized output that server components return. So, it's a pretty good one stop shop for kind of wrapping your head around some of the actual usage and mental model of server components. [00:35:39] +It talks about, you know, client side rendering and kind of illustrates some of the data fetching and rendering workflow, server side rendering, and how data gets fetched on the server and rendered and loaded into the client. Hydration and servers and some of the issues with that, and then goes and digs into server components and kind of walks through a lot of what the data flow and mental model of where data and where server components fit into the life cycle, how the data fetching behaves, the interactions between server components and client components, and even shows some examples of the serialized output that server components return. So, it's a pretty good one stop shop for kind of wrapping your head around some of the actual usage and mental model of server components. [35:39] ## Next.js v15 RC -**Carl Vitullo:** Okay, uh, Next15 has an RC coming out, or that is now out. [00:35:44] +**Carl Vitullo:** Okay, uh, Next15 has an RC coming out, or that is now out. [35:44] -Not entirely related, but I did see that Vercel has now raised 250 million dollars. So they are capitalized for a good minute longer. They're not going to go out of business anytime soon. [00:35:54] +Not entirely related, but I did see that Vercel has now raised 250 million dollars. So they are capitalized for a good minute longer. They're not going to go out of business anytime soon. [35:54] -But yeah, Next 15 supports React 19 and the compiler, they have changed their caching behavior pretty extensively, which I had understood to be one of the bigger pain points of using the app router. They have an experimental API called Next After, which solves a problem where you can schedule work to be processed after the response from the server has finished streaming. It solves the problem of needing to figure out, needing to guess when the response has come in. I think that's pretty neat. [00:36:22] +But yeah, Next 15 supports React 19 and the compiler, they have changed their caching behavior pretty extensively, which I had understood to be one of the bigger pain points of using the app router. They have an experimental API called Next After, which solves a problem where you can schedule work to be processed after the response from the server has finished streaming. It solves the problem of needing to figure out, needing to guess when the response has come in. I think that's pretty neat. [36:22] -They also have a neat feature, they call it partial pre rendering, it is neat looking to me. They say, you can wrap any dynamic UI in a suspense boundary, when a new request comes in, Next will immediately serve a static HTML shell, then render and stream in the dynamic parts with the same HTTP request. That sounds a lot like out of order streaming that I had heard some stuff about in the past. [00:36:43] +They also have a neat feature, they call it partial pre rendering, it is neat looking to me. They say, you can wrap any dynamic UI in a suspense boundary, when a new request comes in, Next will immediately serve a static HTML shell, then render and stream in the dynamic parts with the same HTTP request. That sounds a lot like out of order streaming that I had heard some stuff about in the past. [36:43] -I mean, that's always been the dream of server side rendering is you make a request, you immediately respond with something, so it's not just a blank screen and then fill in the rest of the bits. So it seems like a clear improvement to me to be able to do that in a single HTTP request without having to open a new connection and do all the TCP handshaking. So that, that should be a pretty good performance improvement. [00:37:05] +I mean, that's always been the dream of server side rendering is you make a request, you immediately respond with something, so it's not just a blank screen and then fill in the rest of the bits. So it seems like a clear improvement to me to be able to do that in a single HTTP request without having to open a new connection and do all the TCP handshaking. So that, that should be a pretty good performance improvement. [37:05] ## It's not just you, Next.js is getting harder to use -**Carl Vitullo:** I just wanted to call out an article that I saw entitled, It's Not Just You, Next. js is Getting Harder to Use. It just kind of calls out the increasing complexity of the framework. It's a little pessimistic, it's a little down note, but I think it's reasonably fair. [00:37:20] +**Carl Vitullo:** I just wanted to call out an article that I saw entitled, It's Not Just You, Next. js is Getting Harder to Use. It just kind of calls out the increasing complexity of the framework. It's a little pessimistic, it's a little down note, but I think it's reasonably fair. [37:20] -Just to call out a couple of sections that seemed worth it to me. You need to understand a lot about the internals to do seemingly basic tasks. There are many ways to shoot yourself in the foot that are opt out instead of opt in. This is just a funny bit talking about like, you know, you go to a GitHub issue and you see an explanation of why that thing that you want to do isn't possible and go like, "oh, that does make sense." But they say, you probably read this and left with five more things to Google before realizing that you probably have to restructure your code, which is Brutally familiar. [00:37:49] +Just to call out a couple of sections that seemed worth it to me. You need to understand a lot about the internals to do seemingly basic tasks. There are many ways to shoot yourself in the foot that are opt out instead of opt in. This is just a funny bit talking about like, you know, you go to a GitHub issue and you see an explanation of why that thing that you want to do isn't possible and go like, "oh, that does make sense." But they say, you probably read this and left with five more things to Google before realizing that you probably have to restructure your code, which is Brutally familiar. [37:49] -So, and on the app router, if you started a Next project, Next will default you into it, which implies that it's production ready. It implies that if you're starting something new that you're going to ship to production, you should use the app router. [00:38:02] +So, and on the app router, if you started a Next project, Next will default you into it, which implies that it's production ready. It implies that if you're starting something new that you're going to ship to production, you should use the app router. [38:02] -But this article calls out, "the official React docs don't share that same sentiment. They currently recommend the Pages router and describes the app router as a bleeding edge React framework." So, it seemed like a really good, really fair. Non complementary discussion of Next. [00:38:17] +But this article calls out, "the official React docs don't share that same sentiment. They currently recommend the Pages router and describes the app router as a bleeding edge React framework." So, it seemed like a really good, really fair. Non complementary discussion of Next. [38:17] -**Mark Erikson:** I've seen a number of folks complain that the app router works great for the layouty stuff, but some of the integrations have been both buggy and somewhat hard to use. [00:38:28] +**Mark Erikson:** I've seen a number of folks complain that the app router works great for the layouty stuff, but some of the integrations have been both buggy and somewhat hard to use. [38:28] -One comment I saw was the effect that, ironically enough, the app router Works better for static pages and the pages router works better for applications in terms of data fetching. So the names almost seem a little bit backwards, ironically. [00:38:43] +One comment I saw was the effect that, ironically enough, the app router Works better for static pages and the pages router works better for applications in terms of data fetching. So the names almost seem a little bit backwards, ironically. [38:43] -**Mo Khazali:** I don't know about you folks, but when the App router came out and you know, I've gotten more and more used to it as time passes, but I just found that the pages router, even just things like being explicit with, you know, whether you're doing get server side props or you're doing get static props, just found that I love the fact that it's explicit, so at least you as the developer have to explicitly define how you want sort of that page to be rendered, rather than sort of the automated, magical nature of the app router. [00:39:08] +**Mo Khazali:** I don't know about you folks, but when the App router came out and you know, I've gotten more and more used to it as time passes, but I just found that the pages router, even just things like being explicit with, you know, whether you're doing get server side props or you're doing get static props, just found that I love the fact that it's explicit, so at least you as the developer have to explicitly define how you want sort of that page to be rendered, rather than sort of the automated, magical nature of the app router. [39:08] -I do miss that sometimes, but there's also a lot of benefits to having the app router, so I guess it's, as with all things, there's trade offs with it. [00:39:15] +I do miss that sometimes, but there's also a lot of benefits to having the app router, so I guess it's, as with all things, there's trade offs with it. [39:15] -**Mark Erikson:** All right, Mo, you have a lot more expertise on React Native than either the two of us. Want to hit some of those highlights? [00:39:21] +**Mark Erikson:** All right, Mo, you have a lot more expertise on React Native than either the two of us. Want to hit some of those highlights? [39:21] ## React Native New Architecture beta -**Mo Khazali:** Let's jump into it. So let's start off with Meta news. Firstly, we've been hearing about the new architecture for years now, if you've been in the ecosystem, uh, but they have officially put it into beta, which is a big deal if you've been here for a hot minute and the word on the street unofficially is that we might finally see it going into production or going into default and out of beta sometime this year. We'll see if that happens, but it'd be very exciting. [00:39:46] +**Mo Khazali:** Let's jump into it. So let's start off with Meta news. Firstly, we've been hearing about the new architecture for years now, if you've been in the ecosystem, uh, but they have officially put it into beta, which is a big deal if you've been here for a hot minute and the word on the street unofficially is that we might finally see it going into production or going into default and out of beta sometime this year. We'll see if that happens, but it'd be very exciting. [39:46] -The good news with all of this is there's more and more, uh, Third party libraries or open source libraries that are coming with new architecture support. And I think that's the real bottleneck right now is one having a good interop layer, which the folks shipped last year from the meta team. [00:40:00] +The good news with all of this is there's more and more, uh, Third party libraries or open source libraries that are coming with new architecture support. And I think that's the real bottleneck right now is one having a good interop layer, which the folks shipped last year from the meta team. [40:00] -So that helps kind of ensure some level of backwards compatibility, whether it's with the layouting engine or with the rendering engine, but I think it's a really good step that they're going into beta and soon more and more libraries are going to support new architecture. [00:40:12] +So that helps kind of ensure some level of backwards compatibility, whether it's with the layouting engine or with the rendering engine, but I think it's a really good step that they're going into beta and soon more and more libraries are going to support new architecture. [40:12] -There was this massive Google Sheet that just had all of the libraries that currently support new architecture that are commonly used in, in, in the community and some of the ones that don't yet. So it's, it's going in that direction. I think everyone's trying to push and get, get it finally over the line. [00:40:25] +There was this massive Google Sheet that just had all of the libraries that currently support new architecture that are commonly used in, in, in the community and some of the ones that don't yet. So it's, it's going in that direction. I think everyone's trying to push and get, get it finally over the line. [40:25] ## Expo is now the recommended framework -**Mo Khazali:** Uh, in other news, Meta, both in React Conf and also at AppJS did kind of similar talks about how you should use a framework. So if you've been in the React space with Next, you will be familiar with this. Very much, but the idea here is that they've officially came out and endorsed that you should use Expo by default. [00:40:43] +**Mo Khazali:** Uh, in other news, Meta, both in React Conf and also at AppJS did kind of similar talks about how you should use a framework. So if you've been in the React space with Next, you will be familiar with this. Very much, but the idea here is that they've officially came out and endorsed that you should use Expo by default. [40:43] -And this isn't anything new. If you had been frequenting the React Native docs for the last couple years, they give a nod to Expo here and there, they use Expo Snacks for the coding examples, and they kind of make points to say you should go and check out Expo if you're starting out a new app. [00:40:59] +And this isn't anything new. If you had been frequenting the React Native docs for the last couple years, they give a nod to Expo here and there, they use Expo Snacks for the coding examples, and they kind of make points to say you should go and check out Expo if you're starting out a new app. [40:59] -Um, but now they've explicitly said, you know, you should use a framework for the same reasons that you see in the React ecosystem. Routing, um, tooling, and having the right ecosystem in place, which I think is a great step because it really, using something like Expo really saves developers a lot of, uh, hassle and a lot of difficulty that you oftentimes face if you're just on a bare React Native project. [00:41:17] +Um, but now they've explicitly said, you know, you should use a framework for the same reasons that you see in the React ecosystem. Routing, um, tooling, and having the right ecosystem in place, which I think is a great step because it really, using something like Expo really saves developers a lot of, uh, hassle and a lot of difficulty that you oftentimes face if you're just on a bare React Native project. [41:17] ## React Native Skia on WebGPU -**Mo Khazali:** Now, going into community news, these things are fresh off of the press, predominantly out of App. js that happened last week. So, the first thing that I think was incredibly exciting was that we got some updates on React Native Skia. React Native Skia has been a 2D rendering sort of canvas that you can use in React Native to draw graphics, nice animated graphics, sometimes interactible graphics if you want to integrate it with things like Reanimated or GestureHandler. [00:41:43] +**Mo Khazali:** Now, going into community news, these things are fresh off of the press, predominantly out of App. js that happened last week. So, the first thing that I think was incredibly exciting was that we got some updates on React Native Skia. React Native Skia has been a 2D rendering sort of canvas that you can use in React Native to draw graphics, nice animated graphics, sometimes interactible graphics if you want to integrate it with things like Reanimated or GestureHandler. [41:43] -The announcement for this was in some ways the most amazing and also the most sort of cheeky announcement possible because it was sort of Apple esque intros with sort of rainbow colors going to form a hello and really just showing that they're very much great graphists at heart that are working behind this. And Skia is backed by Shopify as well. So it's got massive backing. It's a great project. So you should definitely check it out. [00:42:05] +The announcement for this was in some ways the most amazing and also the most sort of cheeky announcement possible because it was sort of Apple esque intros with sort of rainbow colors going to form a hello and really just showing that they're very much great graphists at heart that are working behind this. And Skia is backed by Shopify as well. So it's got massive backing. It's a great project. So you should definitely check it out. [42:05] -Previously Skia was mainly used for 2D graphics. So it gave you a canvas. You could draw things on it. And people had I've been using it to kind of extend the boundaries to create what they call 2. 5D, which is 2D graphics that kind of resemble 3D, and through the illusions of looking at it, they kind of look like they're 3D, but they're still just rendered on a 2D graphic, uh, and this has a few limitations, it runs on the CPU, it's not really truly 3D. If you want to do anything like interactivity with it, you're quite limited by sieve there in terms of your performance. [00:42:35] +Previously Skia was mainly used for 2D graphics. So it gave you a canvas. You could draw things on it. And people had I've been using it to kind of extend the boundaries to create what they call 2. 5D, which is 2D graphics that kind of resemble 3D, and through the illusions of looking at it, they kind of look like they're 3D, but they're still just rendered on a 2D graphic, uh, and this has a few limitations, it runs on the CPU, it's not really truly 3D. If you want to do anything like interactivity with it, you're quite limited by sieve there in terms of your performance. [42:35] -And hence, the talk that they had at Appjs was called Hello GPU. So first they started off saying, ah, there's video support now, so you can do a whole bunch of shaders on videos, which was quite cool, but really the key thing that was exciting was that they actually brought WebGPU into the React Native world. [00:42:50] +And hence, the talk that they had at Appjs was called Hello GPU. So first they started off saying, ah, there's video support now, so you can do a whole bunch of shaders on videos, which was quite cool, but really the key thing that was exciting was that they actually brought WebGPU into the React Native world. [42:50] -So you can use WebGPU to obviously target web, uh, with React Native Skia, if you're using React Native on the web, but you can also use it for iOS and for Android and having those sort of cross platform 3D visualizations and rendering, I think is going to be really cool for the community and not something that we've actually been able to do very effectively on the GPU layer. [00:43:09] +So you can use WebGPU to obviously target web, uh, with React Native Skia, if you're using React Native on the web, but you can also use it for iOS and for Android and having those sort of cross platform 3D visualizations and rendering, I think is going to be really cool for the community and not something that we've actually been able to do very effectively on the GPU layer. [43:09] -And they've integrated all the way down into the native layer APIs, so, Metal on iOS as an example. Especially with something like React Native running on Vision OS, where you really want to have these 3D objects that you kind of put in your vicinity in the spatial navigation paradigm. [00:43:24] +And they've integrated all the way down into the native layer APIs, so, Metal on iOS as an example. Especially with something like React Native running on Vision OS, where you really want to have these 3D objects that you kind of put in your vicinity in the spatial navigation paradigm. [43:24] -It will be so cool to be able to actually use that as well for VR and not just on Vision OS, but also maybe on some of the Quest runtimes and so on and so forth. So I think it's, it's a really cool step and it stops us from having to drop into the native layer as we've often had to do with this type of thing. [00:43:39] +It will be so cool to be able to actually use that as well for VR and not just on Vision OS, but also maybe on some of the Quest runtimes and so on and so forth. So I think it's, it's a really cool step and it stops us from having to drop into the native layer as we've often had to do with this type of thing. [43:39] ## React Native IDE -**Mo Khazali:** Next up on the announcements from AppJS, we saw the React Native IDE. So this has been kind of teased by the folks at Software Mansion for a long time. We've had a lot of sort of disparate tools in the React Native ecosystem. You know, when you're usually developing with React Native, you have to have your terminal running your Metro bundler and then maybe have Some Chrome DevTools running connected to the React Native DevTools to kind of, uh, your network requests coming in and analyze your source code. [00:44:04] +**Mo Khazali:** Next up on the announcements from AppJS, we saw the React Native IDE. So this has been kind of teased by the folks at Software Mansion for a long time. We've had a lot of sort of disparate tools in the React Native ecosystem. You know, when you're usually developing with React Native, you have to have your terminal running your Metro bundler and then maybe have Some Chrome DevTools running connected to the React Native DevTools to kind of, uh, your network requests coming in and analyze your source code. [44:04] -And then if you want to dig in and look at what elements are being rendered, where it's all really just sort of a bunch of different parts to the dev experience. And it's not been amazing. There's obviously been a lot of improvement. And if you come from the native world, sometimes those things can be a lot more integrated with Android Studio and Xcode. [00:44:20] +And then if you want to dig in and look at what elements are being rendered, where it's all really just sort of a bunch of different parts to the dev experience. And it's not been amazing. There's obviously been a lot of improvement. And if you come from the native world, sometimes those things can be a lot more integrated with Android Studio and Xcode. [44:20] -And so the lovely folks at Software Mansion have developed an IDE and it does some really cool stuff. I won't go into too much details. It does everything you would expect from an IDE. And I think it brings first class DevEx into the React Native world. It's going into beta or went into beta last week. [00:44:34] +And so the lovely folks at Software Mansion have developed an IDE and it does some really cool stuff. I won't go into too much details. It does everything you would expect from an IDE. And I think it brings first class DevEx into the React Native world. It's going into beta or went into beta last week. [44:34] -And the coolest thing out of all of the demo was debuggers across the native boundaries, so when you put in a debugger, it not only could handle debugging on the JS code that you write, but you could also place debuggers inside of your node modules on the iOS Swift code, or maybe your Android code that you have written in Kotlin, which I think is really cool, because one of the challenges is you're kind of fiddling between Xcode and Android Studio and also Visual Studio Code, And this brings it all into one place, which is really quite exciting. [00:45:03] +And the coolest thing out of all of the demo was debuggers across the native boundaries, so when you put in a debugger, it not only could handle debugging on the JS code that you write, but you could also place debuggers inside of your node modules on the iOS Swift code, or maybe your Android code that you have written in Kotlin, which I think is really cool, because one of the challenges is you're kind of fiddling between Xcode and Android Studio and also Visual Studio Code, And this brings it all into one place, which is really quite exciting. [45:03] ## React Native on TVs -**Mo Khazali:** And then the last thing that happened around React Conf, and they nodded at it again at AppJS, was around Amazon doing a keynote talk about using React Native beyond web and mobile. And so Amazon has started becoming a big proponent of React Native in general, but also React Native on TV specifically. [00:45:20] +**Mo Khazali:** And then the last thing that happened around React Conf, and they nodded at it again at AppJS, was around Amazon doing a keynote talk about using React Native beyond web and mobile. And so Amazon has started becoming a big proponent of React Native in general, but also React Native on TV specifically. [45:20] -And they have actually been using React Native for years now. They kind of hit it very cleverly where you couldn't really see it on first glance in the app binaries, but they came out with a big bang announcement last year saying we have actually been using React Native for a very long time, and it's been most of our apps. Huh. Gotcha. [00:45:35] +And they have actually been using React Native for years now. They kind of hit it very cleverly where you couldn't really see it on first glance in the app binaries, but they came out with a big bang announcement last year saying we have actually been using React Native for a very long time, and it's been most of our apps. Huh. Gotcha. [45:35] -And so it was quite a nice announcement in that, well, there's more people using React Native and that's always a good show of faith in the technology for the community. But it was quite funny that they hid it for so long. [00:45:45] +And so it was quite a nice announcement in that, well, there's more people using React Native and that's always a good show of faith in the technology for the community. But it was quite funny that they hid it for so long. [45:45] -Amazon obviously does a lot with Firesticks and TV devices, and their OS is based off of Android. So you can build TV apps for it with React Native. And I think they're very keen on people using React Native just because of its cross platform nature. They talked about many different things, challenges of performance and spatial navigation on TV. One thing, if anyone is interested in React Native for TV, a bit of a shameless plug here, so I apologize to you both, Carl and Mark. [00:46:12] +Amazon obviously does a lot with Firesticks and TV devices, and their OS is based off of Android. So you can build TV apps for it with React Native. And I think they're very keen on people using React Native just because of its cross platform nature. They talked about many different things, challenges of performance and spatial navigation on TV. One thing, if anyone is interested in React Native for TV, a bit of a shameless plug here, so I apologize to you both, Carl and Mark. [46:12] -**Mark Erikson:** Shameless plugs! Gasp! [00:46:15] +**Mark Erikson:** Shameless plugs! Gasp! [46:15] -**Carl Vitullo:** Who does those?? [00:46:16] +**Carl Vitullo:** Who does those?? [46:16] -**Mo Khazali:** Questionable on my, on my character there, I'm so sorry, folks. But, as part of like some of the community stuff that, I've been doing with some of the folks from Amazon. We actually started an RNTV.dev blog, and it's kind of meant to be a centralized resource for everything about React Native on TV, because that doesn't exist. We thought, why not make it so that we can help people onboard into it more and more. [00:46:36] +**Mo Khazali:** Questionable on my, on my character there, I'm so sorry, folks. But, as part of like some of the community stuff that, I've been doing with some of the folks from Amazon. We actually started an RNTV.dev blog, and it's kind of meant to be a centralized resource for everything about React Native on TV, because that doesn't exist. We thought, why not make it so that we can help people onboard into it more and more. [46:36] -The other last thing that they kind of dangled was they said, we want to support open source projects, especially ones on React Native for TV. So if you're interested and you've got a project that's extensively used on React Native for TV, Sign up for this form and we're gonna be, start starting to sponsor more and more projects on the React and React native ecosystem. [00:46:53] +The other last thing that they kind of dangled was they said, we want to support open source projects, especially ones on React Native for TV. So if you're interested and you've got a project that's extensively used on React Native for TV, Sign up for this form and we're gonna be, start starting to sponsor more and more projects on the React and React native ecosystem. [46:53] -So if you're a community maintainer, wink wink, you might wanna check that out and see if there's something that you can, uh, get some support from them for. [00:47:01] +So if you're a community maintainer, wink wink, you might wanna check that out and see if there's something that you can, uh, get some support from them for. [47:01] -And that is all of the React native stuff. Sorry folks for going into that rabbit hole. [00:47:05] +And that is all of the React native stuff. Sorry folks for going into that rabbit hole. [47:05] -**Carl Vitullo:** No, thank you. That's, we have a dearth of React native expertise on our end, so I'm very glad you can speak to it. [00:47:11] +**Carl Vitullo:** No, thank you. That's, we have a dearth of React native expertise on our end, so I'm very glad you can speak to it. [47:11] -It's cool to hear more about the React Native TV stuff. Cause a couple of months ago, Oh God, probably a year ago now. I spoke to Kaleb McKelvey, I want to say it is, about React Native on TV. [00:47:24] +It's cool to hear more about the React Native TV stuff. Cause a couple of months ago, Oh God, probably a year ago now. I spoke to Kaleb McKelvey, I want to say it is, about React Native on TV. [47:24] -In that setting. And it was a fun, interesting talk. It's an interesting input paradigm. You know, a remote control is very different from a keyboard or a touchscreen. [00:47:33] +In that setting. And it was a fun, interesting talk. It's an interesting input paradigm. You know, a remote control is very different from a keyboard or a touchscreen. [47:33] -**Mo Khazali:** Yeah, it's really quite tough, Carl. Like, you know, we're used to touch displays or, you know, cursors on the web or the pointers or whatever it is. And then you're really suddenly limited to up, right, left, down, and a select key. And you're like, Oh, wow, how do I, how do I, what happens when I press down and I'm at the end of a carousel? Like, it's just so much, like, undefined behavior that isn't standardized. So, it's definitely a cool engineering challenge to delve into if you want something new. [00:48:01] +**Mo Khazali:** Yeah, it's really quite tough, Carl. Like, you know, we're used to touch displays or, you know, cursors on the web or the pointers or whatever it is. And then you're really suddenly limited to up, right, left, down, and a select key. And you're like, Oh, wow, how do I, how do I, what happens when I press down and I'm at the end of a carousel? Like, it's just so much, like, undefined behavior that isn't standardized. So, it's definitely a cool engineering challenge to delve into if you want something new. [48:01] -**Carl Vitullo:** For sure. It's a funny, stateful mode of input. [00:48:04] +**Carl Vitullo:** For sure. It's a funny, stateful mode of input. [48:04] -**Mo Khazali:** Yeah 100%. [00:48:04] +**Mo Khazali:** Yeah 100%. [48:04] ## ⚡️ Lightning round ⚡️ -**Carl Vitullo:** Okay, cool. On to the lightning round. [00:48:07] +**Carl Vitullo:** Okay, cool. On to the lightning round. [48:07] ## Speculation Rules API in Chrome -**Carl Vitullo:** I'll take the lead with some new Speculation Rules API in Chrome. This was a new term to me, Speculation Rules, but so this is apparently finer grained control over how Chrome will prefetch pages. [00:48:22] +**Carl Vitullo:** I'll take the lead with some new Speculation Rules API in Chrome. This was a new term to me, Speculation Rules, but so this is apparently finer grained control over how Chrome will prefetch pages. [48:22] -So this lets you more clearly signal to the Chrome browser whether and how it should try to prefetch something as a user, like hovers or begins to click, things like that. [00:48:33] +So this lets you more clearly signal to the Chrome browser whether and how it should try to prefetch something as a user, like hovers or begins to click, things like that. [48:33] ## Josh Comeau's post on useDeferredValue -**Mark Erikson:** Josh Comeau put out a, yet another one of his incredible blog posts. I mean, basically every blog post or article that Josh Comeau ever writes is amazing. [00:48:42] +**Mark Erikson:** Josh Comeau put out a, yet another one of his incredible blog posts. I mean, basically every blog post or article that Josh Comeau ever writes is amazing. [48:42] -And this one was on snappy UI optimization with the relatively new React use deferred value hook. Now this came out in React 18, so it's actually been out for a couple of years, but frankly, almost nobody knows how to use this, including myself. And he pointed out that it's almost like a built in debounce for re rendering with a lower priority state update. [00:49:06] +And this one was on snappy UI optimization with the relatively new React use deferred value hook. Now this came out in React 18, so it's actually been out for a couple of years, but frankly, almost nobody knows how to use this, including myself. And he pointed out that it's almost like a built in debounce for re rendering with a lower priority state update. [49:06] -And so he gave some examples of a feature on his own blog or site that really benefited from moving some expensive calculations and rendering. In debouncing them via used, used deferred value and it really improved the smooth smoothness and snappiness of the ui. [00:49:24] +And so he gave some examples of a feature on his own blog or site that really benefited from moving some expensive calculations and rendering. In debouncing them via used, used deferred value and it really improved the smooth smoothness and snappiness of the ui. [49:24] ## BlueSky engineering culture -**Carl Vitullo:** Cool. I saw a pretty solid looking article from the pragmatic engineer about BlueSky engineering culture. I am all about BlueSky. I would love it if they are successful. And I always love a deep dive into engineering culture and, uh, you know, a white paper, as it were, of how an engineering team operates. So I thought it was pretty neat. For instance, they have two to three person teams with a directly responsible individual and lots of long form writing. [00:49:53] +**Carl Vitullo:** Cool. I saw a pretty solid looking article from the pragmatic engineer about BlueSky engineering culture. I am all about BlueSky. I would love it if they are successful. And I always love a deep dive into engineering culture and, uh, you know, a white paper, as it were, of how an engineering team operates. So I thought it was pretty neat. For instance, they have two to three person teams with a directly responsible individual and lots of long form writing. [49:53] -So it's like little things like that, I think are really cool to, you know, it's the, in our careers, we get so little, opportunity to experience different types of workplace cultures. So I think articles like these are super valuable for understanding whether there is something better for you out there. [00:50:11] +So it's like little things like that, I think are really cool to, you know, it's the, in our careers, we get so little, opportunity to experience different types of workplace cultures. So I think articles like these are super valuable for understanding whether there is something better for you out there. [50:11] -So yeah, go check it out. Also, Dan Abramov works there, so you can learn about how Dan Abramov works. [00:50:16] +So yeah, go check it out. Also, Dan Abramov works there, so you can learn about how Dan Abramov works. [50:16] ## Why Patching Globals is Harmful -**Mark Erikson:** Let's see, Artem Zakharchenko, uh, his handle is kettanito, he's the creator of the mux service worker tool. Put up a post called, Why patching globals is harmful. And, you know, sort of in response to, you know, some of the, the React and Next teams a couple other teams as well, suggesting that, like, we should patch globals automatically in various situations. [00:50:38] +**Mark Erikson:** Let's see, Artem Zakharchenko, uh, his handle is kettanito, he's the creator of the mux service worker tool. Put up a post called, Why patching globals is harmful. And, you know, sort of in response to, you know, some of the, the React and Next teams a couple other teams as well, suggesting that, like, we should patch globals automatically in various situations. [50:38] -And his whole sales pitch is that, especially today, like MockServiceWorker just uses standardized JavaScript interfaces for doing this behavior, and we've collectively learned that patching globals is a really bad thing. So, you know, some useful food for thought there. [00:50:54] +And his whole sales pitch is that, especially today, like MockServiceWorker just uses standardized JavaScript interfaces for doing this behavior, and we've collectively learned that patching globals is a really bad thing. So, you know, some useful food for thought there. [50:54] ## New Webkit features in Safari 17.5 -**Carl Vitullo:** There was a great post from New WebKit Features in Safari 17. 5. [00:50:59] +**Carl Vitullo:** There was a great post from New WebKit Features in Safari 17. 5. [50:59] -This caught my eye just because in so many cases, Safari is the last browser to implement something. So seeing oh, Safari implemented something, just caught my attention as like, Maybe we can use this now. It looks like Firefox is still a bit of a laggard on some of these features, but, there's a light dark function, light dark as a CSS function, which is a bit of a simplified developer experience for doing dark mode. [00:51:25] +This caught my eye just because in so many cases, Safari is the last browser to implement something. So seeing oh, Safari implemented something, just caught my attention as like, Maybe we can use this now. It looks like Firefox is still a bit of a laggard on some of these features, but, there's a light dark function, light dark as a CSS function, which is a bit of a simplified developer experience for doing dark mode. [51:25] -So it previously there had been a media query for, I believe it was prefers dark mode. That doesn't sound right, but there was a media query where you could apply different styles if the user had a setting for preferring dark mode. This is now a function that does effectively the same thing. So, This is a solid improvement because with the media query, you pretty much have to like copy an entire style block. [00:51:50] +So it previously there had been a media query for, I believe it was prefers dark mode. That doesn't sound right, but there was a media query where you could apply different styles if the user had a setting for preferring dark mode. This is now a function that does effectively the same thing. So, This is a solid improvement because with the media query, you pretty much have to like copy an entire style block. [51:50] -Whereas this you can just do inline, like if somebody wants a dark mode, you get this color. If somebody wants a light mode, you get this color. Just boom, nice little either or that you can do right in line. So I thought that was great. [00:52:01] +Whereas this you can just do inline, like if somebody wants a dark mode, you get this color. If somebody wants a light mode, you get this color. Just boom, nice little either or that you can do right in line. So I thought that was great. [52:01] -This is, I cannot believe that we are only just now getting this in 2024, but we now have text wrap balanced, where you can tell CSS that you want, for instance, a title of a document to stay balanced instead of like, this goes deep into design and typography. It's a classic problem of designers saying like, well, hey, on certain screen sizes, we have a dangling word here. Can we just fix that? And the answer for so long has been, "no, that's really hard." So now we have a CSS rule that lets us give better control over how text wraps. So that's wonderful. [00:52:38] +This is, I cannot believe that we are only just now getting this in 2024, but we now have text wrap balanced, where you can tell CSS that you want, for instance, a title of a document to stay balanced instead of like, this goes deep into design and typography. It's a classic problem of designers saying like, well, hey, on certain screen sizes, we have a dangling word here. Can we just fix that? And the answer for so long has been, "no, that's really hard." So now we have a CSS rule that lets us give better control over how text wraps. So that's wonderful. [52:38] -**Mo Khazali:** And I think there was a React library that was dedicated to this exact thing for the longest time. So it's cool. [00:52:44] +**Mo Khazali:** And I think there was a React library that was dedicated to this exact thing for the longest time. So it's cool. [52:44] -**Carl Vitullo:** That's why — cuz it's so hard. You needed JavaScript. You needed to like measure the characters and like know what font you're using. [00:52:52] +**Carl Vitullo:** That's why — cuz it's so hard. You needed JavaScript. You needed to like measure the characters and like know what font you're using. [52:52] -**Mark Erikson:** This is, this is a place I will legitimately happily use the platform. [00:52:56] +**Mark Erikson:** This is, this is a place I will legitimately happily use the platform. [52:56] -**Carl Vitullo:** Right? It's such a core part of designing a web page, like how does the text wrap? It's just so outrageous to me that it's 2024 and we are just now getting some mode of control of it that doesn't require JavaScript. And it didn't even work well in the past because you like, measuring fonts was not easy on its own, so that was weird. [00:53:15] +**Carl Vitullo:** Right? It's such a core part of designing a web page, like how does the text wrap? It's just so outrageous to me that it's 2024 and we are just now getting some mode of control of it that doesn't require JavaScript. And it didn't even work well in the past because you like, measuring fonts was not easy on its own, so that was weird. [53:15] -**Mo Khazali:** I'm going to rabbit hole again. You should have seen the, uh, Next. js implementation of that, because how do you consolidate the server rendering of the balanced text from the, it was, it had a whole, I went into the cores of that library, uh, massive rabbit hole. It was so funny to see how much work had to go into just getting that working on Next and on React client side. [00:53:33] +**Mo Khazali:** I'm going to rabbit hole again. You should have seen the, uh, Next. js implementation of that, because how do you consolidate the server rendering of the balanced text from the, it was, it had a whole, I went into the cores of that library, uh, massive rabbit hole. It was so funny to see how much work had to go into just getting that working on Next and on React client side. [53:33] -**Mark Erikson:** Part of me wants to go look and the rest of me doesn't want to. [00:53:36] +**Mark Erikson:** Part of me wants to go look and the rest of me doesn't want to. [53:36] -**Mo Khazali:** I will send you the link. Yeah,[00:53:37] +**Mo Khazali:** I will send you the link. Yeah,[53:37] -**Carl Vitullo:** we'll put it in the show notes too. Haha. Cool. [00:53:40] +**Carl Vitullo:** we'll put it in the show notes too. Haha. Cool. [53:40] -And they also, there's also an app starting style rule for things like entry transitions, which is great because we now have a lot more options for entry transitions because stuff like popovers and modals are now entering the platform as well. [00:53:53] +And they also, there's also an app starting style rule for things like entry transitions, which is great because we now have a lot more options for entry transitions because stuff like popovers and modals are now entering the platform as well. [53:53] -Cool. Love it. Here for it. That's all I got. [00:53:56] +Cool. Love it. Here for it. That's all I got. [53:56] ## Why React Query -**Mark Erikson:** The folks from the UI. dev educational material site have put up a post that talks about why React query. I always love historical posts or posts that explain like, here's an abstraction, why does this extraction even exist? Like what work is it doing for us in the first place? [00:54:15] +**Mark Erikson:** The folks from the UI. dev educational material site have put up a post that talks about why React query. I always love historical posts or posts that explain like, here's an abstraction, why does this extraction even exist? Like what work is it doing for us in the first place? [54:15] -And so they kind of walk through like, okay, if you were to actually just fetch data inside a component, here's all the work you have to do it correctly. And, oh look, React Query actually does all that work for you. Same thing for RTK Query and Apollo and SWR, in principle. They put up this in support of their new upcoming React Query course, which I believe has been written by the current maintainer of React Query, Dominic Dorfmeister. Knowing that and knowing the folks behind UI. dev, highly endorsed, even though I haven't actually looked at it. [00:54:45] +And so they kind of walk through like, okay, if you were to actually just fetch data inside a component, here's all the work you have to do it correctly. And, oh look, React Query actually does all that work for you. Same thing for RTK Query and Apollo and SWR, in principle. They put up this in support of their new upcoming React Query course, which I believe has been written by the current maintainer of React Query, Dominic Dorfmeister. Knowing that and knowing the folks behind UI. dev, highly endorsed, even though I haven't actually looked at it. [54:45] ## We can have a different web -**Carl Vitullo:** I saw a wonderful post from Molly White, who I am most familiar with her writing on looking at Web3 through a skeptical lens. [00:54:54] +**Carl Vitullo:** I saw a wonderful post from Molly White, who I am most familiar with her writing on looking at Web3 through a skeptical lens. [54:54] -**Mark Erikson:** Web3 is going great. [00:54:56] +**Mark Erikson:** Web3 is going great. [54:56] -**Carl Vitullo:** Yes, right. Her blog, Web3 is going great. She is a wonderful writer. She just gives great incisive commentary on Web3. She has put out this post titled, we can have a different web, it caught my eye. Because Web 3 took that moniker as trying to, kind of trying to ape the, like, Web 2. [00:55:13] +**Carl Vitullo:** Yes, right. Her blog, Web3 is going great. She is a wonderful writer. She just gives great incisive commentary on Web3. She has put out this post titled, we can have a different web, it caught my eye. Because Web 3 took that moniker as trying to, kind of trying to ape the, like, Web 2. [55:13] -0. They're like, well, Web 2. 0 is dead. We are now Web 3. And what a shame that only refers to kind of scammy cryptocurrency projects. I guess now I'd love to see like a Web 4. I know Block, briefly, Tried to do web five as a branding thing. [00:55:27] +0. They're like, well, Web 2. 0 is dead. We are now Web 3. And what a shame that only refers to kind of scammy cryptocurrency projects. I guess now I'd love to see like a Web 4. I know Block, briefly, Tried to do web five as a branding thing. [55:27] -**Mark Erikson:** Let's do the Winamp thing. It's like version two, version three, version five. [00:55:32] +**Mark Erikson:** Let's do the Winamp thing. It's like version two, version three, version five. [55:32] -**Carl Vitullo:** Yeah, right. If we could have Chrome just shout at you, it really whips the llama's ass, that would be great. [00:55:38] +**Carl Vitullo:** Yeah, right. If we could have Chrome just shout at you, it really whips the llama's ass, that would be great. [55:38] -But yeah, so, okay. This is, Molly White put out this great post. We can have a different web. Just talking about the local Maxima that we've found ourselves in. as users of the internet, you know, sort of bemoaning how if you search something on Google, you used to be able to find it. [00:55:54] +But yeah, so, okay. This is, Molly White put out this great post. We can have a different web. Just talking about the local Maxima that we've found ourselves in. as users of the internet, you know, sort of bemoaning how if you search something on Google, you used to be able to find it. [55:54] -I think one of the points she makes that is important and nice is that all of those things that people loved about like the good old days of the internet, they're still there. It's just a little bit harder to find them. So sort of her claim is like, we can still have that. We just, you know, there's, needs to be a little bit more. [00:56:09] +I think one of the points she makes that is important and nice is that all of those things that people loved about like the good old days of the internet, they're still there. It's just a little bit harder to find them. So sort of her claim is like, we can still have that. We just, you know, there's, needs to be a little bit more. [56:09] -I just definitely recommend checking it out. It tickled my brain a little bit because obviously I've been thinking a lot about community and communities of developers. And so we can have a different web, what is just a very exciting subject to contemplate for me. So definitely recommend checking that out. [00:56:23] +I just definitely recommend checking it out. It tickled my brain a little bit because obviously I've been thinking a lot about community and communities of developers. And so we can have a different web, what is just a very exciting subject to contemplate for me. So definitely recommend checking that out. [56:23] -**Mo Khazali:** It just briefly also reminded me of the work that the folks at ARC are doing with the browser company with the new browser that they've released, ARC, that's based on Chromium. But, you know, I think they're also trying to kind of re envision what it means to search for something on the web where. And integrating some level of generative AI to pull everything and kind of give you a summary and signpost you to the right links so it's less overwhelming than searching on Google these days. [00:56:46] +**Mo Khazali:** It just briefly also reminded me of the work that the folks at ARC are doing with the browser company with the new browser that they've released, ARC, that's based on Chromium. But, you know, I think they're also trying to kind of re envision what it means to search for something on the web where. And integrating some level of generative AI to pull everything and kind of give you a summary and signpost you to the right links so it's less overwhelming than searching on Google these days. [56:46] -It's definitely an interesting take. I think other people are also struggling with that same problem and trying to tackle it. Or we could go for a fully decentralized internet on everyone's phones. A certain TV show might have tried to spin that idea. [00:56:58] +It's definitely an interesting take. I think other people are also struggling with that same problem and trying to tackle it. Or we could go for a fully decentralized internet on everyone's phones. A certain TV show might have tried to spin that idea. [56:58] -**Mark Erikson:** A Black Mirror reference? [00:56:59] +**Mark Erikson:** A Black Mirror reference? [56:59] -**Mo Khazali:** No, I was, I was referring to Silicon Valley with Pied Piper. [00:57:02] +**Mo Khazali:** No, I was, I was referring to Silicon Valley with Pied Piper. [57:02] -**Carl Vitullo:** Ah. No, Pied Piper. Okay. Yep. I also thought Black Mirror. So that says something. [00:57:08] +**Carl Vitullo:** Ah. No, Pied Piper. Okay. Yep. I also thought Black Mirror. So that says something. [57:08] -**Mark Erikson:** So Christoph Nakazawa, who some folks might know as one of the long, I guess, previous maintainers of Jest while he was working at Facebook, has gone off and created a 2D strategy game sold on Steam called Athena Crisis. [00:57:23] +**Mark Erikson:** So Christoph Nakazawa, who some folks might know as one of the long, I guess, previous maintainers of Jest while he was working at Facebook, has gone off and created a 2D strategy game sold on Steam called Athena Crisis. [57:23] -I think it has some influences from, like, Advance Wars and that sort of genre. He built the entire game using React and CSS. And even though the game itself is, like, genuinely being sold on Steam, he's gone and open sourced the vast majority of the codebase. I had a chance to hear him talk about it a little bit while I was at React Conf, and he's even done things like putting up bounties for people to, like, improve the AI, or add new features to the map editor. [00:57:52] +I think it has some influences from, like, Advance Wars and that sort of genre. He built the entire game using React and CSS. And even though the game itself is, like, genuinely being sold on Steam, he's gone and open sourced the vast majority of the codebase. I had a chance to hear him talk about it a little bit while I was at React Conf, and he's even done things like putting up bounties for people to, like, improve the AI, or add new features to the map editor. [57:52] -Someone added, like, a tile mirroring feature so you can, you know, create maps that have, like, equal challenges for all the players. And so, his explicit goal was that, like, look, you know, maybe there's people out there who want to get into some kind of game related programming. And while this isn't like a 60 frames per second shooter style of game, there's still aspects of building a game that people might be interested in learning about, and they might be coming from the React community. [00:58:19] +Someone added, like, a tile mirroring feature so you can, you know, create maps that have, like, equal challenges for all the players. And so, his explicit goal was that, like, look, you know, maybe there's people out there who want to get into some kind of game related programming. And while this isn't like a 60 frames per second shooter style of game, there's still aspects of building a game that people might be interested in learning about, and they might be coming from the React community. [58:19] -And so by open sourcing this code base, folks can actually, you know, dig inside and learn and play around with it. So, you know, like kudos to him for taking that approach. [00:58:29] +And so by open sourcing this code base, folks can actually, you know, dig inside and learn and play around with it. So, you know, like kudos to him for taking that approach. [58:29] -**Carl Vitullo:** I also want to shout out that if you played Advance Wars back in the day, this will scratch an itch for you, I think. I've played it a fair amount. [00:58:37] +**Carl Vitullo:** I also want to shout out that if you played Advance Wars back in the day, this will scratch an itch for you, I think. I've played it a fair amount. [58:37] -It's pretty good. I enjoy it. It's a good game. Having it also be fully open source and come with that ethos is just lovely. I love it. [00:58:44] +It's pretty good. I enjoy it. It's a good game. Having it also be fully open source and come with that ethos is just lovely. I love it. [58:44] -Cool. I'm going to share this. Lee Holmes put out a blog post. Actually, this is not new, but it just crossed my radar. I don't remember where. I think it was in one of the newsletters that I read. [00:58:54] +Cool. I'm going to share this. Lee Holmes put out a blog post. Actually, this is not new, but it just crossed my radar. I don't remember where. I think it was in one of the newsletters that I read. [58:54] -But it was titled, Security Risks of Postman. This is not new. This is, I think, even, maybe even reasonably well known. But like, Postman thinks data. They have a cloud service. It is meant to make it easier for you to, you know, keep your different development computers synchronized with each other. But, also You're probably using Postman to, you know, make requests to a development environment. [00:59:15] +But it was titled, Security Risks of Postman. This is not new. This is, I think, even, maybe even reasonably well known. But like, Postman thinks data. They have a cloud service. It is meant to make it easier for you to, you know, keep your different development computers synchronized with each other. But, also You're probably using Postman to, you know, make requests to a development environment. [59:15] -And it might include things like authorization tokens, API keys, like all kinds of really sensitive information that You probably don't want other people to get access to. So that's just generally the topic of this blog post of like, Postman is a security threat. And yeah, can't argue with that. That's you, you should not be putting your API keys into something that feeds them into a third party. [00:59:38] +And it might include things like authorization tokens, API keys, like all kinds of really sensitive information that You probably don't want other people to get access to. So that's just generally the topic of this blog post of like, Postman is a security threat. And yeah, can't argue with that. That's you, you should not be putting your API keys into something that feeds them into a third party. [59:38] -So yeah, definitely something to consider. I have always been confused about Postman. Their development path. I loved it for a long time and then they got really complicated with request collections and cloud features and whatever. So this didn't seem like something that needed to be a venture backed business, which is what it is, I believe. [00:59:58] +So yeah, definitely something to consider. I have always been confused about Postman. Their development path. I loved it for a long time and then they got really complicated with request collections and cloud features and whatever. So this didn't seem like something that needed to be a venture backed business, which is what it is, I believe. [59:58] **Mark Erikson:** And last item out of our lightning round, while it's not React related, Angular 18 is out. And of course, not being an Angular dev, I only have the vaguest clue of what's going on over there, but looking at the changelist, they're in the process of dropping something that they used called zone. [01:00:15] diff --git a/src/transcripts/tmir-2024-06.md b/src/transcripts/tmir-2024-06.md index f21dbd1..54a471c 100644 --- a/src/transcripts/tmir-2024-06.md +++ b/src/transcripts/tmir-2024-06.md @@ -78,583 +78,583 @@ iframe { - [[59:11](#why-dont-we-do-acid-tests-anymore)] [Why don’t we have things like the Acid3 test anymore?](https://twitter.com/vcarl_/status/1805627502036983995) - [[01:03:09](htmx-simplicity-in-an-age-of-complicated-solutions)] [htmx: Simplicity in an Age of Complicated Solutions](https://www.erikheemskerk.nl/htmx-simplicity/) -[00:00:00] **Carl Vitullo:** Hello, thanks for joining us. This is June's edition of This Month in React, where we recap and digest the recent developments in the ever evolving React and web ecosystem. We're coming to you live from Reactiflux, the place for professional React developers. +[00:00] **Carl Vitullo:** Hello, thanks for joining us. This is June's edition of This Month in React, where we recap and digest the recent developments in the ever evolving React and web ecosystem. We're coming to you live from Reactiflux, the place for professional React developers. -[00:00:13] I'm Carl, I'm a staff product developer and freelance community manager here at Reactiflux, where I run community programs like these events and build tools that help keep the community going. +[00:13] I'm Carl, I'm a staff product developer and freelance community manager here at Reactiflux, where I run community programs like these events and build tools that help keep the community going. -[00:00:24] **Mark Erikson:** Hi, I'm Mark Erikson. My day job is working at Replay. io where we're building a time traveling debugger for JavaScript. And outside of that, I do Redux stuff. +[00:24] **Mark Erikson:** Hi, I'm Mark Erikson. My day job is working at Replay. io where we're building a time traveling debugger for JavaScript. And outside of that, I do Redux stuff. -[00:00:33] **Mo Khazali:** Hi everyone. I'm Mo. I head the mobile team at Theodo. I'm quite active in the React Native community and I organized the React Native London meetup and here and there dabble in open source with a couple of libraries in the React Native ecosystem. Very happy to be here. +[00:33] **Mo Khazali:** Hi everyone. I'm Mo. I head the mobile team at Theodo. I'm quite active in the React Native community and I organized the React Native London meetup and here and there dabble in open source with a couple of libraries in the React Native ecosystem. Very happy to be here. -[00:00:47] **Carl Vitullo:** Uh, I'm just going to start off with some quick hits of new releases and conferences., +[00:47] **Carl Vitullo:** Uh, I'm just going to start off with some quick hits of new releases and conferences., ## Layoffs updates -[00:00:51] **Carl Vitullo:** Starting off immediately, because the market, the job market is so bad, I've been reading off stuff from layoffs.fyi. +[00:51] **Carl Vitullo:** Starting off immediately, because the market, the job market is so bad, I've been reading off stuff from layoffs.fyi. -[00:00:59] We're not quite at the end of June, it's a couple of days left at time of recording, but most of the way through June, we're at about 9. 2, 000 laid off from 40 companies, which is down, I mean compared to six months ago we're down substantially, but compared to two years ago we are up substantially, so it's still not great. I've seen some other broader metrics trickling out from other places, like I saw a link from ADP that I unfortunately don't have handy suggesting that the overall like, tech market is at about 80 percent of it was, I believe, compared to 2018. +[00:59] We're not quite at the end of June, it's a couple of days left at time of recording, but most of the way through June, we're at about 9. 2, 000 laid off from 40 companies, which is down, I mean compared to six months ago we're down substantially, but compared to two years ago we are up substantially, so it's still not great. I've seen some other broader metrics trickling out from other places, like I saw a link from ADP that I unfortunately don't have handy suggesting that the overall like, tech market is at about 80 percent of it was, I believe, compared to 2018. ### [The rise—and fall—of the software developer](https://www.adpri.org/the-rise-and-fall-of-the-software-developer/) -[00:01:35] **Carl Vitullo:** Yeah, I, I found that really interesting because between hearing headlines about like record hiring during the pandemic and record layoffs in the two years, after that, it was like, Where do we end up? So that's the first data point I've seen, uh, addressing that question of, like, what's the net gain loss, and it suggests net loss of, like, 20%, which seems massive, but yeah, it's also, it's ADP, I don't know how much to trust that, I would assume that they got a very large sample size, but I'm not sure how they defined, like, tech, so, I don't really know how to interpret that in, through a lens of like software development. +[01:35] **Carl Vitullo:** Yeah, I, I found that really interesting because between hearing headlines about like record hiring during the pandemic and record layoffs in the two years, after that, it was like, Where do we end up? So that's the first data point I've seen, uh, addressing that question of, like, what's the net gain loss, and it suggests net loss of, like, 20%, which seems massive, but yeah, it's also, it's ADP, I don't know how much to trust that, I would assume that they got a very large sample size, but I'm not sure how they defined, like, tech, so, I don't really know how to interpret that in, through a lens of like software development. ## New Releases -[00:02:12] **Carl Vitullo:** But yeah, moving on to some new releases. +[02:12] **Carl Vitullo:** But yeah, moving on to some new releases. ### [Turborepo 2.0](https://turbo.build/blog/turbo-2-0) -[00:02:14] **Carl Vitullo:** There is TurboRepo 2. 0. That's probably especially relevant if you're doing stuff with Next. It looks like it's mostly like a fancier UI. They're doing like a pretty high effort in terminal UI. Like it's, you know, reactive and interactive. And you can now break down your logs on a per task basis rather than it just being, you know, a constant scroll back the way terminals usually are. +[02:14] **Carl Vitullo:** There is TurboRepo 2. 0. That's probably especially relevant if you're doing stuff with Next. It looks like it's mostly like a fancier UI. They're doing like a pretty high effort in terminal UI. Like it's, you know, reactive and interactive. And you can now break down your logs on a per task basis rather than it just being, you know, a constant scroll back the way terminals usually are. -[00:02:38] So that seems neat. Oh, they had some new docs, and it looks like they included some, like, fundamental information about Monorepos, which seems cool. +[02:38] So that seems neat. Oh, they had some new docs, and it looks like they included some, like, fundamental information about Monorepos, which seems cool. ## React Admin v5 -[00:02:47] **Carl Vitullo:** React Admin released version five. We actually had Francois Zaniotto, hope I'm not mispronouncing that, on as a guest a couple of weeks ago, and I think he's super cool. +[02:47] **Carl Vitullo:** React Admin released version five. We actually had Francois Zaniotto, hope I'm not mispronouncing that, on as a guest a couple of weeks ago, and I think he's super cool. -[00:02:57] I love his ethos for the company that he's building, which maintains React Admin and does agency work. So I just wanted to shout that out. +[02:57] I love his ethos for the company that he's building, which maintains React Admin and does agency work. So I just wanted to shout that out. ### [Rsbuild 0.7](https://rsbuild.dev/community/releases/v0-7) -[00:03:04] **Carl Vitullo:** RS build released version 0. 7, which they say is going to be the last release before 1. 0. Mark, you had some thoughts? +[03:04] **Carl Vitullo:** RS build released version 0. 7, which they say is going to be the last release before 1. 0. Mark, you had some thoughts? -[00:03:14] **Mark Erikson:** ByteDance, the folks behind TikTok, have a massive web tooling infrastructure team. They've actually rebuilt Webpack in Rust, and I know that, you know, rewrite it in Rust is its own meme at this point, but it seems like they've, they've truly built a Webpack compatible version in Rust called RSPack. On top of that, they have a higher level abstraction layer called RSBuild, which has an easier configuration format, a little bit like ESBuild does. if you actually look in their docs, they have a migration guide for switching from Create React app to RSBuild. I did that on a little side project a few months ago. +[03:14] **Mark Erikson:** ByteDance, the folks behind TikTok, have a massive web tooling infrastructure team. They've actually rebuilt Webpack in Rust, and I know that, you know, rewrite it in Rust is its own meme at this point, but it seems like they've, they've truly built a Webpack compatible version in Rust called RSPack. On top of that, they have a higher level abstraction layer called RSBuild, which has an easier configuration format, a little bit like ESBuild does. if you actually look in their docs, they have a migration guide for switching from Create React app to RSBuild. I did that on a little side project a few months ago. -[00:03:55] It was really easy to switch and the compile time dropped from like 30 seconds to less than a second. it feels like a, an actually viable competitor tool. +[03:55] It was really easy to switch and the compile time dropped from like 30 seconds to less than a second. it feels like a, an actually viable competitor tool. -[00:04:06] **Carl Vitullo:** Nice. Super cool. +[04:06] **Carl Vitullo:** Nice. Super cool. ### [Biome 1.8](https://x.com/biomejs/status/1797963672004043040) -[00:04:08] **Carl Vitullo:** We've also got biome 1. 8. Yeah. I have a soft spot for biome. I was an early supporter of Rome. I have been eager to see what comes out of that. +[04:08] **Carl Vitullo:** We've also got biome 1. 8. Yeah. I have a soft spot for biome. I was an early supporter of Rome. I have been eager to see what comes out of that. -[00:04:17] So yeah, it looks like they've got like new support for CSS. They have better support for language servers in workspaces, so if you've got like a big monorepo, it should work a little bit better. New reporters, migration, some more linting options, but yeah, Biome is like kind of an all in one. They try to do like formatting and linting and, yeah, it's a bundle play. +[04:17] So yeah, it looks like they've got like new support for CSS. They have better support for language servers in workspaces, so if you've got like a big monorepo, it should work a little bit better. New reporters, migration, some more linting options, but yeah, Biome is like kind of an all in one. They try to do like formatting and linting and, yeah, it's a bundle play. -[00:04:38] They're taking in a bunch of tools that, were separate and doing it all as one package. +[04:38] They're taking in a bunch of tools that, were separate and doing it all as one package. -[00:04:42] **Mark Erikson:** And written in Rust. +[04:42] **Mark Erikson:** And written in Rust. -[00:04:44] **Carl Vitullo:** Written in Rust. Sure. So super fast, blazing fast. Is blazing fast still cool? +[04:44] **Carl Vitullo:** Written in Rust. Sure. So super fast, blazing fast. Is blazing fast still cool? ### [Astro 4.10](https://astro.build/blog/astro-4100/) -[00:04:51] **Carl Vitullo:** There's also Astro 4. 10. I am hoping to play around with Astro this month. So maybe I'll be able to actually, you know, say some more intelligent things about what the experience is. +[04:51] **Carl Vitullo:** There's also Astro 4. 10. I am hoping to play around with Astro this month. So maybe I'll be able to actually, you know, say some more intelligent things about what the experience is. -[00:05:01] But I, I know lots of people who love the tool. It looks like some small improvements, nothing too major. +[05:01] But I, I know lots of people who love the tool. It looks like some small improvements, nothing too major. ### [Valibot 0.31](https://valibot.dev/blog/valibot-v0.31.0-is-finally-available/) -[00:05:06] **Carl Vitullo:** This is a new library to me, Valibot released 0.31. +[05:06] **Carl Vitullo:** This is a new library to me, Valibot released 0.31. -[00:05:10] It's a competitor to Zod, which does like schema validation or, you know, data validation through a schema with like type generation and all that kind of stuff. +[05:10] It's a competitor to Zod, which does like schema validation or, you know, data validation through a schema with like type generation and all that kind of stuff. -[00:05:19] This looks like a pretty solid competitor. They talk about, tree shaking and stuff, which I'm broadly skeptical of tree shaking as a general promise. It's very difficult to verify. +[05:19] This looks like a pretty solid competitor. They talk about, tree shaking and stuff, which I'm broadly skeptical of tree shaking as a general promise. It's very difficult to verify. -[00:05:30] **Mark Erikson:** My understanding is that Zod, when you import it, you're basically importing a giant object that has all the possible validation types built in, and I think Valobot's sales pitch is that it's a bunch of individual functions, and so you would only import the actual bits that you need. +[05:30] **Mark Erikson:** My understanding is that Zod, when you import it, you're basically importing a giant object that has all the possible validation types built in, and I think Valobot's sales pitch is that it's a bunch of individual functions, and so you would only import the actual bits that you need. -[00:05:47] And therefore, you're not getting a giant blob of runtime code. +[05:47] And therefore, you're not getting a giant blob of runtime code. -[00:05:51] **Carl Vitullo:** Yeah, I think they said it was like, could be up to like 95 percent smaller than Zod, while also like significantly simplifying the mental model of the schema and the type validation. +[05:51] **Carl Vitullo:** Yeah, I think they said it was like, could be up to like 95 percent smaller than Zod, while also like significantly simplifying the mental model of the schema and the type validation. -[00:06:02] If I can think about it less and have it affect the size of my code less, like both of those sound like things that I would want. +[06:02] If I can think about it less and have it affect the size of my code less, like both of those sound like things that I would want. -[00:06:10] **Mo Khazali:** I guess the thing is, it's a question of how much you want to really optimize your bundle size and at what stage you're at. If I'm recalling correctly, Zod minified and gzipped was about 60kb, something around that size. +[06:10] **Mo Khazali:** I guess the thing is, it's a question of how much you want to really optimize your bundle size and at what stage you're at. If I'm recalling correctly, Zod minified and gzipped was about 60kb, something around that size. -[00:06:22] So it is quite a chunky library to add into your dependencies. So, I guess if this actually delivers on that promise and it's closer to 90 percent less than that, which is I guess 6kb, it wouldn't be too bad of a shave to do, I'd say. But, remains to be seen if it's in practice going to be that good. +[06:22] So it is quite a chunky library to add into your dependencies. So, I guess if this actually delivers on that promise and it's closer to 90 percent less than that, which is I guess 6kb, it wouldn't be too bad of a shave to do, I'd say. But, remains to be seen if it's in practice going to be that good. -[00:06:40] **Carl Vitullo:** Yeah, I just pulled up Bundlephobia for Zod, and it's, yep, 61kb minified, 14kb minified and zipped. Which is Hefty. Yeah, that's enormous. That would give me a lot of pause. +[06:40] **Carl Vitullo:** Yeah, I just pulled up Bundlephobia for Zod, and it's, yep, 61kb minified, 14kb minified and zipped. Which is Hefty. Yeah, that's enormous. That would give me a lot of pause. ## Upcoming Conferences -[00:06:51] **Carl Vitullo:** Onto some conferences. Mo, I think you had a few. +[06:51] **Carl Vitullo:** Onto some conferences. Mo, I think you had a few. -[00:06:53] **Mo Khazali:** Yeah, I'll jump right in. +[06:53] **Mo Khazali:** Yeah, I'll jump right in. ### [React Nexus](https://reactnexus.com/) -[00:06:54] **Mo Khazali:** So, firstly, at the very beginning of July, 4th to 5th of July, React Nexus is happening in India. +[06:54] **Mo Khazali:** So, firstly, at the very beginning of July, 4th to 5th of July, React Nexus is happening in India. -[00:07:00] One of the great conferences that I attended last year, I really enjoyed. The crowd there was quite a, quite a large crowd as well. I think there's about 500, 600 people. So a massive conference, but people are so friendly and I got to meet a lot of lovely people. So would highly recommend if you're sort of in the South Asia region to, to definitely give it a shot, if you can make it to Bangalore. +[07:00] One of the great conferences that I attended last year, I really enjoyed. The crowd there was quite a, quite a large crowd as well. I think there's about 500, 600 people. So a massive conference, but people are so friendly and I got to meet a lot of lovely people. So would highly recommend if you're sort of in the South Asia region to, to definitely give it a shot, if you can make it to Bangalore. ### [Chain React](https://chainreactconf.com/) -[00:07:19] **Mo Khazali:** Mid July, we have Chain React and this is hosted by the folks at Infinite Red. Another one of those great conferences. I've not been to Chain React myself, but I'm, So involved in the React Native community that I get told every year, why are you not at Chain React? And you're missing out on one of the best conferences ever. +[07:19] **Mo Khazali:** Mid July, we have Chain React and this is hosted by the folks at Infinite Red. Another one of those great conferences. I've not been to Chain React myself, but I'm, So involved in the React Native community that I get told every year, why are you not at Chain React? And you're missing out on one of the best conferences ever. -[00:07:34] So the FOMO hits real hard every time around Chain React. The folks at Infinite Red are absolutely amazing, and they organized an incredible conference from all accounts that I've heard of. Everyone really loves Chain React, so if you are in the U. S. and you're in the React Native scene, you really do not want to be missing Chain React. If I was in the U. S., I would definitely be at Chain React this month, so I cannot give it more praise than that. +[07:34] So the FOMO hits real hard every time around Chain React. The folks at Infinite Red are absolutely amazing, and they organized an incredible conference from all accounts that I've heard of. Everyone really loves Chain React, so if you are in the U. S. and you're in the React Native scene, you really do not want to be missing Chain React. If I was in the U. S., I would definitely be at Chain React this month, so I cannot give it more praise than that. ### [GeekConf](https://thegeekconf.com/) -[00:07:58] **Mo Khazali:** And then, lastly, towards the end of July, we have GeekConf, so GeekConf is another sort of React Native conference with a little bit of a blend of web as well added into it. So that's happening on the 25th of July in Berlin. There's also a day that's dedicated to remote track, but 25th of July is the key date that's going to be happening in person, and I'll be speaking at that conference as well, and hopefully if any of you folks are there, please do come around and say hi, would be lovely to meet some of you in person. +[07:58] **Mo Khazali:** And then, lastly, towards the end of July, we have GeekConf, so GeekConf is another sort of React Native conference with a little bit of a blend of web as well added into it. So that's happening on the 25th of July in Berlin. There's also a day that's dedicated to remote track, but 25th of July is the key date that's going to be happening in person, and I'll be speaking at that conference as well, and hopefully if any of you folks are there, please do come around and say hi, would be lovely to meet some of you in person. -[00:08:24] **Carl Vitullo:** Heck yeah. +[08:24] **Carl Vitullo:** Heck yeah. ### [WeAreDevelopers World Congress](https://www.wearedevelopers.com/world-congress) -[00:08:25] **Carl Vitullo:** Leaving the list of conferences that us as hosts have personal experience with, there's a We Are Developers World Congress in Berlin, July 17th through 19th. +[08:25] **Carl Vitullo:** Leaving the list of conferences that us as hosts have personal experience with, there's a We Are Developers World Congress in Berlin, July 17th through 19th. ### [CityJS Singapore](https://singapore.cityjsconf.org/) -[00:08:35] **Carl Vitullo:** There's a CityJS in Singapore. That's going to be July 24th through 26th. +[08:35] **Carl Vitullo:** There's a CityJS in Singapore. That's going to be July 24th through 26th. ### [We Love JS Amsterdam](https://welovejs.vercel.app/) -[00:08:42] **Carl Vitullo:** We love JS in Amsterdam in the Netherlands, August 9th and 10th. +[08:42] **Carl Vitullo:** We love JS in Amsterdam in the Netherlands, August 9th and 10th. ### [React Rally](https://www.reactrally.com/) -[00:08:46] **Carl Vitullo:** And then the last conference that we're highlighting in the next two months is React Rally, which is going to be August 12th through 13th in Salt Lake City. Actually, I have been to that one in the past and it was pretty quality. +[08:46] **Carl Vitullo:** And then the last conference that we're highlighting in the next two months is React Rally, which is going to be August 12th through 13th in Salt Lake City. Actually, I have been to that one in the past and it was pretty quality. -[00:08:58] **Mark Erikson:** Yeah, I, I would also. Emphasize like React Rally has been fantastic. the organizers are great. +[08:58] **Mark Erikson:** Yeah, I, I would also. Emphasize like React Rally has been fantastic. the organizers are great. -[00:09:04] they do a really good job of giving it a good community feel. I was there last year and attendance was unfortunately just a little down because of trying to revive it after COVID. So if, if you can all make it to React Rally in August, please go. It's, it's totally worth, worth it. +[09:04] they do a really good job of giving it a good community feel. I was there last year and attendance was unfortunately just a little down because of trying to revive it after COVID. So if, if you can all make it to React Rally in August, please go. It's, it's totally worth, worth it. -[00:09:19] **Carl Vitullo:** Yeah, and it's the home neighborhood for a lot of really big people in the React and web ecosystem. +[09:19] **Carl Vitullo:** Yeah, and it's the home neighborhood for a lot of really big people in the React and web ecosystem. -[00:09:25] there are quite a number of people who live generally in Utah and in Salt Lake City. I think Kent C. Dodds is out there. +[09:25] there are quite a number of people who live generally in Utah and in Salt Lake City. I think Kent C. Dodds is out there. -[00:09:32] **Mark Erikson:** Kent, Tanner, Ryan. +[09:32] **Mark Erikson:** Kent, Tanner, Ryan. -[00:09:33] **Carl Vitullo:** Yeah, it's their home neighborhood. I assume they'll be at the conference. Yeah, anyway, cool. All right, moving on to some of our main content here. Mark, you want to start us off? +[09:33] **Carl Vitullo:** Yeah, it's their home neighborhood. I assume they'll be at the conference. Yeah, anyway, cool. All right, moving on to some of our main content here. Mark, you want to start us off? ## "SuspenseGate" -[00:09:43] **Mark Erikson:** Boy, oh boy, oh boy. Okay, welcome to SuspenseGate. So, for the for those of you who may not have been following all the drama on Twitter, we're here for you. +[09:43] **Mark Erikson:** Boy, oh boy, oh boy. Okay, welcome to SuspenseGate. So, for the for those of you who may not have been following all the drama on Twitter, we're here for you. ### ["This is the exact build we'll release as 19.0"](https://x.com/acdlite/status/1797668537349328923) -[00:09:55] **Mark Erikson:** About a month ish ago, a month and a half ish ago, Andrew Clark actually tweeted that, We've, we've updated to a new React 19 release candidate, and we think that this release candidate is going to be the final one, like, these are the actual bytes we plan to release as React 19, unless there's any other major changes. +[09:55] **Mark Erikson:** About a month ish ago, a month and a half ish ago, Andrew Clark actually tweeted that, We've, we've updated to a new React 19 release candidate, and we think that this release candidate is going to be the final one, like, these are the actual bytes we plan to release as React 19, unless there's any other major changes. -[00:10:17] Well, there is now cause for major changes. And in fact, React 19 has been delayed semi indefinitely. The React team is going to be doing some updates, and we don't know how long that's going to take. Why are they doing these updates? +[10:17] Well, there is now cause for major changes. And in fact, React 19 has been delayed semi indefinitely. The React team is going to be doing some updates, and we don't know how long that's going to take. Why are they doing these updates? -[00:10:32] In November of last year, Andrew Clark put up a PR that changed the behavior of the suspense component and how it manages loading children that are suspending to fetch data. +[10:32] In November of last year, Andrew Clark put up a PR that changed the behavior of the suspense component and how it manages loading children that are suspending to fetch data. -[00:10:44] Previously, if you had multiple children inside of suspense, And they all wanted to fetch some data. The suspense component would give each of these components a chance to start rendering and start the data fetching. And then actually pause and wait for all of the components to finish fetching their data. +[10:44] Previously, if you had multiple children inside of suspense, And they all wanted to fetch some data. The suspense component would give each of these components a chance to start rendering and start the data fetching. And then actually pause and wait for all of the components to finish fetching their data. -[00:11:04] Doing it all in parallel, kind of like a promise. all combination. And with this PR, the React team changed it. So that React really only gives the first child that suspends a chance to fetch, and then it waits for that child to finish loading its data, tries to re render, and then keeps going until the next child component tries to fetch data. +[11:04] Doing it all in parallel, kind of like a promise. all combination. And with this PR, the React team changed it. So that React really only gives the first child that suspends a chance to fetch, and then it waits for that child to finish loading its data, tries to re render, and then keeps going until the next child component tries to fetch data. -[00:11:28] Basically doing all of that in serial instead. Now, they, if you look at the PR, Andrew listed some potential reasons for this. One is that this actually made Facebook. com load a little faster. But also, it has to do with how the React team thinks. that people should be doing data fetching on the client side. +[11:28] Basically doing all of that in serial instead. Now, they, if you look at the PR, Andrew listed some potential reasons for this. One is that this actually made Facebook. com load a little faster. But also, it has to do with how the React team thinks. that people should be doing data fetching on the client side. -[00:11:51] And basically their argument is, you, you shouldn't be doing data fetching nested deep in the component tree. Instead, you should hoist it up to the top at like the route level or the page level instead. And so their argument is like, well, we don't think people should be doing this pattern much anyway. +[11:51] And basically their argument is, you, you shouldn't be doing data fetching nested deep in the component tree. Instead, you should hoist it up to the top at like the route level or the page level instead. And so their argument is like, well, we don't think people should be doing this pattern much anyway. -[00:12:11] So it's okay for us to change it. Now, this was done as part of React 19's development, and React 19 is a major version. So you can totally, you know, make changes. It's, it's legal under the terms of semantic versioning. And this was available in the React 19 Canaries, but as we all know, nobody actually tries out pre release versions, everyone waits until it's actually released, and then tries it, and then reports bugs. +[12:11] So it's okay for us to change it. Now, this was done as part of React 19's development, and React 19 is a major version. So you can totally, you know, make changes. It's, it's legal under the terms of semantic versioning. And this was available in the React 19 Canaries, but as we all know, nobody actually tries out pre release versions, everyone waits until it's actually released, and then tries it, and then reports bugs. -[00:12:38] So, this basically went unnoticed by the community for months. And about a month ago, someone mentioned it on Twitter, very briefly, and TK Dodo, the maintainer of React Query, Saw that comment and said, oh, that doesn't look great, and then didn't think about it. And then just a couple weeks later, there was another discussion thread, and suddenly TK Dodo and a bunch of other people began to realize, wait a minute, this is actually a very significant change in how suspense works. +[12:38] So, this basically went unnoticed by the community for months. And about a month ago, someone mentioned it on Twitter, very briefly, and TK Dodo, the maintainer of React Query, Saw that comment and said, oh, that doesn't look great, and then didn't think about it. And then just a couple weeks later, there was another discussion thread, and suddenly TK Dodo and a bunch of other people began to realize, wait a minute, this is actually a very significant change in how suspense works. -[00:13:08] And in particular, the React 3 Fiber developers, which is the React for 3D game engines, Realized we depend on suspense heavily because we need to be able to load a lot of different things async like game assets. So it's not just about data fetching, it's about lots of other async behavior. And they, and they started showing demos where, everything went from loading in parallel to loading as a waterfall in serial. +[13:08] And in particular, the React 3 Fiber developers, which is the React for 3D game engines, Realized we depend on suspense heavily because we need to be able to load a lot of different things async like game assets. So it's not just about data fetching, it's about lots of other async behavior. And they, and they started showing demos where, everything went from loading in parallel to loading as a waterfall in serial. -[00:13:38] And now example apps were way, way slower as a result. There was a massive firestorm on Twitter. A day or so later, Sophie Alpert from the React team said, We talked about this in a React team meeting today. We didn't realize how many people would be affected by this. But also, this was a very major change to React's internals. We did this, like, seven months ago. We've continued making lots more changes to the internal since then. We can't just roll back this change. We know what we would need to do in order to re enable the old behavior, but it's going to take another fairly significant set of internal changes to do that. +[13:38] And now example apps were way, way slower as a result. There was a massive firestorm on Twitter. A day or so later, Sophie Alpert from the React team said, We talked about this in a React team meeting today. We didn't realize how many people would be affected by this. But also, this was a very major change to React's internals. We did this, like, seven months ago. We've continued making lots more changes to the internal since then. We can't just roll back this change. We know what we would need to do in order to re enable the old behavior, but it's going to take another fairly significant set of internal changes to do that. -[00:14:19] So, we don't know when we're going to get around to it. Stepping back for a second, at that point in time, the community conclusions were, they already said React 19 is release candidate and ready to ship, and we don't, like, we know this would take major changes. Therefore, the conclusion was React 19 is about to ship with this behavior and we're all going to be stuck with it for the duration of React 19 as a major release. +[14:19] So, we don't know when we're going to get around to it. Stepping back for a second, at that point in time, the community conclusions were, they already said React 19 is release candidate and ready to ship, and we don't, like, we know this would take major changes. Therefore, the conclusion was React 19 is about to ship with this behavior and we're all going to be stuck with it for the duration of React 19 as a major release. -[00:14:45] **Carl Vitullo:** Yeah, I don't know, some of the like firestorm framing for this, it makes me a little bit like, I don't know, it's, okay, this was a, this was a confusing behavior, and something that they overlooked, but I am glad that this conversation did happen. +[14:45] **Carl Vitullo:** Yeah, I don't know, some of the like firestorm framing for this, it makes me a little bit like, I don't know, it's, okay, this was a, this was a confusing behavior, and something that they overlooked, but I am glad that this conversation did happen. -[00:14:59] And ultimately, the React team had this pointed out to them and did respond ultimately, I think, appropriately. So, like, it's, I don't know, how do you, How do you do open source development with millions of people, very few of whom actually try out pre releases? +[14:59] And ultimately, the React team had this pointed out to them and did respond ultimately, I think, appropriately. So, like, it's, I don't know, how do you, How do you do open source development with millions of people, very few of whom actually try out pre releases? -[00:15:15] **Mark Erikson:** Yeah, that actually even ties into the events this week of Jordan Harband and some of the package updates going on. Mo, you had a thought? +[15:15] **Mark Erikson:** Yeah, that actually even ties into the events this week of Jordan Harband and some of the package updates going on. Mo, you had a thought? -[00:15:24] **Mo Khazali:** Well, I was just thinking, well, firstly, ironically, I remember when we did the last, last month's episode, we were talking about how this might be like the quickest release cycle for React, or, well, you know, it'll be a quick transition into Release Candidate and then released, and then this came up. So I find that quite funny that sometimes these things will come up and we can't predict it. +[15:24] **Mo Khazali:** Well, I was just thinking, well, firstly, ironically, I remember when we did the last, last month's episode, we were talking about how this might be like the quickest release cycle for React, or, well, you know, it'll be a quick transition into Release Candidate and then released, and then this came up. So I find that quite funny that sometimes these things will come up and we can't predict it. -[00:15:41] But I think it's, you know, around the whole expecting people to test canaries and, and release candidates, I almost wonder if there's a different way that that needs to be done and if there's some level of automation that can be done to ensure that not just, you know, apps that are using RSCs and are, you know, the most up to date and exactly architected in a way where Meta wants them to be architected, are tested, but rather, there's a whole wide range of apps, ones that are built over a long period of time, there might be SPAs or other things like that, all of those get tested. I don't know if there's a nicer way to handle that, but I feel like just expecting people to test Canaries and test RCs will not catch stuff like this . +[15:41] But I think it's, you know, around the whole expecting people to test canaries and, and release candidates, I almost wonder if there's a different way that that needs to be done and if there's some level of automation that can be done to ensure that not just, you know, apps that are using RSCs and are, you know, the most up to date and exactly architected in a way where Meta wants them to be architected, are tested, but rather, there's a whole wide range of apps, ones that are built over a long period of time, there might be SPAs or other things like that, all of those get tested. I don't know if there's a nicer way to handle that, but I feel like just expecting people to test Canaries and test RCs will not catch stuff like this . -[00:16:20] **Mark Erikson:** That's the thing, I believe the Vue ecosystem has like a full fledged, I don't know the right term for it, they have a massive automation setup that tests all kinds of libraries across the ecosystem against the latest versions of like Vue and Vuex and Pinia and Vue Router and all these other tools. And similarly TypeScript, every time you push a PR to TypeScript, it does checks against almost all of DefinitelyTyped, or at least like a, the most widely used libraries on, on DefinitelyTyped and across the ecosystem, to try to catch a lot of these issues ahead of time. +[16:20] **Mark Erikson:** That's the thing, I believe the Vue ecosystem has like a full fledged, I don't know the right term for it, they have a massive automation setup that tests all kinds of libraries across the ecosystem against the latest versions of like Vue and Vuex and Pinia and Vue Router and all these other tools. And similarly TypeScript, every time you push a PR to TypeScript, it does checks against almost all of DefinitelyTyped, or at least like a, the most widely used libraries on, on DefinitelyTyped and across the ecosystem, to try to catch a lot of these issues ahead of time. -[00:16:56] But even then, there's a distinction between, do the library's tests fail, and how are people using that library. I think in this case, React Query had one test that did parallel fetching in a suspense, but it was like two components running locally. And so the effects of it would not have been meaningfully visible in terms of timing. +[16:56] But even then, there's a distinction between, do the library's tests fail, and how are people using that library. I think in this case, React Query had one test that did parallel fetching in a suspense, but it was like two components running locally. And so the effects of it would not have been meaningfully visible in terms of timing. -[00:17:18] **Carl Vitullo:** Right. Right. And ultimately this is a like timing and parallelism issue. And I don't know, I'm not sure that that's something that would work. have been proactively tested? Like, I'm not sure that it's something that An automated test suite could like reasonably easily evaluate. And I'm not sure that someone would have said, Oh, this is a large enough risk that we need to invest, you know, several days of engineering time in order to make sure that we have test coverage that will flag this if it breaks. +[17:18] **Carl Vitullo:** Right. Right. And ultimately this is a like timing and parallelism issue. And I don't know, I'm not sure that that's something that would work. have been proactively tested? Like, I'm not sure that it's something that An automated test suite could like reasonably easily evaluate. And I'm not sure that someone would have said, Oh, this is a large enough risk that we need to invest, you know, several days of engineering time in order to make sure that we have test coverage that will flag this if it breaks. -[00:17:48] So I don't know, I, to me, this is just like such a. Niche interaction between, you know, it's, it's such a corner case between the assumptions of the React core team and the, you know, evaluation work that they do against the Facebook project and the, you know, broader needs. So like, I don't know, I saw various negative takes, like, oh, I don't know, I saw lots of various negative takes, I'm not even gonna try and imagine, try and make up one. +[17:48] So I don't know, I, to me, this is just like such a. Niche interaction between, you know, it's, it's such a corner case between the assumptions of the React core team and the, you know, evaluation work that they do against the Facebook project and the, you know, broader needs. So like, I don't know, I saw various negative takes, like, oh, I don't know, I saw lots of various negative takes, I'm not even gonna try and imagine, try and make up one. -[00:18:16] **Mark Erikson:** the React Summit organizers for the last couple years Have done an event that they call the React ecosystem contributors summit, where they get like 25 to 30 maintainers and contributors to various tools and libraries together in a room. And they just give us a chance to vote on whatever topics we think would be worth discussing and then give us three hours to, talk about it in whatever way we think would be useful. +[18:16] **Mark Erikson:** the React Summit organizers for the last couple years Have done an event that they call the React ecosystem contributors summit, where they get like 25 to 30 maintainers and contributors to various tools and libraries together in a room. And they just give us a chance to vote on whatever topics we think would be worth discussing and then give us three hours to, talk about it in whatever way we think would be useful. -[00:18:44] So, I was there. There were two topics that were discussed. Two thirds of the room was discussing the technical aspects of the suspense change, two thirds of the group was discussing the technical behaviors. One third of us were discussing, how can we have better communication and interactions with the React team. +[18:44] So, I was there. There were two topics that were discussed. Two thirds of the room was discussing the technical aspects of the suspense change, two thirds of the group was discussing the technical behaviors. One third of us were discussing, how can we have better communication and interactions with the React team. ### [Joe Savona: Some thoughts on the suspense changes from 19 RC](https://x.com/en_JS/status/1803480672327311425) -[00:19:03] **Mark Erikson:** A couple of days later, Joe Savona from the React team put up a long Twitter thread, which is very, very good and very worth reading. And he said, number one, we're going to hold off on the React 19 release. We agree that this is a major behavior change. And frankly, we underestimated how many people would be affected by this pattern change. +[19:03] **Mark Erikson:** A couple of days later, Joe Savona from the React team put up a long Twitter thread, which is very, very good and very worth reading. And he said, number one, we're going to hold off on the React 19 release. We agree that this is a major behavior change. And frankly, we underestimated how many people would be affected by this pattern change. -[00:19:24] So they're going to step back and they're going to do something to do it. My, my, my assumption is trying to do the actual work to re implement some of the older behavior in the, in the reconciler internals. So that's good. Like the community complained, we communicated, they listened, they changed plans. +[19:24] So they're going to step back and they're going to do something to do it. My, my, my assumption is trying to do the actual work to re implement some of the older behavior in the, in the reconciler internals. So that's good. Like the community complained, we communicated, they listened, they changed plans. -[00:19:43] These are all actually very, very good things, but that ties into the communications question. Like a semi official way to communicate to the React team is by filing an issue, and the React issues are basically useless in that sense. One thing, they've been full of spam, both in terms of like really, really old issues and literal, literal spam issues, but also like the React team doesn't pay tons of attention to their issues list. +[19:43] These are all actually very, very good things, but that ties into the communications question. Like a semi official way to communicate to the React team is by filing an issue, and the React issues are basically useless in that sense. One thing, they've been full of spam, both in terms of like really, really old issues and literal, literal spam issues, but also like the React team doesn't pay tons of attention to their issues list. -[00:20:10] And so just filing an issue is not necessarily going to get like a quick response. There's Twitter, and a lot of the, you know, React team members are very active on Twitter, and that's great, but it's also not like a formal communications channel. So, what we concluded in our little set of people talking during this Contributors Summit, is that we really need to bring back this idea of a working group. +[20:10] And so just filing an issue is not necessarily going to get like a quick response. There's Twitter, and a lot of the, you know, React team members are very active on Twitter, and that's great, but it's also not like a formal communications channel. So, what we concluded in our little set of people talking during this Contributors Summit, is that we really need to bring back this idea of a working group. -[00:20:36] For React 18, the React team put together a React 18 working group where they specifically invited 50 to 75 people from across the ecosystem and continued adding to it over time. And there was a public GitHub repo where the React team and the invited contributors could write comments. Anybody could read it, so the discussions were public, but the idea was have a high signal ratio of meaningful discussions and questions about React 18, how things worked, how people could actually use some of the features and what the practical results would be. +[20:36] For React 18, the React team put together a React 18 working group where they specifically invited 50 to 75 people from across the ecosystem and continued adding to it over time. And there was a public GitHub repo where the React team and the invited contributors could write comments. Anybody could read it, so the discussions were public, but the idea was have a high signal ratio of meaningful discussions and questions about React 18, how things worked, how people could actually use some of the features and what the practical results would be. -[00:21:12] And I think that was a great success. Like, there was a lot of really good information in that repo. So our conclusion, as the little group of people talking amongst ourselves, was we should somehow have a permanent version of the working group. And actually, Tanner Linsley independently tweeted the same thing a few days later, as well. +[21:12] And I think that was a great success. Like, there was a lot of really good information in that repo. So our conclusion, as the little group of people talking amongst ourselves, was we should somehow have a permanent version of the working group. And actually, Tanner Linsley independently tweeted the same thing a few days later, as well. ### [Tanner Linsley: React needs a permanent working group](https://twitter.com/tannerlinsley/status/1802798385810018769) -[00:21:33] **Mark Erikson:** So along with that, Joe Savona also said in his tweet thread that we are actively looking at how can we get more feedback on pre release versions and how we can actually Have better communication with the community. So, I don't know exactly what will happen, but I'm hopeful that something like this working group model would be an option going forward. +[21:33] **Mark Erikson:** So along with that, Joe Savona also said in his tweet thread that we are actively looking at how can we get more feedback on pre release versions and how we can actually Have better communication with the community. So, I don't know exactly what will happen, but I'm hopeful that something like this working group model would be an option going forward. -[00:21:55] **Mo Khazali:** That's not, you know, too far away from how the React Native team does it, you know, for, for the past couple of years, I'd say, since, you know, Nicola Corti and Riccardo have come into the React Native team, they've been pushing this sort of release cycle where they'll have two, three different people from the community owning the release process for each version of React Native that comes out, and that Inherently add some level of community involvement to the releases. +[21:55] **Mo Khazali:** That's not, you know, too far away from how the React Native team does it, you know, for, for the past couple of years, I'd say, since, you know, Nicola Corti and Riccardo have come into the React Native team, they've been pushing this sort of release cycle where they'll have two, three different people from the community owning the release process for each version of React Native that comes out, and that Inherently add some level of community involvement to the releases. -[00:22:17] Obviously a working group with more and more and more people, you know, about 60, 70 people sounds like there's going to be even more exposure, which is great. But I think it's, it's something that could take a page out of the React native core teams book as well, because they've done it successfully there. +[22:17] Obviously a working group with more and more and more people, you know, about 60, 70 people sounds like there's going to be even more exposure, which is great. But I think it's, it's something that could take a page out of the React native core teams book as well, because they've done it successfully there. -[00:22:29] **Mark Erikson:** Overall, takeaways are, nobody tries pre release versions, we really need a formal communications channel between the React team and the community that they will pay attention to, and that we can collectively offer feedback that they will see. +[22:29] **Mark Erikson:** Overall, takeaways are, nobody tries pre release versions, we really need a formal communications channel between the React team and the community that they will pay attention to, and that we can collectively offer feedback that they will see. -[00:22:44] **Carl Vitullo:** Yeah, I, I, I chimed in on that because I don't know, Reactiflux, we're a thriving subset of the community. +[22:44] **Carl Vitullo:** Yeah, I, I, I chimed in on that because I don't know, Reactiflux, we're a thriving subset of the community. -[00:22:50] Maybe we could be a neutral space for that type of communication to happen where they don't need to own the moderation side of things that has not turned into a conversation. So, hey, maybe it will eventually, but yeah. Twitter is definitely, I'm not sure how effective it was ever as like a DevRel, you know, source of truth, but now, like, if you don't have an account, they don't even let you view tweets, so, I think it is past time, well past time for DevRel from the React team to go somewhere else. Like it is, it's been over a month since the last blog post. And other than that, I don't know where any communications from the React team out to the broader community come from. It's basically the blog and the Twitter and the blog is not active. So. Yeah, I hope that that working group concept turns into something a little more effective. +[22:50] Maybe we could be a neutral space for that type of communication to happen where they don't need to own the moderation side of things that has not turned into a conversation. So, hey, maybe it will eventually, but yeah. Twitter is definitely, I'm not sure how effective it was ever as like a DevRel, you know, source of truth, but now, like, if you don't have an account, they don't even let you view tweets, so, I think it is past time, well past time for DevRel from the React team to go somewhere else. Like it is, it's been over a month since the last blog post. And other than that, I don't know where any communications from the React team out to the broader community come from. It's basically the blog and the Twitter and the blog is not active. So. Yeah, I hope that that working group concept turns into something a little more effective. ### [TC39 proposal advances](https://x.com/robpalmer2/status/1801239842908438694) -[00:23:42] **Carl Vitullo:** But yeah, okay, cool. Next subject, TC39 proposals. A bunch just came out. I'm just going to kind of run through this on the high level. Yeah, promise. try, it looks like it's pretty much just like a quick wrapper on, , you know, new promise, and then you immediately resolve with a value. +[23:42] **Carl Vitullo:** But yeah, okay, cool. Next subject, TC39 proposals. A bunch just came out. I'm just going to kind of run through this on the high level. Yeah, promise. try, it looks like it's pretty much just like a quick wrapper on, , you know, new promise, and then you immediately resolve with a value. -[00:23:58] I've done that a number of times, so I guess there's a use case for this, but in the abstract I'm not really coming up with a great example of why you would want to just Take a synchronous value and make it a promise. +[23:58] I've done that a number of times, so I guess there's a use case for this, but in the abstract I'm not really coming up with a great example of why you would want to just Take a synchronous value and make it a promise. -[00:24:09] Deferred import evaluation seems useful. it's a way, it's a way of delaying execution of some parts of the import process when you're getting a module in. +[24:09] Deferred import evaluation seems useful. it's a way, it's a way of delaying execution of some parts of the import process when you're getting a module in. -[00:24:20] You can, you know, mark it as deferred so that it will not actually evaluate the module. It'll still like parse it and do some other interpretation steps that I'm blanking out at the moment. But it will not actually evaluate the code until later on. +[24:20] You can, you know, mark it as deferred so that it will not actually evaluate the module. It'll still like parse it and do some other interpretation steps that I'm blanking out at the moment. But it will not actually evaluate the code until later on. -[00:24:33] **Mark Erikson:** Basically this, this allows. Speeding up, like the initialization process by not running all the code in the application right away on startup, even though you know, you'll need some of that code later. +[24:33] **Mark Erikson:** Basically this, this allows. Speeding up, like the initialization process by not running all the code in the application right away on startup, even though you know, you'll need some of that code later. -[00:24:48] **Carl Vitullo:** Yeah. Okay. There we go. Another one was joint iteration. I thought this was pretty cool because I've needed this a number of times. It's a way of iterating over more than one. iterable at the same time. That's on stage 2. 7, which means it's still pretty far from getting shipped. +[24:48] **Carl Vitullo:** Yeah. Okay. There we go. Another one was joint iteration. I thought this was pretty cool because I've needed this a number of times. It's a way of iterating over more than one. iterable at the same time. That's on stage 2. 7, which means it's still pretty far from getting shipped. -[00:25:03] Error. isError seems very useful for, for types. I guess lots of new stuff is moving down the pipe, I don't know how many of these are super important to call out in great detail, but yeah, Mark, Mo, anything that caught your eye is particularly important? +[25:03] Error. isError seems very useful for, for types. I guess lots of new stuff is moving down the pipe, I don't know how many of these are super important to call out in great detail, but yeah, Mark, Mo, anything that caught your eye is particularly important? -[00:25:18] **Mo Khazali:** I, I really think Error.isError is the one that I'm most interested in. Obviously quite a while away before it gets to adoption. It's still on the process step two, it's stage two, but hopefully very soon. Well, I don't know how long this process is going to take for them. +[25:18] **Mo Khazali:** I, I really think Error.isError is the one that I'm most interested in. Obviously quite a while away before it gets to adoption. It's still on the process step two, it's stage two, but hopefully very soon. Well, I don't know how long this process is going to take for them. -[00:25:31] It was interesting. The TC39 meeting that they had was happening in Helsinki, uh, near Future Frontend, which was a conference that we gave a shout out to last month. +[25:31] It was interesting. The TC39 meeting that they had was happening in Helsinki, uh, near Future Frontend, which was a conference that we gave a shout out to last month. -[00:25:39] And I happened to be there. That was quite cool to see some of these folks gather together and how they chatted about some of these standards. Just being privy to those conversations was fascinating. So they have a, they have an incredible process that I've, I've not seen anything like before in any other sort of working group. +[25:39] And I happened to be there. That was quite cool to see some of these folks gather together and how they chatted about some of these standards. Just being privy to those conversations was fascinating. So they have a, they have an incredible process that I've, I've not seen anything like before in any other sort of working group. ### [Panel discussion at Future Frontend](https://youtu.be/29wHaG7eVPM?t=17422) -[00:25:53] **Mo Khazali:** So quite interesting, would recommend. There's a, if you go onto the Future Frontend streams, they actually have a big panel discussion for, from the second day of Future Frontend, and they actually discuss some of these proposals in detail, which is quite cool. +[25:53] **Mo Khazali:** So quite interesting, would recommend. There's a, if you go onto the Future Frontend streams, they actually have a big panel discussion for, from the second day of Future Frontend, and they actually discuss some of these proposals in detail, which is quite cool. ### [React partners with Codemod](https://codemod.com/blog/react-announcement) -[00:26:05] **Carl Vitullo:** All right, let's move on to the next one. +[26:05] **Carl Vitullo:** All right, let's move on to the next one. -[00:26:08] This is, I'm, CodeMod they announced they are partnering with the React team to help migrate to React 19. +[26:08] This is, I'm, CodeMod they announced they are partnering with the React team to help migrate to React 19. -[00:26:16] I know, I feel like the React team initially popularized the idea of CodeMods. So this is like not a surprise at all to me. I guess I wasn't really familiar, wasn't really aware of Codemod as like its own separate team. I see, you know, this is posted by the founder of CEO of Codemod, I guess. +[26:16] I know, I feel like the React team initially popularized the idea of CodeMods. So this is like not a surprise at all to me. I guess I wasn't really familiar, wasn't really aware of Codemod as like its own separate team. I see, you know, this is posted by the founder of CEO of Codemod, I guess. -[00:26:34] So that's kind of news to me. But yeah, so there's gonna be more Codemods, I guess, to help your codebase stay up to date with React 19. +[26:34] So that's kind of news to me. But yeah, so there's gonna be more Codemods, I guess, to help your codebase stay up to date with React 19. -[00:26:42] **Mark Erikson:** I am very familiar with code not code mods as a technical concept I had no idea there was an entire company devoted to building tools for code mods as like a corporate thing. +[26:42] **Mark Erikson:** I am very familiar with code not code mods as a technical concept I had no idea there was an entire company devoted to building tools for code mods as like a corporate thing. -[00:26:53] **Carl Vitullo:** Right, right as a technical thing Very familiar. I don't really understand what the business case for that would be. I don't know, I guess maybe consulting. Maybe it's a services business. +[26:53] **Carl Vitullo:** Right, right as a technical thing Very familiar. I don't really understand what the business case for that would be. I don't know, I guess maybe consulting. Maybe it's a services business. -[00:27:03] **Mo Khazali:** Apparently the way that they also make it more effective is that they apparently pair it with some AI. It might be a pivot, I don't know, but apparently they pair it with some AI and some nice CLI tools to make your code mods more effective. That's not an endorsement, I don't know if it works well, but that's seemingly their model. +[27:03] **Mo Khazali:** Apparently the way that they also make it more effective is that they apparently pair it with some AI. It might be a pivot, I don't know, but apparently they pair it with some AI and some nice CLI tools to make your code mods more effective. That's not an endorsement, I don't know if it works well, but that's seemingly their model. -[00:27:20] **Carl Vitullo:** Makes me a little skeptical, but yeah, I don't know. Codemods generally are great. +[27:20] **Carl Vitullo:** Makes me a little skeptical, but yeah, I don't know. Codemods generally are great. -[00:27:24] Any migrations and like major refactorings like that are definitely substantially helped by having automated tools that do, you know, even if it's like 60 to 80%, that's still pretty great, but yeah, cool. So there's an official partnership there. So I guess there's a business that is writing these codemods and the React team is in collaboration with them to make sure that they work well. +[27:24] Any migrations and like major refactorings like that are definitely substantially helped by having automated tools that do, you know, even if it's like 60 to 80%, that's still pretty great, but yeah, cool. So there's an official partnership there. So I guess there's a business that is writing these codemods and the React team is in collaboration with them to make sure that they work well. -[00:27:45] That's cool. That's great. Love that it's not just the core team trying to do everything on their own. Yeah, Mark, you want to take us on to React Compiler? +[27:45] That's cool. That's great. Love that it's not just the core team trying to do everything on their own. Yeah, Mark, you want to take us on to React Compiler? ## React Compiler -[00:27:52] **Mark Erikson:** Sure. So, React Compiler came out in beta at ReactConf, and so we're starting to get, you know, various examples of people trying it out hands on in the real world. +[27:52] **Mark Erikson:** Sure. So, React Compiler came out in beta at ReactConf, and so we're starting to get, you know, various examples of people trying it out hands on in the real world. ### [I tried React Compiler today, and guess what… 😉](https://www.developerway.com/posts/i-tried-react-compiler) -[00:28:03] **Mark Erikson:** There was a very good post from Nadia Makarevich, I believe is the name, who has written a number of excellent articles about React rendering in the past. And she tried it out on both some toy applications and some larger, real world codebases that she had. And she found that the results were mixed. She expected the compiler to optimize fairly large percentages of the components in those codebases. +[28:03] **Mark Erikson:** There was a very good post from Nadia Makarevich, I believe is the name, who has written a number of excellent articles about React rendering in the past. And she tried it out on both some toy applications and some larger, real world codebases that she had. And she found that the results were mixed. She expected the compiler to optimize fairly large percentages of the components in those codebases. -[00:28:29] And it only seemed to optimize like 20 or 30 percent. Now, , apparently the compiler tool does have a health check command that will tell you which components it would bail out of because those are breaking the rules of React. And I believe that the updated React lint rules can also give you an indication of which components might not get optimized. +[28:29] And it only seemed to optimize like 20 or 30 percent. Now, , apparently the compiler tool does have a health check command that will tell you which components it would bail out of because those are breaking the rules of React. And I believe that the updated React lint rules can also give you an indication of which components might not get optimized. -[00:28:51] But her takeaway, I believe her takeaway was You know what? Well, okay, like this, this seems promising, but if real world code bases aren't going to get, or are we going to have like 20 to 30 percent of the components improved, that's not quite what we were pitched. Now, I will note that, uh, Satya from the React, React compiler team, I believe commented here in Reactiflux that, hey, this article is great. +[28:51] But her takeaway, I believe her takeaway was You know what? Well, okay, like this, this seems promising, but if real world code bases aren't going to get, or are we going to have like 20 to 30 percent of the components improved, that's not quite what we were pitched. Now, I will note that, uh, Satya from the React, React compiler team, I believe commented here in Reactiflux that, hey, this article is great. -[00:29:14] Like, we got to See these example apps that she posted about, and we've been doing a bunch of additional changes to make sure we're handling those cases. So, I mean, just because it didn't work perfectly in her case, doesn't mean that the compiler's bust. It just means that it's still a work in progress. So having that real world feedback is actually very good. +[29:14] Like, we got to See these example apps that she posted about, and we've been doing a bunch of additional changes to make sure we're handling those cases. So, I mean, just because it didn't work perfectly in her case, doesn't mean that the compiler's bust. It just means that it's still a work in progress. So having that real world feedback is actually very good. ### [Understanding React Compiler](https://tonyalicea.dev/blog/understanding-react-compiler/) -[00:29:32] **Mark Erikson:** And then Tony Alicea, wrote an Excellent article that actually breaks down what the compiler does and what the output looks like and how it works in practice. So, very worth reading if you want to understand what the compiler actually does for you. +[29:32] **Mark Erikson:** And then Tony Alicea, wrote an Excellent article that actually breaks down what the compiler does and what the output looks like and how it works in practice. So, very worth reading if you want to understand what the compiler actually does for you. -[00:29:47] **Carl Vitullo:** Heck yeah. Cool. Yeah, I guess I'll move us on. +[29:47] **Carl Vitullo:** Heck yeah. Cool. Yeah, I guess I'll move us on. ### [Why don't we have a Laravel for JavaScript... Yet](https://wasp-lang.dev/blog/2024/05/29/why-we-dont-have-laravel-for-javascript-yet) -[00:29:50] **Carl Vitullo:** I wanted to call out this There's been a lot of, conversation that I've seen around, like, Laravel, specifically, specifically Laravel, Theo put out a video that then somebody wrote a blog post replying to of, " why don't we have a Laravel for JavaScript?" +[29:50] **Carl Vitullo:** I wanted to call out this There's been a lot of, conversation that I've seen around, like, Laravel, specifically, specifically Laravel, Theo put out a video that then somebody wrote a blog post replying to of, " why don't we have a Laravel for JavaScript?" -[00:30:06] And this actually crossed my radar from somebody who's not in the React world at all, they were talking about scoping a project, adding authentication to some app. And they said, "this developer estimated two weeks to add authentication to the product and I thought that was ridiculous. We have that out of the box in Laravel." +[30:06] And this actually crossed my radar from somebody who's not in the React world at all, they were talking about scoping a project, adding authentication to some app. And they said, "this developer estimated two weeks to add authentication to the product and I thought that was ridiculous. We have that out of the box in Laravel." -[00:30:24] I, I, I chimed in because it's like, you know, I've done auth a couple of times in my life, in my career and like, yeah, you know, okay, sure. A login form, that's not hard to do in a day, but when you get like a settings page and you know, you got to be able to change your email address and reset your password and do two factor authentication and, you know, social login, It's like, you know, I mean, two weeks doesn't sound that wrong to me. +[30:24] I, I, I chimed in because it's like, you know, I've done auth a couple of times in my life, in my career and like, yeah, you know, okay, sure. A login form, that's not hard to do in a day, but when you get like a settings page and you know, you got to be able to change your email address and reset your password and do two factor authentication and, you know, social login, It's like, you know, I mean, two weeks doesn't sound that wrong to me. -[00:30:48] And he replied like, All of this is, all of that, everything you just described comes out of the box in Laravel. And it's like, alright, you know what, okay, maybe we do complicate things a little bit. Maybe not overcomplicate, but I guess, it, it, we do have so much flexibility and modularity and ability to Write things from scratch in React and, you know, in the React ecosystem more broadly, maybe that we have, you know, as far as the pendulum swings, maybe we have stayed in maximum modularity mode for a little bit longer than might be optimal. +[30:48] And he replied like, All of this is, all of that, everything you just described comes out of the box in Laravel. And it's like, alright, you know what, okay, maybe we do complicate things a little bit. Maybe not overcomplicate, but I guess, it, it, we do have so much flexibility and modularity and ability to Write things from scratch in React and, you know, in the React ecosystem more broadly, maybe that we have, you know, as far as the pendulum swings, maybe we have stayed in maximum modularity mode for a little bit longer than might be optimal. -[00:31:21] I don't know. I, I'm curious what you guys think of that. where's the trade off? Where's the optimal line between modularity and out of the box functionality? I +[31:21] I don't know. I, I'm curious what you guys think of that. where's the trade off? Where's the optimal line between modularity and out of the box functionality? I -[00:31:29] **Mark Erikson:** mean, I think a lot of it also is the, you know, the whole back end, front end split. I mean, Laravel, you know, PHP, Rails, Ruby, they are back end languages, and the use case is You know, like, you know, the back end is doing basically all the work for you, and then, you know, there, there might be some additional stuff on the front end. +[31:29] **Mark Erikson:** mean, I think a lot of it also is the, you know, the whole back end, front end split. I mean, Laravel, you know, PHP, Rails, Ruby, they are back end languages, and the use case is You know, like, you know, the back end is doing basically all the work for you, and then, you know, there, there might be some additional stuff on the front end. -[00:31:53] And so I think the frameworks there, they've, they've been around longer, and also they evolved to have, we, we need to have everything the back end needs to do all the work. Whereas, JS has always had the front end, back end split, and it's not that we couldn't build something that was, you know, absolutely out of the box like that. +[31:53] And so I think the frameworks there, they've, they've been around longer, and also they evolved to have, we, we need to have everything the back end needs to do all the work. Whereas, JS has always had the front end, back end split, and it's not that we couldn't build something that was, you know, absolutely out of the box like that. -[00:32:13] I mean, there are, you know, some examples of that in the JS ecosystem, but I think it's typically been much more of a, like, I just need a basic HTTP server like Express. to serve up my client side code and then go from there. So, I think the modularity is a big aspect, but then also the differences in, like, the ecosystem historically as well. +[32:13] I mean, there are, you know, some examples of that in the JS ecosystem, but I think it's typically been much more of a, like, I just need a basic HTTP server like Express. to serve up my client side code and then go from there. So, I think the modularity is a big aspect, but then also the differences in, like, the ecosystem historically as well. -[00:32:34] **Mo Khazali:** I do think, you know, I've spent a bit of time working in the Django world a little bit, and I can definitely see the appeal to having something like Laravel, where so much comes out of the box. Done for you. And that interconnectedness means that it is a lot smoother to do things like you mentioned, like settings on a profile to modify those things. +[32:34] **Mo Khazali:** I do think, you know, I've spent a bit of time working in the Django world a little bit, and I can definitely see the appeal to having something like Laravel, where so much comes out of the box. Done for you. And that interconnectedness means that it is a lot smoother to do things like you mentioned, like settings on a profile to modify those things. -[00:32:51] They're all like one centralized model in Django. And it's significantly easier to create those sort of CRUD operations for users on like a settings page. It doesn't take you weeks. It takes you a day. And I know a lot of people who've been developing a while, like they spent time in the PHP world or in the Python world with Laravel or Django, and then they, you know, started doing React in our company and they were all like, this sucks, really don't like doing this. +[32:51] They're all like one centralized model in Django. And it's significantly easier to create those sort of CRUD operations for users on like a settings page. It doesn't take you weeks. It takes you a day. And I know a lot of people who've been developing a while, like they spent time in the PHP world or in the Python world with Laravel or Django, and then they, you know, started doing React in our company and they were all like, this sucks, really don't like doing this. -[00:33:12] It was so easy with Django, but I guess it's the pendulum swings and we probably land on some sort of midpoint, you know, I wouldn't be surprised if people start building things on top of Next, which allows it to be a more full fledged opinionated server that also can render and template React code. +[33:12] It was so easy with Django, but I guess it's the pendulum swings and we probably land on some sort of midpoint, you know, I wouldn't be surprised if people start building things on top of Next, which allows it to be a more full fledged opinionated server that also can render and template React code. -[00:33:26] **Mark Erikson:** That's what Blitz was. Blitz started off as the whole suite of things to go with Next, and then they tried to fork Next, and then they gave up on that idea. +[33:26] **Mark Erikson:** That's what Blitz was. Blitz started off as the whole suite of things to go with Next, and then they tried to fork Next, and then they gave up on that idea. -[00:33:35] **Carl Vitullo:** Yeah, and I mean, I guess this is, over the last ten years, React has slowly, I feel like it's grown in scope of, like, where people want to use it. +[33:35] **Carl Vitullo:** Yeah, and I mean, I guess this is, over the last ten years, React has slowly, I feel like it's grown in scope of, like, where people want to use it. -[00:33:43] Like, when I first started it, There was a lot of, put it in, like, this spot, this little rectangle on the website, like, that's where React goes, and several years ago, that moved into, most people are using React to build their entire app, like it owns the entire client side, and now we're moving Up the chain into React owns more of the server side as well. +[33:43] Like, when I first started it, There was a lot of, put it in, like, this spot, this little rectangle on the website, like, that's where React goes, and several years ago, that moved into, most people are using React to build their entire app, like it owns the entire client side, and now we're moving Up the chain into React owns more of the server side as well. -[00:34:05] So maybe that's just kind of like the, this projects like Laravel already owned the data model in the server. And they had to come from there into owning more of the client side to provide a better experience there. And they certainly don't compete with React there in any meaningful way. Like nobody would, I don't think anyone would seriously suggest that projects like Laravel are able to provide. An exact, or a highly comparable, interactive client side experience. +[34:05] So maybe that's just kind of like the, this projects like Laravel already owned the data model in the server. And they had to come from there into owning more of the client side to provide a better experience there. And they certainly don't compete with React there in any meaningful way. Like nobody would, I don't think anyone would seriously suggest that projects like Laravel are able to provide. An exact, or a highly comparable, interactive client side experience. -[00:34:35] You know, as I'm saying that, nobody would argue that. I think DHH has seriously argued that. +[34:35] You know, as I'm saying that, nobody would argue that. I think DHH has seriously argued that. -[00:34:39] **Mo Khazali:** I was gonna say DHH hasn't argued that yet. +[34:39] **Mo Khazali:** I was gonna say DHH hasn't argued that yet. -[00:34:42] **Carl Vitullo:** So, okay, people do People do argue that, but let me add the caveat of offline capable. I don't think anyone would seriously argue they provide an offline capable client side experience comparable to React. +[34:42] **Carl Vitullo:** So, okay, people do People do argue that, but let me add the caveat of offline capable. I don't think anyone would seriously argue they provide an offline capable client side experience comparable to React. -[00:34:54] And so, yeah, I guess, you know, now with, as server components expand in utility and capabilities, like, yeah, maybe we will start seeing more of a Laravel. Or Ruby on Rails type of full ownership of the experience, which would make it more easy. Because that's really the problem here is React isn't even aware of the data model in most applications. +[34:54] And so, yeah, I guess, you know, now with, as server components expand in utility and capabilities, like, yeah, maybe we will start seeing more of a Laravel. Or Ruby on Rails type of full ownership of the experience, which would make it more easy. Because that's really the problem here is React isn't even aware of the data model in most applications. -[00:35:18] So that makes it very hard to do CRUD interactions, if you don't have the data, if you don't have direct access to the data. I just thought that was a really interesting framing for this. Like I have all, I've, I've lived in React for many, many years. And so then seeing people talk about how quickly you can do common tasks in a Laravel, it's like, Oh, Shit. Interesting. That's, that is a big difference. +[35:18] So that makes it very hard to do CRUD interactions, if you don't have the data, if you don't have direct access to the data. I just thought that was a really interesting framing for this. Like I have all, I've, I've lived in React for many, many years. And so then seeing people talk about how quickly you can do common tasks in a Laravel, it's like, Oh, Shit. Interesting. That's, that is a big difference. -[00:35:39] Cool. Let's move on to Vercel Ship, their conference roundup. Moe, do you want to take us on that? +[35:39] Cool. Let's move on to Vercel Ship, their conference roundup. Moe, do you want to take us on that? ### [Vercel Ship 2024](https://vercel.com/blog/vercel-ship-2024) -[00:35:45] **Mo Khazali:** Sure. just the general and quickly running through this, Vercel is obviously moving across and, and taking up more of the, more than just becoming a hosting platform, so. +[35:45] **Mo Khazali:** Sure. just the general and quickly running through this, Vercel is obviously moving across and, and taking up more of the, more than just becoming a hosting platform, so. -[00:35:54] There's pieces on how you can collaborate and people in different teams can collaborate and, you know, preview different sort of webpages. And we've seen some stuff like that and more focus on observability. So they've added things like metrics and feature flags. And so there was someone who actually commented on Twitter about how beautiful their toolbar was as well, which I thought was quite cool. But no, there's, there's like a lot of direction around like product collaboration and a push in that, in, in that direction. So that's quite interesting. +[35:54] There's pieces on how you can collaborate and people in different teams can collaborate and, you know, preview different sort of webpages. And we've seen some stuff like that and more focus on observability. So they've added things like metrics and feature flags. And so there was someone who actually commented on Twitter about how beautiful their toolbar was as well, which I thought was quite cool. But no, there's, there's like a lot of direction around like product collaboration and a push in that, in, in that direction. So that's quite interesting. -[00:36:18] Just on the observability piece, I actually found it quite interesting that hosting providers are going in that space. So Cloudflare a few months ago acquired Baseline, which is also an observability tool, and I think they're trying to integrate it into their workers slash Cloudflare pages space, which is a competitor to Vercel's, you know, hosting platform plus their, their serverless functions that they've got. +[36:18] Just on the observability piece, I actually found it quite interesting that hosting providers are going in that space. So Cloudflare a few months ago acquired Baseline, which is also an observability tool, and I think they're trying to integrate it into their workers slash Cloudflare pages space, which is a competitor to Vercel's, you know, hosting platform plus their, their serverless functions that they've got. -[00:36:37] So, or the edge functions that they've got. So I think it's interesting that a lot of them are moving. Past just hosting into that observability space as well. And I think there's going to be a pretty big competition in that space in the next couple of years. +[36:37] So, or the edge functions that they've got. So I think it's interesting that a lot of them are moving. Past just hosting into that observability space as well. And I think there's going to be a pretty big competition in that space in the next couple of years. -[00:36:48] **Carl Vitullo:** Okay. That makes sense. Yeah. I haven't yet played with this at all, but I think I've heard people discussing the Vercel, metrics and feature flagging and that, yeah, I think that the, tacking those onto the, to a hosting provider does make a lot of sense to me because I feel like you get, you start getting a lot more things for free if those are all bundled together into one thing, like, I don't know, just having used LaunchDarkly and other feature flagging tools like that. +[36:48] **Carl Vitullo:** Okay. That makes sense. Yeah. I haven't yet played with this at all, but I think I've heard people discussing the Vercel, metrics and feature flagging and that, yeah, I think that the, tacking those onto the, to a hosting provider does make a lot of sense to me because I feel like you get, you start getting a lot more things for free if those are all bundled together into one thing, like, I don't know, just having used LaunchDarkly and other feature flagging tools like that. -[00:37:14] It feels like if they knew when a release was happening, if those feature flagging tools knew when a release was happening, I can imagine various optimizations or improvements to the, like, developer experience, the experience of putting out a new release that could be enabled by that. So yeah, that's something I'm paying attention to. +[37:14] It feels like if they knew when a release was happening, if those feature flagging tools knew when a release was happening, I can imagine various optimizations or improvements to the, like, developer experience, the experience of putting out a new release that could be enabled by that. So yeah, that's something I'm paying attention to. -[00:37:34] We'll see how that goes. +[37:34] We'll see how that goes. ### [TS 5.5](https://devblogs.microsoft.com/typescript/announcing-typescript-5-5/) -[00:37:35] **Mark Erikson:** All right, next up, TypeScript 5. 5 is out. And the, the single biggest thing that is interesting about this release is what they're calling inferred Type predicates. So as a little bit of background, one of the nifty things about TypeScript is you can write code that does runtime checks, and TypeScript uses that to narrow down TypeScript type of a particular variable is. +[37:35] **Mark Erikson:** All right, next up, TypeScript 5. 5 is out. And the, the single biggest thing that is interesting about this release is what they're calling inferred Type predicates. So as a little bit of background, one of the nifty things about TypeScript is you can write code that does runtime checks, and TypeScript uses that to narrow down TypeScript type of a particular variable is. -[00:38:00] And part of that is not just having like an if statement, but actually having separate functions that, for example, accept any value, and then they do some runtime checks and you tell TypeScript, if this function returns true, then the actual TS type of the value must be some more specific type. And so you can use that to tie together runtime checks and type and compile time behavior. +[38:00] And part of that is not just having like an if statement, but actually having separate functions that, for example, accept any value, and then they do some runtime checks and you tell TypeScript, if this function returns true, then the actual TS type of the value must be some more specific type. And so you can use that to tie together runtime checks and type and compile time behavior. -[00:38:27] But the issue was that things like filter callbacks for arrays, which return a boolean, didn't do any of that narrowing. And so you might have, like, an array that could be, like, item or null, and you could do a check. In the filter callback and say, if thing is not null, you know, return true, which ought to tell you that by the time we're done, we only have actual items and no nulls. +[38:27] But the issue was that things like filter callbacks for arrays, which return a boolean, didn't do any of that narrowing. And so you might have, like, an array that could be, like, item or null, and you could do a check. In the filter callback and say, if thing is not null, you know, return true, which ought to tell you that by the time we're done, we only have actual items and no nulls. -[00:38:53] But TypeScript wouldn't automatically narrow down the TS types based on callback functions like that. So with TypeScript 5. 5, they've improved the type inference. So that if you have a function that accepts some value and does some checks and returns a boolean, TypeScript will automatically try to narrow down the TS types of the output to be stricter. +[38:53] But TypeScript wouldn't automatically narrow down the TS types based on callback functions like that. So with TypeScript 5. 5, they've improved the type inference. So that if you have a function that accepts some value and does some checks and returns a boolean, TypeScript will automatically try to narrow down the TS types of the output to be stricter. -[00:39:18] And so, this is going to be a nice little quality of life improvement for a lot of different TypeScript use cases. One other interesting thing that I saw in there, is that apparently they're doing some syntax checking on regular expressions. Mostly just catching things like, you know, like you have too many parentheses in there. +[39:18] And so, this is going to be a nice little quality of life improvement for a lot of different TypeScript use cases. One other interesting thing that I saw in there, is that apparently they're doing some syntax checking on regular expressions. Mostly just catching things like, you know, like you have too many parentheses in there. -[00:39:36] But that one's actually pretty cool too. +[39:36] But that one's actually pretty cool too. -[00:39:38] **Carl Vitullo:** Yeah, definitely super cool. I, on my list of things that I, that would make me excited, like typescript checking regexes was not on there, so I, Very unexpected for them to even start moving in that direction. But like, heck yeah, please help me make my regexes a little more robust. +[39:38] **Carl Vitullo:** Yeah, definitely super cool. I, on my list of things that I, that would make me excited, like typescript checking regexes was not on there, so I, Very unexpected for them to even start moving in that direction. But like, heck yeah, please help me make my regexes a little more robust. -[00:39:54] **Mark Erikson:** One other thing towards the bottom that's under the hood. So they've done some changes on their internal variable definitions. So that they get more optimized by the JavaScript runtime, basically making sure that the same fields always exist. And you don't like occasionally add an extra field to the object dynamically. +[39:54] **Mark Erikson:** One other thing towards the bottom that's under the hood. So they've done some changes on their internal variable definitions. So that they get more optimized by the JavaScript runtime, basically making sure that the same fields always exist. And you don't like occasionally add an extra field to the object dynamically. -[00:40:15] And so because of that, the runtimes are able to optimize the behavior. And they found that it actually improved compile times by like 5 to 10 percent just by making the fields more consistent. +[40:15] And so because of that, the runtimes are able to optimize the behavior. And they found that it actually improved compile times by like 5 to 10 percent just by making the fields more consistent. ### [TypeScript 5.5 is a BANGER](https://www.youtube.com/watch?v=sciBO_IaxTw) -[00:40:26] **Carl Vitullo:** Yeah, I also want to share, Matt Pocock did a really great, just like quick 10 minute video breaking down what's new in TypeScript 5. +[40:26] **Carl Vitullo:** Yeah, I also want to share, Matt Pocock did a really great, just like quick 10 minute video breaking down what's new in TypeScript 5. -[00:40:35] 5. So definitely worth, he's just such a great TypeScript expert. Just wanted to call that out. Great resource. +[40:35] 5. So definitely worth, he's just such a great TypeScript expert. Just wanted to call that out. Great resource. ### [Mind The Gap talk](https://www.youtube.com/watch?v=1g5ruM-16_Y&t=7595s) -[00:40:41] **Carl Vitullo:** Cool. I wanted to shout out a conference talk by Ryan Florence that came out of Big Sky DevCon. I saw quite a number of people referring to it as like the best talk I've seen in years. I don't know if I would go that far personally. It's a great, it is a great talk. +[40:41] **Carl Vitullo:** Cool. I wanted to shout out a conference talk by Ryan Florence that came out of Big Sky DevCon. I saw quite a number of people referring to it as like the best talk I've seen in years. I don't know if I would go that far personally. It's a great, it is a great talk. -[00:40:57] It's, it's kind of just, I think I would describe it as like an oral history of the Problem space that React Server Components is trying to address. It just sort of talks about like the difference between, you know, the server and the client and the network being in the middle and plots out a couple of different tools and where they live in that, You know, taxonomy. +[40:57] It's, it's kind of just, I think I would describe it as like an oral history of the Problem space that React Server Components is trying to address. It just sort of talks about like the difference between, you know, the server and the client and the network being in the middle and plots out a couple of different tools and where they live in that, You know, taxonomy. -[00:41:19] Definitely worth checking out. I mean, Ryan Florence has been around for so, so long. So hearing him just do kind of a dump of history of a problem, I thought was really interesting. It was definitely worth listening to. +[41:19] Definitely worth checking out. I mean, Ryan Florence has been around for so, so long. So hearing him just do kind of a dump of history of a problem, I thought was really interesting. It was definitely worth listening to. -[00:41:32] **Mo Khazali:** I'll jump in with some React Native stuff quickly. +[41:32] **Mo Khazali:** I'll jump in with some React Native stuff quickly. ### [Lorenzo Sciandra exiting React Native](https://x.com/Kelset/status/1800158749811966280) -[00:41:36] **Mo Khazali:** So first, and I'd say most significant news in this space is unfortunately that Lorenzo Sciandra from the Microsoft team is leaving the React Native world and also leaving Microsoft, which is, I would say personally, a pretty big blow to this, to this community. +[41:36] **Mo Khazali:** So first, and I'd say most significant news in this space is unfortunately that Lorenzo Sciandra from the Microsoft team is leaving the React Native world and also leaving Microsoft, which is, I would say personally, a pretty big blow to this, to this community. -[00:41:51] He's been such an instrumental part of. Getting more and more community involvement inside of React Native. He's been doing React Native for more than six years and, you know, being based in the UK. I've known him personally for a couple of years now and such a lovely guy. And I think he's moving on to focus something around making sure that the tech space is A little bit healthier and a little bit more humane, as he likes to put it. +[41:51] He's been such an instrumental part of. Getting more and more community involvement inside of React Native. He's been doing React Native for more than six years and, you know, being based in the UK. I've known him personally for a couple of years now and such a lovely guy. And I think he's moving on to focus something around making sure that the tech space is A little bit healthier and a little bit more humane, as he likes to put it. ### [debug:mind by Lorenzo 'kelset' Sciandra](https://www.youtube.com/playlist?list=PLiD6R_aXkpLiMfS2YrhSgtSj09JJCaP2y) -[00:42:13] **Mo Khazali:** And he's been focusing on mental health struggles within the tech ecosystem and within, within a career of tech. So you should definitely check out his podcast called Debug Mind. But really just want to, from the bottom of my heart, say a big thank you to Lorenzo for everything that he's done over the last six plus years. +[42:13] **Mo Khazali:** And he's been focusing on mental health struggles within the tech ecosystem and within, within a career of tech. So you should definitely check out his podcast called Debug Mind. But really just want to, from the bottom of my heart, say a big thank you to Lorenzo for everything that he's done over the last six plus years. -[00:42:27] An absolute shame that he's leaving us, but I am very excited for everything that he's going to be doing afterwards. +[42:27] An absolute shame that he's leaving us, but I am very excited for everything that he's going to be doing afterwards. -[00:42:33] **Carl Vitullo:** Yeah, I have repeatedly come across his name when I've looked for React Native resources. He's done so many great lists of like, I can't even remember the various types of lists he's done, but just like major projects in the React Native space and educational resources on React Native. +[42:33] **Carl Vitullo:** Yeah, I have repeatedly come across his name when I've looked for React Native resources. He's done so many great lists of like, I can't even remember the various types of lists he's done, but just like major projects in the React Native space and educational resources on React Native. -[00:42:51] Yeah, definitely a big blow to have him exit the ecosystem. +[42:51] Yeah, definitely a big blow to have him exit the ecosystem. -[00:42:55] **Mo Khazali:** And, you know, more than that, you know, I think Lorenzo has been sort of the person who's been trying to bring the meta team closer and closer to the community. So, you know, Lorenzo, for the first time that I went to Meta's offices, Lorenzo invited me and, Organize that with a lot of the Meta folks to, to bring me over and, you know, for me to be able to chat and bring some of my concerns over to some of the folks at Meta and, you know, that became more of a recurring thing, all thanks to Lorenzo. +[42:55] **Mo Khazali:** And, you know, more than that, you know, I think Lorenzo has been sort of the person who's been trying to bring the meta team closer and closer to the community. So, you know, Lorenzo, for the first time that I went to Meta's offices, Lorenzo invited me and, Organize that with a lot of the Meta folks to, to bring me over and, you know, for me to be able to chat and bring some of my concerns over to some of the folks at Meta and, you know, that became more of a recurring thing, all thanks to Lorenzo. -[00:43:17] So he's been very instrumental and he's one of those sort of open source maintainer that maintainers that really cares about the community. So yeah, definitely a big blow. +[43:17] So he's been very instrumental and he's one of those sort of open source maintainer that maintainers that really cares about the community. So yeah, definitely a big blow. -[00:43:24] **Carl Vitullo:** Yeah, and earlier, Mark was talking about how the React Native team has been a little bit better than the React core team at interfacing, doing like working groups and things like that, and including the community and the development. +[43:24] **Carl Vitullo:** Yeah, and earlier, Mark was talking about how the React Native team has been a little bit better than the React core team at interfacing, doing like working groups and things like that, and including the community and the development. -[00:43:36] I wonder, I wonder what role he played in making that happen. +[43:36] I wonder, I wonder what role he played in making that happen. -[00:43:40] **Mo Khazali:** A major one, definitely. So, yeah, but. Best of luck to him. I'm sure he's got some amazing stuff lined up that he's going to be exploring next. And yeah. +[43:40] **Mo Khazali:** A major one, definitely. So, yeah, but. Best of luck to him. I'm sure he's got some amazing stuff lined up that he's going to be exploring next. And yeah. ### [Expo Atlas](https://expo.dev/blog/introducing-expo-atlas) -[00:43:47] **Mo Khazali:** Next up, one thing that I'm personally super excited about is Expo Atlas. So Expo Atlas is almost like a sort of bundle size visualizer, but taken to a little bit of a higher level. +[43:47] **Mo Khazali:** Next up, one thing that I'm personally super excited about is Expo Atlas. So Expo Atlas is almost like a sort of bundle size visualizer, but taken to a little bit of a higher level. -[00:43:57] And this is something that's been missing from the React Native ecosystem for a long time. So just a little bit of context. Bundle size has never been a concern for the React Native ecosystem, unfortunately. For, for, for better or for worse, because it's all sort of sent once in the bundle of an application, when you download it from the app store, people don't seem to really care that much about how much JavaScript you ship, so long as it's downloaded once it's done. +[43:57] And this is something that's been missing from the React Native ecosystem for a long time. So just a little bit of context. Bundle size has never been a concern for the React Native ecosystem, unfortunately. For, for, for better or for worse, because it's all sort of sent once in the bundle of an application, when you download it from the app store, people don't seem to really care that much about how much JavaScript you ship, so long as it's downloaded once it's done. -[00:44:19] And, you know, things like app startup time and actually, you know, having a lot of JavaScript and runtime don't affect React Native apps as much because of. Things like Hermes existing, where you have an engine that will have some sort of like bytecode representation and not have to load the entire JavaScript bundle into, into its runtime. +[44:19] And, you know, things like app startup time and actually, you know, having a lot of JavaScript and runtime don't affect React Native apps as much because of. Things like Hermes existing, where you have an engine that will have some sort of like bytecode representation and not have to load the entire JavaScript bundle into, into its runtime. -[00:44:35] So that's been a challenge when you're trying to take React Native and put it on the web and deal with this whole universal story. And so, you know, one of the things that I spent a lot of time around React Summit, speaking to Evan and Cedric from the Expo team about was, you know, how do we make sure that some of the third party libraries that have. +[44:35] So that's been a challenge when you're trying to take React Native and put it on the web and deal with this whole universal story. And so, you know, one of the things that I spent a lot of time around React Summit, speaking to Evan and Cedric from the Expo team about was, you know, how do we make sure that some of the third party libraries that have. -[00:44:52] I've been creating over a long period of time in the React Native ecosystem, actually have small bundle sizes when you try to take them to the web. And Expo Atlas is kind of the take that the Expo team has at doing that, which is, well, a lot of these libraries are all CJS based, so if we just introduce tree shaking into the bundler for React Native, It's not going to necessarily solve that problem by itself because most of the libraries won't be tree shakable. +[44:52] I've been creating over a long period of time in the React Native ecosystem, actually have small bundle sizes when you try to take them to the web. And Expo Atlas is kind of the take that the Expo team has at doing that, which is, well, a lot of these libraries are all CJS based, so if we just introduce tree shaking into the bundler for React Native, It's not going to necessarily solve that problem by itself because most of the libraries won't be tree shakable. -[00:45:13] So then what's the way to do it? Well, let's just visualize the problem, see what libraries are bundling in a lot of crap, and then see if we can slowly start to, as a community, shave some of that off and improve the performance for React Native web apps. This is a slow burn. It's not going to. Change over the next year, two years, maybe even three years, because there's a lot of legacy there. +[45:13] So then what's the way to do it? Well, let's just visualize the problem, see what libraries are bundling in a lot of crap, and then see if we can slowly start to, as a community, shave some of that off and improve the performance for React Native web apps. This is a slow burn. It's not going to. Change over the next year, two years, maybe even three years, because there's a lot of legacy there. -[00:45:31] But I think it's the right step. It's showing and visualizing the problem. So great tool that's out there. We'd definitely check it out. It shows you in a different way to how like the bundle visualizers that you might be used to, it actually shows you which import of a library you have in your code that is actually causing this library that might be bloating your bundle to be loaded. +[45:31] But I think it's the right step. It's showing and visualizing the problem. So great tool that's out there. We'd definitely check it out. It shows you in a different way to how like the bundle visualizers that you might be used to, it actually shows you which import of a library you have in your code that is actually causing this library that might be bloating your bundle to be loaded. -[00:45:50] So, you know, it might, it goes down the tree for transitive dependencies as well, which is quite cool. +[45:50] So, you know, it might, it goes down the tree for transitive dependencies as well, which is quite cool. -[00:45:54] **Mark Erikson:** Oh, that's wonderful. +[45:54] **Mark Erikson:** Oh, that's wonderful. -[00:45:56] **Mo Khazali:** Really great tool. +[45:56] **Mo Khazali:** Really great tool. -[00:45:57] **Carl Vitullo:** Yeah. I'm looking at this, the visualization of the blog post with the, you know, recursive squares showing the, the bundle size and, oh man, I remember almost a visually, almost identical tool, much less polished. +[45:57] **Carl Vitullo:** Yeah. I'm looking at this, the visualization of the blog post with the, you know, recursive squares showing the, the bundle size and, oh man, I remember almost a visually, almost identical tool, much less polished. -[00:46:10] Clearly this has someone who did a design pass, but there was a very similar tool that came out for Webpack in like, I don't know, 2014. +[46:10] Clearly this has someone who did a design pass, but there was a very similar tool that came out for Webpack in like, I don't know, 2014. -[00:46:19] **Mark Erikson:** There's been a number of them, Webpack Bundle Analyzer, Source Map Explorer, and a couple others. +[46:19] **Mark Erikson:** There's been a number of them, Webpack Bundle Analyzer, Source Map Explorer, and a couple others. -[00:46:25] **Carl Vitullo:** I, I like practically made a career out of like fixing performance issues just because I learned that tool and it actually enabled me to do things. +[46:25] **Carl Vitullo:** I, I like practically made a career out of like fixing performance issues just because I learned that tool and it actually enabled me to do things. -[00:46:33] So yeah, cool. Love to see it. Love to see it in the React Native context. Definitely looks valuable. +[46:33] So yeah, cool. Love to see it. Love to see it in the React Native context. Definitely looks valuable. -[00:46:38] **Mo Khazali:** Cool. So then a few sort of quick things. +[46:38] **Mo Khazali:** Cool. So then a few sort of quick things. ### [Expo adds Compiler support](https://github.com/expo/expo/pull/29168) -[00:46:40] **Mo Khazali:** Firstly, Expo's now added React compiler support. We saw this in the React Conf app. It was already using the React compiler. So just, you know, if you want to try it out experimentally, you can use the React compiler and see how it works for your app. +[46:40] **Mo Khazali:** Firstly, Expo's now added React compiler support. We saw this in the React Conf app. It was already using the React compiler. So just, you know, if you want to try it out experimentally, you can use the React compiler and see how it works for your app. ### [Starlink's React Native app](https://www.notjust.dev/blog/react-native-starlink) -[00:46:52] **Mo Khazali:** Next up is Starlink's React Native story. So this was interesting because it came out during AppJS, which happened last month. So the Starlink app is, is obviously built with React Native and it uses a lot of the expo libraries and things like React 3 Fiber. And it's really cool to see how some of these tools that we all have available to us are used in practice in some pretty serious production apps. +[46:52] **Mo Khazali:** Next up is Starlink's React Native story. So this was interesting because it came out during AppJS, which happened last month. So the Starlink app is, is obviously built with React Native and it uses a lot of the expo libraries and things like React 3 Fiber. And it's really cool to see how some of these tools that we all have available to us are used in practice in some pretty serious production apps. ### [Expo Router 3.5](https://twitter.com/Baconbrix/status/1788235769812795559) -[00:47:14] **Mo Khazali:** And then another quick fire one, minor changes to Expo Router in Expo Router version 3. 5. So, just some stuff like, you know, supporting the, the sort of the hash parameters. There's some stuff around native, native intents with deep linking that you'll need for having a more seamless handoff between different Devices, and also for allowing for certain links to, to come with more details to, to really augment the native functionality. +[47:14] **Mo Khazali:** And then another quick fire one, minor changes to Expo Router in Expo Router version 3. 5. So, just some stuff like, you know, supporting the, the sort of the hash parameters. There's some stuff around native, native intents with deep linking that you'll need for having a more seamless handoff between different Devices, and also for allowing for certain links to, to come with more details to, to really augment the native functionality. -[00:47:38] Another small thing that I think is quite important, that's not actually one of the top headlines with this, is that previously Expo router was using an, a non standard version of the request and response. And with this version, they've, they've standardized it a bit more, which is great because that should definitely be standardized. +[47:38] Another small thing that I think is quite important, that's not actually one of the top headlines with this, is that previously Expo router was using an, a non standard version of the request and response. And with this version, they've, they've standardized it a bit more, which is great because that should definitely be standardized. -[00:47:55] And then a few. Other minor things that I'm just going to run through. One is React Native Vision OS won the Git Nation Open Source Award, which was quite cool. It's a really cool project. Definitely give it a shot. And the folks from Callstack were there at a bunch of these different conferences with Apple Vision pros, trying to get people to try out React Native with Vision OS, which was quite a fun thing to try out. +[47:55] And then a few. Other minor things that I'm just going to run through. One is React Native Vision OS won the Git Nation Open Source Award, which was quite cool. It's a really cool project. Definitely give it a shot. And the folks from Callstack were there at a bunch of these different conferences with Apple Vision pros, trying to get people to try out React Native with Vision OS, which was quite a fun thing to try out. ### [SF Symbols beta support in Expo](https://docs.expo.dev/versions/latest/sdk/symbols/) -[00:48:16] **Mo Khazali:** Next up there is sf symbols. So sf symbols is sort of an icon pack that comes default with iOS. It oftentimes feels very Apple esque and having that inside of your app means that the icons are uniform with the OS and they look and feel like it's an iOS application and Expo's added beta support for it. +[48:16] **Mo Khazali:** Next up there is sf symbols. So sf symbols is sort of an icon pack that comes default with iOS. It oftentimes feels very Apple esque and having that inside of your app means that the icons are uniform with the OS and they look and feel like it's an iOS application and Expo's added beta support for it. -[00:48:36] This is an interesting one because React Native is obviously cross platform. The main targets that you'll have is an iOS and an Android app, so specifically supporting icon sets and an icon set that's available for iOS means that you may need to have some divergence in your code base if you want to really use those SF symbols, and you'll need to create or choose equivalent Android icons, so a little bit of an odd take, but I'll see you A lot of people seem to really want to use SF Symbols, even with React Native apps. +[48:36] This is an interesting one because React Native is obviously cross platform. The main targets that you'll have is an iOS and an Android app, so specifically supporting icon sets and an icon set that's available for iOS means that you may need to have some divergence in your code base if you want to really use those SF symbols, and you'll need to create or choose equivalent Android icons, so a little bit of an odd take, but I'll see you A lot of people seem to really want to use SF Symbols, even with React Native apps. -[00:49:03] So I'm sure that there was a level of feature requests and community involvement in trying to get that working. So that's definitely there. And then lastly, React Native Screens. This is actually a library that you will rarely ever have to use directly inside of your application code, but it's actually being used under the hood by React Navigation, which is by far the most common navigation library within React Native. +[49:03] So I'm sure that there was a level of feature requests and community involvement in trying to get that working. So that's definitely there. And then lastly, React Native Screens. This is actually a library that you will rarely ever have to use directly inside of your application code, but it's actually being used under the hood by React Navigation, which is by far the most common navigation library within React Native. -[00:49:25] And they've just added some extra minor improvements. One that's quite cool is transparent header support. Obviously on the native layer, there's functionalities on iOS and Android to be able to add a transparent heading that's got a little bit of a blur, and it comes up with some cool effects. You can do that in React Native with the, with the default navigation libraries. +[49:25] And they've just added some extra minor improvements. One that's quite cool is transparent header support. Obviously on the native layer, there's functionalities on iOS and Android to be able to add a transparent heading that's got a little bit of a blur, and it comes up with some cool effects. You can do that in React Native with the, with the default navigation libraries. -[00:49:43] So React Native Screens has been updated to support that on both iOS and Android now, which is just cool minor changes. And that's just about everything that's been happening in the React Native ecosystem in the last month. +[49:43] So React Native Screens has been updated to support that on both iOS and Android now, which is just cool minor changes. And that's just about everything that's been happening in the React Native ecosystem in the last month. -[00:49:53] **Carl Vitullo:** Nice. Excellent. Thank you for catching us up. +[49:53] **Carl Vitullo:** Nice. Excellent. Thank you for catching us up. -[00:49:56] Okay, shall we move on to our lightning round, see how many links we can get through there? +[49:56] Okay, shall we move on to our lightning round, see how many links we can get through there? -[00:50:00] **Mark Erikson:** Yes, because we're already an hour in, so moving right along. +[50:00] **Mark Erikson:** Yes, because we're already an hour in, so moving right along. ### [React Internals Explorer](https://jser.dev/2024-05-11-introducing-rie/) -[00:50:03] **Mark Erikson:** I saw a really, really cool tool called React Internals Explorer. It looks like you write some React code in a sandbox editor. And then it actually digs into the React fiber tree and shows you the structures of that. +[50:03] **Mark Erikson:** I saw a really, really cool tool called React Internals Explorer. It looks like you write some React code in a sandbox editor. And then it actually digs into the React fiber tree and shows you the structures of that. -[00:50:17] I haven't even had time to play with this, but just like glancing at it and seeing a screenshot. I'm actually really, really excited about this because I love digging inside React's internals. I know most other people don't need to, but this looks really helpful. And the author has already written a whole series of blog posts where they actually go straight into the React source code and explain how specific features of React are implemented under the hood. +[50:17] I haven't even had time to play with this, but just like glancing at it and seeing a screenshot. I'm actually really, really excited about this because I love digging inside React's internals. I know most other people don't need to, but this looks really helpful. And the author has already written a whole series of blog posts where they actually go straight into the React source code and explain how specific features of React are implemented under the hood. -[00:50:41] So if you want to know how React works inside, very worth reading. +[50:41] So if you want to know how React works inside, very worth reading. ### [What's new in JavaScript Frameworks for May 2024](https://developer.chrome.com/blog/frameworks-may-2024) -[00:50:44] **Carl Vitullo:** Yeah. I wanted to call out a blog post from the Chrome team where they just, they do a recap. What's new in JavaScript frameworks for May, 2024. So this is, I guess this is old. It's undated. So I guess it must have come out last month, but they are just, they just quickly round up a bunch of. +[50:44] **Carl Vitullo:** Yeah. I wanted to call out a blog post from the Chrome team where they just, they do a recap. What's new in JavaScript frameworks for May, 2024. So this is, I guess this is old. It's undated. So I guess it must have come out last month, but they are just, they just quickly round up a bunch of. -[00:51:02] they go through like Angular, Astro, React, Remix, Next, Vue, NUC, Solidsfelt, and a couple of others. Yeah. This is Adi Osmani is. One of the, you know, it looked like they did a video and wrote a blog post with it. I thought it was curious, or I thought it was interesting to see what the Chrome team thinks about JavaScript frameworks. +[51:02] they go through like Angular, Astro, React, Remix, Next, Vue, NUC, Solidsfelt, and a couple of others. Yeah. This is Adi Osmani is. One of the, you know, it looked like they did a video and wrote a blog post with it. I thought it was curious, or I thought it was interesting to see what the Chrome team thinks about JavaScript frameworks. ### [Memory leaks](https://lucumr.pocoo.org/2024/6/5/node-timeout/) -[00:51:24] **Mark Erikson:** There were a few different blog posts that touched on the theme of memory leaks. There was one that talked about memory leaks inside of Node, potentially if you're using the relatively new local async storage feature. the example there was with setTimeout. +[51:24] **Mark Erikson:** There were a few different blog posts that touched on the theme of memory leaks. There was one that talked about memory leaks inside of Node, potentially if you're using the relatively new local async storage feature. the example there was with setTimeout. -[00:51:42] Apparently, Node can be keeping track of async call stacks attached to the context storage, and so you could actually end up leaking a whole bunch of memory if you're using it in certain ways. +[51:42] Apparently, Node can be keeping track of async call stacks attached to the context storage, and so you could actually end up leaking a whole bunch of memory if you're using it in certain ways. ### [Sneaky Memory Leaks](https://schiener.io/2024-03-03/react-closures) -[00:51:53] **Mark Erikson:** Uh, similarly, there are also a couple of very good blog posts talking about potential ways you might end up with memory leaks in a React application. +[51:53] **Mark Erikson:** Uh, similarly, there are also a couple of very good blog posts talking about potential ways you might end up with memory leaks in a React application. -[00:52:00] In cases where you're using like use callback or use memo or with React query where you're writing functions that are doing data fetching or something like that, and they're closing over variables that are in scope and they might not even be getting used. But the closure keeps those variables alive longer than you would have expected. +[52:00] In cases where you're using like use callback or use memo or with React query where you're writing functions that are doing data fetching or something like that, and they're closing over variables that are in scope and they might not even be getting used. But the closure keeps those variables alive longer than you would have expected. ### [Data Fetching Patterns in Single Page Applications](https://martinfowler.com/articles/data-fetch-spa.html) -[00:52:21] **Mo Khazali:** Cool. So next up is an article that's actually on Martin Fowler's blog. So Martin Fowler being the big thought leader and evangelist of, of all things, application development, period. +[52:21] **Mo Khazali:** Cool. So next up is an article that's actually on Martin Fowler's blog. So Martin Fowler being the big thought leader and evangelist of, of all things, application development, period. -[00:52:33] **Mark Erikson:** Enterprise architecture patterns. +[52:33] **Mark Erikson:** Enterprise architecture patterns. -[00:52:35] **Mo Khazali:** You see, divisive at the best of times, Martin Fowler is, but there's, there's been more and more React articles popping on, and they're not actually written by Martin Fowler, but they're written by someone who works at, whose name is Juntao, or actually, I don't think he works at ThoughtWorks, but he's very close with Martin Fowler, so he writes on Martin Fowler's blogs. +[52:35] **Mo Khazali:** You see, divisive at the best of times, Martin Fowler is, but there's, there's been more and more React articles popping on, and they're not actually written by Martin Fowler, but they're written by someone who works at, whose name is Juntao, or actually, I don't think he works at ThoughtWorks, but he's very close with Martin Fowler, so he writes on Martin Fowler's blogs. -[00:52:53] And he's been doing some really cool work on writing articles that start from the basic principles and expand out and create more and more complex applications that explain a bunch of concepts. So his latest article is about data fetching patterns in single page applications, and it starts with basic React concepts, builds up around, you know, asynchronous states being handled on the client side, parallel data fetching, how do you handle fallbacks, and then things like pre fetching, and then kind of It takes you through this journey and tells you when you should use which one. +[52:53] And he's been doing some really cool work on writing articles that start from the basic principles and expand out and create more and more complex applications that explain a bunch of concepts. So his latest article is about data fetching patterns in single page applications, and it starts with basic React concepts, builds up around, you know, asynchronous states being handled on the client side, parallel data fetching, how do you handle fallbacks, and then things like pre fetching, and then kind of It takes you through this journey and tells you when you should use which one. -[00:53:21] Would recommend it. It's a very, very long read, probably one of the largest blog articles I've seen in a very long while, but it's definitely worthwhile if you want to get a more holistic viewpoint. And he's written a lot of articles like this. Another great one that he's written just to give a shout out is called modularizing React applications with established UI patterns. +[53:21] Would recommend it. It's a very, very long read, probably one of the largest blog articles I've seen in a very long while, but it's definitely worthwhile if you want to get a more holistic viewpoint. And he's written a lot of articles like this. Another great one that he's written just to give a shout out is called modularizing React applications with established UI patterns. -[00:53:38] And this is one that Mark is not going to be very happy about, but this one is one of those, which is like, how do you enterprise ify React code, but it's actually a very interesting article that has some thoughts about how you should architect React apps. And some of those patterns, not all of them, are actually very good to make it easier for you to do things like testing and so on and so forth. +[53:38] And this is one that Mark is not going to be very happy about, but this one is one of those, which is like, how do you enterprise ify React code, but it's actually a very interesting article that has some thoughts about how you should architect React apps. And some of those patterns, not all of them, are actually very good to make it easier for you to do things like testing and so on and so forth. -[00:53:55] **Carl Vitullo:** Cheers. Yeah. Oh man, I remember reading Martin Fowler's blog like 15 years ago when I was like starting my career. So just for it to still be relevant is like a little bit mind boggling to me. +[53:55] **Carl Vitullo:** Cheers. Yeah. Oh man, I remember reading Martin Fowler's blog like 15 years ago when I was like starting my career. So just for it to still be relevant is like a little bit mind boggling to me. -[00:54:07] **Mo Khazali:** The website still looks like it's from 15 years ago as well. +[54:07] **Mo Khazali:** The website still looks like it's from 15 years ago as well. -[00:54:10] **Carl Vitullo:** Yeah. It's unchanged from when I started reading it. +[54:10] **Carl Vitullo:** Yeah. It's unchanged from when I started reading it. -[00:54:13] Yeah. Not a single change that I can identify. +[54:13] Yeah. Not a single change that I can identify. -[00:54:16] Cool. Yeah. I wanted to bring up a blog from Snyk, a security. Firm, I don't know, security product service, 10 modern Node. js runtime features to start using in 2024. It's, I have always found it really tricky to stay on top of every level of development over time. +[54:16] Cool. Yeah. I wanted to bring up a blog from Snyk, a security. Firm, I don't know, security product service, 10 modern Node. js runtime features to start using in 2024. It's, I have always found it really tricky to stay on top of every level of development over time. -[00:54:35] So I appreciate a little roundup post like this that just sort of calls out a number of new features that I may not have caught the release of. It's sometimes it's hard to see, see the each individual release. So the 10 that they call out are a test runner. Native mocking, native test coverage, watch mode, core pack, the env loader, some import meta fields for the **dirname and **file fields, native timers and promises, permissions module and a policy module. +[54:35] So I appreciate a little roundup post like this that just sort of calls out a number of new features that I may not have caught the release of. It's sometimes it's hard to see, see the each individual release. So the 10 that they call out are a test runner. Native mocking, native test coverage, watch mode, core pack, the env loader, some import meta fields for the **dirname and **file fields, native timers and promises, permissions module and a policy module. -[00:55:08] Those last two are not super clear to me, but like the test runner and native mocking and test coverage. Super great to not have to pull in a third party tool for that. As well as, yeah, I mean, watch mode. The number of times I've installed NodeMon. If I can stop relying on a third party package for that, I'll be pretty happy. +[55:08] Those last two are not super clear to me, but like the test runner and native mocking and test coverage. Super great to not have to pull in a third party tool for that. As well as, yeah, I mean, watch mode. The number of times I've installed NodeMon. If I can stop relying on a third party package for that, I'll be pretty happy. -[00:55:26] I haven't checked that out yet, though. CorePack is actually, I feel like the name of it makes you compare it to Webpack, or it makes me compare it to Webpack, at least. But actually, it's, the main use for it is being able to specify a package manager at a specific version, which is so useful. Um, I appreciate that they have made it, I guess it's a, I guess it's a combination of being able to pin a specific version of your package manager, but it's also, I think, some underlying tools to make cross compatibility possible between package managers. +[55:26] I haven't checked that out yet, though. CorePack is actually, I feel like the name of it makes you compare it to Webpack, or it makes me compare it to Webpack, at least. But actually, it's, the main use for it is being able to specify a package manager at a specific version, which is so useful. Um, I appreciate that they have made it, I guess it's a, I guess it's a combination of being able to pin a specific version of your package manager, but it's also, I think, some underlying tools to make cross compatibility possible between package managers. -[00:55:59] **Mark Erikson:** The primary issue is that NPM has always come pre installed with Node. But if you want to use Yarn or PNPM, or, Bun, I guess, you have to first use NPM to install those tools globally. And that's kind of a one off per system thing. And then you have to remind everybody that they're supposed to be using this package manager, the project. +[55:59] **Mark Erikson:** The primary issue is that NPM has always come pre installed with Node. But if you want to use Yarn or PNPM, or, Bun, I guess, you have to first use NPM to install those tools globally. And that's kind of a one off per system thing. And then you have to remind everybody that they're supposed to be using this package manager, the project. -[00:56:22] And so I think the idea of CorePack is that if you specify in your package JSON, that, Hey, we're actually using Yarn 4. 1 or PMPM 9. 2. It will automatically do the work to make sure that the right package manager is available and being used in that project. +[56:22] And so I think the idea of CorePack is that if you specify in your package JSON, that, Hey, we're actually using Yarn 4. 1 or PMPM 9. 2. It will automatically do the work to make sure that the right package manager is available and being used in that project. -[00:56:40] **Carl Vitullo:** Right. It fills the gap where, like, PackageLock or Yarn. +[56:40] **Carl Vitullo:** Right. It fills the gap where, like, PackageLock or Yarn. -[00:56:44] Lock will let you pin your dependencies, left the, you know, the gap of what about the version, you know, for the package manager because the different versions interpret that lock file slightly differently sometimes. Or, you know, I've had a more recent version of Yarn blow away my Yarn or, you know, start adding things like a, a digest half to the, to the lock file. +[56:44] Lock will let you pin your dependencies, left the, you know, the gap of what about the version, you know, for the package manager because the different versions interpret that lock file slightly differently sometimes. Or, you know, I've had a more recent version of Yarn blow away my Yarn or, you know, start adding things like a, a digest half to the, to the lock file. -[00:57:06] So being able to pin a version, super great. Yeah. As well as like having a env loader, so we don't need to use env anymore. But yeah, so I appreciated this as a quick summary of a number of new built ins for Node. +[57:06] So being able to pin a version, super great. Yeah. As well as like having a env loader, so we don't need to use env anymore. But yeah, so I appreciated this as a quick summary of a number of new built ins for Node. -[00:57:18] +[57:18] ### [Migrating to the Next App Router With Zero Downtime](https://workos.com/blog/migrating-to-next-js-app-router-with-zero-downtime) -[00:57:19] **Mark Erikson:** There was a very good post on migrating to the next app router with zero downtime. One of the pain points with server components is that you have to have the entire application set up with server components as the outer layer of the application in order to use them at all. +[57:19] **Mark Erikson:** There was a very good post on migrating to the next app router with zero downtime. One of the pain points with server components is that you have to have the entire application set up with server components as the outer layer of the application in order to use them at all. -[00:57:36] There's no straightforward, simple, like migrate, just a little piece of my component tree. And while you can use the app router with everything still on the client, as a client component, it's still a key step in order to even be able to think about using server components with Next. And so, this article was a good example of how a team with an existing Next app that used the Pages router was able to mimic the routing setup in the app router and carefully, step by step, make sure that things worked the same both ways. +[57:36] There's no straightforward, simple, like migrate, just a little piece of my component tree. And while you can use the app router with everything still on the client, as a client component, it's still a key step in order to even be able to think about using server components with Next. And so, this article was a good example of how a team with an existing Next app that used the Pages router was able to mimic the routing setup in the app router and carefully, step by step, make sure that things worked the same both ways. -[00:58:05] Switch over and then be able to start using some server components piece within the existing structure. +[58:05] Switch over and then be able to start using some server components piece within the existing structure. ### [Deno Standard Library nearing 1.0](https://deno.com/blog/stabilize-std) -[00:58:12] **Carl Vitullo:** All right, Deno announces that the standard library is nearing 1. 0. That sounds great to me. The standard library is now a collection of 38 packages, they say. I appreciated this. Rather than doing it all in one big bang 1. +[58:12] **Carl Vitullo:** All right, Deno announces that the standard library is nearing 1. 0. That sounds great to me. The standard library is now a collection of 38 packages, they say. I appreciated this. Rather than doing it all in one big bang 1. -[00:58:26] 0 release for the standard library, they're actually going to repeat a process for bringing each of those 38 packages up to stable relief. So they're gonna do it through like a release candidate and then gather feedback with like a a one month timeline for each of those packages to gather feedback. +[58:26] 0 release for the standard library, they're actually going to repeat a process for bringing each of those 38 packages up to stable relief. So they're gonna do it through like a release candidate and then gather feedback with like a a one month timeline for each of those packages to gather feedback. -[00:58:45] So yeah, that's A lot of effort, a lot of energy being invested into creating a standard library and oh man, here's a standard library for a JS runtime. +[58:45] So yeah, that's A lot of effort, a lot of energy being invested into creating a standard library and oh man, here's a standard library for a JS runtime. -[00:58:55] **Mark Erikson:** I'm confused. Are we allowed to have that? +[58:55] **Mark Erikson:** I'm confused. Are we allowed to have that? -[00:58:57] **Carl Vitullo:** Right? It's, it, the classic criticism of JavaScript is the lack of a standard runtime. +[58:57] **Carl Vitullo:** Right? It's, it, the classic criticism of JavaScript is the lack of a standard runtime. -[00:59:02] So, oh my goodness, we have a standard runtime hitting stable. I feel like that's going to affect the ecosystem in some way, but we'll have to see what happens there. Cool. +[59:02] So, oh my goodness, we have a standard runtime hitting stable. I feel like that's going to affect the ecosystem in some way, but we'll have to see what happens there. Cool. ### [Why don't we do Acid tests anymore?](https://twitter.com/vcarl_/status/1805627502036983995) -[00:59:11] **Carl Vitullo:** I'm going to call this one out. This was, I put, I put up one of my tweets. I don't know. I think it's a good question. I'm going to do it. +[59:11] **Carl Vitullo:** I'm going to call this one out. This was, I put, I put up one of my tweets. I don't know. I think it's a good question. I'm going to do it. -[00:59:16] I proposed the question out, why did we stop making checks like the ACID3 test? Why isn't there an ACID3 test for, for example, progressive web apps? I remember the ACID test series of, projects was +[59:16] I proposed the question out, why did we stop making checks like the ACID3 test? Why isn't there an ACID3 test for, for example, progressive web apps? I remember the ACID test series of, projects was -[00:59:30] **Mark Erikson:** Browser rendering behaviors. +[59:30] **Mark Erikson:** Browser rendering behaviors. -[00:59:32] **Carl Vitullo:** Browser rendering behaviors. It was, is the browser you're viewing the web page in standards compliant? Here is something. It should look like this. And I remember checking that in, you know, 2008 or whatever, when I was a wee baby nerd. And, my browser didn't render it correctly, and then a couple years later it did. +[59:32] **Carl Vitullo:** Browser rendering behaviors. It was, is the browser you're viewing the web page in standards compliant? Here is something. It should look like this. And I remember checking that in, you know, 2008 or whatever, when I was a wee baby nerd. And, my browser didn't render it correctly, and then a couple years later it did. -[00:59:50] I was considering, like, what factors may have moved us away from things like that, and I feel like it used to be so hard to ship new things, new standards. That it took big coordinated pushes like that, or maybe the ecosystem was also just smaller and the number of players involved were, you know, it could fit in a room, but I feel like we've lost something a little bit in there. +[59:50] I was considering, like, what factors may have moved us away from things like that, and I feel like it used to be so hard to ship new things, new standards. That it took big coordinated pushes like that, or maybe the ecosystem was also just smaller and the number of players involved were, you know, it could fit in a room, but I feel like we've lost something a little bit in there. [01:00:12] Like the acid three test was CSS three was ratified as a standard. They put out an associated test for this rendering behavior so that. Users could check if their browser was working in compliance with the standards. And I guess I, I put up the comparison to progressive web apps because like, They are not fully rolled out, like Chrome put out, the Chrome team put out a lot of support for progressive web apps, very much as a attempt, I think, to make web pages viable as competitors to native apps, and it just kind of never really happened, I think in large part because we never got cross compatibility With all the browsers for those capabilities. diff --git a/src/transcripts/tmir-2024-07.md b/src/transcripts/tmir-2024-07.md index 380720e..09fe1d9 100644 --- a/src/transcripts/tmir-2024-07.md +++ b/src/transcripts/tmir-2024-07.md @@ -75,568 +75,568 @@ iframe { - [[55:01](#native-sqlite-drive-in-node)] [SQLite support](https://nodejs.org/docs/latest/api/sqlite.html) - [[56:00](#node-moving-away-from-corepack)] [Removing experimental `corepack` tool for version managers?](https://github.com/nodejs/TSC/pull/1527#issuecomment-2258868015) -[00:00:00] **Carl Vitullo:** Hello. Thanks for joining us for the July edition of This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. We are coming to you live from Reactiflux, the place for React developers. +[00:00] **Carl Vitullo:** Hello. Thanks for joining us for the July edition of This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. We are coming to you live from Reactiflux, the place for React developers. -[00:00:13] And we actually have a sponsor this month. Woo! First time we're supported by Infinite Red, a consultancy that works exclusively in React Native. They've been around since 2015, have employees on the core team of React Native, and are super great. +[00:13] And we actually have a sponsor this month. Woo! First time we're supported by Infinite Red, a consultancy that works exclusively in React Native. They've been around since 2015, have employees on the core team of React Native, and are super great. -[00:00:26] I'm going to do a little more on them after we do introductions, but I am Carl. I'm a staff product developer and freelance community leader here at Reactiflux, where I run community programs and otherwise build tools to keep the community running. +[00:26] I'm going to do a little more on them after we do introductions, but I am Carl. I'm a staff product developer and freelance community leader here at Reactiflux, where I run community programs and otherwise build tools to keep the community running. -[00:00:39] **Mark Erikson:** I'm Mark, most of you know me as the guy who does Redux stuff, and as far as day job things go, I am actually looking for a new position, which is a bit of an interesting personal development, so if folks have suggestions for places I should be getting in touch with or that might be interested in me, please ping me and let me know. +[00:39] **Mark Erikson:** I'm Mark, most of you know me as the guy who does Redux stuff, and as far as day job things go, I am actually looking for a new position, which is a bit of an interesting personal development, so if folks have suggestions for places I should be getting in touch with or that might be interested in me, please ping me and let me know. -[00:00:59] **Mo Khazali:** And I am Mo. I head the mobile team at Theodo, and I'm an active community member within the React Native ecosystem. I organize the React Native London meetup and soon to be conference, and just contribute here and there, dabble a little bit into open source. Nowhere near as much as Mark does, but I do try. +[00:59] **Mo Khazali:** And I am Mo. I head the mobile team at Theodo, and I'm an active community member within the React Native ecosystem. I organize the React Native London meetup and soon to be conference, and just contribute here and there, dabble a little bit into open source. Nowhere near as much as Mark does, but I do try. ## [Sponsored by Infinite Red](https://infinite.red/) -[00:01:18] **Carl Vitullo:** Yeah, and a little more on our sponsor. Infinite Red is a expert React Native consultancy. I'm actually uniquely excited to get them specifically, Infinite Red, as a sponsor. They have been around, I've been seeing their name for the entirety of my career since I started in about 2014 with React. And they organize conferences, they host the largest React Native podcast, and generally have just shown up in very real ways to support the ecosystem and the community. +[01:18] **Carl Vitullo:** Yeah, and a little more on our sponsor. Infinite Red is a expert React Native consultancy. I'm actually uniquely excited to get them specifically, Infinite Red, as a sponsor. They have been around, I've been seeing their name for the entirety of my career since I started in about 2014 with React. And they organize conferences, they host the largest React Native podcast, and generally have just shown up in very real ways to support the ecosystem and the community. -[00:01:46] So I got a chance to connect with one of their founders, Jamon Holmgren at React Conf down in Las Vegas, and we just really vibed. They seem like really great people, they talk about how they are a team of 30 with mostly developers, mostly with more than 10 years of experience, and they work with your team to coach you on how to best use React Native. +[01:46] So I got a chance to connect with one of their founders, Jamon Holmgren at React Conf down in Las Vegas, and we just really vibed. They seem like really great people, they talk about how they are a team of 30 with mostly developers, mostly with more than 10 years of experience, and they work with your team to coach you on how to best use React Native. -[00:02:07] So if your company is looking to build up some React Native expertise, definitely check them out. And thank you, Infinite Red, for sponsoring us. +[02:07] So if your company is looking to build up some React Native expertise, definitely check them out. And thank you, Infinite Red, for sponsoring us. ## Job market: [FRED data](https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE) + [layoffs.fyi](https://layoffs.fyi) -[00:02:14] **Carl Vitullo:** Cool. All right. On to some quick hits. Job market updates. +[02:14] **Carl Vitullo:** Cool. All right. On to some quick hits. Job market updates. -[00:02:18] So there's a new source of data that I'm following, which is amusingly called FRED, an economic data set based out of the St. Louis Fed. So apparently the job site indeed does some like data analytics stuff that now the Federal reserve is relying on for like labor information. And this is a chart of software development job postings that have been posted to Indeed. And it is, indexed off the beginning of 2020. So it's more than doubles at about the start of 2022 and is down to about like 68 percent of that 2020 baseline and it's been pretty flat. +[02:18] So there's a new source of data that I'm following, which is amusingly called FRED, an economic data set based out of the St. Louis Fed. So apparently the job site indeed does some like data analytics stuff that now the Federal reserve is relying on for like labor information. And this is a chart of software development job postings that have been posted to Indeed. And it is, indexed off the beginning of 2020. So it's more than doubles at about the start of 2022 and is down to about like 68 percent of that 2020 baseline and it's been pretty flat. -[00:02:57] I really like this because I've been looking at layoffs. fyi for, you know, a year now and it just doesn't quite do it. It is, there's, there's enough, there's a lot of variability. It's only the source of Layoff. So this is kind of the other side. What does hiring look like? And unfortunately, hiring is flat to down, which is not great. But at least people aren't getting laid off as quickly anymore. +[02:57] I really like this because I've been looking at layoffs. fyi for, you know, a year now and it just doesn't quite do it. It is, there's, there's enough, there's a lot of variability. It's only the source of Layoff. So this is kind of the other side. What does hiring look like? And unfortunately, hiring is flat to down, which is not great. But at least people aren't getting laid off as quickly anymore. -[00:03:20] Yeah, speaking of layoffs, layoffs. fyi. This is the first time in, like, the A year and a half that we haven't had a, like, a pop of layoffs at the start of a new quarter. So that's a small positive sign. It's down versus last month in June and only the second time this year that we've had less than 10, 000 developers laid off. So, seems good. Hiring is not ticking up though. +[03:20] Yeah, speaking of layoffs, layoffs. fyi. This is the first time in, like, the A year and a half that we haven't had a, like, a pop of layoffs at the start of a new quarter. So that's a small positive sign. It's down versus last month in June and only the second time this year that we've had less than 10, 000 developers laid off. So, seems good. Hiring is not ticking up though. ## New Releases -[00:03:44] **Carl Vitullo:** Mark, you want to take us through some new releases? +[03:44] **Carl Vitullo:** Mark, you want to take us through some new releases? -[00:03:46] **Mark Erikson:** Sure, a couple of the most interesting ones. +[03:46] **Mark Erikson:** Sure, a couple of the most interesting ones. ### [Vitest 2.0](https://github.com/vitest-dev/vitest/releases/tag/v2.0.0) -[00:03:48] **Mark Erikson:** Vitest 2. 0 is out. A bunch of small changes, but it's interesting to note that they're working towards a browser mode. Because we've had browser based testing for a while, but trying to focus on running unit tests in the browser. So, this has some very interesting potential there. +[03:48] **Mark Erikson:** Vitest 2. 0 is out. A bunch of small changes, but it's interesting to note that they're working towards a browser mode. Because we've had browser based testing for a while, but trying to focus on running unit tests in the browser. So, this has some very interesting potential there. ### [Remix 2.10, fog of war](https://remix.run/docs/en/main/start/) -[00:04:06] **Mark Erikson:** Remix put out a new release that has a fog of war feature, which looks like it's about trying to optimize downloads of route information. Looks like rather than bundling all the route information ahead of time, they will actually download chunks of it as you go, which should improve loading speed. +[04:06] **Mark Erikson:** Remix put out a new release that has a fog of war feature, which looks like it's about trying to optimize downloads of route information. Looks like rather than bundling all the route information ahead of time, they will actually download chunks of it as you go, which should improve loading speed. ### [Jotai 2.9](https://github.com/pmndrs/jotai/releases/tag/v2.9.0) -[00:04:24] **Mark Erikson:** Uh, Jotai 2. 9 is out. And it looks like the public behavior is basically the same, but they've reworked the internals. +[04:24] **Mark Erikson:** Uh, Jotai 2. 9 is out. And it looks like the public behavior is basically the same, but they've reworked the internals. ### [Storybook 8.2](https://github.com/storybookjs/storybook/releases/tag/) -[00:04:34] **Mark Erikson:** Storybook 8. 2 has, trying to look at the release notes, a few small changes, probably not a whole lot of big stuff. +[04:34] **Mark Erikson:** Storybook 8. 2 has, trying to look at the release notes, a few small changes, probably not a whole lot of big stuff. -[00:04:42] **Carl Vitullo:** I've never quite understood the niche, the purpose that Storybook really serves. But, you know, hey, minor release, so it seemed worth calling out. I know it's pretty widely used. +[04:42] **Carl Vitullo:** I've never quite understood the niche, the purpose that Storybook really serves. But, you know, hey, minor release, so it seemed worth calling out. I know it's pretty widely used. -[00:04:52] +[04:52] ### [React Native Reanimated 3.14](https://github.com/software-mansion/) -[00:04:52] **Mark Erikson:** React Native Reanimated has 3. 14. So I guess there's your, there's your Pi release. +[04:52] **Mark Erikson:** React Native Reanimated has 3. 14. So I guess there's your, there's your Pi release. ### [htmx 2.0](https://htmx.org/posts/2024-06-17-htmx-2-0-0-is-released/) -[00:04:59] **Mark Erikson:** Totally outside of React. HTMX just hit 2. 0. +[04:59] **Mark Erikson:** Totally outside of React. HTMX just hit 2. 0. ### [Mako released](https://makojs.dev/blog/mako-open-sourced) -[00:05:03] **Mark Erikson:** And there is yet another Rust based JavaScript build tool that came out. This one's called Mako. I saw it. I'll be honest. I have no idea how this is any different than the other seemingly like 15 other Rust based build tools at this point. +[05:03] **Mark Erikson:** And there is yet another Rust based JavaScript build tool that came out. This one's called Mako. I saw it. I'll be honest. I have no idea how this is any different than the other seemingly like 15 other Rust based build tools at this point. -[00:05:20] **Carl Vitullo:** Mako has come out of the Ant design. That's what caught my eye as being notable. +[05:20] **Carl Vitullo:** Mako has come out of the Ant design. That's what caught my eye as being notable. -[00:05:24] So this is a Rust based developer being built by the team that put together one of the reasonably popular component toolkits. It seems notable for that reason to me. But yeah, yet another Rust based build tool. One more thing on Mako. They put up a bunch of benchmarks that show it being like 10 times faster than Webpack and noticeably faster than RSBuild 0. 6, which is pretty impressive. They also talked about like not being able to get it to work, getting their benchmark to work with the latest release of RSBuild, which is 0. 7. So who's to say if those benchmarks will really hold up, but yeah, cool. +[05:24] So this is a Rust based developer being built by the team that put together one of the reasonably popular component toolkits. It seems notable for that reason to me. But yeah, yet another Rust based build tool. One more thing on Mako. They put up a bunch of benchmarks that show it being like 10 times faster than Webpack and noticeably faster than RSBuild 0. 6, which is pretty impressive. They also talked about like not being able to get it to work, getting their benchmark to work with the latest release of RSBuild, which is 0. 7. So who's to say if those benchmarks will really hold up, but yeah, cool. ## Conferences ### [React Rally](https://www.reactrally.com/) -[00:06:01] **Carl Vitullo:** Some conferences coming up. We've got React Rally in Salt Lake City, August 12th and 13th. I've been to React Rally a couple of times Over the years and definitely a great one. I also noticed it's pretty much the only conference in August. I think because everyone's on vacation. +[06:01] **Carl Vitullo:** Some conferences coming up. We've got React Rally in Salt Lake City, August 12th and 13th. I've been to React Rally a couple of times Over the years and definitely a great one. I also noticed it's pretty much the only conference in August. I think because everyone's on vacation. -[00:06:16] **Mark Erikson:** React Rally is wonderful. They've done a great job of really having a good community vibe over the years. I should be there. So folks want to come by and say hi, please do. +[06:16] **Mark Erikson:** React Rally is wonderful. They've done a great job of really having a good community vibe over the years. I should be there. So folks want to come by and say hi, please do. -[00:06:24] +[06:24] ### [React Universe](https://www.reactuniverseconf.com/) -[00:06:25] **Mo Khazali:** Next up. We've got React Universe Conf in Wroclaw in Poland on September 5th and 6th. I actually am seeing this conference. So if you like listening to me talk about weird stuff and ramble, it's the place to be, I guess, but no, it's a great conference. +[06:25] **Mo Khazali:** Next up. We've got React Universe Conf in Wroclaw in Poland on September 5th and 6th. I actually am seeing this conference. So if you like listening to me talk about weird stuff and ramble, it's the place to be, I guess, but no, it's a great conference. -[00:06:41] It used to be the former React Native EU, and now it's expanding to cover all things React based. And we've got some really good speakers there. So obviously you've got the, the popular React Native speakers that are the lineup of every single React Native community conference that you know, but we've also got folks like Dan Abramov, who's been I can't see Dodds and some others, and I would highly recommend coming to it. +[06:41] It used to be the former React Native EU, and now it's expanding to cover all things React based. And we've got some really good speakers there. So obviously you've got the, the popular React Native speakers that are the lineup of every single React Native community conference that you know, but we've also got folks like Dan Abramov, who's been I can't see Dodds and some others, and I would highly recommend coming to it. -[00:07:03] The organizers really know how to organize conferences. They've done it for many, many years and you're guaranteed pretty much to have a great time. +[07:03] The organizers really know how to organize conferences. They've done it for many, many years and you're guaranteed pretty much to have a great time. -[00:07:10] **Carl Vitullo:** Yeah. And on them knowing how to organize a conference, they organized React Conf. They were one of the organizer partners for that. So yeah, they certainly do. They have organized yet another conference. Definitely would love to get up to Poland if I can. Cool. +[07:10] **Carl Vitullo:** Yeah. And on them knowing how to organize a conference, they organized React Conf. They were one of the organizer partners for that. So yeah, they certainly do. They have organized yet another conference. Definitely would love to get up to Poland if I can. Cool. ### [JSConf Chile](https://www.jsconf.cl/) -[00:07:23] **Carl Vitullo:** A, an overlapping conference. There's also a JSConf Chile in Santiago. That's September 5th through 7th. +[07:23] **Carl Vitullo:** A, an overlapping conference. There's also a JSConf Chile in Santiago. That's September 5th through 7th. ### [UtahJS Conf](https://utahjs.com/conference) -[00:07:32] **Carl Vitullo:** There's a Utah JSConf again in Salt Lake City on September 13th. I guess this is. JavaScript versus React for React Rally. But yeah, so we have two conferences in Salt Lake City a month apart. +[07:32] **Carl Vitullo:** There's a Utah JSConf again in Salt Lake City on September 13th. I guess this is. JavaScript versus React for React Rally. But yeah, so we have two conferences in Salt Lake City a month apart. ### [React Alicante](https://reactalicante.es/) -[00:07:44] **Carl Vitullo:** There's React Alicante, which is going to, it looks like it's going to be an online conference. +[07:44] **Carl Vitullo:** There's React Alicante, which is going to, it looks like it's going to be an online conference. -[00:07:49] **Mark Erikson:** It's in person in Spain and I'm speaking there. +[07:49] **Mark Erikson:** It's in person in Spain and I'm speaking there. -[00:07:53] **Carl Vitullo:** Cool. Oh, awesome. Wonderful. Go see Mark speak in Spain. That is September 19th through 21st. +[07:53] **Carl Vitullo:** Cool. Oh, awesome. Wonderful. Go see Mark speak in Spain. That is September 19th through 21st. ### [JSConf Ireland](https://www.jsconf.ie/) -[00:08:00] **Carl Vitullo:** There's also JSConf Ireland in Dublin with also streaming September 25th and 26th. +[08:00] **Carl Vitullo:** There's also JSConf Ireland in Dublin with also streaming September 25th and 26th. -[00:08:07] And that is all of the conferences we have this month. Uh, I will shout out, last month I mentioned a conference that I will not name again because it came to light that they were using fake speakers on their website and had various people listed as speaking at the conference who were not. So, uh, I updated the transcript, but I wanted to shut that out. I did try to check. I do look at the conference websites and try and vet them, but I got it wrong last month. Sorry. +[08:07] And that is all of the conferences we have this month. Uh, I will shout out, last month I mentioned a conference that I will not name again because it came to light that they were using fake speakers on their website and had various people listed as speaking at the conference who were not. So, uh, I updated the transcript, but I wanted to shut that out. I did try to check. I do look at the conference websites and try and vet them, but I got it wrong last month. Sorry. ## State of the web surveys -[00:08:32] **Carl Vitullo:** All right. Onto our main content. We are slightly behind the times by a month or two on State of surveys. There have been a bunch of state of React, state of JavaScript, state of HTML, all kinds of states that have come out over the last two months or so, which is later than I expected. +[08:32] **Carl Vitullo:** All right. Onto our main content. We are slightly behind the times by a month or two on State of surveys. There have been a bunch of state of React, state of JavaScript, state of HTML, all kinds of states that have come out over the last two months or so, which is later than I expected. -[00:08:50] Usually these have, in years past, the state of JS surveys have done a pretty good job of coming out. Pretty promptly, they've been running for, it seems like, most of my career. So, just surprised. Seemed like there were some, hitches this year. +[08:50] Usually these have, in years past, the state of JS surveys have done a pretty good job of coming out. Pretty promptly, they've been running for, it seems like, most of my career. So, just surprised. Seemed like there were some, hitches this year. -[00:09:04] **Mark Erikson:** Yeah, like, I'm not sure if it was that they, they just took a really long time to analyze the data, or they were working on, I know they did a lot of work on, like, new data visualizations as part of the survey results. +[09:04] **Mark Erikson:** Yeah, like, I'm not sure if it was that they, they just took a really long time to analyze the data, or they were working on, I know they did a lot of work on, like, new data visualizations as part of the survey results. -[00:09:14] So, it might just have been that it took them a long time to get the new sites put together. +[09:14] So, it might just have been that it took them a long time to get the new sites put together. -[00:09:19] **Carl Vitullo:** I did notice that they had some really cool data interactivity bits on it, like you can, for a lot of, at least on the State of JS site, the State of React one got, looked like a little bit less attention, which is fair, it's a much smaller survey, it's like a third of the size. But, they had some interesting stuff where you could filter or correlate responses. So it's like, Oh, you can see years of experience as it pertains to salary. So there was a lot of really cool data exploration stuff there. +[09:19] **Carl Vitullo:** I did notice that they had some really cool data interactivity bits on it, like you can, for a lot of, at least on the State of JS site, the State of React one got, looked like a little bit less attention, which is fair, it's a much smaller survey, it's like a third of the size. But, they had some interesting stuff where you could filter or correlate responses. So it's like, Oh, you can see years of experience as it pertains to salary. So there was a lot of really cool data exploration stuff there. -[00:09:48] I did also see a little bit of chatter online or on Twitter about how the survey was promoted and what that means for its sample size and audience. demographics mainly, like the survey responses were like 92 percent male and that's not great. I've seen other spaces get up to like 80 percent male, so, you know, 15 to 20 percent female, which seems to be about the high watermark, unfortunately, for online based tech communities. But yeah, so just, just wanted to shout out that I have heard a little bit of that. +[09:48] I did also see a little bit of chatter online or on Twitter about how the survey was promoted and what that means for its sample size and audience. demographics mainly, like the survey responses were like 92 percent male and that's not great. I've seen other spaces get up to like 80 percent male, so, you know, 15 to 20 percent female, which seems to be about the high watermark, unfortunately, for online based tech communities. But yeah, so just, just wanted to shout out that I have heard a little bit of that. ## [State of HTML](https://2023.stateofhtml.com/) -[00:10:21] **Carl Vitullo:** I'll start with the two smaller surveys. +[10:21] **Carl Vitullo:** I'll start with the two smaller surveys. -[00:10:23] So state of HTML was actually really interesting to me. I don't super duper know how to stay on top of, like, HTML and CSS changes, so I feel like every couple of years I, like, see a talk from someone who's a genuine cutting edge expert in CSS and, you know, use the platform kind of stuff and go like, "oh, holy shit, I don't know how to use HTML anymore," because just reading the state of HTML, I found a bunch of little things, a bunch of new features that I was not aware of. I unfortunately didn't take a bunch of notes on them, but just scroll through, see what catches your eye, see what you haven't stayed up to date with. +[10:23] So state of HTML was actually really interesting to me. I don't super duper know how to stay on top of, like, HTML and CSS changes, so I feel like every couple of years I, like, see a talk from someone who's a genuine cutting edge expert in CSS and, you know, use the platform kind of stuff and go like, "oh, holy shit, I don't know how to use HTML anymore," because just reading the state of HTML, I found a bunch of little things, a bunch of new features that I was not aware of. I unfortunately didn't take a bunch of notes on them, but just scroll through, see what catches your eye, see what you haven't stayed up to date with. ## "Use the platform" -[00:10:58] **Mark Erikson:** I know we've had, you know, there's, there's kind of the running meme of, you know, the, the folks who insist on use the platform and the, and the React community is a little bit like, "but the platform doesn't support all the things we want to do," but browsers are continuing to implement, new features, the HTML and JavaScript specs keep advancing. +[10:58] **Mark Erikson:** I know we've had, you know, there's, there's kind of the running meme of, you know, the, the folks who insist on use the platform and the, and the React community is a little bit like, "but the platform doesn't support all the things we want to do," but browsers are continuing to implement, new features, the HTML and JavaScript specs keep advancing. -[00:11:17] And it's a fair critique that folks who tend to focus on, the React type front ends probably don't know as much about the nuances of what's available in HTML and CSS as folks who are more focused on that. So, like, there's sort of fair critiques on both sides, and it's worth keeping an eye on, the new advances there. +[11:17] And it's a fair critique that folks who tend to focus on, the React type front ends probably don't know as much about the nuances of what's available in HTML and CSS as folks who are more focused on that. So, like, there's sort of fair critiques on both sides, and it's worth keeping an eye on, the new advances there. -[00:11:39] **Carl Vitullo:** Yeah, something that I have thought of many times over my professional career is like, there's use the platform, you know, there's a lot of things you can do without writing JavaScript code. If you can do it with a native feature, it's going to be less development time. It's going to be, it's probably going to be faster, more performant for the user. +[11:39] **Carl Vitullo:** Yeah, something that I have thought of many times over my professional career is like, there's use the platform, you know, there's a lot of things you can do without writing JavaScript code. If you can do it with a native feature, it's going to be less development time. It's going to be, it's probably going to be faster, more performant for the user. -[00:11:56] But that use the platform nature is in tension with the flip side of React trying to allow people to write code that runs in more environments. So it's sort of, there's sort of that dichotomy. There's the pressure of writing a tool tip library, writing a modal library that works in React Native as well as natively on the web. +[11:56] But that use the platform nature is in tension with the flip side of React trying to allow people to write code that runs in more environments. So it's sort of, there's sort of that dichotomy. There's the pressure of writing a tool tip library, writing a modal library that works in React Native as well as natively on the web. -[00:12:16] And if you rely on the platform features, then you can't do the React Native side of things. So There's been a big tension there for many, many years, but I have been very interested in what it would look like if there was a component toolkit that just said like, nope, fuck the other platforms, we're just going to go all in on web, we're going to do it in as few lines of code to get the best user experience and the best developer experience possible. +[12:16] And if you rely on the platform features, then you can't do the React Native side of things. So There's been a big tension there for many, many years, but I have been very interested in what it would look like if there was a component toolkit that just said like, nope, fuck the other platforms, we're just going to go all in on web, we're going to do it in as few lines of code to get the best user experience and the best developer experience possible. -[00:12:38] I don't know of one that's really working in that way, but I think it would be really cool. +[12:38] I don't know of one that's really working in that way, but I think it would be really cool. -[00:12:42] **Mo Khazali:** So two points on that, which I think was a really interesting point that you raised, Carl. One is part of the reason why a lot of these libraries don't really work well for React Native is the lack of web API support in the React Native ecosystem. +[12:42] **Mo Khazali:** So two points on that, which I think was a really interesting point that you raised, Carl. One is part of the reason why a lot of these libraries don't really work well for React Native is the lack of web API support in the React Native ecosystem. -[00:12:54] And it is actually something that's being worked on. So Microsoft opened an RFC last year and they said, well, you know, we, we, whether we like it or not, as native developers, the web APIs have won. They're becoming standardized. Things are. Relatively stable. So why not try to at least use those as the interfaces, even if the native implementations are different under the hood, so that when you do use your trusty old React library, it does just kind of work out of the box in the React native ecosystem. +[12:54] And it is actually something that's being worked on. So Microsoft opened an RFC last year and they said, well, you know, we, we, whether we like it or not, as native developers, the web APIs have won. They're becoming standardized. Things are. Relatively stable. So why not try to at least use those as the interfaces, even if the native implementations are different under the hood, so that when you do use your trusty old React library, it does just kind of work out of the box in the React native ecosystem. -[00:13:18] So there is a move towards that and you've got React strict DOM and whatnot. But the example, the counterside to that is the example of tooltips that you mentioned. Like tooltips are not a mobile. Friendly UI element. So there's no easy answer to this unless you create really high level primitives that are UI agnostic. +[13:18] So there is a move towards that and you've got React strict DOM and whatnot. But the example, the counterside to that is the example of tooltips that you mentioned. Like tooltips are not a mobile. Friendly UI element. So there's no easy answer to this unless you create really high level primitives that are UI agnostic. -[00:13:35] But functionality wise, they kind of behave similarly. So, you know, from a way that it looks, it's totally different on iOS, Android, and web, but at least the APIs for the developers are the same. So opens a tool tip on the, the, the web with a hover, but you know, maybe opens up a modal. A bottom sheet modal on native. +[13:35] But functionality wise, they kind of behave similarly. So, you know, from a way that it looks, it's totally different on iOS, Android, and web, but at least the APIs for the developers are the same. So opens a tool tip on the, the, the web with a hover, but you know, maybe opens up a modal. A bottom sheet modal on native. -[00:13:52] So it's a big point of contention for us React Native developers that we're trying to figure out. I don't think we have the answer, and I don't think anyone's figured out the sweet spot. But we'll get there. We will get there. +[13:52] So it's a big point of contention for us React Native developers that we're trying to figure out. I don't think we have the answer, and I don't think anyone's figured out the sweet spot. But we'll get there. We will get there. -[00:14:02] **Carl Vitullo:** Yeah, I feel like it crosses my mind every couple of months, but just hearing you talk about like, the web platform just makes me think yet again of a 2013 talk called the birth and death of JavaScript. +[14:02] **Carl Vitullo:** Yeah, I feel like it crosses my mind every couple of months, but just hearing you talk about like, the web platform just makes me think yet again of a 2013 talk called the birth and death of JavaScript. ## [Birth and Death of Javascript](https://www.destroyallsoftware.com/) -[00:14:13] **Carl Vitullo:** And yes, JavaScript is intentional. But yeah, if you are not familiar with JavaScript. That birth and death of JavaScript talk, watch it because like, oh my God, it's the most, it has remained the most like prescient talk I've ever watched. It is exactly discussing how JavaScript takes over the world and we're just living it, we're just living that 10 years later, 11 years later. Anyway, that's a, that's all kind of long diversion for state of HTML, but. +[14:13] **Carl Vitullo:** And yes, JavaScript is intentional. But yeah, if you are not familiar with JavaScript. That birth and death of JavaScript talk, watch it because like, oh my God, it's the most, it has remained the most like prescient talk I've ever watched. It is exactly discussing how JavaScript takes over the world and we're just living it, we're just living that 10 years later, 11 years later. Anyway, that's a, that's all kind of long diversion for state of HTML, but. ## [State of React](https://2023.stateofreact.com/en-US) -[00:14:39] **Carl Vitullo:** There was also a state of React survey. It was pretty good. I kind of got more interesting signal I felt out of the state of JavaScript survey. There was a lot of survey time dedicated to like, what React features do you use? And that's just not really a question that I have, you know, I don't really care if you use, you know, use context. You probably do. If you don't, you probably should. That section, what features do you use, is interesting in terms of like, what are people aware of, but I don't know that it really changes that much. +[14:39] **Carl Vitullo:** There was also a state of React survey. It was pretty good. I kind of got more interesting signal I felt out of the state of JavaScript survey. There was a lot of survey time dedicated to like, what React features do you use? And that's just not really a question that I have, you know, I don't really care if you use, you know, use context. You probably do. If you don't, you probably should. That section, what features do you use, is interesting in terms of like, what are people aware of, but I don't know that it really changes that much. ## Component Libraries -[00:15:07] **Carl Vitullo:** It did have a lot of good data about component libraries and ecosystem that I thought was, just, we, we spend so much time in here bantering about like, what the vibes are and how does it feel What tools does it feel like people are using more and talking about more? +[15:07] **Carl Vitullo:** It did have a lot of good data about component libraries and ecosystem that I thought was, just, we, we spend so much time in here bantering about like, what the vibes are and how does it feel What tools does it feel like people are using more and talking about more? -[00:15:23] So this is a good data based check in on how accurate the, the vibes, our read of the vibes are and pretty accurate. I'm pretty happy. We'll get more into it with the state of JS, just that did have a lot more of the vibes, but some things I thought were notable component libraries, generally not popular. +[15:23] So this is a good data based check in on how accurate the, the vibes, our read of the vibes are and pretty accurate. I'm pretty happy. We'll get more into it with the state of JS, just that did have a lot more of the vibes, but some things I thought were notable component libraries, generally not popular. -[00:15:40] Some of them are reasonably widely used, but like not loved. Radix were the most loved with Headless UI, also pretty high up there. Radix and Headless UI are not ones that live large in my mind, so it was cool to see those surfaced. Definitely, like, you know, obviously we talk about ShadCN pretty frequently, but Redux and Headless UI, good ones to check out. +[15:40] Some of them are reasonably widely used, but like not loved. Radix were the most loved with Headless UI, also pretty high up there. Radix and Headless UI are not ones that live large in my mind, so it was cool to see those surfaced. Definitely, like, you know, obviously we talk about ShadCN pretty frequently, but Redux and Headless UI, good ones to check out. -[00:16:03] Headless UI looks cool because it's unstyled, so it's just behavior, and then you make it look the way you want. Which, here for it, love it. +[16:03] Headless UI looks cool because it's unstyled, so it's just behavior, and then you make it look the way you want. Which, here for it, love it. -[00:16:11] **Mo Khazali:** I think that's kind of the direction that they're all going with as well. Like, you know, R a bit more opinionated, but still flexible in a lot of ways compared to, let's say, your run of the mill material UI. +[16:11] **Mo Khazali:** I think that's kind of the direction that they're all going with as well. Like, you know, R a bit more opinionated, but still flexible in a lot of ways compared to, let's say, your run of the mill material UI. -[00:16:21] I think that's the general direction where these things are going. And Headless is great for that. I guess that's the appeal with Shad for me as well, right? Like I know a lot of people love ShadCN. The appeal is, well, if you don't like the rounded corners specifically, it's just a tailwind prop to change and you're kind of done. +[16:21] I think that's the general direction where these things are going. And Headless is great for that. I guess that's the appeal with Shad for me as well, right? Like I know a lot of people love ShadCN. The appeal is, well, if you don't like the rounded corners specifically, it's just a tailwind prop to change and you're kind of done. -[00:16:36] So you have a lot of flexibility there. +[16:36] So you have a lot of flexibility there. -[00:16:38] **Carl Vitullo:** Yeah, definitely makes sense. It's been curious to see how slowly that has evolved over the years. I, I bailed out pretty quick on component toolkits cause I just, I don't want it to look like a bootstrap site. +[16:38] **Carl Vitullo:** Yeah, definitely makes sense. It's been curious to see how slowly that has evolved over the years. I, I bailed out pretty quick on component toolkits cause I just, I don't want it to look like a bootstrap site. ## StyledComponents still big -[00:16:48] **Carl Vitullo:** So there was also something that I found interesting just because it seemed like a, you know, narrative violation is styled components are still pretty dominant in terms of actual usage, like enormously widely used, you know, everyone talks aboutTailwind and whatever, but. Style of components, they're here to stay, they're sticking around. +[16:48] **Carl Vitullo:** So there was also something that I found interesting just because it seemed like a, you know, narrative violation is styled components are still pretty dominant in terms of actual usage, like enormously widely used, you know, everyone talks aboutTailwind and whatever, but. Style of components, they're here to stay, they're sticking around. -[00:17:05] Some other interesting data, 23 percent of respondents are still on either React 16 or 17. So this is like, how many years after 18 was released? And 6 percent of survey respondents don't know what version they use, which is interesting to me. +[17:05] Some other interesting data, 23 percent of respondents are still on either React 16 or 17. So this is like, how many years after 18 was released? And 6 percent of survey respondents don't know what version they use, which is interesting to me. -[00:17:21] So, yeah. If you're using React 18, congrats, you are on the cutting edge. The only 68%, less than 70 percent of survey respondents are on React 18. Talking about nobody uses beta versions. Nobody uses advanced versions. I think it was like less than 1 percent have tried a canary. So rounding error. All right. +[17:21] So, yeah. If you're using React 18, congrats, you are on the cutting edge. The only 68%, less than 70 percent of survey respondents are on React 18. Talking about nobody uses beta versions. Nobody uses advanced versions. I think it was like less than 1 percent have tried a canary. So rounding error. All right. ## [State of JS](https://2023.stateofjs.com/en-US) -[00:17:43] **Carl Vitullo:** State of JS, the big one. Mo, you want to, you want to kick us off with your thoughts? Break up my monologue. +[17:43] **Carl Vitullo:** State of JS, the big one. Mo, you want to, you want to kick us off with your thoughts? Break up my monologue. ## A Note on Survey Sample -[00:17:48] **Mo Khazali:** Sure. Good to start off with what you kind of start off generically about the survey results, which is you got to look at the sample size. +[17:48] **Mo Khazali:** Sure. Good to start off with what you kind of start off generically about the survey results, which is you got to look at the sample size. -[00:17:53] It's like the most important thing to do when you start with this, because it makes the data seem a lot more contextualized as a result. So a colleague of mine, she was talking about this and I kind of took notes and then looked through it and I was like, yeah, wow, that's very accurate. She was giving me her thoughts. +[17:53] It's like the most important thing to do when you start with this, because it makes the data seem a lot more contextualized as a result. So a colleague of mine, she was talking about this and I kind of took notes and then looked through it and I was like, yeah, wow, that's very accurate. She was giving me her thoughts. -[00:18:09] But the first thing is, location is heavily US based. So if you look at the respondents, 16 17 percent are from the US. If you combine Germany, France, and the UK, Those become close to the US respondents. They're about the same as the US respondents, a little bit more. So all of this data is heavily skewed by the US market. +[18:09] But the first thing is, location is heavily US based. So if you look at the respondents, 16 17 percent are from the US. If you combine Germany, France, and the UK, Those become close to the US respondents. They're about the same as the US respondents, a little bit more. So all of this data is heavily skewed by the US market. -[00:18:25] Things like, let's say like the Indian developer community is very, very underrepresented. There was only about 500 respondents where that's about two, 3%. Whereas, you know, they should be a lot more because proportionately they'll have a larger developer community than that, which is represented. +[18:25] Things like, let's say like the Indian developer community is very, very underrepresented. There was only about 500 respondents where that's about two, 3%. Whereas, you know, they should be a lot more because proportionately they'll have a larger developer community than that, which is represented. -[00:18:41] **Carl Vitullo:** I think the total number of respondents was like 20 or 30, 000. +[18:41] **Carl Vitullo:** I think the total number of respondents was like 20 or 30, 000. -[00:18:44] So hearing only 500 from India is like a little bit shocking. Yeah, +[18:44] So hearing only 500 from India is like a little bit shocking. Yeah, -[00:18:47] **Mo Khazali:** it's, it's quite poorly represented. Or the Netherlands, as an example, has got about 500 as well. The Netherlands is a big tech hub in Europe. A lot of big tech conferences happen, JavaScript conferences happen in the Netherlands because there's already a big community there. +[18:47] **Mo Khazali:** it's, it's quite poorly represented. Or the Netherlands, as an example, has got about 500 as well. The Netherlands is a big tech hub in Europe. A lot of big tech conferences happen, JavaScript conferences happen in the Netherlands because there's already a big community there. -[00:19:00] So it's very interesting, I think it's probably more to do with marketing and how they got the word out, and which communities it goes to. And so when you have location being heavily based in the US, then it skews salaries quite significantly. US salaries for developers are much higher. than European salaries And so all of the salary data is being taken on sort of an average, and so that moves the whole scale, basically. +[19:00] So it's very interesting, I think it's probably more to do with marketing and how they got the word out, and which communities it goes to. And so when you have location being heavily based in the US, then it skews salaries quite significantly. US salaries for developers are much higher. than European salaries And so all of the salary data is being taken on sort of an average, and so that moves the whole scale, basically. -[00:19:20] The other thing which kind of you hinted on, Carl, was it's almost exclusively male. So 94 percent men, which isn't great. It's really heavily, disproportionately male. Men who have responded to this. And then the worst view that you can see, and this should, if anyone has any doubts about this, just look at this view and hopefully your doubts will be completely gone but when you combine the gender and the yearly income views, you can see that men have a higher average salary. +[19:20] The other thing which kind of you hinted on, Carl, was it's almost exclusively male. So 94 percent men, which isn't great. It's really heavily, disproportionately male. Men who have responded to this. And then the worst view that you can see, and this should, if anyone has any doubts about this, just look at this view and hopefully your doubts will be completely gone but when you combine the gender and the yearly income views, you can see that men have a higher average salary. -[00:19:47] Shocker. So the gender pay gap is very much there, and it's something to the degree of 20, 000 on average between men and women. Shocking, right? And unfortunately as well, again, racial demographic, it's mostly white respondents, 70 plus percent as well. +[19:47] Shocker. So the gender pay gap is very much there, and it's something to the degree of 20, 000 on average between men and women. Shocking, right? And unfortunately as well, again, racial demographic, it's mostly white respondents, 70 plus percent as well. -[00:20:02] So there's, there's, the sample size isn't very representative, I'd say. Still interesting findings, but just those caveats are very interesting to contextualize everything. +[20:02] So there's, there's, the sample size isn't very representative, I'd say. Still interesting findings, but just those caveats are very interesting to contextualize everything. -[00:20:10] **Carl Vitullo:** Definitely. Yeah. It's funny. The salary to gender is one of the only things I did to play with the data. So it's funny that we both went straight for that. Yeah. Also on salary on, you know, US based salary, skewing it, you know, higher, I actually was, looking at that chart, looking at the, you know, the, the quartiles and seeing that my last job, like two years ago, my last full time software tech job was like, On the very high end of that. +[20:10] **Carl Vitullo:** Definitely. Yeah. It's funny. The salary to gender is one of the only things I did to play with the data. So it's funny that we both went straight for that. Yeah. Also on salary on, you know, US based salary, skewing it, you know, higher, I actually was, looking at that chart, looking at the, you know, the, the quartiles and seeing that my last job, like two years ago, my last full time software tech job was like, On the very high end of that. -[00:20:36] So it's like, Oh, apparently I kind of maxed out the scale, which is interesting because I definitely have not, I was not at the top of the scale. I, my last salary is 171, 000. Like it was good. I was very happy with it, but. I know plenty of people who are making like double that. So I was surprised as much as US salaries will skew it higher, I was a little surprised to see the absolute high end of the scale, not really represented. Do you know, just knowing people who are making that. +[20:36] So it's like, Oh, apparently I kind of maxed out the scale, which is interesting because I definitely have not, I was not at the top of the scale. I, my last salary is 171, 000. Like it was good. I was very happy with it, but. I know plenty of people who are making like double that. So I was surprised as much as US salaries will skew it higher, I was a little surprised to see the absolute high end of the scale, not really represented. Do you know, just knowing people who are making that. -[00:21:04] **Mo Khazali:** So. Fascinating. You know, you say that because again, it's relative because if you, let's say like, look at the UK, 170, 000 per year, and your yearly salary is basically the top, top, top end, like maybe top two, 3 percent of developers. in the UK. So it's, it's all relative. +[21:04] **Mo Khazali:** So. Fascinating. You know, you say that because again, it's relative because if you, let's say like, look at the UK, 170, 000 per year, and your yearly salary is basically the top, top, top end, like maybe top two, 3 percent of developers. in the UK. So it's, it's all relative. -[00:21:18] Like, like you say, yes, even in the U. S. you can go much higher and then it starts to become really skewed. So yeah, very interesting, but the data is never going to be accurate. +[21:18] Like, like you say, yes, even in the U. S. you can go much higher and then it starts to become really skewed. So yeah, very interesting, but the data is never going to be accurate. -[00:21:26] **Carl Vitullo:** Right, right, right. Yeah, I think top of market, I don't know, Netflix intentionally tries to pay top of market. I think they're in like 350 range. +[21:26] **Carl Vitullo:** Right, right, right. Yeah, I think top of market, I don't know, Netflix intentionally tries to pay top of market. I think they're in like 350 range. -[00:21:33] I've heard rumors, consider this a rumor, but I've heard of like super top developers at OpenAI making upwards of like seven, eight, nine hundred k, a million dollars a year salary. So yeah, high end of the scale is crazy in the US, but we can, we can bail out of demographics for a minute. +[21:33] I've heard rumors, consider this a rumor, but I've heard of like super top developers at OpenAI making upwards of like seven, eight, nine hundred k, a million dollars a year salary. So yeah, high end of the scale is crazy in the US, but we can, we can bail out of demographics for a minute. -[00:21:52] I'm going to just rapid fire some of these, some of the breakdowns, some of the analysis that I was looking at. +[21:52] I'm going to just rapid fire some of these, some of the breakdowns, some of the analysis that I was looking at. ## Vue Tops Angular for usage -[00:21:57] **Carl Vitullo:** Vue has surpassed Angular by usage according to this survey, which caveats about sample aside is interesting. Angular definitely not loved. It had a like net unfavorable view of it. I think majority of respondents had a negative view of it. it's still in competition with Vue and React by usage, but it is substantially more negative than either of those, than either React or Vue. +[21:57] **Carl Vitullo:** Vue has surpassed Angular by usage according to this survey, which caveats about sample aside is interesting. Angular definitely not loved. It had a like net unfavorable view of it. I think majority of respondents had a negative view of it. it's still in competition with Vue and React by usage, but it is substantially more negative than either of those, than either React or Vue. -[00:22:22] Everyone still loves Svelte. It was number one by like a long shot on interest and favorability rating, but not very top by actual usage. It has been consistently, growing in usage over the years. So React is still generally positive. It's still the most positive by rank. You know, in this list, it was number one most positive, but that's been declining over the last two or three years and is very tight with Svelte right now. +[22:22] Everyone still loves Svelte. It was number one by like a long shot on interest and favorability rating, but not very top by actual usage. It has been consistently, growing in usage over the years. So React is still generally positive. It's still the most positive by rank. You know, in this list, it was number one most positive, but that's been declining over the last two or three years and is very tight with Svelte right now. -[00:22:49] The dots were like practically overlapping, like definitely within margin of error for which one was more positive. Astro topped out the list of other options, It did not make the cut to be in the main list, but one of the shout out, Astro is in contention. it was funny. +[22:49] The dots were like practically overlapping, like definitely within margin of error for which one was more positive. Astro topped out the list of other options, It did not make the cut to be in the main list, but one of the shout out, Astro is in contention. it was funny. ## Developer Happiness -[00:23:05] **Carl Vitullo:** The, they had a chart of happiness and generally all of the libraries people were happiest in 2018, which I just thought was funny because I tend to think of 2018 as like peak tech for, in a lot of different ways. +[23:05] **Carl Vitullo:** The, they had a chart of happiness and generally all of the libraries people were happiest in 2018, which I just thought was funny because I tend to think of 2018 as like peak tech for, in a lot of different ways. -[00:23:18] Like when I think of Reactiflux and its activity and its growth and its vibes. 2018 was definitely a banner year. So that seems to just generally be true across the industry. Everyone was happy in 2018 and people are less happy now. +[23:18] Like when I think of Reactiflux and its activity and its growth and its vibes. 2018 was definitely a banner year. So that seems to just generally be true across the industry. Everyone was happy in 2018 and people are less happy now. -[00:23:31] Next usage has been growing pretty consistently for like the last four or five years by this survey. Remix has been pretty flat, which I put them in the same usage bucket. I put them in the same popularity bucket in my mind. So that was a little surprising to me. There's also, Remix had a much more negative perception than I expected. It's about even for, you know, positive and negative responses. +[23:31] Next usage has been growing pretty consistently for like the last four or five years by this survey. Remix has been pretty flat, which I put them in the same usage bucket. I put them in the same popularity bucket in my mind. So that was a little surprising to me. There's also, Remix had a much more negative perception than I expected. It's about even for, you know, positive and negative responses. -[00:23:52] I love it. I thought it was great. So I'm just surprised to see that. Over the last, like, three years, testing, usage of test tools. has grown pretty significantly, whether it's Jest, or VTest, or Playwright, or Cypress. All of them saw usage go way up in the last two to three years, which is very funny because that, that tracks very well with my experience of three to four years ago, nobody was writing tests. +[23:52] I love it. I thought it was great. So I'm just surprised to see that. Over the last, like, three years, testing, usage of test tools. has grown pretty significantly, whether it's Jest, or VTest, or Playwright, or Cypress. All of them saw usage go way up in the last two to three years, which is very funny because that, that tracks very well with my experience of three to four years ago, nobody was writing tests. -[00:24:17] Just, people actually started writing tests in the last couple of years, which is funny. Yeah, Playwright versus Cypress. The vibes are supported by the data. People love Playwright. It's got really great retention. It's got really great net favorability rating. Cypress, a little bit less so. It's still very widely used, but the retention chart was much more negative. +[24:17] Just, people actually started writing tests in the last couple of years, which is funny. Yeah, Playwright versus Cypress. The vibes are supported by the data. People love Playwright. It's got really great retention. It's got really great net favorability rating. Cypress, a little bit less so. It's still very widely used, but the retention chart was much more negative. -[00:24:39] And it's just not as well loved, which generally tracks with the sentiment that I've seen. +[24:39] And it's just not as well loved, which generally tracks with the sentiment that I've seen. -[00:24:44] **Mark Erikson:** Yeah, I think I saw that Playwright Downloads had recently surpassed Cyprus's. I know I've seen a lot of mentions of companies migrating from Cyprus to Playwright. So, yeah, matches my experience. +[24:44] **Mark Erikson:** Yeah, I think I saw that Playwright Downloads had recently surpassed Cyprus's. I know I've seen a lot of mentions of companies migrating from Cyprus to Playwright. So, yeah, matches my experience. -[00:24:55] **Mo Khazali:** We literally, this week, migrated one of our clients from Cyprus to Playwright. +[24:55] **Mo Khazali:** We literally, this week, migrated one of our clients from Cyprus to Playwright. -[00:25:01] So, another anecdote of how the general vibes are going in the community. +[25:01] So, another anecdote of how the general vibes are going in the community. -[00:25:05] **Carl Vitullo:** Yeah, Roboto just asked in the chat, what are people's problems with Cypress? I've run into a bunch of weirdness on flaky tests and just general quirks, like the edges have been rough. I haven't really done enough with Playwright to say what's better about it, but it seems like it's based on a more stable foundation. +[25:05] **Carl Vitullo:** Yeah, Roboto just asked in the chat, what are people's problems with Cypress? I've run into a bunch of weirdness on flaky tests and just general quirks, like the edges have been rough. I haven't really done enough with Playwright to say what's better about it, but it seems like it's based on a more stable foundation. -[00:25:24] **Mark Erikson:** I can briefly speak to this. Cypress runs your entire test in the browser. It basically kind of like hijacks everything about the browser behavior and sort of re implements a lot of that itself. Whereas Playwright, the test is running externally. And it's sending, like, DevTools protocol commands to the browser. +[25:24] **Mark Erikson:** I can briefly speak to this. Cypress runs your entire test in the browser. It basically kind of like hijacks everything about the browser behavior and sort of re implements a lot of that itself. Whereas Playwright, the test is running externally. And it's sending, like, DevTools protocol commands to the browser. -[00:25:42] CypressR also has a really weird not actually async model. The way I understand it is it actually runs through the entire test code ahead of time and collects a queued list of commands, and then it executes those later. So you can't even use, like, real async await in your test syntax, whereas with PlayWrite you can. +[25:42] CypressR also has a really weird not actually async model. The way I understand it is it actually runs through the entire test code ahead of time and collects a queued list of commands, and then it executes those later. So you can't even use, like, real async await in your test syntax, whereas with PlayWrite you can. -[00:26:03] **Carl Vitullo:** Interesting. Yeah, because I think Cypress came out before, like, headless Chrome was a thing, because I remember they, all of the browser automation stuff from, you know, years gone by are very hacky. Like, they're scripting the browser in a just really janky way, and the browsers produced a headless variant that is more intentionally able to be scripted. +[26:03] **Carl Vitullo:** Interesting. Yeah, because I think Cypress came out before, like, headless Chrome was a thing, because I remember they, all of the browser automation stuff from, you know, years gone by are very hacky. Like, they're scripting the browser in a just really janky way, and the browsers produced a headless variant that is more intentionally able to be scripted. -[00:26:26] And so I'm pretty sure that Cypress predates that change, and so they had to do the hacky weird stuff, and Playwright came about after that change, and they do less hacky weird stuff. +[26:26] And so I'm pretty sure that Cypress predates that change, and so they had to do the hacky weird stuff, and Playwright came about after that change, and they do less hacky weird stuff. -[00:26:36] **Mo Khazali:** There's one more thing with the Cypress, I guess, model that pushed people away in the last couple of years, which was that they basically, they, I believe they're VC backed. +[26:36] **Mo Khazali:** There's one more thing with the Cypress, I guess, model that pushed people away in the last couple of years, which was that they basically, they, I believe they're VC backed. -[00:26:46] They needed to find a path towards monetization. So they released a paid model where you had a dashboard on their sort of like hosted platform. And then there was free alternatives. And they were scanning your node modules. There was this thing that came up where they were scanning node modules and sort of sabotaging if you were trying to use an open source alternative to their paid platform, which people really did not like. +[26:46] They needed to find a path towards monetization. So they released a paid model where you had a dashboard on their sort of like hosted platform. And then there was free alternatives. And they were scanning your node modules. There was this thing that came up where they were scanning node modules and sort of sabotaging if you were trying to use an open source alternative to their paid platform, which people really did not like. -[00:27:09] And there was a lot of backlash. So I think a lot of people lost a lot of trust with Cypress as well after that. +[27:09] And there was a lot of backlash. So I think a lot of people lost a lot of trust with Cypress as well after that. -[00:27:13] **Carl Vitullo:** That tracks. Okay. That's not great. Yep. Also in testing, the generically branded testing library is also losing ground, which I'm surprised by. I loved it. I thought it hit a really great niche between like unit tests and full end to end tests. +[27:13] **Carl Vitullo:** That tracks. Okay. That's not great. Yep. Also in testing, the generically branded testing library is also losing ground, which I'm surprised by. I loved it. I thought it hit a really great niche between like unit tests and full end to end tests. -[00:27:28] But I guess my thought is maybe. Playwright is now stable enough to cover that use case with less setup process. Cause it did take quite a bit of work and influenced how I developed features when I had testing library tests in place. So maybe it's a similar benefit for less work using Playwright instead of testing library. +[27:28] But I guess my thought is maybe. Playwright is now stable enough to cover that use case with less setup process. Cause it did take quite a bit of work and influenced how I developed features when I had testing library tests in place. So maybe it's a similar benefit for less work using Playwright instead of testing library. -[00:27:49] **Mark Erikson:** It is worth noting that Playwright actually added testing library inspired APIs like get by test. +[27:49] **Mark Erikson:** It is worth noting that Playwright actually added testing library inspired APIs like get by test. -[00:27:56] **Mo Khazali:** And I have another hypothesis to this, which is again anecdotal, but it's from working with many different sort of clients. I think it might also be market led, and the reason I say that is because end to end tests are much easier to sell to your business stakeholders. +[27:56] **Mo Khazali:** And I have another hypothesis to this, which is again anecdotal, but it's from working with many different sort of clients. I think it might also be market led, and the reason I say that is because end to end tests are much easier to sell to your business stakeholders. -[00:28:10] Oh, we're running and executing the full end to end lifecycle as if it was a user, and it helps prevent bugs because you can see when a flow, a major flow is broken. Whereas Component tests, whether they're with React testing library or any other solution or unit tests, are much smaller pieces of the segment. +[28:10] Oh, we're running and executing the full end to end lifecycle as if it was a user, and it helps prevent bugs because you can see when a flow, a major flow is broken. Whereas Component tests, whether they're with React testing library or any other solution or unit tests, are much smaller pieces of the segment. -[00:28:26] And I think when you're crunched for budget, but you still want to have some level of testing and confidence as a business stakeholder, you'll push your developers to do more end to end tests because they understand it more. That's my hypothesis. I've seen it more in conversations with some of the leaders and the companies that we've been working with. +[28:26] And I think when you're crunched for budget, but you still want to have some level of testing and confidence as a business stakeholder, you'll push your developers to do more end to end tests because they understand it more. That's my hypothesis. I've seen it more in conversations with some of the leaders and the companies that we've been working with. -[00:28:40] **Carl Vitullo:** Yeah, that makes sense. I personally find that a benefit because it'll, testing library lets me sidestep the whole, a whole set of questions. Like how do I log in? So weird stuff like that gets easier if you strip away the, you know, the stuff surrounding the feature you want to test. And once you've just run through the interactions there, but it definitely would be easier to sell. +[28:40] **Carl Vitullo:** Yeah, that makes sense. I personally find that a benefit because it'll, testing library lets me sidestep the whole, a whole set of questions. Like how do I log in? So weird stuff like that gets easier if you strip away the, you know, the stuff surrounding the feature you want to test. And once you've just run through the interactions there, but it definitely would be easier to sell. -[00:29:01] We're going to test the whole thing. All right. Many diversions later. So testing, State of JS. Vitest usage has really skyrocketed. It's been very impressive. Jest is still surprisingly well loved to me. Generally testing across the board, way up. Everyone is writing more tests. Moving out of tests into native. +[29:01] We're going to test the whole thing. All right. Many diversions later. So testing, State of JS. Vitest usage has really skyrocketed. It's been very impressive. Jest is still surprisingly well loved to me. Generally testing across the board, way up. Everyone is writing more tests. Moving out of tests into native. -[00:29:20] There's generally, it looks like a lot more people are building native code. This is probably a reflection of how much work the React Native and Expo teams have done to make that feasible for people who are use, who are coming at it from web development. Like in the, you know, different runtime section of this, they had, are you using, Electron, Expo, Cordova, React Native, all sorts of things, including native mobile. +[29:20] There's generally, it looks like a lot more people are building native code. This is probably a reflection of how much work the React Native and Expo teams have done to make that feasible for people who are use, who are coming at it from web development. Like in the, you know, different runtime section of this, they had, are you using, Electron, Expo, Cordova, React Native, all sorts of things, including native mobile. -[00:29:48] You know, just, are you building a native app? All of those are, well, all the modern popular options are way up. You know, Cordova is, you know, Declining, luckily, but React Native, Native Mobile, all of that is trending pretty way up. +[29:48] You know, just, are you building a native app? All of those are, well, all the modern popular options are way up. You know, Cordova is, you know, Declining, luckily, but React Native, Native Mobile, all of that is trending pretty way up. -[00:30:02] One option that was brand new to me in this survey is Tauri. Looked like an option that people love for doing native stuff and wanted to shout it out. +[30:02] One option that was brand new to me in this survey is Tauri. Looked like an option that people love for doing native stuff and wanted to shout it out. -[00:30:11] **Mark Erikson:** Yeah, and for those who aren't familiar with it, Tauri is basically a competitor to Electron. You know, the idea is you're writing a web app that runs it runs within the desktop as a native like application. +[30:11] **Mark Erikson:** Yeah, and for those who aren't familiar with it, Tauri is basically a competitor to Electron. You know, the idea is you're writing a web app that runs it runs within the desktop as a native like application. -[00:30:22] The distinction being that with Electron, you're having to ship an entire separate standalone copy of Chrome to run your web app, whereas Tauri wraps whatever the native web view is for that platform. So, you're only shipping, say, like, A five meg set of assets instead of, you know, 150 megs of Chrome to run your couple of megs of JavaScript. +[30:22] The distinction being that with Electron, you're having to ship an entire separate standalone copy of Chrome to run your web app, whereas Tauri wraps whatever the native web view is for that platform. So, you're only shipping, say, like, A five meg set of assets instead of, you know, 150 megs of Chrome to run your couple of megs of JavaScript. -[00:30:45] **Mo Khazali:** And just from a native app developer's purist perspective, I would, from a React natives perspective would say that's not really your native, but it's a good hybrid option, but that is just a personal thing because you're not rendering native views at the end of the day. You're rendering a web app with some connections onto the native layer APIs. +[30:45] **Mo Khazali:** And just from a native app developer's purist perspective, I would, from a React natives perspective would say that's not really your native, but it's a good hybrid option, but that is just a personal thing because you're not rendering native views at the end of the day. You're rendering a web app with some connections onto the native layer APIs. -[00:31:02] But that's generally the challenge with anything like Electron, Ionic, Capacitor, or Tauri. +[31:02] But that's generally the challenge with anything like Electron, Ionic, Capacitor, or Tauri. -[00:31:08] **Carl Vitullo:** Yep. Into like bundling and those tools, Webpack declining sharply. Really bad compared to others, like favorability and retention and all of that. Unfortunately, the way the questions are asked is, What have you used? +[31:08] **Carl Vitullo:** Yep. Into like bundling and those tools, Webpack declining sharply. Really bad compared to others, like favorability and retention and all of that. Unfortunately, the way the questions are asked is, What have you used? -[00:31:23] So there, it doesn't have a way of capturing What people currently use versus what they have used and have switched off. So it's hard to say whether people are actually not using Webpack anymore or, and whether they've added new tools to their toolkit or whether they've replaced it, that is not a question that we can answer with this dataset. +[31:23] So there, it doesn't have a way of capturing What people currently use versus what they have used and have switched off. So it's hard to say whether people are actually not using Webpack anymore or, and whether they've added new tools to their toolkit or whether they've replaced it, that is not a question that we can answer with this dataset. -[00:31:42] My, my intuition, my guess here would be that a lot of people are still using Webpack professionally, still working on a project that was spun up, you know, over the last two to five years. And, you know, switching bundlers is a really challenging project with not a lot of business value. So, yeah, I, I, it would not surprise me if a lot of people are still using Webpack at work, but have stopped relying on it for projects they make on their own or for, you know, open source work. +[31:42] My, my intuition, my guess here would be that a lot of people are still using Webpack professionally, still working on a project that was spun up, you know, over the last two to five years. And, you know, switching bundlers is a really challenging project with not a lot of business value. So, yeah, I, I, it would not surprise me if a lot of people are still using Webpack at work, but have stopped relying on it for projects they make on their own or for, you know, open source work. -[00:32:10] **Mark Erikson:** Also worth noting on that, on that front, that, Create React app. There's still plenty of CRA apps out there, even though it's no longer officially maintained or recommended, and that has always used Webpack internally. And Next is still a Webpack wrapper. They've been working on TurboPack, which I think now fully supports dev mode, but I don't think it supports production builds yet. +[32:10] **Mark Erikson:** Also worth noting on that, on that front, that, Create React app. There's still plenty of CRA apps out there, even though it's no longer officially maintained or recommended, and that has always used Webpack internally. And Next is still a Webpack wrapper. They've been working on TurboPack, which I think now fully supports dev mode, but I don't think it supports production builds yet. -[00:32:33] So, Next is still wrapping around Webpack for the foreseeable future. +[32:33] So, Next is still wrapping around Webpack for the foreseeable future. -[00:32:38] **Carl Vitullo:** Yeah, generally, like, ESBuild and Vite have been the big winners here as Webpack is losing usage. Rollup is going up as well a little bit, but as far as I know, that's largely used by library maintainers, not app developers. Yeah, monorepo awareness is also growing a lot. +[32:38] **Carl Vitullo:** Yeah, generally, like, ESBuild and Vite have been the big winners here as Webpack is losing usage. Rollup is going up as well a little bit, but as far as I know, that's largely used by library maintainers, not app developers. Yeah, monorepo awareness is also growing a lot. -[00:32:55] You know, the classics from, like, Several years ago where Yarn Workspaces and Lerna, those are declining. They are not the popular options anymore, but NX and PMPM are currently the leaders there, although I'm not sure if people would answer, I'm, I'm, I'm wondering if people might've said, Oh yeah, I use PMPM when they didn't mean they use it for monorepos, that's not the primary use of PMPM as far as I know. +[32:55] You know, the classics from, like, Several years ago where Yarn Workspaces and Lerna, those are declining. They are not the popular options anymore, but NX and PMPM are currently the leaders there, although I'm not sure if people would answer, I'm, I'm, I'm wondering if people might've said, Oh yeah, I use PMPM when they didn't mean they use it for monorepos, that's not the primary use of PMPM as far as I know. -[00:33:18] And TurboRepo from. Vercel is also growing, but for other runtimes, Bun is slightly more popular than Deno. Interesting to check in on. +[33:18] And TurboRepo from. Vercel is also growing, but for other runtimes, Bun is slightly more popular than Deno. Interesting to check in on. -[00:33:27] **Mark Erikson:** Now, is that, is that in sentiment or like actual usage amounts that we know of? +[33:27] **Mark Erikson:** Now, is that, is that in sentiment or like actual usage amounts that we know of? -[00:33:33] **Carl Vitullo:** That was claimed usage. So people saying, yes, I have used this. More people said that for Bun. +[33:33] **Carl Vitullo:** That was claimed usage. So people saying, yes, I have used this. More people said that for Bun. -[00:33:39] But, who's to say if it was personal, who's to say if it was professional, playing with something is very different from introducing it in a work setting, and my intuition says that Deno is currently better positioned than Bunn to be used at work, which is a much stickier usage. Yeah, another fun stat that I caught and wanted to shout out. +[33:39] But, who's to say if it was personal, who's to say if it was professional, playing with something is very different from introducing it in a work setting, and my intuition says that Deno is currently better positioned than Bunn to be used at work, which is a much stickier usage. Yeah, another fun stat that I caught and wanted to shout out. -[00:33:57] 18 percent of respondents have not used any AI tools. You know, whether that's Copilot or ChatGPT or Claude. Yeah, 1 in 5 of tech people who are aware enough of the online Zeitgeist to respond to a survey have not used it at all. +[33:57] 18 percent of respondents have not used any AI tools. You know, whether that's Copilot or ChatGPT or Claude. Yeah, 1 in 5 of tech people who are aware enough of the online Zeitgeist to respond to a survey have not used it at all. -[00:34:14] **Mo Khazali:** Just another interesting fun one. Apparently, 50 percent of respondents are still using Lodash actively, which I found was interesting, but more interesting than that is the 33 percent that still use Moment, despite some of those APIs basically being available in the, in the browser APIs. +[34:14] **Mo Khazali:** Just another interesting fun one. Apparently, 50 percent of respondents are still using Lodash actively, which I found was interesting, but more interesting than that is the 33 percent that still use Moment, despite some of those APIs basically being available in the, in the browser APIs. -[00:34:29] So, takes a long time to get rid of some third party libraries, it seems. +[34:29] So, takes a long time to get rid of some third party libraries, it seems. -[00:34:32] **Carl Vitullo:** Yeah, yeah, it really does. Yeah, and I wanted to shout out the 20 percent of people who responded that are still hoping for, a pipe operator and pattern matching. My heart goes out to you as one of you. +[34:32] **Carl Vitullo:** Yeah, yeah, it really does. Yeah, and I wanted to shout out the 20 percent of people who responded that are still hoping for, a pipe operator and pattern matching. My heart goes out to you as one of you. -[00:34:44] I, that's something, those are two features that I got really excited about and like. 2015 16 that we are still waiting for. So I think I'm, I think I've given up at this point. Yeah. And Mo, about, uh, on library usage, I was really surprised to see that RxJS had a lot of usage. I think of it as a niche library, but, but by survey responses, a surprisingly large number of people are making use of it. +[34:44] I, that's something, those are two features that I got really excited about and like. 2015 16 that we are still waiting for. So I think I'm, I think I've given up at this point. Yeah. And Mo, about, uh, on library usage, I was really surprised to see that RxJS had a lot of usage. I think of it as a niche library, but, but by survey responses, a surprisingly large number of people are making use of it. -[00:35:09] **Mo Khazali:** That's quite interesting. I mean, the, the, the one that everyone makes jokes about is jQuery as well, which is 22 percent still, but you know, yeah, it's, it's, RxJS has always been more niche and I'm, I think it was mainly used predominantly by the Angular community, if I'm not mistaken, right? Someone from the, uh, from the comments is saying that it's still a first class tool in Angular, so that, that might check out as to why it's got such a high usage. +[35:09] **Mo Khazali:** That's quite interesting. I mean, the, the, the one that everyone makes jokes about is jQuery as well, which is 22 percent still, but you know, yeah, it's, it's, RxJS has always been more niche and I'm, I think it was mainly used predominantly by the Angular community, if I'm not mistaken, right? Someone from the, uh, from the comments is saying that it's still a first class tool in Angular, so that, that might check out as to why it's got such a high usage. -[00:35:31] **Carl Vitullo:** Okay, that, that would scan. Sure, sure. +[35:31] **Carl Vitullo:** Okay, that, that would scan. Sure, sure. -[00:35:33] Okay. Maybe this is my React bias showing then. +[35:33] Okay. Maybe this is my React bias showing then. -[00:35:37] **Mark Erikson:** Yeah, I mean, they've, Angular has been introducing signals within the last couple major versions as they're, they are trying to put some emphasis on that, but RxJS is still very integrated into the Angular ecosystem. +[35:37] **Mark Erikson:** Yeah, I mean, they've, Angular has been introducing signals within the last couple major versions as they're, they are trying to put some emphasis on that, but RxJS is still very integrated into the Angular ecosystem. -[00:35:49] **Carl Vitullo:** Gotcha. Okay. Looking at survey respondents generally, you know, the number of people who answered like the demographic questions at the beginning versus number of people who answered, who gave any answer for what content do you consume, like 80 to 90 percent do not consume content. +[35:49] **Carl Vitullo:** Gotcha. Okay. Looking at survey respondents generally, you know, the number of people who answered like the demographic questions at the beginning versus number of people who answered, who gave any answer for what content do you consume, like 80 to 90 percent do not consume content. -[00:36:05] Like they did not give any answer for what content do you consume, which I just think is really. I think it's an important thing to keep in mind when you're, you know, as people are saying like, Oh, you know, Oh, everyone is, everyone's talking about this. Everyone's thinking about this. So and so made a video on this. +[36:05] Like they did not give any answer for what content do you consume, which I just think is really. I think it's an important thing to keep in mind when you're, you know, as people are saying like, Oh, you know, Oh, everyone is, everyone's talking about this. Everyone's thinking about this. So and so made a video on this. -[00:36:19] Like, you know what? Most people didn't see it. Most people are not thinking about that. Most people aren't even aware of that. I just think that, I just think that is a great, Demonstration of like the participation inequality that happens in so many software communities, or that happens in communities generally, where like 90 percent of the people are not participating in the same way as the most active 10%. +[36:19] Like, you know what? Most people didn't see it. Most people are not thinking about that. Most people aren't even aware of that. I just think that, I just think that is a great, Demonstration of like the participation inequality that happens in so many software communities, or that happens in communities generally, where like 90 percent of the people are not participating in the same way as the most active 10%. ## [Dark Matter Developers](https://www.hanselman.com/blog/) -[00:36:43] **Mark Erikson:** And I have a very specific link for that, which is Scott Hanselman's classic post on dark matter developers, people who are just going to work and doing their thing and going home, and they don't know about the Twitter discussions or what's popular or the trends. They're just doing their thing quietly. +[36:43] **Mark Erikson:** And I have a very specific link for that, which is Scott Hanselman's classic post on dark matter developers, people who are just going to work and doing their thing and going home, and they don't know about the Twitter discussions or what's popular or the trends. They're just doing their thing quietly. -[00:37:01] And we don't hear about them because they're not involved in the discussions. But the +[37:01] And we don't hear about them because they're not involved in the discussions. But the -[00:37:06] **Carl Vitullo:** That is actually specifically the target that I'm kind of going for, for this podcast. I want to be the once a month, one hour long summary of that fire hose. Like, you don't care enough to drink the entire fire hose, stick your face in front of the blast of water, but want to get the signal. +[37:06] **Carl Vitullo:** That is actually specifically the target that I'm kind of going for, for this podcast. I want to be the once a month, one hour long summary of that fire hose. Like, you don't care enough to drink the entire fire hose, stick your face in front of the blast of water, but want to get the signal. -[00:37:23] that's what I view our role here as. We pull that signal out so that you can spend one hour consuming it instead of More than that, If you, instead of it being a part time job, staying on top of the latest news, I want this podcast to be an effective way to do so. +[37:23] that's what I view our role here as. We pull that signal out so that you can spend one hour consuming it instead of More than that, If you, instead of it being a part time job, staying on top of the latest news, I want this podcast to be an effective way to do so. -[00:37:37] So yeah. Hello, Dark Matter developers. All right. That is half an hour of content on State of JS, which is good because there was not a ton of, React news otherwise. So yeah, Mark, you want to take us into our lightning round links? +[37:37] So yeah. Hello, Dark Matter developers. All right. That is half an hour of content on State of JS, which is good because there was not a ton of, React news otherwise. So yeah, Mark, you want to take us into our lightning round links? -[00:37:49] **Mark Erikson:** Yep. So having said that we do have a bunch of lightning round stuff to go through. +[37:49] **Mark Erikson:** Yep. So having said that we do have a bunch of lightning round stuff to go through. ## [NYT](https://open.nytimes.com/enhancing-the-new-york-times-web-performance-with-react-18-d6f91a7c5af8) and [Slack](https://slack.engineering/balancing-old-tricks-with-new-feats-ai-powered-conversion-from-enzyme-to-react-testing-library-at-slack/) update to React 18 (Enzyme to blame) -[00:37:54] **Mark Erikson:** First off, a couple of interesting company migration blog posts. We were talking earlier about, you know, like only two thirds of respondents being on React 18 and the New York Times put up a pretty big post about how they just updated React. to React 18. Some good details on the work they had to do and some of the challenges they ran into, especially with some of their embedded interactive setups, and some information on some of the performance improvements that they saw. +[37:54] **Mark Erikson:** First off, a couple of interesting company migration blog posts. We were talking earlier about, you know, like only two thirds of respondents being on React 18 and the New York Times put up a pretty big post about how they just updated React. to React 18. Some good details on the work they had to do and some of the challenges they ran into, especially with some of their embedded interactive setups, and some information on some of the performance improvements that they saw. -[00:38:21] One interesting note is that A lot of their work had to do with migrating from enzyme tests to React testing library. And so, on a very similar note, Slack put up a post where they said, you know, we have tons and tons of enzyme tests and we, we tried to migrate those to React testing library. And, it was so hard, we actually ended up trying to automate a lot of the conversion using a combination of AI language models and some various additional tools. +[38:21] One interesting note is that A lot of their work had to do with migrating from enzyme tests to React testing library. And so, on a very similar note, Slack put up a post where they said, you know, we have tons and tons of enzyme tests and we, we tried to migrate those to React testing library. And, it was so hard, we actually ended up trying to automate a lot of the conversion using a combination of AI language models and some various additional tools. -[00:38:52] So, this goes back to the test, and to the whole test discussion. Like, tests provide value, but they're code. And code becomes legacy. And you have to update it and modernize it. And that in itself can be a real drag on trying to change things. +[38:52] So, this goes back to the test, and to the whole test discussion. Like, tests provide value, but they're code. And code becomes legacy. And you have to update it and modernize it. And that in itself can be a real drag on trying to change things. ## [Rise Tools launched](https://rise.tools/) -[00:39:05] **Mo Khazali:** So I'll jump in with a few things. First is that Rise Tools has been launched. +[39:05] **Mo Khazali:** So I'll jump in with a few things. First is that Rise Tools has been launched. -[00:39:11] So Rise Tools is created by Mike Grabowski. So Mike is the former founder of Callstack and he's been very involved in the React Native ecosystem. It's basically, it's not tied to React Native, but it's basically targeting React Native for now. It's a way to build server driven apps. It's a server driven UI app where the server controls how the UI is layouted. +[39:11] So Rise Tools is created by Mike Grabowski. So Mike is the former founder of Callstack and he's been very involved in the React Native ecosystem. It's basically, it's not tied to React Native, but it's basically targeting React Native for now. It's a way to build server driven apps. It's a server driven UI app where the server controls how the UI is layouted. -[00:39:32] And it kind of comes with all things battery included, from the server, all the way up to the React primitives, and even some more opinionated UI design systems like Tamagui if you want to use it. It's kind of evolving in a way where it ends up being a bit of a meta framework on top of a meta framework. +[39:32] And it kind of comes with all things battery included, from the server, all the way up to the React primitives, and even some more opinionated UI design systems like Tamagui if you want to use it. It's kind of evolving in a way where it ends up being a bit of a meta framework on top of a meta framework. ## Mo's talk about server-driven mobile UI -[00:39:48] **Mo Khazali:** So a meta meta framework, we're getting into that age of front end development. Um, but it's really cool. It's server driven UI is very difficult. And I talk about how difficult it is in mobile development, many places. And I did a talk recently at a meetup in Poland. So shameless plug. If you're interested to see why this is an actual challenge in the React native world, just take a look at that YouTube video and hopefully you'll get a bit of a primer. +[39:48] **Mo Khazali:** So a meta meta framework, we're getting into that age of front end development. Um, but it's really cool. It's server driven UI is very difficult. And I talk about how difficult it is in mobile development, many places. And I did a talk recently at a meetup in Poland. So shameless plug. If you're interested to see why this is an actual challenge in the React native world, just take a look at that YouTube video and hopefully you'll get a bit of a primer. -[00:40:11] **Mark Erikson:** Gasp! A shameless plug on this podcast. What? +[40:11] **Mark Erikson:** Gasp! A shameless plug on this podcast. What? ## [NativeWind UI launching](https://nativewindui.com/) -[00:40:15] **Mo Khazali:** Next up, Native Wind UI is launching. So this goes very much along the same train of thought as we were having a conversation about with the state of React, where a lot of these component libraries are not popular anymore, but people want these sort of copy pastable code components that have 90 percent of the stuff there and they can modify and change it as much as they want. +[40:15] **Mo Khazali:** Next up, Native Wind UI is launching. So this goes very much along the same train of thought as we were having a conversation about with the state of React, where a lot of these component libraries are not popular anymore, but people want these sort of copy pastable code components that have 90 percent of the stuff there and they can modify and change it as much as they want. -[00:40:35] It doesn't come with any behavioral APIs. It's just. UI wise, how do things look like and what do the components look like? So this is basically like Tailwind UI. It's going to be a paid UI kit, UI copy and pasteable components and templates. But I think it's interesting that the React Native community is going in this space. +[40:35] It doesn't come with any behavioral APIs. It's just. UI wise, how do things look like and what do the components look like? So this is basically like Tailwind UI. It's going to be a paid UI kit, UI copy and pasteable components and templates. But I think it's interesting that the React Native community is going in this space. ## [GlueStack too](https://gluestack.io/) -[00:40:51] **Mo Khazali:** Similarly, the GlueStack team. So GlueStack is, made by the former creators of NativeBase, which was another popular UI library and. GlueStack is basically the successor to that and they initially had a more batteries included opinionated API component library that is now going seemingly in a very similar direction to native WinDUI and Tailwind UI, which is, we have these copy pastable components. +[40:51] **Mo Khazali:** Similarly, the GlueStack team. So GlueStack is, made by the former creators of NativeBase, which was another popular UI library and. GlueStack is basically the successor to that and they initially had a more batteries included opinionated API component library that is now going seemingly in a very similar direction to native WinDUI and Tailwind UI, which is, we have these copy pastable components. -[00:41:16] So think of it as ShadCN as well, but in the React Native ecosystem. And the lovely thing about both of these libraries is, they work universally with React Native. So if you're targeting React Native on the web, these libraries will automatically work on both web and mobile, which is really cool, and a step in the right direction. +[41:16] So think of it as ShadCN as well, but in the React Native ecosystem. And the lovely thing about both of these libraries is, they work universally with React Native. So if you're targeting React Native on the web, these libraries will automatically work on both web and mobile, which is really cool, and a step in the right direction. ## [Swift Package manager support, moving away from CocoaPods](https://) -[00:41:30] **Mo Khazali:** More in the React Native ecosystem, so, If you've been in this ecosystem, you'll know that typically what we use on the iOS and MacOS front is we will use CocoaPods as a dependency and package manager. Now, CocoaPods is good, it works, it's one that's been around for a while. The iOS native community is moving towards Swift Package Manager that Apple created themselves. +[41:30] **Mo Khazali:** More in the React Native ecosystem, so, If you've been in this ecosystem, you'll know that typically what we use on the iOS and MacOS front is we will use CocoaPods as a dependency and package manager. Now, CocoaPods is good, it works, it's one that's been around for a while. The iOS native community is moving towards Swift Package Manager that Apple created themselves. -[00:41:53] And so now this PR got merged, but we will have Swift package manager support for React Native. So if you want to use Swift package manager, you now have the option to do so, which is going to be great for brownfield apps. So apps that are, some parts of it are in React Native, other parts are just purely native. +[41:53] And so now this PR got merged, but we will have Swift package manager support for React Native. So if you want to use Swift package manager, you now have the option to do so, which is going to be great for brownfield apps. So apps that are, some parts of it are in React Native, other parts are just purely native. -[00:42:07] This will make it much easier to adopt if you've already been using Swift package manager for your native apps. +[42:07] This will make it much easier to adopt if you've already been using Swift package manager for your native apps. -[00:42:11] Now, one of the things that has been a challenge with the React Native ecosystem is around out of tree platform support and how easy it is to integrate them with tools like Expo. So out of tree platforms, for everyone who's not aware, are platforms that are not iOS and Android. +[42:11] Now, one of the things that has been a challenge with the React Native ecosystem is around out of tree platform support and how easy it is to integrate them with tools like Expo. So out of tree platforms, for everyone who's not aware, are platforms that are not iOS and Android. -[00:42:26] So, web, macOS, Windows, AR, VR, headsets like Vision Pro, and so on and so forth. So those are all platforms that are not officially managed and maintained by Meta, but they have sort of community partners that are maintaining them. And so macOS is maintained by, uh, Microsoft. And one of the challenges there was how do you get Expo to work with it? +[42:26] So, web, macOS, Windows, AR, VR, headsets like Vision Pro, and so on and so forth. So those are all platforms that are not officially managed and maintained by Meta, but they have sort of community partners that are maintaining them. And so macOS is maintained by, uh, Microsoft. And one of the challenges there was how do you get Expo to work with it? -[00:42:45] Because previously you would need to do it in a bare React Native app, which means you have to do a lot of the typing and the wiring and all of the infrastructure underneath it. There's this concept of config plugins in Expo, and now there's support for React native Mac OS, and people are seemingly getting ready to be able to develop desktop apps with Expo, which is really exciting. +[42:45] Because previously you would need to do it in a bare React Native app, which means you have to do a lot of the typing and the wiring and all of the infrastructure underneath it. There's this concept of config plugins in Expo, and now there's support for React native Mac OS, and people are seemingly getting ready to be able to develop desktop apps with Expo, which is really exciting. -[00:43:03] **Carl Vitullo:** Sorry, wait, did you say that this is maintained by Microsoft? +[43:03] **Carl Vitullo:** Sorry, wait, did you say that this is maintained by Microsoft? -[00:43:06] **Mark Erikson:** Yes. Microsoft maintains the React native implementations for Windows and for Mac. +[43:06] **Mark Erikson:** Yes. Microsoft maintains the React native implementations for Windows and for Mac. -[00:43:13] **Carl Vitullo:** Okay. Just needed to check that. Cool. +[43:13] **Carl Vitullo:** Okay. Just needed to check that. Cool. -[00:43:15] **Mo Khazali:** Yes. Yeah. this is one of the things with React Native where there's so many people involved now. It's not just Meta, it's Meta, Microsoft, Amazon, Shopify, and name a bunch of other companies. +[43:15] **Mo Khazali:** Yes. Yeah. this is one of the things with React Native where there's so many people involved now. It's not just Meta, it's Meta, Microsoft, Amazon, Shopify, and name a bunch of other companies. ## [React Native Filament](https://twitter.com/mrousavy/status/) -[00:43:24] **Mo Khazali:** Next up, we have React Native Filament. So, it's a hot time in the 3D rendering space of React Native. there's a lot of stuff that's happening in the last few months. React 3 Fibers suddenly got a big boost in the React Native ecosystem. More and more people are talking about it. I've seen a lot of talks in 2024 about it. +[43:24] **Mo Khazali:** Next up, we have React Native Filament. So, it's a hot time in the 3D rendering space of React Native. there's a lot of stuff that's happening in the last few months. React 3 Fibers suddenly got a big boost in the React Native ecosystem. More and more people are talking about it. I've seen a lot of talks in 2024 about it. -[00:43:41] The Skia team, the React Native Skia team have also been talking about GPU and 3d rendering. So they did that at their talk in AppJS. We covered it in the podcast back in May. And so now the team at Margello have released React Native Filament. So it's a base 3d rendering engine built for React Native. The nice thing about it being C is that it works kind of out of the box for most of these native platforms. +[43:41] The Skia team, the React Native Skia team have also been talking about GPU and 3d rendering. So they did that at their talk in AppJS. We covered it in the podcast back in May. And so now the team at Margello have released React Native Filament. So it's a base 3d rendering engine built for React Native. The nice thing about it being C is that it works kind of out of the box for most of these native platforms. -[00:44:02] It is seemingly, again, this is how it's marketed, is that it's basically with less than 50 lines of code for you to load a 3d model and basically have things like pan gestures, zooming, and all of that, which is really hard to get. +[44:02] It is seemingly, again, this is how it's marketed, is that it's basically with less than 50 lines of code for you to load a 3d model and basically have things like pan gestures, zooming, and all of that, which is really hard to get. -[00:44:15] And you need to actually manually code a lot of that yourself. So this is really cool. We'll see how it, how it materializes and how it evolves. There's a lot of 3d libraries that are coming to fruition and you've got to choose and see which ecosystem grows. So you're basically placing bets on horses and seeing which one kicks off. +[44:15] And you need to actually manually code a lot of that yourself. So this is really cool. We'll see how it, how it materializes and how it evolves. There's a lot of 3d libraries that are coming to fruition and you've got to choose and see which ecosystem grows. So you're basically placing bets on horses and seeing which one kicks off. ## [React Native for web devs](https://expo.dev/blog/) -[00:44:31] **Mo Khazali:** On the trend of what we talked with the state of JS and, you know, how, uh, native usage is growing, Kati Kraman from the Expo team, she's written an article, a guide to React Native for web React devs. So people that haven't been in the native space kind of understand what are the things that you need to learn sort of like a TLDR before you can start creating React Native apps. +[44:31] **Mo Khazali:** On the trend of what we talked with the state of JS and, you know, how, uh, native usage is growing, Kati Kraman from the Expo team, she's written an article, a guide to React Native for web React devs. So people that haven't been in the native space kind of understand what are the things that you need to learn sort of like a TLDR before you can start creating React Native apps. -[00:44:51] This is amazing because frankly, this is one of the things that I always rave about and rant about, if you don't tell people about the gotchas, they'll come and burn themselves in the React Native ecosystem, and then they will hate React Native for the rest of their lives. So, I love education and good education like this, which is specifically targeted for web React devs. +[44:51] This is amazing because frankly, this is one of the things that I always rave about and rant about, if you don't tell people about the gotchas, they'll come and burn themselves in the React Native ecosystem, and then they will hate React Native for the rest of their lives. So, I love education and good education like this, which is specifically targeted for web React devs. ## [Build Windows apps from a Mac](https://devblogs.microsoft.com/) -[00:45:09] **Mo Khazali:** And last in this React Native train, at least in this one, is that one of the things, again, with out of tree platforms, again, with the Microsoft team, is that they maintain React Native Windows. But you need to have a Windows machine to develop for React Native with Windows, which many of us don't, myself included. +[45:09] **Mo Khazali:** And last in this React Native train, at least in this one, is that one of the things, again, with out of tree platforms, again, with the Microsoft team, is that they maintain React Native Windows. But you need to have a Windows machine to develop for React Native with Windows, which many of us don't, myself included. -[00:45:25] I have renounced the Windows days since many, many years ago. And so it makes it really hard to build Windows apps. And I've always wanted to do it. I've got an Xbox. You can build Xbox apps with React Native using the Windows implementation, but you need a Windows machine to be able to test your apps, which kind of sucks. +[45:25] I have renounced the Windows days since many, many years ago. And so it makes it really hard to build Windows apps. And I've always wanted to do it. I've got an Xbox. You can build Xbox apps with React Native using the Windows implementation, but you need a Windows machine to be able to test your apps, which kind of sucks. -[00:45:40] So they've written an article on how you can build Windows apps, with React Native. On a Mac. The spoiler alert is that it's not straightforward, unfortunately, you have to boot up a parallel Windows machine and then sort of port forward stuff and then use it on a VM to test it out, which is not the best DevEx, but at least there is an escape hatch if you really are inclined to do so. +[45:40] So they've written an article on how you can build Windows apps, with React Native. On a Mac. The spoiler alert is that it's not straightforward, unfortunately, you have to boot up a parallel Windows machine and then sort of port forward stuff and then use it on a VM to test it out, which is not the best DevEx, but at least there is an escape hatch if you really are inclined to do so. -[00:46:00] So hopefully that opens the doors to React Native Windows for more and more people who are using Macs as their development drivers. +[46:00] So hopefully that opens the doors to React Native Windows for more and more people who are using Macs as their development drivers. ## [Ecosystem Performance group, e18e](https://e18e.dev/blog/e18e) -[00:46:06] **Mark Erikson:** Changing gears entirely, we all know the jokes about how, you know, Node modules is the heaviest object in the known universe. you know, you install one package and you get 1, 500 dependencies installed as a result. +[46:06] **Mark Erikson:** Changing gears entirely, we all know the jokes about how, you know, Node modules is the heaviest object in the known universe. you know, you install one package and you get 1, 500 dependencies installed as a result. -[00:46:20] And there's a lot of factors that go into it. It's how the Node ecosystem has evolved. There's also cases where, you know, certain maintainers are obsessed with Maintaining infinite backwards compatibility instead of allowing the ecosystem to move forward with modern tooling. I've been complaining for years that surely there has to be a way that we collectively as a community could go in and start You know, removing unnecessary dependencies from popular packages and end up improving, you know, download speeds and number of dependencies for everybody. +[46:20] And there's a lot of factors that go into it. It's how the Node ecosystem has evolved. There's also cases where, you know, certain maintainers are obsessed with Maintaining infinite backwards compatibility instead of allowing the ecosystem to move forward with modern tooling. I've been complaining for years that surely there has to be a way that we collectively as a community could go in and start You know, removing unnecessary dependencies from popular packages and end up improving, you know, download speeds and number of dependencies for everybody. -[00:46:52] And there's now an actual community effort to do this. It's in a group called the Ecosystem Performance Effort. And it's just a community group. They've got a Discord for discussing things and a repo for pointing things out. But it's things like, could we look at, say, the isnumber package? And find the most common parent packages that depend on it, and replace those. +[46:52] And there's now an actual community effort to do this. It's in a group called the Ecosystem Performance Effort. And it's just a community group. They've got a Discord for discussing things and a repo for pointing things out. But it's things like, could we look at, say, the isnumber package? And find the most common parent packages that depend on it, and replace those. -[00:47:16] And end up saving, you know, like, cutting down on dependency trees, and saving download bandwidth for everybody. I'm very, very excited to see a lot of people actually spending time and effort on this. This is the kind of grassroots, you know, like, effort that actually benefits everybody. +[47:16] And end up saving, you know, like, cutting down on dependency trees, and saving download bandwidth for everybody. I'm very, very excited to see a lot of people actually spending time and effort on this. This is the kind of grassroots, you know, like, effort that actually benefits everybody. -[00:47:32] **Carl Vitullo:** I saw a PR specifically about inlining `isNumber`, and it did, I don't know if I quite 100 percent buy this math, but the math they did was, by inlining this package instead of installing it as a dependency, we save this many kilobytes. This module is downloaded this many times per week. You multiply those together and ergo, we are saving 440 gigabytes of bandwidth every week. I am, I wonder if that is how that shakes out in practice with like caching and stuff. But if by inlining is number, we can have 440 gigabytes less data flowing through the air. Uh, that's, that's fascinating. +[47:32] **Carl Vitullo:** I saw a PR specifically about inlining `isNumber`, and it did, I don't know if I quite 100 percent buy this math, but the math they did was, by inlining this package instead of installing it as a dependency, we save this many kilobytes. This module is downloaded this many times per week. You multiply those together and ergo, we are saving 440 gigabytes of bandwidth every week. I am, I wonder if that is how that shakes out in practice with like caching and stuff. But if by inlining is number, we can have 440 gigabytes less data flowing through the air. Uh, that's, that's fascinating. ## [ES2024 released](https://x.com/robpalmer2/status/1806064466510897240) -[00:48:10] **Carl Vitullo:** We have also, ES2024 has been ratified by the, by TC39. We've got the spec, which is very dense and hard to read. Fun. Rob Palmer, who's part of the team involved in that also announced it on Twitter. A lot of these are like pretty esoteric to me, like well formed Unicode strings. +[48:10] **Carl Vitullo:** We have also, ES2024 has been ratified by the, by TC39. We've got the spec, which is very dense and hard to read. Fun. Rob Palmer, who's part of the team involved in that also announced it on Twitter. A lot of these are like pretty esoteric to me, like well formed Unicode strings. -[00:48:30] I didn't know they were not well formed. Promise. withResolvers, I guess. I don't, I don't know what that is either. ResizableArrayBuffers, ArrayBufferTransfer. Two that are a little bit more salient for me is Array. GroupBy and Object. GroupBy. What a great thing to have added to the standard library. So that's nice. +[48:30] I didn't know they were not well formed. Promise. withResolvers, I guess. I don't, I don't know what that is either. ResizableArrayBuffers, ArrayBufferTransfer. Two that are a little bit more salient for me is Array. GroupBy and Object. GroupBy. What a great thing to have added to the standard library. So that's nice. -[00:48:50] There's a regex v flag for creating regular expressions with more advanced features for working with sets of strings. Yeah. Lots of stuff. We've got a new spec, nothing too exciting though. +[48:50] There's a regex v flag for creating regular expressions with more advanced features for working with sets of strings. Yeah. Lots of stuff. We've got a new spec, nothing too exciting though. ## [Memory leaks: Compiler won't save you](https://schiener.io/) -[00:49:00] **Mark Erikson:** We've mentioned one or two different articles that looked at ways you can end up with memory leaks in React applications due to closures and how JavaScript engines actually behave, and there's, there's some discussion of what happens when React Compiler comes into play, and so the author of those posts did some more research and concluded that no, you can, you can still end up with memory leaks, even with React Compiler. +[49:00] **Mark Erikson:** We've mentioned one or two different articles that looked at ways you can end up with memory leaks in React applications due to closures and how JavaScript engines actually behave, and there's, there's some discussion of what happens when React Compiler comes into play, and so the author of those posts did some more research and concluded that no, you can, you can still end up with memory leaks, even with React Compiler. -[00:49:25] It sort of ends up in the same situation where. Capturing variables in scope, and due to the way JavaScript engines work, you can still end up with some memory leaks if you're not careful. Similarly, Jake Archibald, who's done a lot of articles and research over the years around JS behavior, also just put up a very, very similar post talking about memory leaks and garbage collection with closures. +[49:25] It sort of ends up in the same situation where. Capturing variables in scope, and due to the way JavaScript engines work, you can still end up with some memory leaks if you're not careful. Similarly, Jake Archibald, who's done a lot of articles and research over the years around JS behavior, also just put up a very, very similar post talking about memory leaks and garbage collection with closures. -[00:49:46] So, this is stuff that I only sort of half understand myself. And so seeing people go into these deep technical dives to research the actual behavior is very helpful. We've also, I believe we've mentioned the new JSR package registry a couple times, created by the Deno team. And there was a video talk from, I believe, Luca, who's part of the Deno team, going into some details on You know, a lot of the stuff that I've run into publishing the Redux packages over the last couple of years. +[49:46] So, this is stuff that I only sort of half understand myself. And so seeing people go into these deep technical dives to research the actual behavior is very helpful. We've also, I believe we've mentioned the new JSR package registry a couple times, created by the Deno team. And there was a video talk from, I believe, Luca, who's part of the Deno team, going into some details on You know, a lot of the stuff that I've run into publishing the Redux packages over the last couple of years. -[00:50:15] You know, issues trying to do the publishing, various problems with npm, goes into some details on how JSR is different, how it's supposed to work, and give some examples of actually doing the publishing. I don't know how much actual usage JSR is getting, but it's nice to see people actually rethinking this. +[50:15] You know, issues trying to do the publishing, various problems with npm, goes into some details on how JSR is different, how it's supposed to work, and give some examples of actually doing the publishing. I don't know how much actual usage JSR is getting, but it's nice to see people actually rethinking this. ## [React Native + Flutter](https://x.com/mdj_dev/status/) -[00:50:33] **Mo Khazali:** The next thing is just a little bit of memes. More than anything, someone has decided to post a demo of React Native and Flutter running in a single app, which is quite funny. Believe it or not, I actually have tried this about a year ago. And the reason was we had someone who wanted to migrate away from Flutter. +[50:33] **Mo Khazali:** The next thing is just a little bit of memes. More than anything, someone has decided to post a demo of React Native and Flutter running in a single app, which is quite funny. Believe it or not, I actually have tried this about a year ago. And the reason was we had someone who wanted to migrate away from Flutter. -[00:50:50] So out of these memes, good conversations have actually started around how you can migrate and integrate Flutter and React Native together. In the case where someone wants to move away from Flutter. And you use React Native instead, so pretty fun times. +[50:50] So out of these memes, good conversations have actually started around how you can migrate and integrate Flutter and React Native together. In the case where someone wants to move away from Flutter. And you use React Native instead, so pretty fun times. ## [Bun Q3 roadmap](https://x.com/jarredsumner/status/1807731197046653438) -[00:51:01] **Carl Vitullo:** Earlier this month, Jared Sumner posted about the Q3 roadmap for BUN. +[51:01] **Carl Vitullo:** Earlier this month, Jared Sumner posted about the Q3 roadmap for BUN. -[00:51:06] He says it's not exhaustive. And in the replies, adds more like, Oh, maybe we'll get to this too. But new stuff they're looking, they, they want to add a full stack bundler. I'm not exactly sure what that means, but I guess it's going to have overlap with like RSPack and probably server components too. I don't know. +[51:06] He says it's not exhaustive. And in the replies, adds more like, Oh, maybe we'll get to this too. But new stuff they're looking, they, they want to add a full stack bundler. I'm not exactly sure what that means, but I guess it's going to have overlap with like RSPack and probably server components too. I don't know. -[00:51:22] A text lock file. So I guess another lock file format. I don't know why we need another package dependency tool. A CSS parser? on this roadmap seem confusing to me as a JavaScript runtime. He also talks about adding V8 C API compatibility, which sure, that makes sense, I can, I can see that, and getting better snapshots and timers for the bun test and mentions that he would like to ship a Postgres client sometime this quarter, but it's not in the main roadmap post that he made. +[51:22] A text lock file. So I guess another lock file format. I don't know why we need another package dependency tool. A CSS parser? on this roadmap seem confusing to me as a JavaScript runtime. He also talks about adding V8 C API compatibility, which sure, that makes sense, I can, I can see that, and getting better snapshots and timers for the bun test and mentions that he would like to ship a Postgres client sometime this quarter, but it's not in the main roadmap post that he made. ## [Learn Suspense by building a Suspense-enabled library](https://www.) -[00:51:57] **Mark Erikson:** So, we've been talking about suspense for, what, like six plus years now, but, there's been all the confusion over, how can you use suspense? Suspense only works with, React server components, or can you use it on the client? Are you supposed to use it on the client? There was a really good post that came out recently, Learn suspense by building a suspense enabled library that goes through some of the actual mechanics of trying to build a client side lib that uses suspense. +[51:57] **Mark Erikson:** So, we've been talking about suspense for, what, like six plus years now, but, there's been all the confusion over, how can you use suspense? Suspense only works with, React server components, or can you use it on the client? Are you supposed to use it on the client? There was a really good post that came out recently, Learn suspense by building a suspense enabled library that goes through some of the actual mechanics of trying to build a client side lib that uses suspense. -[00:52:24] I'll be honest, I bookmarked this one because people have been begging for suspense support for RTKQuery. I looked at the issue actually, the issue is at least three years old. So I will probably be referring to this post when we hopefully get around to doing it, maybe later this year? +[52:24] I'll be honest, I bookmarked this one because people have been begging for suspense support for RTKQuery. I looked at the issue actually, the issue is at least three years old. So I will probably be referring to this post when we hopefully get around to doing it, maybe later this year? ## Mark's talk, "Why Use Redux Today" at React Summit -[00:52:39] **Mark Erikson:** And the obligatory self plug, so I gave a talk at React Summit last month on why use Redux today, because this is a question that gets asked all the time. +[52:39] **Mark Erikson:** And the obligatory self plug, so I gave a talk at React Summit last month on why use Redux today, because this is a question that gets asked all the time. -[00:52:50] TLDR, there's a lot of reasons why people adopted Redux in the first place. Some of those reasons no longer make sense, like avoiding the legacy context API, but the architectural reasons to consider using Redux are still valid. Being able to have a centralized store, being able to see that the state changes in the dev tools, having a well documented pattern for keeping state outside the component tree, So, it's not a lot of a sales pitch, it's like half of a history lesson, and then, discussions of trade offs, because I still find myself unable to give an unambiguous sales pitch. +[52:50] TLDR, there's a lot of reasons why people adopted Redux in the first place. Some of those reasons no longer make sense, like avoiding the legacy context API, but the architectural reasons to consider using Redux are still valid. Being able to have a centralized store, being able to see that the state changes in the dev tools, having a well documented pattern for keeping state outside the component tree, So, it's not a lot of a sales pitch, it's like half of a history lesson, and then, discussions of trade offs, because I still find myself unable to give an unambiguous sales pitch. ## [Chrome collects extra data for Google websites](https://x.com/) -[00:53:24] **Carl Vitullo:** Cool. This is sort of general tech news a little bit, but Chrome apparently gives Google properties privileged information about your system resources, which is sketchy as heck. Why does Google need to know how much CPU my computer is currently using? Anti competitive behavior. Chrome taking advantage of vertical integration to suck up more data to use for reasons. Not great. Not exciting. +[53:24] **Carl Vitullo:** Cool. This is sort of general tech news a little bit, but Chrome apparently gives Google properties privileged information about your system resources, which is sketchy as heck. Why does Google need to know how much CPU my computer is currently using? Anti competitive behavior. Chrome taking advantage of vertical integration to suck up more data to use for reasons. Not great. Not exciting. ## [Component, composition, colocation](https://bobaekang.com/blog/) -[00:53:48] **Mark Erikson:** There was a really good post talking about trade offs and various architectural patterns between different ways to fetch data. Do you fetch data in hooks as components render? Do you do suspense based data fetching that starts nested down in your component tree versus do you try to kick it off, higher in the component tree, say like with a route or a page loader? Some very good actual thoughts of trade offs between these different patterns. +[53:48] **Mark Erikson:** There was a really good post talking about trade offs and various architectural patterns between different ways to fetch data. Do you fetch data in hooks as components render? Do you do suspense based data fetching that starts nested down in your component tree versus do you try to kick it off, higher in the component tree, say like with a route or a page loader? Some very good actual thoughts of trade offs between these different patterns. ## [Secret knowledge to self-host Next.js](https://www.flightcontrol.dev/) -[00:54:15] **Mark Erikson:** And then, there was a good article from the folks at Flight Control, where they talked about challenges in trying to self host Next. js anywhere other than Vercel. It's feasible, but you definitely have to do some extra work. +[54:15] **Mark Erikson:** And then, there was a good article from the folks at Flight Control, where they talked about challenges in trying to self host Next. js anywhere other than Vercel. It's feasible, but you definitely have to do some extra work. -[00:54:29] Hosting Next on Vercel is obviously the happy path, and there's some challenges to try to fill in some of the pieces that Vercel would provide for you. +[54:29] Hosting Next on Vercel is obviously the happy path, and there's some challenges to try to fill in some of the pieces that Vercel would provide for you. ## [Node can strip TS types soon?](https://github.com/nodejs/node/pull/) -[00:54:37] **Mark Erikson:** Last but not, not entirely least, a few bits of news from the Node ecosystem. Node has merged a prototype PR to strip types and allow being able to just run TypeScript files directly. +[54:37] **Mark Erikson:** Last but not, not entirely least, a few bits of news from the Node ecosystem. Node has merged a prototype PR to strip types and allow being able to just run TypeScript files directly. -[00:54:50] Obviously, they're not actually checking the types, but similar to like TS Node, at least stripping off the types so it can just execute the code. Very perfect concept, but they're interested in iterating on it. +[54:50] Obviously, they're not actually checking the types, but similar to like TS Node, at least stripping off the types so it can just execute the code. Very perfect concept, but they're interested in iterating on it. ## [Native SQLite drive in Node](https://nodejs.org/docs/latest/api/) -[00:55:01] **Carl Vitullo:** Yeah, there's also, there's now a native SQLite driver in Node. Like if you're, if you have Node, you can now use SQLite. Wild! Apparently this came out of As Node was adding support for more browser stuff, like, apparently, I actually didn't really know this, you can also use local storage, quote unquote, from within Node, and that is backed by SQLite, and so then they did the work, after they got local storage in there, they added on a native SQLite driver. +[55:01] **Carl Vitullo:** Yeah, there's also, there's now a native SQLite driver in Node. Like if you're, if you have Node, you can now use SQLite. Wild! Apparently this came out of As Node was adding support for more browser stuff, like, apparently, I actually didn't really know this, you can also use local storage, quote unquote, from within Node, and that is backed by SQLite, and so then they did the work, after they got local storage in there, they added on a native SQLite driver. -[00:55:30] I have been interested in Sqlite and the opportunities that it brings for like development patterns for a while, I'm actually making use of it in a bot that we use here in Reactiflux. I have a Kubernetes cluster set up with a Sqlite database just to keep everything co located and local. So I just have to back up a file instead of having to keep a running database server somewhere. +[55:30] I have been interested in Sqlite and the opportunities that it brings for like development patterns for a while, I'm actually making use of it in a bot that we use here in Reactiflux. I have a Kubernetes cluster set up with a Sqlite database just to keep everything co located and local. So I just have to back up a file instead of having to keep a running database server somewhere. -[00:55:52] So yeah, just seeing more motion on Sqlite and seeing it get closer to the, uh, the actual runtime is, Very cool. I think that's awesome. +[55:52] So yeah, just seeing more motion on Sqlite and seeing it get closer to the, uh, the actual runtime is, Very cool. I think that's awesome. ## [Node moving away from CorePack?](https://github.com/nodejs/TSC/pull/) -[00:56:00] **Mark Erikson:** Then, last item. So, Node ships with the npm package manager. And you've always had to use npm to then install other package managers like yarn and pnpm globally. There's been a long running effort to give Node a way to more directly install and use other package managers automatically. +[56:00] **Mark Erikson:** Then, last item. So, Node ships with the npm package manager. And you've always had to use npm to then install other package managers like yarn and pnpm globally. There's been a long running effort to give Node a way to more directly install and use other package managers automatically. -[00:56:21] If a project actually specifies it, and that's involved Node shipping a tool called CorePack. And it's been considered experimental this whole time, and it now seems as if there's discussions about removing CorePack. from Node. Folks like the Yarn maintainer are not happy about this, and I've seen a bunch of arguing about it, even within the last 24 hours. +[56:21] If a project actually specifies it, and that's involved Node shipping a tool called CorePack. And it's been considered experimental this whole time, and it now seems as if there's discussions about removing CorePack. from Node. Folks like the Yarn maintainer are not happy about this, and I've seen a bunch of arguing about it, even within the last 24 hours. -[00:56:43] So, who knows where this is going to land. You know, it's not like it prevents you from using Yarn or PMP in either way, it's about ease of usability. But clearly there's a lot of both technical debate and opinionated feelings involved. +[56:43] So, who knows where this is going to land. You know, it's not like it prevents you from using Yarn or PMP in either way, it's about ease of usability. But clearly there's a lot of both technical debate and opinionated feelings involved. -[00:56:56] **Carl Vitullo:** Yeah, I'm surprised to see a move towards getting removed. +[56:56] **Carl Vitullo:** Yeah, I'm surprised to see a move towards getting removed. -[00:56:59] It seems like a very valuable thing to have. It seemed very in line with the general direction of trying to decouple NPM from Node. js. But like you said, it's, this seems to be still very early. +[56:59] It seems like a very valuable thing to have. It seemed very in line with the general direction of trying to decouple NPM from Node. js. But like you said, it's, this seems to be still very early. -[00:57:12] **Mo Khazali:** I'm also quite surprised we've started using Corepack, and I think it's actually in the interest of other package manager maintainers, but I'm surprised they have backlash, interested to definitely read more about it. +[57:12] **Mo Khazali:** I'm also quite surprised we've started using Corepack, and I think it's actually in the interest of other package manager maintainers, but I'm surprised they have backlash, interested to definitely read more about it. -[00:57:21] **Carl Vitullo:** All right. That is the last link that we have. Thank you everyone for joining us. We'll be back on the last Wednesday of the month here in the live stage or back in your podcast feed just as soon as we can, which will hopefully be before Monday. +[57:21] **Carl Vitullo:** All right. That is the last link that we have. Thank you everyone for joining us. We'll be back on the last Wednesday of the month here in the live stage or back in your podcast feed just as soon as we can, which will hopefully be before Monday. -[00:57:33] **Mo Khazali:** Thank you everyone for having me. Thank you for listening on to my rambling as always. +[57:33] **Mo Khazali:** Thank you everyone for having me. Thank you for listening on to my rambling as always. -[00:57:37] Always a pleasure and see you all next month. +[57:37] Always a pleasure and see you all next month. -[00:57:39] **Mark Erikson:** Likewise, my two things, I will hopefully be publishing a very, very updated version of the Redux Docs Essentials tutorial within, like, the next few days, I've been working on it all year, and I will be glad to have that done. And as I mentioned at the start, I'm looking for a new position. +[57:39] **Mark Erikson:** Likewise, my two things, I will hopefully be publishing a very, very updated version of the Redux Docs Essentials tutorial within, like, the next few days, I've been working on it all year, and I will be glad to have that done. And as I mentioned at the start, I'm looking for a new position. -[00:57:54] So, if you have suggestions, let me know. Please contact me. +[57:54] So, if you have suggestions, let me know. Please contact me. -[00:57:57] **Carl Vitullo:** We gather sources from This Week in React, Bytes. dev, React status, Next. js Weekly, the React. js subreddit, and here in Reactiflux from the Tech Reads and News channel, as well as just following a million people on Twitter and looking for articles that way. +[57:57] **Carl Vitullo:** We gather sources from This Week in React, Bytes. dev, React status, Next. js Weekly, the React. js subreddit, and here in Reactiflux from the Tech Reads and News channel, as well as just following a million people on Twitter and looking for articles that way. -[00:58:11] If you see anything that it seems like we missed, definitely send us a message. An email at hello at reactiflux. com with T M I R in the subject line. That's an acronym for the show. I read every email that comes in, including spam. So I will read it, even if I don't respond to it. We actually got a tip about the RISE tools for React Native. +[58:11] If you see anything that it seems like we missed, definitely send us a message. An email at hello at reactiflux. com with T M I R in the subject line. That's an acronym for the show. I read every email that comes in, including spam. So I will read it, even if I don't respond to it. We actually got a tip about the RISE tools for React Native. -[00:58:30] Thank you for sending in a tip. That's our first one. Shout out. Thank you. If this is a show that you get value from and want to support, the best way to do so is, like, subscribe. Give it a review, help us show up in discovery charts for other people, or send it to your co workers, even if that gives away the secret of how you know so much about React. +[58:30] Thank you for sending in a tip. That's our first one. Shout out. Thank you. If this is a show that you get value from and want to support, the best way to do so is, like, subscribe. Give it a review, help us show up in discovery charts for other people, or send it to your co workers, even if that gives away the secret of how you know so much about React. -[00:58:46] Thank you so much, see you next month. +[58:46] Thank you so much, see you next month. diff --git a/src/transcripts/tmir-2024-09.md b/src/transcripts/tmir-2024-09.md index 236ce03..3ac2e84 100644 --- a/src/transcripts/tmir-2024-09.md +++ b/src/transcripts/tmir-2024-09.md @@ -72,446 +72,446 @@ iframe { - [HalfStack London](https://halfstackconf.com/london/spon) London, UK Nov 13 - [React Native London](https://www.reactnativelondon.co.uk/) London, UK Nov 15 -**Carl:** Hello, everyone. Thank you again for joining us for the September edition of This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. We're coming to you live in Reactiflux, the place for professional React developers, and we're supported by Infinite Red, a little bit more on them. I'm going to do something different this month. I'm going to do the ad read after our You know, quick hits at the start. [00:00:21] +**Carl:** Hello, everyone. Thank you again for joining us for the September edition of This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. We're coming to you live in Reactiflux, the place for professional React developers, and we're supported by Infinite Red, a little bit more on them. I'm going to do something different this month. I'm going to do the ad read after our You know, quick hits at the start. [00:21] -Hello, I'm Carl. I'm a staff product developer and a freelance community manager here at Reactiflux, uh, where I run community programs like these events and help keep the community operating. [00:00:31] +Hello, I'm Carl. I'm a staff product developer and a freelance community manager here at Reactiflux, uh, where I run community programs like these events and help keep the community operating. [00:31] -This month we don't have Mark, sadly. He's in Turkey, um, I think. Not sure if he did a conference, but he just couldn't swing it this month. [00:00:37] +This month we don't have Mark, sadly. He's in Turkey, um, I think. Not sure if he did a conference, but he just couldn't swing it this month. [00:37] -**Mo:** And I am Mo. I head the mobile team at Theodom. I'm quite active in the React Native ecosystem. Get very involved in a bunch of different conferences and some open source here and there. [00:00:47] +**Mo:** And I am Mo. I head the mobile team at Theodom. I'm quite active in the React Native ecosystem. Get very involved in a bunch of different conferences and some open source here and there. [00:47] -I organize the React Native London, community. And basically oversee a team of different developers who are specialized in React Native. So, happy to be here to chat, as always. [00:00:56] +I organize the React Native London, community. And basically oversee a team of different developers who are specialized in React Native. So, happy to be here to chat, as always. [00:56] -**Carl:** All right, straight into some new releases. [00:00:57] +**Carl:** All right, straight into some new releases. [00:57] ## [Node v22.8.0](https://nodejs.org/en/blog/release/v22.8.0) -**Carl:** We've got Node version 22. 8. I didn't see anything super big that caught my eye in this change. New Node, minor version released. [00:01:06] +**Carl:** We've got Node version 22. 8. I didn't see anything super big that caught my eye in this change. New Node, minor version released. [01:06] ## [Deno v2 RC](https://deno.com/blog/v2.0-release-candidate) -**Carl:** We've got Deno v2 release candidate coming out. It looks like this is coming out in Continuing the trend over the last couple months that we've discussed of Deno kind of walking back some of its opinions, they have gone pretty hard on Go style dependency management and a couple of other Go and other highly opinionated back end languages. [00:01:25] +**Carl:** We've got Deno v2 release candidate coming out. It looks like this is coming out in Continuing the trend over the last couple months that we've discussed of Deno kind of walking back some of its opinions, they have gone pretty hard on Go style dependency management and a couple of other Go and other highly opinionated back end languages. [01:25] -They're kind of walking those back. Stuff like, they had been Encouraging people to use window instead of process. They are changing that in order to be more compatible with existing NPM modules. Just generally be more compatible across the ecosystem. Yeah, a couple of other things like that too, like making it easier to use with NPM. [00:01:41] +They're kind of walking those back. Stuff like, they had been Encouraging people to use window instead of process. They are changing that in order to be more compatible with existing NPM modules. Just generally be more compatible across the ecosystem. Yeah, a couple of other things like that too, like making it easier to use with NPM. [01:41] -Generally making it more compatible, which I think is why they're walking back some of their highly opinionated opinions. [00:01:47] +Generally making it more compatible, which I think is why they're walking back some of their highly opinionated opinions. [01:47] ## [Relay v18](https://github.com/facebook/relay/releases/tag/v18.0.0) -**Carl:** We've also got Relay version 18. Are people still using Relay? I don't really have a good sense for its, I don't know, usage. I know, obviously, Facebook still uses, Meta still uses it, but, yeah, not sure how much community uptake it's had over the last three or so years. [00:02:01] +**Carl:** We've also got Relay version 18. Are people still using Relay? I don't really have a good sense for its, I don't know, usage. I know, obviously, Facebook still uses, Meta still uses it, but, yeah, not sure how much community uptake it's had over the last three or so years. [02:01] -**Mo:** Not much on our side. [00:02:03] +**Mo:** Not much on our side. [02:03] -**Carl:** But a change that should make it a little bit easier for people to start using, they have added IntelliSense for the Relay config file. Just getting started, I've tried to get started with Relay two or three times over my career, and just never got over that initial hump of figuring out how to get it working. [00:02:17] +**Carl:** But a change that should make it a little bit easier for people to start using, they have added IntelliSense for the Relay config file. Just getting started, I've tried to get started with Relay two or three times over my career, and just never got over that initial hump of figuring out how to get it working. [02:17] -So, uh, maybe some stuff like that will help. Make it a little easier to use. Not having used it, I can't really speak to the other changes they have, but you know, improve validation of argument types, an alias, catch, throw on field error. Cool. [00:02:28] +So, uh, maybe some stuff like that will help. Make it a little easier to use. Not having used it, I can't really speak to the other changes they have, but you know, improve validation of argument types, an alias, catch, throw on field error. Cool. [02:28] ## [Redwood v8](https://redwoodjs.com/upgrade/v8) -**Carl:** There's also Redwood with a major release, version 8. Redwood is sort of trying to be the Laravel of the React ecosystem, sort of an all in one framework that does all the things that you need. Instead of making you find all the packages yourself to glue the bits together, which seems pretty cool. Yeah, this major release upgrades a lot of dependencies, adds Docker support, which I was a little surprised to see. I, I think of Docker support as not something a framework needs to, like, explicitly add, but cool. [00:02:53] +**Carl:** There's also Redwood with a major release, version 8. Redwood is sort of trying to be the Laravel of the React ecosystem, sort of an all in one framework that does all the things that you need. Instead of making you find all the packages yourself to glue the bits together, which seems pretty cool. Yeah, this major release upgrades a lot of dependencies, adds Docker support, which I was a little surprised to see. I, I think of Docker support as not something a framework needs to, like, explicitly add, but cool. [02:53] -I guess maybe they're making it a little bit easier to just get running in that environment, which since Docker is such a widely used primitive, that makes a lot of sense. Seems cool. They talk about an experimental SSR and RSC setup, so if you're doing server side rendering, or if you're interested in server side rendering and server components, might be, should be easier. [00:03:12] +I guess maybe they're making it a little bit easier to just get running in that environment, which since Docker is such a widely used primitive, that makes a lot of sense. Seems cool. They talk about an experimental SSR and RSC setup, so if you're doing server side rendering, or if you're interested in server side rendering and server components, might be, should be easier. [03:12] -As well as adding support for background jobs, which is definitely something that an all in one framework, I think, I would expect to provide. So that's cool. [00:03:20] +As well as adding support for background jobs, which is definitely something that an all in one framework, I think, I would expect to provide. So that's cool. [03:20] -**Mo:** The Docker support is really interesting because It's almost in direct, I want to say, almost opposing to how Next does it, which it seems to me like Docker is like, hey, you have a Docker image and you can basically use it to deploy your full stack web app into, into whatever cloud platform you want to use. [00:03:38] +**Mo:** The Docker support is really interesting because It's almost in direct, I want to say, almost opposing to how Next does it, which it seems to me like Docker is like, hey, you have a Docker image and you can basically use it to deploy your full stack web app into, into whatever cloud platform you want to use. [03:38] -Super easy, primitive, that's agnostic to whatever cloud provider you want, you self host it, you scale it up yourself, however you want, and our batteries included framework will just work. Whereas Next is notoriously difficult to be able to, uh, self host. So I just find that interesting. Maybe it's directly done as sort of a distinguishing factor compared to Next. [00:03:55] +Super easy, primitive, that's agnostic to whatever cloud provider you want, you self host it, you scale it up yourself, however you want, and our batteries included framework will just work. Whereas Next is notoriously difficult to be able to, uh, self host. So I just find that interesting. Maybe it's directly done as sort of a distinguishing factor compared to Next. [03:55] -I don't know, but I find it quite interesting. [00:03:57] +I don't know, but I find it quite interesting. [03:57] -**Carl:** Yeah, makes sense. I have preferred to host anything I do in Docker for most of the last 10 years, so it's, that will make it easier. I'm interested in trying out Redwood, so having it better support my preferred environment will definitely help with that. [00:04:09] +**Carl:** Yeah, makes sense. I have preferred to host anything I do in Docker for most of the last 10 years, so it's, that will make it easier. I'm interested in trying out Redwood, so having it better support my preferred environment will definitely help with that. [04:09] ## [Epic React v2](https://x.com/kentcdodds/status/1838263679025844378) -**Carl:** There's a new release of Kent C. Dodd's Epic React, version 2. The overview of the course, it's going to teach you React fundamentals, hooks, advanced APIs, suspense, advanced patterns, performance, and server components. I was a little surprised I couldn't easily find like a diff of what is being covered and what they're focusing more on, uh, between the old version and the new version, which I had been hoping to see. [00:04:33] +**Carl:** There's a new release of Kent C. Dodd's Epic React, version 2. The overview of the course, it's going to teach you React fundamentals, hooks, advanced APIs, suspense, advanced patterns, performance, and server components. I was a little surprised I couldn't easily find like a diff of what is being covered and what they're focusing more on, uh, between the old version and the new version, which I had been hoping to see. [04:33] -I have not bought it. I consider myself an epic React dev already, so I don't feel like the target audience. But yeah, they're doing a 40 percent off promo right now, so if you have an educational budget at work, definitely consider spending some of it on this. it's about 420 right now. Nice. [00:04:48] +I have not bought it. I consider myself an epic React dev already, so I don't feel like the target audience. But yeah, they're doing a 40 percent off promo right now, so if you have an educational budget at work, definitely consider spending some of it on this. it's about 420 right now. Nice. [04:48] -Full price is 700, and I think it's jumping up there in about two weeks from time of recording, which is on the 25th. [00:04:55] +Full price is 700, and I think it's jumping up there in about two weeks from time of recording, which is on the 25th. [04:55] ## [RsPack v1](https://rspack.dev/blog/announcing-1-0) ## [RsBuild v1](https://rsbuild.dev/community/releases/v1-0) -**Carl:** Some kind of big news. RS Pack and RS Build both released 1. 0 in the last month, about two weeks apart. RS Build is like a Rust based build tool, if you have not paid attention to previous episodes where we've discussed it. [00:05:10] +**Carl:** Some kind of big news. RS Pack and RS Build both released 1. 0 in the last month, about two weeks apart. RS Build is like a Rust based build tool, if you have not paid attention to previous episodes where we've discussed it. [05:10] -A decent amount. And RSPack builds on top of that to provide a Webpack compatible bundler. I feel like this was all the way back to like 2014 15 when Webpack was new. I mean, Webpack really replaced tools like Gulp. I think I went straight from Gulp to Webpack, and it was a massive just step change improvement. [00:05:28] +A decent amount. And RSPack builds on top of that to provide a Webpack compatible bundler. I feel like this was all the way back to like 2014 15 when Webpack was new. I mean, Webpack really replaced tools like Gulp. I think I went straight from Gulp to Webpack, and it was a massive just step change improvement. [05:28] -It was clearly better in just doing everything. Uh, but It was really complicated to configure, uh, not the fastest tool. So like, almost immediately people were talking about ways to make it faster, ways to make it do the great things that it did in a better manner. I feel like, uh, especially in the web ecosystem, we love our tools to be fast and snappy. [00:05:50] +It was clearly better in just doing everything. Uh, but It was really complicated to configure, uh, not the fastest tool. So like, almost immediately people were talking about ways to make it faster, ways to make it do the great things that it did in a better manner. I feel like, uh, especially in the web ecosystem, we love our tools to be fast and snappy. [05:50] -so a counterpoint to that, people have been interested in having a faster, better solution than Webpack, but the flip side is that Webpack does so much that it's just really hard to actually make a replacement. So I feel like this is a culmination of like a decade long process. [00:06:05] +so a counterpoint to that, people have been interested in having a faster, better solution than Webpack, but the flip side is that Webpack does so much that it's just really hard to actually make a replacement. So I feel like this is a culmination of like a decade long process. [06:05] -project to produce something like that. So to get a Rust based natively compiled language build tool that provides drop in compatibility with an existing massively complex, massively used tool. Awesome. Seems really cool. [00:06:20] +project to produce something like that. So to get a Rust based natively compiled language build tool that provides drop in compatibility with an existing massively complex, massively used tool. Awesome. Seems really cool. [06:20] ## [Metro 0.80.11](https://x.com/MetroBundler/status/1831709057670861260) -**Mo:** So, speaking of bundlers and staying on the same thread, as you will know, React Native has its own bundler that, uh, is purpose built. [00:06:28] +**Mo:** So, speaking of bundlers and staying on the same thread, as you will know, React Native has its own bundler that, uh, is purpose built. [06:28] -or the use of React Native apps. Um, and it's called Metro. So, Metro just released a more of a patch than a minor although React Native's versioning is a little bit confusing because everything is a minor because they want to be able to do as many breaking changes as possible, but they released a patch and there was some insane performance benefits here, so They took the resolver step, which was a bit slow within Metro, and they made it around 15 percent, sorry, 15 times faster, and that made a massive difference. [00:06:56] +or the use of React Native apps. Um, and it's called Metro. So, Metro just released a more of a patch than a minor although React Native's versioning is a little bit confusing because everything is a minor because they want to be able to do as many breaking changes as possible, but they released a patch and there was some insane performance benefits here, so They took the resolver step, which was a bit slow within Metro, and they made it around 15 percent, sorry, 15 times faster, and that made a massive difference. [06:56] -So when they ran it on the, uh, Expensify app, which is notoriously a large scale, open source React Native app, the total build time, was brought down from around 13 seconds down to about 3. and that's about 4 times faster for the whole build process, right? So resolving is just one step of it, they've made that significantly faster, but that makes a big impact on the overall build time. [00:07:16] +So when they ran it on the, uh, Expensify app, which is notoriously a large scale, open source React Native app, the total build time, was brought down from around 13 seconds down to about 3. and that's about 4 times faster for the whole build process, right? So resolving is just one step of it, they've made that significantly faster, but that makes a big impact on the overall build time. [07:16] -And so this is really cool, but one of the added benefits of this is because it's, it's, it's a, it's a patch here, it's actually not a breaking change at all. So you can use it 3 versions back, 3 major React Native versions back, and it kind of works. So all you need to do is just bump your dependencies and you'll get the faster resolving times, which is really cool. [00:07:34] +And so this is really cool, but one of the added benefits of this is because it's, it's, it's a, it's a patch here, it's actually not a breaking change at all. So you can use it 3 versions back, 3 major React Native versions back, and it kind of works. So all you need to do is just bump your dependencies and you'll get the faster resolving times, which is really cool. [07:34] -So big shout out to the Metro team, specifically, uh, Rob Hogan's been working on this. They did a really good job, and hopefully it just makes our dev tools a little bit faster, which we all love. [00:07:42] +So big shout out to the Metro team, specifically, uh, Rob Hogan's been working on this. They did a really good job, and hopefully it just makes our dev tools a little bit faster, which we all love. [07:42] -**Carl:** Yep, yeah, right. Like I just said, we love our fast dev tools in the web ecosystem. Cool. 15 times faster in a patch release. That is rare. Very cool. [00:07:52] +**Carl:** Yep, yeah, right. Like I just said, we love our fast dev tools in the web ecosystem. Cool. 15 times faster in a patch release. That is rare. Very cool. [07:52] ## [Effect 3.8](https://effect.website/blog/effect-3.8) -**Carl:** Wish I could say more about this, but Effect has released version 3. 8. Cool. Effect seems really cool, but it's also got a really steep learning curve because it's basically an entire new, like, standard library and programming paradigm all at once. It seems really cool. What I've seen in it, it seems to take a lot of inspiration from functional programming tools like languages and environments like Elixir. [00:08:15] +**Carl:** Wish I could say more about this, but Effect has released version 3. 8. Cool. Effect seems really cool, but it's also got a really steep learning curve because it's basically an entire new, like, standard library and programming paradigm all at once. It seems really cool. What I've seen in it, it seems to take a lot of inspiration from functional programming tools like languages and environments like Elixir. [08:15] -Just encouraging you to build more like composable APIs? Yeah, we, again, we've talked about this a little bit in the past, so it, I, I won't fully rehash everything, but it's a huge, massive, steep learning curve that seems really cool and possibly worth it. So it's, you know, it's, I feel like I say this so many times every episode, but this is something that I'm really curious about, learning more about and using more and yeah. [00:08:39] +Just encouraging you to build more like composable APIs? Yeah, we, again, we've talked about this a little bit in the past, so it, I, I won't fully rehash everything, but it's a huge, massive, steep learning curve that seems really cool and possibly worth it. So it's, you know, it's, I feel like I say this so many times every episode, but this is something that I'm really curious about, learning more about and using more and yeah. [08:39] -if you like functional programming in web, definitely. Consider looking at effect. [00:08:43] +if you like functional programming in web, definitely. Consider looking at effect. [08:43] ## [Astro 4.15](https://astro.build/blog/astro-4150/) -**Carl:** We've got Astro 4. 15. Big change, they say that Astro actions are stabilized. Um, and it looks like they've swapped out how those actions are configured so that it's a little bit more concise. [00:08:54] +**Carl:** We've got Astro 4. 15. Big change, they say that Astro actions are stabilized. Um, and it looks like they've swapped out how those actions are configured so that it's a little bit more concise. [08:54] -Uh, you describe the shape of the data that it receives and what to do with that data when you get it. Rather than treating it like a whole request where you then, like, do the validation and the error handling yourself. That's adding some opinions to it, but doing a validation schema and then providing a handler that receives valid data that conforms to the schema that you provided. [00:09:16] +Uh, you describe the shape of the data that it receives and what to do with that data when you get it. Rather than treating it like a whole request where you then, like, do the validation and the error handling yourself. That's adding some opinions to it, but doing a validation schema and then providing a handler that receives valid data that conforms to the schema that you provided. [09:16] -Seems like a pretty solid abstraction point there. There's also some other things like, the astro islands pattern. you could previously configure it to load those islands asynchronously, idly, when the, when the tab is idle. Uh, and they've now added a timeout so you can set a maximum time that it will wait for your page to go idle. [00:09:36] +Seems like a pretty solid abstraction point there. There's also some other things like, the astro islands pattern. you could previously configure it to load those islands asynchronously, idly, when the, when the tab is idle. Uh, and they've now added a timeout so you can set a maximum time that it will wait for your page to go idle. [09:36] -Uh, which seems like a nice, you know, 99th percentile performance improvement. If, if, if you're on a slow device that never goes idle, that's going to cause problems if you're only loading when idle. [00:09:45] +Uh, which seems like a nice, you know, 99th percentile performance improvement. If, if, if you're on a slow device that never goes idle, that's going to cause problems if you're only loading when idle. [09:45] ## [React Email v3](https://resend.com/blog/react-email-3) -**Carl:** So we've also got a new major version of React Email, uh, version 3. 0. Looks like this is another, you know, release getting ahead of React 19. [00:09:54] +**Carl:** So we've also got a new major version of React Email, uh, version 3. 0. Looks like this is another, you know, release getting ahead of React 19. [09:54] -They have swapped out their rendering. So it's now async by default. as well as adding a new component library, improving performance. They added a superbase integration so that you don't have to manually, like, render and then copy the output into superbase, which seems nice. I'm a little surprised to see a new component library here, but I guess in an email environment there are just so many ridiculous constraints that, uh, I guess it makes sense that you need a specialized component library for that environment. [00:10:20] +They have swapped out their rendering. So it's now async by default. as well as adding a new component library, improving performance. They added a superbase integration so that you don't have to manually, like, render and then copy the output into superbase, which seems nice. I'm a little surprised to see a new component library here, but I guess in an email environment there are just so many ridiculous constraints that, uh, I guess it makes sense that you need a specialized component library for that environment. [10:20] -But yeah, uh, React Email, if you're doing anything with emails, that seems like a pretty solid tool to use. [00:10:26] +But yeah, uh, React Email, if you're doing anything with emails, that seems like a pretty solid tool to use. [10:26] ## [React Native 0.76 RC2](https://github.com/facebook/reactv0.76.0-rc.2) -**Mo:** So, I've kind of stuck the next one in. It's not really a release, but it's a release candidate, so it's kind of a blurred line, but we'll just go with it. The second release candidate of React Native 76 is out. [00:10:38] +**Mo:** So, I've kind of stuck the next one in. It's not really a release, but it's a release candidate, so it's kind of a blurred line, but we'll just go with it. The second release candidate of React Native 76 is out. [10:38] -So, when I say, for those who aren't in the React Native ecosystem, when I say 76, I mean 0. 76. It's just, it's so far up that we've just We just get rid of the zero because it's easier to say. But anyway, React Native, 0. 76, Release Candidate 2's out. Um, now, this will still take a few more weeks, at least, to, to land, but, this version of React Native is going to be, quite monumental because the new architecture will be the default. [00:11:02] +So, when I say, for those who aren't in the React Native ecosystem, when I say 76, I mean 0. 76. It's just, it's so far up that we've just We just get rid of the zero because it's easier to say. But anyway, React Native, 0. 76, Release Candidate 2's out. Um, now, this will still take a few more weeks, at least, to, to land, but, this version of React Native is going to be, quite monumental because the new architecture will be the default. [11:02] -Going forward from this version. Now this new architecture is nothing new. It's been around, it's been talked about for years now. Um, contrary to the name, uh, it was new a while ago. Um, but it was a, it was a massive undertaking because you're basically gutting the internals of React Native, replacing it with React. [00:11:18] +Going forward from this version. Now this new architecture is nothing new. It's been around, it's been talked about for years now. Um, contrary to the name, uh, it was new a while ago. Um, but it was a, it was a massive undertaking because you're basically gutting the internals of React Native, replacing it with React. [11:18] -Something that's totally different in terms of how the native layer is handled. And so you're needing a new rendering engine, you need a new way to interact with native code and the native APIs. And so what that's meant is that this, it's had this long tail of getting library maintainers, 3P libraries, and, and, All of these things ready so that app developers don't have that much of a pain with some of their libraries not working if they switch over to the new architecture. [00:11:43] +Something that's totally different in terms of how the native layer is handled. And so you're needing a new rendering engine, you need a new way to interact with native code and the native APIs. And so what that's meant is that this, it's had this long tail of getting library maintainers, 3P libraries, and, and, All of these things ready so that app developers don't have that much of a pain with some of their libraries not working if they switch over to the new architecture. [11:43] -And so hopefully it's going to result in a lot more stability, some performance gains. We're waiting to see, but this is going to be a big release and you can still use the old architecture, but new one is the default. And it will be going forward. So, very exciting times, very monumental times. It's probably going to come with some teething pains as it does when you do such a major rewrite, but we're keeping our fingers crossed. [00:12:02] +And so hopefully it's going to result in a lot more stability, some performance gains. We're waiting to see, but this is going to be a big release and you can still use the old architecture, but new one is the default. And it will be going forward. So, very exciting times, very monumental times. It's probably going to come with some teething pains as it does when you do such a major rewrite, but we're keeping our fingers crossed. [12:02] -They've put a lot of work into this. [00:12:04] +They've put a lot of work into this. [12:04] -**Carl:** For sure, yeah. And as we've discussed many times on here, especially Mark, nobody tries really as candidates. So if you're using React Native, just At least give it a shot. See if there's any, like, obvious failure points, because, uh, open source maintainers love hearing about those growing pains as you're trying to switch over. [00:12:20] +**Carl:** For sure, yeah. And as we've discussed many times on here, especially Mark, nobody tries really as candidates. So if you're using React Native, just At least give it a shot. See if there's any, like, obvious failure points, because, uh, open source maintainers love hearing about those growing pains as you're trying to switch over. [12:20] -This is a great opportunity to do it. We're RC2. We're running out of candidates. [00:12:24] +This is a great opportunity to do it. We're RC2. We're running out of candidates. [12:24] ## Sponsored by Infinite Red -**Carl Vitullo:** We are brought to you by Infinite Red, our main sponsor right now. They are an expert React Native consultancy that I am quite pleased to be a partner with because they are like authentically showing up to support the React Native and React ecosystems in like really meaningful ways. [00:12:40] +**Carl Vitullo:** We are brought to you by Infinite Red, our main sponsor right now. They are an expert React Native consultancy that I am quite pleased to be a partner with because they are like authentically showing up to support the React Native and React ecosystems in like really meaningful ways. [12:40] -They organize conferences, they host the largest React Native podcast, they publish the largest React Native focused newsletter, and they're Just really excited to work with them. Other than being great people who do great things in the community, they also, well, more precisely, they're a team of about 30 people, mostly developers with mostly greater than 10 years of experience. [00:13:01] +They organize conferences, they host the largest React Native podcast, they publish the largest React Native focused newsletter, and they're Just really excited to work with them. Other than being great people who do great things in the community, they also, well, more precisely, they're a team of about 30 people, mostly developers with mostly greater than 10 years of experience. [13:01] -So they actually work with your team to help you develop an expertise in building React Native. So if you are. Building something with React Native and need a little help hitting the ground running on that, definitely reach out to them because they are great people who will help you do good work. [00:13:17] +So they actually work with your team to help you develop an expertise in building React Native. So if you are. Building something with React Native and need a little help hitting the ground running on that, definitely reach out to them because they are great people who will help you do good work. [13:17] ## Upcoming conferences -**Carl:** Moving on to some upcoming conferences. There's a lot, so I'm gonna just do, like, half of these, because we're already 15 minutes in. Mark and I will both be at SquiggleConf in Boston, Massachusetts, October 3rd and 4th. it's organized by a conference buddy of mine, Josh Goldberg. [00:13:32] +**Carl:** Moving on to some upcoming conferences. There's a lot, so I'm gonna just do, like, half of these, because we're already 15 minutes in. Mark and I will both be at SquiggleConf in Boston, Massachusetts, October 3rd and 4th. it's organized by a conference buddy of mine, Josh Goldberg. [13:32] -I'm looking forward to it. It should be, should be a great time. It's going to be at the Aquarium in Boston, which seems great. there's also going to be RenderCon in Nairobi, Kenya, October 4th and 5th. React India is in Goa, India, October 17th through 19th. And React Brussels in October, uh, 18th, Brussels, Belgium. [00:13:51] +I'm looking forward to it. It should be, should be a great time. It's going to be at the Aquarium in Boston, which seems great. there's also going to be RenderCon in Nairobi, Kenya, October 4th and 5th. React India is in Goa, India, October 17th through 19th. And React Brussels in October, uh, 18th, Brussels, Belgium. [13:51] -There's also Next. js Conf in San Francisco on the 24th of October. [00:13:55] +There's also Next. js Conf in San Francisco on the 24th of October. [13:55] -**Mo:** And then, if you're in London, ReactiveLabs London is happening on the 25th of October for the in person day and the 28th of October for the remote day. I will be there. I'll be doing a talk about React Native there, so if you're around, come and say hi. [00:14:07] +**Mo:** And then, if you're in London, ReactiveLabs London is happening on the 25th of October for the in person day and the 28th of October for the remote day. I will be there. I'll be doing a talk about React Native there, so if you're around, come and say hi. [14:07] -**Carl:** Uh, I think Mark will be there too. Sadly, I will not. I will be in Mexico City, having a great time. There's also Halfstack London in London on November 13th. [00:14:16] +**Carl:** Uh, I think Mark will be there too. Sadly, I will not. I will be in Mexico City, having a great time. There's also Halfstack London in London on November 13th. [14:16] -**Mo:** And then this is the announcement that I've been waiting a long time to make on this conference, but we have the two month rule, so we're trying to remain impartial. [00:14:23] +**Mo:** And then this is the announcement that I've been waiting a long time to make on this conference, but we have the two month rule, so we're trying to remain impartial. [14:23] -We are doing the first ever React Native conference in London. So, RNLConf, React Native London conference, effectively, is happening on the 14th and 15th of November. in London, central London at the Brewery, which is this like old building from the 1800s, uh, where a bunch of the monarchs of the UK went and visited, and it was a big festive place. [00:14:42] +We are doing the first ever React Native conference in London. So, RNLConf, React Native London conference, effectively, is happening on the 14th and 15th of November. in London, central London at the Brewery, which is this like old building from the 1800s, uh, where a bunch of the monarchs of the UK went and visited, and it was a big festive place. [14:42] -Anyway, it is now an events venue that we have gotten, and we're gonna have a lot of core people from the React Native ecosystem there. Charlie Cheever, the founder of Expo, is gonna be there. we have a lot of different cool folks from Meta, from Amazon, and from a bunch of different places coming to share. [00:14:54] +Anyway, it is now an events venue that we have gotten, and we're gonna have a lot of core people from the React Native ecosystem there. Charlie Cheever, the founder of Expo, is gonna be there. we have a lot of different cool folks from Meta, from Amazon, and from a bunch of different places coming to share. [14:54] -Ideas and talks with everyone. If you are interested in joining, we have also, I've just made a discount code for anyone who listens to the podcast, so it's TMIR. Feel free to just grab a ticket that way, and hopefully you'll save a little bit of cash as well. [00:15:05] +Ideas and talks with everyone. If you are interested in joining, we have also, I've just made a discount code for anyone who listens to the podcast, so it's TMIR. Feel free to just grab a ticket that way, and hopefully you'll save a little bit of cash as well. [15:05] -**Carl:** All right, into our main content. [00:15:08] +**Carl:** All right, into our main content. [15:08] ## [Bulletproof React updated to include Next.js](https:/bulletproof-react) -**Carl:** Bulletproof React got updated for Next. js. This is a simple, scalable, and powerful architecture for building production ready React applications, it describes itself as. Um, so this, I guess it's a set of example apps, to help you get started. I wanted to call this out because it seems like a pretty good resource. You know, it's a question we get in, you know, Reactiflux all the time. [00:15:30] +**Carl:** Bulletproof React got updated for Next. js. This is a simple, scalable, and powerful architecture for building production ready React applications, it describes itself as. Um, so this, I guess it's a set of example apps, to help you get started. I wanted to call this out because it seems like a pretty good resource. You know, it's a question we get in, you know, Reactiflux all the time. [15:30] -It's like, hey, where can I find a, production grade application to use as a reference? I want to learn. I want to learn more about how they do it. and yeah, this seems like a good resource. It's, it's a whole ass. They have an example app written in a couple of different frameworks, so they have updated it to use the app router, I believe, and yeah, seems like a great resource. [00:15:52] +It's like, hey, where can I find a, production grade application to use as a reference? I want to learn. I want to learn more about how they do it. and yeah, this seems like a good resource. It's, it's a whole ass. They have an example app written in a couple of different frameworks, so they have updated it to use the app router, I believe, and yeah, seems like a great resource. [15:52] ## [New React Native Debugger](https://www.youtube.comt=4350s) -**Mo:** Cool. So, this month we had React Universe Conf happening in Wroclaw in Poland. I was there hosting the conference and there was a lot of React Native stuff that was announced. now they were kind of s I want to say soft announcements in some capacity because people kind of knew about them already. It wasn't anything like mind blowingly new, but it was really cool to see the output of a lot of hard work that people have been anticipating for a while. [00:16:14] +**Mo:** Cool. So, this month we had React Universe Conf happening in Wroclaw in Poland. I was there hosting the conference and there was a lot of React Native stuff that was announced. now they were kind of s I want to say soft announcements in some capacity because people kind of knew about them already. It wasn't anything like mind blowingly new, but it was really cool to see the output of a lot of hard work that people have been anticipating for a while. [16:14] -So the first one was the new React Native debugger. just a little bit of context on some of this. Debugging in React Native has been a pain. Anyone who's built with React Native knows that, like, debugging has been a mess. Like, you could use a bunch of different tools in conjunction with one another. [00:16:29] +So the first one was the new React Native debugger. just a little bit of context on some of this. Debugging in React Native has been a pain. Anyone who's built with React Native knows that, like, debugging has been a mess. Like, you could use a bunch of different tools in conjunction with one another. [16:29] -Some of them worked for certain things, other ones worked for other things. there was a point where, you know, you used Flipper for a while, and Flipper wasn't great. everyone really did not like Flipper, and so it got deprecated because it was just not really usable. so it was a lot of different tools that you needed to have in your tool belt to be able to effectively debug. [00:16:45] +Some of them worked for certain things, other ones worked for other things. there was a point where, you know, you used Flipper for a while, and Flipper wasn't great. everyone really did not like Flipper, and so it got deprecated because it was just not really usable. so it was a lot of different tools that you needed to have in your tool belt to be able to effectively debug. [16:45] -the new, the team at Meta tried to kind of, go from a fresh blank slate and say, hey, how do we build a really good debugger that resembles some of the experiences that people are used to with other frameworks and other other languages? And so they built a completely new debugger that's fully built on the Chrome DevTools protocol. [00:17:00] +the new, the team at Meta tried to kind of, go from a fresh blank slate and say, hey, how do we build a really good debugger that resembles some of the experiences that people are used to with other frameworks and other other languages? And so they built a completely new debugger that's fully built on the Chrome DevTools protocol. [17:00] -And it looked like it was, from what we saw at the conference talk, it looked like it was a lot more reliable. It addressed a lot of the minor pain points that you felt when you were trying to debug. And I guess the big thing was that we finally have reliable breakpoints. Which was a real pain to get working within React Native. [00:17:16] +And it looked like it was, from what we saw at the conference talk, it looked like it was a lot more reliable. It addressed a lot of the minor pain points that you felt when you were trying to debug. And I guess the big thing was that we finally have reliable breakpoints. Which was a real pain to get working within React Native. [17:16] -So, really, really, exciting stuff to, to, to get. And it should be public soon. So we're excited to get, get our hands dirty with it and, uh, and try it out. [00:17:25] +So, really, really, exciting stuff to, to, to get. And it should be public soon. So we're excited to get, get our hands dirty with it and, uh, and try it out. [17:25] -**Carl:** Getting into the Chrome debug protocol seems like such a massive improvement here. Instead of using some kind of like bespoke debugging system, I love that you can just actually tap into a widely used tool that a lot of people are familiar with. [00:17:38] +**Carl:** Getting into the Chrome debug protocol seems like such a massive improvement here. Instead of using some kind of like bespoke debugging system, I love that you can just actually tap into a widely used tool that a lot of people are familiar with. [17:38] -**Mo:** And it makes sense in terms of the direction that, you know, React Native is going, which is they want to make it more friendly for the web devs to be able to come in and build native mobile apps, right? So you don't want to force React web devs to learn a totally new dev tool framework or a model. You just use the tools that people are familiar with. [00:17:55] +**Mo:** And it makes sense in terms of the direction that, you know, React Native is going, which is they want to make it more friendly for the web devs to be able to come in and build native mobile apps, right? So you don't want to force React web devs to learn a totally new dev tool framework or a model. You just use the tools that people are familiar with. [17:55] -And so I think it was a great choice, and it looks good. So we'll wait for it to come into the hands of all of us, and then we'll play around with it and make it better over time, and it'll be a great time. Oh, yeah. Cool. [00:18:05] +And so I think it was a great choice, and it looks good. So we'll wait for it to come into the hands of all of us, and then we'll play around with it and make it better over time, and it'll be a great time. Oh, yeah. Cool. [18:05] ## [Hermes new Runtime Bytecode Translation](https://wwwv=pfeTPSai6vc&t=8702s) -**Mo:** So more stuff from React Universe Conf. Another announcement, almost like a thing that we saw into, was, Hermes, which is the JavaScript engine that's used with React Native on most apps, now has a new runtime sort of bytecode translation. [00:18:19] +**Mo:** So more stuff from React Universe Conf. Another announcement, almost like a thing that we saw into, was, Hermes, which is the JavaScript engine that's used with React Native on most apps, now has a new runtime sort of bytecode translation. [18:19] -Now it's very complicated and complex, and the talk explains it far better than I do, because it's some really low level stuff, so you kind of need to wrap your head a little bit around assembly and some, some stuff like that. A little bit of context, just to contextualize this, I think helps. last year there was a talk by the Hermes team at React Native EU called, uh, talking about this, this new concept of Static Hermes, which was, could we take JavaScript code and, uh, Make it typed native code, and sort of compile that down so that you get near native, if not just native performance, using C Um, and so that was a really cool concept, and the benchmarks that they ran from their early tests was showing that it was massively faster to execute JavaScript code because you were basically executing native code there. [00:18:59] +Now it's very complicated and complex, and the talk explains it far better than I do, because it's some really low level stuff, so you kind of need to wrap your head a little bit around assembly and some, some stuff like that. A little bit of context, just to contextualize this, I think helps. last year there was a talk by the Hermes team at React Native EU called, uh, talking about this, this new concept of Static Hermes, which was, could we take JavaScript code and, uh, Make it typed native code, and sort of compile that down so that you get near native, if not just native performance, using C Um, and so that was a really cool concept, and the benchmarks that they ran from their early tests was showing that it was massively faster to execute JavaScript code because you were basically executing native code there. [18:59] -it was a really cool approach of, you know, How you bypass the restrictions of JavaScript's runtime. But there were some limitations in the sense of how people use React Native in practice. And, you know, people use a lot of different features like over the air updates, which means you can kind of replace your JavaScript bundle. [00:19:17] +it was a really cool approach of, you know, How you bypass the restrictions of JavaScript's runtime. But there were some limitations in the sense of how people use React Native in practice. And, you know, people use a lot of different features like over the air updates, which means you can kind of replace your JavaScript bundle. [19:17] -with a server and add new code to a mobile app without going through an app store. So that's like a big feature that a lot of people use in React Native. And so this wouldn't work with the current model of static Hermes. a lot of different build tools. when you, when you pass your code through something like Babel, it loses the type annotations. [00:19:32] +with a server and add new code to a mobile app without going through an app store. So that's like a big feature that a lot of people use in React Native. And so this wouldn't work with the current model of static Hermes. a lot of different build tools. when you, when you pass your code through something like Babel, it loses the type annotations. [19:32] -So how does that then get compiled down to, you know, typed native machine code. It was hard to really wrap it into the ecosystem and how people are using and developing React native apps. So, Intermediately, the Hermes team's been working on sort of runtime bytecode translation, which means, Okay, well, if we can't do this at compilation time, could we? [00:19:52] +So how does that then get compiled down to, you know, typed native machine code. It was hard to really wrap it into the ecosystem and how people are using and developing React native apps. So, Intermediately, the Hermes team's been working on sort of runtime bytecode translation, which means, Okay, well, if we can't do this at compilation time, could we? [19:52] -Find ways to boost performance at runtime and compile things to native instructions without needing to necessarily rely on things that you might only have at compilation time, like your type annotations. whilst being able to still let people do things like over the air updates. And so that's this. [00:20:08] +Find ways to boost performance at runtime and compile things to native instructions without needing to necessarily rely on things that you might only have at compilation time, like your type annotations. whilst being able to still let people do things like over the air updates. And so that's this. [20:08] -concept of the runtime bytecode translation. This isn't landed anywhere and it will take a long time. It will probably first go through Meta's internal process of testing and seeing how it works within their apps. And then if it's stable, it'll phase, in a phased approach, get drip fed to the rest of the community. [00:20:24] +concept of the runtime bytecode translation. This isn't landed anywhere and it will take a long time. It will probably first go through Meta's internal process of testing and seeing how it works within their apps. And then if it's stable, it'll phase, in a phased approach, get drip fed to the rest of the community. [20:24] -So it's going to take a little bit of time, but it's really interesting stuff and it can have massive performance gains when you're running really computationally heavy tasks that you would previously run in JavaScript, using this bytecode translation. [00:20:35] +So it's going to take a little bit of time, but it's really interesting stuff and it can have massive performance gains when you're running really computationally heavy tasks that you would previously run in JavaScript, using this bytecode translation. [20:35] -**Carl:** Interesting. Okay. So I remember Hermes. That's like, that was like a V8 competitor. It was a runtime for JavaScript optimized for React Native. So it sounds like this is going to be doing. Like, you know, all these JavaScript runtimes, they always have various levels of, JIT, just in time compilation happening. I remember, you know, V8 has like TurboFan, and I don't remember any of the other brand names. [00:21:00] +**Carl:** Interesting. Okay. So I remember Hermes. That's like, that was like a V8 competitor. It was a runtime for JavaScript optimized for React Native. So it sounds like this is going to be doing. Like, you know, all these JavaScript runtimes, they always have various levels of, JIT, just in time compilation happening. I remember, you know, V8 has like TurboFan, and I don't remember any of the other brand names. [21:00] -But, okay, so this is sort of a new type of JIT sort of thing, where it, like, over time will create a I don't know, like codify the bytecode so that it doesn't need to do the JIT every single time? Is that, am I understanding that right? [00:21:14] +But, okay, so this is sort of a new type of JIT sort of thing, where it, like, over time will create a I don't know, like codify the bytecode so that it doesn't need to do the JIT every single time? Is that, am I understanding that right? [21:14] -**Mo:** That's what it seems like to me. Again, there's a blurred line between static release that happens at compilation and this, which is kind of JIT. [00:21:22] +**Mo:** That's what it seems like to me. Again, there's a blurred line between static release that happens at compilation and this, which is kind of JIT. [21:22] -And this is a little bit, there is some level of caching that you can do, right, because those instructions don't change commonly. They're changing once every time you kind of do an over the air update. So, um, a lot is still unknown. it's just more, showing the possibility of if you have unannotated JavaScript code, how much could we, compile it down to bytecode and still get some of the performance gains that you can get out of something like Static Hermes. [00:21:46] +And this is a little bit, there is some level of caching that you can do, right, because those instructions don't change commonly. They're changing once every time you kind of do an over the air update. So, um, a lot is still unknown. it's just more, showing the possibility of if you have unannotated JavaScript code, how much could we, compile it down to bytecode and still get some of the performance gains that you can get out of something like Static Hermes. [21:46] -Which would be a lot more aggressively, compiling things down and, and it has a lot more context because of having access to the source code and being able to run this at compilation. So it's a more practical step that they're trying to address with how the community uses React Native and how probably Meta uses React Native internally as well. [00:22:03] +Which would be a lot more aggressively, compiling things down and, and it has a lot more context because of having access to the source code and being able to run this at compilation. So it's a more practical step that they're trying to address with how the community uses React Native and how probably Meta uses React Native internally as well. [22:03] -**Carl:** That makes sense. My mental model here is aggressive caching of JIT bytecode. Definitely will be curious to see how that shakes out as it starts to roll out. Exits idea stage and enters production stage. [00:22:14] +**Carl:** That makes sense. My mental model here is aggressive caching of JIT bytecode. Definitely will be curious to see how that shakes out as it starts to roll out. Exits idea stage and enters production stage. [22:14] ## [React 19 Cheat Sheet](https://www.epicreact.dev/react-19-cheatsheet) -**Carl:** All right. A bit of stuff on React 19. Man, I'm a little sad Mark isn't here today because there's a couple of new resources and some, some new info that I'd love to get his take on. [00:22:23] +**Carl:** All right. A bit of stuff on React 19. Man, I'm a little sad Mark isn't here today because there's a couple of new resources and some, some new info that I'd love to get his take on. [22:23] -But yeah, so Kent C Dodds put out a React 19 cheat sheet and it looks pretty great. You know, even just kind of casually skimming this, I learned several new things that I hadn't realized. Even, even as someone who considers himself to put a decent amount of effort to stay on top of things as they happen. [00:22:40] +But yeah, so Kent C Dodds put out a React 19 cheat sheet and it looks pretty great. You know, even just kind of casually skimming this, I learned several new things that I hadn't realized. Even, even as someone who considers himself to put a decent amount of effort to stay on top of things as they happen. [22:40] -I still learned about like four or five new things from this cheat sheet. Probably the single biggest one is that since when could we use async functions? Like we apparently in React 19 you can do if you know you're doing a function component like you do now you can just mark that as async and it will return a promise like async functions do and React just like knows how to handle that. [00:23:01] +I still learned about like four or five new things from this cheat sheet. Probably the single biggest one is that since when could we use async functions? Like we apparently in React 19 you can do if you know you're doing a function component like you do now you can just mark that as async and it will return a promise like async functions do and React just like knows how to handle that. [23:01] -That makes a lot of sense. I am curious how that, I guess where I really wish I had Mark to talk about. This instead of me is, I don't really understand the difference between the suspense primitive of like throwing a promise versus now this where you can just return a promise. Yeah, this is a really great single page cheat sheet, you know, eight and a half by 11 with a bunch of great resources. [00:23:25] +That makes a lot of sense. I am curious how that, I guess where I really wish I had Mark to talk about. This instead of me is, I don't really understand the difference between the suspense primitive of like throwing a promise versus now this where you can just return a promise. Yeah, this is a really great single page cheat sheet, you know, eight and a half by 11 with a bunch of great resources. [23:25] -You know, it talks about like what the use hook is for, talks about the better error reporting, resource preloading APIs, so you can make sure that You know your fonts and your images are available. Loading style sheets with precedence. Uh, I, something I had known was that React 19 will let you render like scripts and style sheets just within your output and it will hoist them up to, you know, be Loaded as appropriately, something I didn't know is that you can signal their precedence, their relative precedence. So, you know, default precedents or high precedents. This is, this is a base level style sheet that needs to apply to everything versus this is a, you know, could override those base styles, things like that. Really great resource. Kent C. Dodds, of course, putting out lovely educational resources. [00:24:10] +You know, it talks about like what the use hook is for, talks about the better error reporting, resource preloading APIs, so you can make sure that You know your fonts and your images are available. Loading style sheets with precedence. Uh, I, something I had known was that React 19 will let you render like scripts and style sheets just within your output and it will hoist them up to, you know, be Loaded as appropriately, something I didn't know is that you can signal their precedence, their relative precedence. So, you know, default precedents or high precedents. This is, this is a base level style sheet that needs to apply to everything versus this is a, you know, could override those base styles, things like that. Really great resource. Kent C. Dodds, of course, putting out lovely educational resources. [24:10] ## [What’s new in React 19](https://vercel.com/blog/whats-new-in-react-19) -**Carl:** There's also a great, What's New in React 19 blog post put out by Vercel. Mostly the bulk of the content talks about how the rendering model for React has evolved over the years. Uh, I thought this was just a really great breakdown of why. [00:24:25] +**Carl:** There's also a great, What's New in React 19 blog post put out by Vercel. Mostly the bulk of the content talks about how the rendering model for React has evolved over the years. Uh, I thought this was just a really great breakdown of why. [24:25] -We've gone from why React is pushing server components and like what the value proposition there is. It has a really great series of diagrams showing like, all right, this is how, this is how data fetch and resource loading happens in a single page application versus an SSR application versus now what React server components unlock. [00:24:47] +We've gone from why React is pushing server components and like what the value proposition there is. It has a really great series of diagrams showing like, all right, this is how, this is how data fetch and resource loading happens in a single page application versus an SSR application versus now what React server components unlock. [24:47] -And just showing like the data flow of like server to client. And it really does a good job of illustrating those waterfalls and how those waterfalls end up hap end up being imposed by the rendering model and how server components change that rendering model to enable fewer waterfalls to happen. another good resource talking about new things unlocked. In React 19, there was a good post talking about build time components, which is distinct from like server side rendering or server components, pretty related to like, you know, SSG, static site generation. Yeah, static site generation. [00:25:22] +And just showing like the data flow of like server to client. And it really does a good job of illustrating those waterfalls and how those waterfalls end up hap end up being imposed by the rendering model and how server components change that rendering model to enable fewer waterfalls to happen. another good resource talking about new things unlocked. In React 19, there was a good post talking about build time components, which is distinct from like server side rendering or server components, pretty related to like, you know, SSG, static site generation. Yeah, static site generation. [25:22] -If you say that acronym SSG, the presumption is that that refers more to something like Gatsby, which is a one time, it doesn't have a server, it has static generation. so this, this discusses build time components, I think sort of as a complement to server rendering or server components, where as part of the build step, as part of, you know, your transpilation and compilation and whatever, you can statically generate. [00:25:47] +If you say that acronym SSG, the presumption is that that refers more to something like Gatsby, which is a one time, it doesn't have a server, it has static generation. so this, this discusses build time components, I think sort of as a complement to server rendering or server components, where as part of the build step, as part of, you know, your transpilation and compilation and whatever, you can statically generate. [25:47] -Some of your, some of your resources, some of your pages, some of your components. I thought that was a good call out as new technical capability. Returning back to my earlier thought on the cheat sheet, I saw in real time Kent C Dodds learning that you can return a Promise from a component. So just like earlier this month, he put out on Twitter like, oh, you can, you can just do this. [00:26:08] +Some of your, some of your resources, some of your pages, some of your components. I thought that was a good call out as new technical capability. Returning back to my earlier thought on the cheat sheet, I saw in real time Kent C Dodds learning that you can return a Promise from a component. So just like earlier this month, he put out on Twitter like, oh, you can, you can just do this. [26:08] -You can just mark it as async. Amazing. So just to drop the link to a good thread in there, but really good. I'm not sure what the difference is between that. You know, classic suspense, throwing a based thing and just doing an async function. [00:26:22] +You can just mark it as async. Amazing. So just to drop the link to a good thread in there, but really good. I'm not sure what the difference is between that. You know, classic suspense, throwing a based thing and just doing an async function. [26:22] ## [A milestone for TypeScript Performance in TanStack Router](https://tanstack.com/blog/tanstack-router-typescript-performance) -**Carl:** Moving on. TanStack had a really great post discussing a performance optimization they did for TanStack Router. [00:26:29] +**Carl:** Moving on. TanStack had a really great post discussing a performance optimization they did for TanStack Router. [26:29] -This is a very different type of performance optimization than most that we see discussed. This is not like runtime performance. This is not, you know, how the library works while you're using it. This is an optimization they did in your editor. So like, as your site grows larger, because their routing is type safe, it's actually doing a lot of, it's actually throwing a lot of work at the language server, at the TypeScript language server that your IDE is running. [00:26:56] +This is a very different type of performance optimization than most that we see discussed. This is not like runtime performance. This is not, you know, how the library works while you're using it. This is an optimization they did in your editor. So like, as your site grows larger, because their routing is type safe, it's actually doing a lot of, it's actually throwing a lot of work at the language server, at the TypeScript language server that your IDE is running. [26:56] -In this blog post, they break down a pretty complicated site that has, I think they say, This example has 400 route definitions with validated search parameters, and I, you know, it takes like three seconds for the language server to get back to you. So, like, if you're writing code and you, like, open IntelliSense to see, like, oh wait, what, what query strings can this receive? [00:27:17] +In this blog post, they break down a pretty complicated site that has, I think they say, This example has 400 route definitions with validated search parameters, and I, you know, it takes like three seconds for the language server to get back to you. So, like, if you're writing code and you, like, open IntelliSense to see, like, oh wait, what, what query strings can this receive? [27:17] -Like, sitting and waiting for three seconds as it parses that. Not great. but yeah, they talk about improvements they did for that. And just because, like, type safe routing is super cool and super difficult, and like, how often do you think about the performance of the TypeScript language server in your IDE? [00:27:34] +Like, sitting and waiting for three seconds as it parses that. Not great. but yeah, they talk about improvements they did for that. And just because, like, type safe routing is super cool and super difficult, and like, how often do you think about the performance of the TypeScript language server in your IDE? [27:34] -For me, never. so just seeing this, like, Deep technical write up of how they've improved the performance of something that I have never thought about is pretty great, pretty interesting. [00:27:46] +For me, never. so just seeing this, like, Deep technical write up of how they've improved the performance of something that I have never thought about is pretty great, pretty interesting. [27:46] ## ["we’ve decided to make a few changes to ease the adoption of Next 15"](https://x.com/feedthejim/status/1829569083777437745) -**Carl:** Cool, an update on Next 15, which is not out yet. Yeah, they said, we've decided to make a few changes to ease the adoption of Next 15. [00:27:54] +**Carl:** Cool, an update on Next 15, which is not out yet. Yeah, they said, we've decided to make a few changes to ease the adoption of Next 15. [27:54] -We'll relax the React 19 requirement for the Pages router so you can upgrade in your own time. I appreciated this because my read on the Next. Ecosystem right now is that there's a lot of attention being paid to the app router, but technically that's Bleeding Edge. That's the newest, still experimental grade, kind of. [00:28:14] +We'll relax the React 19 requirement for the Pages router so you can upgrade in your own time. I appreciated this because my read on the Next. Ecosystem right now is that there's a lot of attention being paid to the app router, but technically that's Bleeding Edge. That's the newest, still experimental grade, kind of. [28:14] -So they encourage you to use it in the same way that open source maintainers encourage you to use release candidates. But strictly speaking, the Pages router is still where the business is. So seeing them talk about sending support for that into React 19 seems good. Bethany, for the app router, we decided not to block on the general release of React 19. [00:28:34] +So they encourage you to use it in the same way that open source maintainers encourage you to use release candidates. But strictly speaking, the Pages router is still where the business is. So seeing them talk about sending support for that into React 19 seems good. Bethany, for the app router, we decided not to block on the general release of React 19. [28:34] -So I guess that they are looking to release. Finished non-experimental app router, before or, or they're decoupling released app router from the React 19 release. [00:28:45] +So I guess that they are looking to release. Finished non-experimental app router, before or, or they're decoupling released app router from the React 19 release. [28:45] -**Mo:** Does that mean that they would ship the app router apps if you start a new app, router app with Next, that it would just be using like an RC of React 19, or would it just be using React 18 unless re 19 gets launched? [00:28:59] +**Mo:** Does that mean that they would ship the app router apps if you start a new app, router app with Next, that it would just be using like an RC of React 19, or would it just be using React 18 unless re 19 gets launched? [28:59] -**Carl:** There was some confusion a while ago because they were using release candidates by default. Uh, I don't remember where that landed off the top of my head right now, but I think that's right, but I can't answer you definitely. I'm just looking at this thread again and I see someone ask a very similar question. [00:29:15] +**Carl:** There was some confusion a while ago because they were using release candidates by default. Uh, I don't remember where that landed off the top of my head right now, but I think that's right, but I can't answer you definitely. I'm just looking at this thread again and I see someone ask a very similar question. [29:15] -How do you relax the React 19 requirement when React is bundled into Next? Do you maintain a release for 18 and 19? Did not get a response, so not sure. This is kind of continuing the trend of version confusion with Next and React, like, it's not very clear. [00:29:33] +How do you relax the React 19 requirement when React is bundled into Next? Do you maintain a release for 18 and 19? Did not get a response, so not sure. This is kind of continuing the trend of version confusion with Next and React, like, it's not very clear. [29:33] -**Mo:** I wouldn't personally feel comfortable using an RC with Next, if, Next 15, if they say, we've tested it, it's stable, but then at the same time, I wouldn't trust it to work well with React 18 either, because I would suspect they haven't tested that enough. [00:29:46] +**Mo:** I wouldn't personally feel comfortable using an RC with Next, if, Next 15, if they say, we've tested it, it's stable, but then at the same time, I wouldn't trust it to work well with React 18 either, because I would suspect they haven't tested that enough. [29:46] -So, you're in this no man's land where you're like, do I just stay on Next14 until it's actually, you know, stable and React 19 is launched and out of our seat? Interesting questions. [00:29:57] +So, you're in this no man's land where you're like, do I just stay on Next14 until it's actually, you know, stable and React 19 is launched and out of our seat? Interesting questions. [29:57] -**Carl:** Yeah. Confusing, but a similar, you know, vein of confusion as we've had for like most of 2024. That confusion has not been cleared up. Confusion remains. [00:30:07] +**Carl:** Yeah. Confusing, but a similar, you know, vein of confusion as we've had for like most of 2024. That confusion has not been cleared up. Confusion remains. [30:07] ## Trademark disputes! ## [Oracle, it’s time to free JavaScript](https://javascript.tm/) -**Carl:** There's been a couple of trademark dramas this month. Like, I don't know why all the trademark stuff is coming out of the woodwork right now, but um, the Deno team put out a, like an open letter requesting that Oracle release the trademark for JavaScript. and this is one of those like, Funny, weird like quirks of history that not that impactful, but it is still a thing. [00:30:27] +**Carl:** There's been a couple of trademark dramas this month. Like, I don't know why all the trademark stuff is coming out of the woodwork right now, but um, the Deno team put out a, like an open letter requesting that Oracle release the trademark for JavaScript. and this is one of those like, Funny, weird like quirks of history that not that impactful, but it is still a thing. [30:27] -Like Oracle owns the trademark for JavaScript. Like the reason that the TC39 standards body that determines what JavaScript is technically They are not building JavaScript. They're building ECMAScript, which ECMA is an international standards body. And the reason it's called that is because Oracle owns the trademark on JavaScript. [00:30:47] +Like Oracle owns the trademark for JavaScript. Like the reason that the TC39 standards body that determines what JavaScript is technically They are not building JavaScript. They're building ECMAScript, which ECMA is an international standards body. And the reason it's called that is because Oracle owns the trademark on JavaScript. [30:47] -And they have done nothing with it. They have not enforced it, as far as I know, in a decade. They have not They haven't done anything with it. So, yeah, the Deno team is asking people to sign a letter. so, I would encourage you to do so. I have signed this letter. I think it's great. I would love for Oracle to be less in the web ecosystem. [00:31:04] +And they have done nothing with it. They have not enforced it, as far as I know, in a decade. They have not They haven't done anything with it. So, yeah, the Deno team is asking people to sign a letter. so, I would encourage you to do so. I have signed this letter. I think it's great. I would love for Oracle to be less in the web ecosystem. [31:04] -Please. [00:31:05] +Please. [31:05] -**Mo:** I don't think I knew that Oracle had the trademark for JavaScript until I saw this. I don't know if you did, but it was, uh [00:31:11] +**Mo:** I don't think I knew that Oracle had the trademark for JavaScript until I saw this. I don't know if you did, but it was, uh [31:11] -**Carl:** I did know that. I mean, it's one of those stupid things. Like, it's called JavaScript because they were trying to, like I don't know. Ape on the popularity of Java back in the 90s, even though there's no relation. [00:31:23] +**Carl:** I did know that. I mean, it's one of those stupid things. Like, it's called JavaScript because they were trying to, like I don't know. Ape on the popularity of Java back in the 90s, even though there's no relation. [31:23] -So it's like, I think because I, I think it was something like in those early days, Oracle was like, no, no, no, no, hang on. You can't call it JavaScript. We own Java. And so I think that's how they ended up owning it, but then they didn't do anything in JavaScript or in the web because they're Oracle. And yeah, so it's just one of those like weird quirks of history. [00:31:40] +So it's like, I think because I, I think it was something like in those early days, Oracle was like, no, no, no, no, hang on. You can't call it JavaScript. We own Java. And so I think that's how they ended up owning it, but then they didn't do anything in JavaScript or in the web because they're Oracle. And yeah, so it's just one of those like weird quirks of history. [31:40] -So this feels like writing a wrong to me in a way that like, yes, please, let's resolve this tech debt, like get out of there. [00:31:46] +So this feels like writing a wrong to me in a way that like, yes, please, let's resolve this tech debt, like get out of there. [31:46] ## [WP Engine v Automattic](https://x.com/photomatt/status/1838738735795703976) ## (https://x.com/justinferriman/status/1838356417482514842) -**Carl:** And this is a little far afield from React, but there's been some WordPress drama. my, I don't do WordPress. I've never worked as a WordPress developer. So this is a little bit of me catching up on stuff. [00:31:59] +**Carl:** And this is a little far afield from React, but there's been some WordPress drama. my, I don't do WordPress. I've never worked as a WordPress developer. So this is a little bit of me catching up on stuff. [31:59] -But so my understanding of this is that there's. the WordPress maintainer is Automatic with two T's, and then there's a, another company called WP Engine that seems to, I think they're like a services business, I think, so I guess it's, it's a little bit like If there were two Vercels, like an official one that was actually maintaining Next, and then another one that, like, didn't actually do very much of the maintenance, but also provided all of the same, like, hosting, just with a different set of defaults. [00:32:26] +But so my understanding of this is that there's. the WordPress maintainer is Automatic with two T's, and then there's a, another company called WP Engine that seems to, I think they're like a services business, I think, so I guess it's, it's a little bit like If there were two Vercels, like an official one that was actually maintaining Next, and then another one that, like, didn't actually do very much of the maintenance, but also provided all of the same, like, hosting, just with a different set of defaults. [32:26] -And if that other actor that did not do all the maintenance work and the development work was making way more money than the people actually building on it. So, that's my understanding of the difference between Automatic and WP Engine. Is that WP Engine makes a lot more money and contributes less. so the CEO of Automatic has gone on a bit of a tear and it seems not great to me. [00:32:48] +And if that other actor that did not do all the maintenance work and the development work was making way more money than the people actually building on it. So, that's my understanding of the difference between Automatic and WP Engine. Is that WP Engine makes a lot more money and contributes less. so the CEO of Automatic has gone on a bit of a tear and it seems not great to me. [32:48] -They are now accusing WP Engine of like infringing on the trademark of WordPress by way of introducing confusion. Like people think that WP Engine is, you know, WordPress engine and they think that they play a larger role in the ecosystem than they actually do. But they've done so, Automatic has done this by sending a cease and desist that doesn't, I don't know, it seems not great. [00:33:10] +They are now accusing WP Engine of like infringing on the trademark of WordPress by way of introducing confusion. Like people think that WP Engine is, you know, WordPress engine and they think that they play a larger role in the ecosystem than they actually do. But they've done so, Automatic has done this by sending a cease and desist that doesn't, I don't know, it seems not great. [33:10] ## [Trademark diff seems targeted](https://www.diffchecker.com/tJ29tGIn/) -**Carl:** There's, um, the trademark page, I saw a diff, like, just in the last week, like, as they sent the cease and desist, Automatic updated the trademark information page from saying, you can do whatever you want with the abbreviation WP, to you can do anything you want That doesn't add confusion to the ecosystem, and also WP Engine is not great and we don't like them. [00:33:30] +**Carl:** There's, um, the trademark page, I saw a diff, like, just in the last week, like, as they sent the cease and desist, Automatic updated the trademark information page from saying, you can do whatever you want with the abbreviation WP, to you can do anything you want That doesn't add confusion to the ecosystem, and also WP Engine is not great and we don't like them. [33:30] -And so it's just like they specifically called out this organization that they are sending a cease and desist to in updating their trademark guidelines. It's just like, Oh, Oh, okay. I feel like if you wanted to make that argument and you needed to make it 10 years ago when they started. So it's drama, some big drama happening in WordPress right now. [00:33:49] +And so it's just like they specifically called out this organization that they are sending a cease and desist to in updating their trademark guidelines. It's just like, Oh, Oh, okay. I feel like if you wanted to make that argument and you needed to make it 10 years ago when they started. So it's drama, some big drama happening in WordPress right now. [33:49] ## ["You're writing a vite-based SPA. You need to add a few API routes (i.e., for authentication). What do you do?"](https://x.com/aboodman/status/1836470815862460506) -**Carl:** I saw a great. Twitter post from someone who is doing like a sync engines and lots of other like local first type development that I find very interesting. He posed the question, you're writing a Vite based SPA. You need to add a few API routes like for authentication. What do you do? And got a lot of engagement and I thought it was just a really good discussion. [00:34:11] +**Carl:** I saw a great. Twitter post from someone who is doing like a sync engines and lots of other like local first type development that I find very interesting. He posed the question, you're writing a Vite based SPA. You need to add a few API routes like for authentication. What do you do? And got a lot of engagement and I thought it was just a really good discussion. [34:11] -I wanted to draw a little bit of attention to it just because a lot of great opinions coming out in there. I have recently been playing with. Cloudflare workers. And to me, they hit this really great niche that is perfect for this. Cloudflare workers are basically like serverless architecture. You, you know, set up a handler, and like, you don't do any of the infrastructure administration yourself. [00:34:31] +I wanted to draw a little bit of attention to it just because a lot of great opinions coming out in there. I have recently been playing with. Cloudflare workers. And to me, they hit this really great niche that is perfect for this. Cloudflare workers are basically like serverless architecture. You, you know, set up a handler, and like, you don't do any of the infrastructure administration yourself. [34:31] -It just, you know, starts up and stops. But they do it way better than anyone else that I've played with so far. Like, you know, I've used Lambdas and some other similar, you know, serverless architecture things, and all of them have, you know, Awful, terrible, brutally bad developer experience. Like, uh, this is a couple years out of date, so I think it's changed, but I don't think it's changed that much. [00:34:53] +It just, you know, starts up and stops. But they do it way better than anyone else that I've played with so far. Like, you know, I've used Lambdas and some other similar, you know, serverless architecture things, and all of them have, you know, Awful, terrible, brutally bad developer experience. Like, uh, this is a couple years out of date, so I think it's changed, but I don't think it's changed that much. [34:53] -I, I just remember having to upload a zip file into AWS in order to test, in order to deploy changes to a, to a lambda function that I had written. And like, There's no environments, there's no way to say like, this is in test, this is in production, there's no way to test locally. So then like, this entire serverless framework spun up around that to try and make it better, but like, oops, it didn't actually work that way. [00:35:14] +I, I just remember having to upload a zip file into AWS in order to test, in order to deploy changes to a, to a lambda function that I had written. And like, There's no environments, there's no way to say like, this is in test, this is in production, there's no way to test locally. So then like, this entire serverless framework spun up around that to try and make it better, but like, oops, it didn't actually work that way. [35:14] -It didn't, it didn't match functionality, so it didn't serve the purpose. So yeah, I think for me this, the answer to what do you do if you need to add a few API routes is set up Wrangler, and then in locally and use Cloudflare Workers. [00:35:28] +It didn't, it didn't match functionality, so it didn't serve the purpose. So yeah, I think for me this, the answer to what do you do if you need to add a few API routes is set up Wrangler, and then in locally and use Cloudflare Workers. [35:28] -**Mo:** You stole the words from me, basically, which was I would use Cloudflare Workers for a few reasons, like AWS's serverless model means that you're still managing your infra to some degree, like what region do you place your serverless function? [00:35:41] +**Mo:** You stole the words from me, basically, which was I would use Cloudflare Workers for a few reasons, like AWS's serverless model means that you're still managing your infra to some degree, like what region do you place your serverless function? [35:41] -How does it scale? How does it, you know, uh, how do you do API routing? Maybe you'll need to add another layer, with API gateway in front of it. It's not, like, Straightforward. And so Cloudflare Workers for me was like truly serverless because it's just a function that runs close to the users, somewhere on a CDN, and you get access to run some JavaScript somewhere on the edge, which is really quite cool. [00:36:03] +How does it scale? How does it, you know, uh, how do you do API routing? Maybe you'll need to add another layer, with API gateway in front of it. It's not, like, Straightforward. And so Cloudflare Workers for me was like truly serverless because it's just a function that runs close to the users, somewhere on a CDN, and you get access to run some JavaScript somewhere on the edge, which is really quite cool. [36:03] -there's some stuff around, you know, like I think that there's some trade offs, like you can't use Node packages, it's a custom runtime, and you know, if you want to use a specific router, like there is Hono as an example that you can use within Cloudflare Workers to do API routes. Auth is not as straightforward, I'd say. [00:36:19] +there's some stuff around, you know, like I think that there's some trade offs, like you can't use Node packages, it's a custom runtime, and you know, if you want to use a specific router, like there is Hono as an example that you can use within Cloudflare Workers to do API routes. Auth is not as straightforward, I'd say. [36:19] -So, like, for small tidbits And, you know, tasks that I just need something that runs without me worrying about it, definitely Cloudflare Workers. And so, shameless plug, I did a talk with, a very close friend of mine, Samuel McLeod, who now actually works at Cloudflare and is on the Wrangler team, so he works directly on Workers, and we were talking about how do you Move your front end code to live on the edge in Cloudflare Workers with minimal effort. [00:36:43] +So, like, for small tidbits And, you know, tasks that I just need something that runs without me worrying about it, definitely Cloudflare Workers. And so, shameless plug, I did a talk with, a very close friend of mine, Samuel McLeod, who now actually works at Cloudflare and is on the Wrangler team, so he works directly on Workers, and we were talking about how do you Move your front end code to live on the edge in Cloudflare Workers with minimal effort. [36:43] ## [Mo's talk at Future Frontend 2024](https://youtsi=AsVqdVrxbiO9nyW9) -**Mo:** So it's a, it's a, it's a talk that we did in Finland this year. Um, so, I'll share the link. but basically the gist of this was what if you could just take your use states that you have inside of your app and change it to use server state with a different import from a third party library and it would automatically just pop it inside of a durable object on the Cloudflare Worker environment. [00:37:02] +**Mo:** So it's a, it's a, it's a talk that we did in Finland this year. Um, so, I'll share the link. but basically the gist of this was what if you could just take your use states that you have inside of your app and change it to use server state with a different import from a third party library and it would automatically just pop it inside of a durable object on the Cloudflare Worker environment. [37:02] -And so there's a lot of cool magic and a lot of cool primitives that they've got that lets you build on top of, and I really like it. If I wanted to build a little bit more full fledged, you mentioned Auth as an example, maybe. I quite like Superbase these days. It's relatively simple. You know, you can run Deno functions within it. [00:37:18] +And so there's a lot of cool magic and a lot of cool primitives that they've got that lets you build on top of, and I really like it. If I wanted to build a little bit more full fledged, you mentioned Auth as an example, maybe. I quite like Superbase these days. It's relatively simple. You know, you can run Deno functions within it. [37:18] -It also has a database model, which, you know, is managed for you. It's kind of, for mobile devs, I think it's The better Firebase, which, you know, Firebase promised to be the way that you don't have to write back end code for a mobile dev, and then it really wasn't great. and I think Superbase is a little bit nicer, and it's also relational DBs, which I prefer personally, so. [00:37:38] +It also has a database model, which, you know, is managed for you. It's kind of, for mobile devs, I think it's The better Firebase, which, you know, Firebase promised to be the way that you don't have to write back end code for a mobile dev, and then it really wasn't great. and I think Superbase is a little bit nicer, and it's also relational DBs, which I prefer personally, so. [37:38] -It kind of just works. [00:37:39] +It kind of just works. [37:39] -**Carl:** Pretty much the major constraint of a serverless runtime is they pretty much have to be stateless because, you know, they start up and they spin it down. So if you want to persist state, you need to maintain some kind of other infrastructure to, you know, some kind of database or something like that, which like, as soon as you start running your own server for a database or something like that, like, well, why not just put the code on there too? [00:38:01] +**Carl:** Pretty much the major constraint of a serverless runtime is they pretty much have to be stateless because, you know, they start up and they spin it down. So if you want to persist state, you need to maintain some kind of other infrastructure to, you know, some kind of database or something like that, which like, as soon as you start running your own server for a database or something like that, like, well, why not just put the code on there too? [38:01] -And Cloudflare workers give you both durable objects. Which are interesting and cool, and I haven't played with them very much, because they also have a key value store that is like this. Dead simple. It works basically like local storage with shared context between invocations of your workers, which just like, if I'm doing something small that I don't want to spend like a week setting up new infrastructure and then don't want to have to maintain that over time, like something that I can just forget about for two years and then come back to and go like, what, how, how the hell does this work? [00:38:33] +And Cloudflare workers give you both durable objects. Which are interesting and cool, and I haven't played with them very much, because they also have a key value store that is like this. Dead simple. It works basically like local storage with shared context between invocations of your workers, which just like, if I'm doing something small that I don't want to spend like a week setting up new infrastructure and then don't want to have to maintain that over time, like something that I can just forget about for two years and then come back to and go like, what, how, how the hell does this work? [38:33] -Workers. Love it. I guess I should while hyping Cloudflare and workers so much, I should probably mention that they are like basically the only stocks that I individually own that isn't in an ETF, because I like Cloudflare. But yeah, that's, I don't know if I have a conflict of interest, but. [00:38:50] +Workers. Love it. I guess I should while hyping Cloudflare and workers so much, I should probably mention that they are like basically the only stocks that I individually own that isn't in an ETF, because I like Cloudflare. But yeah, that's, I don't know if I have a conflict of interest, but. [38:50] -**Mo:** That is a vote of confidence, Carl. [00:38:51] +**Mo:** That is a vote of confidence, Carl. [38:51] -**Carl:** I'm trying to put my money where my mouth is. Or, you know, now I'm putting my mouth where my money already was. ( both laugh) [00:38:57] +**Carl:** I'm trying to put my money where my mouth is. Or, you know, now I'm putting my mouth where my money already was. ( both laugh) [38:57] -**Mo:** is this some sort of, like, ramping up stock prices? I don't know. Yes, yes. [00:39:03] +**Mo:** is this some sort of, like, ramping up stock prices? I don't know. Yes, yes. [39:03] ## [Nitromodules released to the public](https://mrousavy.github.io/nitro/) -**Mo:** There's just a very quick update on NitroModules, which we talked about last month. And so, uh, NitroModules is this way to run faster native code from React Native. [00:39:12] +**Mo:** There's just a very quick update on NitroModules, which we talked about last month. And so, uh, NitroModules is this way to run faster native code from React Native. [39:12] -And, uh, it's now been released to the public. And so a few people have been playing around with it. William Candillon, who builds React Native Skia and now React Native WebGPU, or WGPU, so to speak, is now using it on his project, and a few other people I know are experimenting with it. So we'll see some cool results, and I think it'll hopefully improve the performance of the React Native ecosystem as a whole. [00:39:31] +And, uh, it's now been released to the public. And so a few people have been playing around with it. William Candillon, who builds React Native Skia and now React Native WebGPU, or WGPU, so to speak, is now using it on his project, and a few other people I know are experimenting with it. So we'll see some cool results, and I think it'll hopefully improve the performance of the React Native ecosystem as a whole. [39:31] ## [NodeJS adds an experimental permission model](https://twitterstatus/1830621784770555915) -**Carl:** Um, Node. js is taking a cue from Deno and they are adding a permissions model. I think this is super cool. I thought the permissions model is something that Deno got right. I think it's just very interesting to, rather than just allow all the permissions that your process has, being able to signal to the process, what this code is going to need to access. [00:39:56] +**Carl:** Um, Node. js is taking a cue from Deno and they are adding a permissions model. I think this is super cool. I thought the permissions model is something that Deno got right. I think it's just very interesting to, rather than just allow all the permissions that your process has, being able to signal to the process, what this code is going to need to access. [39:56] -Um, I think that's a, I think that's really good and interesting and useful, especially in alternate runtime environments like workers, like serverless environments and things like that. An example where this would be useful. I remember a couple of years ago, uh, someone in Reactiflux set up a little five project allowing anyone to execute code from within the chat. [00:40:15] +Um, I think that's a, I think that's really good and interesting and useful, especially in alternate runtime environments like workers, like serverless environments and things like that. An example where this would be useful. I remember a couple of years ago, uh, someone in Reactiflux set up a little five project allowing anyone to execute code from within the chat. [40:15] -Yeah. Um, so you could just, you know, like, use some chat command with a code block. They had set up a bot that would pull that code block in, execute it, and spit out the output. They were able to do that, I believe, because of Deno's permissions model. Because they could guarantee that the code only had access to this very tight sandbox. [00:40:32] +Yeah. Um, so you could just, you know, like, use some chat command with a code block. They had set up a bot that would pull that code block in, execute it, and spit out the output. They were able to do that, I believe, because of Deno's permissions model. Because they could guarantee that the code only had access to this very tight sandbox. [40:32] -You know, if you're running code from arbitrary people in a chat room, that's very dangerous. So you need an effective permissions model. So, um Now we have that. Now Node. js has that. Uh, maybe not relevant for most people, but especially if you are working on something that would allow, or that would benefit from allowing your users to run code, run arbitrary code, Node. js now supports that better, at least. [00:40:54] +You know, if you're running code from arbitrary people in a chat room, that's very dangerous. So you need an effective permissions model. So, um Now we have that. Now Node. js has that. Uh, maybe not relevant for most people, but especially if you are working on something that would allow, or that would benefit from allowing your users to run code, run arbitrary code, Node. js now supports that better, at least. [40:54] ## [TypeScript with React styleguide ](https:/typescript-style-guide/#appendix---react) -**Carl:** This isn't new. I don't think I, I have, no, it's undated. I don't know when it came out. but I just crossed my radar and I like it. It's a TypeScript style guide. they have a, they have a react appendix that I, I thought was pretty neat. And just, I love a good style guide. [00:41:09] +**Carl:** This isn't new. I don't think I, I have, no, it's undated. I don't know when it came out. but I just crossed my radar and I like it. It's a TypeScript style guide. they have a, they have a react appendix that I, I thought was pretty neat. And just, I love a good style guide. [41:09] -Another common question in Reactiflux is like, what are the best practices? Well, there's a lot of practices. Some of them are worse than others. Some of them are good generally in all circumstances. Some of them only make sense in a very narrow range of circumstances. [00:41:23] +Another common question in Reactiflux is like, what are the best practices? Well, there's a lot of practices. Some of them are worse than others. Some of them are good generally in all circumstances. Some of them only make sense in a very narrow range of circumstances. [41:23] -So just like, what are the best practices is a very difficult question to answer. And I think this TypeScript style guide does a pretty good job of Outlining a decent range of them. You know, some of them are opinionated, like it talks about project structure and like how to organize your source code and like, okay, there's a lot of ways to do that acceptably. [00:41:40] +So just like, what are the best practices is a very difficult question to answer. And I think this TypeScript style guide does a pretty good job of Outlining a decent range of them. You know, some of them are opinionated, like it talks about project structure and like how to organize your source code and like, okay, there's a lot of ways to do that acceptably. [41:40] -but something in the, you know, the first thing it talks about in the React Appendix is like required versus optional props. And. It calls out props as a discriminated type, which is, it's so good. Instead of having a props object with a bunch of optional values, doing it as a group of different, you know, fully formed Types. Uh, so like, you know, the example they give is like a status indicator. Instead of saying like data, you know, error, status as like optional props, just saying like, no, no, the success status has a status value of success, data with this type, whatever. Then the loading status has, says this That's so much better. Like that is absolutely a best practice. So, um, Good resource, I enjoyed it. it had a couple of, maybe it's just because its opinions align with my own opinions, but I thought it was a really good resource. Definitely recommend it. And also, more generally, on the subject of style guides, I think a style guide is a wonderful resource to bring into your company. [00:42:44] +but something in the, you know, the first thing it talks about in the React Appendix is like required versus optional props. And. It calls out props as a discriminated type, which is, it's so good. Instead of having a props object with a bunch of optional values, doing it as a group of different, you know, fully formed Types. Uh, so like, you know, the example they give is like a status indicator. Instead of saying like data, you know, error, status as like optional props, just saying like, no, no, the success status has a status value of success, data with this type, whatever. Then the loading status has, says this That's so much better. Like that is absolutely a best practice. So, um, Good resource, I enjoyed it. it had a couple of, maybe it's just because its opinions align with my own opinions, but I thought it was a really good resource. Definitely recommend it. And also, more generally, on the subject of style guides, I think a style guide is a wonderful resource to bring into your company. [42:44] -Uh, the most effective teams I've been on have had a style guide document that was routinely updated. Just, uh, if. I think it's a really great anchor point for technical discussions. Like, if you have a technical argument with your team about, like, we should not be doing this, this is bad. Argument should have an output in the form of a PR to a style guide. I think that's really great. [00:43:05] +Uh, the most effective teams I've been on have had a style guide document that was routinely updated. Just, uh, if. I think it's a really great anchor point for technical discussions. Like, if you have a technical argument with your team about, like, we should not be doing this, this is bad. Argument should have an output in the form of a PR to a style guide. I think that's really great. [43:05] ## [Inside ECMAScript: JavaScript Standard Gets an Extra Stage](https://thenewstack.io/inside-ecmascript-javascript-standard-gets-an-extra-stage/) -**Carl:** Not new news, but a good resource. We've talked briefly in previous months about the TC39 ECMAScript standardization process. You know, there's four stages, you can present an idea in stage one, then if you do X technical work, it gets to stage two. Stage three is like, basically standardized, but it's not shipped yet, and stage four is like, fully shipped. [00:43:27] +**Carl:** Not new news, but a good resource. We've talked briefly in previous months about the TC39 ECMAScript standardization process. You know, there's four stages, you can present an idea in stage one, then if you do X technical work, it gets to stage two. Stage three is like, basically standardized, but it's not shipped yet, and stage four is like, fully shipped. [43:27] -There has been a problem over many years of a lot of things getting stuck at stage two. The transition between Stage 2 to Stage 3, and then like, oh, we found a new problem in Stage 3, so we gotta ship it back to Stage 2. Just like, the delta between Stage 2 and Stage 3 has turned out to be very, very large, in a way that has made it difficult to ship some of these proposals. [00:43:50] +There has been a problem over many years of a lot of things getting stuck at stage two. The transition between Stage 2 to Stage 3, and then like, oh, we found a new problem in Stage 3, so we gotta ship it back to Stage 2. Just like, the delta between Stage 2 and Stage 3 has turned out to be very, very large, in a way that has made it difficult to ship some of these proposals. [43:50] -Just like, If it gets shipped back down to stage 2, that has some problems. So this article from The New Stack just did a really good job of explaining more of that history than the half assed summary that I just gave, and talks about the stage 2. 7, you know, sub stage that they added relatively recently. [00:44:09] +Just like, If it gets shipped back down to stage 2, that has some problems. So this article from The New Stack just did a really good job of explaining more of that history than the half assed summary that I just gave, and talks about the stage 2. 7, you know, sub stage that they added relatively recently. [44:09] -It sounds like the gist of it is that if you've written tests for your thing, then getting bumped back all the way back down to stage two, like, calls into question the validity of those tests. And stage 2. 7 resolves that problem to make it a little bit clearer about what that means. If you're curious about, you know, if there's like, if there's a, proposal that you've been following and are curious about the standardization process. [00:44:30] +It sounds like the gist of it is that if you've written tests for your thing, then getting bumped back all the way back down to stage two, like, calls into question the validity of those tests. And stage 2. 7 resolves that problem to make it a little bit clearer about what that means. If you're curious about, you know, if there's like, if there's a, proposal that you've been following and are curious about the standardization process. [44:30] -Um, I just think this is a pretty solid resource explaining the history. [00:44:34] +Um, I just think this is a pretty solid resource explaining the history. [44:34] ## [Remix The Web from mjackson](https://github.com/mjackson/remix-the-web/) -**Carl:** cool. I came across a fun project from Michael Jackson, from the Remix team called Remix the Web. Michael Jackson, Ryan Florence have been so involved in the web React, in the React ecosystem for so long. I have always. I've respected them greatly as people who, like, they don't just try to solve a problem. [00:44:55] +**Carl:** cool. I came across a fun project from Michael Jackson, from the Remix team called Remix the Web. Michael Jackson, Ryan Florence have been so involved in the web React, in the React ecosystem for so long. I have always. I've respected them greatly as people who, like, they don't just try to solve a problem. [44:55] -They try to solve a problem in a way that makes sense, given the primitives available on the web. So it's not just trying to do everything in JavaScript. Like a lot, a lot of Java, a lot of React libraries I've seen, they end up, re solving a lot of problems in JavaScript that you might not need to if you just leaned on the web platform a little bit harder. [00:45:14] +They try to solve a problem in a way that makes sense, given the primitives available on the web. So it's not just trying to do everything in JavaScript. Like a lot, a lot of Java, a lot of React libraries I've seen, they end up, re solving a lot of problems in JavaScript that you might not need to if you just leaned on the web platform a little bit harder. [45:14] -And some of that is because of aspirational support for React Native. If you solve it in JavaScript, then it can work not on the web platform. So like, there's trade offs to doing that. The trade off is that If you write in JavaScript, like, it's probably going to be slower. It's probably going to be worse in some way than if you can use a native, you know, web platform feature. [00:45:34] +And some of that is because of aspirational support for React Native. If you solve it in JavaScript, then it can work not on the web platform. So like, there's trade offs to doing that. The trade off is that If you write in JavaScript, like, it's probably going to be slower. It's probably going to be worse in some way than if you can use a native, you know, web platform feature. [45:34] -That is the backstory for why I'm particularly interested in this. So, Michael Jackson is putting together a monorepo of modules that are narrowly scoped to do one thing and do that thing well. An example of this that I remember him talking about Years and years ago, in the context of React Router, is they built React Router on top of a primitive, on top of a wrapper they made around the history API. [00:45:59] +That is the backstory for why I'm particularly interested in this. So, Michael Jackson is putting together a monorepo of modules that are narrowly scoped to do one thing and do that thing well. An example of this that I remember him talking about Years and years ago, in the context of React Router, is they built React Router on top of a primitive, on top of a wrapper they made around the history API. [45:59] -So it's like, in trying to make a router, they found all of these weird, nasty edge cases around managing history, managing scrolls position, things like that, and found the platform feature to be highly deficient. as a, you know, mode of interacting with that. And so they made a wrapper abstraction around that to make it easier to deal with. [00:46:19] +So it's like, in trying to make a router, they found all of these weird, nasty edge cases around managing history, managing scrolls position, things like that, and found the platform feature to be highly deficient. as a, you know, mode of interacting with that. And so they made a wrapper abstraction around that to make it easier to deal with. [46:19] -And so my understanding is that this Remix the web monorepo project is a bunch of those. So like in, if they find, A rough and grody, web platform feature, they write a wrapper around it, and into this repo it goes. So, uh, I'm interested, it seems curious, it seems pretty cool to me, I have certainly found a lot of platform features that don't do quite what I want, so, uh, I'm, yeah, I'm paying attention to it. [00:46:41] +And so my understanding is that this Remix the web monorepo project is a bunch of those. So like in, if they find, A rough and grody, web platform feature, they write a wrapper around it, and into this repo it goes. So, uh, I'm interested, it seems curious, it seems pretty cool to me, I have certainly found a lot of platform features that don't do quite what I want, so, uh, I'm, yeah, I'm paying attention to it. [46:41] -Seems cool. [00:46:42] +Seems cool. [46:42] ## [Replacing React code with CSS :has selector](https:/posts/replacing-react-with-css) -**Carl:** And somewhat related to the idea of solving things with JavaScript, I saw a good blog post titled, Replacing React code with CSS colon has selector. The gist of it is, I'll pull a quote. Until recently, we couldn't select objects in the opposite direction of the CSS cascade. You know, CSS is top down. [00:47:06] +**Carl:** And somewhat related to the idea of solving things with JavaScript, I saw a good blog post titled, Replacing React code with CSS colon has selector. The gist of it is, I'll pull a quote. Until recently, we couldn't select objects in the opposite direction of the CSS cascade. You know, CSS is top down. [47:06] -You can get, you can start from the top and it gets more specific. So you can say, in all of these elements that are under this type of parent, style it this way. But you can't, you couldn't say previously, in this parent, if it has this type of element within it, style it this way. It was a, it was sort of a, you know, unidirectional control flow in that way. You could style descendants based on their parents, but you couldn't style parents based on their descendants. And the CSS Has Selector enables you to do that, which I have run into so many situations where I wanted to do that, and you just can't. You just couldn't. So, uh, you end up having to solve it with JavaScript to like add a little bit of state to communicate whether some element is within it. [00:47:51] +You can get, you can start from the top and it gets more specific. So you can say, in all of these elements that are under this type of parent, style it this way. But you can't, you couldn't say previously, in this parent, if it has this type of element within it, style it this way. It was a, it was sort of a, you know, unidirectional control flow in that way. You could style descendants based on their parents, but you couldn't style parents based on their descendants. And the CSS Has Selector enables you to do that, which I have run into so many situations where I wanted to do that, and you just can't. You just couldn't. So, uh, you end up having to solve it with JavaScript to like add a little bit of state to communicate whether some element is within it. [47:51] -And yeah, so the CSS has selected something I've been wanting for a really long time, and I really appreciated that. I'm seeing it framed as, here's all the things you can stop doing with React because of this CSS feature. And yeah, it's written by Nadia Makarevic. I hope I'm not mispronouncing that. She also wrote a great book on React as well. Yeah, just really, I really enjoy her writing. She seems like a great writer and seems to pick good topics. I like it. [00:48:19] +And yeah, so the CSS has selected something I've been wanting for a really long time, and I really appreciated that. I'm seeing it framed as, here's all the things you can stop doing with React because of this CSS feature. And yeah, it's written by Nadia Makarevic. I hope I'm not mispronouncing that. She also wrote a great book on React as well. Yeah, just really, I really enjoy her writing. She seems like a great writer and seems to pick good topics. I like it. [48:19] ## [Performance Optimization Strategies for Large-Scale React Applications](https://old.reddit.com/r/reactjs/comments/1f6abzy/performance_optimization_strategies_for/) -**Carl:** And last lightning round link, just going to call out a Reddit thread. I've started, I set up a thing to pull in top posts from Reddit into the tech reads and news channel, and it's served us some good stuff. [00:48:31] +**Carl:** And last lightning round link, just going to call out a Reddit thread. I've started, I set up a thing to pull in top posts from Reddit into the tech reads and news channel, and it's served us some good stuff. [48:31] -I like it. But yeah, somebody asked the question, somebody asked about. Performance optimization strategies for large scale React applications and it got a decent amount of response. So I just thought that was a good, I just wanted to call attention to a cool thread full of a lot of opinions. It seemed like a good thing. [00:48:47] +I like it. But yeah, somebody asked the question, somebody asked about. Performance optimization strategies for large scale React applications and it got a decent amount of response. So I just thought that was a good, I just wanted to call attention to a cool thread full of a lot of opinions. It seemed like a good thing. [48:47] -I didn't really see anything that like massively caught my eye as like, this is the right thing to do. But it did get quite a few Lengthy explanations of how some person or another has done performance optimizations at work. Uh, and that was always a big part of my work. My career has always, I've put a lot of emphasis on performance optimizations. [00:49:08] +I didn't really see anything that like massively caught my eye as like, this is the right thing to do. But it did get quite a few Lengthy explanations of how some person or another has done performance optimizations at work. Uh, and that was always a big part of my work. My career has always, I've put a lot of emphasis on performance optimizations. [49:08] -Wanted to call that out. Go read it. It's good. [00:49:10] +Wanted to call that out. Go read it. It's good. [49:10] ## Outro -**Carl:** Cool. Alright, that's everything we got. thank you for joining us. We will be back on the last Wednesday of October here in the live stage or back in your podcast feed just as soon as we can, if that's how you listened. We gather sources from This Week in React, Bytes. [00:49:23] +**Carl:** Cool. Alright, that's everything we got. thank you for joining us. We will be back on the last Wednesday of October here in the live stage or back in your podcast feed just as soon as we can, if that's how you listened. We gather sources from This Week in React, Bytes. [49:23] -dev, React Status, Next. js Weekly. The React js subreddit here in Reactiflux and direct from those publishing articles. usually on Twitter, maybe on blue sky, maybe on RSS feed. Lots of things. If you see anything newsworthy, uh, definitely let us know in the tech News and reads channel of Reactiflux. [00:49:39] +dev, React Status, Next. js Weekly. The React js subreddit here in Reactiflux and direct from those publishing articles. usually on Twitter, maybe on blue sky, maybe on RSS feed. Lots of things. If you see anything newsworthy, uh, definitely let us know in the tech News and reads channel of Reactiflux. [49:39] -Or send it directly to me hello@reactiflux.com, uh, with TMIR in the subject line. It's an acronym for the show. I read literally every email that comes in, even the spam. So yeah, if you've got a hot tip, send it to me and I'll read it. if this is a show that you get value from and want to support, best way to do so is by submitting a review on Spotify, which helps us, Rank? [00:50:01] +Or send it directly to me hello@reactiflux.com, uh, with TMIR in the subject line. It's an acronym for the show. I read literally every email that comes in, even the spam. So yeah, if you've got a hot tip, send it to me and I'll read it. if this is a show that you get value from and want to support, best way to do so is by submitting a review on Spotify, which helps us, Rank? [50:01] -I'd say stay in the rankings, but like, we don't rank, so, you know. Or, you know, post it on Twitter, send it to your co workers, stuff like that. Appreciate it. Thanks for listening. [00:50:08] +I'd say stay in the rankings, but like, we don't rank, so, you know. Or, you know, post it on Twitter, send it to your co workers, stuff like that. Appreciate it. Thanks for listening. [50:08] -**Mo:** Always fun to do this every single month. Thanks, for having me, and hopefully I'll see you all at some point in person, somewhere, maybe at the, uh, RNLConf. [00:50:15] +**Mo:** Always fun to do this every single month. Thanks, for having me, and hopefully I'll see you all at some point in person, somewhere, maybe at the, uh, RNLConf. [50:15] Till next month. diff --git a/src/transcripts/tmir-2024-10.md b/src/transcripts/tmir-2024-10.md index fc46c62..5013bb5 100644 --- a/src/transcripts/tmir-2024-10.md +++ b/src/transcripts/tmir-2024-10.md @@ -86,141 +86,141 @@ html li p { - [[01:00:39](#how-i-built-my-blog-•-josh-w-comeau)] [How I Built My Blog • Josh W. Comeau](https://www.joshwcomeau.com/blog/how-i-built-my-blog-v2/) - [[01:02:24](#types-of-react-components-2024)] [Types of React Components 2024](https://www.robinwieruch.de/react-component-types/) -**Carl:** Hello everyone. Thank you for joining us for the October edition of This Month in React, where we recap and digest the recent developments in the ever evolving React and web ecosystem. We're coming to you live from Reactiflux, the place for professional React developers. [00:00:14] +**Carl:** Hello everyone. Thank you for joining us for the October edition of This Month in React, where we recap and digest the recent developments in the ever evolving React and web ecosystem. We're coming to you live from Reactiflux, the place for professional React developers. [00:14] -And we're supported by Infinite Red, a consultancy that exclusively works with React Native, but we'll do a little ad read for them later. [00:00:21] +And we're supported by Infinite Red, a consultancy that exclusively works with React Native, but we'll do a little ad read for them later. [00:21] -Hello, I'm Carl. I'm a staff product developer and freelance community manager here at Reactiflux where I run community programs like these events and the star helpers, and do other stuff to keep the community running smoothly. [00:00:33] +Hello, I'm Carl. I'm a staff product developer and freelance community manager here at Reactiflux where I run community programs like these events and the star helpers, and do other stuff to keep the community running smoothly. [00:33] -**Mark:** Hi, I'm Mark. My day job is at replay. io, which we're going to have a slight tangent on the io part of this later on. And other than that, on Redux stuff. [00:00:43] +**Mark:** Hi, I'm Mark. My day job is at replay. io, which we're going to have a slight tangent on the io part of this later on. And other than that, on Redux stuff. [00:43] -**Mo:** The mobile team at Theodo which is a global consultancy and I'm active within the React Native ecosystem, organizing the React Native community and here and there dabbling in some open source. Happy to be here as always. [00:00:56] +**Mo:** The mobile team at Theodo which is a global consultancy and I'm active within the React Native ecosystem, organizing the React Native community and here and there dabbling in some open source. Happy to be here as always. [00:56] ## Job market: [FRED data](https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE), [Layoffs.fyi](https://layoffs.fyi/) -**Carl:** Yeah. First up, some quick hits while people start filtering in. We did not do a job market update last month. It was actually pretty quiet. Not a lot of news. It seems kind of back to baseline. data for posts made to Indeed is still, like, two thirds of what it was at the beginning of 2020 before pandemic hit. [00:01:14] +**Carl:** Yeah. First up, some quick hits while people start filtering in. We did not do a job market update last month. It was actually pretty quiet. Not a lot of news. It seems kind of back to baseline. data for posts made to Indeed is still, like, two thirds of what it was at the beginning of 2020 before pandemic hit. [01:14] -that might have been a high watermark for the industry, so it's, it's kind of hard to say. Layoffs at least have been, look very low for the last two months in a row. So that seems good, but yeah, the hiring has not really picked up. But not sure it's going to. [00:01:29] +that might have been a high watermark for the industry, so it's, it's kind of hard to say. Layoffs at least have been, look very low for the last two months in a row. So that seems good, but yeah, the hiring has not really picked up. But not sure it's going to. [01:29] -I wonder about that. Definitely the vibe I've been getting is that most of the roles being hired for are more on the seniors end of the scale, which is Not ideal, not great, but yeah, seems to be where it's at. [00:01:40] +I wonder about that. Definitely the vibe I've been getting is that most of the roles being hired for are more on the seniors end of the scale, which is Not ideal, not great, but yeah, seems to be where it's at. [01:40] ## New releases -**Carl:** Yeah, into some new releases. [00:01:41] +**Carl:** Yeah, into some new releases. [01:41] -Moe, you want to tell us about React Native? [00:01:43] +Moe, you want to tell us about React Native? [01:43] ## [React Native 0.76 proper](https://reactnative.dev/blog/2024/10/23/release-0.76-new-architecture) -**Mo:** Yes, indeed. I feel like this is years in the making, so I've got to really drum this up as much as possible. But, the new architecture is finally here, [00:01:54] +**Mo:** Yes, indeed. I feel like this is years in the making, so I've got to really drum this up as much as possible. But, the new architecture is finally here, [01:54] ## [New Architecture is here](https://reactnative.dev/blog/2024/10/23/the-new-architecture-is-here) -**Mark:** Woohoo! [00:01:55] +**Mark:** Woohoo! [01:55] -**Mo:** So this is React Native version 0. 76. And if you go back into likethe history of React Native over the last five years, the first mention of the new architecture publicly was in 2019. [00:02:08] +**Mo:** So this is React Native version 0. 76. And if you go back into likethe history of React Native over the last five years, the first mention of the new architecture publicly was in 2019. [02:08] -And really what the whole purpose of the new architecture was, was to make a more stable Baseline for React Native interacting with native platforms. How components are rendered. How does JavaScript code trigger native code and native modules? And how do we move different things around different threads and make sure that everything is optimized and consistent? [00:02:28] +And really what the whole purpose of the new architecture was, was to make a more stable Baseline for React Native interacting with native platforms. How components are rendered. How does JavaScript code trigger native code and native modules? And how do we move different things around different threads and make sure that everything is optimized and consistent? [02:28] -A lot of people think that the new architecture is like a performance oriented update. It doesn't really have that many major performance improvements. There's minor ones, but really what it's trying there for mainly is, I think, for library maintainers and for framework authors to be able to create a more consistent pattern of communicating between native and React Native. [00:02:47] +A lot of people think that the new architecture is like a performance oriented update. It doesn't really have that many major performance improvements. There's minor ones, but really what it's trying there for mainly is, I think, for library maintainers and for framework authors to be able to create a more consistent pattern of communicating between native and React Native. [02:47] -So, for a little bit of context, React Native's old architecture used this thing called the bridge. So it was basically a messaging bridge where you could pass in serialized JSON from the JavaScript layer and from the native layer and it would kind of get communicated across this bridge. But the issue with a bridge is that it can have some traffic, right? [00:03:03] +So, for a little bit of context, React Native's old architecture used this thing called the bridge. So it was basically a messaging bridge where you could pass in serialized JSON from the JavaScript layer and from the native layer and it would kind of get communicated across this bridge. But the issue with a bridge is that it can have some traffic, right? [03:03] -So you can bombard it with a lot of JSON and suddenly because it's asynchronous it has limits in terms of how much it can communicate if you were trying to update things frequently or send a lot of data through that bridge you would block that, and what we would call that is that the JS thread is blocked, and so your app would basically drop in its frame rate, the CPU usage would spike, and everyone would be unhappy, and your users would be like, Hmm, this is not quite native feeling to me. [00:03:30] +So you can bombard it with a lot of JSON and suddenly because it's asynchronous it has limits in terms of how much it can communicate if you were trying to update things frequently or send a lot of data through that bridge you would block that, and what we would call that is that the JS thread is blocked, and so your app would basically drop in its frame rate, the CPU usage would spike, and everyone would be unhappy, and your users would be like, Hmm, this is not quite native feeling to me. [03:30] -But, as of now, there's been a lot of work that's been done. React Native has a bunch of different stuff that I'm not going to go into too much detail about. But the bridge has been replaced with what we call the JavaScript interface. And so what that means is JavaScript code can get a reference to a C object that communicates with a native layer, and it can directly invoke methods within that C layer that would live on the native layer. [00:03:51] +But, as of now, there's been a lot of work that's been done. React Native has a bunch of different stuff that I'm not going to go into too much detail about. But the bridge has been replaced with what we call the JavaScript interface. And so what that means is JavaScript code can get a reference to a C object that communicates with a native layer, and it can directly invoke methods within that C layer that would live on the native layer. [03:51] -So it removes the bridge and it's just direct communication via JavaScript interface to the native layer. So that makes things significantly more efficient. It's not just that, the new architecture is a lot of different parts. There's the new event loop, there's the new renderer and then there's the new native module system, and of course the JSI, which is kind of underpinning all of that. [00:04:11] +So it removes the bridge and it's just direct communication via JavaScript interface to the native layer. So that makes things significantly more efficient. It's not just that, the new architecture is a lot of different parts. There's the new event loop, there's the new renderer and then there's the new native module system, and of course the JSI, which is kind of underpinning all of that. [04:11] -the article that you shared in the chat has a lot of details and it's a good summary, so I would start from there if you've been kind of under the rocks. In the React Native ecosystem and not,really hearing much about the new architecture. I think it's a really good summary about why it matters, what you can achieve. [00:04:25] +the article that you shared in the chat has a lot of details and it's a good summary, so I would start from there if you've been kind of under the rocks. In the React Native ecosystem and not,really hearing much about the new architecture. I think it's a really good summary about why it matters, what you can achieve. [04:25] -And ultimately, I think one of the biggest things is that it's giving you parody with React behaviors, because a lot of things that were in React before just didn't work in React Native properly and people were figuring that out on usage. Basically, it wasn't really documented very well anywhere. very exciting times. [00:04:40] +And ultimately, I think one of the biggest things is that it's giving you parody with React behaviors, because a lot of things that were in React before just didn't work in React Native properly and people were figuring that out on usage. Basically, it wasn't really documented very well anywhere. very exciting times. [04:40] -it's finally happened. [00:04:42] +it's finally happened. [04:42] -**Carl:** Yeah, I feel like this is an update that's a little easy to be, you know, under a rock on. If it's been in progress for literally five years now, I could see how that might slip into the back of your mind as something like, There's a lot of things I waited five years for, and by about the third or fourth year, I started wondering if it was ever going to actually happen. [00:05:01] +**Carl:** Yeah, I feel like this is an update that's a little easy to be, you know, under a rock on. If it's been in progress for literally five years now, I could see how that might slip into the back of your mind as something like, There's a lot of things I waited five years for, and by about the third or fourth year, I started wondering if it was ever going to actually happen. [05:01] -**Mo:** exactly, and you know, it's one of those things where yeah, it's been happening for five years, but you do get new architecture talks every conference that's a React Native conference or like React Native adjacent. So it's been the topic of conversation and everyone's like, Oh, that'll probably come at some point. [00:05:15] +**Mo:** exactly, and you know, it's one of those things where yeah, it's been happening for five years, but you do get new architecture talks every conference that's a React Native conference or like React Native adjacent. So it's been the topic of conversation and everyone's like, Oh, that'll probably come at some point. [05:15] -And it feels quite surreal to have it actually here. [00:05:18] +And it feels quite surreal to have it actually here. [05:18] ## [BlueSky](https://github.com/bluesky-social/social-app/releases/tag/1.92.0-na-rc.2) and [Expensify](https://blog.swmansion.com/sunrising-new-architecture-in-the-new-expensify-app-729d237a02f5) -**Carl:** Cool. I saw a post from Software Mansion, which is a React Native focused, consultancy as far as I know, talking about bringing the new architecture into the Expensify app, and I understand that the Blue Sky native app is doing a release candidate for it that's like, opt in, and they say it's, you know, it's a release candidate, it's unsupported, try it at your own risk, please report bugs. [00:05:41] +**Carl:** Cool. I saw a post from Software Mansion, which is a React Native focused, consultancy as far as I know, talking about bringing the new architecture into the Expensify app, and I understand that the Blue Sky native app is doing a release candidate for it that's like, opt in, and they say it's, you know, it's a release candidate, it's unsupported, try it at your own risk, please report bugs. [05:41] -But like, those are real apps, like Expensify is widely used enterprise app. So that's some real usage. That's pretty cool. [00:05:48] +But like, those are real apps, like Expensify is widely used enterprise app. So that's some real usage. That's pretty cool. [05:48] -**Mo:** props to the meta team, they actually spent a lot of time with real apps that are large scale apps that, you know, were popularly React Native. They approached the developers of those apps and said, Hey, can you turn on the new architecture before we release and make sure that it's working and behaving and functioning in a way that doesn't really have regressions and is actually better than it was before. [00:06:06] +**Mo:** props to the meta team, they actually spent a lot of time with real apps that are large scale apps that, you know, were popularly React Native. They approached the developers of those apps and said, Hey, can you turn on the new architecture before we release and make sure that it's working and behaving and functioning in a way that doesn't really have regressions and is actually better than it was before. [06:06] -So they've really tested this out and drawn it out. They've worked with library maintainers one on one to get them on to the new architecture boat. So, this is as good as it ever will get in terms of just biting the bullet and releasing. [00:06:19] +So they've really tested this out and drawn it out. They've worked with library maintainers one on one to get them on to the new architecture boat. So, this is as good as it ever will get in terms of just biting the bullet and releasing. [06:19] -**Carl:** Nice. Yeah. [00:06:22] +**Carl:** Nice. Yeah. [06:22] ## [React Compiler Beta](https://react.dev/blog/2024/10/21/react-compiler-beta-release) -**Mark:** The first one is that the React compiler is now in beta. The first, you know, early adopter, I guess, releases came out at React Conf back in May. And it's now in beta you can actually meaningfully try it out, they've done a lot of work to try to improve the behavior against real world applications. [00:06:42] +**Mark:** The first one is that the React compiler is now in beta. The first, you know, early adopter, I guess, releases came out at React Conf back in May. And it's now in beta you can actually meaningfully try it out, they've done a lot of work to try to improve the behavior against real world applications. [06:42] -Along with that, there's a couple different ESLint plugins the Rules of React Hooks plugin has been updated, and it's got some additional checks for whether things are actually components. Along with that, the compiler has its own associated plugin that tries to check for the rules of React behavior. [00:07:02] +Along with that, there's a couple different ESLint plugins the Rules of React Hooks plugin has been updated, and it's got some additional checks for whether things are actually components. Along with that, the compiler has its own associated plugin that tries to check for the rules of React behavior. [07:02] -You know, basically, are you doing anything that is considered illegal, even if it technically runs inside of your React component? And so they're highly recommending that people start trying to use the rules of React plugin in your applications to find places where you're doing things that you're really not supposed to in React. [00:07:23] +You know, basically, are you doing anything that is considered illegal, even if it technically runs inside of your React component? And so they're highly recommending that people start trying to use the rules of React plugin in your applications to find places where you're doing things that you're really not supposed to in React. [07:23] ## [React DevTools v6](https://github.com/facebook/react/blob/main/packages/react-devtools/CHANGELOG.md#600) -**Mark:** Along with that, there's a new React DevTools extension release. They did a lot of shuffling around of the internals, but what is probably most relevant here is that the DevTools now actually have support for showing server components in the tree. And this is a big deal, because up until now there really hadn't been any way to atsee what server components were actually, being used when you were looking at the code on the client side. [00:07:47] +**Mark:** Along with that, there's a new React DevTools extension release. They did a lot of shuffling around of the internals, but what is probably most relevant here is that the DevTools now actually have support for showing server components in the tree. And this is a big deal, because up until now there really hadn't been any way to atsee what server components were actually, being used when you were looking at the code on the client side. [07:47] -So that's a pretty distinct improvement there. [00:07:50] +So that's a pretty distinct improvement there. [07:50] ## [Zustand v5](https://github.com/pmndrs/zustand/releases/tag/v5.0.0) -**Mark:** Flipping away from that over into state management, Zustan just came out with version 5, and it doesn't have any new features, but it does drop some, legacy backwards compatibility changes, default exports, a couple other things, and it now requires React 18. [00:08:08] +**Mark:** Flipping away from that over into state management, Zustan just came out with version 5, and it doesn't have any new features, but it does drop some, legacy backwards compatibility changes, default exports, a couple other things, and it now requires React 18. [08:08] -So if you're using Zustan, you may want to look at picking that up. [00:08:11] +So if you're using Zustan, you may want to look at picking that up. [08:11] -**Carl:** Yeah. Hang on. The Redux guy talking about another state management library. Hold up. [00:08:15] +**Carl:** Yeah. Hang on. The Redux guy talking about another state management library. Hold up. [08:15] -**Mark:** I'm allowed to. ( laughter) [00:08:17] +**Mark:** I'm allowed to. ( laughter) [08:17] -**Carl:** For sure . [00:08:17] +**Carl:** For sure . [08:17] ## [eslint-plugin-react-hooks v5](https://github.com/facebook/react/releases/tag/eslint-plugin-react-hooks%405.0.0) -**Carl:** There's also a new major version of the ESLint plugin for React Hooks. Looks like it supports ESLint v9, and it doesn't look like there's a lot of changes, I think it's mostly just compatibility for latest versions. But, they did change how the rule works for component names. [00:08:33] +**Carl:** There's also a new major version of the ESLint plugin for React Hooks. Looks like it supports ESLint v9, and it doesn't look like there's a lot of changes, I think it's mostly just compatibility for latest versions. But, they did change how the rule works for component names. [08:33] -So now, previously it used to require a non lowercase letter. So it'll let you do things like an underscore in front, and now it doesn't. Now it has to be an uppercase letter. they kind of flipped the bit on that. [00:08:44] +So now, previously it used to require a non lowercase letter. So it'll let you do things like an underscore in front, and now it doesn't. Now it has to be an uppercase letter. they kind of flipped the bit on that. [08:44] -**Mark:** Picky, picky. [00:08:45] +**Mark:** Picky, picky. [08:45] -**Carl:** Cool. [00:08:45] +**Carl:** Cool. [08:45] ## [Announcing Deno 2](https://deno.com/blog/v2.0) ## /r/bun: [Deno 2 vs Bun? What are your thoughts?](https://www.reddit.com/r/bun/comments/1fp9ndk/deno_2_vs_bun_what_are_your_thoughts/) /r/deno: [Deno 2 vs Bun? What are your thoughts?](https://www.reddit.com/r/Deno/comments/1fp9mom/deno_2_vs_bun_what_are_your_thoughts/) -**Carl:** Deno released version 2 as well. We've covered Deno sporadically over the last couple of episodes, but the highlights here that they shout out are backwards compatibility with Node. [00:08:56] +**Carl:** Deno released version 2 as well. We've covered Deno sporadically over the last couple of episodes, but the highlights here that they shout out are backwards compatibility with Node. [08:56] -js and NPM, native support for the package. json and Node modules. I guess that's part of backwards compatibility. More package management, I know, you know, the original idea behind Deno dependencies was just like a little bit more URL based and kind of free for all like no registry just like install code very like go Inspired and I guess they're walking that back pretty hard. [00:09:21] +js and NPM, native support for the package. json and Node modules. I guess that's part of backwards compatibility. More package management, I know, you know, the original idea behind Deno dependencies was just like a little bit more URL based and kind of free for all like no registry just like install code very like go Inspired and I guess they're walking that back pretty hard. [09:21] -**Mark:** they've walked [00:09:22] +**Mark:** they've walked [09:22] -back a lot of things around NPM compatibility. [00:09:25] +back a lot of things around NPM compatibility. [09:25] -**Carl:** Yes, I feel like they started out heavily opinionated and are walking back a lot of those opinions, which okay I mean, I guess fair enough. They did also do a lot of work on the standard library and things So it could well be that some of those opinions were just like this is less work. [00:09:40] +**Carl:** Yes, I feel like they started out heavily opinionated and are walking back a lot of those opinions, which okay I mean, I guess fair enough. They did also do a lot of work on the standard library and things So it could well be that some of those opinions were just like this is less work. [09:40] -We're gonna launch it they've got a standard library Support for private NPM registries. Yeah, a lot of these things are just kind of like details on backwards compatibility with node and NPM they're doing LTS releases. They've got their own JSR, JavaScript, something registry. [00:09:57] +We're gonna launch it they've got a standard library Support for private NPM registries. Yeah, a lot of these things are just kind of like details on backwards compatibility with node and NPM they're doing LTS releases. They've got their own JSR, JavaScript, something registry. [09:57] -And there were a couple of threads that I wanted to shout out of exact same title posted in the Bun and Dino subreddits, Dino2 vs Bun. What are your thoughts? I won't summarize them. It's just like a bunch of Reddit commenters, you can see, see the two, the two camps reacting to the news, [00:10:14] +And there were a couple of threads that I wanted to shout out of exact same title posted in the Bun and Dino subreddits, Dino2 vs Bun. What are your thoughts? I won't summarize them. It's just like a bunch of Reddit commenters, you can see, see the two, the two camps reacting to the news, [10:14] ## [Tauri 2.0](https://v2.tauri.app/blog/tauri-20/) -**Mark:** The Tari framework, which lets you build desktop apps using web technologies as an alternative to Electron just came out with version two. They have some improvements around HMAR and plugins and various other internal improvements. If you're building desktop apps, probably worth taking a look. [00:10:32] +**Mark:** The Tari framework, which lets you build desktop apps using web technologies as an alternative to Electron just came out with version two. They have some improvements around HMAR and plugins and various other internal improvements. If you're building desktop apps, probably worth taking a look. [10:32] -**Carl:** Yeah, I thought it was neat that they added a permissions model. I guess they used to have like an allow list of things that your app was allowed to do. And they talked a little bit about enhancing that with, you know, a permissions model, which seems like a good improvement. Yeah, they also mentioned mobile support, which was like, what? I feel like they buried the lead on that. It's like, I want to know a lot more about that. I feel like Rust based native app framework where you can use React on Android and iOS. Like, huh, I want to know a lot more about that, but they didn't say too much in the announcements. [00:11:04] +**Carl:** Yeah, I thought it was neat that they added a permissions model. I guess they used to have like an allow list of things that your app was allowed to do. And they talked a little bit about enhancing that with, you know, a permissions model, which seems like a good improvement. Yeah, they also mentioned mobile support, which was like, what? I feel like they buried the lead on that. It's like, I want to know a lot more about that. I feel like Rust based native app framework where you can use React on Android and iOS. Like, huh, I want to know a lot more about that, but they didn't say too much in the announcements. [11:04] -**Mo:** Yeah, it's, as with all things with thisso it's not official yet with Taure. I think they're just kind of working on it, so I,suspect they're kind of saying, hey, we're working on it. The general gist with all of these Electron like frameworks it ultimately ends upbeing something like Cordova with Ionic. [00:11:22] +**Mo:** Yeah, it's, as with all things with thisso it's not official yet with Taure. I think they're just kind of working on it, so I,suspect they're kind of saying, hey, we're working on it. The general gist with all of these Electron like frameworks it ultimately ends upbeing something like Cordova with Ionic. [11:22] -it's a web view that triggers some native functionality. It won't be a truly native app, which is, I guess, one of the distinguishing factors of React Native. But it'd be very interesting to see how they play this out. And how it works in practice. It might be something a bit different, but they're being very cryptic about it so far. [00:11:38] +it's a web view that triggers some native functionality. It won't be a truly native app, which is, I guess, one of the distinguishing factors of React Native. But it'd be very interesting to see how they play this out. And how it works in practice. It might be something a bit different, but they're being very cryptic about it so far. [11:38] -So, remains to be seen. [00:11:40] +So, remains to be seen. [11:40] ## [One the new RN framework](https://onestack.dev/) @@ -228,365 +228,365 @@ So, remains to be seen. [00:11:40] ## Built on [ZeroSync](https://zerosync.dev/) -**Mo:** Moving on. So, earlier this year the React Native Core team came up with this big announcement saying, Hey, we think you should use frameworks. And not build your own frameworks every time you initialize a new React Native app. And so at that point they introduced Expo as the only option to, as a pre built framework. [00:11:57] +**Mo:** Moving on. So, earlier this year the React Native Core team came up with this big announcement saying, Hey, we think you should use frameworks. And not build your own frameworks every time you initialize a new React Native app. And so at that point they introduced Expo as the only option to, as a pre built framework. [11:57] -They said, you know, you're either using Expo, or you've built your own framework by building on top of the core of React Native. And so now we have finally gotten a second framework that's come in and said, Hey, I I'm a contender for that spot as well. the framework is called one. I'm not too sure why there's, that's the naming, but, there we are. [00:12:16] +They said, you know, you're either using Expo, or you've built your own framework by building on top of the core of React Native. And so now we have finally gotten a second framework that's come in and said, Hey, I I'm a contender for that spot as well. the framework is called one. I'm not too sure why there's, that's the naming, but, there we are. [12:16] -You have a theory. All right. [00:12:17] +You have a theory. All right. [12:17] -**Carl:** so it looks like they're built on a sync engine that's called Zero. ZeroSync. so I guess this is, you know, they're built on Zero so they are one. [00:12:26] +**Carl:** so it looks like they're built on a sync engine that's called Zero. ZeroSync. so I guess this is, you know, they're built on Zero so they are one. [12:26] -**Mo:** Cool. So, this is an interesting development because the person who's behind this is behind the library called Tamagui. So Tamagui is a styling library within the React Native Ecosystem. the whole spiel with Tamagui is that it's an optimized view layer library that you can use not just for your React Native apps, but also in things like Next. [00:12:46] +**Mo:** Cool. So, this is an interesting development because the person who's behind this is behind the library called Tamagui. So Tamagui is a styling library within the React Native Ecosystem. the whole spiel with Tamagui is that it's an optimized view layer library that you can use not just for your React Native apps, but also in things like Next. [12:46] -js. So you can kind of share your UI across the board between React Native and the web. it's used to build these universal apps. Tamagui is quite an interesting project. It's actually a very heavyweight library, because it comes with things like a styling solution, a compiler that, does view flattening. [00:13:05] +js. So you can kind of share your UI across the board between React Native and the web. it's used to build these universal apps. Tamagui is quite an interesting project. It's actually a very heavyweight library, because it comes with things like a styling solution, a compiler that, does view flattening. [13:05] -Next. js optimizations out of the hood. it's a very heavy styling solution when you're using it just for React Native, and it's notoriously complicated as well. they've taken Tamagui, paired it with a whole bunch of other stuff, like a file system routing based solution, and the most interesting part, I'd say arguably, is the fact that this is beat based.previous to this, you couldn't use Vite for React Native because you'd have to use either Metro or in some cases you could use Webpack, but it was quite a pain to actually get that working. the creator of this, Nate, has been working on seeing if Vite can become a compiler for React Native. [00:13:42] +Next. js optimizations out of the hood. it's a very heavy styling solution when you're using it just for React Native, and it's notoriously complicated as well. they've taken Tamagui, paired it with a whole bunch of other stuff, like a file system routing based solution, and the most interesting part, I'd say arguably, is the fact that this is beat based.previous to this, you couldn't use Vite for React Native because you'd have to use either Metro or in some cases you could use Webpack, but it was quite a pain to actually get that working. the creator of this, Nate, has been working on seeing if Vite can become a compiler for React Native. [13:42] -React Native, and it seems like there's some good movement on this. So, it uses Veep by default to kind of standardize the bundler across web and mobile. So, it's a very interesting proposition and they have a lot of experience but it's still going to be interesting to see how this plays out. [00:13:58] +React Native, and it seems like there's some good movement on this. So, it uses Veep by default to kind of standardize the bundler across web and mobile. So, it's a very interesting proposition and they have a lot of experience but it's still going to be interesting to see how this plays out. [13:58] -It's very early days. So, I would Tread with caution until it's reached some point of stability and it's being used. But it's very interesting to see how it's forming. [00:14:09] +It's very early days. So, I would Tread with caution until it's reached some point of stability and it's being used. But it's very interesting to see how it's forming. [14:09] -**Carl:** Yeah, definitely early days, but like, I'm taking this reasonably seriously. It seems like a pretty clever and opinionated take on how to do a framework on React Native. I guess, you know, like, my rough mental model for this this feels to me like the React Native equivalent for Remix. [00:14:28] +**Carl:** Yeah, definitely early days, but like, I'm taking this reasonably seriously. It seems like a pretty clever and opinionated take on how to do a framework on React Native. I guess, you know, like, my rough mental model for this this feels to me like the React Native equivalent for Remix. [14:28] -in large part because it's beat based, you know, okay. [00:14:31] +in large part because it's beat based, you know, okay. [14:31] -**Mo:** but it has a lot of, like, very similar ideas, right? Like, they've kind of introduced this concept of loaders as well. it's very Remix esque. so I can see why you take that comparison. [00:14:42] +**Mo:** but it has a lot of, like, very similar ideas, right? Like, they've kind of introduced this concept of loaders as well. it's very Remix esque. so I can see why you take that comparison. [14:42] -**Carl:** another thing that I find fascinating here is they put local first and sync engine very heavy in their homepage marketing for this. they talk a lot about this being built on zero sync, which is built by a company that I've heard of and that the CEO follows me on Twitter. [00:14:57] +**Carl:** another thing that I find fascinating here is they put local first and sync engine very heavy in their homepage marketing for this. they talk a lot about this being built on zero sync, which is built by a company that I've heard of and that the CEO follows me on Twitter. [14:57] -I think that's cool. it's being built by a team that worked at a decentralized exchange that I had heard of. Six years ago. So they worked on decentralized tech that I took seriously as someone I also worked in decentralized tech six years ago. So I think it's really interesting that that's the Opinion they're bringing to this company that they named that they worked at Uniswap I viewed as one of the serious contenders in web 3 before it became overtaken by scams So it looks like they have now moved out of Web3, taken that decentralized technology experience, and are building a React Native framework that is based around local first, you know, data on your device, primarily synced to a backend. [00:15:40] +I think that's cool. it's being built by a team that worked at a decentralized exchange that I had heard of. Six years ago. So they worked on decentralized tech that I took seriously as someone I also worked in decentralized tech six years ago. So I think it's really interesting that that's the Opinion they're bringing to this company that they named that they worked at Uniswap I viewed as one of the serious contenders in web 3 before it became overtaken by scams So it looks like they have now moved out of Web3, taken that decentralized technology experience, and are building a React Native framework that is based around local first, you know, data on your device, primarily synced to a backend. [15:40] -And I think that's really cool. I am pretty bullish on local first generally, I'm very curious to see how this works. Early days, like you said, it's interesting to me. I am intrigued. [00:15:51] +And I think that's really cool. I am pretty bullish on local first generally, I'm very curious to see how this works. Early days, like you said, it's interesting to me. I am intrigued. [15:51] -**Mo:** and Uniswap is built with Tamagui. So the web and the mobile app is built with Tamagui which kind of is a real implementation, real world production app that's using the universal app paradigm. they know how to do it. It's just a matter of how, easy to use it is for other developers who aren't that familiar with this sort of framework or this [00:16:10] +**Mo:** and Uniswap is built with Tamagui. So the web and the mobile app is built with Tamagui which kind of is a real implementation, real world production app that's using the universal app paradigm. they know how to do it. It's just a matter of how, easy to use it is for other developers who aren't that familiar with this sort of framework or this [16:10] -**Carl:** it's Yeah, right. It's easy to say how powerful and useful something is when you are the person who made it. [00:16:15] +**Carl:** it's Yeah, right. It's easy to say how powerful and useful something is when you are the person who made it. [16:15] ## [Cloudflare Workers updates](https://blog.cloudflare.com/builder-day-2024-announcements/) -**Carl:** Cloudflare Workers released a bunch of new updates, and a lot of them look really cool to me. So I'm using Cloudflare Workers a little bit in like, a side project or two. [00:16:24] +**Carl:** Cloudflare Workers released a bunch of new updates, and a lot of them look really cool to me. So I'm using Cloudflare Workers a little bit in like, a side project or two. [16:24] -I would like to use it more for ReactiFlux projects, but actually Discord does not allow the gateway to connect to like, the Cloudflare Workers durable objects. For some reason, I don't know why, that seems weird. than the fact that you just can't connect to the API, they seem like a really powerful way to interact with Discord. [00:16:43] +I would like to use it more for ReactiFlux projects, but actually Discord does not allow the gateway to connect to like, the Cloudflare Workers durable objects. For some reason, I don't know why, that seems weird. than the fact that you just can't connect to the API, they seem like a really powerful way to interact with Discord. [16:43] -So, I would love to use them for that. Sadly, I can't. ButI think Cloudflare released, yeah, 18 big updates to the workers platform is the headline here. Literally the title of release. Something that I found really interesting is they are advertising CICD with PR preview releases for workers. [00:17:01] +So, I would love to use them for that. Sadly, I can't. ButI think Cloudflare released, yeah, 18 big updates to the workers platform is the headline here. Literally the title of release. Something that I found really interesting is they are advertising CICD with PR preview releases for workers. [17:01] -I think that's not going to be quite as like turnkey, instantly useful as it is in like Netlify or you know, Vercel where, you know, like, you get a PR preview on your website, you just get a new domain, boom, done, everything kind of works. Assuming you didn't like actively screw something up and how you are doing, you know, base URLs. [00:17:22] +I think that's not going to be quite as like turnkey, instantly useful as it is in like Netlify or you know, Vercel where, you know, like, you get a PR preview on your website, you just get a new domain, boom, done, everything kind of works. Assuming you didn't like actively screw something up and how you are doing, you know, base URLs. [17:22] -I think for a backend service like this, it's just not going to be quite so simple and like zero effort to take advantage of PR previews. Like you, you need to have a staging environment where you can be notified of a new URL being available and then dynamically swap out the, like, base route for this. [00:17:39] +I think for a backend service like this, it's just not going to be quite so simple and like zero effort to take advantage of PR previews. Like you, you need to have a staging environment where you can be notified of a new URL being available and then dynamically swap out the, like, base route for this. [17:39] -And then like other stuff, like what about. Seeding test data and things like that. So I don't think this is quite so like Mind blowingly immediately useful as it is on a web deployment CICD, but that's still super cool Like that's you know, like for it for a discord bot, which is mostly where I've tried to use these like that's still pretty Accessible. [00:18:00] +And then like other stuff, like what about. Seeding test data and things like that. So I don't think this is quite so like Mind blowingly immediately useful as it is on a web deployment CICD, but that's still super cool Like that's you know, like for it for a discord bot, which is mostly where I've tried to use these like that's still pretty Accessible. [18:00] -Yeah, so I think that's pretty pretty useful some other smaller stuff Logging on the dashboard for your workers. I have run into issues with like Observability was not easy before this, so I have actually already enabled logging on the dashboard in one of my projects because I needed it, and I was like, oh, cool, great, now I can just do it's not effort. [00:18:17] +Yeah, so I think that's pretty pretty useful some other smaller stuff Logging on the dashboard for your workers. I have run into issues with like Observability was not easy before this, so I have actually already enabled logging on the dashboard in one of my projects because I needed it, and I was like, oh, cool, great, now I can just do it's not effort. [18:17] -Better Node. js compatibility, they have, because it's a serverless runtime, they don't have stuff, like FS or HTTP or things like that. It was a little bit more Sandbox, like, Request Lifetime, they give you the entire environment in the request handler. So, when they say greater Node. [00:18:35] +Better Node. js compatibility, they have, because it's a serverless runtime, they don't have stuff, like FS or HTTP or things like that. It was a little bit more Sandbox, like, Request Lifetime, they give you the entire environment in the request handler. So, when they say greater Node. [18:35] -js compatibility, I'm not quite sure how to interpret that. The, they had like a compatibility chart, and it included like 100 percent on, you know, NodeFS. But like, I don't know what that means when you don't have a file system, you know. I don't think they are actually emulating a file system where you can read and write. [00:18:52] +js compatibility, I'm not quite sure how to interpret that. The, they had like a compatibility chart, and it included like 100 percent on, you know, NodeFS. But like, I don't know what that means when you don't have a file system, you know. I don't think they are actually emulating a file system where you can read and write. [18:52] -Maybe they are, I don't think they are. [00:18:54] +Maybe they are, I don't think they are. [18:54] -**Mo:** [00:18:54] +**Mo:** [18:54] -they're slowly going through the list of Node APIs, And I think they support like only 50 percent of them. So they still don't support like file system in any capacity, just because it doesn't make sense for the runtimes they have, because our workers kind of just run in a V8 isolate. [00:19:11] +they're slowly going through the list of Node APIs, And I think they support like only 50 percent of them. So they still don't support like file system in any capacity, just because it doesn't make sense for the runtimes they have, because our workers kind of just run in a V8 isolate. [19:11] -just running somewhere on their edge network [00:19:13] +just running somewhere on their edge network [19:13] -**Carl:** That's what confused me though, because the compatibility thing said 100 percent coverage for FS. And so it's like, I know you don't support this because of the environment, what does that mean? I don't know how to interpret this chart. [00:19:24] +**Carl:** That's what confused me though, because the compatibility thing said 100 percent coverage for FS. And so it's like, I know you don't support this because of the environment, what does that mean? I don't know how to interpret this chart. [19:24] -**Mo:** yeah, I think some of them are probably just weird polyfills or just like shimmed values. I'm [00:19:30] +**Mo:** yeah, I think some of them are probably just weird polyfills or just like shimmed values. I'm [19:30] -**Carl:** Yeah, I mean, I guess even like, doesn't immediately explode is an improvement, you [00:19:36] +**Carl:** Yeah, I mean, I guess even like, doesn't immediately explode is an improvement, you [19:36] -**Mo:** Is it an improvement yet? [00:19:38] +**Mo:** Is it an improvement yet? [19:38] -**Carl:** Which is where it's been for me, like, oh my god, there were some weird things that happened when I was trying to develop that. Like, CommonJS imports and things, yeah, so, yeah, I have to play around with that a little bit more. [00:19:48] +**Carl:** Which is where it's been for me, like, oh my god, there were some weird things that happened when I was trying to develop that. Like, CommonJS imports and things, yeah, so, yeah, I have to play around with that a little bit more. [19:48] -Yeah, they also have Next. js support. via open next, which they've open sourced. So like, cool, here's an open source runtime that they are using themselves in production to provide next support. And like, that's enormous. I think I saw when this was announced Vercel, some of the big Vercel DevRel folks who are active on Twitter seemed a little bit like they were nervous. [00:20:12] +Yeah, they also have Next. js support. via open next, which they've open sourced. So like, cool, here's an open source runtime that they are using themselves in production to provide next support. And like, that's enormous. I think I saw when this was announced Vercel, some of the big Vercel DevRel folks who are active on Twitter seemed a little bit like they were nervous. [20:12] -**Mo:** I've used Cloudflare Workers quite a lot recently, and they had some, like, Next. js support, limited. They've been increasing it for the past few years. They started off with just, like, you can static export Next sites. Great. You can do that with anywhere and host it anywhere. Right? Then it was like, we'll support some limited sub features of Next. [00:20:28] +**Mo:** I've used Cloudflare Workers quite a lot recently, and they had some, like, Next. js support, limited. They've been increasing it for the past few years. They started off with just, like, you can static export Next sites. Great. You can do that with anywhere and host it anywhere. Right? Then it was like, we'll support some limited sub features of Next. [20:28] -And I think they're now supporting it almost fully with the OpenNext runtime. And I can see why some of the Vercel folks would be a little bit on edge, because if you support Next to that degree, yes, Vercel has a lot of nice DevEx features, but when you look at the cost for a large scale site, and where Vercel would make a lot of their money you can get the majority of those functionalities, or like 80 percent of those functionalities on CloudFlare pages. [00:20:52] +And I think they're now supporting it almost fully with the OpenNext runtime. And I can see why some of the Vercel folks would be a little bit on edge, because if you support Next to that degree, yes, Vercel has a lot of nice DevEx features, but when you look at the cost for a large scale site, and where Vercel would make a lot of their money you can get the majority of those functionalities, or like 80 percent of those functionalities on CloudFlare pages. [20:52] -it kind of works similarly. You get those preview branches and all of that. So I can see why they'd be a little bit anxious about that, but I suspect they'll do what Vercel usually does, which is introduce a new, like, runtime dependency, and then it'll take everyone six months to basically get on the same compatibility. [00:21:11] +it kind of works similarly. You get those preview branches and all of that. So I can see why they'd be a little bit anxious about that, but I suspect they'll do what Vercel usually does, which is introduce a new, like, runtime dependency, and then it'll take everyone six months to basically get on the same compatibility. [21:11] -So we'll see. [00:21:12] +So we'll see. [21:12] -**Carl:** They'll just dig that moat a little bit deeper, maybe. Yeah, they also have per worker SQLite, which is neat. Previously, I guess it had only been, like key value store based, so it was kind of like having local storage available per worker, which is great, but, you know, you can't query it.you can't really do structured data in a situation like that. As well as blue green deployments, incremental rollouts. And queues, and a vector database, performance improvements, like, you know, one of the performance improvements is faster time to first token on their AI, platform. [00:21:41] +**Carl:** They'll just dig that moat a little bit deeper, maybe. Yeah, they also have per worker SQLite, which is neat. Previously, I guess it had only been, like key value store based, so it was kind of like having local storage available per worker, which is great, but, you know, you can't query it.you can't really do structured data in a situation like that. As well as blue green deployments, incremental rollouts. And queues, and a vector database, performance improvements, like, you know, one of the performance improvements is faster time to first token on their AI, platform. [21:41] -like you were saying, Mo, about Vercel getting maybe a little nervous aboutCloudflare workers with real Next support for things like the dynamic images, some of their, longer tail of server based functionality with PR previews, incremental rollouts, and, a queuing system, like,that starts to sound a lot like the offerings that Vercel offers. [00:22:03] +like you were saying, Mo, about Vercel getting maybe a little nervous aboutCloudflare workers with real Next support for things like the dynamic images, some of their, longer tail of server based functionality with PR previews, incremental rollouts, and, a queuing system, like,that starts to sound a lot like the offerings that Vercel offers. [22:03] -But yeah, [00:22:05] +But yeah, [22:05] ## [Zeego 2.0](https://github.com/nandorojo/zeego/releases/tag/v2.0.0) -**Mo:** Cool. I'll quickly just give a shout out to version Zgo. So for those of you who aren't familiar, Zgo is a wrapper, it's almost like an abstraction, on top of context menus on both native and web. So again, going in that universal app trend you can use a single API in your code base to create context menus for your web with Radix, and then it'll hook into the native layer context menus on iOS and Android. [00:22:26] +**Mo:** Cool. I'll quickly just give a shout out to version Zgo. So for those of you who aren't familiar, Zgo is a wrapper, it's almost like an abstraction, on top of context menus on both native and web. So again, going in that universal app trend you can use a single API in your code base to create context menus for your web with Radix, and then it'll hook into the native layer context menus on iOS and Android. [22:26] -So it's a nice little library to use as a utility when you do want to have context on certain elements of your app. [00:22:32] +So it's a nice little library to use as a utility when you do want to have context on certain elements of your app. [22:32] -**Carl:** Cool, seems useful. [00:22:33] +**Carl:** Cool, seems useful. [22:33] ## Conferences -**Carl:** Alright I'm gonna fly through some conferences. [00:22:35] +**Carl:** Alright I'm gonna fly through some conferences. [22:35] ## [HalfStack London](https://halfstackconf.com/london/spon) London, UK Nov 13 -**Carl:** Halfstack London is happening in two weeks. November 13th. [00:22:40] +**Carl:** Halfstack London is happening in two weeks. November 13th. [22:40] ## [React Native London](https://guild.host/events/rnlconf-2024-y9arho/attend?discount=TMIR) London, UK Nov 15 -**Mo:** Yes, and another shameless plug React Native London conference, this will be the last announcement before it actually happens in Just over two weeks now. So, this is happening in London, of course on the 14th and 15th of November. Tickets are gonna probably start closing soon, in the next week and a half, roughly, so grab your ticket if you're interested, and there's a discount code with TMIR for this month in React. [00:23:03] +**Mo:** Yes, and another shameless plug React Native London conference, this will be the last announcement before it actually happens in Just over two weeks now. So, this is happening in London, of course on the 14th and 15th of November. Tickets are gonna probably start closing soon, in the next week and a half, roughly, so grab your ticket if you're interested, and there's a discount code with TMIR for this month in React. [23:03] -Where you can get 10 percent off. So come along, say hi to me if you're there, shoot me a message if you do plan on attending. We'd love to host you. [00:23:10] +Where you can get 10 percent off. So come along, say hi to me if you're there, shoot me a message if you do plan on attending. We'd love to host you. [23:10] ## [React Summit US](https://reactsummit.us/) New York, USA Nov 18-21 -**Carl:** There's also React Summit in New York November 18th through 21st. [00:23:14] +**Carl:** There's also React Summit in New York November 18th through 21st. [23:14] ## [React Africa](https://react-africa.com/) Casablanca, Morocco Nov 29 -**Carl:** React Africa in Casablanca, Morocco at the end of the month in November 29th. [00:23:19] +**Carl:** React Africa in Casablanca, Morocco at the end of the month in November 29th. [23:19] ## [React Day Berlin](https://reactday.berlin/) Berlin, DE Dec 13 & 16 -**Carl:** And React Day Berlin December 13th and 16th. [00:23:23] +**Carl:** And React Day Berlin December 13th and 16th. [23:23] -**Mark:** I will be speaking at React Summit. [00:23:25] +**Mark:** I will be speaking at React Summit. [23:25] -**Carl:** Cool. Yeah, go to React Summit in New York and go meet Mark. I live in New York. [00:23:31] +**Carl:** Cool. Yeah, go to React Summit in New York and go meet Mark. I live in New York. [23:31] -I will try and make it if I can. [00:23:34] +I will try and make it if I can. [23:34] ## [Sponsored by Infinite Red](https://infinite.red) -**Carl:** So we are exclusively brought to you by Infinite Red. That's very tongue in cheek, but yes, they are our only sponsor right now. Infinite Red is an expert React Native consultancy. They've been around since 2015 uh, and are owned by Jim and Holmgren. [00:23:47] +**Carl:** So we are exclusively brought to you by Infinite Red. That's very tongue in cheek, but yes, they are our only sponsor right now. Infinite Red is an expert React Native consultancy. They've been around since 2015 uh, and are owned by Jim and Holmgren. [23:47] -Todd Wirth and Gant Laborde. They've been super active in the community for literally my entire career. I got my start like professionally with React around 2014 or so. So like, I have been aware of them for a really long time. And yeah, I connected with them in a conference and just great vibes. So good. [00:24:04] +Todd Wirth and Gant Laborde. They've been super active in the community for literally my entire career. I got my start like professionally with React around 2014 or so. So like, I have been aware of them for a really long time. And yeah, I connected with them in a conference and just great vibes. So good. [24:04] -They only do React Native and have built over 75 apps for companies from startups to like huge enterprises. And just like, other than being good people who do a lot of good things for the React and React Native ecosystemsthey seem to be very good to their people because they, like their average tenure of employees at their company is more than seven years. [00:24:23] +They only do React Native and have built over 75 apps for companies from startups to like huge enterprises. And just like, other than being good people who do a lot of good things for the React and React Native ecosystemsthey seem to be very good to their people because they, like their average tenure of employees at their company is more than seven years. [24:23] -Which is wild to me. That's double the tenure I've ever spent at one company. So that seems great. They are not a like feature factory. They work alongside your developers at your company and help you develop your own expertise there. So if you are spinning up a new product with React Native and want some help hitting the ground running, definitely give them a ring. [00:24:41] +Which is wild to me. That's double the tenure I've ever spent at one company. So that seems great. They are not a like feature factory. They work alongside your developers at your company and help you develop your own expertise there. So if you are spinning up a new product with React Native and want some help hitting the ground running, definitely give them a ring. [24:41] -And uh, you do let them know that you heard about them from us. Not that we get anything out of it. Just, you know, Maybe help us in the next contract negotiations. He he he. [00:24:48] +And uh, you do let them know that you heard about them from us. Not that we get anything out of it. Just, you know, Maybe help us in the next contract negotiations. He he he. [24:48] ## Main Content -**Carl:** Into our main content though. [00:24:50] +**Carl:** Into our main content though. [24:50] ## Some React 19 progress, but no ETA ## [Lazy Context Propagation](https://x.com/sebastienlorber/status/1841042683122286641) -**Mark:** So we've been attempting to track the progress of React 19 and there were a couple of progress that I saw happening in the last month or so. The. Big thing is that we're still waiting for them to finish work on the changes related to the parallel suspense rendering behavior that caused an outcry earlier this year. [00:25:13] +**Mark:** So we've been attempting to track the progress of React 19 and there were a couple of progress that I saw happening in the last month or so. The. Big thing is that we're still waiting for them to finish work on the changes related to the parallel suspense rendering behavior that caused an outcry earlier this year. [25:13] -And I saw a couple PRs from Andrew get merged. I later saw one of them get reverted. And then, just in the last week or so, I think I saw one of them get unreverted or a feature flag get landed around that. So, there is work going on, I have no evidence to say how much more work is needed to be done. I also think I saw someone from the React team, possibly Sophie, mention that they're hoping to get it out by the end of the year, but, you know, nothing concrete either way. [00:25:46] +And I saw a couple PRs from Andrew get merged. I later saw one of them get reverted. And then, just in the last week or so, I think I saw one of them get unreverted or a feature flag get landed around that. So, there is work going on, I have no evidence to say how much more work is needed to be done. I also think I saw someone from the React team, possibly Sophie, mention that they're hoping to get it out by the end of the year, but, you know, nothing concrete either way. [25:46] -So, stuff's happening, stand by, and wait. It's all we can do. [00:25:51] +So, stuff's happening, stand by, and wait. It's all we can do. [25:51] ## [“Server Actions” renamed to “Server Functions”](https://19.react.dev/reference/rsc/server-functions) -**Carl:** Hurry up and wait. Yeah. And I guess one concrete change that has happened is server actions have been renamed to server functions, which I don't know, I guess that seems good. There's a lot of things in the ecosystem that were called actions. So one less thing called action seems good. [00:26:07] +**Carl:** Hurry up and wait. Yeah. And I guess one concrete change that has happened is server actions have been renamed to server functions, which I don't know, I guess that seems good. There's a lot of things in the ecosystem that were called actions. So one less thing called action seems good. [26:07] -**Mark:** Probably. [00:26:08] +**Mark:** Probably. [26:08] ## [React Native Bottom Tabs library using native bottom tabs](https://github.com/okwasniewski/react-native-bottom-tabs) -**Mo:** Cool. So, the next update is that there's this library called react native bottom tabs that's made by one of the developers at Callstack, Oskar Kwaszynewski. Who I've known for a little while. And This is quite an interesting development. Because The current library that you use for navigation within React Native Is called React Navigation. [00:26:28] +**Mo:** Cool. So, the next update is that there's this library called react native bottom tabs that's made by one of the developers at Callstack, Oskar Kwaszynewski. Who I've known for a little while. And This is quite an interesting development. Because The current library that you use for navigation within React Native Is called React Navigation. [26:28] -And React Navigation has bottom tabs within it. But they're not fully native backed bottom tabs. And so it means when there's updates Or specific Styling applied to certain platforms Let's say onLet's say on iOS Where if you're on like tvOS, the tabs go on the top. And if you're on tablet, you can have them as like a sidebar. [00:26:47] +And React Navigation has bottom tabs within it. But they're not fully native backed bottom tabs. And so it means when there's updates Or specific Styling applied to certain platforms Let's say onLet's say on iOS Where if you're on like tvOS, the tabs go on the top. And if you're on tablet, you can have them as like a sidebar. [26:47] -But on mobile, they kind of just look like a normal tab bar. Those changes wouldn't be reflected because they were just basically JavaScript views that were customized. And so the whole purpose of React Native bottom tabs is to create native based navigationOn React Native apps using a JavaScript API. [00:27:05] +But on mobile, they kind of just look like a normal tab bar. Those changes wouldn't be reflected because they were just basically JavaScript views that were customized. And so the whole purpose of React Native bottom tabs is to create native based navigationOn React Native apps using a JavaScript API. [27:05] -So this will hook into the native layer and it'll look and be styled as a native layer bottom tab, which is quite cool. And a lot of work's being placed into it. One of the things that I've been thinking about with this is could this possibly be introduced and upstreamed into React Navigation because It's a really good alternative. [00:27:27] +So this will hook into the native layer and it'll look and be styled as a native layer bottom tab, which is quite cool. And a lot of work's being placed into it. One of the things that I've been thinking about with this is could this possibly be introduced and upstreamed into React Navigation because It's a really good alternative. [27:27] -So in React Navigation, we've got native stack navigators, which is the stack navigator that you can use. And it uses the native functionality for the stacks. This could also be introduced as some sort of native tab navigator. So still to be seen, but quite interesting as an update. [00:27:45] +So in React Navigation, we've got native stack navigators, which is the stack navigator that you can use. And it uses the native functionality for the stacks. This could also be introduced as some sort of native tab navigator. So still to be seen, but quite interesting as an update. [27:45] ## [Meta Connect showcasing new AR/VR apps built with RN](https://engineering.fb.com/2024/10/02/android/react-at-meta-connect-2024/) -**Mo:** Cool. Next up, we have MetaConnect happening, and there was a whole bunch of AR VR showcases, which was cool. Obviously, Mark Zuckerberg went on stage and showed off the Orion headsets, which are not really going on sale, but they're kind of showing the future of where Meta wants to go, which I'm personally quite excited about, I really like AR, I hate massive VR goggles, but I really like the form factor of the uh, Google Glass. [00:28:09] +**Mo:** Cool. Next up, we have MetaConnect happening, and there was a whole bunch of AR VR showcases, which was cool. Obviously, Mark Zuckerberg went on stage and showed off the Orion headsets, which are not really going on sale, but they're kind of showing the future of where Meta wants to go, which I'm personally quite excited about, I really like AR, I hate massive VR goggles, but I really like the form factor of the uh, Google Glass. [28:09] -And I was quite gutted that Google Glass was, was basically chopped. I think it was just a bit too early for its time. But, on the side of that demo there some sort of, like, engineering blogs that were released. And they showcased at the event the Instagram and Facebook apps for the new MetaQuest. [00:28:25] +And I was quite gutted that Google Glass was, was basically chopped. I think it was just a bit too early for its time. But, on the side of that demo there some sort of, like, engineering blogs that were released. And they showcased at the event the Instagram and Facebook apps for the new MetaQuest. [28:25] -interestingly despite Instagram being a native application and despite you know, parts of the Facebook app also being backed by native the Instagram and Facebook apps for the MetaQuest have been rebuilt with React Native, which is quite a big step forward. win for the React Native ecosystem because it's being used on more and more platforms and powering more of Meta's apps that is part of the core business. [00:28:50] +interestingly despite Instagram being a native application and despite you know, parts of the Facebook app also being backed by native the Instagram and Facebook apps for the MetaQuest have been rebuilt with React Native, which is quite a big step forward. win for the React Native ecosystem because it's being used on more and more platforms and powering more of Meta's apps that is part of the core business. [28:50] -So this was quite cool to hear and they've built some incredible apps. Like if you, if you look at the demos, there's really swift animations there. Everything looks really buttery smooth and looks really nice. So, it's a really cool showcase of, what they've been able to achieve by rebuilding some of this stuff in React Native. [00:29:06] +So this was quite cool to hear and they've built some incredible apps. Like if you, if you look at the demos, there's really swift animations there. Everything looks really buttery smooth and looks really nice. So, it's a really cool showcase of, what they've been able to achieve by rebuilding some of this stuff in React Native. [29:06] -Cool. [00:29:07] +Cool. [29:07] ## [Static Hermes Updates](https://github.com/EvanBacon/expo-static-hermes-demo) -**Mo:** Just a quick update on Static Hermes. Not much is happening here. There's a lot of discussions around like how compatible it would be and you know, what challenges it would introduce with the existing ecosystem. Svetlan Mikhov, who's one of the people behind Static Hermes and who first introduced it last year at React Native EU actually talked about some of the limitations that they were facing trying to take Static Hermes to production with the wider ecosystem. [00:29:30] +**Mo:** Just a quick update on Static Hermes. Not much is happening here. There's a lot of discussions around like how compatible it would be and you know, what challenges it would introduce with the existing ecosystem. Svetlan Mikhov, who's one of the people behind Static Hermes and who first introduced it last year at React Native EU actually talked about some of the limitations that they were facing trying to take Static Hermes to production with the wider ecosystem. [29:30] -A few people have been playing around giving him some feedback. He's been going on long threads on Twitter explaining some of the details of the implementation, especially with assembly code. So he's been like pasting assembly code in Twitter threads which is quite interesting and he's been styling them like, he's been going through a lot of effort to try to really like explain to the community, which is props to him. [00:29:48] +A few people have been playing around giving him some feedback. He's been going on long threads on Twitter explaining some of the details of the implementation, especially with assembly code. So he's been like pasting assembly code in Twitter threads which is quite interesting and he's been styling them like, he's been going through a lot of effort to try to really like explain to the community, which is props to him. [29:48] -But Evan Bacon, as Evan Bacon does came up with a demo of using Static Hermes with Expo dev clients on iOS. So Software Mansion's been working on some stuff around trying to take Static Hermes to production, and Evan Bacon's been trying to see if he can find a way to make it work with a basic Expo app. [00:30:07] +But Evan Bacon, as Evan Bacon does came up with a demo of using Static Hermes with Expo dev clients on iOS. So Software Mansion's been working on some stuff around trying to take Static Hermes to production, and Evan Bacon's been trying to see if he can find a way to make it work with a basic Expo app. [30:07] -There's still some limitations it's not anywhere near production ready, but it's just, things are being done in that space, which is quite cool to see. [00:30:14] +There's still some limitations it's not anywhere near production ready, but it's just, things are being done in that space, which is quite cool to see. [30:14] -**Carl:** Yeah. Super cool. Nice. [00:30:16] +**Carl:** Yeah. Super cool. Nice. [30:16] ## [Anyone else feel burnt by Epic React? : r/reactjs](https://old.reddit.com/r/reactjs/comments/1fwks6r/anyone_else_feel_burnt_by_epic_react/) -**Carl:** This is maybe a little bit of a small note, but I think we've plugged it before. So I wanted include some follow up from the ecosystem. Folks on Reddit have been sharing about feeling burnt by Epic React, which is Kent C. Dodd's React course. I empathize. I get it. Their criticisms are pretty legit. [00:30:34] +**Carl:** This is maybe a little bit of a small note, but I think we've plugged it before. So I wanted include some follow up from the ecosystem. Folks on Reddit have been sharing about feeling burnt by Epic React, which is Kent C. Dodd's React course. I empathize. I get it. Their criticisms are pretty legit. [30:34] -Some of them are legit. Some of them feel like, you know, reddit commenters having strong opinions about how the world works, which are not necessarily based in economic realities. [00:30:42] +Some of them are legit. Some of them feel like, you know, reddit commenters having strong opinions about how the world works, which are not necessarily based in economic realities. [30:42] ## [Epic React V1 => V2 Upgrade & Deception.](https://old.reddit.com/r/reactjs/comments/1fut75h/epic_react_v1_v2_upgrade_deception/) -**Carl:** Butsome of the complaints that seemed a little more legit to me were, like, people who had bought the, version one, the old version a couple of years ago, were upset about having to pay almost full price to get the upgrade. [00:30:54] +**Carl:** Butsome of the complaints that seemed a little more legit to me were, like, people who had bought the, version one, the old version a couple of years ago, were upset about having to pay almost full price to get the upgrade. [30:54] ## Marker -**Carl:** And on the one hand, like, if you bought a course and you learned the course, why do you need to buy it again? I can understand wanting it. And I guess I can understand, like, wanting to, I don't know, it feels a little bit like folks, Feels a little entitled. Feels a little bit like wanting stuff for free. [00:31:13] +**Carl:** And on the one hand, like, if you bought a course and you learned the course, why do you need to buy it again? I can understand wanting it. And I guess I can understand, like, wanting to, I don't know, it feels a little bit like folks, Feels a little entitled. Feels a little bit like wanting stuff for free. [31:13] -Like I don't know, he put in a lot of effort to update it. I think the previous version came out like four years ago and that's a long time. A lot of things have changed and been updated and the ecosystem has moved on a lot. So I don't know that it is a reasonable expectation to get a brand new course for free or for extremely cheap just because you paid for it a couple of years ago. [00:31:37] +Like I don't know, he put in a lot of effort to update it. I think the previous version came out like four years ago and that's a long time. A lot of things have changed and been updated and the ecosystem has moved on a lot. So I don't know that it is a reasonable expectation to get a brand new course for free or for extremely cheap just because you paid for it a couple of years ago. [31:37] -If you paid for a course that is intended to like help you kickstart a career using the technology, I don't know that you should necessarily need to buy another course targeting people who are trying to kickstart careers in the industry several years later. If you do, like, maybe you didn't take full advantage of the first course. [00:31:55] +If you paid for a course that is intended to like help you kickstart a career using the technology, I don't know that you should necessarily need to buy another course targeting people who are trying to kickstart careers in the industry several years later. If you do, like, maybe you didn't take full advantage of the first course. [31:55] -I don't know. So I empathize with that. People were also criticizing the cost of it as being very expensive. It is like, you know, it's several hundred dollars. Like, I think full price for it is like 700. [00:32:05] +I don't know. So I empathize with that. People were also criticizing the cost of it as being very expensive. It is like, you know, it's several hundred dollars. Like, I think full price for it is like 700. [32:05] -**Mark:** my train of thought on that one is that Kent is entitled, it's a free market, Kent is entitled to put whatever price on, you know, something he's selling, and you are free to ignore it if you don't feel like it's going to be useful or provide enough value. there were maybe some comments about, like, folks not liking his teaching style. [00:32:24] +**Mark:** my train of thought on that one is that Kent is entitled, it's a free market, Kent is entitled to put whatever price on, you know, something he's selling, and you are free to ignore it if you don't feel like it's going to be useful or provide enough value. there were maybe some comments about, like, folks not liking his teaching style. [32:24] -That's more of a valid concern, but if you don't want to pay that much money for his course, if you feel like a 20 Udemy course is better, then go pay 20 for that course and move on. [00:32:36] +That's more of a valid concern, but if you don't want to pay that much money for his course, if you feel like a 20 Udemy course is better, then go pay 20 for that course and move on. [32:36] -**Mo:** Yeah, I'm inclined to agree as well with Mark there. It's just, you do your research before you purchase something. I think he's abundantly popular where you can watch some videos online of Kent. See if you like his teaching style, if you don't like his teaching style, and then make an informed choice as to whether or not you want to spend several hundred dollars for it. [00:32:53] +**Mo:** Yeah, I'm inclined to agree as well with Mark there. It's just, you do your research before you purchase something. I think he's abundantly popular where you can watch some videos online of Kent. See if you like his teaching style, if you don't like his teaching style, and then make an informed choice as to whether or not you want to spend several hundred dollars for it. [32:53] -I think trying to argue after the fact to say, hey, this wasn't great, it wasn't worth the price, well, cool, but, you know, leave a review for it, I guess, and move on. It's, a free market with this type of thing. Yeah. [00:33:04] +I think trying to argue after the fact to say, hey, this wasn't great, it wasn't worth the price, well, cool, but, you know, leave a review for it, I guess, and move on. It's, a free market with this type of thing. Yeah. [33:04] -**Carl:** what? Like, I dropped out of college after a year. Each of those college credits was like 1, 500, 15 years ago. So I feel like I would have gotten much more value out of a course like this than I did out of any individual college course that I took. I don't know, I left that comment on Reddit and they did not find it compelling or I got a negative score. But that's my opinion on it. Like, education, in general, costs so much money. And the value to Cost for something like this to me seems pretty clearly at least worth trying I don't know if you're going for it Yeah, and in the comments to joshwcomo has a course out as well. [00:33:47] +**Carl:** what? Like, I dropped out of college after a year. Each of those college credits was like 1, 500, 15 years ago. So I feel like I would have gotten much more value out of a course like this than I did out of any individual college course that I took. I don't know, I left that comment on Reddit and they did not find it compelling or I got a negative score. But that's my opinion on it. Like, education, in general, costs so much money. And the value to Cost for something like this to me seems pretty clearly at least worth trying I don't know if you're going for it Yeah, and in the comments to joshwcomo has a course out as well. [33:47] -Also seems really great Also a pretty similar price point, like curated education material from an industry leading expert. You don't get that for free. It's a lot of effort. It's hard to be an industry leading expert. It's hard to design a course syllabus. It's hard to produce that content. [00:34:03] +Also seems really great Also a pretty similar price point, like curated education material from an industry leading expert. You don't get that for free. It's a lot of effort. It's hard to be an industry leading expert. It's hard to design a course syllabus. It's hard to produce that content. [34:03] -It's hard to distribute it. It's hard to, yeah. So I don't know. It's,they're doing it all on their own. These are independent educators in general. Like they are doing their own thing on their own time. Yeah. [00:34:15] +It's hard to distribute it. It's hard to, yeah. So I don't know. It's,they're doing it all on their own. These are independent educators in general. Like they are doing their own thing on their own time. Yeah. [34:15] -**Mark:** And, I mean, just, just as a related point, so I did all that work in the first half of this year to update the Redux Essentials tutorial in the Redux docs, which I did all that work for free, and I'm not charging any money for it. And, for the first time I actually tried tracking my hours. And I put in 80 hours of actual focused time, which on the one hand feels like it's not much, you know, like my first instinct is, well, that's only two weeks of work. [00:34:44] +**Mark:** And, I mean, just, just as a related point, so I did all that work in the first half of this year to update the Redux Essentials tutorial in the Redux docs, which I did all that work for free, and I'm not charging any money for it. And, for the first time I actually tried tracking my hours. And I put in 80 hours of actual focused time, which on the one hand feels like it's not much, you know, like my first instinct is, well, that's only two weeks of work. [34:44] -On the other hand, let's face it, across a typical two week period, I don't actually put in 80 hours of focused effort in my day job. you're in your seat for eight hours, maybe, but you're getting maybe four or five hours of productivity tops. And like, that was, quote, just building off of an existing tutorial where I'd written the content and written the example app. [00:35:05] +On the other hand, let's face it, across a typical two week period, I don't actually put in 80 hours of focused effort in my day job. you're in your seat for eight hours, maybe, but you're getting maybe four or five hours of productivity tops. And like, that was, quote, just building off of an existing tutorial where I'd written the content and written the example app. [35:05] -I wasn't coming up with that stuff from scratch. I was converting it to TypeScript, figuring out how to add a couple new features to teach a couple new ideas and then, you know, doing the work to get the right commit sequence, and then turning that into code. Updated content. So, I mean, it was effort, but like, I wasn't doing all this stuff from scratch and that still took me like multiple weeks worth of focused time that I did for free. [00:35:33] +I wasn't coming up with that stuff from scratch. I was converting it to TypeScript, figuring out how to add a couple new features to teach a couple new ideas and then, you know, doing the work to get the right commit sequence, and then turning that into code. Updated content. So, I mean, it was effort, but like, I wasn't doing all this stuff from scratch and that still took me like multiple weeks worth of focused time that I did for free. [35:33] -And so, I got a sense of the amount of work Kent was putting into version two of his course and like he was significantly revamping things. [00:35:42] +And so, I got a sense of the amount of work Kent was putting into version two of his course and like he was significantly revamping things. [35:42] -**Mo:** there's a comment in the Reddit thread, which I actually agree with quite a lot and I think it's the right approach with this, which is The person says, well, it is expensive and you can go through YouTube and find each of those topics and find like a tutorial video on them for free on YouTube. [00:36:00] +**Mo:** there's a comment in the Reddit thread, which I actually agree with quite a lot and I think it's the right approach with this, which is The person says, well, it is expensive and you can go through YouTube and find each of those topics and find like a tutorial video on them for free on YouTube. [36:00] -But if you have the money, what you're basically paying for is someone to curate that content for you. Summarize it, create a syllabus for you, and give it to you on a silver platter, right? instead of searching for that material, you're paying for that person's time to curate that material for you. [00:36:15] +But if you have the money, what you're basically paying for is someone to curate that content for you. Summarize it, create a syllabus for you, and give it to you on a silver platter, right? instead of searching for that material, you're paying for that person's time to curate that material for you. [36:15] -The information is there for free, but you are paying for Kent's time and organization to come in and create something valuable for you so that you don't have to spend the time searching. So if you got the money for it, great, go for it. There's someone else in the chat as well that mentioned, which I think is a good point to put it into perspectivea lot of companies will let you expense stuff like this on like a training budget or, an upscaling budget that they have. [00:36:36] +The information is there for free, but you are paying for Kent's time and organization to come in and create something valuable for you so that you don't have to spend the time searching. So if you got the money for it, great, go for it. There's someone else in the chat as well that mentioned, which I think is a good point to put it into perspectivea lot of companies will let you expense stuff like this on like a training budget or, an upscaling budget that they have. [36:36] -So when someone like probably prices something at several hundred dollars, I don't think he's expecting indies to come in and all shell out several hundred dollars. I suspect the goal is to find like a midpoint price point where it's. Expensive for indies, but quite cheap for corporates to pay for a large number of licenses. [00:36:58] +So when someone like probably prices something at several hundred dollars, I don't think he's expecting indies to come in and all shell out several hundred dollars. I suspect the goal is to find like a midpoint price point where it's. Expensive for indies, but quite cheap for corporates to pay for a large number of licenses. [36:58] -And he does have a option to select multiple licenses and buy for your team. So I think that's probably where the pricing is coming into place. [00:37:05] +And he does have a option to select multiple licenses and buy for your team. So I think that's probably where the pricing is coming into place. [37:05] -**Mark:** Yeah, sort of the training equivalent of targeting the enterprise market. [00:37:09] +**Mark:** Yeah, sort of the training equivalent of targeting the enterprise market. [37:09] -**Mo:** Exactly. [00:37:09] +**Mo:** Exactly. [37:09] -**Mark:** moving along touching on some drama. [00:37:12] +**Mark:** moving along touching on some drama. [37:12] ## [Web Components Are Not the Future](https://dev.to/ryansolid/web-components-are-not-the-future-48bh) ## Followup to this from March 2020: [Maybe Web Components are not the Future?](https://dev.to/ryansolid/maybe-web-components-are-not-the-future-hfh) -**Mark:** I think we might have mentioned some previous bits of the web components versus React thing that's been going on the last couple months. This started with a post from Ryan Carniato, the author of the Solid Framework. Where he said that Web Components aren't the future. [00:37:27] +**Mark:** I think we might have mentioned some previous bits of the web components versus React thing that's been going on the last couple months. This started with a post from Ryan Carniato, the author of the Solid Framework. Where he said that Web Components aren't the future. [37:27] -And that spawned a whole lot of discussion after that. A lot of folks from the Web Components community were upset. [00:37:34] +And that spawned a whole lot of discussion after that. A lot of folks from the Web Components community were upset. [37:34] ## [Web Components Are Not the Future — They’re the Present](https://www.abeautifulsite.net/posts/web-components-are-not-the-future-they-re-the-present/) -**Mark:** Someone wrote a post called, Web Components are not the future, they're the present. Which made a bunch of arguments, both technical and sociological, about how Web Components should be fitting in. [00:37:46] +**Mark:** Someone wrote a post called, Web Components are not the future, they're the present. Which made a bunch of arguments, both technical and sociological, about how Web Components should be fitting in. [37:46] -Lots of debate in Twitter threads, Mastodon threads. I'm not on Blue Sky, but I bet there was probably some debate over there, too. [00:37:53] +Lots of debate in Twitter threads, Mastodon threads. I'm not on Blue Sky, but I bet there was probably some debate over there, too. [37:53] ## [Liskov's Gun: The parallel evolution of React and Web Components](https://www.baldurbjarnason.com/2024/liskovs-gun/) -**Mark:** there was one other article that really stuck out to me called the Parallel Evolution of React and Web Components. It's stupidly long, even by my standards. [00:38:01] +**Mark:** there was one other article that really stuck out to me called the Parallel Evolution of React and Web Components. It's stupidly long, even by my standards. [38:01] -It's 11, 000 words. It's a very long read, and I had mixed thoughts on it. I thought the first third of this was a really good technical discussion about, Some of the web component's early specs came out even before React did. Both of them have evolved over time. The middle third devolves into the author kind of bashing on React for a while, and then it kind of finishes up with some more decent thoughts about technical aspects and how they fit into web application architectures. [00:38:31] +It's 11, 000 words. It's a very long read, and I had mixed thoughts on it. I thought the first third of this was a really good technical discussion about, Some of the web component's early specs came out even before React did. Both of them have evolved over time. The middle third devolves into the author kind of bashing on React for a while, and then it kind of finishes up with some more decent thoughts about technical aspects and how they fit into web application architectures. [38:31] -I'm not gonna suggest that everyone should read it, but there was some interesting background material, and at least the author put in actual time Writing this post as opposed to just, you know, random bashing of things purely on Twitter if you want to see some of the web components discussion that stuff's out there [00:38:48] +I'm not gonna suggest that everyone should read it, but there was some interesting background material, and at least the author put in actual time Writing this post as opposed to just, you know, random bashing of things purely on Twitter if you want to see some of the web components discussion that stuff's out there [38:48] -**Carl:** my understanding is that one of the biggest problems of web components, I've never used them, I understand them to be in, you know, Intended to be used as like leaf nodes, kind of like your, your design system. Like if you are going to build a design system in React, I think that web components advocates would say, no, no, no, don't build those components with React, build them with web components. [00:39:10] +**Carl:** my understanding is that one of the biggest problems of web components, I've never used them, I understand them to be in, you know, Intended to be used as like leaf nodes, kind of like your, your design system. Like if you are going to build a design system in React, I think that web components advocates would say, no, no, no, don't build those components with React, build them with web components. [39:10] -And then you can use them in many, many places and many frameworks and yada, yada. My understanding is that web components have many of the same problems as trying to build your own design systems, where the hardest part is things like versioning. And if you don't get it exactly right the first time, it's kind of difficult to ship new changes to them. [00:39:29] +And then you can use them in many, many places and many frameworks and yada, yada. My understanding is that web components have many of the same problems as trying to build your own design systems, where the hardest part is things like versioning. And if you don't get it exactly right the first time, it's kind of difficult to ship new changes to them. [39:29] -So it sounds like web components are still hit a lot of the same problems. They just kind of shift the context. And so you have to figure out like, when you're doing a design system in React, The problem is around versioning and like packaging. Like, do you do many sub libraries? Like, do you make your own like React modal component and your own tool tips and your own buttons and your own accordion tabs, whatever, or do you do one big bulk package? [00:39:54] +So it sounds like web components are still hit a lot of the same problems. They just kind of shift the context. And so you have to figure out like, when you're doing a design system in React, The problem is around versioning and like packaging. Like, do you do many sub libraries? Like, do you make your own like React modal component and your own tool tips and your own buttons and your own accordion tabs, whatever, or do you do one big bulk package? [39:54] -But then it's like, you end up with these like, well, okay. If you ship a change to this. Low level component used within this design system, like, how do you migrate all of the clients that are using that design system without doing like a big bang rewrite across dozens of clients? [00:40:11] +But then it's like, you end up with these like, well, okay. If you ship a change to this. Low level component used within this design system, like, how do you migrate all of the clients that are using that design system without doing like a big bang rewrite across dozens of clients? [40:11] -And like, that's hard. It's not trivial and it sounds like web components have that same problem But instead of versioning happening through semver in npm, it happens in this entirely bespoke Web component standard system and like that doesn't seem better to me. It's like you have to learn a whole new, Context, as well as dealing with the same problem. [00:40:32] +And like, that's hard. It's not trivial and it sounds like web components have that same problem But instead of versioning happening through semver in npm, it happens in this entirely bespoke Web component standard system and like that doesn't seem better to me. It's like you have to learn a whole new, Context, as well as dealing with the same problem. [40:32] -So, like, I haven't seen that discussed at all in any of these, you know, discussions. These, you know, when people are talking about the technical merits of Web Components, I'm not seeing, like, and here's why it works better for this reason. I also just really, like, the Web Components are not the future, they're the present article. man, I did not like it. I thought it was good. So, this is not a compelling argument. Like, you know, a quote from it that I pulled was like, they're not solid components, they're not React components, they're not Svelte components, they're not Vue components, they're standards based web components that work in all of the above. [00:41:04] +So, like, I haven't seen that discussed at all in any of these, you know, discussions. These, you know, when people are talking about the technical merits of Web Components, I'm not seeing, like, and here's why it works better for this reason. I also just really, like, the Web Components are not the future, they're the present article. man, I did not like it. I thought it was good. So, this is not a compelling argument. Like, you know, a quote from it that I pulled was like, they're not solid components, they're not React components, they're not Svelte components, they're not Vue components, they're standards based web components that work in all of the above. [41:04] -And that seems like a big assertion to make when the maintainers of solid, React, Svelte, and Vue are all saying, they don't work for us. So, I feel like you can't just say, they work in all of those, when the maintainers of those frameworks are saying, they don't work. And it doesn't really argue why they work, it just kind of asserts that they do. [00:41:21] +And that seems like a big assertion to make when the maintainers of solid, React, Svelte, and Vue are all saying, they don't work for us. So, I feel like you can't just say, they work in all of those, when the maintainers of those frameworks are saying, they don't work. And it doesn't really argue why they work, it just kind of asserts that they do. [41:21] -**Mark:** it's a little bit like a lot of the React arguments that were happening earlier this year, where there's like 30 different partially overlapping topics. And people are arguing about a different subset of them. [00:41:33] +**Mark:** it's a little bit like a lot of the React arguments that were happening earlier this year, where there's like 30 different partially overlapping topics. And people are arguing about a different subset of them. [41:33] -So, in this case, the concerns are technological, some of them are ideological. Folks who prefer web components or advocate for web components tend to be the kind of people who like frameworks. They feel that frameworks are too heavy, they feel that frameworks have bad results on the industry, they prefer to, you know, kind of stay closer to the browser, you know, they use the platform mentality, and so they see large frameworks as sort of the enemy, and so anyone who is using a framework is kind of a bad person. a lot of the vocalness here is coming from these people who's like, it's a standard,therefore it's better.These frameworks aren't standards. I don't see a lot of people in the React ecosystem, like, actively advocating against web components. more of a, whatever, we don't care.So, worth noting that, you know, Ryan's article, came from his perspective more as a framework author, and similarly, Rich Harris, the author of Svelte had a number of complaint threads on Twitter recently, where he was talking about there's a bunch of really, really weird behaviors in browsers that only exist because the web component specs demand those, and that has caused problems for him as a framework author. [00:42:58] +So, in this case, the concerns are technological, some of them are ideological. Folks who prefer web components or advocate for web components tend to be the kind of people who like frameworks. They feel that frameworks are too heavy, they feel that frameworks have bad results on the industry, they prefer to, you know, kind of stay closer to the browser, you know, they use the platform mentality, and so they see large frameworks as sort of the enemy, and so anyone who is using a framework is kind of a bad person. a lot of the vocalness here is coming from these people who's like, it's a standard,therefore it's better.These frameworks aren't standards. I don't see a lot of people in the React ecosystem, like, actively advocating against web components. more of a, whatever, we don't care.So, worth noting that, you know, Ryan's article, came from his perspective more as a framework author, and similarly, Rich Harris, the author of Svelte had a number of complaint threads on Twitter recently, where he was talking about there's a bunch of really, really weird behaviors in browsers that only exist because the web component specs demand those, and that has caused problems for him as a framework author. [42:58] -Things like, Cloning domnodes requiring you to pass in an additional flag, but that makes the cloning process 30 percent slower, [00:43:08] +Things like, Cloning domnodes requiring you to pass in an additional flag, but that makes the cloning process 30 percent slower, [43:08] -**Carl:** Right. And in contrast to that, the present article says, towards the back half of it, it says, I'm not a conspiracy theorist, but I find interesting the number of people who are and have been sponsored and or hired by for profit companies whose platform rely heavily on said frameworks. [00:43:25] +**Carl:** Right. And in contrast to that, the present article says, towards the back half of it, it says, I'm not a conspiracy theorist, but I find interesting the number of people who are and have been sponsored and or hired by for profit companies whose platform rely heavily on said frameworks. [43:25] -So it's like, I feel like the web components aren't working for us. Framework authors are making arguments like that. I'm taking a 30 percent performance hit because of the spec requirements to support these. Like that's a very precise technical argument. Not, I'm not a conspiracy theorist, but [00:43:42] +So it's like, I feel like the web components aren't working for us. Framework authors are making arguments like that. I'm taking a 30 percent performance hit because of the spec requirements to support these. Like that's a very precise technical argument. Not, I'm not a conspiracy theorist, but [43:42] -**Mo:** [00:43:42] +**Mo:** [43:42] -that sounds like, here's my friend's opinion about these guys. They're awful people. Not my opinion. I'm just quoting what my friends, I'm not a conspiracy theorist. That sounds pretty conspiracy theorist to me. [00:43:52] +that sounds like, here's my friend's opinion about these guys. They're awful people. Not my opinion. I'm just quoting what my friends, I'm not a conspiracy theorist. That sounds pretty conspiracy theorist to me. [43:52] -**Carl:** Yeah. It's big, just asking questions energy. we should move on though. I think Mo, you said you have to duck out. [00:43:57] +**Carl:** Yeah. It's big, just asking questions energy. we should move on though. I think Mo, you said you have to duck out. [43:57] -**Mo:** I do have to leave, so I guess I can just say goodbye hereand hopefully see you all next month. So it's been a pleasure in all things react and react native and I'll see you all in the next one. [00:44:08] +**Mo:** I do have to leave, so I guess I can just say goodbye hereand hopefully see you all next month. So it's been a pleasure in all things react and react native and I'll see you all in the next one. [44:08] -**Mark:** we've got a bunch more stuff to get through, [00:44:10] +**Mark:** we've got a bunch more stuff to get through, [44:10] ## [Announcing VoidZero Next Generation Toolchain for JavaScript](https://voidzero.dev/posts/announcing-voidzero-inc) -**Mark:** Evan Yu, the author of View and Veet and a number of other things, Has announced a venture backed company called VoidZero, which is quote working on the next generation of JavaScript tooling This might sound a little bit familiar. [00:44:24] +**Mark:** Evan Yu, the author of View and Veet and a number of other things, Has announced a venture backed company called VoidZero, which is quote working on the next generation of JavaScript tooling This might sound a little bit familiar. [44:24] -That was sort of the pitch behind the Roam tool set So in this case some of the things that VoidZero is working on correlate a lot with Things that were already in progress with the VEET framework. [00:44:37] +That was sort of the pitch behind the Roam tool set So in this case some of the things that VoidZero is working on correlate a lot with Things that were already in progress with the VEET framework. [44:37] ## [Oxc Transformer Alpha](https://oxc.rs/blog/2024-09-29-transformer-alpha.html) ## [OXC compiler](https://twitter.com/boshen_c/status/1840322879424258115) -**Mark:** There's a Rust based JavaScript compiler called OXC, which also includes a linter and reusable parsers and things like that. [00:44:46] +**Mark:** There's a Rust based JavaScript compiler called OXC, which also includes a linter and reusable parsers and things like that. [44:46] -So I believe that's now gonna be sponsored under Void0. There's a project called Rolldown, which is going to be a Rust based re implementation of the Rollup build toolset. So eventually the goal is to really make Vite a whole lot faster, ultimately. Vite currently uses a mixture of, I believe, ESBuild for local dev builds and Rollup for production builds. [00:45:12] +So I believe that's now gonna be sponsored under Void0. There's a project called Rolldown, which is going to be a Rust based re implementation of the Rollup build toolset. So eventually the goal is to really make Vite a whole lot faster, ultimately. Vite currently uses a mixture of, I believe, ESBuild for local dev builds and Rollup for production builds. [45:12] -And so they're also trying to make the behavior more standard, or more similar across dev and production as well. [00:45:18] +And so they're also trying to make the behavior more standard, or more similar across dev and production as well. [45:18] -**Carl:** Yeah, definitely seems interesting. Always down for stuff to core dev tools to be made faster. All right, cool. [00:45:23] +**Carl:** Yeah, definitely seems interesting. Always down for stuff to core dev tools to be made faster. All right, cool. [45:23] ## [Updates from the 104th TC39 meeting](https://dev.to/hemanth/updates-from-the-104th-tc39-meeting-14cp) -**Carl:** I'll move us on some new TC39 news. They just had a meeting and blog post I saw said four new proposals advanced to stage four and the list had five items in it. [00:45:33] +**Carl:** I'll move us on some new TC39 news. They just had a meeting and blog post I saw said four new proposals advanced to stage four and the list had five items in it. [45:33] ## [Promise.try](https://github.com/tc39/proposal-promise-try) -**Carl:** so there's promise. try, which is now stage four. It seems neat. It looks like it's basically a likeconvenience so that if you don't know whether a function is going to return a promise or not, you can give it to promise. try and then you can handle any errors that it emits as though it were a promise. [00:45:53] +**Carl:** so there's promise. try, which is now stage four. It seems neat. It looks like it's basically a likeconvenience so that if you don't know whether a function is going to return a promise or not, you can give it to promise. try and then you can handle any errors that it emits as though it were a promise. [45:53] -And the advantage of that is that, you know, if you did something like promise. resolve. then and then execute that function, which would be a great way to achieve this behavior without a change to the language that would process it on the next tick. [00:46:06] +And the advantage of that is that, you know, if you did something like promise. resolve. then and then execute that function, which would be a great way to achieve this behavior without a change to the language that would process it on the next tick. [46:06] -So it doesn't execute synchronously as, you know, line by line. It gets thrown to the event loop and then event loop comes back and executes it. So, you know, that's. Not always what you want. If you are trying not to do that, now you have a new tool to do so, which is promise. try. [00:46:21] +So it doesn't execute synchronously as, you know, line by line. It gets thrown to the event loop and then event loop comes back and executes it. So, you know, that's. Not always what you want. If you are trying not to do that, now you have a new tool to do so, which is promise. try. [46:21] ## [Sync Iterator Helpers](https://github.com/tc39/proposal-iterator-helpers) -**Carl:** I also liked the sync iterator helpers. [00:46:23] +**Carl:** I also liked the sync iterator helpers. [46:23] -I think we mentioned this in a previous episode. Maybe not the last one, maybe the one before. But it's. Basically letting you do stuff like map, filter, reduce on iterable objects without Spreading it into an array first Which I think creates a copy. So like this seems great. You can now map over without the cost of Producing an array from it first. [00:46:47] +I think we mentioned this in a previous episode. Maybe not the last one, maybe the one before. But it's. Basically letting you do stuff like map, filter, reduce on iterable objects without Spreading it into an array first Which I think creates a copy. So like this seems great. You can now map over without the cost of Producing an array from it first. [46:47] -I love it. Here for it. [00:46:48] +I love it. Here for it. [46:48] ## [Import Attributes](https://github.com/tc39/proposal-import-attributes) -**Carl:** Some other ones that I didn't talk about Think about as hard there's import attributes which I think is like metadata for describing what you're importing, something like that. [00:46:58] +**Carl:** Some other ones that I didn't talk about Think about as hard there's import attributes which I think is like metadata for describing what you're importing, something like that. [46:58] ## [JSON modules](https://github.com/tc39/proposal-json-modules) -**Carl:** JSON modules. So you can import JSON files as modules without, you just kind of natively. It seems good. [00:47:05] +**Carl:** JSON modules. So you can import JSON files as modules without, you just kind of natively. It seems good. [47:05] ## [RegExp Modifiers](https://github.com/tc39/proposal-regexp-modifiers) -**Carl:** as well as regex modifiers. couple of new changes, five new things to the language. Seems good. [00:47:11] +**Carl:** as well as regex modifiers. couple of new changes, five new things to the language. Seems good. [47:11] ## [Language Evolution](https://docs.google.com/presentation/d/1ylROTu3N6MyHzNzWJXQAc7Bo1O0FHO3lNKfQMfPOA4o/edit#slide=id.g30432c5cd9c_0_30) “JSSugar” proposal @@ -598,107 +598,107 @@ I love it. Here for it. [00:46:48] ## [Daniel Ehrenberg thoughts](https://gist.github.com/littledan/a590784a72f2e1b8cc633ff5ff8a9dc2) -**Mark:** And one other thing that came up at that meeting there was a presentation I think co authored by a number of JavaScript engine implementers at Google and Mozilla and a couple other companies. That is very long and complicated, and it's worth reading through, but as a high level summary, we've had the TC39 process for, like, 15 some years now, and, you know, we had the big bang change to the language with ES2015, and then a steady stream of new language features since then. [00:47:45] +**Mark:** And one other thing that came up at that meeting there was a presentation I think co authored by a number of JavaScript engine implementers at Google and Mozilla and a couple other companies. That is very long and complicated, and it's worth reading through, but as a high level summary, we've had the TC39 process for, like, 15 some years now, and, you know, we had the big bang change to the language with ES2015, and then a steady stream of new language features since then. [47:45] -And the expectation is that once TC39 finishes standardizing a given feature, Every JavaScript engine out there. Is going to end up fully implementing this. Now in practice, if it's basically V8 and spider monkey from, you know, from Mozilla, that's the majority of people as far as browsers are concerned, but there are other JS engines out there as well, and implementing all these new language level features takes time and effort, some of these engine implementers were actually saying, you know what, we actually. [00:48:19] +And the expectation is that once TC39 finishes standardizing a given feature, Every JavaScript engine out there. Is going to end up fully implementing this. Now in practice, if it's basically V8 and spider monkey from, you know, from Mozilla, that's the majority of people as far as browsers are concerned, but there are other JS engines out there as well, and implementing all these new language level features takes time and effort, some of these engine implementers were actually saying, you know what, we actually. [48:19] -are thinking that maybe we shouldn't be required to implement every feature that is added to the JS language spec. Sometimes these things have performance implications, sometimes these things have actually caused security related concerns, It's not like a full blown proposal, but it's kind of like a what if we considered this kind of a thing. [00:48:42] +are thinking that maybe we shouldn't be required to implement every feature that is added to the JS language spec. Sometimes these things have performance implications, sometimes these things have actually caused security related concerns, It's not like a full blown proposal, but it's kind of like a what if we considered this kind of a thing. [48:42] -what if we sort of split the JavaScript language spec into things that are actually going to be implemented by runtime engines, versus things that are in the spec, and we agree it's part of the language, But would only ever be implemented by transpilers, like Babel or ESBuild or something like that. [00:49:05] +what if we sort of split the JavaScript language spec into things that are actually going to be implemented by runtime engines, versus things that are in the spec, and we agree it's part of the language, But would only ever be implemented by transpilers, like Babel or ESBuild or something like that. [49:05] -So that, the JS engines don't have to literally implement every finished feature ever. a number of folks felt this was probably a bad idea. I can understand some of the concerns that are being raised by the engine folks. But, splitting the language feels problematic. You know, certainly the folks who are, you know, kind of in on that, like, I don't want to have to use build tools to write my JavaScript are, are not happy about this. [00:49:34] +So that, the JS engines don't have to literally implement every finished feature ever. a number of folks felt this was probably a bad idea. I can understand some of the concerns that are being raised by the engine folks. But, splitting the language feels problematic. You know, certainly the folks who are, you know, kind of in on that, like, I don't want to have to use build tools to write my JavaScript are, are not happy about this. [49:34] -But, even knowing that, you know, some of these things won't make it into the engines and might not be able to take advantage of, you know, built in optimizations feels kind of sketchy. [00:49:43] +But, even knowing that, you know, some of these things won't make it into the engines and might not be able to take advantage of, you know, built in optimizations feels kind of sketchy. [49:43] -**Carl:** Yeah, I can definitely understand that though, like so many things, I feel like, I mean there are so many lingering polyfills and transforms and whatever that Babel and all of them are like still implementing, even though they are now part of the language, just because how do you know when it's okay to remove stuff like that? [00:50:03] +**Carl:** Yeah, I can definitely understand that though, like so many things, I feel like, I mean there are so many lingering polyfills and transforms and whatever that Babel and all of them are like still implementing, even though they are now part of the language, just because how do you know when it's okay to remove stuff like that? [50:03] -I can understand the motivation of saying like, look, this is the reality. We are still transforming this even though technically by the spec, we don't have to. I can definitely understand why they would see, just start saying like, this is a practical reality, pragmatically, this is what's happening. the standardization process should reflect that and acknowledge that some things will just live in the transformer. [00:50:25] +I can understand the motivation of saying like, look, this is the reality. We are still transforming this even though technically by the spec, we don't have to. I can definitely understand why they would see, just start saying like, this is a practical reality, pragmatically, this is what's happening. the standardization process should reflect that and acknowledge that some things will just live in the transformer. [50:25] -I can definitely understand that argument. But yeah, I guess that's also weird. Like it introduces a new like point of abstraction in the standardization process and like, what is JavaScript? that's weird. [00:50:38] +I can definitely understand that argument. But yeah, I guess that's also weird. Like it introduces a new like point of abstraction in the standardization process and like, what is JavaScript? that's weird. [50:38] -**Mark:** Alright, so, now we're in and we haven't started the lightning round. So, let's try to actually make this a [00:50:43] +**Mark:** Alright, so, now we're in and we haven't started the lightning round. So, let's try to actually make this a [50:43] -lightning round, shall we? [00:50:44] +lightning round, shall we? [50:44] ## ⚡ Lightning round ⚡ ## [The Disappearance of an Internet Domain](https://every.to/p/the-disappearance-of-an-internet-domain) – .io -**Mark:** Moving along. So there was an article titled Disappearance of an Internet Domain. the TLDR here is that the io domain is associated with a set of islands in the Indian Ocean owned by Great Britain and Great Britain just signed a treaty to eventually hand those islands over to you. [00:51:05] +**Mark:** Moving along. So there was an article titled Disappearance of an Internet Domain. the TLDR here is that the io domain is associated with a set of islands in the Indian Ocean owned by Great Britain and Great Britain just signed a treaty to eventually hand those islands over to you. [51:05] -I think the island of Mauritania. And so based on international law, there's a chance that once this 3D handover is complete, there is no longer a separate territory. And if there's no longer a separate territory, then there's no legal reason to have a io domain associated with that. And so the article says that, you know, if we, if we've, Assume that these laws and practices get followed strictly, then hypothetically, five years from now, the io top level domain might go away completely. So that's up for grabs, but it's a legitimate concern. [00:51:46] +I think the island of Mauritania. And so based on international law, there's a chance that once this 3D handover is complete, there is no longer a separate territory. And if there's no longer a separate territory, then there's no legal reason to have a io domain associated with that. And so the article says that, you know, if we, if we've, Assume that these laws and practices get followed strictly, then hypothetically, five years from now, the io top level domain might go away completely. So that's up for grabs, but it's a legitimate concern. [51:46] -**Carl:** The intersection of geopolitics and tech debt seems bad. [00:51:51] +**Carl:** The intersection of geopolitics and tech debt seems bad. [51:51] -flying through a little bit. [00:51:51] +flying through a little bit. [51:51] ## [How to control a React component with the URL](https://buildui.com/posts/how-to-control-a-react-component-with-the-url) -**Carl:** So I saw a great blog post by Sam Zelikoff called How to Control a React Component with the URL. blog post makes the argument that it's a very common feature request. [00:52:00] +**Carl:** So I saw a great blog post by Sam Zelikoff called How to Control a React Component with the URL. blog post makes the argument that it's a very common feature request. [52:00] -I think that it is not as common a feature request as it should be because it is the power of the web. URL addressability, deep linking, being able to open a URL and have it, represent the same page that somebody else is seeing. So I think that is a phenomenal goal to seek, and so more things should behave that way. [00:52:17] +I think that it is not as common a feature request as it should be because it is the power of the web. URL addressability, deep linking, being able to open a URL and have it, represent the same page that somebody else is seeing. So I think that is a phenomenal goal to seek, and so more things should behave that way. [52:17] -just a pull quote from it that I think summarizes What makes that hard is the fundamental reason why we're heading down a bad road, he says that we now have two sources of truth for the search text. And that's exactly it, like, when you are writing React, you tend to have your source of truth be something in React state. [00:52:35] +just a pull quote from it that I think summarizes What makes that hard is the fundamental reason why we're heading down a bad road, he says that we now have two sources of truth for the search text. And that's exactly it, like, when you are writing React, you tend to have your source of truth be something in React state. [52:35] -But if it's in the URL state that it exists outside of React's Awareness, you know the universe that you've created for your app that is within react the URL state lives outside of that So it's very easy to accidentally duplicate state then you have a state synchronization problem and I also want to call out that problems like that are a Wonderful example of why dogmatic best practices can really easily lead you to broken apps [00:52:59] +But if it's in the URL state that it exists outside of React's Awareness, you know the universe that you've created for your app that is within react the URL state lives outside of that So it's very easy to accidentally duplicate state then you have a state synchronization problem and I also want to call out that problems like that are a Wonderful example of why dogmatic best practices can really easily lead you to broken apps [52:59] -Then if you use a form library, it's going to keep track of its own state. Then you have to do state synchronization between the URL and the form. That's a really easy way to get a lot of bugs. So if you follow the rule of always use a form library, you're going to run into state synchronization bugs if you try to implement this feature. [00:53:16] +Then if you use a form library, it's going to keep track of its own state. Then you have to do state synchronization between the URL and the form. That's a really easy way to get a lot of bugs. So if you follow the rule of always use a form library, you're going to run into state synchronization bugs if you try to implement this feature. [53:16] ## [If WordPress is to survive, Matt Mullenweg must be removed](https://joshcollinsworth.com/blog/fire-matt) -**Mark:** one more drama related item, I'm really gonna TLDR this. The WordPress community is basically blowing up right now. WordPress founder and project company CEO Matt Mullenweg went on a seemingly unprovoked rampage. [00:53:35] +**Mark:** one more drama related item, I'm really gonna TLDR this. The WordPress community is basically blowing up right now. WordPress founder and project company CEO Matt Mullenweg went on a seemingly unprovoked rampage. [53:35] -He is basically upset that one of the biggest WordPress hosting companies, quote, isn't giving back enough to the project. And there's all kinds of issues where Matt is both simultaneously the CEO of Automatic, one of the other bigger hosting companies. And the leader of the open source project and the nonprofit foundation. [00:53:58] +He is basically upset that one of the biggest WordPress hosting companies, quote, isn't giving back enough to the project. And there's all kinds of issues where Matt is both simultaneously the CEO of Automatic, one of the other bigger hosting companies. And the leader of the open source project and the nonprofit foundation. [53:58] -And it turns out that in some cases, he's the sole person who controls some of the key websites. There's been issues with him, basically hijacking a plugin that was developed by this other company blocking people from the Slack and all kinds of other Like, he's basically blowing up their community single handedly, and seemingly for no reason. [00:54:22] +And it turns out that in some cases, he's the sole person who controls some of the key websites. There's been issues with him, basically hijacking a plugin that was developed by this other company blocking people from the Slack and all kinds of other Like, he's basically blowing up their community single handedly, and seemingly for no reason. [54:22] -And a lot of folks who had been very involved with WordPress are like, I can't be involved with this anymore. So, a lot of WordPress folks are actively looking to stop using WordPress and find something else. There's an extremely long, very well written post that lays out a lot of the details linked in the chat, called, If WordPress is to survive, Matt Mullenweg must be removed. [00:54:45] +And a lot of folks who had been very involved with WordPress are like, I can't be involved with this anymore. So, a lot of WordPress folks are actively looking to stop using WordPress and find something else. There's an extremely long, very well written post that lays out a lot of the details linked in the chat, called, If WordPress is to survive, Matt Mullenweg must be removed. [54:45] -It's long, it's complicated, but it's also a very thorough look at everything that's happened. [00:54:50] +It's long, it's complicated, but it's also a very thorough look at everything that's happened. [54:50] -**Carl:** Yeah. Oh man, there's so much to get into. There's so much that could be said about this, but yeah, it's,oh, this has been, this has built its own cottage industry of podcasts and interviews and blog posts. Yeah. It's also not really React. WordPress developer is like an entirely separate thing from web developer. [00:55:06] +**Carl:** Yeah. Oh man, there's so much to get into. There's so much that could be said about this, but yeah, it's,oh, this has been, this has built its own cottage industry of podcasts and interviews and blog posts. Yeah. It's also not really React. WordPress developer is like an entirely separate thing from web developer. [55:06] -So yeah, it's kind of not related to our main topic. [00:55:09] +So yeah, it's kind of not related to our main topic. [55:09] ## [Web Without Walls — Dan Abramov](https://www.youtube.com/watch?v=F1sJW6nTP6E) -**Carl:** we've had a couple of tangential references to Blue Sky. I love Blue Sky, I think it's really cool, I've been on it for like over a year because Twitter sucks and meh, I have opinions. [00:55:20] +**Carl:** we've had a couple of tangential references to Blue Sky. I love Blue Sky, I think it's really cool, I've been on it for like over a year because Twitter sucks and meh, I have opinions. [55:20] -But so Dan Abramov, who I'm sure some of you may have heard of once or twice, gave a really great talk. he's currently working at BlueSky as an app developer which is, I'm actually interested to speak with him a little bit more about that kind of transition because he went from core team, building React to now React consumer and I think that is just such a relatively rare Transition to make and I'd be really curious to hear not just like what he thinks about that transition as someone who's made it But also what Dan Abramov thinks of that as a very clear thinker and clear speaker butwe gave a really great talk about the app protocol, which is the underlying technology that BlueSky is built on top of and it hits a lot of really cool things that I personally have been thinking about for a decade about the future of social media and data portability and federated access. [00:56:14] +But so Dan Abramov, who I'm sure some of you may have heard of once or twice, gave a really great talk. he's currently working at BlueSky as an app developer which is, I'm actually interested to speak with him a little bit more about that kind of transition because he went from core team, building React to now React consumer and I think that is just such a relatively rare Transition to make and I'd be really curious to hear not just like what he thinks about that transition as someone who's made it But also what Dan Abramov thinks of that as a very clear thinker and clear speaker butwe gave a really great talk about the app protocol, which is the underlying technology that BlueSky is built on top of and it hits a lot of really cool things that I personally have been thinking about for a decade about the future of social media and data portability and federated access. [56:14] -not just social graphs, but also to the actual data. I just think it's really cool. Like, I saw some people talking about, like, Oh, it doesn't matter if you have You know, you can always export the social graph because you have your contacts list. And like, that doesn't really matter. [00:56:28] +not just social graphs, but also to the actual data. I just think it's really cool. Like, I saw some people talking about, like, Oh, it doesn't matter if you have You know, you can always export the social graph because you have your contacts list. And like, that doesn't really matter. [56:28] -It doesn't matter if you have the social graph, if you have the connections between the people. If the people are not producing content, you know, if they're not interacting with each other on that platform. And I would boil down this hour long talk that Dan gave that is really good. And I think you should watch if you're interested in social media and building apps on social platforms. [00:56:47] +It doesn't matter if you have the social graph, if you have the connections between the people. If the people are not producing content, you know, if they're not interacting with each other on that platform. And I would boil down this hour long talk that Dan gave that is really good. And I think you should watch if you're interested in social media and building apps on social platforms. [56:47] -It really comes down to, like, it's not just an open source Twitter clone. It is an open network that people are publishing Twitter like data to, and no one can close your app off. You know, there is no way for something like the, Twitter X API Shut down, the Reddit API shut down. [00:57:10] +It really comes down to, like, it's not just an open source Twitter clone. It is an open network that people are publishing Twitter like data to, and no one can close your app off. You know, there is no way for something like the, Twitter X API Shut down, the Reddit API shut down. [57:10] -You can't do that because it's built on a federated decentralized protocol. it's not just a proprietary API. So yeah, I think that's really cool. This is a really interesting thing. I think this is going to be a generational shift in how social media operates. So yeah. [00:57:23] +You can't do that because it's built on a federated decentralized protocol. it's not just a proprietary API. So yeah, I think that's really cool. This is a really interesting thing. I think this is going to be a generational shift in how social media operates. So yeah. [57:23] ## [Preact compat discussion](https://old.reddit.com/r/reactjs/comments/1fy2jjh/i_ran_into_preacts_false_promise_what_can_i_do/) -**Mark:** There was a Reddit discussion thread going and was looking into the compatibility of Preact with, you know, actual React and debating some of the pros, cons, and trade offs. And since Preact has been traditionally pitched as a React compatible library, worth looking at. [00:57:43] +**Mark:** There was a Reddit discussion thread going and was looking into the compatibility of Preact with, you know, actual React and debating some of the pros, cons, and trade offs. And since Preact has been traditionally pitched as a React compatible library, worth looking at. [57:43] -**Carl:** Yeah. [00:57:44] +**Carl:** Yeah. [57:44] ## Content-visibility in CSS ## [Using CSS containment](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Using_CSS_containment) -**Carl:** There's some interesting stuff with CSS containment. It seems pretty, like, wonkish, deep in the weeds stuff to properly understand, but it looks really interesting as, like, a performance optimization for rendering. [00:58:00] +**Carl:** There's some interesting stuff with CSS containment. It seems pretty, like, wonkish, deep in the weeds stuff to properly understand, but it looks really interesting as, like, a performance optimization for rendering. [58:00] ## [contain](https://developer.mozilla.org/en-US/docs/Web/CSS/contain) [CanIUse](https://caniuse.com/mdn-css_properties_contain) -**Carl:** The bulk of it, as I saw in researching it for, you know, an hour and a half, I haven't really used it yet, is there's a contain and a contain visibility, you know, a CSS attribute now, that let you signal more precisely to the browser renderer, how much effort to dedicate to rendering a particular part of the page. [00:58:19] +**Carl:** The bulk of it, as I saw in researching it for, you know, an hour and a half, I haven't really used it yet, is there's a contain and a contain visibility, you know, a CSS attribute now, that let you signal more precisely to the browser renderer, how much effort to dedicate to rendering a particular part of the page. [58:19] -So, you know, like, how I'm making sense of this is in React, if you're trying to choose whether or not to render something, for a long time the decision has been kind of like, conditional rendering, like, is the DOM in the page at all, or, like, display none. [00:58:34] +So, you know, like, how I'm making sense of this is in React, if you're trying to choose whether or not to render something, for a long time the decision has been kind of like, conditional rendering, like, is the DOM in the page at all, or, like, display none. [58:34] -And you know, there's a lot of other, like, subtle variations around that, like, should it live in the accessibility tree as well, like, You know, there's a lot of subtle nuances to that. So this adds a lot more subtle nuances. Very exciting. But yeah, so it looks really interesting. It lets you constrain So that's kind of part of it, but it's also a little bit on like sandboxing. Like, I guess the contain element is maybe a little bit more on sandboxing. It's like, if you were to like render an ad into your page, you might be able to do it using this instead of an iframe. [00:59:07] +And you know, there's a lot of other, like, subtle variations around that, like, should it live in the accessibility tree as well, like, You know, there's a lot of subtle nuances to that. So this adds a lot more subtle nuances. Very exciting. But yeah, so it looks really interesting. It lets you constrain So that's kind of part of it, but it's also a little bit on like sandboxing. Like, I guess the contain element is maybe a little bit more on sandboxing. It's like, if you were to like render an ad into your page, you might be able to do it using this instead of an iframe. [59:07] -So, and still maintain the same kind of strong guarantees about how it behaves on the page, how it looks on the page. [00:59:16] +So, and still maintain the same kind of strong guarantees about how it behaves on the page, how it looks on the page. [59:16] -**Mark:** someone in the chat just said it's like, it's kind of like Shadowroot, and I think that's a little bit, like, along the right lines. Like, you're telling the browser that elements inside here aren't going to have layout interactions with the rest of the page. [00:59:28] +**Mark:** someone in the chat just said it's like, it's kind of like Shadowroot, and I think that's a little bit, like, along the right lines. Like, you're telling the browser that elements inside here aren't going to have layout interactions with the rest of the page. [59:28] -So, like, whereas, a normal element, depending on your CSS, might, interact or overlap or something with other parts of the page, might cause the browser to do, a bunch of additional checks against other DOM nodes to see if they in some way. And so contain tells it, nope, anything under here is scope, you don't have to waste time and effort checking locations versus the rest of the page. [00:59:50] +So, like, whereas, a normal element, depending on your CSS, might, interact or overlap or something with other parts of the page, might cause the browser to do, a bunch of additional checks against other DOM nodes to see if they in some way. And so contain tells it, nope, anything under here is scope, you don't have to waste time and effort checking locations versus the rest of the page. [59:50] ## [content-visibility](https://developer.mozilla.org/en-US/docs/Web/CSS/content-visibility) [CanIUse](https://caniuse.com/mdn-css_properties_content-visibility) diff --git a/src/transcripts/tmir-2024-11.md b/src/transcripts/tmir-2024-11.md index a380c69..3196344 100644 --- a/src/transcripts/tmir-2024-11.md +++ b/src/transcripts/tmir-2024-11.md @@ -70,583 +70,583 @@ html li p { - [[01:02:56](#whats-next-for-the-react-compiler)] [What’s Next for the React Compiler?](https://www.youtube.com/watch?v=qd5yk2gxbtg) - [[01:03:14](#framer-motion-spinning-out-as-an-oss-tool-motion-and-conversely-gsap-is-joining-webflow)] [Framer Motion spinning out as an OSS tool (Motion)](https://motion.dev/blog/framer-motion-is-now-independent-introducing-motion), and conversely [GSAP is joining WebFlow](https://gsap.com/blog/webflow-GSAP/) -**Carl:** Hello everyone. Thank you for joining us for October's This Month in React, where we recap and digest the recent developments in the ever evolving React and web ecosystem come and do live out of Reactiflux, the place for professional React developers and supported by Infinite Red a React Native consultancy, but more about them later. [00:00:18] +**Carl:** Hello everyone. Thank you for joining us for October's This Month in React, where we recap and digest the recent developments in the ever evolving React and web ecosystem come and do live out of Reactiflux, the place for professional React developers and supported by Infinite Red a React Native consultancy, but more about them later. [00:18] -I'm Carl. I'm a staff product developer and freelance community leader here at Reactiflux, where I run community programs like events like this. And build some tools to help keep the community operating smoothly. [00:00:31] +I'm Carl. I'm a staff product developer and freelance community leader here at Reactiflux, where I run community programs like events like this. And build some tools to help keep the community operating smoothly. [00:31] -**Mark:** I'm Mark. My day job is working at Replay, which is a time traveling debugger for JavaScript, and outside of that I do way too much Redux stuff. [00:00:38] +**Mark:** I'm Mark. My day job is working at Replay, which is a time traveling debugger for JavaScript, and outside of that I do way too much Redux stuff. [00:38] -**Mo:** And I am Mo. I head the mobile team at Theodo. I am an active, semi active part of the React Native community. And I organize the React Native London conference and the meetups and sometimes dabble in open source with libraries like Expo and Tamagui. [00:00:54] +**Mo:** And I am Mo. I head the mobile team at Theodo. I am an active, semi active part of the React Native community. And I organize the React Native London conference and the meetups and sometimes dabble in open source with libraries like Expo and Tamagui. [00:54] -**Mark:** If you're only semi active, what qualifies as active? [00:00:57] +**Mark:** If you're only semi active, what qualifies as active? [00:57] -**Mo:** I don't know. I, I feel like I'm less active than I was a few months ago. Maybe I just need to take a little bit of a break and become reactive. [00:01:05] +**Mo:** I don't know. I, I feel like I'm less active than I was a few months ago. Maybe I just need to take a little bit of a break and become reactive. [01:05] -**Mark:** You just ran a conference! [00:01:07] +**Mark:** You just ran a conference! [01:07] -**Mo:** Yeah, maybe that's taking most of my energy out of my sails. [00:01:10] +**Mo:** Yeah, maybe that's taking most of my energy out of my sails. [01:10] -**Carl:** Yeah, right. I think organizing a conference gives you a little bit of a pass on other contributions. That's a lot. That was a [00:01:16] +**Carl:** Yeah, right. I think organizing a conference gives you a little bit of a pass on other contributions. That's a lot. That was a [01:16] -**Mo:** Yeah, it was it was a fun time. Intense, but fun time. [00:01:19] +**Mo:** Yeah, it was it was a fun time. Intense, but fun time. [01:19] -**Carl:** All right. Jumping into some quick hits. I'm gonna change up the format a little bit. The last couple months we've had so many new releases that new releases are just mostly part of the content now. But I'm gonna run through some quick new releases with like, no discussion. Just like, this is out, go check it out if you want. If it's relevant to your life. [00:01:35] +**Carl:** All right. Jumping into some quick hits. I'm gonna change up the format a little bit. The last couple months we've had so many new releases that new releases are just mostly part of the content now. But I'm gonna run through some quick new releases with like, no discussion. Just like, this is out, go check it out if you want. If it's relevant to your life. [01:35] ## Job market: [FRED data](https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE), [Layoffs.fyi](https://layoffs.fyi/) -**Carl:** But job market stuff looks pretty steady state compared to last month. Like, layoffs. 23andMe has laid off a couple of folks. But, generally seems to be pretty stable again. not much to say there. Okay. [00:01:50] +**Carl:** But job market stuff looks pretty steady state compared to last month. Like, layoffs. 23andMe has laid off a couple of folks. But, generally seems to be pretty stable again. not much to say there. Okay. [01:50] -New releases, lightning mode. [00:01:51] +New releases, lightning mode. [01:51] ## [VSCode 1.95](https://code.visualstudio.com/updates/v1_95) -**Carl:** VS Code they released like every, I don't know, six weeks, something like that. They've got VS Code 1. 95, which mostly looks like it brings out co pilot things. thing that caught my eye the most was you can add multiple files to like a working set, they call it, in the co pilot AI assistant stuff. [00:02:10] +**Carl:** VS Code they released like every, I don't know, six weeks, something like that. They've got VS Code 1. 95, which mostly looks like it brings out co pilot things. thing that caught my eye the most was you can add multiple files to like a working set, they call it, in the co pilot AI assistant stuff. [02:10] -So that seems kind of neat. I haven't used the copilot very much, but being able to say, here are the files that are relevant. Please do this for me. That seems neat. That seems cool. [00:02:20] +So that seems kind of neat. I haven't used the copilot very much, but being able to say, here are the files that are relevant. Please do this for me. That seems neat. That seems cool. [02:20] ## [Node v23](https://openjsf.org/blog/announcing-node.js-23-key-features-and-enhancement?ck_subscriber_id=1888282043) -**Carl:** There is a new version of Node, Node 23 Which means Node 22 is now LTS Two things caught my eye that seemed neat Biggest one is they now have native support for loading ES modules using Require. [00:02:37] +**Carl:** There is a new version of Node, Node 23 Which means Node 22 is now LTS Two things caught my eye that seemed neat Biggest one is they now have native support for loading ES modules using Require. [02:37] -this seems like a huge compatibility bridge between common JS and ESM, which has been a pain point for like five years, literally since the ES modules were released. So that's cool. It's been experimental for a long time and is now no longer experimental. It's just stable. So that's cool. [00:02:54] +this seems like a huge compatibility bridge between common JS and ESM, which has been a pain point for like five years, literally since the ES modules were released. So that's cool. It's been experimental for a long time and is now no longer experimental. It's just stable. So that's cool. [02:54] -They also added a native, flag to node, the node executable to run your package. JSON scripts. So no longer do you have to do NPM run. Now you can do node dash dash run. Which is just kind of cool. that was like a weird coupling between NPM and node. So like moving that into the runtime just kind of makes sense to me. So cool. Just especially while we have more variation in like runtimes and, Package management [00:03:19] +They also added a native, flag to node, the node executable to run your package. JSON scripts. So no longer do you have to do NPM run. Now you can do node dash dash run. Which is just kind of cool. that was like a weird coupling between NPM and node. So like moving that into the runtime just kind of makes sense to me. So cool. Just especially while we have more variation in like runtimes and, Package management [03:19] -**Carl:** tools and whatever. [00:03:20] +**Carl:** tools and whatever. [03:20] -**Mark:** I agree that Node having support for being able to use require to pull ESM modules into CommonJS a huge thing. I think you could do it the other way around where you could import CJS files, apparently. I'm still hazy on that one. But in general, the interop panes between ESM and CommonJS in Node have been the big barrier and reason why package maintainers like myself have had to go through shenanigans trying to get our packages defined and published properly with multiple different artifacts inside. [00:03:58] +**Mark:** I agree that Node having support for being able to use require to pull ESM modules into CommonJS a huge thing. I think you could do it the other way around where you could import CJS files, apparently. I'm still hazy on that one. But in general, the interop panes between ESM and CommonJS in Node have been the big barrier and reason why package maintainers like myself have had to go through shenanigans trying to get our packages defined and published properly with multiple different artifacts inside. [03:58] -As always, the fact that a new version of Node. js has support for this doesn't mean we'll be able to drop that immediately because, you know, the long tail but at least it's a step in the right direction. [00:04:12] +As always, the fact that a new version of Node. js has support for this doesn't mean we'll be able to drop that immediately because, you know, the long tail but at least it's a step in the right direction. [04:12] ## [Docusaurus 3.6](https://docusaurus.io/blog/releases/3.6) -**Carl:** DocuSource put out 3. 6. It's faster apparently. Seems good. [00:04:16] +**Carl:** DocuSource put out 3. 6. It's faster apparently. Seems good. [04:16] -**Mark:** Apparently that's because they did switch from using Webpack to using RSPack, which is, it's effectively Webpack. But rebuilt in Rust, so it's like public API compatible. So, an example of a migration path to get faster build tools without having to sort of switch which build tool ecosystem you're in. [00:04:40] +**Mark:** Apparently that's because they did switch from using Webpack to using RSPack, which is, it's effectively Webpack. But rebuilt in Rust, so it's like public API compatible. So, an example of a migration path to get faster build tools without having to sort of switch which build tool ecosystem you're in. [04:40] ## [React Navigation 7.0](https://reactnavigation.org/blog/2024/11/06/react-navigation-7.0/) -**Carl:** React Navigation put out version 7 if you're in React Native World. [00:04:46] +**Carl:** React Navigation put out version 7 if you're in React Native World. [04:46] ## [better-auth v1.0](https://www.better-auth.com/v1) -**Carl:** A project I've mentioned at least once on this show for authentication, BetterAuth, is at 1. 0. They've been doing a really fast, rapid release cycle, I've noticed. like, last month they were on version, 0. 6 and then they did, like, 0. 0. 9, and now 1. 0. So, cool. Seems good. Love authentication. And it seems like a good project for it. [00:05:06] +**Carl:** A project I've mentioned at least once on this show for authentication, BetterAuth, is at 1. 0. They've been doing a really fast, rapid release cycle, I've noticed. like, last month they were on version, 0. 6 and then they did, like, 0. 0. 9, and now 1. 0. So, cool. Seems good. Love authentication. And it seems like a good project for it. [05:06] ## [Mantine v7.14.0](https://mantine.dev/changelog/7-14-0/) -**Carl:** Mantine put out version 7. 14. Seems like a decent UI toolkit. [00:05:14] +**Carl:** Mantine put out version 7. 14. Seems like a decent UI toolkit. [05:14] ## [Storybook 8.4](https://storybook.js.org/blog/storybook-8-4/) -**Carl:** Storybook has 8. 4. I have opinions about Storybook. I don't use it. But hey, if you do, they are talking more about like testing and stuff. [00:05:22] +**Carl:** Storybook has 8. 4. I have opinions about Storybook. I don't use it. But hey, if you do, they are talking more about like testing and stuff. [05:22] ## [Gatsby v5.14](https://github.com/gatsbyjs/gatsby/releases/tag/gatsby%405.14.0) -**Carl:** Throwback Gatsby released version 5. 14. It's out. [00:05:28] +**Carl:** Throwback Gatsby released version 5. 14. It's out. [05:28] -**Mark:** genuinely surprised anyone's still working on it. [00:05:30] +**Mark:** genuinely surprised anyone's still working on it. [05:30] -**Carl:** Gatsby is still here. It still exists. Me too, a little bit, [00:05:34] +**Carl:** Gatsby is still here. It still exists. Me too, a little bit, [05:34] ## [Rspack 1.1](https://rspack.dev/blog/announcing-1-1) -**Carl:** RSPack put out 1. 1. We talked about version 1 release Recently. [00:05:39] +**Carl:** RSPack put out 1. 1. We talked about version 1 release Recently. [05:39] ## [Angular beat React to v19](https://blog.angular.dev/meet-angular-v19-7b29dfd05b84) -**Carl:** And amusingly, Angular has released version 19, beating React to the punch. Nothing that means anything, but yeah, well, Angular's got a new major version out. [00:05:50] +**Carl:** And amusingly, Angular has released version 19, beating React to the punch. Nothing that means anything, but yeah, well, Angular's got a new major version out. [05:50] -I saw they're looking to revise their style guide, which is apparently 52 pages long currently. So that's ridiculous. [00:05:57] +I saw they're looking to revise their style guide, which is apparently 52 pages long currently. So that's ridiculous. [05:57] ## Conferences -**Carl:** Yeah, conferences. Mo, you wanna talk? [00:06:00] +**Carl:** Yeah, conferences. Mo, you wanna talk? [06:00] -**Mo:** Yeah, sure. So, we're reaching the end of the year, which means conferences are going into hibernation mode as expected. [00:06:06] +**Mo:** Yeah, sure. So, we're reaching the end of the year, which means conferences are going into hibernation mode as expected. [06:06] ## [React Day Berlin](https://reactday.berlin/) -**Mo:** But we've got one more left for you all this year, React Day Berlin. And React Day Berlin happens in December every year. It's a really cool gathering of people. I was there last year and I'll be doing a talk this year with a friend of mine from Amazon, Anisha Malde, about universal React, so it's a, it's a great of React people. [00:06:25] +**Mo:** But we've got one more left for you all this year, React Day Berlin. And React Day Berlin happens in December every year. It's a really cool gathering of people. I was there last year and I'll be doing a talk this year with a friend of mine from Amazon, Anisha Malde, about universal React, so it's a, it's a great of React people. [06:25] -They have a really cool venue called Cosmos It's a really historical city. If you're in Europe, I'd recommend you come around. It's, it's a good time. [00:06:32] +They have a really cool venue called Cosmos It's a really historical city. If you're in Europe, I'd recommend you come around. It's, it's a good time. [06:32] -**Carl:** And it's on my birthday, so I'm not going. [00:06:34] +**Carl:** And it's on my birthday, so I'm not going. [06:34] -**Mo:** Happy birthday, Carl. Early birthday. Very early birthday. [00:06:38] +**Mo:** Happy birthday, Carl. Early birthday. Very early birthday. [06:38] ## Sponsored by [Infinite Red](https://infinite.red) -**Carl:** All right, sponsor time. We are sponsored currently exclusively by Infinite Red. They're an expert React Native consultancy that's been around since 2015. Coming up on 10 years, wild. They're our only sponsor in part because very few companies do as much as they do for the React Native ecosystem. [00:06:55] +**Carl:** All right, sponsor time. We are sponsored currently exclusively by Infinite Red. They're an expert React Native consultancy that's been around since 2015. Coming up on 10 years, wild. They're our only sponsor in part because very few companies do as much as they do for the React Native ecosystem. [06:55] -And so just really happy to be a part of it. Have a earnest collaborator in that kind of way. Yeah, I've seen their name around for as long as I've heard about React Native being used professionally. They only do React Native and have built over 75 apps for companies from startups to like the biggest fortune, whatever companies in the world. [00:07:13] +And so just really happy to be a part of it. Have a earnest collaborator in that kind of way. Yeah, I've seen their name around for as long as I've heard about React Native being used professionally. They only do React Native and have built over 75 apps for companies from startups to like the biggest fortune, whatever companies in the world. [07:13] -than being great people who I'm happy to collaborate with, be sponsored by they're a team of about 30, mostly developers, mostly with more than 10 years of experience. And they work alongside your team to help you develop expertise in React Native. So if you are working for a company, spinning up a new product with React Native, and want to hit the ground running, definitely give them a ring. [00:07:36] +than being great people who I'm happy to collaborate with, be sponsored by they're a team of about 30, mostly developers, mostly with more than 10 years of experience. And they work alongside your team to help you develop expertise in React Native. So if you are working for a company, spinning up a new product with React Native, and want to hit the ground running, definitely give them a ring. [07:36] -Infinite. red is the website. Cool, all right, [00:07:39] +Infinite. red is the website. Cool, all right, [07:39] ## Main content React 19 RC1 -**Mark:** so we actually have a very, very big Big development if you've been paying attention the last few months, we've been tracking that the React 19 release has got delayed because of concerns over changes to suspense behavior when multiple sibling components all want to suspend you know, the change had been made last fall, the community pointed out problems with it, Back in the spring, and the React team said okay, fine, we'll hold on React 19 until we can come up with a solution for this issue. Well, the good news is, that fix is actually done and out as a new React 19 RC. [00:08:17] +**Mark:** so we actually have a very, very big Big development if you've been paying attention the last few months, we've been tracking that the React 19 release has got delayed because of concerns over changes to suspense behavior when multiple sibling components all want to suspend you know, the change had been made last fall, the community pointed out problems with it, Back in the spring, and the React team said okay, fine, we'll hold on React 19 until we can come up with a solution for this issue. Well, the good news is, that fix is actually done and out as a new React 19 RC. [08:17] ## [Tech writeup of a solution to the sibling rendering issue](https://github.com/facebook/react/issues/29898#issuecomment-2477449973) that delayed React 19’s release -**Mark:** And the React team put together a very good visual and technical explanation of what they changed and how the behavior works. They're in the GitHub issue link, so I highly recommend taking a look at that. Big picture is that the original behavior as of 18, if you had multiple sibling components that all wanted to suspend, was it kind of acted like a promise. [00:08:40] +**Mark:** And the React team put together a very good visual and technical explanation of what they changed and how the behavior works. They're in the GitHub issue link, so I highly recommend taking a look at that. Big picture is that the original behavior as of 18, if you had multiple sibling components that all wanted to suspend, was it kind of acted like a promise. [08:40] -all, Where, in one render pass, it would kick off all of them, wait for them all to complete, and then actually show the content. The change that effectively broke things was it would render the first child that's suspended, see it, and say, oh, wait, let's wait for that one to complete, then pick up with the siblings, making it more like a serial for loop. [00:09:05] +all, Where, in one render pass, it would kick off all of them, wait for them all to complete, and then actually show the content. The change that effectively broke things was it would render the first child that's suspended, see it, and say, oh, wait, let's wait for that one to complete, then pick up with the siblings, making it more like a serial for loop. [09:05] -And the new behavior is when that first child suspends, It will go ahead and show the fallback, but it will kick off kind of a pre warming step in the background. So like, not like a complete render, but I guess kind of like a partial render, enough to kick off the requests. So that at least the other requests are in flight right away. [00:09:29] +And the new behavior is when that first child suspends, It will go ahead and show the fallback, but it will kick off kind of a pre warming step in the background. So like, not like a complete render, but I guess kind of like a partial render, enough to kick off the requests. So that at least the other requests are in flight right away. [09:29] -And so the overall behavior should be at least as good as it originally was, if not maybe actually kind of better. In, in some certain ways. So the two key takeaways here are that the, you know, the suspense behavior that people were concerned about has been addressed. It did take them a few months, but they, they did it in a comprehensive way, not just slapping in a bug fix. [00:09:52] +And so the overall behavior should be at least as good as it originally was, if not maybe actually kind of better. In, in some certain ways. So the two key takeaways here are that the, you know, the suspense behavior that people were concerned about has been addressed. It did take them a few months, but they, they did it in a comprehensive way, not just slapping in a bug fix. [09:52] -And also that hopefully React 19 final is very, very close. There's still no specific timeline, but they did make the comment that we hope to publish 19 stable. Boy, [00:10:03] +And also that hopefully React 19 final is very, very close. There's still no specific timeline, but they did make the comment that we hope to publish 19 stable. Boy, [10:03] -**Carl:** Yeah, and just maybe to restate what you were saying in different words, so my understanding of like the problem that they introduced and why they introduced it is Like you said previously, it was just sort of rendering all of the siblings before it handled the suspense. [00:10:18] +**Carl:** Yeah, and just maybe to restate what you were saying in different words, so my understanding of like the problem that they introduced and why they introduced it is Like you said previously, it was just sort of rendering all of the siblings before it handled the suspense. [10:18] -And that was undesirable because it introduced latency before the fallback would be rendered. It did a bunch of work before showing the fallback. So they wanted to change it so that the fallback would be shown quicker, but caused requests to behave as a waterfall rather than kicking off in parallel. [00:10:36] +And that was undesirable because it introduced latency before the fallback would be rendered. It did a bunch of work before showing the fallback. So they wanted to change it so that the fallback would be shown quicker, but caused requests to behave as a waterfall rather than kicking off in parallel. [10:36] -It would kind of waterfall shape of your component tree. If you had requests being kicked off by like child components and sibling components and stuff and so now they managed to find like a happy balance where they don't do all of the work of rendering, you know doing the I'm fuzzy on the terminology around like commits and rendering and all that so I can't speak to precisely there [00:11:00] +It would kind of waterfall shape of your component tree. If you had requests being kicked off by like child components and sibling components and stuff and so now they managed to find like a happy balance where they don't do all of the work of rendering, you know doing the I'm fuzzy on the terminology around like commits and rendering and all that so I can't speak to precisely there [11:00] -**Mark:** someone had a blog post that explained these things. [00:11:03] +**Mark:** someone had a blog post that explained these things. [11:03] -**Carl:** I read that but many moons ago, yeah, so it's a nice Midpoint between what it used to do and what they wanted it to do and now it works correctly. [00:11:13] +**Carl:** I read that but many moons ago, yeah, so it's a nice Midpoint between what it used to do and what they wanted it to do and now it works correctly. [11:13] -So yeah, They delayed it back in June and they now have a fix So, you know, only a couple of months delayed. It's only all year that we've been talking about React 19. So maybe it'll be released soon. moving on. [00:11:27] +So yeah, They delayed it back in June and they now have a fix So, you know, only a couple of months delayed. It's only all year that we've been talking about React 19. So maybe it'll be released soon. moving on. [11:27] ## [Next.js 15](https://nextjs.org/blog/next-15) -**Carl:** Next. js has version 15, out and stable. You know, they call it out and stable, but I don't know, it's stable version is like using of the big changes is using like React 19. RC in the apps router, the app router. And so that still feels to me like the proving ground for React 19. [00:11:50] +**Carl:** Next. js has version 15, out and stable. You know, they call it out and stable, but I don't know, it's stable version is like using of the big changes is using like React 19. RC in the apps router, the app router. And so that still feels to me like the proving ground for React 19. [11:50] -So calling Next. js 15 stable when it's recommending that you use an unstable version of React feels funky to me. Feels like a, like a workaround to the problem of people don't test, you know, release candidates, so they're just going to call it stable. [00:12:06] +So calling Next. js 15 stable when it's recommending that you use an unstable version of React feels funky to me. Feels like a, like a workaround to the problem of people don't test, you know, release candidates, so they're just going to call it stable. [12:06] -But yeah, I'm not sure that I personally would base a production system off of the app router in Next 15 because it just, because of that, it feels like a beta, beta is maybe too strong, but it feels like they're still exploring. claim it's stable, I don't know what sort of underlying technical issues might cause things to have to be changed. [00:12:27] +But yeah, I'm not sure that I personally would base a production system off of the app router in Next 15 because it just, because of that, it feels like a beta, beta is maybe too strong, but it feels like they're still exploring. claim it's stable, I don't know what sort of underlying technical issues might cause things to have to be changed. [12:27] -**Mark:** This touches on multiple different aspects that we've talked, at least I think we've talked about previously. One is that, you know, especially with all the server component stuff, the React team used to be able to, pre alpha test all their ideas internally at Facebook, but they can't do that with server components because it relies on having a separate server, and Facebook has all their own server, which is one of the reasons they ended up collaborating with Vercel. [00:12:55] +**Mark:** This touches on multiple different aspects that we've talked, at least I think we've talked about previously. One is that, you know, especially with all the server component stuff, the React team used to be able to, pre alpha test all their ideas internally at Facebook, but they can't do that with server components because it relies on having a separate server, and Facebook has all their own server, which is one of the reasons they ended up collaborating with Vercel. [12:55] -To be like, they convinced Vercell to go with their vision, but also it conveniently aligned with, we need someone who doesn't have Facebook server infra to let us build out server components and prove that it works. Along with that the app router has always used a pre release version of react. [00:13:14] +To be like, they convinced Vercell to go with their vision, but also it conveniently aligned with, we need someone who doesn't have Facebook server infra to let us build out server components and prove that it works. Along with that the app router has always used a pre release version of react. [13:14] -Like this. Like, even before they came up with the Canary system, it was using, assorted, experimental, unstable builds. And so, haven't been keeping track of which version specifically, but, I would assume that over the last year, versions of Next 14 have been using, you know, React 19 Canaries, betas, RCs. [00:13:36] +Like this. Like, even before they came up with the Canary system, it was using, assorted, experimental, unstable builds. And so, haven't been keeping track of which version specifically, but, I would assume that over the last year, versions of Next 14 have been using, you know, React 19 Canaries, betas, RCs. [13:36] -So, if anything, it's, More stable now than it was a year ago. But part of the point was that, the App Writer needs all this new functionality in 19 in order to work. And the whole point of the Canary system was that, well, even if it's not fully 100 percent stable stable as a standalone release, frameworks like Next are able to paper over the rough edges so that from their point of view and from the consumer's point of view, It's stable. [00:14:05] +So, if anything, it's, More stable now than it was a year ago. But part of the point was that, the App Writer needs all this new functionality in 19 in order to work. And the whole point of the Canary system was that, well, even if it's not fully 100 percent stable stable as a standalone release, frameworks like Next are able to paper over the rough edges so that from their point of view and from the consumer's point of view, It's stable. [14:05] -So, I agree that the versioning system is funky, but it's also not a new thing. [00:14:10] +So, I agree that the versioning system is funky, but it's also not a new thing. [14:10] -**Carl:** Right. Definitely not new for sure. But yeah, if you're doing a little side project, probably fun to play with. If you're a founding engineer at a new company, I'm not sure I would start a new thing on it. It's not sure I would start a new revenue generating entity on it. [00:14:25] +**Carl:** Right. Definitely not new for sure. But yeah, if you're doing a little side project, probably fun to play with. If you're a founding engineer at a new company, I'm not sure I would start a new thing on it. It's not sure I would start a new revenue generating entity on it. [14:25] -So, yeah, one new thing that they introduced is an instrumentation. js file, hook, I don't know. It's a place where you can plug in to the core, like, network level of the system. Next. js for things like observability and monitoring. [00:14:43] +So, yeah, one new thing that they introduced is an instrumentation. js file, hook, I don't know. It's a place where you can plug in to the core, like, network level of the system. Next. js for things like observability and monitoring. [14:43] -So that seems pretty cool. I think that is one of those like quiet underrated things that every app needs and that is not always super easy to figure out how to fit it in. In the past, I have done a fetch wrapper that introduced things like performance metrics and observability and stuff. So just having that as like a a framework feature in Next. Makes a lot of sense to me. Glad to see it. [00:15:07] +So that seems pretty cool. I think that is one of those like quiet underrated things that every app needs and that is not always super easy to figure out how to fit it in. In the past, I have done a fetch wrapper that introduced things like performance metrics and observability and stuff. So just having that as like a a framework feature in Next. Makes a lot of sense to me. Glad to see it. [15:07] -They also put out a, a form component, which seems like it overlaps with like the native behavior that the native form enhancements that React 19 is introducing, so I'm a little bit fuzzy on like what that abstraction is super duper for, but yeah, it's there. [00:15:22] +They also put out a, a form component, which seems like it overlaps with like the native behavior that the native form enhancements that React 19 is introducing, so I'm a little bit fuzzy on like what that abstraction is super duper for, but yeah, it's there. [15:22] -Cool. On to TypeScript. [00:15:25] +Cool. On to TypeScript. [15:25] ## [TS 5.7](https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/) -**Mark:** So, the TypeScript release chain also keeps chugging along. I think they do releases every two or three months. And so we're now up to TypeScript 5. 7. There are a couple nice to haves, like checking for variables that never got initialized, like borderline winter. Related stuff, but at the types level. The, the interesting thing from an ecosystem perspective the story around, you know, how TypeScript interacts with module output and file paths has always been very complicated, because it's always been very complicated at the JavaScript level. [00:16:00] +**Mark:** So, the TypeScript release chain also keeps chugging along. I think they do releases every two or three months. And so we're now up to TypeScript 5. 7. There are a couple nice to haves, like checking for variables that never got initialized, like borderline winter. Related stuff, but at the types level. The, the interesting thing from an ecosystem perspective the story around, you know, how TypeScript interacts with module output and file paths has always been very complicated, because it's always been very complicated at the JavaScript level. [16:00] -And one of the things that had been kind of a pain point, weird point, frustration thing was that even when you were writing, like, Writing TypeScript files in order for some ES module, you know, import behavior to work properly, your imports still had to say you were importing from a js file in the import path. [00:16:25] +And one of the things that had been kind of a pain point, weird point, frustration thing was that even when you were writing, like, Writing TypeScript files in order for some ES module, you know, import behavior to work properly, your imports still had to say you were importing from a js file in the import path. [16:25] -And that always felt really weird. It's like, yes, I realized that's what is actually executing at runtime and that the build output is a bunch of js files, but the file name I'm, but with the file that I'm writing this in is a ts file. Like this, this doesn't make sense. This is weird. I don't want to have to do this. [00:16:45] +And that always felt really weird. It's like, yes, I realized that's what is actually executing at runtime and that the build output is a bunch of js files, but the file name I'm, but with the file that I'm writing this in is a ts file. Like this, this doesn't make sense. This is weird. I don't want to have to do this. [16:45] -And the TS team had resisted trying to make changes here because after the first couple of years of doing TypeScript features that required actual separate output, like enums, they're now very much on board with like, we are a superset of the JavaScript language and the compiler doesn't do anything to have to rewrite the actual behavior of your code. [00:17:11] +And the TS team had resisted trying to make changes here because after the first couple of years of doing TypeScript features that required actual separate output, like enums, they're now very much on board with like, we are a superset of the JavaScript language and the compiler doesn't do anything to have to rewrite the actual behavior of your code. [17:11] -But they appear to have actually added a mode that will change import path names. So when you have an import that says import from something. ts If this flag is enabled, it will rewrite that to say import something from a js. It only does this in certain conditions where it's a relative path and not, and not a, like a globally scoped path. [00:17:41] +But they appear to have actually added a mode that will change import path names. So when you have an import that says import from something. ts If this flag is enabled, it will rewrite that to say import something from a js. It only does this in certain conditions where it's a relative path and not, and not a, like a globally scoped path. [17:41] -I, I don't pretend to understand the rationales behind it. I'm mostly just going off the release notes here. So, it seems like a rather grudging Decision to tweak things in favor of better ecosystem interop. [00:17:54] +I, I don't pretend to understand the rationales behind it. I'm mostly just going off the release notes here. So, it seems like a rather grudging Decision to tweak things in favor of better ecosystem interop. [17:54] -**Carl:** this feels very much like stuck between a rock and a hard place in that, like, Now there are more and more ways to run your TypeScript code without doing a full compilation pass, sending it fully through the TypeScript compiler, TSC, It's an intersection of like, there are more ways to run your code without fully compiling it and executing the built output. And there are more ways to, or rather, imports are getting stricter about file extensions and just like, Ooh, oh no, what do you do with that? Those are like incompatible assumptions. [00:18:29] +**Carl:** this feels very much like stuck between a rock and a hard place in that, like, Now there are more and more ways to run your TypeScript code without doing a full compilation pass, sending it fully through the TypeScript compiler, TSC, It's an intersection of like, there are more ways to run your code without fully compiling it and executing the built output. And there are more ways to, or rather, imports are getting stricter about file extensions and just like, Ooh, oh no, what do you do with that? Those are like incompatible assumptions. [18:29] -this seems, I agree, this seems like a grudging, I don't know if I want to call it a hack fix or a band aid or something, but like, just even as they're talking about it in the release notes, it's, I feel like I can sense their trepidation and like angst over, like, you know, like a quote from it is like, you might need to use conditional exports with scoped custom conditions to make this work for like absolute paths, like if you're using, you know, your TS config to, you know, import, you know, structure and not use relative paths and it's just like, Oh no, that's [00:18:59] +this seems, I agree, this seems like a grudging, I don't know if I want to call it a hack fix or a band aid or something, but like, just even as they're talking about it in the release notes, it's, I feel like I can sense their trepidation and like angst over, like, you know, like a quote from it is like, you might need to use conditional exports with scoped custom conditions to make this work for like absolute paths, like if you're using, you know, your TS config to, you know, import, you know, structure and not use relative paths and it's just like, Oh no, that's [18:59] -**Mark:** so thrilling, [00:19:01] +**Mark:** so thrilling, [19:01] -**Carl:** Right! [00:19:01] +**Carl:** Right! [19:01] -It's like, oh god, that's, this sounds like a whole new problem. they're trying to fix a problem. They may introduce more problems. I think this is going to be painful for a long time. [00:19:11] +It's like, oh god, that's, this sounds like a whole new problem. they're trying to fix a problem. They may introduce more problems. I think this is going to be painful for a long time. [19:11] -**Mark:** but it's there. If you feel you need this. [00:19:14] +**Mark:** but it's there. If you feel you need this. [19:14] -**Carl:** maybe you do. Yeah, I don't know. Anyway, seems, seems rough. V8 introduced compile caching, which allows runtimes to reuse some of the like JIT compilation steps. So TypeScript is taking advantage of that new V8 feature to improve its startup time. They talked about, you know, if you do like TSC dash dash version, it now prints faster. [00:19:38] +**Carl:** maybe you do. Yeah, I don't know. Anyway, seems, seems rough. V8 introduced compile caching, which allows runtimes to reuse some of the like JIT compilation steps. So TypeScript is taking advantage of that new V8 feature to improve its startup time. They talked about, you know, if you do like TSC dash dash version, it now prints faster. [19:38] -So like, that's cool. That's nice. Startup time is definitely a pain point for Node generally, JavaScript generally. And that's nice. Less latency. [00:19:48] +So like, that's cool. That's nice. Startup time is definitely a pain point for Node generally, JavaScript generally. And that's nice. Less latency. [19:48] ## [React Router v7 | Remix](https://remix.run/blog/react-router-v7) -**Carl:** Cool, okay, moving on. React Router v7 slash, you know, the one with Remix. headline, big pull quote, " We encourage all Remix v2 users to upgrade to React Router v7." This seems really neat. I want to play more with this, but I think really playing with it is going to take a lot. I have an app in mind that I want to try and move over. [00:20:12] +**Carl:** Cool, okay, moving on. React Router v7 slash, you know, the one with Remix. headline, big pull quote, " We encourage all Remix v2 users to upgrade to React Router v7." This seems really neat. I want to play more with this, but I think really playing with it is going to take a lot. I have an app in mind that I want to try and move over. [20:12] -It's currently using Remix 1, so I can upgrade to 2 and then upgrade to React Router 7. Woo! Multistage upgrades. Yeah, the big highlight here, I guess, is that Essentially, I think my mental model for understanding this change, you know, Remix to React Router is what was Remix is now Framework Mode in React Router. [00:20:34] +It's currently using Remix 1, so I can upgrade to 2 and then upgrade to React Router 7. Woo! Multistage upgrades. Yeah, the big highlight here, I guess, is that Essentially, I think my mental model for understanding this change, you know, Remix to React Router is what was Remix is now Framework Mode in React Router. [20:34] -So you can still use React Router as you always have, as just like a library. Or you can use it in Framework Mode, which has a Vite plugin to get more control over, you know, the build step, the compilation, which is what used to be Remix. So it feels like they explored a lot of like API surface area. [00:20:55] +So you can still use React Router as you always have, as just like a library. Or you can use it in Framework Mode, which has a Vite plugin to get more control over, you know, the build step, the compilation, which is what used to be Remix. So it feels like they explored a lot of like API surface area. [20:55] -Like, how do we fix this? How do we make this work correctly as we want it to with Remix? And then it feels like they got it, they got it where they want, they refined it to where it was just kind of an abstraction over existing build tools. Like that was the big push to not have like, you don't interact with Remix, you interact with Vite and there's a plugin that is Remix. [00:21:15] +Like, how do we fix this? How do we make this work correctly as we want it to with Remix? And then it feels like they got it, they got it where they want, they refined it to where it was just kind of an abstraction over existing build tools. Like that was the big push to not have like, you don't interact with Remix, you interact with Vite and there's a plugin that is Remix. [21:15] -And so now this feels like the next logical step there where like it is truly just an agglomeration of existing tools that you can choose how to use in the way you want. I think that's pretty neat. That seems pretty cool. I definitely want to play with this a lot more. [00:21:27] +And so now this feels like the next logical step there where like it is truly just an agglomeration of existing tools that you can choose how to use in the way you want. I think that's pretty neat. That seems pretty cool. I definitely want to play with this a lot more. [21:27] -**Mark:** as I roughly understand the sequencing, so Remix itself was originally based on ESBuild, and there was no way to really mess with that configuration. Then they managed to come up with a Vite plugin, which did the same thing. And then the Vite plugin, I guess, became the default way to use Remix. [00:21:44] +**Mark:** as I roughly understand the sequencing, so Remix itself was originally based on ESBuild, and there was no way to really mess with that configuration. Then they managed to come up with a Vite plugin, which did the same thing. And then the Vite plugin, I guess, became the default way to use Remix. [21:44] -And now that it's like, well, at this point, there actually isn't much left that's specific to Remix the framework. It's all in the plugin. And so that enabled them to help take some of this, and take basically all this functionality, back into React Router, the library. And so as you said, there's the client side piece, which has always been there, and then it's like, well, all this stuff that used to be server related, and used to be specific to the Remix framework, is now encapsulated in the Vite plugin, so it's just there if you want to use it. [00:22:14] +And now that it's like, well, at this point, there actually isn't much left that's specific to Remix the framework. It's all in the plugin. And so that enabled them to help take some of this, and take basically all this functionality, back into React Router, the library. And so as you said, there's the client side piece, which has always been there, and then it's like, well, all this stuff that used to be server related, and used to be specific to the Remix framework, is now encapsulated in the Vite plugin, so it's just there if you want to use it. [22:14] -**Mo:** I mean, it's quite interesting because I feel like this idea of, frameworks being almost add ons or plugins to the bundler, whether it's Vite, I guess I've seen this with Vite only, is quite an interesting premise and I think it's picking up a little bit, maybe almost as a response to how Next. js is such like a, tightly It's not proprietary, but proprietary like piece of software where you're like really buying into Next rather than buying into the tools that are, you know, underlying Next. [00:22:43] +**Mo:** I mean, it's quite interesting because I feel like this idea of, frameworks being almost add ons or plugins to the bundler, whether it's Vite, I guess I've seen this with Vite only, is quite an interesting premise and I think it's picking up a little bit, maybe almost as a response to how Next. js is such like a, tightly It's not proprietary, but proprietary like piece of software where you're like really buying into Next rather than buying into the tools that are, you know, underlying Next. [22:43] -And I see that with the new React Native Framework One as well, where it's really kind of, it's a Vite plugin. Everything's on Vite and we're building on top of Vite and we have some extra functionalities that comes out if you want to use it as kind of a framework. So it's interesting to see how this shift from the Remix team has had, I think, probably reverberations across to other, parts of the ecosystem. [00:23:04] +And I see that with the new React Native Framework One as well, where it's really kind of, it's a Vite plugin. Everything's on Vite and we're building on top of Vite and we have some extra functionalities that comes out if you want to use it as kind of a framework. So it's interesting to see how this shift from the Remix team has had, I think, probably reverberations across to other, parts of the ecosystem. [23:04] -I guess the question that I still have is, why have they done this from a branding perspective? Like, it seems like a lot of brand capital that they probably had in Remix Is, kind of disappearing by going into React Router. Now you could argue whether or not that's good brand capital or not, because Remix has had its fair share of controversies. [00:23:22] +I guess the question that I still have is, why have they done this from a branding perspective? Like, it seems like a lot of brand capital that they probably had in Remix Is, kind of disappearing by going into React Router. Now you could argue whether or not that's good brand capital or not, because Remix has had its fair share of controversies. [23:22] -it's an interesting move for me. [00:23:24] +it's an interesting move for me. [23:24] -**Carl:** I would raise, as a counterpoint, That they already captured the brand value because they sold Remix to Shopify, [00:23:31] +**Carl:** I would raise, as a counterpoint, That they already captured the brand value because they sold Remix to Shopify, [23:31] -**Mo:** It's a monetary brand value rather than anything else. Like a monetary for acquisition brand value. [00:23:36] +**Mo:** It's a monetary brand value rather than anything else. Like a monetary for acquisition brand value. [23:36] -**Carl:** I think there's a decent argument to be made there. but also like react router has been Around for like 12 years 11 years Literally, like, the original way of doing routing in React. So it kind of makes sense to me to say like, Look, we solved this problem. [00:23:54] +**Carl:** I think there's a decent argument to be made there. but also like react router has been Around for like 12 years 11 years Literally, like, the original way of doing routing in React. So it kind of makes sense to me to say like, Look, we solved this problem. [23:54] -I have been watching them try to figure out where the boundaries are between routing and, like, server and, they've been trying to figure out how to do data loading and, bundle splitting at the router level. For that entire time. So it feels to me like they spun up a new brand to do more experimentation and now got there and then folded it back into the original tool that they've been trying to solve this in forever. [00:24:20] +I have been watching them try to figure out where the boundaries are between routing and, like, server and, they've been trying to figure out how to do data loading and, bundle splitting at the router level. For that entire time. So it feels to me like they spun up a new brand to do more experimentation and now got there and then folded it back into the original tool that they've been trying to solve this in forever. [24:20] -**Mo:** the process got acquired, which is a nice payout as well. [00:24:24] +**Mo:** the process got acquired, which is a nice payout as well. [24:24] -**Carl:** great bonus. Yeah. [00:24:25] +**Carl:** great bonus. Yeah. [24:25] -**Mo:** Yeah, makes sense. [00:24:27] +**Mo:** Yeah, makes sense. [24:27] -**Carl:** Speaking of Vite. [00:24:28] +**Carl:** Speaking of Vite. [24:28] ## [Vite v6](https://vite.dev/blog/announcing-vite6.html) -**Mark:** So associated with that Vite version six just came out. And it's interesting because they've tagged it as the most significant release since Vite 2. And yet I was looking through the announcement and the migration guide, and it looks like there isn't a lot that really feels user facing in terms of features and changes. [00:24:50] +**Mark:** So associated with that Vite version six just came out. And it's interesting because they've tagged it as the most significant release since Vite 2. And yet I was looking through the announcement and the migration guide, and it looks like there isn't a lot that really feels user facing in terms of features and changes. [24:50] ## [Environment API](https://github.com/vitejs/vite/discussions/16358) -**Mark:** Best as I can tell, a lot of this one is on the inside, and it looks like they did a lot of major refactoring internally to enable what they're calling the Environment API. And as I understand it, the idea is that because JavaScript these days is used in so many different ways, it's used in the browser, it's used in Node, in Deno, in Bun, in worker runtimes, that may have differing constraints. [00:25:18] +**Mark:** Best as I can tell, a lot of this one is on the inside, and it looks like they did a lot of major refactoring internally to enable what they're calling the Environment API. And as I understand it, the idea is that because JavaScript these days is used in so many different ways, it's used in the browser, it's used in Node, in Deno, in Bun, in worker runtimes, that may have differing constraints. [25:18] -It seems that the environment API is going to allow you to generate build output targeted for different environments based on certain definitions. I'm still kind of hazy on that part myself. I have seen a number of mentions that things like some of the other, Framework level Vite wrappers are going to benefit from having the environment API available. [00:25:45] +It seems that the environment API is going to allow you to generate build output targeted for different environments based on certain definitions. I'm still kind of hazy on that part myself. I have seen a number of mentions that things like some of the other, Framework level Vite wrappers are going to benefit from having the environment API available. [25:45] -So, seen some mentions here, I don't quite know how all the pieces connect. general takeaway is like, it seems like, a fairly easy upgrade. saw a couple people on Reddit say like, yeah, I just like bumped the version and it just worked. So it might not have an immediate benefit for an application in terms of speed or build output per se, but it does seem like it's fairly foundational for a lot of the framework level stuff that's going on in the ecosystem. [00:26:12] +So, seen some mentions here, I don't quite know how all the pieces connect. general takeaway is like, it seems like, a fairly easy upgrade. saw a couple people on Reddit say like, yeah, I just like bumped the version and it just worked. So it might not have an immediate benefit for an application in terms of speed or build output per se, but it does seem like it's fairly foundational for a lot of the framework level stuff that's going on in the ecosystem. [26:12] -**Carl:** Yeah, we definitely agree with that. I've encountered a little bit of that environment pain. Not using Vite, but just like trying to use Cloudflare workers. Trying to do, a worker serverless type of architecture. Definitely can tell that it is, Like bleeding edge of the ecosystem and a lot of the existing tooling is just like not well suited to support it precisely. [00:26:37] +**Carl:** Yeah, we definitely agree with that. I've encountered a little bit of that environment pain. Not using Vite, but just like trying to use Cloudflare workers. Trying to do, a worker serverless type of architecture. Definitely can tell that it is, Like bleeding edge of the ecosystem and a lot of the existing tooling is just like not well suited to support it precisely. [26:37] -Yeah, just like having an existing, like daemon, existing process that is long lived. It's just a very different set of constraints from a short lived process that Handles a request and shuts down. So, Remember the era of the, of the acronym for rendering? SSG and SSR and ISR and S So, I feel like this environment API to me, it feels like a reaction to that, of like, look, we have all of these contexts in which web pages are being rendered and used. [00:27:08] +Yeah, just like having an existing, like daemon, existing process that is long lived. It's just a very different set of constraints from a short lived process that Handles a request and shuts down. So, Remember the era of the, of the acronym for rendering? SSG and SSR and ISR and S So, I feel like this environment API to me, it feels like a reaction to that, of like, look, we have all of these contexts in which web pages are being rendered and used. [27:08] -And we don't even have a language to talk about it. I guess Vite has, spent most of the version five release iterating on what has then turned into this environment API. It sounds like they introduced it as. Something else the runtime API in 5. 1 and iterated on it, iterated on it, realized that what they landed on was different enough from that, that they just came up with a new name for it and put out a major release. So yeah, definitely looks interesting and valuable. [00:27:38] +And we don't even have a language to talk about it. I guess Vite has, spent most of the version five release iterating on what has then turned into this environment API. It sounds like they introduced it as. Something else the runtime API in 5. 1 and iterated on it, iterated on it, realized that what they landed on was different enough from that, that they just came up with a new name for it and put out a major release. So yeah, definitely looks interesting and valuable. [27:38] -And yeah, given how Vite seems to be like the common building block that everyone else is starting to rely on, here for it. This seems like the kind of exploration that is super, super valuable, especially given that place in the ecosystem. [00:27:51] +And yeah, given how Vite seems to be like the common building block that everyone else is starting to rely on, here for it. This seems like the kind of exploration that is super, super valuable, especially given that place in the ecosystem. [27:51] -**Mark:** Definitely. [00:27:52] +**Mark:** Definitely. [27:52] ## [Expo Launch Party](https://expo.dev/launch-party) -**Mo:** yeah, let's move on to some React Native land. And interestingly so, towards the end of November, we've had Expo's launch week. This is where Expo kind of bundle a bunch of the stuff that they've been working on and launch it in one go over a few days. it's been quite interesting to see some of the stuff that's been coming off. [00:28:10] +**Mo:** yeah, let's move on to some React Native land. And interestingly so, towards the end of November, we've had Expo's launch week. This is where Expo kind of bundle a bunch of the stuff that they've been working on and launch it in one go over a few days. it's been quite interesting to see some of the stuff that's been coming off. [28:10] -Nothing is particularly a big surprise but it's interesting to see the culmination of some of the stuff being released out to the public. So, I'll go through some of this bit by bit, and we'll talk through it. [00:28:19] +Nothing is particularly a big surprise but it's interesting to see the culmination of some of the stuff being released out to the public. So, I'll go through some of this bit by bit, and we'll talk through it. [28:19] ## [The magic of Expo DOM Components](https://expo.dev/blog/the-magic-of-expo-dom-components) -**Mo:** So, the biggest thing that the Expo team has been talking about over the last few months, I'd say, is DOM components. [00:28:26] +**Mo:** So, the biggest thing that the Expo team has been talking about over the last few months, I'd say, is DOM components. [28:26] -This idea of how uh, Can we make it super easy to run web based DOM elements inside of a native app without turning the entire app into a Cordova Ionic sort of web view based app? this is controversial at the best of times, I think, right now. A lot of people seem to really like it. [00:28:44] +This idea of how uh, Can we make it super easy to run web based DOM elements inside of a native app without turning the entire app into a Cordova Ionic sort of web view based app? this is controversial at the best of times, I think, right now. A lot of people seem to really like it. [28:44] -There's some people who feel like it's kind of a step I think the expo team is trying to take this pragmatic approach of, a lot of people have React web apps, how do we kind of get them to migrate incrementally and introduce them into the React native ecosystem. So, The article that we've linked has some interesting use cases. It kind of looks at the integration of, you know, you still, if you have a WebView based app, maybe there's some cases where you still want to introduce some native functionality. [00:29:11] +There's some people who feel like it's kind of a step I think the expo team is trying to take this pragmatic approach of, a lot of people have React web apps, how do we kind of get them to migrate incrementally and introduce them into the React native ecosystem. So, The article that we've linked has some interesting use cases. It kind of looks at the integration of, you know, you still, if you have a WebView based app, maybe there's some cases where you still want to introduce some native functionality. [29:11] -So, you know, you press a button, maybe you still want to have a haptic on the native device. So how do you integrate those things together? And make it kind of feel native in some capacity. So it talks about some of that, some of the patterns that you want, and some use cases. So some of the things that have been really difficult to do in React Native is things like displaying markdown. [00:29:28] +So, you know, you press a button, maybe you still want to have a haptic on the native device. So how do you integrate those things together? And make it kind of feel native in some capacity. So it talks about some of that, some of the patterns that you want, and some use cases. So some of the things that have been really difficult to do in React Native is things like displaying markdown. [29:28] -Markdown, you know, you have to create your own renderer with native components for it. And it's a lot of work to do that natively. Anyone who's done that will kind of attest to that. And Stuff like that gets really easy because it's a solved problem in the web world. So, they're kind of not saying you should use this for your entire app. [00:29:44] +Markdown, you know, you have to create your own renderer with native components for it. And it's a lot of work to do that natively. Anyone who's done that will kind of attest to that. And Stuff like that gets really easy because it's a solved problem in the web world. So, they're kind of not saying you should use this for your entire app. [29:44] -They're kind of being very, very, very clear about that. thinking of using that in places as an escape hatch more than anything. [00:29:51] +They're kind of being very, very, very clear about that. thinking of using that in places as an escape hatch more than anything. [29:51] -**Mark:** More interop is always a good thing. [00:29:53] +**Mark:** More interop is always a good thing. [29:53] -**Mo:** yeah, you know, it's good to have that. Now, this isn't something that necessarily is new. Like, you can always use WebViews in React Native. It's been around for probably since the very, very, very early days. [00:30:03] +**Mo:** yeah, you know, it's good to have that. Now, this isn't something that necessarily is new. Like, you can always use WebViews in React Native. It's been around for probably since the very, very, very early days. [30:03] -It's nothing new. There was always React Native WebView as a library. this is just an easier way and a nicer way to do it. And it uses the favorite directives that everyone has now in the React ecosystem, which is the use directive at the top of the file. And you just pop in a use DOM and it kind of works. [00:30:18] +It's nothing new. There was always React Native WebView as a library. this is just an easier way and a nicer way to do it. And it uses the favorite directives that everyone has now in the React ecosystem, which is the use directive at the top of the file. And you just pop in a use DOM and it kind of works. [30:18] -I think we're starting to overuse directives. We should probably stop as an ecosystem. It's just getting a bit out of hand, but that's a different conversation for another time. I see Carl passionately nodding at this. Mm [00:30:30] +I think we're starting to overuse directives. We should probably stop as an ecosystem. It's just getting a bit out of hand, but that's a different conversation for another time. I see Carl passionately nodding at this. Mm [30:30] -**Carl:** flashbacks to like, I guess it was like ES6 when the use strict directive was introduced. And I just remember the emphatic, you know, like people would say like, Ooh, what if we did this other directive? And I just remember the reaction being like an emphatic, like, No, this is the only directive we're ever going to do. Never again. This is terrible. We should not have had to do this, but we needed to. Never again. [00:30:53] +**Carl:** flashbacks to like, I guess it was like ES6 when the use strict directive was introduced. And I just remember the emphatic, you know, like people would say like, Ooh, what if we did this other directive? And I just remember the reaction being like an emphatic, like, No, this is the only directive we're ever going to do. Never again. This is terrible. We should not have had to do this, but we needed to. Never again. [30:53] -And so now seeing like, we got like, what, four or five now in React? And they don't even have the same semantics. Like it used to be only at the top of the file and now it's like top of the source file, which is technically different. Not the, and like some of them are at the tops of functions. It's, it's complicated. It's too much complication. [00:31:13] +And so now seeing like, we got like, what, four or five now in React? And they don't even have the same semantics. Like it used to be only at the top of the file and now it's like top of the source file, which is technically different. Not the, and like some of them are at the tops of functions. It's, it's complicated. It's too much complication. [31:13] -**Mo:** I tend to agree with you. I quickly want to touch on some of the limitations to dissuade people from trying to use this for their entire app, so I'll just quickly quickfire those. The first thing is that performance is really going to suffer. Because, you know, when you're running a React Native app, it does have a JavaScript engine that uses Hermes under the hood. [00:31:30] +**Mo:** I tend to agree with you. I quickly want to touch on some of the limitations to dissuade people from trying to use this for their entire app, so I'll just quickly quickfire those. The first thing is that performance is really going to suffer. Because, you know, when you're running a React Native app, it does have a JavaScript engine that uses Hermes under the hood. [31:30] -But for this, you're basically instantiating a new JavaScript engine that will run web code, so that can be JSC on iOS and V8 on Android. And that basically slows down your load time quite significantly. And then if you do want to tackle that, you're probably going to have to have some hacky stuff to preload these components, hide them, and then display them. [00:31:48] +But for this, you're basically instantiating a new JavaScript engine that will run web code, so that can be JSC on iOS and V8 on Android. And that basically slows down your load time quite significantly. And then if you do want to tackle that, you're probably going to have to have some hacky stuff to preload these components, hide them, and then display them. [31:48] -It becomes a mess. So you really want to use this when you have no other options, or, you know, You have an escape path long term to basically get rid of these, these webviews. And then the other thing here is you have to be very, very clear as to how you handle your navigation. Because the worst thing for a user experience is having multiple layers of navigation. [00:32:06] +It becomes a mess. So you really want to use this when you have no other options, or, you know, You have an escape path long term to basically get rid of these, these webviews. And then the other thing here is you have to be very, very clear as to how you handle your navigation. Because the worst thing for a user experience is having multiple layers of navigation. [32:06] -So, you know, you have your stacks and your tabs inside of your native app, and then suddenly someone clicks a button inside of the webview, and it just adds a new screen onto your webview. And so you've got like two or three layers of navigation. It gets messy. Be careful, think about it deeply basically use at your own risk and think about the consequences of your actions. [00:32:24] +So, you know, you have your stacks and your tabs inside of your native app, and then suddenly someone clicks a button inside of the webview, and it just adds a new screen onto your webview. And so you've got like two or three layers of navigation. It gets messy. Be careful, think about it deeply basically use at your own risk and think about the consequences of your actions. [32:24] ## [Introducing Workflows: CICD built for your app](https://expo.dev/blog/expo-workflows-automate-your-release-process) -**Mo:** In other things that the Expo team's been launching so Expo launched workflows. This was one of the more surprising things. They hadn't, they kind of kept this under wraps a little bit. But the whole concept with this is so far you know, Expo's got their cloud build tools, EAS build and EAS update. [00:32:38] +**Mo:** In other things that the Expo team's been launching so Expo launched workflows. This was one of the more surprising things. They hadn't, they kind of kept this under wraps a little bit. But the whole concept with this is so far you know, Expo's got their cloud build tools, EAS build and EAS update. [32:38] -So you can use builds to create your mobile native builds. They've got a submit tool. solution as well, which kind of pushes that thing to the App Store for you on Google Play and Apple App Stores. And they also had an update mechanism, which allowed you to issue over the air updates to your users. [00:32:52] +So you can use builds to create your mobile native builds. They've got a submit tool. solution as well, which kind of pushes that thing to the App Store for you on Google Play and Apple App Stores. And they also had an update mechanism, which allowed you to issue over the air updates to your users. [32:52] -Now, this, they never had a workflow or like a proper CICD tool. So you would have to basically almost run your CICD on another cloud or another sort of CICD tool and then call Expose. servers just to trigger the build or trigger the update. So they've kind of created some very basic workflow functionality. [00:33:11] +Now, this, they never had a workflow or like a proper CICD tool. So you would have to basically almost run your CICD on another cloud or another sort of CICD tool and then call Expose. servers just to trigger the build or trigger the update. So they've kind of created some very basic workflow functionality. [33:11] -It's YAML based. You know, you can run bash commands, you can run NPM commands in it. It has some very basic control flows as well. So if you kind of want to get away from, you know, using GitHub actions for your, for your mobile builds and mobile updates, it's a cool option if you don't want to add that as an extra piece that interacts with Expo. [00:33:30] +It's YAML based. You know, you can run bash commands, you can run NPM commands in it. It has some very basic control flows as well. So if you kind of want to get away from, you know, using GitHub actions for your, for your mobile builds and mobile updates, it's a cool option if you don't want to add that as an extra piece that interacts with Expo. [33:30] -It's something to see how they develop and extend over time. [00:33:33] +It's something to see how they develop and extend over time. [33:33] ## [Environment variables in EAS: new changes to simplify setup](https://expo.dev/blog/environment-variables) -**Mo:** other unexpected, but this is incredibly welcome news they have revamped the way that you handle environment variable handling within Expo. Now this is something that has been a real pain. I think it's the place that the Expo team probably struggled the most to come up with a good and comprehensive solution. [00:33:52] +**Mo:** other unexpected, but this is incredibly welcome news they have revamped the way that you handle environment variable handling within Expo. Now this is something that has been a real pain. I think it's the place that the Expo team probably struggled the most to come up with a good and comprehensive solution. [33:52] -Because you've got sort of different layers of environment variables when you're dealing with a mobile app. You have sort of secrets that are stored inside of the app's binary. Then you've got JavaScript based environment variables that anyone can inspect if they go into the JavaScript, so you don't really want to use any secrets or put any secrets within them. [00:34:10] +Because you've got sort of different layers of environment variables when you're dealing with a mobile app. You have sort of secrets that are stored inside of the app's binary. Then you've got JavaScript based environment variables that anyone can inspect if they go into the JavaScript, so you don't really want to use any secrets or put any secrets within them. [34:10] -Then you've got some stuff for your build processes. So there's sort of these like multiple layers of environment variables and they each had different sort of sensitivities or levels of secrecy that you needed to maintain. And so they've centralized all of this in one place. So EAS can kind of manage all of this for you. [00:34:26] +Then you've got some stuff for your build processes. So there's sort of these like multiple layers of environment variables and they each had different sort of sensitivities or levels of secrecy that you needed to maintain. And so they've centralized all of this in one place. So EAS can kind of manage all of this for you. [34:26] -And they've tried to centralize this because environment handle, variable handling in Expo was a nightmare. You had to kind of deal with three different environment variables, like working in a consultancy was one of those things that clients would come to us and be like, why is this so hard? And I would be like, I don't know, there's probably should be a solution. [00:34:43] +And they've tried to centralize this because environment handle, variable handling in Expo was a nightmare. You had to kind of deal with three different environment variables, like working in a consultancy was one of those things that clients would come to us and be like, why is this so hard? And I would be like, I don't know, there's probably should be a solution. [34:43] -One of our clients actually, prior to start a startup, like, like, thought very seriously about starting a startup to solve this problem, and I told them don't, please don't, Expo will probably solve it, and they have. So, it's good. I think it's still to be seen how it bodes in practice, but from first glance, it looks like you kind of define these centralized environments, and they have all of your environment variables in one place managed by Expo, which can make things significantly easier, and you can kind of define the visibility, visibilities as well. [00:35:08] +One of our clients actually, prior to start a startup, like, like, thought very seriously about starting a startup to solve this problem, and I told them don't, please don't, Expo will probably solve it, and they have. So, it's good. I think it's still to be seen how it bodes in practice, but from first glance, it looks like you kind of define these centralized environments, and they have all of your environment variables in one place managed by Expo, which can make things significantly easier, and you can kind of define the visibility, visibilities as well. [35:08] -So this is very welcome, because I think it's. It's kind of long overdue and it's one of those things that was a big pain point. [00:35:13] +So this is very welcome, because I think it's. It's kind of long overdue and it's one of those things that was a big pain point. [35:13] -**Carl:** I love that. It sounds great. Sounds like a real problem that needs, you know, sounds like an improvement, but I have never worked anywhere that did not have some kind of pain with environment variables, including on my like solo projects, like currently the, you know, the main app that I write code for. As a stupid, terrible environment variable setup, because like, you know, it's CICD with GitHub Actions deploying to a Kubernetes cluster. [00:35:41] +**Carl:** I love that. It sounds great. Sounds like a real problem that needs, you know, sounds like an improvement, but I have never worked anywhere that did not have some kind of pain with environment variables, including on my like solo projects, like currently the, you know, the main app that I write code for. As a stupid, terrible environment variable setup, because like, you know, it's CICD with GitHub Actions deploying to a Kubernetes cluster. [35:41] -And so like, I have to take, I can't remember the, I think I put all of the secrets in GitHub. But then they get loaded into GitHub Actions alongside lots of context, build context, that the action provides on its own. And then I have to manually take all of the information that's relevant to the executing code and put that in a secret in Kubernetes and then load that. [00:36:03] +And so like, I have to take, I can't remember the, I think I put all of the secrets in GitHub. But then they get loaded into GitHub Actions alongside lots of context, build context, that the action provides on its own. And then I have to manually take all of the information that's relevant to the executing code and put that in a secret in Kubernetes and then load that. [36:03] -So, like, I'm glad they're trying to improve it. I also just kind of think dealing with secret data is just a hard problem. So, I suspect this may not be the end of it. [00:36:13] +So, like, I'm glad they're trying to improve it. I also just kind of think dealing with secret data is just a hard problem. So, I suspect this may not be the end of it. [36:13] -**Mo:** I don't think it's the end of it. If they make it marginally better, especially, I think, I think it kind of ties hand in hand with their workflows functionality because they needed a, you know, solution to environment variables if they're creating almost a CICD. So, I think it's kind of hand in hand with that, but yeah, the exact same problem, right? [00:36:29] +**Mo:** I don't think it's the end of it. If they make it marginally better, especially, I think, I think it kind of ties hand in hand with their workflows functionality because they needed a, you know, solution to environment variables if they're creating almost a CICD. So, I think it's kind of hand in hand with that, but yeah, the exact same problem, right? [36:29] -Like, even if you, before these workflows, what you had was you had the same environment variables, probably in GitHub, and then you had them replicated somewhere in EAS for your builds, and then somewhere else in your, for your updates. Maybe this removes some of that duplication, so at least your client side secrets. are sort of shared by Expo and managed by Expo. I hear your pain with the Kubernetes and backends, like infrastructure environment variables. I've done the exact same thing with GCP and Terraform and trying to manage those and it's not a, it's not a fun ride. [00:36:58] +Like, even if you, before these workflows, what you had was you had the same environment variables, probably in GitHub, and then you had them replicated somewhere in EAS for your builds, and then somewhere else in your, for your updates. Maybe this removes some of that duplication, so at least your client side secrets. are sort of shared by Expo and managed by Expo. I hear your pain with the Kubernetes and backends, like infrastructure environment variables. I've done the exact same thing with GCP and Terraform and trying to manage those and it's not a, it's not a fun ride. [36:58] -**Carl:** Nope. [00:36:59] +**Carl:** Nope. [36:59] ## [Expo SDK 52](https://expo.dev/changelog/2024/11-12-sdk-52) -**Mo:** Cool, and last but not least, obviously they also released Expo SDK 52. they say that this is their biggest release ever and I kind of believe it because the new architecture is out Cool. So that is a big, big revamp of everything in the internals of React Native, and they obviously manage a massive SDK with a bunch of different libraries. [00:37:16] +**Mo:** Cool, and last but not least, obviously they also released Expo SDK 52. they say that this is their biggest release ever and I kind of believe it because the new architecture is out Cool. So that is a big, big revamp of everything in the internals of React Native, and they obviously manage a massive SDK with a bunch of different libraries. [37:16] -So they've had to make sure all of it is compatible. So far we're hearing about some pains with Expo Go. Some people are having some troubles with Expo Go because it suddenly switched to the new architecture by default. So people are having some upgrades. Issues, but that's to be expected, to be honest, with such a big revamp of the internals and people will need to update their apps. [00:37:35] +So they've had to make sure all of it is compatible. So far we're hearing about some pains with Expo Go. Some people are having some troubles with Expo Go because it suddenly switched to the new architecture by default. So people are having some upgrades. Issues, but that's to be expected, to be honest, with such a big revamp of the internals and people will need to update their apps. [37:35] -Some interesting highlights, just quickly running through these. Expo Video is a new library that's become stable now. So this is a revamp of the old Expo AV library that handled audio and video. They're splitting these out to Expo Video and Expo Audio. And it comes with a whole bunch of cool stuff. [00:37:50] +Some interesting highlights, just quickly running through these. Expo Video is a new library that's become stable now. So this is a revamp of the old Expo AV library that handled audio and video. They're splitting these out to Expo Video and Expo Audio. And it comes with a whole bunch of cool stuff. [37:50] -Like, being able to generate thumbnails, being able to have picture in picture and a whole bunch of other stuff which is, is needed to, to kind of play video in a, in a high quality way in native apps. They've also released a beta of Expo Audio, which is, again, a rewrite, and this is great, and hopefully it just becomes a little bit nicer implementation. [00:38:09] +Like, being able to generate thumbnails, being able to have picture in picture and a whole bunch of other stuff which is, is needed to, to kind of play video in a, in a high quality way in native apps. They've also released a beta of Expo Audio, which is, again, a rewrite, and this is great, and hopefully it just becomes a little bit nicer implementation. [38:09] -And then they're releasing a whole bunch of stuff to their file system libraries, their cameras, and so on and so forth, Expo Images getting some updates. So there's a lot of good things. I'm not going to go through all of them because it is a massive changelog. But go and try it out. DOM Components as well, which we mentioned earlier on, is available with Expo SDK 52. [00:38:25] +And then they're releasing a whole bunch of stuff to their file system libraries, their cameras, and so on and so forth, Expo Images getting some updates. So there's a lot of good things. I'm not going to go through all of them because it is a massive changelog. But go and try it out. DOM Components as well, which we mentioned earlier on, is available with Expo SDK 52. [38:25] -So if you want to play around with those DOM Components and figure out how you can integrate WebViews inside of your existing app with DOM Components, go for it. Expo SDK 52 is the place to try it out. [00:38:36] +So if you want to play around with those DOM Components and figure out how you can integrate WebViews inside of your existing app with DOM Components, go for it. Expo SDK 52 is the place to try it out. [38:36] -**Mark:** Sounds like a pretty big deal. [00:38:38] +**Mark:** Sounds like a pretty big deal. [38:38] -**Mo:** Yep. [00:38:39] +**Mo:** Yep. [38:39] -**Carl:** Maybe one day I'll use Expo. [00:38:41] +**Carl:** Maybe one day I'll use Expo. [38:41] -**Mo:** I'd love to hear your feedback on it, Carl, because it's quite a nice DevEx. I've had people who've, like, have you, you've built for React Native back in the day, right? [00:38:49] +**Mo:** I'd love to hear your feedback on it, Carl, because it's quite a nice DevEx. I've had people who've, like, have you, you've built for React Native back in the day, right? [38:49] -**Carl:** Yes. Short answer, yes. [00:38:51] +**Carl:** Yes. Short answer, yes. [38:51] -**Mo:** it's usually people who have built with React Native or built native apps before, ages ago, and then they come in and try Expo, and they're like, holy crap, this is something. it has that, like, mind blowing effect, so I'd love for you to try it and then come with your feedback. [00:39:04] +**Mo:** it's usually people who have built with React Native or built native apps before, ages ago, and then they come in and try Expo, and they're like, holy crap, this is something. it has that, like, mind blowing effect, so I'd love for you to try it and then come with your feedback. [39:04] -**Carl:** I briefly tried Expo like five years ago, [00:39:08] +**Carl:** I briefly tried Expo like five years ago, [39:08] -**Mo:** Not the same. yeah, they're totally different, totally different, totally different ecosystem. Yeah. [00:39:13] +**Mo:** Not the same. yeah, they're totally different, totally different, totally different ecosystem. Yeah. [39:13] -**Carl:** I remember it had a huge constraint of, it felt a little bit like a create react app in that it did a lot. But if you were building a production app, you were going to have to eject from it sooner or later. And the ejection story sounded pretty rough. [00:39:28] +**Carl:** I remember it had a huge constraint of, it felt a little bit like a create react app in that it did a lot. But if you were building a production app, you were going to have to eject from it sooner or later. And the ejection story sounded pretty rough. [39:28] -**Mo:** yeah, ejection was not a fun time. they had a lot of, I think that was the biggest, like Expo had almost a dip in reputation and it was because of ejecting. And so they, they completely got rid of ejecting. You don't eject anymore. You can add native dependencies as you wish. And it's a totally different mechanism. [00:39:42] +**Mo:** yeah, ejection was not a fun time. they had a lot of, I think that was the biggest, like Expo had almost a dip in reputation and it was because of ejecting. And so they, they completely got rid of ejecting. You don't eject anymore. You can add native dependencies as you wish. And it's a totally different mechanism. [39:42] -So Expo in 2019, 2019. is a very different thing to Expo in 2024. And I'd say they've regained that reputation, which is great. [00:39:52] +So Expo in 2019, 2019. is a very different thing to Expo in 2024. And I'd say they've regained that reputation, which is great. [39:52] -**Carl:** Cool. Sounds good. Yeah. I guess my, perception way back when was like, this feels like create react app, create react app feels like it's dying. This feels like it might die, but here we are five years later and it is totally transformed. Looks really great. This is definitely what I would, you know, were I to try a native app. I got a long list of other things to do. [00:40:10] +**Carl:** Cool. Sounds good. Yeah. I guess my, perception way back when was like, this feels like create react app, create react app feels like it's dying. This feels like it might die, but here we are five years later and it is totally transformed. Looks really great. This is definitely what I would, you know, were I to try a native app. I got a long list of other things to do. [40:10] ## New CSS -**Carl:** Cool. Okay moving on. This is slightly unstructured. [00:40:14] +**Carl:** Cool. Okay moving on. This is slightly unstructured. [40:14] ## [A Friendly Introduction to Container Queries](https://www.joshwcomeau.com/css/container-queries-introduction/) -**Carl:** I'm going to frame this conversation around a Josh Kumo article about a friendly introduction to container queries. I don't think I had heard of container queries, but like, I was reading this was like, holy shit, there is so much new CSS stuff that I, that has just not crossed my radar. [00:40:31] +**Carl:** I'm going to frame this conversation around a Josh Kumo article about a friendly introduction to container queries. I don't think I had heard of container queries, but like, I was reading this was like, holy shit, there is so much new CSS stuff that I, that has just not crossed my radar. [40:31] -So container queries are basically media queries, but for the containing element. So you can say all sorts of things. not super duper sure what the support story looks like for them. that's basically why I checked out of paying close attention to CSS news is because it was so much of it is like Chrome only, or, you know, not supported in Firefox or Safari. [00:40:54] +So container queries are basically media queries, but for the containing element. So you can say all sorts of things. not super duper sure what the support story looks like for them. that's basically why I checked out of paying close attention to CSS news is because it was so much of it is like Chrome only, or, you know, not supported in Firefox or Safari. [40:54] -And so like, stopped paying attention because so many of the things that looked really interesting and neat were not stable. And if a CSS feature is not stable, you can't polyfill it in the same way as JavaScript. Bye. [00:41:05] +And so like, stopped paying attention because so many of the things that looked really interesting and neat were not stable. And if a CSS feature is not stable, you can't polyfill it in the same way as JavaScript. Bye. [41:05] ## [A Framework for Evaluating Browser Support](https://www.joshwcomeau.com/css/browser-support/) -**Mark:** Conveniently on that note, Josh also just put out a post that discusses his approach for looking at browser support for various features, CSS or JavaScript, and sort of like his mental model of, how do I decide when a feature works? Might be good for me to actually use in practice. Of course, like it literally, it basically boils down to it depends, but he walks through kind of the process of how he gets to that and the article actually literally starts out according to can I use container queries are supported for almost 93 percent of users. [00:41:39] +**Mark:** Conveniently on that note, Josh also just put out a post that discusses his approach for looking at browser support for various features, CSS or JavaScript, and sort of like his mental model of, how do I decide when a feature works? Might be good for me to actually use in practice. Of course, like it literally, it basically boils down to it depends, but he walks through kind of the process of how he gets to that and the article actually literally starts out according to can I use container queries are supported for almost 93 percent of users. [41:39] -**Carl:** Right, and I see in the, thumbnail, in the, you know, preview image, is 93 percent good enough? And that was exactly my response to that. So, I don't know. it's a hard thing. [00:41:47] +**Carl:** Right, and I see in the, thumbnail, in the, you know, preview image, is 93 percent good enough? And that was exactly my response to that. So, I don't know. it's a hard thing. [41:47] -so, container queries just caught my eye as like a great Way to do a great enhancement over media queries because media, queries, you can adjust your styling based on, you know, the size of the screen, based on the capabilities of the device, but container queries, it looks like, I don't know the depth of the capabilities, but the most obvious one I'm seeing right here, you know, the first one it shows is, you know, mid width of the containing element and like, that's great. [00:42:18] +so, container queries just caught my eye as like a great Way to do a great enhancement over media queries because media, queries, you can adjust your styling based on, you know, the size of the screen, based on the capabilities of the device, but container queries, it looks like, I don't know the depth of the capabilities, but the most obvious one I'm seeing right here, you know, the first one it shows is, you know, mid width of the containing element and like, that's great. [42:18] -I have had so many responsive. design bugs where, I try to reuse an element in a new context and it's narrower because I wanted to put more elements next to each other or something than I did in the previous one and it looks like with container queries I could Avoid those bugs by saying, if the space this is in is this size, render in this way. Which is a very different, much more powerful method of querying than just the device support. So, yeah, that seems really [00:42:53] +I have had so many responsive. design bugs where, I try to reuse an element in a new context and it's narrower because I wanted to put more elements next to each other or something than I did in the previous one and it looks like with container queries I could Avoid those bugs by saying, if the space this is in is this size, render in this way. Which is a very different, much more powerful method of querying than just the device support. So, yeah, that seems really [42:53] -**Mo:** I'm curious as to when, I think it's still probably in, experimental phase, but I'd love to see when this becomes available for something like Tailwind. [00:43:01] +**Mo:** I'm curious as to when, I think it's still probably in, experimental phase, but I'd love to see when this becomes available for something like Tailwind. [43:01] -**Carl:** Right, and it might, I wonder if it would even be like a breaking change. Because they currently have, you know, SM, MD, different size constraints. Thanks. Thanks. And it feels like they might be able to just modify those to be based on the container. [00:43:16] +**Carl:** Right, and it might, I wonder if it would even be like a breaking change. Because they currently have, you know, SM, MD, different size constraints. Thanks. Thanks. And it feels like they might be able to just modify those to be based on the container. [43:16] -**Mo:** they've done that exact pattern when they like introduced the group functionality. Like, they obviously had like hover, active, focus, or whatever for the different states, and then they just added a group colon active. So I wonder if this becomes like a container dash sm, container dash md, or something like that. [00:43:31] +**Mo:** they've done that exact pattern when they like introduced the group functionality. Like, they obviously had like hover, active, focus, or whatever for the different states, and then they just added a group colon active. So I wonder if this becomes like a container dash sm, container dash md, or something like that. [43:31] -Like, that would be consistent in my mind, at least. [00:43:34] +Like, that would be consistent in my mind, at least. [43:34] -**Mark:** quick Google search says that they put out a first party plug in for container queries back in 2022. And there's something involving an at container wrapper on a parent. [00:43:48] +**Mark:** quick Google search says that they put out a first party plug in for container queries back in 2022. And there's something involving an at container wrapper on a parent. [43:48] ## [State of CSS 2024](https://2024.stateofcss.com/) -**Carl:** I said this is going to be kind of a loosely structured thing, related to this conversation, there was a state of CSS survey, you know, same as state of React, state of JS, whatever, Devographics, Sasha Greif and I was just looking at the list of CSS features and thinking like, wow, I have not used more than half of these. CSS is totally different. And you know, in the introduction to this State of CSS survey shouts out, "let me make a prediction. We'll look back at 2024 as the turning point between CSS classic and new CSS." And that's interesting. I feel I definitely learned and became expert in classic CSS. CSS Classic. [00:44:31] +**Carl:** I said this is going to be kind of a loosely structured thing, related to this conversation, there was a state of CSS survey, you know, same as state of React, state of JS, whatever, Devographics, Sasha Greif and I was just looking at the list of CSS features and thinking like, wow, I have not used more than half of these. CSS is totally different. And you know, in the introduction to this State of CSS survey shouts out, "let me make a prediction. We'll look back at 2024 as the turning point between CSS classic and new CSS." And that's interesting. I feel I definitely learned and became expert in classic CSS. CSS Classic. [44:31] -Describes as like, the build steps and all of that. I had to learn floats and positioning and box model and I feel like none of those things are super relevant anymore. Now it's grid and flex. And so it's just like a whole new set of Primitives that I have not had professional experience using like oh dang cool. Wow shifting landscape know what? I thought was stable land is now totally different just really [00:45:01] +Describes as like, the build steps and all of that. I had to learn floats and positioning and box model and I feel like none of those things are super relevant anymore. Now it's grid and flex. And so it's just like a whole new set of Primitives that I have not had professional experience using like oh dang cool. Wow shifting landscape know what? I thought was stable land is now totally different just really [45:01] -**Mo:** I the one that always, like, that winds me up that I learned about a little while back, that was just like, What? Why does this exist? But it's also very impressive that it exists. Is, like, the mathematical functions that you can use now in, like, CSS for calculating values. Like, power of, square root, logarithms. Like, how do I, what case do I have where I need to, like, calculate a size based off of a logarithm in CSS? Like Cool, I'm glad it exists, but I can never imagine needing to use that. [00:45:30] +**Mo:** I the one that always, like, that winds me up that I learned about a little while back, that was just like, What? Why does this exist? But it's also very impressive that it exists. Is, like, the mathematical functions that you can use now in, like, CSS for calculating values. Like, power of, square root, logarithms. Like, how do I, what case do I have where I need to, like, calculate a size based off of a logarithm in CSS? Like Cool, I'm glad it exists, but I can never imagine needing to use that. [45:30] -**Carl:** we do some funny layout logic and on the Reactiflux website. And yeah, you can do that. the font size is based on the viewport width, for instance. [00:45:41] +**Carl:** we do some funny layout logic and on the Reactiflux website. And yeah, you can do that. the font size is based on the viewport width, for instance. [45:41] -**Mo:** but would you ever use a logarithm based off of that? [00:45:43] +**Mo:** but would you ever use a logarithm based off of that? [45:43] -**Carl:** Hey, maybe if I wanted to, you know, nonlinear scaling, [00:45:46] +**Carl:** Hey, maybe if I wanted to, you know, nonlinear scaling, [45:46] -**Mo:** Yeah, maybe. Anyway, it's quite cool. [00:45:48] +**Mo:** Yeah, maybe. Anyway, it's quite cool. [45:48] -**Carl:** I don't know. Wild. [00:45:49] +**Carl:** I don't know. Wild. [45:49] -**Mark:** big picture metaphor. I think what's come into my mind is that it feels like it's a little bit like the ES 2015 spec where you could do a lot of stuff in JavaScript prior to that. And a lot of stuff in ES2015 was effectively syntax sugar for stuff you could do before. But there were also a number of things in ES2015 that required support at the language runtime level, like proxies, that simply could not be done before and enabled virtualization. [00:46:17] +**Mark:** big picture metaphor. I think what's come into my mind is that it feels like it's a little bit like the ES 2015 spec where you could do a lot of stuff in JavaScript prior to that. And a lot of stuff in ES2015 was effectively syntax sugar for stuff you could do before. But there were also a number of things in ES2015 that required support at the language runtime level, like proxies, that simply could not be done before and enabled virtualization. [46:17] -A whole lot of new functionality from there. So, you know, I, I know that CSS is not like a strictly versioned spec the way that, you know, the JS language is at this point, but I think that's kind of the, the metaphor that we're going for here. [00:46:31] +A whole lot of new functionality from there. So, you know, I, I know that CSS is not like a strictly versioned spec the way that, you know, the JS language is at this point, but I think that's kind of the, the metaphor that we're going for here. [46:31] -**Mo:** yeah. [00:46:32] +**Mo:** yeah. [46:32] -interesting. Complete side note before we move on, but since we started with this, Josh Comeau his website is like one of the most beautifully designed tech websites I've seen. Like, I say this every time I look at it, I'm like, wow, this is beautiful. He's done a phenomenal job with this website. [00:46:47] +interesting. Complete side note before we move on, but since we started with this, Josh Comeau his website is like one of the most beautifully designed tech websites I've seen. Like, I say this every time I look at it, I'm like, wow, this is beautiful. He's done a phenomenal job with this website. [46:47] -**Mark:** Josh is amazingly talented, he is an amazing educator, his blog is wonderful, I can vouch for his courses without having looked at them because I see the care and effort he's put into his blog post. So, highly recommend all of Josh's stuff. [00:47:00] +**Mark:** Josh is amazingly talented, he is an amazing educator, his blog is wonderful, I can vouch for his courses without having looked at them because I see the care and effort he's put into his blog post. So, highly recommend all of Josh's stuff. [47:00] -**Carl:** Very, very true. [00:47:02] +**Carl:** Very, very true. [47:02] ## Framework betas: -**Mark:** Okay, moving on a little more quickly, a couple different frameworks and pieces are in beta. [00:47:08] +**Mark:** Okay, moving on a little more quickly, a couple different frameworks and pieces are in beta. [47:08] ## [RSC in Expo Router is now in Beta!](https://expo.dev/blog/universal-react-server-components-developer-preview) -**Mark:** One is that the Expo router now has support for server components. And Mo can probably talk a little bit more about the actual implementation nuances here, but big picture, it's a big deal because it's server components coming out in any framework other than Next, and more specifically within the React Native ecosystem. [00:47:29] +**Mark:** One is that the Expo router now has support for server components. And Mo can probably talk a little bit more about the actual implementation nuances here, but big picture, it's a big deal because it's server components coming out in any framework other than Next, and more specifically within the React Native ecosystem. [47:29] ## [TanStack Start beta](https://tanstack.com/router/latest/docs/framework/react/start/overview) -**Mark:** And then as sort of an inverse of that, Tanner Linsley's 10 stack start framework is now in beta, and it's a deliberately non server component framework for now. Tanner has said he will look at adding some server component support down the road, but his argument, and he's made BlueSky within the last few days, is that he feels server components are actually of very limited use. [00:47:59] +**Mark:** And then as sort of an inverse of that, Tanner Linsley's 10 stack start framework is now in beta, and it's a deliberately non server component framework for now. Tanner has said he will look at adding some server component support down the road, but his argument, and he's made BlueSky within the last few days, is that he feels server components are actually of very limited use. [47:59] -and really much less flexible compared to a server function concept architecture for managing data. So he did just do a talk about and kind of advertising some of the features at React Summit New York last week. I looked, if you check out the Git Nation website, the video is available for people who have, you know, paid up for the early access to the videos and it'll go public sometime in the next month. [00:48:27] +and really much less flexible compared to a server function concept architecture for managing data. So he did just do a talk about and kind of advertising some of the features at React Summit New York last week. I looked, if you check out the Git Nation website, the video is available for people who have, you know, paid up for the early access to the videos and it'll go public sometime in the next month. [48:27] -**Mo:** Just to quickly touch on the exporouter RSC stuff, So it is very much an experimental at this point, it's beta. You can't even host it on a production server, you need to do it locally, so it just means you're basically testing it out in dev at this point. It was previously just on Evan Bacon's machine, and now it's on, you can have it on your machine, which is quite, quite cool. [00:48:47] +**Mo:** Just to quickly touch on the exporouter RSC stuff, So it is very much an experimental at this point, it's beta. You can't even host it on a production server, you need to do it locally, so it just means you're basically testing it out in dev at this point. It was previously just on Evan Bacon's machine, and now it's on, you can have it on your machine, which is quite, quite cool. [48:47] -But yeah, like the cool thing about RSCs and React Native is that you're rendering native components under the hood. So you almost render native views, native texts, native images, and you almost do a building block of components through an RSC that is then rendered natively, so it's not web views or anything like that. [00:49:03] +But yeah, like the cool thing about RSCs and React Native is that you're rendering native components under the hood. So you almost render native views, native texts, native images, and you almost do a building block of components through an RSC that is then rendered natively, so it's not web views or anything like that. [49:03] -So it's very different to the DOM component stuff that we talked earlier, which makes it very interesting. Still very early days, but we've seen really cool demos of this over the last year at React Conf and beyond. [00:49:14] +So it's very different to the DOM component stuff that we talked earlier, which makes it very interesting. Still very early days, but we've seen really cool demos of this over the last year at React Conf and beyond. [49:14] ## [React Native 0.77 RC0](https://github.com/facebook/react-native/releases/tag/v0.77.0-rc.0) -**Mo:** Picking on the React Native terrain, very quickly, React Native version 0. 77 has had its release candidate, which is very quick after 0. 76. This is a very small release. Expectedly so, after the massive release that was the new architecture becoming default. So, just some quick things. Swift templates for iOS. [00:49:35] +**Mo:** Picking on the React Native terrain, very quickly, React Native version 0. 77 has had its release candidate, which is very quick after 0. 76. This is a very small release. Expectedly so, after the massive release that was the new architecture becoming default. So, just some quick things. Swift templates for iOS. [49:35] -This is taken away from the Objective C base of code in the internals of React Native and making it more Swift based and more modern, which is great. They've done some improvements on tvOS integration, which is great because tvOS has kind of been one of those platforms that's been in the shadows and not well supported. [00:49:52] +This is taken away from the Objective C base of code in the internals of React Native and making it more Swift based and more modern, which is great. They've done some improvements on tvOS integration, which is great because tvOS has kind of been one of those platforms that's been in the shadows and not well supported. [49:52] -And there's some general better performance improvements specifically when dealing with animations. So there's some minor improvements, but nothing super major and not a whole lot of breaking changes. [00:50:02] +And there's some general better performance improvements specifically when dealing with animations. So there's some minor improvements, but nothing super major and not a whole lot of breaking changes. [50:02] ## [New List dropped in React Native](https://x.com/jmeistrich/status/1855663310386958840) -**Mo:** Now, speaking of the new architecture Last month we had the release of the new architecture with 0. 76, and we're already seeing some interesting stuff coming out of it. [00:50:12] +**Mo:** Now, speaking of the new architecture Last month we had the release of the new architecture with 0. 76, and we're already seeing some interesting stuff coming out of it. [50:12] -So, Jay Meistrich, who I've known for a little while now, actually released a completely new list component for React Native called LegendList. So, Jay maintains a few libraries called, like, LegendState, another state management library, and I think LegendMotion, which is an animation library. And he recently Created a new list, and now he, he claims that I inspired him to do this at a talk that I did at React Advanced, which is very flattering, and I think he's giving me way too much credit and I definitely don't deserve that, but basically the, the whole concept is with the new event loop in React Native, you can kind of synchronously call on layout events. [00:50:50] +So, Jay Meistrich, who I've known for a little while now, actually released a completely new list component for React Native called LegendList. So, Jay maintains a few libraries called, like, LegendState, another state management library, and I think LegendMotion, which is an animation library. And he recently Created a new list, and now he, he claims that I inspired him to do this at a talk that I did at React Advanced, which is very flattering, and I think he's giving me way too much credit and I definitely don't deserve that, but basically the, the whole concept is with the new event loop in React Native, you can kind of synchronously call on layout events. [50:50] -Which you previously couldn't with React Native and so this is a JS only implementation as a list and it seemingly, on first glance, outperforms FlashList and the FlatList that comes default with React Native so it may be the quickest list in the React Native ecosystem right now. A lot of people are very, very excited by it. [00:51:08] +Which you previously couldn't with React Native and so this is a JS only implementation as a list and it seemingly, on first glance, outperforms FlashList and the FlatList that comes default with React Native so it may be the quickest list in the React Native ecosystem right now. A lot of people are very, very excited by it. [51:08] -Jay is quite good at performance stuff because he spent a lot of his time as a game developer back in the early 2000s basically. So, he was dealing with a lot of very, very, very low memory and low CPU devices. And I guess he kind of knows this stuff decently well. So it's going to be interesting. [00:51:25] +Jay is quite good at performance stuff because he spent a lot of his time as a game developer back in the early 2000s basically. So, he was dealing with a lot of very, very, very low memory and low CPU devices. And I guess he kind of knows this stuff decently well. So it's going to be interesting. [51:25] -He's released it to public, so you can go and try it out right now. But it's still to be seen. He's adding more and more APIs as we, as we speak. So it's quite interesting. [00:51:33] +He's released it to public, so you can go and try it out right now. But it's still to be seen. He's adding more and more APIs as we, as we speak. So it's quite interesting. [51:33] -**Carl:** Super cool. Mo, I'm going to challenge you on that because if somebody tells you that you were an inspiration, I think you should [00:51:39] +**Carl:** Super cool. Mo, I'm going to challenge you on that because if somebody tells you that you were an inspiration, I think you should [51:39] -**Mark:** Take all the credit. [00:51:41] +**Mark:** Take all the credit. [51:41] -**Mo:** I just did a talk. It was nothing special. [00:51:44] +**Mo:** I just did a talk. It was nothing special. [51:44] -**Carl:** Ah, that's pretty special. [00:51:45] +**Carl:** Ah, that's pretty special. [51:45] ## Twitter -> Bluesky migration -**Mark:** All right, and our, our last big item for this episode is, is not directly tech related, but it is, because React is more than the tech, it's the people in the community, and, you know, we, we spend time talking about conferences, but, you know, we, we get a lot of our links and keep an eye on things from, you know, historically, from Twitter, and Twitter has been where, you know, most of the web dev community has chatted and interacted online for the last several years. [00:52:11] +**Mark:** All right, and our, our last big item for this episode is, is not directly tech related, but it is, because React is more than the tech, it's the people in the community, and, you know, we, we spend time talking about conferences, but, you know, we, we get a lot of our links and keep an eye on things from, you know, historically, from Twitter, and Twitter has been where, you know, most of the web dev community has chatted and interacted online for the last several years. [52:11] -And without going into, you know, some of the, the political or, you know, aspects behind it Twitter has declined a lot in the last couple of years. And there's been various waves of people saying I'm done with Twitter and I'm leaving. And the main alternative that a lot of people had gone with was Mastodon. [00:52:27] +And without going into, you know, some of the, the political or, you know, aspects behind it Twitter has declined a lot in the last couple of years. And there's been various waves of people saying I'm done with Twitter and I'm leaving. And the main alternative that a lot of people had gone with was Mastodon. [52:27] -But Mastodon's always had sort of that, like, I'm a Linux user and I know how to set up everything myself kind of a vibe to it. And there's been an alternative to Twitter called BlueSky, which had been invite only for a while. I believe they opened up to public signups maybe about a year ago. But it always felt very niche. [00:52:48] +But Mastodon's always had sort of that, like, I'm a Linux user and I know how to set up everything myself kind of a vibe to it. And there's been an alternative to Twitter called BlueSky, which had been invite only for a while. I believe they opened up to public signups maybe about a year ago. But it always felt very niche. [52:48] -And really the main thing I knew about it over the last year was that Dan Abramov, after leaving Facebook had gone over there to actually work on their web and native apps as, as his day job. Well, there has been a massive migration of the greater web development tech community from Twitter over to BlueSky really within just the last month. [00:53:13] +And really the main thing I knew about it over the last year was that Dan Abramov, after leaving Facebook had gone over there to actually work on their web and native apps as, as his day job. Well, there has been a massive migration of the greater web development tech community from Twitter over to BlueSky really within just the last month. [53:13] -And I mean, there's, there's been lots of other. Twitter communities that have moved over there black Twitter, football, Twitter, basketball, Twitter, science, Twitter, etc. And feels like, to me, like one, in the earlier era of Twitter where it was people talking rather than just bots or big businesses. And two, the, you know, just the general atmosphere and sort of discussions that are, that are happening. [00:53:43] +And I mean, there's, there's been lots of other. Twitter communities that have moved over there black Twitter, football, Twitter, basketball, Twitter, science, Twitter, etc. And feels like, to me, like one, in the earlier era of Twitter where it was people talking rather than just bots or big businesses. And two, the, you know, just the general atmosphere and sort of discussions that are, that are happening. [53:43] -So, a lot of people from the React community have signed up and started being very active over there. A number of people have specifically deleted their old Twitter accounts. As an example, Seb Markbaga from the React team. I believe actually nuked all his old tweets, and moved over to Blue Sky. I think Dan Abramov's Twitter accounts are, are, are gone at this point. [00:54:09] +So, a lot of people from the React community have signed up and started being very active over there. A number of people have specifically deleted their old Twitter accounts. As an example, Seb Markbaga from the React team. I believe actually nuked all his old tweets, and moved over to Blue Sky. I think Dan Abramov's Twitter accounts are, are, are gone at this point. [54:09] -So a number of people are doing the Scorched Earth thing, and like, wiping out all their old messages, which I'll be honest, as someone who has always depended a lot on, you know, archiving the web and, you know, linking to external discussions makes me sad because I hate to see historical discussions and tweets and artifacts go away. [00:54:33] +So a number of people are doing the Scorched Earth thing, and like, wiping out all their old messages, which I'll be honest, as someone who has always depended a lot on, you know, archiving the web and, you know, linking to external discussions makes me sad because I hate to see historical discussions and tweets and artifacts go away. [54:33] -Having said that, as far as the community goes, I personally am feeling Like Blue Sky is probably where I'm going to put my posting energy going forward. There is, there's a lot of people there. It feels like the community is self sustaining at this point. And it's where a lot of the discussion is happening now. [00:54:54] +Having said that, as far as the community goes, I personally am feeling Like Blue Sky is probably where I'm going to put my posting energy going forward. There is, there's a lot of people there. It feels like the community is self sustaining at this point. And it's where a lot of the discussion is happening now. [54:54] ## Starter packs: [ericclemmons/awesome-starter-packs](https://github.com/ericclemmons/awesome-starter-packs), [stevendborrelli/bluesky-tech-starter-packs](https://github.com/stevendborrelli/bluesky-tech-starter-packs) [Bluesky Directory](https://blueskydirectory.com/) [A complete guide to Bluesky 🦋](https://mackuba.eu/2024/02/21/bluesky-guide/) -**Mark:** One nice thing is that Blue Sky has these things called starter packs, where anyone can just make a list of people they recommend on a certain topic. And it makes it very easy to follow some or all of them. At once. There are directories of starter packs out there. there's a question about whether BlueSky is kind of related to crypto related things. [00:55:13] +**Mark:** One nice thing is that Blue Sky has these things called starter packs, where anyone can just make a list of people they recommend on a certain topic. And it makes it very easy to follow some or all of them. At once. There are directories of starter packs out there. there's a question about whether BlueSky is kind of related to crypto related things. [55:13] ## [Technical debate](https://dustycloud.org/blog/how-decentralized-is-bluesky/) over [how “decentralized”](https://whtwnd.com/bnewbold.net/3lbvbtqrg5t2t) Bluesky actually is -**Mark:** there were a couple good articles talking about some of the technical implementation differences at the server level between Mastodon and BlueSky and like how actually decentralized things are. Loosely put, BlueSky is semi centralized, but it's possible to run your own server and own your own data, somehow. [00:55:38] +**Mark:** there were a couple good articles talking about some of the technical implementation differences at the server level between Mastodon and BlueSky and like how actually decentralized things are. Loosely put, BlueSky is semi centralized, but it's possible to run your own server and own your own data, somehow. [55:38] -So, big picture, a lot of folks who are from the React community are no longer active on Twitter, and they are now active on BlueSky. [00:55:47] +So, big picture, a lot of folks who are from the React community are no longer active on Twitter, and they are now active on BlueSky. [55:47] -**Carl:** Yep, can confirm. Definitely saw a massive shift in the last, like, month. It's been notable. Yeah. Definitely a lot more people posting out there, yeah. [00:55:57] +**Carl:** Yep, can confirm. Definitely saw a massive shift in the last, like, month. It's been notable. Yeah. Definitely a lot more people posting out there, yeah. [55:57] ## [Web Without Walls | React Universe Conf 2024](https://www.youtube.com/watch?v=F1sJW6nTP6E) -**Mo:** because of the crypto question, if you're interested in how the BlueSky backend and like the decentralized nature of BlueSky operates, Dan Abramov did a talk at React Universe Conf about this called Web Without Walls, so I've just shared that and that gives a pretty comprehensive, it is a 40 minute talk, but that gives a pretty long and comprehensive discussion about what the nature, the decentralized nature of BlueSky is. [00:56:22] +**Mo:** because of the crypto question, if you're interested in how the BlueSky backend and like the decentralized nature of BlueSky operates, Dan Abramov did a talk at React Universe Conf about this called Web Without Walls, so I've just shared that and that gives a pretty comprehensive, it is a 40 minute talk, but that gives a pretty long and comprehensive discussion about what the nature, the decentralized nature of BlueSky is. [56:22] -Quickly to add on this, actually, BlueSky is a universal React Native app. So it uses ExpoRouter and it's basically using the same code base for web and mobile, which is quite cool. And you're seeing something in production that's being used by, as we speak, 17, 18 million users now, which is pretty [00:56:40] +Quickly to add on this, actually, BlueSky is a universal React Native app. So it uses ExpoRouter and it's basically using the same code base for web and mobile, which is quite cool. And you're seeing something in production that's being used by, as we speak, 17, 18 million users now, which is pretty [56:40] -**Mark:** They reached over, like, 21 million a couple days ago. okay. So I'm clearly off of the uh, off of the numbers. [00:56:47] +**Mark:** They reached over, like, 21 million a couple days ago. okay. So I'm clearly off of the uh, off of the numbers. [56:47] -There was about a week and a half where they were adding about a million people a day. [00:56:51] +There was about a week and a half where they were adding about a million people a day. [56:51] -**Mo:** React Native London Conf, we actually had the and Sam from the BlueSky team. Dan now works mostly on the AT protocol stuff, but Sam works on the mobile app and the web app. They are talking about it. This was while they were getting a million per day. So it was quite cool to see them there talking about some of the stuff that they're working on. [00:57:06] +**Mo:** React Native London Conf, we actually had the and Sam from the BlueSky team. Dan now works mostly on the AT protocol stuff, but Sam works on the mobile app and the web app. They are talking about it. This was while they were getting a million per day. So it was quite cool to see them there talking about some of the stuff that they're working on. [57:06] -It's a really cool team, and it's a very small team that's building this, which makes it all the more impressive. And it's super cool that they can take on the likes of a certain someone who's multi multi multi billionaire who's trying to create his own community. So, you know, pretty cool. [00:57:20] +It's a really cool team, and it's a very small team that's building this, which makes it all the more impressive. And it's super cool that they can take on the likes of a certain someone who's multi multi multi billionaire who's trying to create his own community. So, you know, pretty cool. [57:20] -**Carl:** Yep, it is super cool. I could probably talk a lot more about it. I have opinions on this. And I've been thinking about the need for data portability and the benefits, the potential benefits of decentralization in the context of social media for most of a decade. I'm actually considering if I want to try and do a business effort based on the underlying data that is BlueSky. [00:57:45] +**Carl:** Yep, it is super cool. I could probably talk a lot more about it. I have opinions on this. And I've been thinking about the need for data portability and the benefits, the potential benefits of decentralization in the context of social media for most of a decade. I'm actually considering if I want to try and do a business effort based on the underlying data that is BlueSky. [57:45] -I think that there's a lot of opportunity to iterate on the UI layer of social media. And if you have a common public data set, that's a lot easier to do. [00:57:53] +I think that there's a lot of opportunity to iterate on the UI layer of social media. And if you have a common public data set, that's a lot easier to do. [57:53] -**Mo:** on that Carl, the current BlueSky app was not the original BlueSky app Which makes it all the more interesting. So Sam created his own BlueSky client It was better than the original BlueSky app because he could use it with the AT protocol And then they just hired him and made Sam So it kind of shows that like, with this decentralized nature, anyone can make a client and sometimes it'll be better. [00:58:14] +**Mo:** on that Carl, the current BlueSky app was not the original BlueSky app Which makes it all the more interesting. So Sam created his own BlueSky client It was better than the original BlueSky app because he could use it with the AT protocol And then they just hired him and made Sam So it kind of shows that like, with this decentralized nature, anyone can make a client and sometimes it'll be better. [58:14] -Kind of like the, what was that Reddit client that was better on, on iOS back in the day, but then Reddit shut it down? I forget [00:58:20] +Kind of like the, what was that Reddit client that was better on, on iOS back in the day, but then Reddit shut it down? I forget [58:20] -the name. [00:58:21] +the name. [58:21] -**Carl:** of them. Apollo? [00:58:22] +**Carl:** of them. Apollo? [58:22] -**Mo:** Well, [00:58:23] +**Mo:** Well, [58:23] -**Mark:** all, all of them, yeah. [00:58:24] +**Mark:** all, all of them, yeah. [58:24] -**Mo:** all of them, but Apollo. So yeah, similar story, but the decentralized nature helps with that. [00:58:29] +**Mo:** all of them, but Apollo. So yeah, similar story, but the decentralized nature helps with that. [58:29] -**Carl:** It does. And also the BlueSky client is both a universal React native app, and it's also open source. So I've seen a bunch of React and web people, like not just posting on BlueSky, but what they're posting is their experiments building, you know, iterate changing the UI of the client they're posting from like, Oh, wouldn't it be great if we had Markdown support in BlueSky? [00:58:51] +**Carl:** It does. And also the BlueSky client is both a universal React native app, and it's also open source. So I've seen a bunch of React and web people, like not just posting on BlueSky, but what they're posting is their experiments building, you know, iterate changing the UI of the client they're posting from like, Oh, wouldn't it be great if we had Markdown support in BlueSky? [58:51] -Look at this proof of concept that just hacked [00:58:52] +Look at this proof of concept that just hacked [58:52] -**Mark:** We're splitting [00:58:53] +**Mark:** We're splitting [58:53] -**Carl:** a PR. [00:58:53] +**Carl:** a PR. [58:53] -**Mark:** the notifications tab into subtabs. [00:58:56] +**Mark:** the notifications tab into subtabs. [58:56] -**Carl:** could talk a lot more about this. We're already 10 minutes over and. Still need to do the lightning round. But yeah, okay, Blue Sky's great. Follow me. [00:59:03] +**Carl:** could talk a lot more about this. We're already 10 minutes over and. Still need to do the lightning round. But yeah, okay, Blue Sky's great. Follow me. [59:03] ## ⚡ Lightning round ⚡ -**Mark:** Alright, lightning round, go! [00:59:06] +**Mark:** Alright, lightning round, go! [59:06] ## [Deno v. Oracle: Canceling the JavaScript Trademark](https://deno.com/blog/deno-v-oracle) -**Carl:** Deno vs. Oracle. We mentioned this a while ago. I think two months ago. Deno opened a petition to ask Oracle to release the JavaScript trademark, and this is a follow up to that. Seems neat. Seems cool. Love it. They are like formally asking Oracle now. It has moved on from just a petition. [00:59:27] +**Carl:** Deno vs. Oracle. We mentioned this a while ago. I think two months ago. Deno opened a petition to ask Oracle to release the JavaScript trademark, and this is a follow up to that. Seems neat. Seems cool. Love it. They are like formally asking Oracle now. It has moved on from just a petition. [59:27] ## [Two ways to the two Reacts](https://bobaekang.com/blog/two-ways-to-the-two-reacts) -**Mark:** Next up, an author named Bobae Kang has written some good articles talking about the mental mindset of React at a very conceptual, architectural level. And has a good post called, The Two Ways to the Two Reacts, which kind of contrasts Next, where everything is about the server first, versus something like a tan stack start, which is client first, and then optionally adding in the server. [00:59:52] +**Mark:** Next up, an author named Bobae Kang has written some good articles talking about the mental mindset of React at a very conceptual, architectural level. And has a good post called, The Two Ways to the Two Reacts, which kind of contrasts Next, where everything is about the server first, versus something like a tan stack start, which is client first, and then optionally adding in the server. [59:52] ## [That's not an abstraction, that's just a layer of indirection](https://fhur.me/posts/2024/thats-not-an-abstraction) -**Carl:** Another one. Great post that I love, called, That's not an abstraction, that's just a layer of indirection. [00:59:59] +**Carl:** Another one. Great post that I love, called, That's not an abstraction, that's just a layer of indirection. [59:59] **Mark:** True that [01:00:00] diff --git a/src/transcripts/tmir-2025-01.md b/src/transcripts/tmir-2025-01.md index 791ba29..1cd2ba5 100644 --- a/src/transcripts/tmir-2025-01.md +++ b/src/transcripts/tmir-2025-01.md @@ -19,76 +19,76 @@ html li p { -- [[00:01:29](#job-market-fred-data-layoffsfyi)] Job market: [FRED data](https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE), [Layoffs.fyi](https://layoffs.fyi/) -- [[00:03:09](#sponsored-by-infinite-red)] [Sponsored by Infinite Red](https://docs.google.com/document/d/1V-wc6YRW7TeKSREPxREI70vfIyA0vVmVbYKr6sU2jZc/edit) -- [[00:04:17](#new-releases)] New releases - - [[00:04:26](#react-query-563)] [React query 5.63](https://bsky.app/profile/tkdodo.eu/post/3lfaeteulds2i) - - [[00:04:45](#docusaurus-37)] [Docusaurus 3.7](https://docusaurus.io/blog/releases/3.7) - - [[00:05:17](#react-native-audio-api)] [React Native Audio API](https://blog.swmansion.com/hello-react-native-audio-api-bb0f10347211) -- [[00:07:30](#main-content)] Main Content - - [[00:07:30](#cra-deprecation-react-team-against-recommending-vite)] [CRA deprecation, React team against recommending Vite](https://bsky.app/profile/acemarke.dev/post/3lggg6pk7g22o) - - [[00:09:28](#dans-why-cra-exists-dont-use-it-possible-future-options-comment-from-2023)] [Dan’s “why CRA exists, don’t use it, possible future options” comment from 2023](https://github.com/reactjs/react.dev/pull/5487#issuecomment-1409720741) +- [[01:29](#job-market-fred-data-layoffsfyi)] Job market: [FRED data](https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE), [Layoffs.fyi](https://layoffs.fyi/) +- [[03:09](#sponsored-by-infinite-red)] [Sponsored by Infinite Red](https://docs.google.com/document/d/1V-wc6YRW7TeKSREPxREI70vfIyA0vVmVbYKr6sU2jZc/edit) +- [[04:17](#new-releases)] New releases + - [[04:26](#react-query-563)] [React query 5.63](https://bsky.app/profile/tkdodo.eu/post/3lfaeteulds2i) + - [[04:45](#docusaurus-37)] [Docusaurus 3.7](https://docusaurus.io/blog/releases/3.7) + - [[05:17](#react-native-audio-api)] [React Native Audio API](https://blog.swmansion.com/hello-react-native-audio-api-bb0f10347211) +- [[07:30](#main-content)] Main Content + - [[07:30](#cra-deprecation-react-team-against-recommending-vite)] [CRA deprecation, React team against recommending Vite](https://bsky.app/profile/acemarke.dev/post/3lggg6pk7g22o) + - [[09:28](#dans-why-cra-exists-dont-use-it-possible-future-options-comment-from-2023)] [Dan’s “why CRA exists, don’t use it, possible future options” comment from 2023](https://github.com/reactjs/react.dev/pull/5487#issuecomment-1409720741) - [Dan: “turn CRA into a launcher” still on the table, but stuck](https://bsky.app/profile/danabra.mov/post/3lggs4ql72k2w) - [“CRA is broken and not deprecated” umbrella issue](https://github.com/facebook/create-react-app/issues/17004) - [Ricky merged the PRs, working on legacy docs SEO redirects](https://github.com/facebook/create-react-app/issues/17004#issuecomment-2620263140) - - [[00:37:46](#revealed-reacts-experimental-animations-api--motion-blog)] [Revealed: React's experimental animations API - Motion Blog](https://motion.dev/blog/reacts-experimental-view-transition-api) - - [[00:37:59](#main-pr)] [Main PR](https://github.com/facebook/react/pull/31975) - - [[00:40:17](#static-hermes-update)] [Static hermes update](https://x.com/tmikov/status/1869945330638442651) - - [[00:42:38](#react-native-hosting-with-eas)] [React Native Hosting with EAS](https://expo.dev/blog/expo-announces-eas-hosting-service) - - [[00:44:44](#everything-you-need-to-know-about-nodejs-type-stripping)] [Everything You Need to Know About Node.js Type Stripping](https://satanacchio.hashnode.dev/everything-you-need-to-know-about-nodejs-type-stripping) - - [[00:47:57](#composable-caching-with-nextjs)] [Composable Caching with Next.js](https://nextjs.org/blog/composable-caching) - - [[00:51:56](#thoughts-on-what-rsc-means-for-spas)] [Thoughts on What RSC Means for SPAs](https://blog.axlight.com/posts/thoughts-on-what-rsc-means-for-spas/) - - [[00:52:44](#chromes-2024-recap-for-devs)] [Chrome's 2024 recap for devs](https://developer.chrome.com/blog/chrome-2024-recap) - - [[00:53:39](#shoutout-webstatusdev)] Shoutout [webstatus.dev](https://webstatus.dev/) -- [[00:54:26](#-lightning-round-)] ⚡ Lightning round ⚡ - - [[00:54:26](#redwoodjs-shutting-down)] Redwood.js 😱 - - [[00:55:59](#a-checklist-for-your-tsconfigjson)] [A checklist for your `tsconfig.json`](https://2ality.com/2025/01/tsconfig-json.html) - - [[00:56:30](#recoil-repo-archived)] [Recoil repo archived](https://x.com/dai_shi/status/1875910305802514649) - - [[00:57:47](#bun-firstclass-support-for-s3)] [Bun: first-class support for s3](https://bsky.app/profile/bun.sh/post/3legdozw3nc2p) - - [[00:58:48](#interpolate-auto-height-for-animations)] [Interpolate `auto` height for animations](https://bsky.app/profile/joshwcomeau.com/post/3lf5zwg2ths22) - - [[00:59:47](#free-javascript-oracle-not-voluntarily-releasing)] [Free javascript; Oracle not voluntarily releasing](https://bsky.app/profile/deno.land/post/3lfapjn7gns2w) + - [[37:46](#revealed-reacts-experimental-animations-api--motion-blog)] [Revealed: React's experimental animations API - Motion Blog](https://motion.dev/blog/reacts-experimental-view-transition-api) + - [[37:59](#main-pr)] [Main PR](https://github.com/facebook/react/pull/31975) + - [[40:17](#static-hermes-update)] [Static hermes update](https://x.com/tmikov/status/1869945330638442651) + - [[42:38](#react-native-hosting-with-eas)] [React Native Hosting with EAS](https://expo.dev/blog/expo-announces-eas-hosting-service) + - [[44:44](#everything-you-need-to-know-about-nodejs-type-stripping)] [Everything You Need to Know About Node.js Type Stripping](https://satanacchio.hashnode.dev/everything-you-need-to-know-about-nodejs-type-stripping) + - [[47:57](#composable-caching-with-nextjs)] [Composable Caching with Next.js](https://nextjs.org/blog/composable-caching) + - [[51:56](#thoughts-on-what-rsc-means-for-spas)] [Thoughts on What RSC Means for SPAs](https://blog.axlight.com/posts/thoughts-on-what-rsc-means-for-spas/) + - [[52:44](#chromes-2024-recap-for-devs)] [Chrome's 2024 recap for devs](https://developer.chrome.com/blog/chrome-2024-recap) + - [[53:39](#shoutout-webstatusdev)] Shoutout [webstatus.dev](https://webstatus.dev/) +- [[54:26](#-lightning-round-)] ⚡ Lightning round ⚡ + - [[54:26](#redwoodjs-shutting-down)] Redwood.js 😱 + - [[55:59](#a-checklist-for-your-tsconfigjson)] [A checklist for your `tsconfig.json`](https://2ality.com/2025/01/tsconfig-json.html) + - [[56:30](#recoil-repo-archived)] [Recoil repo archived](https://x.com/dai_shi/status/1875910305802514649) + - [[57:47](#bun-firstclass-support-for-s3)] [Bun: first-class support for s3](https://bsky.app/profile/bun.sh/post/3legdozw3nc2p) + - [[58:48](#interpolate-auto-height-for-animations)] [Interpolate `auto` height for animations](https://bsky.app/profile/joshwcomeau.com/post/3lf5zwg2ths22) + - [[59:47](#free-javascript-oracle-not-voluntarily-releasing)] [Free javascript; Oracle not voluntarily releasing](https://bsky.app/profile/deno.land/post/3lfapjn7gns2w) - [[01:00:31](#understanding-react-server-components--tony-alicea)] [Understanding React Server Components | Tony Alicea](https://tonyalicea.dev/blog/understanding-react-server-components/) - [[01:02:13](#follow-us-on-bluesky)] [Follow us on Bluesky!](https://bsky.app/profile/tmir.reactiflux.com/post/3lc6ziumnq22p) -**Carl:** Hello! Thank you everyone for joining us for the January edition of This Month in React, where we recap and digest the recent developments in the ever evolving React and web ecosystem. We're coming to you live from Reactiflux. The place for professional React developers. We are supported by Infinite Red, a consultancy that exclusively works with React Native. [00:00:19] +**Carl:** Hello! Thank you everyone for joining us for the January edition of This Month in React, where we recap and digest the recent developments in the ever evolving React and web ecosystem. We're coming to you live from Reactiflux. The place for professional React developers. We are supported by Infinite Red, a consultancy that exclusively works with React Native. [00:19] -I am Carl, I am a staff product developer and freelance community manager here at Reactiflux, where I run community programs like this and Star Helpers and some other stuff, and just generally try to keep the community humming nice and smoothly. [00:00:32] +I am Carl, I am a staff product developer and freelance community manager here at Reactiflux, where I run community programs like this and Star Helpers and some other stuff, and just generally try to keep the community humming nice and smoothly. [00:32] -**Mark:** Hi, I'm Mark. My day job is working at Replay, where we're building a time traveling debugger for JavaScript and other fancy uses of introspecting application behavior. Outside of that, I do Redux, and I apparently argue with people about the right way to use React. [00:00:48] +**Mark:** Hi, I'm Mark. My day job is working at Replay, where we're building a time traveling debugger for JavaScript and other fancy uses of introspecting application behavior. Outside of that, I do Redux, and I apparently argue with people about the right way to use React. [00:48] -**Mo:** And I am Mo. I head the mobile team at Theodo. And I am involved in the React Native ecosystem, where I frequently jet off to some of the different conferences, meeting some lovely folks in the community and help organize the London community with the React Native London Conference and the meetups that we run monthly. [00:01:04] +**Mo:** And I am Mo. I head the mobile team at Theodo. And I am involved in the React Native ecosystem, where I frequently jet off to some of the different conferences, meeting some lovely folks in the community and help organize the London community with the React Native London Conference and the meetups that we run monthly. [01:04] -Yeah, very excited to be here, as every month. [00:01:07] +Yeah, very excited to be here, as every month. [01:07] -**Carl:** Yeah I feel like There has been some stuff, just not like a wide range of libraries and whatever, but yeah, I think we'll definitely find a lot to talk about. Uh, Actually this month, Mark is not only a pundit, but active participant in the ecosystem, [00:01:24] +**Carl:** Yeah I feel like There has been some stuff, just not like a wide range of libraries and whatever, but yeah, I think we'll definitely find a lot to talk about. Uh, Actually this month, Mark is not only a pundit, but active participant in the ecosystem, [01:24] -**Mark:** am making the news. [00:01:26] +**Mark:** am making the news. [01:26] **Carl:** making the news and then reporting on it. Cool. ## Job market: [FRED data](https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE), [Layoffs.fyi](https://layoffs.fyi/) -**Carl:** Yeah, let's start off briefly, overview of the job market tech. Man, you know what? I thought it was like recovering a little bit, but I'm looking at the metrics and like, okay, the FRED data, some Federal Reserve data source, it only shows job postings to Indeed, so like that's a pretty narrow slice. [00:01:50] +**Carl:** Yeah, let's start off briefly, overview of the job market tech. Man, you know what? I thought it was like recovering a little bit, but I'm looking at the metrics and like, okay, the FRED data, some Federal Reserve data source, it only shows job postings to Indeed, so like that's a pretty narrow slice. [01:50] -Who knows what other activity is happening, but like, presumably they're publishing it because they believe it's a reasonable proxy for the broader market. And it keeps going down! It just keeps going down. I don't know, hopefully that's just an indicative of Indeed, like, not being the place where people hire software engineers, which, you know It's probably, likely true? [00:02:09] +Who knows what other activity is happening, but like, presumably they're publishing it because they believe it's a reasonable proxy for the broader market. And it keeps going down! It just keeps going down. I don't know, hopefully that's just an indicative of Indeed, like, not being the place where people hire software engineers, which, you know It's probably, likely true? [02:09] -I don't know. But yeah, it's just lower and lower every month it looks like. It's lower in January than it was in December, and December was lower than November. So, that's not great. Layoffs are also trending down. There's not as many people getting laid off anymore. But there was a bit of a spike in January this month. [00:02:26] +I don't know. But yeah, it's just lower and lower every month it looks like. It's lower in January than it was in December, and December was lower than November. So, that's not great. Layoffs are also trending down. There's not as many people getting laid off anymore. But there was a bit of a spike in January this month. [02:26] -Looks like 5, 200 people were laid off from 20 companies. Yeah, that's fewer companies than December, but like twice as many people, so that sucks. I think a lot of those are coming from a small number of companies. Yeah, Meta laid off 3, 600 employees two weeks ago. So yeah, job market is maybe not gonna be As improving as quickly as I hoped it might from some early indications towards the end of the year and in the first couple weeks of 2025. [00:03:00] +Looks like 5, 200 people were laid off from 20 companies. Yeah, that's fewer companies than December, but like twice as many people, so that sucks. I think a lot of those are coming from a small number of companies. Yeah, Meta laid off 3, 600 employees two weeks ago. So yeah, job market is maybe not gonna be As improving as quickly as I hoped it might from some early indications towards the end of the year and in the first couple weeks of 2025. [03:00] But conferences still don't have a ton of queued up ones. I think people are still getting their ducks in a row with planning and scheduling for 2025. ## Sponsored by [Infinite Red](https://infinite.red) -**Carl:** like I said in the open, we are sponsored by Infinite Red. They are currently our only sponsor. But we don't communicate with them about, like, editorial or anything like that. They gave us some money, and I shot them out. Woo! They are an expert React Native consultancy that's been around since 2015. [00:03:22] +**Carl:** like I said in the open, we are sponsored by Infinite Red. They are currently our only sponsor. But we don't communicate with them about, like, editorial or anything like that. They gave us some money, and I shot them out. Woo! They are an expert React Native consultancy that's been around since 2015. [03:22] -And they're our only sponsor in part because so few companies do as much as they do for the ecosystem. They, put out a newsletter. They host the largest React Native podcast. They run, I think, the largest US based conference. Specifically on React Native and generally they are just like great people who do good work. [00:03:44] +And they're our only sponsor in part because so few companies do as much as they do for the ecosystem. They, put out a newsletter. They host the largest React Native podcast. They run, I think, the largest US based conference. Specifically on React Native and generally they are just like great people who do good work. [03:44] -They have built over 75 apps for companies ranging from startups to the biggest in the world and they generally work with your team to help you develop expertise, not just build the app for you and get out of there. So yeah, if your company is looking at starting up a new React Native project, definitely consider reaching out to them. [00:04:02] +They have built over 75 apps for companies ranging from startups to the biggest in the world and they generally work with your team to help you develop expertise, not just build the app for you and get out of there. So yeah, if your company is looking at starting up a new React Native project, definitely consider reaching out to them. [04:02] -They are infinite. red. [00:04:04] +They are infinite. red. [04:04] -**Mark:** I've met Jamon a couple times and seen some of his discussions online. He's a good guy. [00:04:09] +**Mark:** I've met Jamon a couple times and seen some of his discussions online. He's a good guy. [04:09] **Carl:** I mean, they're our sponsor because I met him at a conference and just sort of chatted idly about what we were doing. He was like, yeah, that sounds good. Let's talk more. great dude. @@ -102,23 +102,23 @@ They are infinite. red. [00:04:04] ## [Docusaurus 3.7](https://docusaurus.io/blog/releases/3.7) -**Carl:** Docusaurus also put out version 3.7, so if you're using that, consider upgrading. Great [00:04:52] +**Carl:** Docusaurus also put out version 3.7, so if you're using that, consider upgrading. Great [04:52] **Mark:** actually updated the Redux Toolkit doc site from DocuSource 2 to DocuSource 3, and it's definitely some improvements. thing I think was in 3.6, previously they've always used Webpack as their build tool. And with 3.6, they introduced an experimental option to use the RS Pack, Webpack re implementation in Rust for faster builds, and it definitely did seem to speed things up, ## [React Native Audio API](https://blog.swmansion.com/hello-react-native-audio-api-bb0f10347211) -**Carl:** Yeah Mo, you want to talk about the React Native Audio API? [00:05:20] +**Carl:** Yeah Mo, you want to talk about the React Native Audio API? [05:20] -**Mo:** so this one is really, Interesting. Because for the longest time, obviously, like, the Web Audio API is incredibly mature. It gives you so much functionality, you can make some really cool stuff with it. So if you're trying to do anything with audio, like, I don't know get information about your audio sources, run it through effects Be able to generate audio graphs, you know, things like showing wave, waveforms and stuff like that. On the React Native side, it's a lot more difficult to achieve similar things because you're dealing with native level APIs, they're not standardized and you may end up having to just write some code yourself to be able to do that on the native layer per platform and to try to achieve similar things. [00:06:07] +**Mo:** so this one is really, Interesting. Because for the longest time, obviously, like, the Web Audio API is incredibly mature. It gives you so much functionality, you can make some really cool stuff with it. So if you're trying to do anything with audio, like, I don't know get information about your audio sources, run it through effects Be able to generate audio graphs, you know, things like showing wave, waveforms and stuff like that. On the React Native side, it's a lot more difficult to achieve similar things because you're dealing with native level APIs, they're not standardized and you may end up having to just write some code yourself to be able to do that on the native layer per platform and to try to achieve similar things. [06:07] -So, the example that is quite common is generating wavelengths. I've tried to generate wavelengths on the client for certain files. Not a very easy task to do, it turns out. So some functionalities like that are just so much easier to do on the web. [00:06:21] +So, the example that is quite common is generating wavelengths. I've tried to generate wavelengths on the client for certain files. Not a very easy task to do, it turns out. So some functionalities like that are just so much easier to do on the web. [06:21] -And so the folks at Software Mansion have recently started building out A React Native audio API, and so the whole idea is, let's try to bring over the Web Audio API, which is incredibly mature, very standardized, and high performance, into the React Native scene, so that you can have the same levels on control and playback as you do on the web, and standardize it. [00:06:46] +And so the folks at Software Mansion have recently started building out A React Native audio API, and so the whole idea is, let's try to bring over the Web Audio API, which is incredibly mature, very standardized, and high performance, into the React Native scene, so that you can have the same levels on control and playback as you do on the web, and standardize it. [06:46] -It fits quite well into the sort of universal app story where you want to standardize around web APIs because they're mature and allow native developers to ingest the same ones but delegate the implementation and the runtime of those APIs onto the native layer. So this is quite cool. It's still early days. [00:07:06] +It fits quite well into the sort of universal app story where you want to standardize around web APIs because they're mature and allow native developers to ingest the same ones but delegate the implementation and the runtime of those APIs onto the native layer. So this is quite cool. It's still early days. [07:06] -And it's, it's not, you know, ready and it doesn't have all the bells and whistles that you have in the web, but it is a very, very good step in the right direction. And so I, I'm super excited to see how this evolves over the next few months and years, I guess. [00:07:21] +And it's, it's not, you know, ready and it doesn't have all the bells and whistles that you have in the web, but it is a very, very good step in the right direction. And so I, I'm super excited to see how this evolves over the next few months and years, I guess. [07:21] ## Main content @@ -126,189 +126,189 @@ And it's, it's not, you know, ready and it doesn't have all the bells and whistl ## [CRA deprecation, React team against recommending Vite](https://bsky.app/profile/acemarke.dev/post/3lggg6pk7g22o) -**Carl:** Mark, you want to start us off talking about Create React App and we we can springboard from there [00:07:37] +**Carl:** Mark, you want to start us off talking about Create React App and we we can springboard from there [07:37] -**Mark:** gladly. So, React 19 came out last month, in the culmination of, couple plus years worth of technical effort from the React team, and we've all been very excited about that huge jump forward for the ecosystem. Thanks But it also had some unexpected technical side effects, and the technical problems have then spiraled into drama. [00:07:57] +**Mark:** gladly. So, React 19 came out last month, in the culmination of, couple plus years worth of technical effort from the React team, and we've all been very excited about that huge jump forward for the ecosystem. Thanks But it also had some unexpected technical side effects, and the technical problems have then spiraled into drama. [07:57] -And I actually happen to be squarely in the middle of that. So I'm going to be describing things, I am both a participant and an observer. And we'll go from there. So Create React App came out in late 2016, early 2017, and it was designed for a couple of purposes. The whole point was make it really easy to start a new React project with a good default build config out of the box with one command. [00:08:23] +And I actually happen to be squarely in the middle of that. So I'm going to be describing things, I am both a participant and an observer. And we'll go from there. So Create React App came out in late 2016, early 2017, and it was designed for a couple of purposes. The whole point was make it really easy to start a new React project with a good default build config out of the box with one command. [08:23] -You know, previously you had to spend a lot of time configuring yourself. And so part of this was to make it easy for beginners to start a new project and be able to focus on trying and learning and using React. And it also, you know, had, you know, was perfectly fine for actual production projects as well. [00:08:42] +You know, previously you had to spend a lot of time configuring yourself. And so part of this was to make it easy for beginners to start a new project and be able to focus on trying and learning and using React. And it also, you know, had, you know, was perfectly fine for actual production projects as well. [08:42] -And so Create React App succeeded wonderfully. It became the default standard, you know, set up for tutorials. Lots of companies used it for actual apps, but over the next few years, you know, other build tools came out, things that were faster than Webpack CRA was having trouble kind of keeping up with, you know, some of the maintenance demands. [00:09:03] +And so Create React App succeeded wonderfully. It became the default standard, you know, set up for tutorials. Lots of companies used it for actual apps, but over the next few years, you know, other build tools came out, things that were faster than Webpack CRA was having trouble kind of keeping up with, you know, some of the maintenance demands. [09:03] -They were very slow, you know, dealing with the, the Webpack upgrade. [00:09:07] +They were very slow, you know, dealing with the, the Webpack upgrade. [09:07] -**Carl:** Right [00:09:07] +**Carl:** Right [09:07] **Mark:** And by like 2022, Create React App was actually kind of basically unmaintained. Now, even though it was in the Facebook GitHub org the last people maintaining it were not even Facebook employees or, or part of the React team. And it basically like a ton of issues had piled up. ## [Dan’s “why CRA exists, don’t use it, possible future options” comment from 2023](https://github.com/reactjs/react.dev/pull/5487#issuecomment-1409720741) -**Mark:** So in, I think it was early 23 Theo Brown put up an issue saying we should mark Create React App as deprecated and we should point people to use Vite instead. That's it. And, you know, he, the issue got, you know, went viral and it collected tons and tons of thumbs ups and eventually Dan Abramov responded and wrote a massive detailed reply saying, saying, here's why Create React App exists. [00:09:55] +**Mark:** So in, I think it was early 23 Theo Brown put up an issue saying we should mark Create React App as deprecated and we should point people to use Vite instead. That's it. And, you know, he, the issue got, you know, went viral and it collected tons and tons of thumbs ups and eventually Dan Abramov responded and wrote a massive detailed reply saying, saying, here's why Create React App exists. [09:55] -We see that the ecosystem has changed. We've also been changing some of our thinking about the right ways to use React. And here's five possible futures for the Create React app tool, ranging from kill it completely to, modernize it, to change the CLI tool to be a multi launcher that would end up pointing to, creating a next app or uh, remix app or something. And that's where things kind of left off. You know, lots of people read that comment. The community just sort of absorbed the knowledge that you're not supposed to use Create React App anymore and everyone asking questions about how should I start a project was told, use something else. But Create React App itself never formally got deprecated. [00:10:40] +We see that the ecosystem has changed. We've also been changing some of our thinking about the right ways to use React. And here's five possible futures for the Create React app tool, ranging from kill it completely to, modernize it, to change the CLI tool to be a multi launcher that would end up pointing to, creating a next app or uh, remix app or something. And that's where things kind of left off. You know, lots of people read that comment. The community just sort of absorbed the knowledge that you're not supposed to use Create React App anymore and everyone asking questions about how should I start a project was told, use something else. But Create React App itself never formally got deprecated. [10:40] -The CLI still ran, nothing changed in the docs, Dan's extensive comment was never turned into actual documentation. And so that brings us forward to, you know, this last month. React 19 came out and Create React App promptly started breaking. The Create React App CLI has always tried to install the latest version of React into whichever template package you specify. [00:11:06] +The CLI still ran, nothing changed in the docs, Dan's extensive comment was never turned into actual documentation. And so that brings us forward to, you know, this last month. React 19 came out and Create React App promptly started breaking. The Create React App CLI has always tried to install the latest version of React into whichever template package you specify. [11:06] -And the templates have some dependencies, including tools for linting and testing. And it turns out that the React Testing Library version had a peer dependency on React 18, and suddenly CRA was trying to install React 19. And since NPM throws errors anytime there's a peer dependency mismatch, what happened was you try to run create react app my app, and it promptly throws errors saying I was told to look for React 18, but there's React 19, these don't match. And so over the last month, I've seen dozens of people file issues or You know, Reddit threads or comments saying, Hey, I'm trying to start a new React project, and it throws an error. And a lot of these people are beginners. And so I was seeing so many of these threads pop up that I began to make a couple comments on social media saying, Hey, like, no one owns Create React App at this point. [00:12:01] +And the templates have some dependencies, including tools for linting and testing. And it turns out that the React Testing Library version had a peer dependency on React 18, and suddenly CRA was trying to install React 19. And since NPM throws errors anytime there's a peer dependency mismatch, what happened was you try to run create react app my app, and it promptly throws errors saying I was told to look for React 18, but there's React 19, these don't match. And so over the last month, I've seen dozens of people file issues or You know, Reddit threads or comments saying, Hey, I'm trying to start a new React project, and it throws an error. And a lot of these people are beginners. And so I was seeing so many of these threads pop up that I began to make a couple comments on social media saying, Hey, like, no one owns Create React App at this point. [12:01] -It's unmaintained. This is bad for the ecosystem. It's bad for beginners who don't know they're not supposed to be using it and are just trying to follow a tutorial. And that's actually part of the problem, is that a lot of older tutorials They'll reference create React app and no one's telling them you should be using something different. [00:12:21] +It's unmaintained. This is bad for the ecosystem. It's bad for beginners who don't know they're not supposed to be using it and are just trying to follow a tutorial. And that's actually part of the problem, is that a lot of older tutorials They'll reference create React app and no one's telling them you should be using something different. [12:21] -And if it breaks, they don't know what their other options are. [00:12:24] +And if it breaks, they don't know what their other options are. [12:24] -**Carl:** the SEO for it is so strong. Like if you're just, if you don't know anything about the ecosystem and it's like, I want to make a new React app, like you search new React app or something like that in Google, [00:12:35] +**Carl:** the SEO for it is so strong. Like if you're just, if you don't know anything about the ecosystem and it's like, I want to make a new React app, like you search new React app or something like that in Google, [12:35] -80 percent odd, you find Create React App. [00:12:38] +80 percent odd, you find Create React App. [12:38] -**Mark:** I literally Googled that, and the, the top hit is the actual CRA docs. The third hit is the legacy React installation page. And like the second hit is the current React installation page. So I started griping about this on social media. And the second or third tweet that I put up about this actually is what really spawned the discussion and drama. [00:13:03] +**Mark:** I literally Googled that, and the, the top hit is the actual CRA docs. The third hit is the legacy React installation page. And like the second hit is the current React installation page. So I started griping about this on social media. And the second or third tweet that I put up about this actually is what really spawned the discussion and drama. [13:03] -So that thread went viral and took off. And a couple members of the React team, Dan and Ricky, began to reply. And Overall, my main goal was, I felt that number one, somebody, aka the React team, that had the right project permissions, should fix the Create React App templates so that it doesn't error when you create a new project. [00:13:26] +So that thread went viral and took off. And a couple members of the React team, Dan and Ricky, began to reply. And Overall, my main goal was, I felt that number one, somebody, aka the React team, that had the right project permissions, should fix the Create React App templates so that it doesn't error when you create a new project. [13:26] -It's still a tool, it should work, it shouldn't break. But, both the CLI tool and the docs should be updated to say, Create React App is deprecated, don't use this anymore. Like, yeah, it'll work, but you shouldn't use this. Thanks. And that they should, you know, hopefully point to like some kind of a migration guide, like here's what you should use instead. that's where we also start to run into other problems. if we point people to the existing new React docs, start a new project page, that's the one that specifically says you should only use React with a framework like Next, Remix, Gatsby of all things, and Expo. And it actually specifically argues against trying to do things yourself. Now, the most direct equivalent to Create React App today is Vite. And Vite works great. And in fact, Vite is being used by millions of React projects. But the React docs don't actually list Vite as a real option. [00:14:30] +It's still a tool, it should work, it shouldn't break. But, both the CLI tool and the docs should be updated to say, Create React App is deprecated, don't use this anymore. Like, yeah, it'll work, but you shouldn't use this. Thanks. And that they should, you know, hopefully point to like some kind of a migration guide, like here's what you should use instead. that's where we also start to run into other problems. if we point people to the existing new React docs, start a new project page, that's the one that specifically says you should only use React with a framework like Next, Remix, Gatsby of all things, and Expo. And it actually specifically argues against trying to do things yourself. Now, the most direct equivalent to Create React App today is Vite. And Vite works great. And in fact, Vite is being used by millions of React projects. But the React docs don't actually list Vite as a real option. [14:30] -They mention it a couple times. And it's buried down in, at the bottom of the React docs. Can I use React without a framework section where they sort of grudgingly say, well, if your project doesn't fit any of these constraints, I guess you can use something like Vite which I'll get, I'll touch on that a bit further later. So to me, the right thing to do to get people off Create React App is to have Vite listed prominently on the setup page because it's the direct equivalent and say, this is good for someone who's beginning or has, you know, just doesn't need all the bells and whistles that come with a framework. [00:15:10] +They mention it a couple times. And it's buried down in, at the bottom of the React docs. Can I use React without a framework section where they sort of grudgingly say, well, if your project doesn't fit any of these constraints, I guess you can use something like Vite which I'll get, I'll touch on that a bit further later. So to me, the right thing to do to get people off Create React App is to have Vite listed prominently on the setup page because it's the direct equivalent and say, this is good for someone who's beginning or has, you know, just doesn't need all the bells and whistles that come with a framework. [15:10] -So that turned into more arguments. The React team still insists that you should only ever use a framework and have generally refused to list Vite in that page. And a lot of other people besides myself find this to be a pretty ridiculous stance. So the good news is after, you know, a lot of debate online this weekend, the React team did say we will update Create React App so it doesn't break. [00:15:35] +So that turned into more arguments. The React team still insists that you should only ever use a framework and have generally refused to list Vite in that page. And a lot of other people besides myself find this to be a pretty ridiculous stance. So the good news is after, you know, a lot of debate online this weekend, the React team did say we will update Create React App so it doesn't break. [15:35] -Mark it is deprecated, and we will do some work to change the SEO on the old docs and the CRA docs to try to point them to the current SEO. Setup page. And so I've, I've seen Ricky doing the work in the PRs on that in the last couple of days. So it's been a lot of frustration and debate. [00:15:53] +Mark it is deprecated, and we will do some work to change the SEO on the old docs and the CRA docs to try to point them to the current SEO. Setup page. And so I've, I've seen Ricky doing the work in the PRs on that in the last couple of days. So it's been a lot of frustration and debate. [15:53] -The good news is the immediate problem appears to be getting solved. Doesn't touch on changing the docs to list Vite as a valid option. And then that ties into all kinds of other general complaints about how the React team runs things. So that's the general state of play. [00:16:12] +The good news is the immediate problem appears to be getting solved. Doesn't touch on changing the docs to list Vite as a valid option. And then that ties into all kinds of other general complaints about how the React team runs things. So that's the general state of play. [16:12] -**Carl:** It does seem like the, this stems a lot of the worst of the bleeding, like, you know, the SEO issue of if you're trying to enter the React ecosystem as a newbie, then those PRs will address the worst of that in that, like, I think they realized that there was like a real legacy issue, legacy docs issue in that like, The SEO for those links are so good that it ranks above the current docs in a lot of cases. [00:16:36] +**Carl:** It does seem like the, this stems a lot of the worst of the bleeding, like, you know, the SEO issue of if you're trying to enter the React ecosystem as a newbie, then those PRs will address the worst of that in that, like, I think they realized that there was like a real legacy issue, legacy docs issue in that like, The SEO for those links are so good that it ranks above the current docs in a lot of cases. [16:36] -So I'm glad to see them looking at ways to manage that SEO, but like, I've also managed documentation sites before and done SEO for them, like it legitimately took six months for those SEO changes to like fully settle down. So it's just going to take a minute for these changes to fully be reflected in search results too. [00:16:57] +So I'm glad to see them looking at ways to manage that SEO, but like, I've also managed documentation sites before and done SEO for them, like it legitimately took six months for those SEO changes to like fully settle down. So it's just going to take a minute for these changes to fully be reflected in search results too. [16:57] -**Mark:** You know, I don't blame them for you know, taking a few weeks for this, you know, Create React App breakage to bubble up. You know, like I said, no one had really been maintaining Create React App through 21 and 22. It's been widely considered deprecated and no one's owning it for the last couple years. [00:17:18] +**Mark:** You know, I don't blame them for you know, taking a few weeks for this, you know, Create React App breakage to bubble up. You know, like I said, no one had really been maintaining Create React App through 21 and 22. It's been widely considered deprecated and no one's owning it for the last couple years. [17:18] -So, You know, no one's really looking over at the repo issues. I saw the issues being filed in the actual React repo and on Reddit and Reactaflux. But I can understand that, like, it wasn't bubbling up and, really catching their attention. So, I'm not upset that it, you know, it took me, you know, raising this issue and pushing it and, kind of stirring up the drama in order to get their attention. [00:17:43] +So, You know, no one's really looking over at the repo issues. I saw the issues being filed in the actual React repo and on Reddit and Reactaflux. But I can understand that, like, it wasn't bubbling up and, really catching their attention. So, I'm not upset that it, you know, it took me, you know, raising this issue and pushing it and, kind of stirring up the drama in order to get their attention. [17:43] -I can also understand that, you know, with React 19 having just come out, like, they're still kind of trying to catch their breath from that. That said, like, obviously I'm overly invested in this because I was the one trying to make the point that it needed to be fixed, but I've spent so much of my time as a maintainer Trying to think about how beginners will, read my documentation or, Trying to make things easy to use or answering questions from beginners And so I, you know, I care deeply about, giving beginners a good, you know, Startup path. [00:18:12] +I can also understand that, you know, with React 19 having just come out, like, they're still kind of trying to catch their breath from that. That said, like, obviously I'm overly invested in this because I was the one trying to make the point that it needed to be fixed, but I've spent so much of my time as a maintainer Trying to think about how beginners will, read my documentation or, Trying to make things easy to use or answering questions from beginners And so I, you know, I care deeply about, giving beginners a good, you know, Startup path. [18:12] -And so it kind of bothers me that, they didn't jump on this as, Oh yeah, this is an obvious problem and we should do something about it right away. [00:18:20] +And so it kind of bothers me that, they didn't jump on this as, Oh yeah, this is an obvious problem and we should do something about it right away. [18:20] -**Carl:** yeah, Dan gave such a long and thoughtful reply, acknowledging the issues, but then, yeah, it's, it sat for two years. [00:18:27] +**Carl:** yeah, Dan gave such a long and thoughtful reply, acknowledging the issues, but then, yeah, it's, it sat for two years. [18:27] -**Mark:** There was kind of like, like I said, kind of the spinoff of the, you know, CRA is broken part is that the insistence on using a framework has become. Such a stubborn ideological stance, and I understand the reasons why the React team feels it's better for people to use a framework, it's coming with all the pieces out of the box, those pieces are pre assembled to, you know, be guaranteed to try to work the right way You know, the React team has kind of shifted gears to where they feel that, you know, server rendering is an important capability, routing is an important capability. [00:19:03] +**Mark:** There was kind of like, like I said, kind of the spinoff of the, you know, CRA is broken part is that the insistence on using a framework has become. Such a stubborn ideological stance, and I understand the reasons why the React team feels it's better for people to use a framework, it's coming with all the pieces out of the box, those pieces are pre assembled to, you know, be guaranteed to try to work the right way You know, the React team has kind of shifted gears to where they feel that, you know, server rendering is an important capability, routing is an important capability. [19:03] -You know, obviously it ties into their vision for React server components, which can only work with a framework for technical reasons. for years I've felt that there is a pretty big disconnect between how the React team thinks that people are using React, And how people actually are using React in practice. [00:19:23] +You know, obviously it ties into their vision for React server components, which can only work with a framework for technical reasons. for years I've felt that there is a pretty big disconnect between how the React team thinks that people are using React, And how people actually are using React in practice. [19:23] -And there's, there's, there's a lot of reasons for this. I experienced it myself with Redux. Like I, I don't even use Redux to build apps anymore. And so I'm, as a maintainer, I'm having to just kind of like take cues from issues people file or, well, a lot of people have asked for this feature. [00:19:39] +And there's, there's, there's a lot of reasons for this. I experienced it myself with Redux. Like I, I don't even use Redux to build apps anymore. And so I'm, as a maintainer, I'm having to just kind of like take cues from issues people file or, well, a lot of people have asked for this feature. [19:39] -I think it's worth it. But it's, it's reactive and I'm sort of over in my corner doing things almost by guessing. So there is always that danger when you spend all your time building a library of not seeing and feeling the way it is to use something in the real world. And, you know, part of the issue is that the way Meta, Facebook uses React, is different from how everyone else does, just because Meta has all their own infrastructure for routing and serving and bundling and everything else. [00:20:08] +I think it's worth it. But it's, it's reactive and I'm sort of over in my corner doing things almost by guessing. So there is always that danger when you spend all your time building a library of not seeing and feeling the way it is to use something in the real world. And, you know, part of the issue is that the way Meta, Facebook uses React, is different from how everyone else does, just because Meta has all their own infrastructure for routing and serving and bundling and everything else. [20:08] -They don't need lots of third party libraries for that. But, given how huge React is, It is at least the job of the maintainers to be aware that it's used in a lot of other ways. And even if you don't necessarily want to focus on all those use cases, you still need to be able to be aware and support that. [00:20:31] +They don't need lots of third party libraries for that. But, given how huge React is, It is at least the job of the maintainers to be aware that it's used in a lot of other ways. And even if you don't necessarily want to focus on all those use cases, you still need to be able to be aware and support that. [20:31] -And a lot of the React team's decisions and statements over the last few years have been basically very focused on we sort of assume that everyone who's using React is using it to build a server rendered, data fetched, routed CRUD app. And we don't really seem to care about any of the other ways people use React. [00:20:53] +And a lot of the React team's decisions and statements over the last few years have been basically very focused on we sort of assume that everyone who's using React is using it to build a server rendered, data fetched, routed CRUD app. And we don't really seem to care about any of the other ways people use React. [20:53] -**Carl:** Yeah, having been paying attention to React since it was like, since relatively shortly after it was open sourced, there has always been a pretty clear, I don't know, like they came at developing React with a philosophy for how to do web development. [00:21:09] +**Carl:** Yeah, having been paying attention to React since it was like, since relatively shortly after it was open sourced, there has always been a pretty clear, I don't know, like they came at developing React with a philosophy for how to do web development. [21:09] -And I think that like over the last 10 years of React, 12 years of React. I think that has borne out more often than it's, there's always been people saying like, What the, what the heck are you doing? Like, this doesn't make any sense, this isn't, how I want to use it, you should be doing this. [00:21:25] +And I think that like over the last 10 years of React, 12 years of React. I think that has borne out more often than it's, there's always been people saying like, What the, what the heck are you doing? Like, this doesn't make any sense, this isn't, how I want to use it, you should be doing this. [21:25] -And I have seen many cases where the naysayers were wrong. I am sympathetic to the, You know what the vibes that are I'm getting from the core team of like, this is our lane. Like, we understand what we're doing here. Like, "you'll understand one day" kind of vibe. but I, I think there are a couple of, I don't know, I guess they, they've always had this ideological stance that they were sort of. [00:21:49] +And I have seen many cases where the naysayers were wrong. I am sympathetic to the, You know what the vibes that are I'm getting from the core team of like, this is our lane. Like, we understand what we're doing here. Like, "you'll understand one day" kind of vibe. but I, I think there are a couple of, I don't know, I guess they, they've always had this ideological stance that they were sort of. [21:49] -Putting out into the world like people talk about react brain and you have to like change the way you think in order to Really effectively develop with react and like coming out of react you have to sort of Drift back into a different way of thinking to use other tools again And I think that's real and I do think that it's One of the great things about React, but I don't know It's uh, we're definitely in a kind of weird spot here where I guess some of the specifics about it have gotten a little bit Divorced from the everyday usage. [00:22:20] +Putting out into the world like people talk about react brain and you have to like change the way you think in order to Really effectively develop with react and like coming out of react you have to sort of Drift back into a different way of thinking to use other tools again And I think that's real and I do think that it's One of the great things about React, but I don't know It's uh, we're definitely in a kind of weird spot here where I guess some of the specifics about it have gotten a little bit Divorced from the everyday usage. [22:20] -Yeah [00:22:20] +Yeah [22:20] -**Mark:** Yeah let me give three reasonably specific anecdotes that kind of tie into this. So, when the new React docs came out a couple years ago that's when they, they really made that shift from, you know, you, you can use create React app, the old React doc said, if you're learning or building a single page app, use CRA. [00:22:42] +**Mark:** Yeah let me give three reasonably specific anecdotes that kind of tie into this. So, when the new React docs came out a couple years ago that's when they, they really made that shift from, you know, you, you can use create React app, the old React doc said, if you're learning or building a single page app, use CRA. [22:42] -If you need server rendering, use Next. If it's a static site, use Gatsby. The new doc site, when it came out, said, use a framework. Next, Remix, Expo. And then it had the Can I use React without a framework section with five paragraphs of explaining why they think it's a bad idea. And the original screen at the end of it was, if you feel you need to do something else go ahead, we can't stop you. Now they've said they didn't mean that to be sarcastic, But everybody I've talked to have said, like, that is just like the most passive aggressive, insulting way to phrase it. And it took over a year for them to finally rewrite that paragraph to take out the passive aggressiveness. [00:23:27] +If you need server rendering, use Next. If it's a static site, use Gatsby. The new doc site, when it came out, said, use a framework. Next, Remix, Expo. And then it had the Can I use React without a framework section with five paragraphs of explaining why they think it's a bad idea. And the original screen at the end of it was, if you feel you need to do something else go ahead, we can't stop you. Now they've said they didn't mean that to be sarcastic, But everybody I've talked to have said, like, that is just like the most passive aggressive, insulting way to phrase it. And it took over a year for them to finally rewrite that paragraph to take out the passive aggressiveness. [23:27] -And, like, that is not a good way to treat your user base. Especially when using React without a framework had been the default way to do it. And it's what you were recommending in your docs up until you flipped the switch on the new ones. Second example, so the suspense gate thing last year, you know, the React team had made a code change to alter how nested suspense components in as siblings would load from in, in parallel to in sequence. [00:23:58] +And, like, that is not a good way to treat your user base. Especially when using React without a framework had been the default way to do it. And it's what you were recommending in your docs up until you flipped the switch on the new ones. Second example, so the suspense gate thing last year, you know, the React team had made a code change to alter how nested suspense components in as siblings would load from in, in parallel to in sequence. [23:58] -and you know, they had a good reason to make a change. You know, they were trying to make facebook. com a little bit faster and I'm not expecting them to have gone out and like, you know, run hundreds of example apps just to see if this might alter anything. But it Later on, in some of the discussions, they were saying, Well, I mean, you really shouldn't even be doing this pattern anyway. [00:24:18] +and you know, they had a good reason to make a change. You know, they were trying to make facebook. com a little bit faster and I'm not expecting them to have gone out and like, you know, run hundreds of example apps just to see if this might alter anything. But it Later on, in some of the discussions, they were saying, Well, I mean, you really shouldn't even be doing this pattern anyway. [24:18] -Like, if you want good perf, you should always be hoisting your data fetching up to a route or a page for best performance. Which, okay, like, it's a valid thing to do to improve perf, but it turns out that, like, React 3 Fiber people were using suspense to load 3D assets. And it's still a va and like, even ignoring that, nested suspense is a valid thing to do. [00:24:44] +Like, if you want good perf, you should always be hoisting your data fetching up to a route or a page for best performance. Which, okay, like, it's a valid thing to do to improve perf, but it turns out that, like, React 3 Fiber people were using suspense to load 3D assets. And it's still a va and like, even ignoring that, nested suspense is a valid thing to do. [24:44] -So, it's a, you know, second example of, well, we, we really assume that you're gonna be doing things this one way that we recommend, and Not really following through of, but are there other people doing things a different way? And as a last example I even just ran some quick searches on GitHub in the last couple days, just querying for package.json [00:25:05] +So, it's a, you know, second example of, well, we, we really assume that you're gonna be doing things this one way that we recommend, and Not really following through of, but are there other people doing things a different way? And as a last example I even just ran some quick searches on GitHub in the last couple days, just querying for package.json [25:05] -files that reference either Next, the Vite React plugin, or the React scripts package from create react app. And it's, it's napkin math, I think it might have actually been, like, CRA was 1.9, Vite was 1.1, and Next was 1.5. And so, mathematically, that means that there's 3 million projects that are You know, a basic single page app, and only one and a half million projects that are on Next. So the single page apps actually outweigh Next by two to one. [00:25:38] +files that reference either Next, the Vite React plugin, or the React scripts package from create react app. And it's, it's napkin math, I think it might have actually been, like, CRA was 1.9, Vite was 1.1, and Next was 1.5. And so, mathematically, that means that there's 3 million projects that are You know, a basic single page app, and only one and a half million projects that are on Next. So the single page apps actually outweigh Next by two to one. [25:38] -And yet, the React docs don't even list Vite fairly compared to the other options. So it feels like they're cutting out an awful lot of the ecosystem compared to how people actually use it. [00:25:50] +And yet, the React docs don't even list Vite fairly compared to the other options. So it feels like they're cutting out an awful lot of the ecosystem compared to how people actually use it. [25:50] -**Carl:** Right, right. And like the, the recommendations they make around like best practices for performance and like whatever around loading and how to use suspense. Like, those are great. That's true. I don't disagree with it, but I also like most of my projects are like solo things. Or, you know, I'm collaborating with like one or two other people. [00:26:10] +**Carl:** Right, right. And like the, the recommendations they make around like best practices for performance and like whatever around loading and how to use suspense. Like, those are great. That's true. I don't disagree with it, but I also like most of my projects are like solo things. Or, you know, I'm collaborating with like one or two other people. [26:10] -And I'll skip a lot of that a lot of the time just because it introduces complexity. Like it's, it's an extra couple of days of like introducing scaffolding and, piping data around. And like then, especially when I'm just like iterating and exploring and I don't really know if I'm even following the right path yet. [00:26:28] +And I'll skip a lot of that a lot of the time just because it introduces complexity. Like it's, it's an extra couple of days of like introducing scaffolding and, piping data around. And like then, especially when I'm just like iterating and exploring and I don't really know if I'm even following the right path yet. [26:28] -Like, I don't, I don't want to do that yet. I'll do it later once I know it's good, and I do want to care about performance, but that to say that like, I think a lot of development ignores those best practices because it is, because ignoring it is the right trade off for that bit of work, you know, the available, you know, it If you end up not shipping because you tried to follow all the best practices and blew out your budget for time or money or, you know, motivation from your contributors, then like, that's not great either. [00:27:00] +Like, I don't, I don't want to do that yet. I'll do it later once I know it's good, and I do want to care about performance, but that to say that like, I think a lot of development ignores those best practices because it is, because ignoring it is the right trade off for that bit of work, you know, the available, you know, it If you end up not shipping because you tried to follow all the best practices and blew out your budget for time or money or, you know, motivation from your contributors, then like, that's not great either. [27:00] -Yeah. [00:27:01] +Yeah. [27:01] -**Mark:** So, in general I've seen a lot of frustrations about how, you know, the communications has been handled, about the React team's resistance to, you know, just adding a couple paragraphs in a header to one docs page. And I have a lot of thoughts about it that I'm working on writing a blog post on that will hopefully come out in the near future. [00:27:19] +**Mark:** So, in general I've seen a lot of frustrations about how, you know, the communications has been handled, about the React team's resistance to, you know, just adding a couple paragraphs in a header to one docs page. And I have a lot of thoughts about it that I'm working on writing a blog post on that will hopefully come out in the near future. [27:19] -But that's, that's been a pain point for myself, for a number of other prominent figures in the React community that I've talked to, and for a lot of other people that I've talked to as well. [00:27:31] +But that's, that's been a pain point for myself, for a number of other prominent figures in the React community that I've talked to, and for a lot of other people that I've talked to as well. [27:31] -**Carl:** Well, so maybe, maybe let's try and bring it back. what do you think good relations from the core team to the ecosystem might look like over the next year? Like, just blank slate, what is, what does a good, I don't know, comms program look like? [00:27:48] +**Carl:** Well, so maybe, maybe let's try and bring it back. what do you think good relations from the core team to the ecosystem might look like over the next year? Like, just blank slate, what is, what does a good, I don't know, comms program look like? [27:48] -**Mark:** Yeah, so, I've actually, you know, mentioned this in a couple of my tweets, if I could magic wand things, we've fixed the CRA brokenness, that's great, we're marking as deprecated, great. You know, for CRA specifically, I would get the docs updated, so the CRA docs have migration guides, and they point to the setup page. [00:28:07] +**Mark:** Yeah, so, I've actually, you know, mentioned this in a couple of my tweets, if I could magic wand things, we've fixed the CRA brokenness, that's great, we're marking as deprecated, great. You know, for CRA specifically, I would get the docs updated, so the CRA docs have migration guides, and they point to the setup page. [28:07] -And the setup page lists Vite as both a learning tool and a, if you just want a simple project. Because that both handles the, I'm a beginner, I just want to start a new project so I can write some components and learn aspect. But it also recognizes the breadth of ways that React is actually used. [00:28:28] +And the setup page lists Vite as both a learning tool and a, if you just want a simple project. Because that both handles the, I'm a beginner, I just want to start a new project so I can write some components and learn aspect. But it also recognizes the breadth of ways that React is actually used. [28:28] -In practice, whether it's, I'm spinning up just a little sample project or, you know, an enterprise that has like a Python or Java backend and can't even run Node on their server. But just like, we're not even giving you details, we're just saying here's a valid way to do it and here's a pointer to where to go. [00:28:45] +In practice, whether it's, I'm spinning up just a little sample project or, you know, an enterprise that has like a Python or Java backend and can't even run Node on their server. But just like, we're not even giving you details, we're just saying here's a valid way to do it and here's a pointer to where to go. [28:45] -Another thing that the React team has struggled with is general public updates on where they're going. And there's a lot of reasons for this. The React team has historically not had, a real full time paid devrel person. Historically, Dan Abramov did a lot of that work in an unofficial sense. [00:29:04] +Another thing that the React team has struggled with is general public updates on where they're going. And there's a lot of reasons for this. The React team has historically not had, a real full time paid devrel person. Historically, Dan Abramov did a lot of that work in an unofficial sense. [29:04] -Like, he was the public face of the React team, but it's just because he spent all his time answering questions on his, of his own volition. they've hired a couple devrels or announced that they had a devrel a couple times, and then those people always seem to just sort of and not really do anything within a couple months. I think Matt Carroll has been in that position for a while, but in all honesty, I couldn't tell you much of what he's done. I know I've seen some people say they've had conversations with him, [00:29:36] +Like, he was the public face of the React team, but it's just because he spent all his time answering questions on his, of his own volition. they've hired a couple devrels or announced that they had a devrel a couple times, and then those people always seem to just sort of and not really do anything within a couple months. I think Matt Carroll has been in that position for a while, but in all honesty, I couldn't tell you much of what he's done. I know I've seen some people say they've had conversations with him, [29:36] -**Carl:** I do know he put a lot of energy into the, into React Conf last year. But obviously a conference is not a like complete developer relations strategy, I don't know. But yeah, just to say, I do know that was a big effort. [00:29:48] +**Carl:** I do know he put a lot of energy into the, into React Conf last year. But obviously a conference is not a like complete developer relations strategy, I don't know. But yeah, just to say, I do know that was a big effort. [29:48] -**Mark:** And especially since, you know, Dan shifted over and both left Twitter publicly and actually started working at Blue Sky. It generally feels like there's no one from the React team who is actively reaching out and looking to be involved in conversations. [00:30:06] +**Mark:** And especially since, you know, Dan shifted over and both left Twitter publicly and actually started working at Blue Sky. It generally feels like there's no one from the React team who is actively reaching out and looking to be involved in conversations. [30:06] -flip side of this is that a lot of that has come from Vercel and Next. [00:30:12] +flip side of this is that a lot of that has come from Vercel and Next. [30:12] -You know, Lee Robinson has been incredibly active in terms of actually looking for discussion threads around Next. And popping in, but also the Vercel dev rels have written some really good content explaining things like how, you know, how does, you know, suspense or concurrent rendering work and, you know, how to use some of the new React 19 features. [00:30:35] +You know, Lee Robinson has been incredibly active in terms of actually looking for discussion threads around Next. And popping in, but also the Vercel dev rels have written some really good content explaining things like how, you know, how does, you know, suspense or concurrent rendering work and, you know, how to use some of the new React 19 features. [30:35] -And some of that is in the next documentation and it's not at all in the core React docs. Some of it's on the Vercel or Next blogs and it's not in the core docs. Thanks. And frankly, a lot of that information feels like it should be in the core docs. Like, you know, the core docs describe the use server and use client directives. [00:30:59] +And some of that is in the next documentation and it's not at all in the core React docs. Some of it's on the Vercel or Next blogs and it's not in the core docs. Thanks. And frankly, a lot of that information feels like it should be in the core docs. Like, you know, the core docs describe the use server and use client directives. [30:59] -And they, they talk about some of where and, and when to use it, but they don't have any information on what are server components, how do they fit into the React architecture conceptually, when and why would I want to use server components in general? And so that, that feels like a documentation gap there. [00:31:21] +And they, they talk about some of where and, and when to use it, but they don't have any information on what are server components, how do they fit into the React architecture conceptually, when and why would I want to use server components in general? And so that, that feels like a documentation gap there. [31:21] -**Carl:** Yeah. [00:31:24] +**Carl:** Yeah. [31:24] -**Mark:** docs are wonderful. Dan poured his heart and soul into this tutorial. It is excellently crafted, comprehensive. In page sandboxes, all kinds of other things, it's great, but if you were to follow the tutorial linearly, you get past the couple of, like, nah, never use useEffect pages, then it just sort of ends. [00:31:47] +**Mark:** docs are wonderful. Dan poured his heart and soul into this tutorial. It is excellently crafted, comprehensive. In page sandboxes, all kinds of other things, it's great, but if you were to follow the tutorial linearly, you get past the couple of, like, nah, never use useEffect pages, then it just sort of ends. [31:47] -And there's no direction on how to take this sort of theoretical knowledge of I'm writing some components in these sandboxes, and How to actually apply that to starting a real project. So like at a minimum I'd like to see a page at the end that says, Okay, you've finished the tutorial, great. Here are some active next steps. [00:32:08] +And there's no direction on how to take this sort of theoretical knowledge of I'm writing some components in these sandboxes, and How to actually apply that to starting a real project. So like at a minimum I'd like to see a page at the end that says, Okay, you've finished the tutorial, great. Here are some active next steps. [32:08] -Here's how you can start a project. And by the way, if you're like using Next or Vite or Remix. Here's how you would write components in the file structure in those actually give people a pathway. And then the last thing I'm, I guess, one other thing I'd like to see is more active communication on the blog. [00:32:28] +Here's how you can start a project. And by the way, if you're like using Next or Vite or Remix. Here's how you would write components in the file structure in those actually give people a pathway. And then the last thing I'm, I guess, one other thing I'd like to see is more active communication on the blog. [32:28] -Historically, they've done announcement posts for big releases. And then they basically do like one. What we're working on post a year. That's about it. I realize that they, you know, they do a lot of prototyping. They're very reluctant to, you know, give early details on prototypes because everyone gets overexcited about them. [00:32:51] +Historically, they've done announcement posts for big releases. And then they basically do like one. What we're working on post a year. That's about it. I realize that they, you know, they do a lot of prototyping. They're very reluctant to, you know, give early details on prototypes because everyone gets overexcited about them. [32:51] -And, You know, also this goes back to the, you know, the lack of a formal devrel person to have the capacity to do the writing. But, you know, even, and just, you know, some more frequent updates on what direction we're headed, or the kinds of things we're experimenting with. Even if you have to plaster it with, with very loud, this is a proof of concept. [00:33:11] +And, You know, also this goes back to the, you know, the lack of a formal devrel person to have the capacity to do the writing. But, you know, even, and just, you know, some more frequent updates on what direction we're headed, or the kinds of things we're experimenting with. Even if you have to plaster it with, with very loud, this is a proof of concept. [33:11] -Labels you know, the idea of using the TC39 stages as descriptions of how far along things are has been kicked around a few times. But you just, some sense of like, what is the roadmap and where are we actually going would be nice. [00:33:28] +Labels you know, the idea of using the TC39 stages as descriptions of how far along things are has been kicked around a few times. But you just, some sense of like, what is the roadmap and where are we actually going would be nice. [33:28] -**Carl:** Or like, heck, like you said, there's lots of great blog posts that people like Lee Robb or other, you know, Next and Vercel people are putting out. Like, just reposting those to the official blog would probably be pretty good. [00:33:41] +**Carl:** Or like, heck, like you said, there's lots of great blog posts that people like Lee Robb or other, you know, Next and Vercel people are putting out. Like, just reposting those to the official blog would probably be pretty good. [33:41] -**Mark:** another one that I saw was the uh, I think, Some of the, you know, the team folks did a lot of great work in fleshing out the API references in the docs. And the only indication that anything had changed was they made a post in the discussions section of a, of a working group repo. No one is reading that. [00:34:03] +**Mark:** another one that I saw was the uh, I think, Some of the, you know, the team folks did a lot of great work in fleshing out the API references in the docs. And the only indication that anything had changed was they made a post in the discussions section of a, of a working group repo. No one is reading that. [34:03] -Put up a blog post saying, Hey, we added five new docs pages covering these topics. Like that is a thing worth announcing. [00:34:10] +Put up a blog post saying, Hey, we added five new docs pages covering these topics. Like that is a thing worth announcing. [34:10] -**Carl:** Absolutely, 100%. Yeah. Well, one other thing I want to chime in on. On the documentation side of things too, I just saw, I just caught some discussion from people looking to make their own frameworks, were expressing frustration, like, you know, they were reading the docs and it says like, this is best left to the framework authors, and they're like, that's me! [00:34:30] +**Carl:** Absolutely, 100%. Yeah. Well, one other thing I want to chime in on. On the documentation side of things too, I just saw, I just caught some discussion from people looking to make their own frameworks, were expressing frustration, like, you know, they were reading the docs and it says like, this is best left to the framework authors, and they're like, that's me! [34:30] -How do I do this? yeah, [00:34:32] +How do I do this? yeah, [34:32] -**Mark:** or library authors. Yeah. [00:34:34] +**Mark:** or library authors. Yeah. [34:34] -**Carl:** right, and you know, then I'm seeing people talk about like, oh yeah, I was, I, I spent a week, three weeks, months reverse engineering this and understanding it so that I could write something on top of it, and it's like, yeah, you know what, that's, that's a pretty big documentation gap if like a half dozen people are all reverse engineering stuff in order to do what is being advised, you know, they're trying to own it, [00:34:58] +**Carl:** right, and you know, then I'm seeing people talk about like, oh yeah, I was, I, I spent a week, three weeks, months reverse engineering this and understanding it so that I could write something on top of it, and it's like, yeah, you know what, that's, that's a pretty big documentation gap if like a half dozen people are all reverse engineering stuff in order to do what is being advised, you know, they're trying to own it, [34:58] -**Mark:** seen a couple framework author kind of behind the scenes discussion groups and there, there is chatter back and forth and asking questions, but I mean, again, like a lot of that stuff would have been nice to see covered in public documentation in the first place. [00:35:15] +**Mark:** seen a couple framework author kind of behind the scenes discussion groups and there, there is chatter back and forth and asking questions, but I mean, again, like a lot of that stuff would have been nice to see covered in public documentation in the first place. [35:15] -**Carl:** I guess maybe, maybe to close this discussion out, this is all like refinement. Like, I also want to highlight that as far as frameworks for building web applications, The React documentation is absolutely world class, and like, you compare it to its peers in the, you know, ecosystem, and like, both what it's trying to do and how well it communicates it to someone trying to learn is actually quite good. [00:35:45] +**Carl:** I guess maybe, maybe to close this discussion out, this is all like refinement. Like, I also want to highlight that as far as frameworks for building web applications, The React documentation is absolutely world class, and like, you compare it to its peers in the, you know, ecosystem, and like, both what it's trying to do and how well it communicates it to someone trying to learn is actually quite good. [35:45] -in my opinion, like, I, I think that there are many things that it does really, really, really effectively, and As, you know, pundits opining, we're seeking out the rough edges to focus on. I do just want to bring that in. [00:35:59] +in my opinion, like, I, I think that there are many things that it does really, really, really effectively, and As, you know, pundits opining, we're seeking out the rough edges to focus on. I do just want to bring that in. [35:59] -**Mark:** I have huge respect for the React team. I have a very good understanding of the constraints that they deal with, both from having watched and talked to And then, you know, as a, as a maintainer of a widely used library myself, I, I totally understand, like, I just don't have time to sit down and document this. [00:36:15] +**Mark:** I have huge respect for the React team. I have a very good understanding of the constraints that they deal with, both from having watched and talked to And then, you know, as a, as a maintainer of a widely used library myself, I, I totally understand, like, I just don't have time to sit down and document this. [36:15] -it's both the, the success that they've had, And the work that they've put in that makes a lot of these gaps and pain points all the more frustrating. And so it's not that they're doing a bad job. It's that the pain points really stand out. [00:36:32] +it's both the, the success that they've had, And the work that they've put in that makes a lot of these gaps and pain points all the more frustrating. And so it's not that they're doing a bad job. It's that the pain points really stand out. [36:32] -And a lot of them feel like self inflicted wounds that could have been addressed fairly simply. [00:36:37] +And a lot of them feel like self inflicted wounds that could have been addressed fairly simply. [36:37] -**Carl:** And, perhaps, because it has had such a vibrant, thriving ecosystem for so long, and so many phenomenal, wonderful, generous, talented individuals who are filling some of these gaps, Like, now that the momentum, now that some of the heat has gone out, like, you know, there was a, there was probably a five year span where a lot of the hype in tech was focused on React and now, you know, then there was like a kind of like, ooh, should we focus on Web 3? [00:37:08] +**Carl:** And, perhaps, because it has had such a vibrant, thriving ecosystem for so long, and so many phenomenal, wonderful, generous, talented individuals who are filling some of these gaps, Like, now that the momentum, now that some of the heat has gone out, like, you know, there was a, there was probably a five year span where a lot of the hype in tech was focused on React and now, you know, then there was like a kind of like, ooh, should we focus on Web 3? [37:08] -Like, ooh, is blockchain interesting? And there's like, no, no, no, actually, no. And now, like, that, that laser has Fully focused away from tech like React and more onto AI things. So I think that a lot of those individuals who were driven and talented and motivated and ended up filling those gaps are now doing other things. [00:37:27] +Like, ooh, is blockchain interesting? And there's like, no, no, no, actually, no. And now, like, that, that laser has Fully focused away from tech like React and more onto AI things. So I think that a lot of those individuals who were driven and talented and motivated and ended up filling those gaps are now doing other things. [37:27] -makes sense and it's fair, but it means that those gaps are not getting filled anymore. [00:37:31] +makes sense and it's fair, but it means that those gaps are not getting filled anymore. [37:31] -**Mark:** I have a lot more thoughts on this topic. I will not go through them here. However, I am planning to put up a very, very, very long blog post explaining a lot of this stuff hopefully within the next few days. [00:37:43] +**Mark:** I have a lot more thoughts on this topic. I will not go through them here. However, I am planning to put up a very, very, very long blog post explaining a lot of this stuff hopefully within the next few days. [37:43] **Carl:** I've read half of it. It's good. Okay. Moving on. @@ -318,192 +318,192 @@ makes sense and it's fair, but it means that those gaps are not getting filled a ## [Main PR](https://github.com/facebook/react/pull/31975) -**Carl:** Uh, It's currently unstable. It looks like it's going to be a view transition component that also comes with a little bit of ceremony around how to set state in order to make the transition aware that a change happened. [00:38:12] +**Carl:** Uh, It's currently unstable. It looks like it's going to be a view transition component that also comes with a little bit of ceremony around how to set state in order to make the transition aware that a change happened. [38:12] -But seems cool. I don't know if view transitions look great. And being able to easily tap into them when you're doing your react logic. Definitely here for that. Looks great. [00:38:23] +But seems cool. I don't know if view transitions look great. And being able to easily tap into them when you're doing your react logic. Definitely here for that. Looks great. [38:23] -**Mark:** I still don't even know exactly what view transitions even are. I've been too occupied to have a chance to read about or learn them. Having said that, this also does feel like kind of a big deal. People have been griping about the lack of real animation support in React itself for years. There's been lots of, you know, community packages, Motion and React Transition Group, and A whole bunch of other things. [00:38:48] +**Mark:** I still don't even know exactly what view transitions even are. I've been too occupied to have a chance to read about or learn them. Having said that, this also does feel like kind of a big deal. People have been griping about the lack of real animation support in React itself for years. There's been lots of, you know, community packages, Motion and React Transition Group, and A whole bunch of other things. [38:48] -and they've said that they wanted to get around to it eventually, but it really needed to be integrated into concurrent rendering behavior because you got to track multiple copies of the tree at once. So this does actually feel like a pretty big step forward. [00:39:01] +and they've said that they wanted to get around to it eventually, but it really needed to be integrated into concurrent rendering behavior because you got to track multiple copies of the tree at once. So this does actually feel like a pretty big step forward. [39:01] -**Carl:** Yeah, and I used like React Motion Cheng Lou's library from many, many years ago which was great. I found that really cool and really powerful. I did some really fun, exciting things with that. the single most fun thing I did with that, I did a spotlight. Like onboarding tour for an app I built, where I did a custom SVG to cut a hole out of a, like, transparent, translucent overlay. [00:39:26] +**Carl:** Yeah, and I used like React Motion Cheng Lou's library from many, many years ago which was great. I found that really cool and really powerful. I did some really fun, exciting things with that. the single most fun thing I did with that, I did a spotlight. Like onboarding tour for an app I built, where I did a custom SVG to cut a hole out of a, like, transparent, translucent overlay. [39:26] -And then I used React animation to, like, animate it, and so it would, like, do a, like, little springy animation around. And, like, it was performant. It was fast. It took me, like, three hours to do. So for me, user space implementations like that were like, cool, great, this is solved, I don't need to do this. [00:39:44] +And then I used React animation to, like, animate it, and so it would, like, do a, like, little springy animation around. And, like, it was performant. It was fast. It took me, like, three hours to do. So for me, user space implementations like that were like, cool, great, this is solved, I don't need to do this. [39:44] -And I don't need React to be more aware of this because this works great for me. I think that's part of the reason why they haven't brought anything in before this. And I think now there has been more of a, I don't know, general understanding of how animation should work at a platform level. [00:40:01] +And I don't need React to be more aware of this because this works great for me. I think that's part of the reason why they haven't brought anything in before this. And I think now there has been more of a, I don't know, general understanding of how animation should work at a platform level. [40:01] And so They've been brought in as platform features to do like flip animations. First, last, interpolate, play. And so I think that's what view transitions are, but I'm in the same boat. I've read about them. I have not actually put them to practice in any real project yet. ## [Static hermes update](https://x.com/tmikov/status/1869945330638442651) -**Mo:** Let's jump into Static Hermes, because I think that one's quite interesting. So, we've talked about Static Hermes over the last few months a few times, but right before Christmas there was an update that went on by Tzvetan, who's basically really the person who's leading the efforts as far as I know, at Meta, and so people are kind of asking the question, like, when is Static Hermes actually going to come out? [00:40:38] +**Mo:** Let's jump into Static Hermes, because I think that one's quite interesting. So, we've talked about Static Hermes over the last few months a few times, but right before Christmas there was an update that went on by Tzvetan, who's basically really the person who's leading the efforts as far as I know, at Meta, and so people are kind of asking the question, like, when is Static Hermes actually going to come out? [40:38] -Because we saw it like years ago. It was super exciting. When is it coming out? And I think we got the first glimpses of hope in there. In the sense that in 2025, so in 2024, they say, next year they want to start to make it an opt in branch and maybe towards the end of the year, later in the year, at some point, make it the default React Native Engine. [00:40:57] +Because we saw it like years ago. It was super exciting. When is it coming out? And I think we got the first glimpses of hope in there. In the sense that in 2025, so in 2024, they say, next year they want to start to make it an opt in branch and maybe towards the end of the year, later in the year, at some point, make it the default React Native Engine. [40:57] -And one of the biggest hurdles that they face, which they seemingly have overcame now, is that There wasn't good support for un typed JavaScript and obviously there's gonna be a lot of un typed JavaScript in the world. Like the whole premise of static Hermes is that you use the types within TypeScript to be able to compile better typed code at a c plus plus level. And so this is a big step and it was one of the hardest sort of hurdles that they had and they've compared the performance. with different benchmarks and seemingly they are doing, you know, somewhere to the ranges of 20 to 60 percent better with a bunch of different benchmarks that they're trying. [00:41:36] +And one of the biggest hurdles that they face, which they seemingly have overcame now, is that There wasn't good support for un typed JavaScript and obviously there's gonna be a lot of un typed JavaScript in the world. Like the whole premise of static Hermes is that you use the types within TypeScript to be able to compile better typed code at a c plus plus level. And so this is a big step and it was one of the hardest sort of hurdles that they had and they've compared the performance. with different benchmarks and seemingly they are doing, you know, somewhere to the ranges of 20 to 60 percent better with a bunch of different benchmarks that they're trying. [41:36] -So it's quite cool and we'll see how it evolves, but I guess it's a very exciting update, whether or not that stays in practice and it'll be, you know, available at some point in 2025, we'll see, but you know, first glimpses of a supposed Timeline of delivery. So we'll, we'll see how that plays out. [00:41:53] +So it's quite cool and we'll see how it evolves, but I guess it's a very exciting update, whether or not that stays in practice and it'll be, you know, available at some point in 2025, we'll see, but you know, first glimpses of a supposed Timeline of delivery. So we'll, we'll see how that plays out. [41:53] -**Carl:** Yeah, definitely makes sense that untyped JavaScript is a major hurdle, like, yeah, it's a JIT compiled language. If you're trying to do a static compilation of it, that's gonna be tough. [00:42:03] +**Carl:** Yeah, definitely makes sense that untyped JavaScript is a major hurdle, like, yeah, it's a JIT compiled language. If you're trying to do a static compilation of it, that's gonna be tough. [42:03] -**Mo:** And it's honestly like super impressive what this team has been trying to achieve in itself. It's it's I don't think I have the capabilities to be able to, to dissect such hard problems. So kudos to them. [00:42:14] +**Mo:** And it's honestly like super impressive what this team has been trying to achieve in itself. It's it's I don't think I have the capabilities to be able to, to dissect such hard problems. So kudos to them. [42:14] -**Carl:** And also, just to, like, carry in the tone from this, you know, Hermes update post, I love that it has this hero image of a, I'm gonna call [00:42:21] +**Carl:** And also, just to, like, carry in the tone from this, you know, Hermes update post, I love that it has this hero image of a, I'm gonna call [42:21] -it a flag that says "we do this not because it is easy, but because we thought it would be easy." [00:42:27] +it a flag that says "we do this not because it is easy, but because we thought it would be easy." [42:27] **Mo:** I love that so much, yeah, that hero images. Tzvetan is a really funny guy, like a very like, specific sense of humor, I've met him a couple times at conferences, he's just, he's such a joy to be around. ## [React Native Hosting with EAS](https://expo.dev/blog/expo-announces-eas-hosting-service) -**Mo:** I also want to quickly touch on Expo hosting, so this was announced a few weeks ago, and so, in sort of that light of, you know, there's Resell, which is the way that you host React applications or so called Next. js applications, I guess, mainly and you know, it's the framework that you use with the Expo world, obviously they are also kind of going into that footing of, we are the framework to use, and we also can host it because Expo is obviously going in this universal direction of, you can also use Expo and React native on the web and build full stack sort of across the board multi platform application on web and mobile and so obviously as part of that you're going to have to think about hosting where do you host the web applications and so they've launched EAS hosting which is their sort of first attempt at creating a hosting platform that will host your, you know, Web applications, but also your API routes, because if you remember from last year, we talked about Next.js's [00:43:31] +**Mo:** I also want to quickly touch on Expo hosting, so this was announced a few weeks ago, and so, in sort of that light of, you know, there's Resell, which is the way that you host React applications or so called Next. js applications, I guess, mainly and you know, it's the framework that you use with the Expo world, obviously they are also kind of going into that footing of, we are the framework to use, and we also can host it because Expo is obviously going in this universal direction of, you can also use Expo and React native on the web and build full stack sort of across the board multi platform application on web and mobile and so obviously as part of that you're going to have to think about hosting where do you host the web applications and so they've launched EAS hosting which is their sort of first attempt at creating a hosting platform that will host your, you know, Web applications, but also your API routes, because if you remember from last year, we talked about Next.js's [43:31] -API routes that they had, and so very similar to Vercel's API routes, you've got Next. js's API routes now, I'm sorry, you've got Expo's API routes now. And so it's a very sort of basic hosting platform for now. It lets you keep a track of, you know, the requests coming in, your deployments, the crashes. [00:43:48] +API routes that they had, and so very similar to Vercel's API routes, you've got Next. js's API routes now, I'm sorry, you've got Expo's API routes now. And so it's a very sort of basic hosting platform for now. It lets you keep a track of, you know, the requests coming in, your deployments, the crashes. [43:48] -And just some basic logging into your requests and so on and so forth. But I think it's, it's a, it's an interesting start and it's, you know, it's one of the pieces that they've been missing a little bit when it came to this universal story. So, we'll see how that expands, we'll see how it grows and evolves, but it's just the first and the early days of, you know, of EAS hosting. [00:44:07] +And just some basic logging into your requests and so on and so forth. But I think it's, it's a, it's an interesting start and it's, you know, it's one of the pieces that they've been missing a little bit when it came to this universal story. So, we'll see how that expands, we'll see how it grows and evolves, but it's just the first and the early days of, you know, of EAS hosting. [44:07] -**Carl:** I wish I had more to say on Expo, because it does seem really cool, and I have really admired its development over the years, but man, I just, I don't, I don't need to make native apps. Maybe one day. [00:44:17] +**Carl:** I wish I had more to say on Expo, because it does seem really cool, and I have really admired its development over the years, but man, I just, I don't, I don't need to make native apps. Maybe one day. [44:17] -as I'm charting my year in January I have a couple projects booked for the next couple of months, but back half of the year I might actually try and do like a fork of the Blue Sky plant, and that's Expo, so hey, maybe I'll get some real first hand knowledge [00:44:32] +as I'm charting my year in January I have a couple projects booked for the next couple of months, but back half of the year I might actually try and do like a fork of the Blue Sky plant, and that's Expo, so hey, maybe I'll get some real first hand knowledge [44:32] -**Mo:** very keen. I love the comment. Someone's saying, I wonder if Tanstack will launch their own hosting one day. [00:44:37] +**Mo:** very keen. I love the comment. Someone's saying, I wonder if Tanstack will launch their own hosting one day. [44:37] **Carl:** That makes, yeah, that actually would not surprise me. Yeah, Mark you want to tell us everything we need to know about Node. js type stripping? ## [Everything You Need to Know About Node.js Type Stripping](https://satanacchio.hashnode.dev/everything-you-need-to-know-about-nodejs-type-stripping) -**Mark:** Well, I won't, but I'll tell you about the post that does. So, like bun have TypeScript support built in, but it's basically been like, Okay, we read the TypeScript source code, don't bother type checking it, we just execute it. And so, you know, given TypeScript's popularity, Node has finally jumped on the bandwagon and some of the latest Node releases actually integrate some tools that will do the type stripping so that TypeScript syntax code can at least run directly in Node without needing an additional tool like the TS Node. And, the big thing about this is that because they're stripping the types, they're not doing type checking the output also needs to be, like, your TypeScript code needs to be just types. Now you might think, well, it's TypeScript. Of course, it's just types. The problem is that some early TypeScript features do also result in additional runtime code being generated. [00:45:43] +**Mark:** Well, I won't, but I'll tell you about the post that does. So, like bun have TypeScript support built in, but it's basically been like, Okay, we read the TypeScript source code, don't bother type checking it, we just execute it. And so, you know, given TypeScript's popularity, Node has finally jumped on the bandwagon and some of the latest Node releases actually integrate some tools that will do the type stripping so that TypeScript syntax code can at least run directly in Node without needing an additional tool like the TS Node. And, the big thing about this is that because they're stripping the types, they're not doing type checking the output also needs to be, like, your TypeScript code needs to be just types. Now you might think, well, it's TypeScript. Of course, it's just types. The problem is that some early TypeScript features do also result in additional runtime code being generated. [45:43] -For example, when you use the enum keyword in TypeScript, it results in an object lookup table being added. And so because Node is just stripping the type syntax, if you try to use an enum with this new Node feature, it'll actually break things. So, I believe one of the upcoming TypeScript versions will actually have a flag that will enforce that you're only using type strippable syntax, but Big picture what this means is that it'll be easier to take, like, a node script that is written as a ts file with ts syntax and just say, like, node myscript.ts [00:46:25] +For example, when you use the enum keyword in TypeScript, it results in an object lookup table being added. And so because Node is just stripping the type syntax, if you try to use an enum with this new Node feature, it'll actually break things. So, I believe one of the upcoming TypeScript versions will actually have a flag that will enforce that you're only using type strippable syntax, but Big picture what this means is that it'll be easier to take, like, a node script that is written as a ts file with ts syntax and just say, like, node myscript.ts [46:25] -or whatever. I don't think you have to pass in any additional arguments. So overall, it's, it's basically like matching the feature set of other tools like Bunn and making it easier to use TypeScript code across the ecosystem. [00:46:38] +or whatever. I don't think you have to pass in any additional arguments. So overall, it's, it's basically like matching the feature set of other tools like Bunn and making it easier to use TypeScript code across the ecosystem. [46:38] -**Carl:** yeah, I am trying to quickly refresh my memory here, but I believe that I am actually using the strip types. No, I played with it but I found a different way around it. Yeah, I did, I did it. This is a feature I got to play with. I have first hand experience with strip types. It was pretty good. But yeah, there's still some weirdness around, like, type extensions, I think, in imports. [00:47:02] +**Carl:** yeah, I am trying to quickly refresh my memory here, but I believe that I am actually using the strip types. No, I played with it but I found a different way around it. Yeah, I did, I did it. This is a feature I got to play with. I have first hand experience with strip types. It was pretty good. But yeah, there's still some weirdness around, like, type extensions, I think, in imports. [47:02] -**Mark:** That does not surprise me. [00:47:04] +**Mark:** That does not surprise me. [47:04] -**Carl:** I know, in trying to play with it, I had to do a code mod in order to add extensions, you know, like js extensions everywhere, and yeah, I know, I think a couple of episodes ago, we ended up talking, we talked a little bit about TypeScript, Faking what extensions it would use in order to make that work for compatibility reasons. [00:47:25] +**Carl:** I know, in trying to play with it, I had to do a code mod in order to add extensions, you know, like js extensions everywhere, and yeah, I know, I think a couple of episodes ago, we ended up talking, we talked a little bit about TypeScript, Faking what extensions it would use in order to make that work for compatibility reasons. [47:25] -And so yeah, I got some first hand experience and it's weird. It worked. I got it working, but it felt weird to have, you know, to be authoring a ts or tsx file and importing it as js. That's definitely unintuitive. [00:47:41] +And so yeah, I got some first hand experience and it's weird. It worked. I got it working, but it felt weird to have, you know, to be authoring a ts or tsx file and importing it as js. That's definitely unintuitive. [47:41] -**Mark:** complicated but valid technical reasons why they made that stance. [00:47:45] +**Mark:** complicated but valid technical reasons why they made that stance. [47:45] -All right, Mo, I know you need to drop off shortly. Any other points you want to cover before you head out? [00:47:49] +All right, Mo, I know you need to drop off shortly. Any other points you want to cover before you head out? [47:49] **Mo:** no, I think it's been a relatively quiet React Native month and I've been completely off the grid. ## [Composable Caching with Next.js](https://nextjs.org/blog/composable-caching) -**Mo:** The only thing that I am quite keen to talk about actually is the caching with Next. js, our little composable caching. Because I've been dealing with Next.js caching for the last two weeks and oh boy, oh boy, [00:48:10] +**Mo:** The only thing that I am quite keen to talk about actually is the caching with Next. js, our little composable caching. Because I've been dealing with Next.js caching for the last two weeks and oh boy, oh boy, [48:10] -I have been trying to, after dealing with the Pages router for a very long time I've been now dealing with Next. js caching for a little bit, and this use cache is obviously something that's more in canary at the moment. It's not published in, in sort of the, the stable versions, whatever that means in Next world these days, in terms of a stable version. [00:48:32] +I have been trying to, after dealing with the Pages router for a very long time I've been now dealing with Next. js caching for a little bit, and this use cache is obviously something that's more in canary at the moment. It's not published in, in sort of the, the stable versions, whatever that means in Next world these days, in terms of a stable version. [48:32] -But, Basically, the caching is a little bit complex with Next14, as we know, and currently, if you want to cache things like database responses in server components, or you want to cache fetching, you have to wrap it in an unstable cache function that takes in the function, a promise, some key, and then some revalidation time. [00:48:56] +But, Basically, the caching is a little bit complex with Next14, as we know, and currently, if you want to cache things like database responses in server components, or you want to cache fetching, you have to wrap it in an unstable cache function that takes in the function, a promise, some key, and then some revalidation time. [48:56] -And so, there's this really weird syntax to do this, and then of course there's also another level of caching when you have static pages, which means those static pages get cached after they're published. Built in whatever capacity. And there's just so many layers of caching at this point. It's hard to wrap your head around how your application is functioning. [00:49:16] +And so, there's this really weird syntax to do this, and then of course there's also another level of caching when you have static pages, which means those static pages get cached after they're published. Built in whatever capacity. And there's just so many layers of caching at this point. It's hard to wrap your head around how your application is functioning. [49:16] -And to make matters more confusing now, there's this use cache directive that they're planning on introducing, which looks really cool, but I can just imagine this getting ever more and more complicated. And to me, a real symptom of this is the fact that they've 180'd on the defaults of caching with Next 15. [00:49:36] +And to make matters more confusing now, there's this use cache directive that they're planning on introducing, which looks really cool, but I can just imagine this getting ever more and more complicated. And to me, a real symptom of this is the fact that they've 180'd on the defaults of caching with Next 15. [49:36] -Like, you've set some definitions on what is cached by default, what's not cached, and it went so poorly that you had to flip it 180 degrees. That does not give any semblance of stability to me as a consumer of the technology. And so I just look back at the days of the Pages router and wish we could just go back to the simplicity of having and getServerSideProps and just live life in that naivety of how simple that was. [00:50:06] +Like, you've set some definitions on what is cached by default, what's not cached, and it went so poorly that you had to flip it 180 degrees. That does not give any semblance of stability to me as a consumer of the technology. And so I just look back at the days of the Pages router and wish we could just go back to the simplicity of having and getServerSideProps and just live life in that naivety of how simple that was. [50:06] -**Carl:** I was thinking in similar directions and I'm actually now in a position where I'm maintaining a React Router v7 project, which I upgraded all the way from Remix 1 to React Router v7 in one go, or in one go, sequentially all the way up. And the, the Reactiflux website is I think it's a Next 14 Pages router app, so that one I could probably play with a little bit more. [00:50:35] +**Carl:** I was thinking in similar directions and I'm actually now in a position where I'm maintaining a React Router v7 project, which I upgraded all the way from Remix 1 to React Router v7 in one go, or in one go, sequentially all the way up. And the, the Reactiflux website is I think it's a Next 14 Pages router app, so that one I could probably play with a little bit more. [50:35] -But it's like, oh, I'm now actually maintaining apps on several of the largest frameworks And you know what? I like Remix the best. It's just got, like, the, the mental model is most familiar to me. It seems most predictable. And, like, I hate magic. I am someone who completely avoided the entire RWBY ecosystem because it's too magical. [00:50:57] +But it's like, oh, I'm now actually maintaining apps on several of the largest frameworks And you know what? I like Remix the best. It's just got, like, the, the mental model is most familiar to me. It seems most predictable. And, like, I hate magic. I am someone who completely avoided the entire RWBY ecosystem because it's too magical. [50:57] -I'm just like, man, Remix hits right for me. not much there. Just yeah, it feels good. I don't know. I like it. [00:51:03] +I'm just like, man, Remix hits right for me. not much there. Just yeah, it feels good. I don't know. I like it. [51:03] -**Mo:** I've used Remix as well, and I must say, like, It takes a little bit of adjusting from when you've just dealt with Next. js for several, months and years, but is just simpler. Like it feels more native webby, the bits of magic are really just like the loaders, the actions that you have, but like everything else just feels sort of you're dealing either with React or you're dealing with the web. [00:51:24] +**Mo:** I've used Remix as well, and I must say, like, It takes a little bit of adjusting from when you've just dealt with Next. js for several, months and years, but is just simpler. Like it feels more native webby, the bits of magic are really just like the loaders, the actions that you have, but like everything else just feels sort of you're dealing either with React or you're dealing with the web. [51:24] -And I quite like that as a concept. [00:51:27] +And I quite like that as a concept. [51:27] -**Carl:** Right. [00:51:28] -[00:51:28] +**Carl:** Right. [51:28] +[51:28] -**Carl:** it lets me think in terms of like, HTML, HTTP, and like, cookies. And like, yes please, let me think about the platform and not the toolchain. Yeah. [00:51:39] +**Carl:** it lets me think in terms of like, HTML, HTTP, and like, cookies. And like, yes please, let me think about the platform and not the toolchain. Yeah. [51:39] -**Mo:** And someone in the chat, one of our listeners, is actually pointing out that the app router is still defined as the bleeding edge of on the React install docs, basically, on start a new React project. [00:51:51] +**Mo:** And someone in the chat, one of our listeners, is actually pointing out that the app router is still defined as the bleeding edge of on the React install docs, basically, on start a new React project. [51:51] -**Carl:** definitely some bleeding happening. [00:51:53] +**Carl:** definitely some bleeding happening. [51:53] -**Mo:** So yeah, that was my little, my rant. [00:51:55] +**Mo:** So yeah, that was my little, my rant. [51:55] **Carl:** Cool. Yeah, ## [Thoughts on What RSC Means for SPAs](https://blog.axlight.com/posts/thoughts-on-what-rsc-means-for-spas/) -**Carl:** Mark, next link up is like thoughts on what RSC means. did you read that? Can you talk about that? [00:52:02] +**Carl:** Mark, next link up is like thoughts on what RSC means. did you read that? Can you talk about that? [52:02] -**Mark:** Yeah, I, I skimmed it a bit. So it's a, it's a post from Daishi Kato who worked maintains Zustand, created Jotai and Valtio and has been working on the, the Waku RSC based framework. So it's a couple different points. One is, can R RSCs actually relate to single page apps? And the answer is sort of maybe yes. [00:52:25] +**Mark:** Yeah, I, I skimmed it a bit. So it's a, it's a post from Daishi Kato who worked maintains Zustand, created Jotai and Valtio and has been working on the, the Waku RSC based framework. So it's a couple different points. One is, can R RSCs actually relate to single page apps? And the answer is sort of maybe yes. [52:25] -Like, you know, for example, the RSC payload could be served statically. And not dynamically generated on a server. it's actually kind of a, kind of a short read, but you know, just like some, alternative thoughts from just like, RSCs are on the server and, you know, can only be used with Next, et cetera. [00:52:42] +Like, you know, for example, the RSC payload could be served statically. And not dynamically generated on a server. it's actually kind of a, kind of a short read, but you know, just like some, alternative thoughts from just like, RSCs are on the server and, you know, can only be used with Next, et cetera. [52:42] So it's short, but worth reading. ## [Chrome's 2024 recap for devs](https://developer.chrome.com/blog/chrome-2024-recap) -**Carl:** last main content article Chrome put out a 2024 recap. That was just pretty good. I don't know. Some of it, I'd call it like 30 to 40% marketing fluff. [00:52:55] +**Carl:** last main content article Chrome put out a 2024 recap. That was just pretty good. I don't know. Some of it, I'd call it like 30 to 40% marketing fluff. [52:55] -They spent a lot of time talking about how they added AI to the chrome dev tools, which I actually have heard some positive things about, like interpreting errors. Like okay, yeah. Neat. But yeah, I noted that it called out view transitions, which just 'cause we talked about it earlier in the episode. [00:53:09] +They spent a lot of time talking about how they added AI to the chrome dev tools, which I actually have heard some positive things about, like interpreting errors. Like okay, yeah. Neat. But yeah, I noted that it called out view transitions, which just 'cause we talked about it earlier in the episode. [53:09] -Like, hey, look at that. platform and react in unity in sync. I think we'd mentioned this before, but there's a CSS popover and like anchor positioning. So you can do popovers without JavaScript, which. I have implemented popovers in so many apps, and I hate it. I am so tired of it. Like, I do not use popovers anymore because I'm so tired of making them. [00:53:33] +Like, hey, look at that. platform and react in unity in sync. I think we'd mentioned this before, but there's a CSS popover and like anchor positioning. So you can do popovers without JavaScript, which. I have implemented popovers in so many apps, and I hate it. I am so tired of it. Like, I do not use popovers anymore because I'm so tired of making them. [53:33] So, being able to do it without crazy layout logic in JavaScript sounds great. Maybe I will actually use them again. ## Shoutout [webstatus.dev](https://webstatus.dev/) -**Carl:** And I also learned about a new site recently through reading that, webstatus.dev, which has a, like, annualized baseline browser feature summary, which looks neat. Although I'll note that, you know, we're into 2025. [00:53:55] +**Carl:** And I also learned about a new site recently through reading that, webstatus.dev, which has a, like, annualized baseline browser feature summary, which looks neat. Although I'll note that, you know, we're into 2025. [53:55] -We're a month into 2025, and the 2024 baseline is not met. Like, yeah. Safari looks to be generally the worst offender, But, Firefox and Edge also, slipping behind a little bit. Well, no, maybe that's not fair, because Firefox is ahead in a couple of them, ahead of Chrome in a couple of them. So, anyway, this is neat. [00:54:14] +We're a month into 2025, and the 2024 baseline is not met. Like, yeah. Safari looks to be generally the worst offender, But, Firefox and Edge also, slipping behind a little bit. Well, no, maybe that's not fair, because Firefox is ahead in a couple of them, ahead of Chrome in a couple of them. So, anyway, this is neat. [54:14] I love these kind of like, broad based what features Are being implemented. this is how I have always kept an eye on what's coming down the pike. So, didn't know this existed. Cool. Useful. ## Redwood.js shutting down? -**Carl:** I don't have a link for this, but I've heard, through the grapevine, that there will be some impending announcements from Redwood.js generally the shape of what I've heard is that like an original found co founder of the project who had kind of left or like gone dormant came back and has decided that I I don't know what is going on I read some like Google translated slack messages from I believe Swedish and it sounds like a co founder has come back out of the woodwork and basically taken over and Just said like This is good SEO. [00:55:01] +**Carl:** I don't have a link for this, but I've heard, through the grapevine, that there will be some impending announcements from Redwood.js generally the shape of what I've heard is that like an original found co founder of the project who had kind of left or like gone dormant came back and has decided that I I don't know what is going on I read some like Google translated slack messages from I believe Swedish and it sounds like a co founder has come back out of the woodwork and basically taken over and Just said like This is good SEO. [55:01] -This, there is value to this domain, this brand. It's mine now. I'm going to do something entirely different with it. So yeah, keep an eye out. Redwood. [00:55:09] +This, there is value to this domain, this brand. It's mine now. I'm going to do something entirely different with it. So yeah, keep an eye out. Redwood. [55:09] -**Mark:** Another way to phrase it is it sounds like Redwood the framework is dead and the name and repo are going to be repurposed. [00:55:19] +**Mark:** Another way to phrase it is it sounds like Redwood the framework is dead and the name and repo are going to be repurposed. [55:19] -**Carl:** that's the shape of what I've heard. I think I heard that they will be doing an announcement in the next month. So like, ooh, breaking story, our first one, but, ah, it's just such a shame because I, I've met them at a conference or two, they seemed really good, and I liked the general, like, like, I understood them as trying to do Laravel for the React ecosystem, and I thought that was a pretty good niche, so, just a shame. [00:55:45] +**Carl:** that's the shape of what I've heard. I think I heard that they will be doing an announcement in the next month. So like, ooh, breaking story, our first one, but, ah, it's just such a shame because I, I've met them at a conference or two, they seemed really good, and I liked the general, like, like, I understood them as trying to do Laravel for the React ecosystem, and I thought that was a pretty good niche, so, just a shame. [55:45] -Shame to see it die to some drama like this. But yeah, there should be some more details, maybe we can talk about it maybe we will have some, you know, perspective to give [00:55:55] +Shame to see it die to some drama like this. But yeah, there should be some more details, maybe we can talk about it maybe we will have some, you know, perspective to give [55:55] -this month. [00:55:56] +this month. [55:56] -**Mark:** next month. [00:55:56] +**Mark:** next month. [55:56] **Carl:** Actual details, not screenshots of Slack. ## [A checklist for your `tsconfig.json`](https://2ality.com/2025/01/tsconfig-json.html) -**Mark:** Axel Rauschmeyer has done a lot of articles over the years about like, what's new in this year's version of the, you know, the, the ES language spec. He's also been writing some articles recently about some TypeScript related things, like different ways to define a NUS or similar things. And he put up a post call a checklist for your TS config, JSON, which walks through and actually like, looks at a lot of the config options and what they do and when it makes sense to use a lot of them. [00:56:27] +**Mark:** Axel Rauschmeyer has done a lot of articles over the years about like, what's new in this year's version of the, you know, the, the ES language spec. He's also been writing some articles recently about some TypeScript related things, like different ways to define a NUS or similar things. And he put up a post call a checklist for your TS config, JSON, which walks through and actually like, looks at a lot of the config options and what they do and when it makes sense to use a lot of them. [56:27] pretty sure that Matt Pocock has done a similar post somewhere. ## [Recoil repo archived](https://x.com/dai_shi/status/1875910305802514649) -**Mark:** completely different note We talked about Redwood maybe kind of going away. The recoil library repository has been officially archived. Now, it had been unmaintained for a while. I had read from people who had been involved that apparently both the people who had been maintaining it had gotten caught up in layoffs from meta. [00:56:52] +**Mark:** completely different note We talked about Redwood maybe kind of going away. The recoil library repository has been officially archived. Now, it had been unmaintained for a while. I had read from people who had been involved that apparently both the people who had been maintaining it had gotten caught up in layoffs from meta. [56:52] -So, But, honestly, it also seemed as though the project had stagnated for quite a while. The thing that gets me, really, is that when Recoil was first announced whenever that was, like 2017, 18 ish there were just so many people who looked at the announcement and took it as Oh look, this is an official React State Management Library. [00:57:19] +So, But, honestly, it also seemed as though the project had stagnated for quite a while. The thing that gets me, really, is that when Recoil was first announced whenever that was, like 2017, 18 ish there were just so many people who looked at the announcement and took it as Oh look, this is an official React State Management Library. [57:19] -When in reality it was just some other app team at Meta came up with their own solutions and decided to publish it. But, you know, the combination of Redux backlash, and like, It's from Facebook, it must be official! meant that a lot of people jumped on it, and then it sort of stalled, and then Jotai came out, and Recoil just sort of went away. [00:57:45] +When in reality it was just some other app team at Meta came up with their own solutions and decided to publish it. But, you know, the combination of Redux backlash, and like, It's from Facebook, it must be official! meant that a lot of people jumped on it, and then it sort of stalled, and then Jotai came out, and Recoil just sort of went away. [57:45] **Carl:** Sad to see stuff drop ## [Bun: first-class support for s3](https://bsky.app/profile/bun.sh/post/3legdozw3nc2p) -**Carl:** Alright Bun is shipping first class support for S3, which is interesting. So, first class support for S3 here means being able to use it as like a file system, I guess. standard library tool for implementing Or for interacting with file storage services that themselves implement the S3 API, which is pretty widely supported. [00:58:11] +**Carl:** Alright Bun is shipping first class support for S3, which is interesting. So, first class support for S3 here means being able to use it as like a file system, I guess. standard library tool for implementing Or for interacting with file storage services that themselves implement the S3 API, which is pretty widely supported. [58:11] -So this is actually pretty interesting because, like, I don't know, I hate dealing with, stuff like the AWS SDK. I've, like, partially avoided learning AWS because it's just so complicated and annoying. So seeing some little details like S3 interactions being brought into the runtime is actually pretty neat. [00:58:32] +So this is actually pretty interesting because, like, I don't know, I hate dealing with, stuff like the AWS SDK. I've, like, partially avoided learning AWS because it's just so complicated and annoying. So seeing some little details like S3 interactions being brought into the runtime is actually pretty neat. [58:32] Yeah. I'm seeing in the chat, there's a lot in that 2 announcement. Sadly, I don't actually use bun in my day to day. So I am just kind of an observer here and I have not stayed super up to date. Just that caught my eye as like, Oh, interesting. What an opinionated stance. ## [Interpolate `auto` height for animations](https://bsky.app/profile/joshwcomeau.com/post/3lf5zwg2ths22) -**Carl:** There is now, I believe in the latest Chrome, there is an interpolate size CSS property you can set on like high up on your your page to allow interpolating allow animations to interpolate between Auto, like if you say height auto and height zero. Previously you couldn't animate between those two states. [00:59:11] +**Carl:** There is now, I believe in the latest Chrome, there is an interpolate size CSS property you can set on like high up on your your page to allow interpolating allow animations to interpolate between Auto, like if you say height auto and height zero. Previously you couldn't animate between those two states. [59:11] -And now, You can in latest Chrome. That's super cool. I have always thought it was super weird that that extra step of just letting your size, letting the size of an element be automatically determined meant that you couldn't use CSS transitions. That just never made sense to me. So it's, it also doesn't make sense to me why it took 10 years from me feeling, oh, that's weird, to this actually shipping, but super cool. [00:59:37] +And now, You can in latest Chrome. That's super cool. I have always thought it was super weird that that extra step of just letting your size, letting the size of an element be automatically determined meant that you couldn't use CSS transitions. That just never made sense to me. So it's, it also doesn't make sense to me why it took 10 years from me feeling, oh, that's weird, to this actually shipping, but super cool. [59:37] Neat. Love it. I believe it's currently Chrome only, but yeah, I mean, hopefully it'll, hopefully it'll filter out pretty quick. He says, after complaining about waiting 10 years. diff --git a/src/transcripts/tmir-2025-03.md b/src/transcripts/tmir-2025-03.md index f52e720..881d8dd 100644 --- a/src/transcripts/tmir-2025-03.md +++ b/src/transcripts/tmir-2025-03.md @@ -43,7 +43,7 @@ html li p { - [[14:31](#main-content)] Main Content - [[14:31](#lynx-released)] [Lynx released](https://lynxjs.org/) - [[14:33](#release-blog)] [Release blog](https://lynxjs.org/blog/lynx-unlock-native-for-more) - - [[18:20](#security-vulneratibility-in-nextjs-cve-2025-29927001820-original-researcher-report)] [Security vulneratibility](https://nextjs.org/blog/cve-2025-29927) in Next.js: [CVE-2025-29927](https://github.com/advisories/GHSA-f82v-jwr5-mffw)[00:18:20] [Original researcher report](https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware) + - [[18:20](#security-vulneratibility-in-nextjs-cve-2025-29927001820-original-researcher-report)] [Security vulneratibility](https://nextjs.org/blog/cve-2025-29927) in Next.js: [CVE-2025-29927](https://github.com/advisories/GHSA-f82v-jwr5-mffw)[18:20] [Original researcher report](https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware) - [[20:36](#cves-and-the-nvd-process)] [CVEs and the NVD Process](https://nvd.nist.gov/general/cve-process) - [[25:03](#postmortem-on-nextjs-middleware-bypass)] [Postmortem on Next.js Middleware bypass](https://vercel.com/blog/postmortem-on-next-js-middleware-bypass) - [[27:00](#nextjs-and-coordinated-disclosure)] [Next.js and Coordinated Disclosure](https://sxlijin.github.io/2025-03-23-next-js-and-coordinated-disclosure) @@ -60,504 +60,504 @@ html li p { - [[47:46](#expos-ai-strategy)] [Expo’s AI Strategy](https://expo.dev/ai/strategy) - [[48:39](#laravel-launched-starter-kits-including-react)] [Laravel launched “starter kits” including React](https://laravel.com/docs/12.x/starter-kits) - [[49:36](#react-native-enterprise-framework)] [React Native Enterprise Framework](https://enterprise-framework.callstack.com/) - - [[50:36](#state-of-react-native-2024)] [State of React Native 2024](https://results.stateofreactnative.com/en-US/) [00:00:00] + - [[50:36](#state-of-react-native-2024)] [State of React Native 2024](https://results.stateofreactnative.com/en-US/) [00:00] -**Carl:** Thank you everyone for joining us for the March edition of this month in React, where we recap and digest the recent developments in the ever evolving react and web ecosystem. We are coming to you live here in Reactiflux, the place for professional react developers. [00:00:14] +**Carl:** Thank you everyone for joining us for the March edition of this month in React, where we recap and digest the recent developments in the ever evolving react and web ecosystem. We are coming to you live here in Reactiflux, the place for professional react developers. [00:14] -And we are supported by infinite red, but more on them later. I am Carl. I'm a staff product developer and freelance community leader here in Reactiflux, where I run community programs like these events and build tools to help keep the community operating. [00:00:28] +And we are supported by infinite red, but more on them later. I am Carl. I'm a staff product developer and freelance community leader here in Reactiflux, where I run community programs like these events and build tools to help keep the community operating. [00:28] -**Mark:** Hi, I'm Mark. My day job is working at Replay io, where we're building a time traveling debugger for JavaScript, and also trying to find ways to make AI developers smarter by giving them access to replay runtime data and in my copious amounts of spare time. Outside of that, I do redux stuff. [00:00:45] +**Mark:** Hi, I'm Mark. My day job is working at Replay io, where we're building a time traveling debugger for JavaScript, and also trying to find ways to make AI developers smarter by giving them access to replay runtime data and in my copious amounts of spare time. Outside of that, I do redux stuff. [00:45] ## Job market: [FRED data](https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE), [Layoffs.fyi](https://layoffs.fyi/) -**Carl:** Some early quick hits. My general temperature check on the job market is that it's not good. It seems bad. Layoffs for March are higher than they were in every month, except last month since September, 2024. So that's five months, yeah, that's not great. It seems like hiring is down. Oh yeah. Look at that. The Fred economic data is a continued decline, so that's not ideal. I guess that is software development, job posting, so I wonder if maybe there's like some kind of title shift leading to that decline as well. [00:01:20] +**Carl:** Some early quick hits. My general temperature check on the job market is that it's not good. It seems bad. Layoffs for March are higher than they were in every month, except last month since September, 2024. So that's five months, yeah, that's not great. It seems like hiring is down. Oh yeah. Look at that. The Fred economic data is a continued decline, so that's not ideal. I guess that is software development, job posting, so I wonder if maybe there's like some kind of title shift leading to that decline as well. [01:20] -But yeah, job market not good. So yeah, if you are on the market, I hope you are. I don't know. Good luck. Sorry. [00:01:28] +But yeah, job market not good. So yeah, if you are on the market, I hope you are. I don't know. Good luck. Sorry. [01:28] ## Conferences ([React](https://react.dev/community/conferences), [Javascript](https://confs.tech/javascript)) -**Carl:** Upcoming conferences. [00:01:29] +**Carl:** Upcoming conferences. [01:29] ## [React Native Connection](https://reactnativeconnection.io/) April 3 \+ 4, 2025 Paris, France -**Carl:** There is React Native Connection April 3rd and fourth in Paris. So if you're in France, definitely check that out. [00:01:36] +**Carl:** There is React Native Connection April 3rd and fourth in Paris. So if you're in France, definitely check that out. [01:36] ## [React Miami](https://www.reactmiami.com/), Apr 17-18 -**Carl:** React Miami. A beloved conference that I have attended several times but will not be at this year. [00:01:41] +**Carl:** React Miami. A beloved conference that I have attended several times but will not be at this year. [01:41] -Is April 17th and 18th in Miami, Florida. [00:01:45] +Is April 17th and 18th in Miami, Florida. [01:45] -**Mark:** I'll be hanging out there. [00:01:47] +**Mark:** I'll be hanging out there. [01:47] -**Carl:** now go see Mark. He'll say, Hey . [00:01:49] +**Carl:** now go see Mark. He'll say, Hey . [01:49] ## [CityJS London](https://london.cityjsconf.org/) April 23-25 London, UK -**Carl:** There's City Js London on April 23rd through 25th in London, the uk. [00:01:55] +**Carl:** There's City Js London on April 23rd through 25th in London, the uk. [01:55] ## [App.js Conf](https://appjs.co/) May 28-30 Kraków, Poland -**Carl:** We've also got App JS Conf May 28th through 30th in Cacao Poland. I've heard good things. I looked at going, but it's just can't swing it. Too big of a trip. [00:02:06] +**Carl:** We've also got App JS Conf May 28th through 30th in Cacao Poland. I've heard good things. I looked at going, but it's just can't swing it. Too big of a trip. [02:06] ## [CityJS Athens](https://athens.cityjsconf.org/) May 27-31 Athens, Greece -**Carl:** CDJS Athens is also gonna be May 27th through 31st in Athens, Greece. [00:02:13] +**Carl:** CDJS Athens is also gonna be May 27th through 31st in Athens, Greece. [02:13] ## [SquiggleConf 2025 CFP](https://2025.squiggleconf.com/cfp) closes May 23 -**Carl:** And I'm helping organize squiggle conf, which is coming up much later this year. But their CFP is open, so if you are interested in speaking go ahead. Submit. It's gonna be open until May 23rd. [00:02:26] +**Carl:** And I'm helping organize squiggle conf, which is coming up much later this year. But their CFP is open, so if you are interested in speaking go ahead. Submit. It's gonna be open until May 23rd. [02:26] -**Mark:** I, I got to attend Squiggle Con last year. I, I also know the organizers, Dmitri and Josh, they're wonderful people. They did a fantastic job for a first year conference last year. Squiggle Conf was great. You should totally try to go. It's in, it's in Boston. [00:02:40] +**Mark:** I, I got to attend Squiggle Con last year. I, I also know the organizers, Dmitri and Josh, they're wonderful people. They did a fantastic job for a first year conference last year. Squiggle Conf was great. You should totally try to go. It's in, it's in Boston. [02:40] -**Carl:** It is in Boston. Yeah. Dmitri, his most recent accomplishment that made pretty big waves is he got doom running in TypeScript types, which is bananas, and took like a year and a half and he had to learn all sorts of like compiler and like processor stuff. Yeah. Unbelievable. [00:02:56] +**Carl:** It is in Boston. Yeah. Dmitri, his most recent accomplishment that made pretty big waves is he got doom running in TypeScript types, which is bananas, and took like a year and a half and he had to learn all sorts of like compiler and like processor stuff. Yeah. Unbelievable. [02:56] -**Mark:** we should totally toss a link to that in here on general principal. [00:02:59] +**Mark:** we should totally toss a link to that in here on general principal. [02:59] -**Carl:** Yeah, we probably should. I don't have one handy. But yeah, super cool. Super impressive. Unbelievable maniacal in fact. But yeah. [00:03:06] +**Carl:** Yeah, we probably should. I don't have one handy. But yeah, super cool. Super impressive. Unbelievable maniacal in fact. But yeah. [03:06] -Yeah, our sponsor you know, bear with us through all of our setup stuff before we get to the real news. We, there's so much news. We've got like a pretty major security vulnerability in next. [00:03:17] +Yeah, our sponsor you know, bear with us through all of our setup stuff before we get to the real news. We, there's so much news. We've got like a pretty major security vulnerability in next. [03:17] -There's like a couple of new releases to talk about, but yeah. [00:03:19] +There's like a couple of new releases to talk about, but yeah. [03:19] ## [Sponsored by Infinite Red](https://infinite.red/) -**Carl:** We are sponsored by Infinite Red. They are an expert react native consultancy that's been around since 2015. And I actually just saw a post that they put up on LinkedIn where in 2015 they hired 21 people and 14 of those 21 are still there, like 10 year tenure for two thirds of the organization. Like that's impressive. [00:03:38] +**Carl:** We are sponsored by Infinite Red. They are an expert react native consultancy that's been around since 2015. And I actually just saw a post that they put up on LinkedIn where in 2015 they hired 21 people and 14 of those 21 are still there, like 10 year tenure for two thirds of the organization. Like that's impressive. [03:38] -I've been laid off and fired a lot and I appreciate a company that is willing to get let its people stick around. Yeah. They're currently our only sponsor, in part because so few companies do as much as they do for the ecosystem. They host the largest React native podcast. They host the largest US-based React Native conference. Yeah, lots, tons of React native stuff. They very meaningful ecosystem investment. [00:04:04] +I've been laid off and fired a lot and I appreciate a company that is willing to get let its people stick around. Yeah. They're currently our only sponsor, in part because so few companies do as much as they do for the ecosystem. They host the largest React native podcast. They host the largest US-based React Native conference. Yeah, lots, tons of React native stuff. They very meaningful ecosystem investment. [04:04] -They only do React native and have built over 75 apps for companies from startups to the biggest in the world. And they will work with your team in order to help you develop expertise, not just get code running and dip out. [00:04:16] +They only do React native and have built over 75 apps for companies from startups to the biggest in the world. And they will work with your team in order to help you develop expertise, not just get code running and dip out. [04:16] -So, yeah. if your company is looking to start a new React native project, definitely check them out. They are at Infinite Red, [00:04:24] +So, yeah. if your company is looking to start a new React native project, definitely check them out. They are at Infinite Red, [04:24] ## New releases -**Carl:** into some new releases. [00:04:26] +**Carl:** into some new releases. [04:26] ## [TypeScript 5.8](https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/#the---erasablesyntaxonly-option) -**Mark:** last month we mentioned the TS 5.8 beta, and so now it's come out as final. The biggest thing here is probably the erasable syntax only flag, which ensures that you're only using TS types that can just be stripped away without having to go through with transation step useful for use with node, for example. [00:04:45] +**Mark:** last month we mentioned the TS 5.8 beta, and so now it's come out as final. The biggest thing here is probably the erasable syntax only flag, which ensures that you're only using TS types that can just be stripped away without having to go through with transation step useful for use with node, for example. [04:45] -**Carl:** Yep, super great. I'm already using something like that in code that I run. It's just nice. I don't know it's nice to not do like a full compilation step. It just lets me cut an entire thing an an entire build tool out of my, outta my local development, which I like. [00:05:00] +**Carl:** Yep, super great. I'm already using something like that in code that I run. It's just nice. I don't know it's nice to not do like a full compilation step. It just lets me cut an entire thing an an entire build tool out of my, outta my local development, which I like. [05:00] ## [Typescript Release with Go](https://devblogs.microsoft.com/typescript/typescript-native-port) -**Mark:** Although on that note, and we'll talk about this more later the TS team has announced that they have finally rewritten the TypeScript compiler itself in another language go instead of TypeScript still in an early preview stage, but they're seeing 10 x speed up and compilation time. And so the trend of converting JS build tools into other languages continues, and we'll, we'll talk about this more in depth later. [00:05:26] +**Mark:** Although on that note, and we'll talk about this more later the TS team has announced that they have finally rewritten the TypeScript compiler itself in another language go instead of TypeScript still in an early preview stage, but they're seeing 10 x speed up and compilation time. And so the trend of converting JS build tools into other languages continues, and we'll, we'll talk about this more in depth later. [05:26] -**Carl:** Probably, we'll talk about it later and we'll then probably continue talking about it later and later and later, because they have said that this is really gonna ship in like TypeScript seven, which by current release cadence [00:05:40] +**Carl:** Probably, we'll talk about it later and we'll then probably continue talking about it later and later and later, because they have said that this is really gonna ship in like TypeScript seven, which by current release cadence [05:40] -**Mark:** Is like two years from now. [00:05:42] +**Mark:** Is like two years from now. [05:42] -**Carl:** Yeah. [00:05:42] +**Carl:** Yeah. [05:42] -two and a half, three years. So yeah, we, this is gonna be a topic for a very long time. [00:05:47] +two and a half, three years. So yeah, we, this is gonna be a topic for a very long time. [05:47] -But yeah, they are continuing the trend of rewriting build tools in native and they are disrupting the trend of rewriting JavaScript build tools. rest. Yep. [00:05:55] +But yeah, they are continuing the trend of rewriting build tools in native and they are disrupting the trend of rewriting JavaScript build tools. rest. Yep. [05:55] -But yeah apparently they chose Go not Rust because the like general ethos, you know, the, the way you write code in Go is more similar than Rust. So they can do like more similar patterns in the code they're offering. So it's more of a one-to-one rewrite rather than like different enough code that it would have different semantics and different, you know, challenges there. [00:06:19] +But yeah apparently they chose Go not Rust because the like general ethos, you know, the, the way you write code in Go is more similar than Rust. So they can do like more similar patterns in the code they're offering. So it's more of a one-to-one rewrite rather than like different enough code that it would have different semantics and different, you know, challenges there. [06:19] -**Mark:** And we have a mo. [00:06:20] +**Mark:** And we have a mo. [06:20] -**Carl:** Ammo welcome. That's okay. We're gonna throw you immediately into the hot seat with React Native 78. [00:06:26] +**Carl:** Ammo welcome. That's okay. We're gonna throw you immediately into the hot seat with React Native 78. [06:26] ## [React Native 0.78 - React 19 and more](https://reactnative.dev/blog/2025/02/19/react-native-0.78) -**Mo:** So React native 78 is out. Bunch of small things, but we're getting smaller releases and so this one is mainly focusing on React 19 support. So you can get all the React 19 features that you know and love on the web now working on Native World. And we finally get our logs back in Metro. [00:06:44] +**Mo:** So React native 78 is out. Bunch of small things, but we're getting smaller releases and so this one is mainly focusing on React 19 support. So you can get all the React 19 features that you know and love on the web now working on Native World. And we finally get our logs back in Metro. [06:44] ## [Next 15.2](https://nextjs.org/blog/next-15-2) -**Carl:** Cool. Yeah, There's next. 15.2, which, you know, we're gonna talk a lot about next and more later. But um, this looks like not too crazy. A release they redesigned error ui, more streaming metadata, performance improvements, yada yada. Some experimental features as well. [00:07:02] +**Carl:** Cool. Yeah, There's next. 15.2, which, you know, we're gonna talk a lot about next and more later. But um, this looks like not too crazy. A release they redesigned error ui, more streaming metadata, performance improvements, yada yada. Some experimental features as well. [07:02] -And ooh, experimental node js middleware. A lot more on middleware later. [00:07:07] +And ooh, experimental node js middleware. A lot more on middleware later. [07:07] ## [Tanstack Form 1.0](https://tanstack.com/blog/announcing-tanstack-form-v1) -**Mark:** Tan Stack Form is a brand new form library in the vein of libraries like formic and React Hook form. This one I, I believe, was started by Tanner Winsley himself. The current maintainer is Corbin Crutchley who'd worked on a previous library, I think, called House Form, I believe. But like some of the big selling points are things like type safety, you know, being able to infer that, you know, like when you pass in the name of a field as an argument that all the other callbacks and everything else know exactly what the, you know, the proper value type for that field is. [00:07:41] +**Mark:** Tan Stack Form is a brand new form library in the vein of libraries like formic and React Hook form. This one I, I believe, was started by Tanner Winsley himself. The current maintainer is Corbin Crutchley who'd worked on a previous library, I think, called House Form, I believe. But like some of the big selling points are things like type safety, you know, being able to infer that, you know, like when you pass in the name of a field as an argument that all the other callbacks and everything else know exactly what the, you know, the proper value type for that field is. [07:41] -Lotted, different validation options a lot. And working with SSR and other scenarios haven't used it, but it looks fairly comprehensive and worth taking a look at as a, you know, form solution for your apps. [00:07:54] +Lotted, different validation options a lot. And working with SSR and other scenarios haven't used it, but it looks fairly comprehensive and worth taking a look at as a, you know, form solution for your apps. [07:54] ## [Zeego v3](https://github.com/nandorojo/zeego/releases/tag/v3.0.1) -**Mo:** Yeah, so Zeego is a library that I quite appreciate. So it's made by Fernando Roho, who very recently actually joined Vercel as their head of mobile, which is going to, which tells us a lot about the direction that Vercel is going in terms of some of their mobile offerings. But Zeego released a new sort of major release. [00:08:13] +**Mo:** Yeah, so Zeego is a library that I quite appreciate. So it's made by Fernando Roho, who very recently actually joined Vercel as their head of mobile, which is going to, which tells us a lot about the direction that Vercel is going in terms of some of their mobile offerings. But Zeego released a new sort of major release. [08:13] -And so the, the big points with this is and just just for a little bit of context, we have talked about Zeego before in the podcast, but just for anyone who might have missed it, Zeego is a library that allows you to create context menus that are native to each platform and it's universal. So what that means is that it will let you create context menus on the web and it defers that to something like rad. [00:08:34] +And so the, the big points with this is and just just for a little bit of context, we have talked about Zeego before in the podcast, but just for anyone who might have missed it, Zeego is a library that allows you to create context menus that are native to each platform and it's universal. So what that means is that it will let you create context menus on the web and it defers that to something like rad. [08:34] -Then on native platforms like iOS and Android, you actually get the native context menus that you get on the platform. So those are native elements that are rendered. And it's, it's a really good example of using the same API but getting very different looks and feels that are native to each platform. [00:08:49] +Then on native platforms like iOS and Android, you actually get the native context menus that you get on the platform. So those are native elements that are rendered. And it's, it's a really good example of using the same API but getting very different looks and feels that are native to each platform. [08:49] -So it's, it's, it's a, it's a cool library. It's a very nice like utility library that you might need to use when you wanna get some native functionality inside of your mobile app. But the major things with this is just supporting the new architecture and React native and working with some of the new versions of Expo. [00:09:04] +So it's, it's, it's a, it's a cool library. It's a very nice like utility library that you might need to use when you wanna get some native functionality inside of your mobile app. But the major things with this is just supporting the new architecture and React native and working with some of the new versions of Expo. [09:04] ## [Material UI v7](https://mui.com/blog/material-ui-v7-is-here/) ## ["Slot pattern" for overriding internals](https://mui.com/material-ui/customization/overriding-component-structure/) -**Carl:** Yeah. Material UI has version seven out. Main thing that caught my eye here is they have a slot pattern for overriding the internals of their different, you know, components. Customizing component library components is like the number one reason why I have not extensively used component libraries in my career. [00:09:25] +**Carl:** Yeah. Material UI has version seven out. Main thing that caught my eye here is they have a slot pattern for overriding the internals of their different, you know, components. Customizing component library components is like the number one reason why I have not extensively used component libraries in my career. [09:25] -I just, like every company I've worked for, they have wanted a greater level of customization than is achievable just by doing things with the component library. I've been very interested in Chad CN for that reason, because it's just like, it's a co generator, not a library. [00:09:40] +I just, like every company I've worked for, they have wanted a greater level of customization than is achievable just by doing things with the component library. I've been very interested in Chad CN for that reason, because it's just like, it's a co generator, not a library. [09:40] -You use it to make components and then you customize those components to your needs. But this looks like a really interesting alternative pattern for it. Basically, it looks like they have a pair of props slots and slot props where a component will specify different slots that you can override. [00:09:59] +You use it to make components and then you customize those components to your needs. But this looks like a really interesting alternative pattern for it. Basically, it looks like they have a pair of props slots and slot props where a component will specify different slots that you can override. [09:59] -So you can give it different components to put into places where, you know, like in, in a tab or a dropdown or whatever. That's really interesting. That seems good. Generally, it's nice that they are like trying to standardize it a little bit and like have a specification. I appreciate that and it's, yeah. [00:10:20] +So you can give it different components to put into places where, you know, like in, in a tab or a dropdown or whatever. That's really interesting. That seems good. Generally, it's nice that they are like trying to standardize it a little bit and like have a specification. I appreciate that and it's, yeah. [10:20] -I've seen a lot of libraries do things like add in. Sort of slots. They don't call it that, but like they let you pass in a component that it will use in place of something else or whatever. But I've always seen that as very like ad hoc and like there's no standardization or structure around it. [00:10:37] +I've seen a lot of libraries do things like add in. Sort of slots. They don't call it that, but like they let you pass in a component that it will use in place of something else or whatever. But I've always seen that as very like ad hoc and like there's no standardization or structure around it. [10:37] -So seeing this as a pattern is interesting to me. It's definitely, definitely interesting. Yeah. That's all I gotta say. [00:10:45] +So seeing this as a pattern is interesting to me. It's definitely, definitely interesting. Yeah. That's all I gotta say. [10:45] ## [Parcel v2.14](https://x.com/devongovett/status/1902022923764076808) -**Mark:** The Parcel Bundler released version two point 14, and this is kind of a big deal because it actually adds built-in React server component support. I was actually just looking at the download stats. So parcel has been around for several years. The primary author, Devin Govet, also works on React Aria and React Spectrum and a couple other component libraries. [00:11:05] +**Mark:** The Parcel Bundler released version two point 14, and this is kind of a big deal because it actually adds built-in React server component support. I was actually just looking at the download stats. So parcel has been around for several years. The primary author, Devin Govet, also works on React Aria and React Spectrum and a couple other component libraries. [11:05] -He's put a ton of effort into building it, but it's, it's very much an also ran in terms of actual usage. Like last month, Webpac had 116 million downloads. V had 85 million downloads. Parcel only had 800,000, so non-zero, but obviously not like, you know, anywhere near the level of the other tools. [00:11:25] +He's put a ton of effort into building it, but it's, it's very much an also ran in terms of actual usage. Like last month, Webpac had 116 million downloads. V had 85 million downloads. Parcel only had 800,000, so non-zero, but obviously not like, you know, anywhere near the level of the other tools. [11:25] -That said it is a, an actual tool in the space and so it is interesting to see what's more of a bundler rather than a framework. Adding React server component support and looking at the examples the usage pattern here looks to be a whole lot simpler than what Next has and, and has put together, you know, next is the, the defacto standard implementation of React Server components at this point. [00:11:52] +That said it is a, an actual tool in the space and so it is interesting to see what's more of a bundler rather than a framework. Adding React server component support and looking at the examples the usage pattern here looks to be a whole lot simpler than what Next has and, and has put together, you know, next is the, the defacto standard implementation of React Server components at this point. [11:52] -And so I think a lot of us have tended to assume that the way server components work in NEXT is the way that they work, whereas it, it's really more like React exposes the primitives and it's up to the framework or bundler to decide how they get used. So in this case, apparently parcel actually supports using server components, like just within a, like a, like a basic express request handler, which actually looks a lot simpler conceptually. [00:12:20] +And so I think a lot of us have tended to assume that the way server components work in NEXT is the way that they work, whereas it, it's really more like React exposes the primitives and it's up to the framework or bundler to decide how they get used. So in this case, apparently parcel actually supports using server components, like just within a, like a, like a basic express request handler, which actually looks a lot simpler conceptually. [12:20] -So parcel may not have a lot of actual real world usage, but this looks like a, a, a nice example of what can be done with server component support. [00:12:32] +So parcel may not have a lot of actual real world usage, but this looks like a, a, a nice example of what can be done with server component support. [12:32] -**Carl:** That's cool. Oh, nice. [00:12:33] +**Carl:** That's cool. Oh, nice. [12:33] ## [XState Store v3](https://stately.ai/blog/2025-02-26-xstate-store-v3) -**Mark:** Meanwhile, the, the X State and people, AKA, mostly David Khourshid has released X State Store. Version three. X State Store is meant to be a, a much wider weight state management tool. Kind of more along the lines of a, of a zoo stand, but with a little bit more of a, a state machine twist on it. So there, there's some updates to make the usage and the developer experience a little nicer. [00:13:00] +**Mark:** Meanwhile, the, the X State and people, AKA, mostly David Khourshid has released X State Store. Version three. X State Store is meant to be a, a much wider weight state management tool. Kind of more along the lines of a, of a zoo stand, but with a little bit more of a, a state machine twist on it. So there, there's some updates to make the usage and the developer experience a little nicer. [13:00] -**Carl:** Yeah. Love X State. I don't know, I've just always had an affinity for it. They had a, they've always had a great state machine design tool and I found that useful even while not using the library. So I dunno, I just like them. [00:13:11] +**Carl:** Yeah. Love X State. I don't know, I've just always had an affinity for it. They had a, they've always had a great state machine design tool and I found that useful even while not using the library. So I dunno, I just like them. [13:11] ## [Better Auth v1.2](https://www.better-auth.com/changelogs/1-2) -**Carl:** There's Better Auth version 1.2, which is interesting and cool. I have been following Better Off for a while. I haven't actually used it myself yet. But they've been, [00:13:21] +**Carl:** There's Better Auth version 1.2, which is interesting and cool. I have been following Better Off for a while. I haven't actually used it myself yet. But they've been, [13:21] -**Mark:** Theme of this podcast? [00:13:23] +**Mark:** Theme of this podcast? [13:23] -**Carl:** yeah, a little bit. There's just so many things. It's hard to stay, it's hard to, staying on top of it is hard to know. Actually using all of it as well is uh, impossible. [00:13:31] +**Carl:** yeah, a little bit. There's just so many things. It's hard to stay, it's hard to, staying on top of it is hard to know. Actually using all of it as well is uh, impossible. [13:31] -Yeah, I, I, I like the general vibe of it. [00:13:34] +Yeah, I, I, I like the general vibe of it. [13:34] -I have been let down by literally every auth tool that I've ever used. I have written my own auth far too many times because I'm so irritated with trying to use all of the authentications libraries. And yeah, this seems good. I'm just gonna read what bytes.dev said, 'cause they summed it up very well. [00:13:51] +I have been let down by literally every auth tool that I've ever used. I have written my own auth far too many times because I'm so irritated with trying to use all of the authentications libraries. And yeah, this seems good. I'm just gonna read what bytes.dev said, 'cause they summed it up very well. [13:51] -"It's got Stripe subscriptions, recapture API, keys teams and sub orgs and a new init CLI, and they rewrote the core library to fix TypeScript editor lags. So like, it just seems really good. They've really been on a tear with shipping improvements. Like I, I subscribed to GitHub notifications for them and I slightly regret it because I swear to God I got like five a week with just like beta releases and new minor releases. [00:14:18] +"It's got Stripe subscriptions, recapture API, keys teams and sub orgs and a new init CLI, and they rewrote the core library to fix TypeScript editor lags. So like, it just seems really good. They've really been on a tear with shipping improvements. Like I, I subscribed to GitHub notifications for them and I slightly regret it because I swear to God I got like five a week with just like beta releases and new minor releases. [14:18] -So it's, it's, I'm impressed at their pace of development. They seem to be doing a really good job of shipping pretty major upgrades as they go. So, if you're doing a greenfield project that needs authentication, consider it. [00:14:31] +So it's, it's, I'm impressed at their pace of development. They seem to be doing a really good job of shipping pretty major upgrades as they go. So, if you're doing a greenfield project that needs authentication, consider it. [14:31] ## Main Content -**Carl:** Mo can you tell us about Lynx? [00:14:33] +**Carl:** Mo can you tell us about Lynx? [14:33] ## [Lynx released](https://lynxjs.org/) ## [Release blog](https://lynxjs.org/blog/lynx-unlock-native-for-more) -**Mo:** SO this is, this is not specifically React native related, but it's React native adjacent and definitely react related. So, you may have heard that bite Dance, the team behind TikTok released links, and links is effectively sort of a competitor to React Native. They've created another way that to build native applications using JavaScript tooling and using React as the way that you define UIs, which is really cool. [00:15:01] +**Mo:** SO this is, this is not specifically React native related, but it's React native adjacent and definitely react related. So, you may have heard that bite Dance, the team behind TikTok released links, and links is effectively sort of a competitor to React Native. They've created another way that to build native applications using JavaScript tooling and using React as the way that you define UIs, which is really cool. [15:01] -And so, the, the real sort of reason why why this is exciting is because this is actually what's powering TikTok behind the scenes. So this is what they're using internally for TikTok. And you know, TikTok is as large scale of an application as comes. And so it's actually quite a. Quite a big deal to have something like this release and it brings healthy competition to the space of sort of cross-platform native applications where it's been traditionally just rack native and flutter. [00:15:27] +And so, the, the real sort of reason why why this is exciting is because this is actually what's powering TikTok behind the scenes. So this is what they're using internally for TikTok. And you know, TikTok is as large scale of an application as comes. And so it's actually quite a. Quite a big deal to have something like this release and it brings healthy competition to the space of sort of cross-platform native applications where it's been traditionally just rack native and flutter. [15:27] -So I think there's some really interesting stuff here. The TLDR is that they have a sort of multi-threaded a multi-threaded architecture in place. And that's one of the things that they really, really empathize, em, emphasize on. And so the whole idea is that this architecture and this multi-threaded runtime allows you to take priority on sort of synchronous UI tasks that are high priority so that the app feels snappy and responsive. [00:15:52] +So I think there's some really interesting stuff here. The TLDR is that they have a sort of multi-threaded a multi-threaded architecture in place. And that's one of the things that they really, really empathize, em, emphasize on. And so the whole idea is that this architecture and this multi-threaded runtime allows you to take priority on sort of synchronous UI tasks that are high priority so that the app feels snappy and responsive. [15:52] -And things like event handlings are done sort of with a high priority. This is getting quite similar to the space of sort of what the React native team is trying to achieve with the new architecture, which was trying to. Targets similar benefits. And so they, they give a lot of examples on things like instant first frame rendering, which is one of the metrics that they're trying to target with this architecture to make sure that the first time you open up your app, you get as quick to instant as possible launches. [00:16:18] +And things like event handlings are done sort of with a high priority. This is getting quite similar to the space of sort of what the React native team is trying to achieve with the new architecture, which was trying to. Targets similar benefits. And so they, they give a lot of examples on things like instant first frame rendering, which is one of the metrics that they're trying to target with this architecture to make sure that the first time you open up your app, you get as quick to instant as possible launches. [16:18] -And sort of multi-threaded scripts for when there's a you know, important scrolling event or something that requires really good responsiveness. Having those sort of concepts embedded into the architecture, which is really, really quite cool. And one of the nice things about this is that their JavaScript layer functionality is not actually react specific. [00:16:36] +And sort of multi-threaded scripts for when there's a you know, important scrolling event or something that requires really good responsiveness. Having those sort of concepts embedded into the architecture, which is really, really quite cool. And one of the nice things about this is that their JavaScript layer functionality is not actually react specific. [16:36] -So in theory, down the line, albeit React is really the only main way that you can define UIs right now down the line, they may create other versions of it. So currently there's links, which is the core, and then there's React links as well, which is the sort of the React library that you can use to define UIs for links currently. [00:16:54] +So in theory, down the line, albeit React is really the only main way that you can define UIs right now down the line, they may create other versions of it. So currently there's links, which is the core, and then there's React links as well, which is the sort of the React library that you can use to define UIs for links currently. [16:54] -There could be in the future initiatives where it can allow you to use other UI libraries to do this, which can be really quite cool. [00:16:59] +There could be in the future initiatives where it can allow you to use other UI libraries to do this, which can be really quite cool. [16:59] -**Mark:** I think I saw even at least a mention or like someone at least asking like, when can you use Vue with this? And it sounded like that was a thing that they were trying to work on. [00:17:07] +**Mark:** I think I saw even at least a mention or like someone at least asking like, when can you use Vue with this? And it sounded like that was a thing that they were trying to work on. [17:07] -**Carl:** Interesting. [00:17:08] +**Carl:** Interesting. [17:08] -**Mo:** but you know, that in itself is quite powerful because, you know, one of the, you know, there is nothing like rack native or there wasn't anything like rack native where you could use web-based UI libraries to define a mobile app. And so this actually opens up the door for people to use view to make actual native apps rather than sort of PWAs or hybrid web view based apps that are not gonna be good experiences. [00:17:31] +**Mo:** but you know, that in itself is quite powerful because, you know, one of the, you know, there is nothing like rack native or there wasn't anything like rack native where you could use web-based UI libraries to define a mobile app. And so this actually opens up the door for people to use view to make actual native apps rather than sort of PWAs or hybrid web view based apps that are not gonna be good experiences. [17:31] -So, quite exciting stuff. [00:17:33] +So, quite exciting stuff. [17:33] -**Carl:** That is really interesting. And it, it's, it's funny that I feel like over the last year we've talked about a couple of projects that we're exploring different ways of authoring react and getting some form of mobile app out of it. And I'm surprised that there's still like new approaches. This, we've seen so many with like, I don't know, react native web and I'm forgetting the names of all of them, but I swear to God [00:17:55] +**Carl:** That is really interesting. And it, it's, it's funny that I feel like over the last year we've talked about a couple of projects that we're exploring different ways of authoring react and getting some form of mobile app out of it. And I'm surprised that there's still like new approaches. This, we've seen so many with like, I don't know, react native web and I'm forgetting the names of all of them, but I swear to God [17:55] -Four of React strict dom. [00:17:56] +Four of React strict dom. [17:56] -Yep. So, okay. Interesting. That sounds really cool. And I like that there's a way, I don't know, just like it, I love the web. I secretly wish that Web os from like 2012 had been a viable option. So it's just, I'm, I'm, I love seeing the web expand more meaningfully into the native arena. That's really cool. [00:18:17] +Yep. So, okay. Interesting. That sounds really cool. And I like that there's a way, I don't know, just like it, I love the web. I secretly wish that Web os from like 2012 had been a viable option. So it's just, I'm, I'm, I love seeing the web expand more meaningfully into the native arena. That's really cool. [18:17] -Cool. Alright. Into the headline. [00:18:20] +Cool. Alright. Into the headline. [18:20] -## [Security vulneratibility](https://nextjs.org/blog/cve-2025-29927) in Next.js: [CVE-2025-29927](https://github.com/advisories/GHSA-f82v-jwr5-mffw)[00:18:20] [Original researcher report](https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware) +## [Security vulneratibility](https://nextjs.org/blog/cve-2025-29927) in Next.js: [CVE-2025-29927](https://github.com/advisories/GHSA-f82v-jwr5-mffw)[18:20] [Original researcher report](https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware) -**Mark:** All right. The biggest news story of the month occurred just a few days ago, and that was that there was a major security vulnerability with next's middleware implementation that ultimately allowed any external attacker to send a fairly simple set of headers and force next to skip the middleware. [00:18:46] +**Mark:** All right. The biggest news story of the month occurred just a few days ago, and that was that there was a major security vulnerability with next's middleware implementation that ultimately allowed any external attacker to send a fairly simple set of headers and force next to skip the middleware. [18:46] -And if you, your app used the middleware to provide authentication to. You could actually just bypass the entire authentication process. So the assumption here is if you're using next to do middleware, and then there's some other caveats around where your app's actually hosted. But ultimately this was rated as an extremely high concern security vulnerability. [00:19:11] +And if you, your app used the middleware to provide authentication to. You could actually just bypass the entire authentication process. So the assumption here is if you're using next to do middleware, and then there's some other caveats around where your app's actually hosted. But ultimately this was rated as an extremely high concern security vulnerability. [19:11] -So Next has released actual, actual fixes across a couple different major versions to try to patch up the issue. There's been. You know, breakdowns of, you know, what the actual bug is and why this is a concern and how it works. And then there's been a lot of fallout from this issue in terms of how did Vercel handle communicating the vulnerability to the general public as well as other partners. [00:19:38] +So Next has released actual, actual fixes across a couple different major versions to try to patch up the issue. There's been. You know, breakdowns of, you know, what the actual bug is and why this is a concern and how it works. And then there's been a lot of fallout from this issue in terms of how did Vercel handle communicating the vulnerability to the general public as well as other partners. [19:38] -And follow on questions like, you know, how does Vercel and next actually kind of handle their development processes? associated pieces to go through with this. So let's, let's try and break some of this stuff down. [00:19:49] +And follow on questions like, you know, how does Vercel and next actually kind of handle their development processes? associated pieces to go through with this. So let's, let's try and break some of this stuff down. [19:49] -**Carl:** Let's see what we can do. Yeah. So you, you mentioned how many versions that they shipped. So they, in, in their, you know, blog post, it's very. I don't know, no details, no extra explaining what happened. They explaining the advisory, I guess they, they then put out a, like timeline of the thing and gave a lot more details. [00:20:09] +**Carl:** Let's see what we can do. Yeah. So you, you mentioned how many versions that they shipped. So they, in, in their, you know, blog post, it's very. I don't know, no details, no extra explaining what happened. They explaining the advisory, I guess they, they then put out a, like timeline of the thing and gave a lot more details. [20:09] -But so they released patches for version 12, 13, 14, and 15, which means that this has been a vulnerability since at least 2021, which is wild [00:20:19] +But so they released patches for version 12, 13, 14, and 15, which means that this has been a vulnerability since at least 2021, which is wild [20:19] -**Mark:** It sounds sounds like Al, almost exactly, almost since like the, the middleware feature probably came into existence. [00:20:26] +**Mark:** It sounds sounds like Al, almost exactly, almost since like the, the middleware feature probably came into existence. [20:26] -**Carl:** Which I guess that makes sense. Like you add a new feature and it has vulnerabilities and until somebody notices it, you don't fix it. But wow, four years for an auth bypass based on a header. [00:20:36] +**Carl:** Which I guess that makes sense. Like you add a new feature and it has vulnerabilities and until somebody notices it, you don't fix it. But wow, four years for an auth bypass based on a header. [20:36] ## [CVEs and the NVD Process](https://nvd.nist.gov/general/cve-process) -**Carl:** So I want to lead in a little bit breaking down like the CVE process, which I am not sure. I feel like everyone, I feel like a lot of people will have a general, I. [00:20:47] +**Carl:** So I want to lead in a little bit breaking down like the CVE process, which I am not sure. I feel like everyone, I feel like a lot of people will have a general, I. [20:47] -Awareness of what, of what A CVE is. I didn't quite realize that it was like an NIST national Institute of Standards and Technology Program. Like this is a government program established in 1999 to track, [00:21:02] +Awareness of what, of what A CVE is. I didn't quite realize that it was like an NIST national Institute of Standards and Technology Program. Like this is a government program established in 1999 to track, [21:02] -**Mark:** known security bugs. [00:21:04] +**Mark:** known security bugs. [21:04] -**Carl:** Right. So like, yeah, and it has a, there's a calculator that lets you figure out the severity of a vulnerability. [00:21:12] +**Carl:** Right. So like, yeah, and it has a, there's a calculator that lets you figure out the severity of a vulnerability. [21:12] -And it has criteria like the attack vector, the attack complexity, the requirements of the attack privileges required, user interaction are required, and then the impact of the vulnerability. It's confidentiality, integrity, availability. It's basically like how do you do the attack and if you execute the attack, what are the impact, what are the effects of it? [00:21:35] +And it has criteria like the attack vector, the attack complexity, the requirements of the attack privileges required, user interaction are required, and then the impact of the vulnerability. It's confidentiality, integrity, availability. It's basically like how do you do the attack and if you execute the attack, what are the impact, what are the effects of it? [21:35] -So this. You know, the scoring criteria for this vulnerability is it's a network attack vector, which means you don't need to be physically present which is bad if you can do it over the network that's like a high level of access. The attack complexity is low, the privileges required are none. [00:21:54] +So this. You know, the scoring criteria for this vulnerability is it's a network attack vector, which means you don't need to be physically present which is bad if you can do it over the network that's like a high level of access. The attack complexity is low, the privileges required are none. [21:54] -The user interaction required is none. And the impacts confidentiality are high, integrity is high but no impact on availability. So you can, you know, get into confidential spaces and, you know, violate the integrity of the data. [00:22:09] +The user interaction required is none. And the impacts confidentiality are high, integrity is high but no impact on availability. So you can, you know, get into confidential spaces and, you know, violate the integrity of the data. [22:09] -You so it, it's, it's basically an attack you can do from anywhere in the world that's very simple. That gets you a high level of access, which is why this is a, you know, critical severity bug. That's so bad. Oh my God. Just for a, a bug of that severity to exist for four years before anyone noticed is oof rough. [00:22:30] +You so it, it's, it's basically an attack you can do from anywhere in the world that's very simple. That gets you a high level of access, which is why this is a, you know, critical severity bug. That's so bad. Oh my God. Just for a, a bug of that severity to exist for four years before anyone noticed is oof rough. [22:30] -**Mark:** The general concept here is that, you know, middleware can be chained together. But there's, there's internal implementation details around like possibly needing to rerun middleware or possibly needing to skip middleware. [00:22:43] +**Mark:** The general concept here is that, you know, middleware can be chained together. But there's, there's internal implementation details around like possibly needing to rerun middleware or possibly needing to skip middleware. [22:43] -And so at some point Versel opted to implement skipping, running middleware by looking for a specific header that they could attach to the request. And the intent was that this would only be an internal thing, that the header would only ever get added by next itself in response to, some piece of code saying, Hey, we're, we're good. [00:23:09] +And so at some point Versel opted to implement skipping, running middleware by looking for a specific header that they could attach to the request. And the intent was that this would only be an internal thing, that the header would only ever get added by next itself in response to, some piece of code saying, Hey, we're, we're good. [23:09] -We can just keep going. Or I guess maybe to, to, to get rid of loops in the middleware chain. And someone figured out that. You know, wait a minute, I could, I could attach this kind of a header as part of an external request. And the piece of information that next was looking for the, in the header is just a name of the middleware itself, which is pretty much always based on the file you would've added in your next project, which is apparently in some cases like just the literal word middleware. [00:23:44] +We can just keep going. Or I guess maybe to, to, to get rid of loops in the middleware chain. And someone figured out that. You know, wait a minute, I could, I could attach this kind of a header as part of an external request. And the piece of information that next was looking for the, in the header is just a name of the middleware itself, which is pretty much always based on the file you would've added in your next project, which is apparently in some cases like just the literal word middleware. [23:44] -And so you could end up like having a header value of middleware, colon, middleware, colon, middleware, colon or something like that. the end result is that someone could send a request to a next base server, add this header to their original external request, and end up convincing next, skip all the middleware and never run them. [00:24:07] +And so you could end up like having a header value of middleware, colon, middleware, colon, middleware, colon or something like that. the end result is that someone could send a request to a next base server, add this header to their original external request, and end up convincing next, skip all the middleware and never run them. [24:07] -And. And so if some of the were trained to do authentication, then the request would end up just skipping that entire process. I believe Vercel said that the way they have their systems architecture set up it was not really possible to have that be a problem on if your app was hosted on Vercel infrastructure. But then there was questions of, okay, well what if you're running on Netlify or CloudFlare or using one of the Open Next adapters? So the bug exists in next, and then there's the question of, well, how is next being hosted and what requests could actually get through? [00:24:46] +And. And so if some of the were trained to do authentication, then the request would end up just skipping that entire process. I believe Vercel said that the way they have their systems architecture set up it was not really possible to have that be a problem on if your app was hosted on Vercel infrastructure. But then there was questions of, okay, well what if you're running on Netlify or CloudFlare or using one of the Open Next adapters? So the bug exists in next, and then there's the question of, well, how is next being hosted and what requests could actually get through? [24:46] -**Carl:** Right, so. I think what I saw is that they're saying if you hosted on Vercel, you were never vulnerable to this because of how we set up our system, which is great. I guess this. Certainly fuel on the fire of like Vercel is privileging itself in the ecosystem. [00:25:03] +**Carl:** Right, so. I think what I saw is that they're saying if you hosted on Vercel, you were never vulnerable to this because of how we set up our system, which is great. I guess this. Certainly fuel on the fire of like Vercel is privileging itself in the ecosystem. [25:03] ## [Postmortem on Next.js Middleware bypass](https://vercel.com/blog/postmortem-on-next-js-middleware-bypass) -**Carl:** And I guess building on that a bit, so they put out, you know, their postmortem breaking it down and breaking down the response. [00:25:11] +**Carl:** And I guess building on that a bit, so they put out, you know, their postmortem breaking it down and breaking down the response. [25:11] -**Mark:** Which, which came out about like, like two to three days after the actual announcements. [00:25:16] +**Mark:** Which, which came out about like, like two to three days after the actual announcements. [25:16] -**Carl:** Right. And it looks like, you know, in the timeline they talk about like receiving emails and like multiple reports, which delayed the triaging. But like, you know, the core of the timeline, I. [00:25:27] +**Carl:** Right. And it looks like, you know, in the timeline they talk about like receiving emails and like multiple reports, which delayed the triaging. But like, you know, the core of the timeline, I. [25:27] -**Mark:** A month or something. [00:25:28] +**Mark:** A month or something. [25:28] -**Carl:** it looks like somebody reported this at the end of February on the 27th, and then it didn't get triaged until two weeks later, which seems not good. [00:25:38] +**Carl:** it looks like somebody reported this at the end of February on the 27th, and then it didn't get triaged until two weeks later, which seems not good. [25:38] -I don't know. I, I, I have done triaging of security vulnerabilities. I was the point person for that at my last job for like two years, a year and a half, something like that. And there's a lot of noise. There's a lot of garbage that comes in. There's a lot of, you know, quote unquote security researchers who are just like running automated tools like nmp. [00:25:58] +I don't know. I, I, I have done triaging of security vulnerabilities. I was the point person for that at my last job for like two years, a year and a half, something like that. And there's a lot of noise. There's a lot of garbage that comes in. There's a lot of, you know, quote unquote security researchers who are just like running automated tools like nmp. [25:58] -You know, it's like, you know, you are an NPM audit and it's like 63 critical violations and like, none of them actually matter at all. So like, there is a lot of noise and I can understand how triaging might get delayed, but you know, like even just reading the headline, you know, if somebody submits like authorization bypass, like that would wake me up. [00:26:17] +You know, it's like, you know, you are an NPM audit and it's like 63 critical violations and like, none of them actually matter at all. So like, there is a lot of noise and I can understand how triaging might get delayed, but you know, like even just reading the headline, you know, if somebody submits like authorization bypass, like that would wake me up. [26:17] -So, I don't know, just waiting for two week lag time on that is not ideal. [00:26:22] +So, I don't know, just waiting for two week lag time on that is not ideal. [26:22] -**Mark:** One, I mean, one, one bit of that is, it sounds like the initial submission just said, this looks like it's a problem in next, in, next next 12, which was out of date. And so like it sounded like someone may have glanced at it and said, oh, we don't even support next 12 anymore. It's not a big deal. [00:26:38] +**Mark:** One, I mean, one, one bit of that is, it sounds like the initial submission just said, this looks like it's a problem in next, in, next next 12, which was out of date. And so like it sounded like someone may have glanced at it and said, oh, we don't even support next 12 anymore. It's not a big deal. [26:38] -And then the researcher came back and said, actually, it's a problem in like every version of next. And that finally got someone to wake up. [00:26:46] +And then the researcher came back and said, actually, it's a problem in like every version of next. And that finally got someone to wake up. [26:46] -**Carl:** for sure right? So, like, okay. Devil's in the details on this as always, but yeah, it's not a great situation. And what's more is that, it sounds like they did no coordinated disclosure. [00:27:00] +**Carl:** for sure right? So, like, okay. Devil's in the details on this as always, but yeah, it's not a great situation. And what's more is that, it sounds like they did no coordinated disclosure. [27:00] ## [Next.js and Coordinated Disclosure](https://sxlijin.github.io/2025-03-23-next-js-and-coordinated-disclosure) -**Carl:** This person talks about some other CVE environments or disclosures that they've either, you know, been a part of seen and for instance, you know, like heart bleed, some of those other like large scale mass impact vulnerabilities, like this is not obviously of that scale, but it is large. [00:27:21] +**Carl:** This person talks about some other CVE environments or disclosures that they've either, you know, been a part of seen and for instance, you know, like heart bleed, some of those other like large scale mass impact vulnerabilities, like this is not obviously of that scale, but it is large. [27:21] -So the, the, those ones like heart bleed, they had like multiple months of coordinated disclosure where behind the scenes in secret. You know, once these vulnerabilities are known, the companies are coordinating with each other to say like, are you vulnerable? Yes. Here's how we fix that. Are you? Yes. Okay, let's fix that too. [00:27:40] +So the, the, those ones like heart bleed, they had like multiple months of coordinated disclosure where behind the scenes in secret. You know, once these vulnerabilities are known, the companies are coordinating with each other to say like, are you vulnerable? Yes. Here's how we fix that. Are you? Yes. Okay, let's fix that too. [27:40] -And. What they're claiming is that Net or Vercel did nothing like that. They received a report, they validated it, they pushed their own fixes, and then they went public with it and basically caught other platforms like Netlify, cloud Flare, et cetera, with their pants down. And it was just like, oh shit. [00:28:02] +And. What they're claiming is that Net or Vercel did nothing like that. They received a report, they validated it, they pushed their own fixes, and then they went public with it and basically caught other platforms like Netlify, cloud Flare, et cetera, with their pants down. And it was just like, oh shit. [28:02] -You what? What? We're vulnerable. And so now everyone's scrambling. And it's been publicly, it is, it's been publicized. So like now many websites are vulnerable, it's public knowledge and the a patch isn't ready. So like, that's, that's just not nice. it's not collaborative at all for sure. [00:28:22] +You what? What? We're vulnerable. And so now everyone's scrambling. And it's been publicly, it is, it's been publicized. So like now many websites are vulnerable, it's public knowledge and the a patch isn't ready. So like, that's, that's just not nice. it's not collaborative at all for sure. [28:22] -So it, it just means that like, it became a race to fix this before it got exploited in the wild. That's definitely not ideal that like that's, I guess I can understand how a company might say like, this is a problem with our product. We are fixing it. We have fixed it. It is time to go public. I guess I can understand that thought process, but man, as far as like being a participant in a broader ecosystem, that's a big blind spot. [00:28:49] +So it, it just means that like, it became a race to fix this before it got exploited in the wild. That's definitely not ideal that like that's, I guess I can understand how a company might say like, this is a problem with our product. We are fixing it. We have fixed it. It is time to go public. I guess I can understand that thought process, but man, as far as like being a participant in a broader ecosystem, that's a big blind spot. [28:49] -**Mark:** yeah. The, that, that link about coordinated disclosure is really good. It, it breaks down what did happen at what times, and then talks about like what are, what are the proper practices for handling a security disclosure? What did, like, what actually happened instead? How did this, like, how did other people end up finding out about it? [00:29:09] +**Mark:** yeah. The, that, that link about coordinated disclosure is really good. It, it breaks down what did happen at what times, and then talks about like what are, what are the proper practices for handling a security disclosure? What did, like, what actually happened instead? How did this, like, how did other people end up finding out about it? [29:09] -And then like, what, what would have been a proper sequence of results? Instead, I. So like ultimately, you know, things have sort of been handled here, but really, really badly along the way. [00:29:24] +And then like, what, what would have been a proper sequence of results? Instead, I. So like ultimately, you know, things have sort of been handled here, but really, really badly along the way. [29:24] -**Carl:** Yeah, and I guess one more detail that I'll highlight as part of like, this response was not handled well and maybe went through the wrong channels, the wrong internal channels. when they announced the vulnerability, I. One of their claims as part of it, which is accurate as best I can tell, is that you as our customers of Vercel, were not vulnerable because you were protected by our firewall. [00:29:47] +**Carl:** Yeah, and I guess one more detail that I'll highlight as part of like, this response was not handled well and maybe went through the wrong channels, the wrong internal channels. when they announced the vulnerability, I. One of their claims as part of it, which is accurate as best I can tell, is that you as our customers of Vercel, were not vulnerable because you were protected by our firewall. [29:47] -So it's like, it feels like it went through the marketing department rather than like, I don't know, engineering, security, whatever, where they were making an honest claim about a differentiating factor. But like part of the differentiating is that they were not collaborating with anyone else to help protect end users. [00:30:08] +So it's like, it feels like it went through the marketing department rather than like, I don't know, engineering, security, whatever, where they were making an honest claim about a differentiating factor. But like part of the differentiating is that they were not collaborating with anyone else to help protect end users. [30:08] -So it's like, yeah, sure that's true, but it's also kind of mean that you did that. So, I don't know. It's not ideal. Not great. [00:30:17] +So it's like, yeah, sure that's true, but it's also kind of mean that you did that. So, I don't know. It's not ideal. Not great. [30:17] ## [You should know this before choosing Next.js](https://eduardoboucas.com/posts/2025-03-25-you-should-know-this-before-choosing-nextjs/) -**Mark:** And then one other good blog post related to this somebody who works at Netlify and has spent a lot of their engineering time trained to reverse engineer some of the somewhat more proprietary features of Next to make sure that they work on Netlify. Wrote a very long blog post that. Digs into both, you know, some of the, some of the vulnerability aspects, but then also just general concerns about the way next is developed and deployed and, you know, does not necessarily work with the ecosystem as well as it ought to. [00:30:54] +**Mark:** And then one other good blog post related to this somebody who works at Netlify and has spent a lot of their engineering time trained to reverse engineer some of the somewhat more proprietary features of Next to make sure that they work on Netlify. Wrote a very long blog post that. Digs into both, you know, some of the, some of the vulnerability aspects, but then also just general concerns about the way next is developed and deployed and, you know, does not necessarily work with the ecosystem as well as it ought to. [30:54] -Describing a lot, a lot of the concerns, you know, that there, that there aren't, official adapters to run on other platforms that it doesn't have serverless support, that there's certain code paths that really only work on versal. And then also kind of talking about, you know, some of the security aspects. [00:31:11] +Describing a lot, a lot of the concerns, you know, that there, that there aren't, official adapters to run on other platforms that it doesn't have serverless support, that there's certain code paths that really only work on versal. And then also kind of talking about, you know, some of the security aspects. [31:11] -It's not like, it's not a, it's not a flat out indictment, but it's a, it's a very fairly written post from, you know, someone who acknowledges, you know, the own biases upfront, but like, it's a, it's a very valid set of concerns from someone who deals with next, from an external ecosystem perspective. [00:31:29] +It's not like, it's not a, it's not a flat out indictment, but it's a, it's a very fairly written post from, you know, someone who acknowledges, you know, the own biases upfront, but like, it's a, it's a very valid set of concerns from someone who deals with next, from an external ecosystem perspective. [31:29] -**Carl:** Sure. [00:31:30] +**Carl:** Sure. [31:30] -Yeah. Not a great situation overall, but it's out, it's fixed. That's good. Onto the next [00:31:35] +Yeah. Not a great situation overall, but it's out, it's fixed. That's good. Onto the next [31:35] -um, okay. [00:31:37] +um, okay. [31:37] ## [React Native 0.78 - React 19 and more](https://reactnative.dev/blog/2025/02/19/react-native-0.78) -**Mo:** We are back with another release of React Native. And so this one is is focused again, we're, we're going through faster releases now. So you might've noticed if you've been staying tuned for a little while that our release cadence within the React native ecosystem is becoming shorter and shorter, which is great news because it means we get updates quicker. [00:31:58] +**Mo:** We are back with another release of React Native. And so this one is is focused again, we're, we're going through faster releases now. So you might've noticed if you've been staying tuned for a little while that our release cadence within the React native ecosystem is becoming shorter and shorter, which is great news because it means we get updates quicker. [31:58] -And that's largely due to the new architecture being out now. And so that allows us to basically the, the core of React native is a lot more stable. And so there is there's, there's more of a foundation to release a lot faster, which is great. Other highlights for this release is React 19 is now available on React Native, which is great. [00:32:17] +And that's largely due to the new architecture being out now. And so that allows us to basically the, the core of React native is a lot more stable. And so there is there's, there's more of a foundation to release a lot faster, which is great. Other highlights for this release is React 19 is now available on React Native, which is great. [32:17] -So if you, you know, followed along with the previous React 18 implementation for React Native, you will have been aware that it took years to get it up to date with all of the React 18 features, largely because of the new architecture not being out fully. And so now you can see there's much of a smaller lead time to get React 19 support. [00:32:38] +So if you, you know, followed along with the previous React 18 implementation for React Native, you will have been aware that it took years to get it up to date with all of the React 18 features, largely because of the new architecture not being out fully. And so now you can see there's much of a smaller lead time to get React 19 support. [32:38] -So all of the new sort of features of React, things like actions use, optimistic, the use hook, all of that stuff, and, you know, not needing to use forward ref anymore. All of that stuff is there now. On top of that the React compiler support is is now there. So you can actually install the compiler, configure it, and it should be able to work just as you would on the web, which is awesome. [00:32:59] +So all of the new sort of features of React, things like actions use, optimistic, the use hook, all of that stuff, and, you know, not needing to use forward ref anymore. All of that stuff is there now. On top of that the React compiler support is is now there. So you can actually install the compiler, configure it, and it should be able to work just as you would on the web, which is awesome. [32:59] -The, probably the most, important feature for the community though is that they've brought back JavaScript logs in your metro bundler. So this was one of the things that the react native team did last release was they removed logs being shown in your JavaScript bundler. So they were trying to push people to use the react dev tools that they released, or the new dev tools that they released for the React native ecosystem only to face the most crazy amount of backlash from the community because their logs had moved. [00:33:27] +The, probably the most, important feature for the community though is that they've brought back JavaScript logs in your metro bundler. So this was one of the things that the react native team did last release was they removed logs being shown in your JavaScript bundler. So they were trying to push people to use the react dev tools that they released, or the new dev tools that they released for the React native ecosystem only to face the most crazy amount of backlash from the community because their logs had moved. [33:27] -And people were very unhappy about that. So, they rolled back that. you can pass on a flag now and basically get the logs showing in your bundler once again, like it was for the last. However many years React native has been out for. And so they have said that they will eventually remove this again. [00:33:43] +And people were very unhappy about that. So, they rolled back that. you can pass on a flag now and basically get the logs showing in your bundler once again, like it was for the last. However many years React native has been out for. And so they have said that they will eventually remove this again. [33:43] -But they're trying to give a little bit more time for people to adjust to using the new dev tools. So we'll see how that goes when that happens. Once again, there's some other minor changes, but those are really the big things that's worth mentioning. And I think we're gonna get a lot more React native releases happening a lot more regularly since the new architecture is up. [00:34:00] +But they're trying to give a little bit more time for people to adjust to using the new dev tools. So we'll see how that goes when that happens. Once again, there's some other minor changes, but those are really the big things that's worth mentioning. And I think we're gonna get a lot more React native releases happening a lot more regularly since the new architecture is up. [34:00] -**Mark:** Sounds like a pretty substantial set of changes. [00:34:02] +**Mark:** Sounds like a pretty substantial set of changes. [34:02] -**Carl:** And it's cool that they are able to release more quickly, to keep better aligned with the, you know, main mainline react version. I hadn't really registered that as a benefit that would come out of the new architecture, but it makes sense, especially while they are effectively maintaining two versions, you know, new architecture, old architecture, suddenly only have to do the new architecture. [00:34:25] +**Carl:** And it's cool that they are able to release more quickly, to keep better aligned with the, you know, main mainline react version. I hadn't really registered that as a benefit that would come out of the new architecture, but it makes sense, especially while they are effectively maintaining two versions, you know, new architecture, old architecture, suddenly only have to do the new architecture. [34:25] -That makes a lot of sense. That's super cool. [00:34:27] +That makes a lot of sense. That's super cool. [34:27] ## [React Native Core Contributor Summit 2024 Recap](https://reactnative.dev/blog/2025/02/03/react-native-core-contributor-summit-2024) -**Mo:** So the, the next thing that I, I thought I'd just drop in here. it was technically published in February, but I think we missed it and I, I wasn't around in February is the React Native Core contributor Summit for 2024. The recap was finally released. So this is an article on the rec native dev blog. [00:34:43] +**Mo:** So the, the next thing that I, I thought I'd just drop in here. it was technically published in February, but I think we missed it and I, I wasn't around in February is the React Native Core contributor Summit for 2024. The recap was finally released. So this is an article on the rec native dev blog. [34:43] -I actually co-authored this. So last year in SLA in in Poland, I think it was around September we had the React Native Core Contributor Summit, which is a, a full day workshop. Talking about a bunch of different. Things that are strategic to React native in general. And one of the things we talked about was the release process. [00:35:02] +I actually co-authored this. So last year in SLA in in Poland, I think it was around September we had the React Native Core Contributor Summit, which is a, a full day workshop. Talking about a bunch of different. Things that are strategic to React native in general. And one of the things we talked about was the release process. [35:02] -We talked about, you know, what's the next big thing after the new architecture. So there was a bunch of different sessions and we split off. There was a session about how do we bring web APIs into, into to, to the React native world to standardize some of the APIs for interacting with the native layer. [00:35:15] +We talked about, you know, what's the next big thing after the new architecture. So there was a bunch of different sessions and we split off. There was a session about how do we bring web APIs into, into to, to the React native world to standardize some of the APIs for interacting with the native layer. [35:15] -So a lot of really interesting stuff. We talked about Nitro modules, which is sort of, we've talked about several times in the last few sort of podcast episodes outta tree platforms and react native on desktop. I held a session as well, so I led a session during this during this core contributor summit lean Core 2.0. [00:35:31] +So a lot of really interesting stuff. We talked about Nitro modules, which is sort of, we've talked about several times in the last few sort of podcast episodes outta tree platforms and react native on desktop. I held a session as well, so I led a session during this during this core contributor summit lean Core 2.0. [35:31] -So just for a bit of context lean core, was an initiative in the React native ecosystem back in 2019. And so the goal of Lean Core was to bring down the surface area of React Native's, core APIs because there was just so much stuff in there. Like somebody needed access to something in IOS's specific APIs and they just create a component and pop it into React Native Core and that would just be a part of maintenance burden for the core React native team. [00:35:56] +So just for a bit of context lean core, was an initiative in the React native ecosystem back in 2019. And so the goal of Lean Core was to bring down the surface area of React Native's, core APIs because there was just so much stuff in there. Like somebody needed access to something in IOS's specific APIs and they just create a component and pop it into React Native Core and that would just be a part of maintenance burden for the core React native team. [35:56] -So there wasn't much strategic direction around what goes into core and what goes into sort of community packages. And so they went through this effort in 2019. But the goal of the session this time around was actually, I think we we're due for another cleanup. 'cause there's a lot of random stuff there that is either props in certain core components that are tying specifically to Android or iOS, or there's just some components that don't get used anymore because there's much better components in community libraries that you can use. [00:36:23] +So there wasn't much strategic direction around what goes into core and what goes into sort of community packages. And so they went through this effort in 2019. But the goal of the session this time around was actually, I think we we're due for another cleanup. 'cause there's a lot of random stuff there that is either props in certain core components that are tying specifically to Android or iOS, or there's just some components that don't get used anymore because there's much better components in community libraries that you can use. [36:23] -And most people end up using those. So it was a good conversation around what should be deprecated in the long run. And so that's one of the sessions that I think was quite fruitful. And I say that probably being quite biased because I was the person who hosted the session. But yeah, that's a, that's a summary about the uh, the React Native core contributor Summit from last year. [00:36:39] +And most people end up using those. So it was a good conversation around what should be deprecated in the long run. And so that's one of the sessions that I think was quite fruitful. And I say that probably being quite biased because I was the person who hosted the session. But yeah, that's a, that's a summary about the uh, the React Native core contributor Summit from last year. [36:39] -If you're interested please feel free to go and, and read the article. [00:36:42] +If you're interested please feel free to go and, and read the article. [36:42] ## [TypeScript compiler Golang rewrite??](https://devblogs.microsoft.com/typescript/typescript-native-port/) -**Mark:** Alright, so the other really big piece in and piece of news for not just the React ecosystem, but the web development ecosystem as a whole is the, the TypeScript team has officially announced that they have created a fort, not a rewrite of the TypeScript compiler, the current version of TypeScript itself is written in TypeScript, which means it's actually, you know, in the end it's the, it's just JavaScript executing and they have ported the compiler itself to be written in. [00:37:14] +**Mark:** Alright, so the other really big piece in and piece of news for not just the React ecosystem, but the web development ecosystem as a whole is the, the TypeScript team has officially announced that they have created a fort, not a rewrite of the TypeScript compiler, the current version of TypeScript itself is written in TypeScript, which means it's actually, you know, in the end it's the, it's just JavaScript executing and they have ported the compiler itself to be written in. [37:14] -Go. And what they say in the announcement is that they're seeing like generally 10 x speedups in the actual TypeScript compilation stage of processing people's programs. I saw at least one post on Reddit where someone was complaining that people are gonna be confused. That this means that they think that this means their code runs faster. [00:37:34] +Go. And what they say in the announcement is that they're seeing like generally 10 x speedups in the actual TypeScript compilation stage of processing people's programs. I saw at least one post on Reddit where someone was complaining that people are gonna be confused. That this means that they think that this means their code runs faster. [37:34] -It's like, no, this is just compiling the TypeScript types 10 times as fast. And this is a really big deal. this trend over the last five, six years of all these different JavaScript ecosystem build tools being rewritten in native languages, mostly rust, and getting a lot of speed ups that way. [00:37:53] +It's like, no, this is just compiling the TypeScript types 10 times as fast. And this is a really big deal. this trend over the last five, six years of all these different JavaScript ecosystem build tools being rewritten in native languages, mostly rust, and getting a lot of speed ups that way. [37:53] -So, you know, es e es build as in go you know, RS pack and roll down are both written in rust, et cetera. I mean, a lot of tools being rewritten in native languages to try to speed things up, but a lot of them have still, like the actual build pipelines still get bottlenecked on TypeScript compilation time because it doesn't matter how, how fast you can process all these different, you know, individual module files and bundle them together if you're still doing a full type script type check during that section of the build phase. [00:38:29] +So, you know, es e es build as in go you know, RS pack and roll down are both written in rust, et cetera. I mean, a lot of tools being rewritten in native languages to try to speed things up, but a lot of them have still, like the actual build pipelines still get bottlenecked on TypeScript compilation time because it doesn't matter how, how fast you can process all these different, you know, individual module files and bundle them together if you're still doing a full type script type check during that section of the build phase. [38:29] -And so there's been a bunch of attempts to rewrite the TypeScript compiler. I. Into native languages from random people in the ecosystem. The author of SWC had tried to do a couple different attempts at porting. One in rust, one in go. I saw somebody who had done one with trying to, trying to create some kinda like a stack based virtual machine to process the types, and he'd gotten like a baby example working that seemed way faster, but it was only for, it only worked for very, very simple types. [00:39:01] +And so there's been a bunch of attempts to rewrite the TypeScript compiler. I. Into native languages from random people in the ecosystem. The author of SWC had tried to do a couple different attempts at porting. One in rust, one in go. I saw somebody who had done one with trying to, trying to create some kinda like a stack based virtual machine to process the types, and he'd gotten like a baby example working that seemed way faster, but it was only for, it only worked for very, very simple types. [39:01] -So, I mean, there, there's been attempts from individuals, but none of these got anywhere past, like a modest proof of concept stage, like they proved they could work, but then it's a massive amount of effort just to catch up with where the TypeScript compiler is much less keep up with where it's going on a month to month basis. [00:39:21] +So, I mean, there, there's been attempts from individuals, but none of these got anywhere past, like a modest proof of concept stage, like they proved they could work, but then it's a massive amount of effort just to catch up with where the TypeScript compiler is much less keep up with where it's going on a month to month basis. [39:21] -And so, you know, a lot of people had said that, well, it feels like the only way this would actually happen is if the TypeScript team themselves actually decides to do it. Well, it turns out the TypeScript team decided to do it about a year ago, and they've been working on this in secret, and now they've gotten this far and proven it works and are actually intending to push this forward to become, you know, the actual TypeScript compiler down the road. [00:39:49] +And so, you know, a lot of people had said that, well, it feels like the only way this would actually happen is if the TypeScript team themselves actually decides to do it. Well, it turns out the TypeScript team decided to do it about a year ago, and they've been working on this in secret, and now they've gotten this far and proven it works and are actually intending to push this forward to become, you know, the actual TypeScript compiler down the road. [39:49] -as Carl mentioned, so right now we're on TypeScript 5.8. They put out quarterly ish releases, I think. So basically four, four releases a year. They also follow a kind of a, a, a decimal based versioning system where it's not really SemVer, but they just roll over from 5.8, 5.9, 6.0, 6.1. So they've said that the plan is that the new native go compiler will probably officially become TypeScript 7.0. So that means we probably have about two to three years before that actually happens officially. [00:40:26] +as Carl mentioned, so right now we're on TypeScript 5.8. They put out quarterly ish releases, I think. So basically four, four releases a year. They also follow a kind of a, a, a decimal based versioning system where it's not really SemVer, but they just roll over from 5.8, 5.9, 6.0, 6.1. So they've said that the plan is that the new native go compiler will probably officially become TypeScript 7.0. So that means we probably have about two to three years before that actually happens officially. [40:26] -**Carl:** But they may also just release it like when it's ready. I, I don't believe that the version seven is a firm commitment. So it, maybe, it will, maybe validating it, maybe making sure that it won't break. Everything will happen faster than they expect, and it may be [00:40:42] +**Carl:** But they may also just release it like when it's ready. I, I don't believe that the version seven is a firm commitment. So it, maybe, it will, maybe validating it, maybe making sure that it won't break. Everything will happen faster than they expect, and it may be [40:42] -**Mark:** I mean, they, they, they might like, they, they might end up going from like a six four to a 7.0 instead of having to get through 6, 4, 5, 6, 7, 8, 9. [00:40:52] +**Mark:** I mean, they, they, they might like, they, they might end up going from like a six four to a 7.0 instead of having to get through 6, 4, 5, 6, 7, 8, 9. [40:52] -**Carl:** Okay. I don't know. I thought they just did straight up incremental and when they got to nine they incremented, [00:40:57] +**Carl:** Okay. I don't know. I thought they just did straight up incremental and when they got to nine they incremented, [40:57] -**Mark:** right, right, Like, so my, my point is that if it's ready in say one year from now, we would be at TypeScript 6.2, and rather than officially waiting another two years and eight more releases to get to 7.0, they might just say, okay, yeah, this is the end of the line for the old compiler here. [00:41:15] +**Mark:** right, right, Like, so my, my point is that if it's ready in say one year from now, we would be at TypeScript 6.2, and rather than officially waiting another two years and eight more releases to get to 7.0, they might just say, okay, yeah, this is the end of the line for the old compiler here. [41:15] -**Carl:** yeah. Hard to say. Who knows? I do wanna, I wanna highlight a couple of, you know, comments from the people who worked on this. [00:41:23] +**Carl:** yeah. Hard to say. Who knows? I do wanna, I wanna highlight a couple of, you know, comments from the people who worked on this. [41:23] ## [Github discussion](https://github.com/microsoft/typescript-go/discussions/411) and [on reddit too](https://www.reddit.com/r/javascript/comments/1j8s441/comment/mh7ms9n/) -**Carl:** Ryan Cavanaugh put out a great Reddit comment describing why they chose go, basically. And, you know, we kind of talked about it a little bit, but I, I wanted to enter his words into the cannon a little bit here. [00:41:36] +**Carl:** Ryan Cavanaugh put out a great Reddit comment describing why they chose go, basically. And, you know, we kind of talked about it a little bit, but I, I wanted to enter his words into the cannon a little bit here. [41:36] -**Mark:** I was shocked at how much pushback there was, especially from the C sharp folks. Oh my word. The C sharp community was up in arms about why the Microsoft engineers did not pick C Sharp as the language for the new compiler, [00:41:51] +**Mark:** I was shocked at how much pushback there was, especially from the C sharp folks. Oh my word. The C sharp community was up in arms about why the Microsoft engineers did not pick C Sharp as the language for the new compiler, [41:51] -**Carl:** Yeah, sure. I, the amount of space in my brain that C sharp developers occupy rounds to zero. So anytime they come on, I am a little surprised. But yeah. So like, I wanna, I wanna try and pull out a good quote here. So, like, really their primary goal here was portability. They don't wanna rewrite anything. [00:42:09] +**Carl:** Yeah, sure. I, the amount of space in my brain that C sharp developers occupy rounds to zero. So anytime they come on, I am a little surprised. But yeah. So like, I wanna, I wanna try and pull out a good quote here. So, like, really their primary goal here was portability. They don't wanna rewrite anything. [42:09] -They would like to adapt it into a new faster language. So they really say portability was always a key constraint here. As we thought about how to do this, we tried tons of approaches to get a representation that it would've made the port approach tractable and rust. But all of them either had unacceptable trade-offs or devolved into write your own garbage collector style strategies. [00:42:28] +They would like to adapt it into a new faster language. So they really say portability was always a key constraint here. As we thought about how to do this, we tried tons of approaches to get a representation that it would've made the port approach tractable and rust. But all of them either had unacceptable trade-offs or devolved into write your own garbage collector style strategies. [42:28] -So right, like they, it looks like they really genuinely validated trying to use multiple languages here at least between Rust and go. And they say, [00:42:38] +So right, like they, it looks like they really genuinely validated trying to use multiple languages here at least between Rust and go. And they say, [42:38] -**Mark:** I think I saw mention they also tried in c as well, okay, in this post, but elsewhere. [00:42:42] +**Mark:** I think I saw mention they also tried in c as well, okay, in this post, but elsewhere. [42:42] -**Carl:** yeah, sure. That makes sense. I saw a quote that I liked. " In our opinion, rust succeeds wildly at its design goals, but quote is straightforward to port to rust from this particular JavaScript. Code base is very rationally not one of its design goals. It's not one of goes either, but in our case, given the way we've written the code so far, it does turn out to be pretty good at it." [00:43:01] +**Carl:** yeah, sure. That makes sense. I saw a quote that I liked. " In our opinion, rust succeeds wildly at its design goals, but quote is straightforward to port to rust from this particular JavaScript. Code base is very rationally not one of its design goals. It's not one of goes either, but in our case, given the way we've written the code so far, it does turn out to be pretty good at it." [43:01] -So like basically they chose to write code in a style that happens to align thematically with Go. And so when they chose to port it, it ended up working out pretty well. [00:43:11] +So like basically they chose to write code in a style that happens to align thematically with Go. And so when they chose to port it, it ended up working out pretty well. [43:11] -**Mark:** one of the key points here is that like anyone who's actually worked with a lot of TypeScript types or has dared to peek inside the TypeScript compiler, I. Is aware that there, there are a lot of very complex and very subtle behaviors of TypeScript and you know, one of the complaints about TypeScript for years is that there is no official spec for the language itself and how everything should work. [00:43:36] +**Mark:** one of the key points here is that like anyone who's actually worked with a lot of TypeScript types or has dared to peek inside the TypeScript compiler, I. Is aware that there, there are a lot of very complex and very subtle behaviors of TypeScript and you know, one of the complaints about TypeScript for years is that there is no official spec for the language itself and how everything should work. [43:36] -It's pretty much just, well, the spec is what the compiler does for this release and that's it. So in other words, the, the spec is the tests that they have. It's not an official language design document. because of that, if you try to rewrite the compiler in another language and you kind of start from scratch, you run the risk of ha of like trying to do things the same way. [00:44:05] +It's pretty much just, well, the spec is what the compiler does for this release and that's it. So in other words, the, the spec is the tests that they have. It's not an official language design document. because of that, if you try to rewrite the compiler in another language and you kind of start from scratch, you run the risk of ha of like trying to do things the same way. [44:05] -But the code ends up being kind of different. I. Then you end up getting literally different output from the rewrite of the compiler, which would be really bad for the entire ecosystem that is depending on the compiler to return consistent type results. And so one of their conclusions was go allows us to make an almost literal one for one line for wine port of the exact data structures and the exact logic that we already have written in TypeScript. [00:44:36] +But the code ends up being kind of different. I. Then you end up getting literally different output from the rewrite of the compiler, which would be really bad for the entire ecosystem that is depending on the compiler to return consistent type results. And so one of their conclusions was go allows us to make an almost literal one for one line for wine port of the exact data structures and the exact logic that we already have written in TypeScript. [44:36] -And so that guarantees that we should get exactly the same calculation results from the new compiler just faster. Faster. So that was a really, really big consideration here. [00:44:49] +And so that guarantees that we should get exactly the same calculation results from the new compiler just faster. Faster. So that was a really, really big consideration here. [44:49] -**Carl:** Definitely makes a lot of sense. [00:44:50] +**Carl:** Definitely makes a lot of sense. [44:50] ## ⚡ Lightning round ⚡ -**Carl:** Cool. Okay. Onto the lightning round. [00:44:52] +**Carl:** Cool. Okay. Onto the lightning round. [44:52] ## [JSC being extracted from RN Core](https://github.com/react-native-community/javascriptcore) -**Mo:** first one JSC is being extracted from React Native Core. So, several years ago there was a custom JavaScript engine that was introduced into React Native called Hermes. [00:45:01] +**Mo:** first one JSC is being extracted from React Native Core. So, several years ago there was a custom JavaScript engine that was introduced into React Native called Hermes. [45:01] -That's what everyone has been using for the last several years, or most people have been using for the last several years. There are some people who still use JSC for very specific niche use cases. And so it was inside of the reactive core package up until recently when it's been extracted out. [00:45:16] +That's what everyone has been using for the last several years, or most people have been using for the last several years. There are some people who still use JSC for very specific niche use cases. And so it was inside of the reactive core package up until recently when it's been extracted out. [45:16] -So if you want to use JSC instead of Hermes, it is now an external package and you're gonna need to install it separately. [00:45:22] +So if you want to use JSC instead of Hermes, it is now an external package and you're gonna need to install it separately. [45:22] ## [node-modules.dev v0.4.0](https://bsky.app/profile/antfu.me/post/3ljubvzvwec2w) -**Carl:** This is very small, but seems neat. I'm just going to call it out. Anthony Fu put out a node modules dev, which just seems kind of cool. It's like a way of analyzing the dependency tree for a specific node module. It seems cool. I have had to do various ways of visualizing dependency trees a number of times throughout my career, and it's always been a pain in the butt. [00:45:47] +**Carl:** This is very small, but seems neat. I'm just going to call it out. Anthony Fu put out a node modules dev, which just seems kind of cool. It's like a way of analyzing the dependency tree for a specific node module. It seems cool. I have had to do various ways of visualizing dependency trees a number of times throughout my career, and it's always been a pain in the butt. [45:47] -So just seeing a tool that's online, on the internet where you can just like plug it in and analyze it visually is very cool and interesting to me. Seems good. I like it. [00:46:00] +So just seeing a tool that's online, on the internet where you can just like plug it in and analyze it visually is very cool and interesting to me. Seems good. I like it. [46:00] ## [Fernando Rojo joining Vercel as Head of Mobile](https://x.com/rauchg/status/1896943726486032783) -**Mo:** next up on the lightning round is that, as we mentioned a little bit earlier on in the episode, a little bit of a, of a spoiler. Fernando Roho has joined Vercel as the head of mobile. [00:46:10] +**Mo:** next up on the lightning round is that, as we mentioned a little bit earlier on in the episode, a little bit of a, of a spoiler. Fernando Roho has joined Vercel as the head of mobile. [46:10] -And so this is a very interesting development because Vercel traditionally was very web focused. Expo was traditionally mobile focused. So those were the two frameworks. And it seems like they're starting to bleed into each other's territory, which is gonna get really, really interesting. So that is that's gonna be quite an interesting one to see because maybe Vercel is working on a framework for React Native. [00:46:32] +And so this is a very interesting development because Vercel traditionally was very web focused. Expo was traditionally mobile focused. So those were the two frameworks. And it seems like they're starting to bleed into each other's territory, which is gonna get really, really interesting. So that is that's gonna be quite an interesting one to see because maybe Vercel is working on a framework for React Native. [46:32] -And we know that the Expo folks have been working on sort of web-based support as well, so we will see on how this develops. But it's just an interesting signal from the Vercel folks. [00:46:41] +And we know that the Expo folks have been working on sort of web-based support as well, so we will see on how this develops. But it's just an interesting signal from the Vercel folks. [46:41] ## [Next vs TanStack (Router \+ Vite)](https://www.kylegill.com/essays/next-vs-tanstack/) -**Carl:** Kyle Gill put out a next JS versus Tan Stack article, which he at the very start says, was inspired by a 2019 post from Jared Palmer contrasting Gatsby with next js. [00:46:55] +**Carl:** Kyle Gill put out a next JS versus Tan Stack article, which he at the very start says, was inspired by a 2019 post from Jared Palmer contrasting Gatsby with next js. [46:55] -I highlight that because Jared Palmer currently works at Versal. Fun fact, I interviewed with him for a job in 2017. I did not get it. And 2019 when Jared Palmer wrote that Gatsby versus Next Post I feel like was about the turning point for Gatsby enthusiasm starting to die off. That's when mine started to die off for sure. [00:47:17] +I highlight that because Jared Palmer currently works at Versal. Fun fact, I interviewed with him for a job in 2017. I did not get it. And 2019 when Jared Palmer wrote that Gatsby versus Next Post I feel like was about the turning point for Gatsby enthusiasm starting to die off. That's when mine started to die off for sure. [47:17] -So that, it's, it's interesting seeing that he is calling back to that moment, in this moment in a pretty different direction. So we'll see, you know, who, who knows if that same trend will continue, but it's, it's, it looks like a great comparison of functionality between Next and Tan Stack. And Tan Stack is certainly getting a lot of interest in mind share. [00:47:42] +So that, it's, it's interesting seeing that he is calling back to that moment, in this moment in a pretty different direction. So we'll see, you know, who, who knows if that same trend will continue, but it's, it's, it looks like a great comparison of functionality between Next and Tan Stack. And Tan Stack is certainly getting a lot of interest in mind share. [47:42] -So yeah, if you're thinking about it, definitely check that out 'cause it seems nice. [00:47:46] +So yeah, if you're thinking about it, definitely check that out 'cause it seems nice. [47:46] ## [Expo’s AI Strategy](https://expo.dev/ai/strategy) -**Mo:** Cool. Next up there's a blog post that the CTO of Expo did on their AI strategy. it's quite a short blog post so you can kind of skim through it. But really the point they're trying to make is that we're in an age that you can use AI to democratize building apps. And so they talk about how they're gonna take efforts to make sure that their docs and, you know, all of their material is well suitable for things like the model context protocol, the MCP that philanthropic released but also other sort of, protocols and interfaces that AI agents may use. And then they talk about how Expo is being used by tools like Repli by Bolt and other tools already to build apps from prompts so that, you know, non-technical people can sort of, as we say today, vibe code their apps. But I think they, they're really seeing this as a uh, as an opportunity to, to get people to build apps. [00:48:37] +**Mo:** Cool. Next up there's a blog post that the CTO of Expo did on their AI strategy. it's quite a short blog post so you can kind of skim through it. But really the point they're trying to make is that we're in an age that you can use AI to democratize building apps. And so they talk about how they're gonna take efforts to make sure that their docs and, you know, all of their material is well suitable for things like the model context protocol, the MCP that philanthropic released but also other sort of, protocols and interfaces that AI agents may use. And then they talk about how Expo is being used by tools like Repli by Bolt and other tools already to build apps from prompts so that, you know, non-technical people can sort of, as we say today, vibe code their apps. But I think they, they're really seeing this as a uh, as an opportunity to, to get people to build apps. [48:37] -The everyday person who's not a developer to be able to build apps. [00:48:39] +The everyday person who's not a developer to be able to build apps. [48:39] ## [Laravel launched “starter kits” including React](https://laravel.com/docs/12.x/starter-kits) -**Carl:** Laravel just released starter kits this month including some for React. So that's interesting. They're doing, like, I, it looked like it included server-side rendering. I'm not sure if that is owned by Laravel or React but just interesting. [00:48:54] +**Carl:** Laravel just released starter kits this month including some for React. So that's interesting. They're doing, like, I, it looked like it included server-side rendering. I'm not sure if that is owned by Laravel or React but just interesting. [48:54] -I don't know. I, Laravel is maybe on my mind because I was seeing a number of months ago some conversation discussing what you get out of the box with tools like Laravel and the general lack of anything comparable in the React ecosystem. Specifically around auth. I saw people talking about what you need to, what you get for free with a tool like Laravel. [00:49:18] +I don't know. I, Laravel is maybe on my mind because I was seeing a number of months ago some conversation discussing what you get out of the box with tools like Laravel and the general lack of anything comparable in the React ecosystem. Specifically around auth. I saw people talking about what you need to, what you get for free with a tool like Laravel. [49:18] -And I was a little bit surprised because you do not get that for free. In my experience when you're building an app with React, so that just gave Bit, gave me a bit of a respect for the, the, the tool. So it seems neat. It's a new major version, version 12. It's got starter kits. One of the starter kits uses React. [00:49:34] +And I was a little bit surprised because you do not get that for free. In my experience when you're building an app with React, so that just gave Bit, gave me a bit of a respect for the, the, the tool. So it seems neat. It's a new major version, version 12. It's got starter kits. One of the starter kits uses React. [49:34] -It claims server-side rendering support. [00:49:36] +It claims server-side rendering support. [49:36] ## [React Native Enterprise Framework](https://enterprise-framework.callstack.com/) -**Mo:** So next up, call stack, the folks behind React Universe Conf and libraries like React Native Paper, have announced that they're creating a new React native framework that's specifically targeting enterprise. [00:49:49] +**Mo:** So next up, call stack, the folks behind React Universe Conf and libraries like React Native Paper, have announced that they're creating a new React native framework that's specifically targeting enterprise. [49:49] -Now, this is very early days. They're trying to target some of the pain points that enterprise clients with large, large number of you know, devs and with restrictions on where they can host their infrastructure are facing. And so they want to try to target that niche of React native apps which is quite interesting. [00:50:07] +Now, this is very early days. They're trying to target some of the pain points that enterprise clients with large, large number of you know, devs and with restrictions on where they can host their infrastructure are facing. And so they want to try to target that niche of React native apps which is quite interesting. [50:07] -And so, this is still very much in sort of waiting list stage. So it's, it's early days. But their, that, their start focus is that you can have reusable cloud builds that run on anywhere. Potentially GitHub actions but potentially also other pipeline providers. And also a nice way to be able to integrate Brownfield into existing iOS and Android apps so that you have an incremental migration path. [00:50:30] +And so, this is still very much in sort of waiting list stage. So it's, it's early days. But their, that, their start focus is that you can have reusable cloud builds that run on anywhere. Potentially GitHub actions but potentially also other pipeline providers. And also a nice way to be able to integrate Brownfield into existing iOS and Android apps so that you have an incremental migration path. [50:30] -So, very early days, we'll see. We'll see where we, where we, where this kind of develops and, and, and where this goes. [00:50:36] +So, very early days, we'll see. We'll see where we, where we, where this kind of develops and, and, and where this goes. [50:36] ## [State of React Native 2024](https://results.stateofreactnative.com/en-US/) -**Mo:** And last on our list is the State of React native 2024. So this is a survey that the folks at Software Mansion do every single year and they touch on a whole bunch of stuff like dev backgrounds, demographics, what libraries people are using, and what you use for state management and all of that. [00:50:52] +**Mo:** And last on our list is the State of React native 2024. So this is a survey that the folks at Software Mansion do every single year and they touch on a whole bunch of stuff like dev backgrounds, demographics, what libraries people are using, and what you use for state management and all of that. [50:52] -And so, this year the main things that they're that they basically concluded, which is, is kind of no surprise whatsoever, is the um, expos becoming sort of the main way to build react native apps. And they see momentum with tools like Chrome, the, the, the Chrome dev tools, protocol based new React native dev tools that Meta's announced and tools like Expo Atlas. [00:51:14] +And so, this year the main things that they're that they basically concluded, which is, is kind of no surprise whatsoever, is the um, expos becoming sort of the main way to build react native apps. And they see momentum with tools like Chrome, the, the, the Chrome dev tools, protocol based new React native dev tools that Meta's announced and tools like Expo Atlas. [51:14] -But take a look into it if you're interested in. Analyzing the trends in the React native ecosystem. [00:51:19] +But take a look into it if you're interested in. Analyzing the trends in the React native ecosystem. [51:19] -**Carl:** Alright, thanks everyone. That's everything we got. We will be back on the last Wednesday of next month in April on the 30th. come join us on April 30th here in the live stage, or we will be back in your podcast feed just as soon as we can. [00:51:33] +**Carl:** Alright, thanks everyone. That's everything we got. We will be back on the last Wednesday of next month in April on the 30th. come join us on April 30th here in the live stage, or we will be back in your podcast feed just as soon as we can. [51:33] -**Mo:** Yeah, well, always a pleasure guys, and looking forward to jumping on in April to see you all there. [00:51:40] +**Mo:** Yeah, well, always a pleasure guys, and looking forward to jumping on in April to see you all there. [51:40] -**Mark:** Likewise. [00:51:41] +**Mark:** Likewise. [51:41] -**Carl:** Cool, see you then. We gather sources from this week in React bys.dev, react status next JS weekly, the React JS subreddit here in reactive flux, and sometimes even directly from those publishing articles. If you see anything newsworthy, definitely let us know in the Tech reads, tech News and Reads channel here in reactive Flux. [00:52:00] +**Carl:** Cool, see you then. We gather sources from this week in React bys.dev, react status next JS weekly, the React JS subreddit here in reactive flux, and sometimes even directly from those publishing articles. If you see anything newsworthy, definitely let us know in the Tech reads, tech News and Reads channel here in reactive Flux. [52:00] Or you can send me an email at hello@reactiflux.com. I read everything that comes in, even if it gets marked as spam, so don't worry. If this is a show that you get value from and would like to support, best way to do so is by telling people about it or by submitting a review on whatever platform that you listen to it. -Thanks for listening. See you next month. [00:52:16] +Thanks for listening. See you next month. [52:16] diff --git a/src/transcripts/tmir-2025-04.md b/src/transcripts/tmir-2025-04.md index c7c814e..629d510 100644 --- a/src/transcripts/tmir-2025-04.md +++ b/src/transcripts/tmir-2025-04.md @@ -65,440 +65,440 @@ html li p { - [[49:05](#gumroad-is-open-source)] [Gumroad is open source!](https://gumroad.gumroad.com/p/gumroad-is-now-open-source) - [[49:50](#automattic-laid-off-16-of-staff)] [Automattic laid off 16% of staff](https://automattic.com/2025/04/02/restructuring-announcement/) -**Carl:** Thank you for joining us for the April edition of this month in React, where we recap and digest the recent developments in the ever-evolving reactive web ecosystem. [00:00:07] +**Carl:** Thank you for joining us for the April edition of this month in React, where we recap and digest the recent developments in the ever-evolving reactive web ecosystem. [00:07] -We are coming to you live from Reactiflux, the place for professional react developers, and we are supported by Infinite Red, a consultancy that works exclusively in React Native. I am Carl. I'm a staff product developer and freelance community manager here at Reactiflux, where I do community programs like these and build tools to help keep the community operating. And I might oversee a hackathon next month. So yeah, keep an eye out. [00:00:30] +We are coming to you live from Reactiflux, the place for professional react developers, and we are supported by Infinite Red, a consultancy that works exclusively in React Native. I am Carl. I'm a staff product developer and freelance community manager here at Reactiflux, where I do community programs like these and build tools to help keep the community operating. And I might oversee a hackathon next month. So yeah, keep an eye out. [00:30] -**Mark:** I'm Mark. My day job is working at Replay io and in my free time I spend entirely too much stuff and time working on Redux and griping about the React docs. [00:00:39] +**Mark:** I'm Mark. My day job is working at Replay io and in my free time I spend entirely too much stuff and time working on Redux and griping about the React docs. [00:39] -**Mo:** And I am Mo, I had the mobile team at Theodo. And I am an active member of the React Native ecosystem and organized the React Native London Meetup and the React Native London Conference. Happy to be here as always. [00:00:51] +**Mo:** And I am Mo, I had the mobile team at Theodo. And I am an active member of the React Native ecosystem and organized the React Native London Meetup and the React Native London Conference. Happy to be here as always. [00:51] -**Carl:** Heck yeah. [00:00:52] +**Carl:** Heck yeah. [00:52] ## Job market: [FRED data](https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE), [Layoffs.fyi](https://layoffs.fyi/), [Trueup.io](https://www.trueup.io/job-trend) -**Carl:** Very quick overview of job market stuff. I found a new data source that I don't know how I hadn't heard of it before 'cause it is not super new. trueup.io has a job trend page that looks pretty good. similar but distinct from layoffs.fyi. [00:01:05] +**Carl:** Very quick overview of job market stuff. I found a new data source that I don't know how I hadn't heard of it before 'cause it is not super new. trueup.io has a job trend page that looks pretty good. similar but distinct from layoffs.fyi. [01:05] -They are saying that there's been a little uptick of open tech jobs. But you know, there's also been a bunch of layoffs. Although this month most of the layoffs are coming from Intel, which yesterday had a bunch of reports filter out saying they're gonna lay off 20% of staff. [00:01:23] +They are saying that there's been a little uptick of open tech jobs. But you know, there's also been a bunch of layoffs. Although this month most of the layoffs are coming from Intel, which yesterday had a bunch of reports filter out saying they're gonna lay off 20% of staff. [01:23] -But like 20% of staff in Intel probably means a lot of manufacturing jobs, not like software tech. So I don't know what that means, but yeah. I don't know. Vibes are still bad. One thing I like about TrueUp is that they have a, like remote index where it estimates what percentage of available jobs are remote friendly And that has been trending down, sadly. [00:01:45] +But like 20% of staff in Intel probably means a lot of manufacturing jobs, not like software tech. So I don't know what that means, but yeah. I don't know. Vibes are still bad. One thing I like about TrueUp is that they have a, like remote index where it estimates what percentage of available jobs are remote friendly And that has been trending down, sadly. [01:45] -It's slightly sub 20% right now, which is, not great. Yeah. [00:01:50] +It's slightly sub 20% right now, which is, not great. Yeah. [01:50] ## Conferences ([React](https://react.dev/community/conferences), [Javascript](https://confs.tech/javascript)) -**Carl:** So upcoming conferences in May! [00:01:53] +**Carl:** So upcoming conferences in May! [01:53] ## [App.js Conf](https://appjs.co/) May 28-30 Kraków, Poland -**Carl:** At the end of May, May 28th through 30th in Krakow Poland, we have App.Js conference [00:01:59] +**Carl:** At the end of May, May 28th through 30th in Krakow Poland, we have App.Js conference [01:59] ## [CityJS Athens](https://athens.cityjsconf.org/) May 27-31 Athens, Greece -**Carl:** . There's also City JS Athens around the same time. May 27th through 31st. [00:02:04] +**Carl:** . There's also City JS Athens around the same time. May 27th through 31st. [02:04] ## [React Summit](https://reactsummit.com/) June 13-17 Amsterdam, NL -**Carl:** Then in June we've got a React Summit in Amsterdam. [00:02:09] +**Carl:** Then in June we've got a React Summit in Amsterdam. [02:09] ## [React Conf is back](https://bsky.app/profile/react.dev/post/3lmcp4mhmfk2l) Oct 7-8 -**Carl:** This is very early, but the React core team has announced that React Conf will be back this year. last year. It was when I was in May. this time last year I was in Vegas for that, but yeah, they're doing it you know, mid-October. So that's cool. [00:02:22] +**Carl:** This is very early, but the React core team has announced that React Conf will be back this year. last year. It was when I was in May. this time last year I was in Vegas for that, but yeah, they're doing it you know, mid-October. So that's cool. [02:22] ## [SquiggleConf 2025 CFP](https://2025.squiggleconf.com/cfp) closes May 23 -**Carl:** there's an open CFP that closes one month from now for squiggle conf, which I am on staff for. if you would like to maybe speak at a conference. It's a great conference. I love it. It's organized by a, you know, a good buddy of mine. Yeah, definitely check that out. [00:02:37] +**Carl:** there's an open CFP that closes one month from now for squiggle conf, which I am on staff for. if you would like to maybe speak at a conference. It's a great conference. I love it. It's organized by a, you know, a good buddy of mine. Yeah, definitely check that out. [02:37] ## [Sponsored by Infinite Red](https://infinite.red/) -**Carl:** And of our sponsor read, we are sponsored solely right now by Infinite Red, which is an expert React native consultancy that's been around since 2015. [00:02:46] +**Carl:** And of our sponsor read, we are sponsored solely right now by Infinite Red, which is an expert React native consultancy that's been around since 2015. [02:46] -They're our only sponsor, partly because very few companies do as much as they do for the whole React and React native ecosystem. They host podcasts. They run conferences, they sponsor all sorts of different organizations generally just seem like really great people. They're a team of about 30 people, mostly developers, mostly with more than 10 years of experience. [00:03:06] +They're our only sponsor, partly because very few companies do as much as they do for the whole React and React native ecosystem. They host podcasts. They run conferences, they sponsor all sorts of different organizations generally just seem like really great people. They're a team of about 30 people, mostly developers, mostly with more than 10 years of experience. [03:06] -And they will work with your team to help you develop react native expertise rather than just doing contract engineering and then saying, here you go, this is your problem now. So if your company is looking to start working on a React Native app in the near future, definitely reach out to them and give them a shout. Yeah. Cheers. [00:03:24] +And they will work with your team to help you develop react native expertise rather than just doing contract engineering and then saying, here you go, this is your problem now. So if your company is looking to start working on a React Native app in the near future, definitely reach out to them and give them a shout. Yeah. Cheers. [03:24] ## New releases -**Carl:** Okay, running through some new releases. [00:03:27] +**Carl:** Okay, running through some new releases. [03:27] ## [Anime.js v4](https://animejs.com/) -**Carl:** This is only tangentially react related, but anime js a animation library, or they describe it as an animation engine. Just had a V four release and the website is super slick. Definitely a phenomenal advertisement for what you can do with the tool. [00:03:46] +**Carl:** This is only tangentially react related, but anime js a animation library, or they describe it as an animation engine. Just had a V four release and the website is super slick. Definitely a phenomenal advertisement for what you can do with the tool. [03:46] -Very impressive. And animations are always, I don't know, doing high level animations with like a bunch, you know, interactive and different layers, and it, it's always complicated. So this looks like a pretty great tool. So wanted to give it a shout out. Yeah. Mo, can you tell us a bit about the latest React native. [00:04:03] +Very impressive. And animations are always, I don't know, doing high level animations with like a bunch, you know, interactive and different layers, and it, it's always complicated. So this looks like a pretty great tool. So wanted to give it a shout out. Yeah. Mo, can you tell us a bit about the latest React native. [04:03] ## [RN v79](https://reactnative.dev/blog/2025/04/08/react-native-0.79) -**Mo:** react native version 0.79 has been released. There's. Sort of some small changes here. The big one is that the JavaScript engine, JSC that previously used to be the default is now actually being removed completely from react Native Core and being moved to a community package and is effectively really being deprecated. [00:04:21] +**Mo:** react native version 0.79 has been released. There's. Sort of some small changes here. The big one is that the JavaScript engine, JSC that previously used to be the default is now actually being removed completely from react Native Core and being moved to a community package and is effectively really being deprecated. [04:21] -The few other changes some improvements to performance with Android, but all in all, as we'll see, and as we've seen in the past few months with React native releases, they're getting slimmer and a lot more frequent. So this whole idea of sort of continuously releasing React Native rather than having a few Big Bang releases, so good to see that it's chugging along. [00:04:40] +The few other changes some improvements to performance with Android, but all in all, as we'll see, and as we've seen in the past few months with React native releases, they're getting slimmer and a lot more frequent. So this whole idea of sort of continuously releasing React Native rather than having a few Big Bang releases, so good to see that it's chugging along. [04:40] -**Carl:** Yeah. Very cool. I saw this is their third release this year, whereas in the past , they've generally done like three releases in any given year, [00:04:48] +**Carl:** Yeah. Very cool. I saw this is their third release this year, whereas in the past , they've generally done like three releases in any given year, [04:48] -**Mo:** I think the trend is going towards doing a release every two months or so. [00:04:52] +**Mo:** I think the trend is going towards doing a release every two months or so. [04:52] -**Mark:** That's a pretty solid cadence. [00:04:54] +**Mark:** That's a pretty solid cadence. [04:54] -**Mo:** Yeah. I think they've really taken a lot of steps over the last two years to try to bring down that release time and it's starting to pay off. [00:05:00] +**Mo:** Yeah. I think they've really taken a lot of steps over the last two years to try to bring down that release time and it's starting to pay off. [05:00] ## [Next.js 15.3](https://nextjs.org/blog/next-15-3) -**Mark:** Next 15.3 is out. Biggest news for this one is they now have alpha level support for using the turbo pack bundler for production builds. Previously, it had only been available for dev mode. So it looks like there's alpha level version for that. they have it passing most of their tests, but it's apparently not ready yet. [00:05:20] +**Mark:** Next 15.3 is out. Biggest news for this one is they now have alpha level support for using the turbo pack bundler for production builds. Previously, it had only been available for dev mode. So it looks like there's alpha level version for that. they have it passing most of their tests, but it's apparently not ready yet. [05:20] ## [Rspack joins the Next.js ecosystem](https://rspack.dev/blog/rspack-next-partner) -**Mark:** Also 15.3 now has support for optional using the third party RS Pac Bundler. I. For builts RS Ppac is a rust based re-implementation of Webpac and basic compatible with web pack's configs. So given that the existing version of Next still uses Webpac under the hood, the next and web and RS Ppac teams were able to collaborate and figure out how to get a plugin that would essentially allow it to use RsPack instead of Webpack as one possible alternative way to try to speed things up. [00:05:55] +**Mark:** Also 15.3 now has support for optional using the third party RS Pac Bundler. I. For builts RS Ppac is a rust based re-implementation of Webpac and basic compatible with web pack's configs. So given that the existing version of Next still uses Webpac under the hood, the next and web and RS Ppac teams were able to collaborate and figure out how to get a plugin that would essentially allow it to use RsPack instead of Webpack as one possible alternative way to try to speed things up. [05:55] -**Carl:** Yeah, I did see that the performance improvement from using RsPack and Next is like not that great and like in some circumstances could actually be worse than Webpac, which seems confusing to me. [00:06:07] +**Carl:** Yeah, I did see that the performance improvement from using RsPack and Next is like not that great and like in some circumstances could actually be worse than Webpac, which seems confusing to me. [06:07] -**Mark:** some of it was due to things like JS based plugins and, and some of the, the interrupt back and forth between. Uhland and JS land. [00:06:16] +**Mark:** some of it was due to things like JS based plugins and, and some of the, the interrupt back and forth between. Uhland and JS land. [06:16] -**Carl:** Right. I mean, hey, similar problem is how React Native had with the, parsing data back and forth. kind of goes to show you how even once you have a tool that is written in native, it's, you know, it's not a silver bullet. It doesn't fix all the problems. [00:06:29] +**Carl:** Right. I mean, hey, similar problem is how React Native had with the, parsing data back and forth. kind of goes to show you how even once you have a tool that is written in native, it's, you know, it's not a silver bullet. It doesn't fix all the problems. [06:29] ## [React Aria April 11th](https://react-spectrum.adobe.com/releases/2025-04-11.html) -**Carl:** Yeah, react Aria by Adobe had a release. [00:06:32] +**Carl:** Yeah, react Aria by Adobe had a release. [06:32] -They don't, I guess they don't do versions, they do just date releases. So this is the April 11th release. One thing that caught my eye that I thought was pretty interesting, so they have a calendar tool and they now allow custom calendar support. So it lets you implement your own like calendar schedule in re rendering this calendar thing, which, you know, they, they shout it out, for instance, using a 4 5, 4 fiscal calendar, which I had to Google because I'd never heard of it. [00:07:01] +They don't, I guess they don't do versions, they do just date releases. So this is the April 11th release. One thing that caught my eye that I thought was pretty interesting, so they have a calendar tool and they now allow custom calendar support. So it lets you implement your own like calendar schedule in re rendering this calendar thing, which, you know, they, they shout it out, for instance, using a 4 5, 4 fiscal calendar, which I had to Google because I'd never heard of it. [07:01] -So this seems like a very, like, deep in the weeds kind of feature edition for, I don't know that that goes to show how seriously they are exploring the problem space. And I, I take that as a pretty positive sign. [00:07:13] +So this seems like a very, like, deep in the weeds kind of feature edition for, I don't know that that goes to show how seriously they are exploring the problem space. And I, I take that as a pretty positive sign. [07:13] ## [Redux Toolkit 2.7](https://github.com/reduxjs/redux-toolkit/releases/tag/v2.7.0) -**Mark:** Last week I shipped Redux Toolkit 2.7 as I was on my flight to React Miami. [00:07:18] +**Mark:** Last week I shipped Redux Toolkit 2.7 as I was on my flight to React Miami. [07:18] -the main feature outta this is that RTK query now supports use of standard schema definitions for both validating requests and responses and errors, as well as potentially inferring the TypeScript types for those errors so that you don't have to hand rate those when you're defining the endpoints. As well as a bunch of other, other bug fixes and improvements. [00:07:41] +the main feature outta this is that RTK query now supports use of standard schema definitions for both validating requests and responses and errors, as well as potentially inferring the TypeScript types for those errors so that you don't have to hand rate those when you're defining the endpoints. As well as a bunch of other, other bug fixes and improvements. [07:41] -**Carl:** That's super cool. I love generated types. [00:07:44] +**Carl:** That's super cool. I love generated types. [07:44] ## [Vitest 3.1](https://github.com/vitest-dev/vitest/releases/tag/v3.1.0) -**Mark:** And then Vitest 3.1 is out. Doesn't look like there's a, a huge standout feature, but a, a bunch of, again, small fixes and performance improvements, obligatory. [00:07:55] +**Mark:** And then Vitest 3.1 is out. Doesn't look like there's a, a huge standout feature, but a, a bunch of, again, small fixes and performance improvements, obligatory. [07:55] ## Main Content -**Carl:** Yeah, into our main content. [00:07:57] +**Carl:** Yeah, into our main content. [07:57] ## [React Labs: View Transitions, Activity, and more](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more) -**Carl:** So conveniently, like 35 minutes ago, the core team put out a new blog post a new React Labs post. React Labs are posts where they write about projects in active research and development. So this is like, definitely, this is like, you know, leading edge. What is the core team working on? [00:08:14] +**Carl:** So conveniently, like 35 minutes ago, the core team put out a new blog post a new React Labs post. React Labs are posts where they write about projects in active research and development. So this is like, definitely, this is like, you know, leading edge. What is the core team working on? [08:14] -They do like what, maybe two of these a year? [00:08:18] +They do like what, maybe two of these a year? [08:18] -a solid year since the actual React Labs post. They did have like the, the React 19 release announcements in that since then, I. [00:08:24] +a solid year since the actual React Labs post. They did have like the, the React 19 release announcements in that since then, I. [08:24] -**Carl:** dated React Labs, March, 2023, react Labs, February, 2024, and now April, 2025. [00:08:31] +**Carl:** dated React Labs, March, 2023, react Labs, February, 2024, and now April, 2025. [08:31] -**Mark:** So the headline out of this one is that they have been working over the last few in couple months on official support for the browser view transitions. API now. Going backwards. A lot of folks have asked over the years for some kind of official animation support in React itself. I know that people have compared, versus something like Svelte, which has apparently has the ability to declare some animations directly in your templates. And they've pointed at React and said like, why can't I do the same thing? Or like, you know, animating elements in and out is, is really, really difficult. And there's been lots of, you know, different animation libraries for React over the years, react Transition Group, react Spring, et cetera. But this is the first time we've ever had anything related to animations baked into the React core itself. Now as usual, I'm not actively ready in a lot of React myself these days. And when I have, I've never done anything animation related, so I'll be honest. I still don't even fully know what a view transition actually is, but I see a lot of people really, really excited about it. My, my vague understanding is that it's taking elements that are within the page and being able to move them back and forth. [00:09:46] +**Mark:** So the headline out of this one is that they have been working over the last few in couple months on official support for the browser view transitions. API now. Going backwards. A lot of folks have asked over the years for some kind of official animation support in React itself. I know that people have compared, versus something like Svelte, which has apparently has the ability to declare some animations directly in your templates. And they've pointed at React and said like, why can't I do the same thing? Or like, you know, animating elements in and out is, is really, really difficult. And there's been lots of, you know, different animation libraries for React over the years, react Transition Group, react Spring, et cetera. But this is the first time we've ever had anything related to animations baked into the React core itself. Now as usual, I'm not actively ready in a lot of React myself these days. And when I have, I've never done anything animation related, so I'll be honest. I still don't even fully know what a view transition actually is, but I see a lot of people really, really excited about it. My, my vague understanding is that it's taking elements that are within the page and being able to move them back and forth. [09:46] -**Carl:** As far as I know, it's largely about like page transitions, like when you navigate it will let you emulate like the kind of a native style of like, oh, this new, you know, new pane slides in over top [00:09:57] +**Carl:** As far as I know, it's largely about like page transitions, like when you navigate it will let you emulate like the kind of a native style of like, oh, this new, you know, new pane slides in over top [09:57] -**Mo:** I mean, there, there's a few different types of transitions. There's like a fade transition that's native sort of there. But there's also the, the one that you're referring to, I think Carl, is the shared element transition, which is you have one element that exists on the first page and then the second, that element kind of persists, changes shape. [00:10:13] +**Mo:** I mean, there, there's a few different types of transitions. There's like a fade transition that's native sort of there. But there's also the, the one that you're referring to, I think Carl, is the shared element transition, which is you have one element that exists on the first page and then the second, that element kind of persists, changes shape. [10:13] -So the best example of that is like Instagram when you open up a a post and it kind of expands to take up the whole screen. That's what we call shared element transition in the mobile world. [00:10:22] +So the best example of that is like Instagram when you open up a a post and it kind of expands to take up the whole screen. That's what we call shared element transition in the mobile world. [10:22] -**Mark:** Yeah, that, that makes sense. And I can definitely see how something like that would be difficult to do in React, where, you know, normally you stop rendering A and you start rendering B. [00:10:32] +**Mark:** Yeah, that, that makes sense. And I can definitely see how something like that would be difficult to do in React, where, you know, normally you stop rendering A and you start rendering B. [10:32] -So the React team has been working on an official actual view transition component which has a number of different. Pieces of functionality, being able to, to label the transitions animate navigations, do some customization of these behaviors. the blog post goes into some examples of what these different capabilities are and how you would actually try to use them in practice. So it is still experimental. You have to specifically switch over from a production stable build of react to using the latest experimental channel release. But it's gotten to the point where they think it's actually ready for folks to try out. [00:11:09] +So the React team has been working on an official actual view transition component which has a number of different. Pieces of functionality, being able to, to label the transitions animate navigations, do some customization of these behaviors. the blog post goes into some examples of what these different capabilities are and how you would actually try to use them in practice. So it is still experimental. You have to specifically switch over from a production stable build of react to using the latest experimental channel release. But it's gotten to the point where they think it's actually ready for folks to try out. [11:09] -on a similar note the React team has been working on and off for the last three or four years on a component that they originally called off screen. And the idea for this is that, as we all know, when you unmount a React component, everything about that component goes away. The effects are cleaned up. [00:11:27] +on a similar note the React team has been working on and off for the last three or four years on a component that they originally called off screen. And the idea for this is that, as we all know, when you unmount a React component, everything about that component goes away. The effects are cleaned up. [11:27] -The state that was unique to that component instance goes away, and that's made some things like, you know, building tabbed UIs difficult because you either have to do some work to hide the other tab contents, you know, maybe using like display none in CSS. But, and or you actually have to unmount them. [00:11:49] +The state that was unique to that component instance goes away, and that's made some things like, you know, building tabbed UIs difficult because you either have to do some work to hide the other tab contents, you know, maybe using like display none in CSS. But, and or you actually have to unmount them. [11:49] -But in that case, state that was there goes away. And so the intent of this offscreen component. Was that you could wrap it around a section of your UI and you could tell React to toggle the display, but it would keep those components around and preserve their state. And then when you make it visible again, everything's still there. So they have since renamed this to be called the activity component. And they've also, and so now that is all at a point where it's officially ready for trial in an experimental form as well. And I think this is actually gonna be kind of a big deal. , we've actually used the predecessor offscreen component in replays UI for a while, which is why we're stuck on an old experimental build of react. And it, it really does prove pretty useful. [00:12:37] +But in that case, state that was there goes away. And so the intent of this offscreen component. Was that you could wrap it around a section of your UI and you could tell React to toggle the display, but it would keep those components around and preserve their state. And then when you make it visible again, everything's still there. So they have since renamed this to be called the activity component. And they've also, and so now that is all at a point where it's officially ready for trial in an experimental form as well. And I think this is actually gonna be kind of a big deal. , we've actually used the predecessor offscreen component in replays UI for a while, which is why we're stuck on an old experimental build of react. And it, it really does prove pretty useful. [12:37] -**Carl:** this like scratch an itch in the back of my brain because it, I, remember talking about this previously, so I was just googling like the, you know, offscreen and oh my God, like they've, they've been talking about this in both of the last two labs posts that we just mentioned. [00:12:50] +**Carl:** this like scratch an itch in the back of my brain because it, I, remember talking about this previously, so I was just googling like the, you know, offscreen and oh my God, like they've, they've been talking about this in both of the last two labs posts that we just mentioned. [12:50] -So like, you know, they've got a tab called offscreen Rendering in 2023. "Offscreen rendering is an upcoming capability and react for rendering screens in the background." Like, okay. Alright. So they've been looking at this for over two years, I guess. It does seem really useful. Like I have definitely used every trick in the book to make things, you know, deprioritized. But yeah, I'm a little surprised to see that this is still in progress [00:13:16] +So like, you know, they've got a tab called offscreen Rendering in 2023. "Offscreen rendering is an upcoming capability and react for rendering screens in the background." Like, okay. Alright. So they've been looking at this for over two years, I guess. It does seem really useful. Like I have definitely used every trick in the book to make things, you know, deprioritized. But yeah, I'm a little surprised to see that this is still in progress [13:16] -**Mark:** The other two interesting bits out of the blog post about this, and they were not things that I, I had thought about in relation to this component. Another use for this is that if you start off with the activity labeled as Hidden, React will pre-render that content even before it's been displayed at all. But using concurrent capabilities, it'll be done in the background. So this can be useful for, you know, maybe you have like a more expensive piece of the UI that you know will be shown eventually, but maybe it doesn't need to be part of the initial render. And then that also ties into SSR capabilities as well. [00:13:54] +**Mark:** The other two interesting bits out of the blog post about this, and they were not things that I, I had thought about in relation to this component. Another use for this is that if you start off with the activity labeled as Hidden, React will pre-render that content even before it's been displayed at all. But using concurrent capabilities, it'll be done in the background. So this can be useful for, you know, maybe you have like a more expensive piece of the UI that you know will be shown eventually, but maybe it doesn't need to be part of the initial render. And then that also ties into SSR capabilities as well. [13:54] -And based on the initial value, react might like, include it in the content and then hydrate it later, or, do it in the background. And they also mentioned the possibility of adding some additional modes to this. Right now, currently it's, it's an nu that is just hidden or visible and they may actually have some other alternative behaviors down the road as well, which is why it's not a bullion. [00:14:16] +And based on the initial value, react might like, include it in the content and then hydrate it later, or, do it in the background. And they also mentioned the possibility of adding some additional modes to this. Right now, currently it's, it's an nu that is just hidden or visible and they may actually have some other alternative behaviors down the road as well, which is why it's not a bullion. [14:16] -**Carl:** Yep. Love flags rather than Boolean. That's great. Yeah. Interesting. I guess. I guess I'll keep an eye on it, but like, man, I guess I've been keeping an eye on it for two and a half years now. [00:14:24] +**Carl:** Yep. Love flags rather than Boolean. That's great. Yeah. Interesting. I guess. I guess I'll keep an eye on it, but like, man, I guess I've been keeping an eye on it for two and a half years now. [14:24] -**Mark:** The post covers a few other things. There's some performance tracking stuff they're working on. They are talking about trying to have the compiler automatically insert dependencies into use effect dependency arrays. there was one phrase in there in the post that I thought was kind of understandable, but also slightly oddly phrased. They, they gave a classic example of like a, a chat room connection in a use effect. they had a sentence to the effect that " Some hooks can be hard to think of in function instead of life cycles, developers get confused," da da da. " We think one of the reasons for the confusion is that developers think of effects from the components perspective, like a life cycle instead of the effects point of view, what the effect does." [00:15:10] +**Mark:** The post covers a few other things. There's some performance tracking stuff they're working on. They are talking about trying to have the compiler automatically insert dependencies into use effect dependency arrays. there was one phrase in there in the post that I thought was kind of understandable, but also slightly oddly phrased. They, they gave a classic example of like a, a chat room connection in a use effect. they had a sentence to the effect that " Some hooks can be hard to think of in function instead of life cycles, developers get confused," da da da. " We think one of the reasons for the confusion is that developers think of effects from the components perspective, like a life cycle instead of the effects point of view, what the effect does." [15:10] -And it basically what that's trying to say is. You know, the, the entire Rack React community looked at the use effect hook when it came out and we said, ah, this is the replacement for component. Did Mount and Component did update from class components to the point that, you know, often people even even create their own abstractions with those names. [00:15:28] +And it basically what that's trying to say is. You know, the, the entire Rack React community looked at the use effect hook when it came out and we said, ah, this is the replacement for component. Did Mount and Component did update from class components to the point that, you know, often people even even create their own abstractions with those names. [15:28] -I. And the React team has been valiantly trained to get us to stop thinking in those terms for years. And so I think this paragraph is basically saying, we've been trying to convince people not to think this way and failed. But it also like, it's, phrased slightly, like they're almost surprised. [00:15:45] +I. And the React team has been valiantly trained to get us to stop thinking in those terms for years. And so I think this paragraph is basically saying, we've been trying to convince people not to think this way and failed. But it also like, it's, phrased slightly, like they're almost surprised. [15:45] -People still think of it that way. [00:15:47] +People still think of it that way. [15:47] -**Carl:** Yeah. it feels like a documentation problem. I feel like so many people are learning, react from a mishmash of strange places that they're learning, not what the core team would like. And you fix that by writing really good docs. [00:16:00] +**Carl:** Yeah. it feels like a documentation problem. I feel like so many people are learning, react from a mishmash of strange places that they're learning, not what the core team would like. And you fix that by writing really good docs. [16:00] -**Mark:** So anyway, the ul ultimately they're trying to work towards making the compiler be able to insert all those dependencies for you, and then maybe someday we get to stop thinking about this entirely. [00:16:08] +**Mark:** So anyway, the ul ultimately they're trying to work towards making the compiler be able to insert all those dependencies for you, and then maybe someday we get to stop thinking about this entirely. [16:08] -They are also working on an early version of a compiler ex or extension for IDs, which has the potential to act as maybe like a super winter or show you what the transformed component might look like or even like what dependencies it would insert into use effect array automatically. [00:16:29] +They are also working on an early version of a compiler ex or extension for IDs, which has the potential to act as maybe like a super winter or show you what the transformed component might look like or even like what dependencies it would insert into use effect array automatically. [16:29] -A couple other tidbits. And then one, the last item is very short, but as a library maintainer, it caught my eye. We all know that React has component-based state and that this has the strength that it's isolated to that component and the portion of the component tree, it has the weakness that you can't easily share it across different portions of the component tree. And we also know that Reacts concurrent behavior really only works with state that React owns, which is why external libraries like Redux and Zustand rely on the used sync external store hook, which works, but also kind of forces react to give up on doing things like transitions in the most optimized way. [00:17:13] +A couple other tidbits. And then one, the last item is very short, but as a library maintainer, it caught my eye. We all know that React has component-based state and that this has the strength that it's isolated to that component and the portion of the component tree, it has the weakness that you can't easily share it across different portions of the component tree. And we also know that Reacts concurrent behavior really only works with state that React owns, which is why external libraries like Redux and Zustand rely on the used sync external store hook, which works, but also kind of forces react to give up on doing things like transitions in the most optimized way. [17:13] -So they've talked on and off for years about what if we were to add some sort of like a reusable store primitive to react. there's discussions about this going back to like 2015 and the blog post hasn't mentioned that they are working on something called concurrent stores. And it gives sort of a one line example that you would pass this to the use hook, and it does say, our goal is to allow external state to be read during render without caring and to work seamlessly with all the concurrent features that React offers. There's no further details. It's something they're just starting to think about. But it sounds like maybe down the road, react-redux and Zustand could use this and still work the same way, but better without the limitations. I don't know. I'm interested. I. [00:18:05] +So they've talked on and off for years about what if we were to add some sort of like a reusable store primitive to react. there's discussions about this going back to like 2015 and the blog post hasn't mentioned that they are working on something called concurrent stores. And it gives sort of a one line example that you would pass this to the use hook, and it does say, our goal is to allow external state to be read during render without caring and to work seamlessly with all the concurrent features that React offers. There's no further details. It's something they're just starting to think about. But it sounds like maybe down the road, react-redux and Zustand could use this and still work the same way, but better without the limitations. I don't know. I'm interested. I. [18:05] -**Carl:** Right. I've never used used sync external store, partly because of the warnings they gave of like, this is gonna break stuff. So yeah. That's interesting. That's cool. [00:18:12] +**Carl:** Right. I've never used used sync external store, partly because of the warnings they gave of like, this is gonna break stuff. So yeah. That's interesting. That's cool. [18:12] -I'll also shout out, they mentioned, two other things very tangentially, like, we are looking at this, or we intend to look at this. [00:18:21] +I'll also shout out, they mentioned, two other things very tangentially, like, we are looking at this, or we intend to look at this. [18:21] -I'm curious about fragment refs. So like, you know, if you want to get a reference to the underlying dom node and react, you can do that with a ref. And you can use fragments to group elements, as a single top level rendered item rather than like wrapping it in a diviv or something like that. [00:18:35] +I'm curious about fragment refs. So like, you know, if you want to get a reference to the underlying dom node and react, you can do that with a ref. And you can use fragments to group elements, as a single top level rendered item rather than like wrapping it in a diviv or something like that. [18:35] -But you cannot grab a reference to that group of nodes. But now they're looking, they "intend to research" refs on node groups like that, which is definitely interesting. I could see that being valuable in something like rendering a table or a list of something else. [00:18:55] +But you cannot grab a reference to that group of nodes. But now they're looking, they "intend to research" refs on node groups like that, which is definitely interesting. I could see that being valuable in something like rendering a table or a list of something else. [18:55] -Like especially if you're trying to do drag and drop kind of things. I could understand why being able to access a reference to a list of rendered nodes might be useful. But yeah, so I, I'm, I'm curious about that, but also given how long we've waited for some of these other things that are being researched with maybe clearer use cases, I will not be holding my breath on that. [00:19:17] +Like especially if you're trying to do drag and drop kind of things. I could understand why being able to access a reference to a list of rendered nodes might be useful. But yeah, so I, I'm, I'm curious about that, but also given how long we've waited for some of these other things that are being researched with maybe clearer use cases, I will not be holding my breath on that. [19:17] -**Mark:** will say that I've, I've watched them put up and merge several prs that are input, are trying to implement fragment refs. So it's, it's definitely not just a theoretical research project. They're actively trained to work out the implementation deals and details. At the moment, [00:19:33] +**Mark:** will say that I've, I've watched them put up and merge several prs that are input, are trying to implement fragment refs. So it's, it's definitely not just a theoretical research project. They're actively trained to work out the implementation deals and details. At the moment, [19:33] -**Carl:** That makes sense. Yeah. [00:19:34] +**Carl:** That makes sense. Yeah. [19:34] -Likewise for gesture animations gestures are generally just like a pain in the butt. I have never found anything that worked super well for that. So they say we're researching ways to enhance new transitions to support gesture animations, such as swiping to open a menu or scroll through a photo carousel. [00:19:50] +Likewise for gesture animations gestures are generally just like a pain in the butt. I have never found anything that worked super well for that. So they say we're researching ways to enhance new transitions to support gesture animations, such as swiping to open a menu or scroll through a photo carousel. [19:50] -That's cool. I will be excited to see if they get something working there. Just 'cause gestures are always annoying and part of why they're annoying is because it's such a, I don't know, they're just very far from like the rendering model. The way you have to think about gestures is very far from the way that React asks you to think about rendering a tree of components with like, self-contained state. It's just like fundamentally outside of a component. It's at the level of the browser, the device. [00:20:17] +That's cool. I will be excited to see if they get something working there. Just 'cause gestures are always annoying and part of why they're annoying is because it's such a, I don't know, they're just very far from like the rendering model. The way you have to think about gestures is very far from the way that React asks you to think about rendering a tree of components with like, self-contained state. It's just like fundamentally outside of a component. It's at the level of the browser, the device. [20:17] -So, figuring out a way to, I don't know, reduce the distance between those is definitely interesting and sounds valuable and useful. But they also say for now we're focused on shipping view transition and we'll revisit gestures afterwards. So this definitely sounds a little bit more like intent to explore than active exploration. [00:20:34] +So, figuring out a way to, I don't know, reduce the distance between those is definitely interesting and sounds valuable and useful. But they also say for now we're focused on shipping view transition and we'll revisit gestures afterwards. So this definitely sounds a little bit more like intent to explore than active exploration. [20:34] -They say they, they also say, we believe we found an approach that works well and may introduce a new API. So cool. They've done some research, they've got an idea, but it's not their immediate focus right now. [00:20:44] +They say they, they also say, we believe we found an approach that works well and may introduce a new API. So cool. They've done some research, they've got an idea, but it's not their immediate focus right now. [20:44] -**Mark:** the other sort of big picture thing that I took away from this post. So there's been a lot of. Complaints and concerns from the community over the last couple years that the React team kind of stopped caring about the client side. That, you know, all their effort was going into building server components and pushing people towards frameworks and all this other stuff, which I. There's definitely been a push. The React team has noted that part of it is just how much, how hard everyone went in on single page apps over the last several years, and so there, there has been a swing back towards server-side rendering and ess, but even like React 19 had a bunch of client-centric features for, for forms and whatnot. it is interesting that basically all the things that they've got in this blog post are client side pieces, you know, view transitions, activities compiler stuff. Sort of there is a real focus on stuff that works on the client and adding like fairly meaningful core level functionality to the library itself. And so I think this actually kinda counterbalances some of the concerns people had that, you know, they were focusing on the server too much as well as noting that, okay, like, okay, now that the big React 19 push is done, now they've got some room to actually pick up with some of the features that they were trying to work on. [00:22:04] +**Mark:** the other sort of big picture thing that I took away from this post. So there's been a lot of. Complaints and concerns from the community over the last couple years that the React team kind of stopped caring about the client side. That, you know, all their effort was going into building server components and pushing people towards frameworks and all this other stuff, which I. There's definitely been a push. The React team has noted that part of it is just how much, how hard everyone went in on single page apps over the last several years, and so there, there has been a swing back towards server-side rendering and ess, but even like React 19 had a bunch of client-centric features for, for forms and whatnot. it is interesting that basically all the things that they've got in this blog post are client side pieces, you know, view transitions, activities compiler stuff. Sort of there is a real focus on stuff that works on the client and adding like fairly meaningful core level functionality to the library itself. And so I think this actually kinda counterbalances some of the concerns people had that, you know, they were focusing on the server too much as well as noting that, okay, like, okay, now that the big React 19 push is done, now they've got some room to actually pick up with some of the features that they were trying to work on. [22:04] ## [React 19.1](https://github.com/facebook/react/releases/tag/v19.1.0) -**Carl:** Let's move on to React 19.1. [00:22:07] +**Carl:** Let's move on to React 19.1. [22:07] -literally the headline in the post itself is the owner stack. They're introducing development mode only stack trace to help identify what components are rendering, which. And this really brought the, the whole concept of the owner staff back to mind for me. [00:22:23] +literally the headline in the post itself is the owner stack. They're introducing development mode only stack trace to help identify what components are rendering, which. And this really brought the, the whole concept of the owner staff back to mind for me. [22:23] -Like this was something that I remember learning about and thinking about, thinking in terms of a lot in the first several years that I worked with React. And I think it's been slightly deprioritized in people's minds, like it's lost mind share. But it is super valuable for a ton of different things. [00:22:41] +Like this was something that I remember learning about and thinking about, thinking in terms of a lot in the first several years that I worked with React. And I think it's been slightly deprioritized in people's minds, like it's lost mind share. But it is super valuable for a ton of different things. [22:41] -So surfacing it better in the developer tools and such I think will be really powerful. I wanted to bring in a couple of like, old, old, old posts that I remember reading and remember being, you know, instructive for me. [00:22:53] +So surfacing it better in the developer tools and such I think will be really powerful. I wanted to bring in a couple of like, old, old, old posts that I remember reading and remember being, you know, instructive for me. [22:53] ## [One React mistake that's slowing you down](https://www.epicreact.dev/one-react-mistake-thats-slowing-you-down) -**Carl:** Kent C Dodds, put out a, you know, one react mistake that's slowing you down blog post a while back and it talks about like component composition and like how you structure the tree and it doesn't name owner stack. [00:23:07] +**Carl:** Kent C Dodds, put out a, you know, one react mistake that's slowing you down blog post a while back and it talks about like component composition and like how you structure the tree and it doesn't name owner stack. [23:07] -I So it doesn't name the owner stack, but like really that's what it's talking about. It talks about like, you know, context and like prop drilling and how you can avoid it and why it's painful. And really what they're talking about, what Kent is talking about in this post is mindfully managing your owner stack. [00:23:23] +I So it doesn't name the owner stack, but like really that's what it's talking about. It talks about like, you know, context and like prop drilling and how you can avoid it and why it's painful. And really what they're talking about, what Kent is talking about in this post is mindfully managing your owner stack. [23:23] -Because the reason you have to prop drill is because the owner stack is weird and you need to go through intermediate components between data source and data usage. But if you restructure that owner stack so that you're, instead of passing a prop through one component so that it gets rendered in another component rendered by that component, you can just render children and then you don't need to pass the prop through. You just render them all at the same level. [00:23:52] +Because the reason you have to prop drill is because the owner stack is weird and you need to go through intermediate components between data source and data usage. But if you restructure that owner stack so that you're, instead of passing a prop through one component so that it gets rendered in another component rendered by that component, you can just render children and then you don't need to pass the prop through. You just render them all at the same level. [23:52] -Or, you know, you maybe not all at the same level, but you can collapse that you can make the tree broader and shallower. And prop drilling is like a developer experience, you know, convenience. It's nice to not have to remember, you know, if you think about it as like the length of a pipe, it makes the pipe a lot shorter and you, you know, there's fewer places for things to go wrong and you have to think about fewer twists and turns. [00:24:13] +Or, you know, you maybe not all at the same level, but you can collapse that you can make the tree broader and shallower. And prop drilling is like a developer experience, you know, convenience. It's nice to not have to remember, you know, if you think about it as like the length of a pipe, it makes the pipe a lot shorter and you, you know, there's fewer places for things to go wrong and you have to think about fewer twists and turns. [24:13] -So like, that's great. But also a flatter, broader owner stack is just naturally good for performance because when you have a deep tree, something at the top re rendering will cause like everything to re-render underneath it. Whereas when you have it flatter and broader, then just you can re-render in smaller batches, like smaller units of components will be forced to re-render when things [00:24:39] +So like, that's great. But also a flatter, broader owner stack is just naturally good for performance because when you have a deep tree, something at the top re rendering will cause like everything to re-render underneath it. Whereas when you have it flatter and broader, then just you can re-render in smaller batches, like smaller units of components will be forced to re-render when things [24:39] -**Mark:** I will caveat that one. [00:24:40] +**Mark:** I will caveat that one. [24:40] -So rendering does work at the direct parent child level. So like if I have parent component, I. Inside of its own JSX, it renders a child of A, and then it inserts B as children inside of A. So like both the tag A and the tag B are inside of parent. There is still a three component level parent-child relationship tree. So root is the parent of of A, A is the parent of B. But the root is the owner of both A and B. [00:25:19] +So rendering does work at the direct parent child level. So like if I have parent component, I. Inside of its own JSX, it renders a child of A, and then it inserts B as children inside of A. So like both the tag A and the tag B are inside of parent. There is still a three component level parent-child relationship tree. So root is the parent of of A, A is the parent of B. But the root is the owner of both A and B. [25:19] -There's still three levels of components that have to get rendered, but it does flatten , the logic needed to generate those. And that's kind of like , the distinction that a lot of people haven't quite seen as they're learning. [00:25:31] +There's still three levels of components that have to get rendered, but it does flatten , the logic needed to generate those. And that's kind of like , the distinction that a lot of people haven't quite seen as they're learning. [25:31] -**Carl:** Right, right. I guess let, yeah, maybe I'll, I'll revise that a little bit. So it's at that root level, if the root level component is re rendering, sure. All of the children still need to re-render, but the deeper the tree, the more parents that're in the loop there are. So this has been like moving components so that it's, the owner tree is flatter, has been like the number one, general approach I've done when there are performance problems in a code base, , which generally comes from, like, you can think in smaller units. I don't know. feel like I'm going deep in the weeds and not stating anything clearly. [00:26:07] +**Carl:** Right, right. I guess let, yeah, maybe I'll, I'll revise that a little bit. So it's at that root level, if the root level component is re rendering, sure. All of the children still need to re-render, but the deeper the tree, the more parents that're in the loop there are. So this has been like moving components so that it's, the owner tree is flatter, has been like the number one, general approach I've done when there are performance problems in a code base, , which generally comes from, like, you can think in smaller units. I don't know. feel like I'm going deep in the weeds and not stating anything clearly. [26:07] -**Mark:** generally speaking Composition is a good thing that more developers would benefit from taking advantage of. [00:26:12] +**Mark:** generally speaking Composition is a good thing that more developers would benefit from taking advantage of. [26:12] ## [Advanced React Component Patterns](https://kentcdodds.com/blog/advanced-react-component-patterns) -**Carl:** Yeah. Another, old, old old post that I'll just shout out. Uh, again had a phenomenal post from 2017 talking about advanced react component patterns and like, okay, some of these are no longer like super duper relevant anymore, like higher aortic components. [00:26:27] +**Carl:** Yeah. Another, old, old old post that I'll just shout out. Uh, again had a phenomenal post from 2017 talking about advanced react component patterns and like, okay, some of these are no longer like super duper relevant anymore, like higher aortic components. [26:27] -Like, hmm, probably just use a hook. But these types back in this era of blogging about React stuff like owner stack was a little bit more, closer to the surface, it was still not on the surface. People are not referencing the owner stack. But yeah, just like when. I feel like owner stack is secretly the other option when people are talking about like prop drilling versus context like, well also what if you just restructured it so it's simpler? [00:26:52] +Like, hmm, probably just use a hook. But these types back in this era of blogging about React stuff like owner stack was a little bit more, closer to the surface, it was still not on the surface. People are not referencing the owner stack. But yeah, just like when. I feel like owner stack is secretly the other option when people are talking about like prop drilling versus context like, well also what if you just restructured it so it's simpler? [26:52] -**Mark:** Yep. [00:26:52] +**Mark:** Yep. [26:52] -**Carl:** Anyway, super cool to see it surfaced. [00:26:54] +**Carl:** Anyway, super cool to see it surfaced. [26:54] ## [Improvements in Expo using owner stack](https://github.com/expo/expo/pull/35866) -**Mo:** one of the things that this owner stack, change is actually powering is some updates to the expo CLI for when you run your app in dev mode because one of the challenges in the React native world is that you get these massive log, massive log spans. [00:27:10] +**Mo:** one of the things that this owner stack, change is actually powering is some updates to the expo CLI for when you run your app in dev mode because one of the challenges in the React native world is that you get these massive log, massive log spans. [27:10] -The stack trace is not at all discernible because it's kind of interacting in between the native world and, and the react world. but with this, the expo team actually ran a p and I think it's been actually merged now into hopefully the next release of, of Expo where they're actually showing you where in the react tree, the, the, the specific component is being rendered. [00:27:31] +The stack trace is not at all discernible because it's kind of interacting in between the native world and, and the react world. but with this, the expo team actually ran a p and I think it's been actually merged now into hopefully the next release of, of Expo where they're actually showing you where in the react tree, the, the, the specific component is being rendered. [27:31] -So it makes discerning some of these error messages a lot simpler. So I think we'll start to see some, maybe some improvements on like the framework level as a result of this. [00:27:41] +So it makes discerning some of these error messages a lot simpler. So I think we'll start to see some, maybe some improvements on like the framework level as a result of this. [27:41] -**Carl:** Okay. That's all we got for React 19.1. Really. I don't know. There's just, there's not that much in 19.1. [00:27:48] +**Carl:** Okay. That's all we got for React 19.1. Really. I don't know. There's just, there's not that much in 19.1. [27:48] ## Dan Abramov is writing again -**Carl:** This is kind of small, this is maybe just like commenting on the ecosystem, but Dan Abramov is writing again, and That's nice. He was writing a lot. I don't know how many hours of text do you think he's written, mark? [00:28:00] +**Carl:** This is kind of small, this is maybe just like commenting on the ecosystem, but Dan Abramov is writing again, and That's nice. He was writing a lot. I don't know how many hours of text do you think he's written, mark? [28:00] -**Mark:** Many, many hours. Like I, I read fairly fast and there, there is a lot of content there. [00:28:06] +**Mark:** Many, many hours. Like I, I read fairly fast and there, there is a lot of content there. [28:06] -**Carl:** One of the newsletters I subscribed to that shared this out you know, does share estimated reading time. And it was, you know, one of the posts was estimated reading time of an hour. And like, that's just if you're scanning your eyes over the words, I think, not trying to digest and understand it, but like broadly what he's writing about is server components. [00:28:25] +**Carl:** One of the newsletters I subscribed to that shared this out you know, does share estimated reading time. And it was, you know, one of the posts was estimated reading time of an hour. And like, that's just if you're scanning your eyes over the words, I think, not trying to digest and understand it, but like broadly what he's writing about is server components. [28:25] -**Mark:** Dan is fascinated with server components at like a technical concept, architectural. Where did this come from? How did we get here? What does this, how is this similar to old approaches? How is this different? What does it enable that you couldn't do before, kind of a level. [00:28:47] +**Mark:** Dan is fascinated with server components at like a technical concept, architectural. Where did this come from? How did we get here? What does this, how is this similar to old approaches? How is this different? What does it enable that you couldn't do before, kind of a level. [28:47] -And he's, not even officially on the React team anymore. Like, think of him as like a, private citizen expressing his own opinions at this point. But the different posts are going through different aspects of. Server components from like a, very conceptual level and trained to explain from first principles, how did we get here? [00:29:09] +And he's, not even officially on the React team anymore. Like, think of him as like a, private citizen expressing his own opinions at this point. But the different posts are going through different aspects of. Server components from like a, very conceptual level and trained to explain from first principles, how did we get here? [29:09] ## [React for Two Computers](https://overreacted.io/react-for-two-computers/) (Complement to [his React Conf talk](https://www.youtube.com/watch?v=ozI4V_29fj4)) -**Mark:** So like react for two computers is taking some of the concepts of, well, we have code that runs on the client and code that runs the server. How do we sort of figure out how to intermingle those? How can we shift pieces of that code back and forth and still have all this work together? [00:29:26] +**Mark:** So like react for two computers is taking some of the concepts of, well, we have code that runs on the client and code that runs the server. How do we sort of figure out how to intermingle those? How can we shift pieces of that code back and forth and still have all this work together? [29:26] ## [JSX Over The Wire](https://overreacted.io/jsx-over-the-wire/) -**Mark:** JSX over the wire, I believe looks at, you know, if we, like we started with rest APIs, but rest APIs often end up growing special cases to handle data that the UI needs. And there's precedent for server driven UIs where you specify, here's a list of components in a JSON format. And then you know, the. All your different UI layers, you know, mobile, web, whatever, can just, you know, figure out on the fly what components you're talking about and render those and that RSCs take that sort of idea form a backend for front end pattern, but it's one that has more flexibility. And being able to send the list of components to render over the wire in a rather dynamic way. [00:30:11] +**Mark:** JSX over the wire, I believe looks at, you know, if we, like we started with rest APIs, but rest APIs often end up growing special cases to handle data that the UI needs. And there's precedent for server driven UIs where you specify, here's a list of components in a JSON format. And then you know, the. All your different UI layers, you know, mobile, web, whatever, can just, you know, figure out on the fly what components you're talking about and render those and that RSCs take that sort of idea form a backend for front end pattern, but it's one that has more flexibility. And being able to send the list of components to render over the wire in a rather dynamic way. [30:11] ## [Impossible Components](https://overreacted.io/impossible-components/) -**Mark:** I always skimmed the most recent one, impossible components, but it's, it's kind of expanding on some of this, like where can the logic live? What are some of the capabilities of things you could do, like having a server component read blog files off disk and estimate the reading time rather than like having to insert them into a database somewhere. So. The first couple were very, very abstract and you know, that was a complaint that a lot of people had. the last one was more concrete. He's also kind of trying to be careful to, I. Explain concepts without literally invoking the word react server component. So like think through the mindset without getting caught up in the trap of, well, this is like a thing I can only use with next, or whatever other complaints people have, [00:31:00] +**Mark:** I always skimmed the most recent one, impossible components, but it's, it's kind of expanding on some of this, like where can the logic live? What are some of the capabilities of things you could do, like having a server component read blog files off disk and estimate the reading time rather than like having to insert them into a database somewhere. So. The first couple were very, very abstract and you know, that was a complaint that a lot of people had. the last one was more concrete. He's also kind of trying to be careful to, I. Explain concepts without literally invoking the word react server component. So like think through the mindset without getting caught up in the trap of, well, this is like a thing I can only use with next, or whatever other complaints people have, [31:00] -**Carl:** funny, I just saw a meme that was like, name something that you can describe and people will agree with until you call it what it is called, and I was like, server components. [00:31:08] +**Carl:** funny, I just saw a meme that was like, name something that you can describe and people will agree with until you call it what it is called, and I was like, server components. [31:08] -**Mark:** Yeah. So. I've seen a number of reactions. You know, some folks are just saying like, look, Dan, your blog posts are too long. They need a table of content, or at least a, a summary upfront of what is the point I'm trying to make here? And Dan's like, that's not the way I write, and I'm sort of ready for myself at this point, which I totally get and good for him. I've, I've seen a number of comments where people have said like, well, I followed the train of thought and now I'm actually sort of getting. What the point of server components are, and I've seen a couple other folks say that like, you know, if, it's taking this much explanation to try to convince me of what server components do, maybe the React team really needs to like come up with like a 500 word summary, which are, which are all I think, are all very valid reactions. But it's , Dan loves explaining things from first principles. he's a very like, logical, think it through. Why does this exist kind of a person. On a personal level, I'm just very happy that he's gotten past his writer's block and feels good about writing the stuff he wants to say, the way he wants to say it. And also, there is some value in reading through these to try to understand like, what is the point of all this? [00:32:12] +**Mark:** Yeah. So. I've seen a number of reactions. You know, some folks are just saying like, look, Dan, your blog posts are too long. They need a table of content, or at least a, a summary upfront of what is the point I'm trying to make here? And Dan's like, that's not the way I write, and I'm sort of ready for myself at this point, which I totally get and good for him. I've, I've seen a number of comments where people have said like, well, I followed the train of thought and now I'm actually sort of getting. What the point of server components are, and I've seen a couple other folks say that like, you know, if, it's taking this much explanation to try to convince me of what server components do, maybe the React team really needs to like come up with like a 500 word summary, which are, which are all I think, are all very valid reactions. But it's , Dan loves explaining things from first principles. he's a very like, logical, think it through. Why does this exist kind of a person. On a personal level, I'm just very happy that he's gotten past his writer's block and feels good about writing the stuff he wants to say, the way he wants to say it. And also, there is some value in reading through these to try to understand like, what is the point of all this? [32:12] -**Carl:** And like at the end of the day, this is not, I think the, I think " feature in a JavaScript tool" is the wrong mental model for thinking about server components. I really do think that they are exploring a new. Compute paradigm, like it's a blending of the client server modes and they're constrained by, you know, technical aspects, everything in JavaScript in the browser is based around like batch and requests, it's hardcore based around a client server model. And they're trying to blur those lines and they do not really have platform support for doing it. So they are, you know, that's where things like the "use client" / "use server" directives, I think like they're kind of a hack fix because they don't have better primitives in the language, in the runtime to work with. [00:33:02] +**Carl:** And like at the end of the day, this is not, I think the, I think " feature in a JavaScript tool" is the wrong mental model for thinking about server components. I really do think that they are exploring a new. Compute paradigm, like it's a blending of the client server modes and they're constrained by, you know, technical aspects, everything in JavaScript in the browser is based around like batch and requests, it's hardcore based around a client server model. And they're trying to blur those lines and they do not really have platform support for doing it. So they are, you know, that's where things like the "use client" / "use server" directives, I think like they're kind of a hack fix because they don't have better primitives in the language, in the runtime to work with. [33:02] -to me, yes, it's taking a lot of words to explain this and to explore it and to try and make it digestible and comprehendible, but it was also really hard to convince people that like, like I, you know, I, I remember early in my career there were a lot of words written about like pets versus livestock servers because like, you should be able to like, kill and restart any server and it shouldn't cause a problem and that's a livestock server, rather than one that you like very gently take care of and, you know, evolve over, over time and love and dote on. [00:33:34] +to me, yes, it's taking a lot of words to explain this and to explore it and to try and make it digestible and comprehendible, but it was also really hard to convince people that like, like I, you know, I, I remember early in my career there were a lot of words written about like pets versus livestock servers because like, you should be able to like, kill and restart any server and it shouldn't cause a problem and that's a livestock server, rather than one that you like very gently take care of and, you know, evolve over, over time and love and dote on. [33:34] -And similarly when serverless became more of a thing, like these are different models for thinking about how your code executes and they're complicated and they're hard and I feel like this is cutting edge in so many different ways and so many, I dunno, I, I appreciate Dan really occupying this space at the bleeding edge, especially now that he's not, you know, professionally obligated to as a member of the core team. [00:33:59] +And similarly when serverless became more of a thing, like these are different models for thinking about how your code executes and they're complicated and they're hard and I feel like this is cutting edge in so many different ways and so many, I dunno, I, I appreciate Dan really occupying this space at the bleeding edge, especially now that he's not, you know, professionally obligated to as a member of the core team. [33:59] -**Mark:** last thought real fast. when the new React Docs came out, there was nothing in there about server components, and for a while the only official docs about server components were over in the next framework documentation that Vercel's devrel team had written, I still thought there was absolutely nothing in the React docs all, about server components until about a week and a half ago. [00:34:21] +**Mark:** last thought real fast. when the new React Docs came out, there was nothing in there about server components, and for a while the only official docs about server components were over in the next framework documentation that Vercel's devrel team had written, I still thought there was absolutely nothing in the React docs all, about server components until about a week and a half ago. [34:21] -When I made that statement, after searching to try to confirm that there were nothing, and I missed that, there had been a page added about server components to the docs about a year ago, and I flat out missed that it existed. Having said that I do feel that the React docs would really benefit from having a much more concrete set of pages that describe server components. Ideally I would like to see an intro page, an overview, and in fact, there was actually a Versel blog post about server components that I think should just be literally copy pasted into the official React docs as the intro. I'd like to see kinda like a modest technical explanation. Like what are they architecturally, where do they fit in? [00:35:02] +When I made that statement, after searching to try to confirm that there were nothing, and I missed that, there had been a page added about server components to the docs about a year ago, and I flat out missed that it existed. Having said that I do feel that the React docs would really benefit from having a much more concrete set of pages that describe server components. Ideally I would like to see an intro page, an overview, and in fact, there was actually a Versel blog post about server components that I think should just be literally copy pasted into the official React docs as the intro. I'd like to see kinda like a modest technical explanation. Like what are they architecturally, where do they fit in? [35:02] -What does running a server component output? Maybe some kind of an FAQ because there's an awful lot of questions people still have about them, including some pretty stupid ones. And then maybe even like some kind of like a adoption or migration page. Like I would like to start using them. [00:35:17] +What does running a server component output? Maybe some kind of an FAQ because there's an awful lot of questions people still have about them, including some pretty stupid ones. And then maybe even like some kind of like a adoption or migration page. Like I would like to start using them. [35:17] -I feel like having those pages would, it wouldn't solve all people's complaints, but it, it would at least centralize and make some of the information more official to reference. [00:35:28] +I feel like having those pages would, it wouldn't solve all people's complaints, but it, it would at least centralize and make some of the information more official to reference. [35:28] ## [don’t 👏 ruin 👏 his 👏 process](https://bsky.app/profile/danabra.mov/post/3lmi3gpiluk2m) -**Carl:** Last thing I'll say on the subject of Dan writing again about server components. he posted on blue sky. "I kind of wanna write a dozen more posts about react server components. But I also feel like it's inviting endless takes about Dan trying to explain RSC means RSC is bad and it kind of ruins some of the process for me." [00:35:44] +**Carl:** Last thing I'll say on the subject of Dan writing again about server components. he posted on blue sky. "I kind of wanna write a dozen more posts about react server components. But I also feel like it's inviting endless takes about Dan trying to explain RSC means RSC is bad and it kind of ruins some of the process for me." [35:44] -So don't ruin the process. [00:35:45] +So don't ruin the process. [35:45] -**Mark:** Be nice Dan, please. [00:35:47] +**Mark:** Be nice Dan, please. [35:47] ## ⚡ Lightning round ⚡ -**Carl:** Okay. Lightning round. [00:35:48] +**Carl:** Okay. Lightning round. [35:48] ## [Next.js RFC: Deployment Adapters API](https://github.com/vercel/next.js/discussions/77740) -**Carl:** There is an RFC from next to do deployment adapters which is pretty cool. Like one of the big endless complaints about next is how hard it is to run anywhere other than versal. So they are meaningfully exploring what it would take to make that easier. [00:36:09] +**Carl:** There is an RFC from next to do deployment adapters which is pretty cool. Like one of the big endless complaints about next is how hard it is to run anywhere other than versal. So they are meaningfully exploring what it would take to make that easier. [36:09] -Yeah, it was post put up three weeks ago. I, I haven't seen a ton of like movement yet on what exactly that means, but yeah, it's seems cool here for it. Interested. Very excited to see what comes out of that. [00:36:23] +Yeah, it was post put up three weeks ago. I, I haven't seen a ton of like movement yet on what exactly that means, but yeah, it's seems cool here for it. Interested. Very excited to see what comes out of that. [36:23] ## flightcontrol.dev from last year: [Secret knowledge to self-host Next.js](https://www.flightcontrol.dev/blog/secret-knowledge-to-self-host-nextjs) -**Carl:** And I also wanted to shout out a blog post from October of last year from Brandon Bayer of Flight Control, secret Knowledge to Self-Host Next js. [00:36:33] +**Carl:** And I also wanted to shout out a blog post from October of last year from Brandon Bayer of Flight Control, secret Knowledge to Self-Host Next js. [36:33] -So that seems like a relevant read in, in conjunction with this new deployment adapters. [00:36:38] +So that seems like a relevant read in, in conjunction with this new deployment adapters. [36:38] ## [Styled-Components in maintenance mode](https://opencollective.com/styled-components/updates/thank-you) -**Mark:** I don't think we mentioned this last month. the style components CSS and JS library has announced that it is officially going into maintenance mode. Part of this is the amount of work needed to do it, and part of it is the shifts in the ecosystem such as relying on context when server components don't support context on the client. So that's both A FYI. This library is going into maintenance mode and also like more evidence that CSS and JS is sort of both falling out of favor and kind of being discouraged by technical changes in React itself. [00:37:15] +**Mark:** I don't think we mentioned this last month. the style components CSS and JS library has announced that it is officially going into maintenance mode. Part of this is the amount of work needed to do it, and part of it is the shifts in the ecosystem such as relying on context when server components don't support context on the client. So that's both A FYI. This library is going into maintenance mode and also like more evidence that CSS and JS is sort of both falling out of favor and kind of being discouraged by technical changes in React itself. [37:15] ## [RIP Styled-Components. Now What?](https://fadamakis.com/rip-styled-components-now-what-a8717df86e86) -**Mo:** One sort of interesting like experience from my side on this specific thing was we actually migrated on a project of mine that was on the web that was using Next js. They went into the app router and tried to embrace all things server components and part of that process was they had a styled component library, like a shared component library that they had internally, which was all in components and, immediately they hit a brick wall and they had like 80 plus components that were all styled components and they couldn't use any of that there. So to throw in a little bit of AI magic what we actually did was created a custom prompt in like two hours that took styled components and converted it into their choice SaaS modules. [00:37:54] +**Mo:** One sort of interesting like experience from my side on this specific thing was we actually migrated on a project of mine that was on the web that was using Next js. They went into the app router and tried to embrace all things server components and part of that process was they had a styled component library, like a shared component library that they had internally, which was all in components and, immediately they hit a brick wall and they had like 80 plus components that were all styled components and they couldn't use any of that there. So to throw in a little bit of AI magic what we actually did was created a custom prompt in like two hours that took styled components and converted it into their choice SaaS modules. [37:54] -Which is going back to basics, but you know, a good technology choice nonetheless, if you want zero js runtime styles. And it worked shockingly well. So if you give it a good set of rules and you define the problem and you give it a nice workflow to follow, as if it was a developer did a shockingly good job, it reduced like the time for each component from like two hours to 15 minutes, 10, 15 minutes with a review process, like manually looking through the code it would generate. [00:38:22] +Which is going back to basics, but you know, a good technology choice nonetheless, if you want zero js runtime styles. And it worked shockingly well. So if you give it a good set of rules and you define the problem and you give it a nice workflow to follow, as if it was a developer did a shockingly good job, it reduced like the time for each component from like two hours to 15 minutes, 10, 15 minutes with a review process, like manually looking through the code it would generate. [38:22] -So if you're stuck in style components world and need a little bit of help, try to use gen AI and the reasoning models shockingly worked very well because. With CSS, things cascade and it needs to have an internal representation of how styles cascade down. So your four OS in chat, GPT wouldn't work very well, but your O ones and O threes would work quite well. bit of a weird guideline, but it was quite a fun experience and I think it's a good use case for it. Trying to play around with gen ai. [00:38:48] +So if you're stuck in style components world and need a little bit of help, try to use gen AI and the reasoning models shockingly worked very well because. With CSS, things cascade and it needs to have an internal representation of how styles cascade down. So your four OS in chat, GPT wouldn't work very well, but your O ones and O threes would work quite well. bit of a weird guideline, but it was quite a fun experience and I think it's a good use case for it. Trying to play around with gen ai. [38:48] -**Mark:** I would not have thought about that. [00:38:50] +**Mark:** I would not have thought about that. [38:50] ## [Redwood announces new Cloudflare-based RSC SDK](https://redwoodjs.com/), existing framework in community maintenance mode -**Carl:** Redwood has announced that they are now doing a CloudFlare based react server components, SDK. So like they used to be more of a framework and now they're like, it's kind of a reduced scope. I don't know. This connects back to, part of the headline of our January episode was "RedwoodJS, dead?" [00:39:12] +**Carl:** Redwood has announced that they are now doing a CloudFlare based react server components, SDK. So like they used to be more of a framework and now they're like, it's kind of a reduced scope. I don't know. This connects back to, part of the headline of our January episode was "RedwoodJS, dead?" [39:12] -We caught word that like some other person who had been involved in the project early but hadn't been involved recently, came back out outta the woodwork and basically what Redwood JS has been for the last, I don't know, two years, it is not anymore and it is now something else. That's, strange. [00:39:31] +We caught word that like some other person who had been involved in the project early but hadn't been involved recently, came back out outta the woodwork and basically what Redwood JS has been for the last, I don't know, two years, it is not anymore and it is now something else. That's, strange. [39:31] -the SDK looks neat. I haven't played with it yet. I had been pretty interested in Redwood js because I thought they were trying to be like a Laravel for JavaScript and React Universe, and I thought that was cool. Something that is more narrowly like about doing the rendering is a lot less interesting to me. [00:39:48] +the SDK looks neat. I haven't played with it yet. I had been pretty interested in Redwood js because I thought they were trying to be like a Laravel for JavaScript and React Universe, and I thought that was cool. Something that is more narrowly like about doing the rendering is a lot less interesting to me. [39:48] -For me, the value of a framework like that is more like, when they were trying to be the Laravel of reactive, I was excited because I would love somebody to make things like authentication and toast messages and all those kinds of things. Easier to do, easier to build a product rather than, I dunno, a rendering model. So this is now kind of going back into rendering model. [00:40:13] +For me, the value of a framework like that is more like, when they were trying to be the Laravel of reactive, I was excited because I would love somebody to make things like authentication and toast messages and all those kinds of things. Easier to do, easier to build a product rather than, I dunno, a rendering model. So this is now kind of going back into rendering model. [40:13] -So it, it seems like an interesting, worthwhile exploration, but it's not what got me excited about Redwood in the first place. [00:40:18] +So it, it seems like an interesting, worthwhile exploration, but it's not what got me excited about Redwood in the first place. [40:18] ## TC39 kills [Records and Tuples proposal](https://github.com/tc39/proposal-record-tuple/issues/394). Possible alternative is [“Composites”](https://github.com/tc39/proposal-composites) -**Mark:** Yep. Meanwhile in, not directly react, but very related news, the TC 39 JavaScript Specification Committee has officially killed the records and two polls proposal. This was intended to add. Deeply comparable immutable objects directly into the JavaScript language, both in terms of runtime and specific syntax for declaring them. The idea was this would sort of like replace all your.dot object spreads and be able to have two objects and deeply compare them with the triple equals sign. [00:40:53] +**Mark:** Yep. Meanwhile in, not directly react, but very related news, the TC 39 JavaScript Specification Committee has officially killed the records and two polls proposal. This was intended to add. Deeply comparable immutable objects directly into the JavaScript language, both in terms of runtime and specific syntax for declaring them. The idea was this would sort of like replace all your.dot object spreads and be able to have two objects and deeply compare them with the triple equals sign. [40:53] -And apparently there was pushback from JavaScript engine, you know, developers who were concerned about the impacts this would have on like internal performance. So that proposal's dead. There is a new proposal called composites, which is sort of lighter weight, like it looks like you would construct objects use, like using like a new composite class that could then have like a composite equals comparison, possibly. So sort of the same direction, but like less deeply embedded in the language itself. So I know a lot of folks had a lot of interest in records and tuples, and we're hoping that one would really come to pass and it didn't happen. [00:41:36] +And apparently there was pushback from JavaScript engine, you know, developers who were concerned about the impacts this would have on like internal performance. So that proposal's dead. There is a new proposal called composites, which is sort of lighter weight, like it looks like you would construct objects use, like using like a new composite class that could then have like a composite equals comparison, possibly. So sort of the same direction, but like less deeply embedded in the language itself. So I know a lot of folks had a lot of interest in records and tuples, and we're hoping that one would really come to pass and it didn't happen. [41:36] ## [React Compiler RC](https://react.dev/blog/2025/04/21/react-compiler-rc) -**Mark:** React Compiler just came out, it was in beta and they've now gone rc. so number one, they, you know, they think it's, it's pretty good. It's almost ready. Number two, they've rearranged some of the lint rules previously. The React. The React compiler lint rules were in their own package, and I believe they're moving them into the existing rules of Hooks package. then they, they also announced experimental support for integrating the compiler with the SWC build tool, which is, you know, conveniently what's actually used by next. the compiler is primarily exposed as a babble plugin, even though the, all the implementation is not babble specific. they've found a way to integrate it into SWC, even if it's maybe not the most optimized way and are continuing to work on, you know, different approaches for configuring it as well. [00:42:27] +**Mark:** React Compiler just came out, it was in beta and they've now gone rc. so number one, they, you know, they think it's, it's pretty good. It's almost ready. Number two, they've rearranged some of the lint rules previously. The React. The React compiler lint rules were in their own package, and I believe they're moving them into the existing rules of Hooks package. then they, they also announced experimental support for integrating the compiler with the SWC build tool, which is, you know, conveniently what's actually used by next. the compiler is primarily exposed as a babble plugin, even though the, all the implementation is not babble specific. they've found a way to integrate it into SWC, even if it's maybe not the most optimized way and are continuing to work on, you know, different approaches for configuring it as well. [42:27] -So it's getting fairly close. [00:42:29] +So it's getting fairly close. [42:29] ## ["Just use Vite”… with the Workers runtime](https://blog.cloudflare.com/introducing-the-cloudflare-vite-plugin/) (Vite on Cloudflare) -**Carl:** Nice. Yeah, CloudFlare has announced better support for Vite with the Workers' runtime while also throwing a little bit of shade, I think, at the React ecosystem by titling it quote, just use Vite dot dot dot, with the workers' runtime. I don't know. It just feels like they're throwing a little bit of shade out there. [00:42:47] +**Carl:** Nice. Yeah, CloudFlare has announced better support for Vite with the Workers' runtime while also throwing a little bit of shade, I think, at the React ecosystem by titling it quote, just use Vite dot dot dot, with the workers' runtime. I don't know. It just feels like they're throwing a little bit of shade out there. [42:47] -it looks pretty neat. I would like to play with this a little bit more, like yeah, they say "we're announcing release of the CloudFlare v plugin as well as official support for the React Router v7." So that's cool. I am currently running a React router v7 app. [00:43:01] +it looks pretty neat. I would like to play with this a little bit more, like yeah, they say "we're announcing release of the CloudFlare v plugin as well as official support for the React Router v7." So that's cool. I am currently running a React router v7 app. [43:01] -That would be interesting to connect to CloudFlare in that way. I guess like the big distinction here is that previously I. They say, "the V dev server would always run your server code in node js, even if you were deploying the CloudFlare workers." in local development. Previously if you were using workers it would just run in node and that's not the same. [00:43:21] +That would be interesting to connect to CloudFlare in that way. I guess like the big distinction here is that previously I. They say, "the V dev server would always run your server code in node js, even if you were deploying the CloudFlare workers." in local development. Previously if you were using workers it would just run in node and that's not the same. [43:21] -There are node APIs that are not available in the workers' time. So now taking advantage of the environment, API that we talked about a couple of months ago they are able to run your local development workers in an identical environment to what they will have in production. So that's cool. [00:43:40] +There are node APIs that are not available in the workers' time. So now taking advantage of the environment, API that we talked about a couple of months ago they are able to run your local development workers in an identical environment to what they will have in production. So that's cool. [43:40] -Definitely very neat. And I generally, I think workers are super cool and just like an interesting programming paradigm. Like talk about, you know, exploring new paradigms for executing code workers are the most exciting other than server components [00:43:54] +Definitely very neat. And I generally, I think workers are super cool and just like an interesting programming paradigm. Like talk about, you know, exploring new paradigms for executing code workers are the most exciting other than server components [43:54] -**Mark:** Last month we announced one of the major pieces of news was a vulnerability in Next's middleware implementation that could potentially have author related concerns. And there was a, you know, a major CVE vulnerability announced around that. This month it was react routers turn something was announced to have to do with some of the the path parsing definitions. [00:44:12] +**Mark:** Last month we announced one of the major pieces of news was a vulnerability in Next's middleware implementation that could potentially have author related concerns. And there was a, you know, a major CVE vulnerability announced around that. This month it was react routers turn something was announced to have to do with some of the the path parsing definitions. [44:12] -There are fixes out for both React Rider and remix. Please upgrade appropriately. [00:44:17] +There are fixes out for both React Rider and remix. Please upgrade appropriately. [44:17] -**Carl:** Yeah, this one looks a lot less major than the next one, but yeah, they did get a CVE. [00:44:21] +**Carl:** Yeah, this one looks a lot less major than the next one, but yeah, they did get a CVE. [44:21] ## [Silk Library - native-like swipeables for the web](https://silkhq.co/) -**Mo:** So next up, I just a library that I saw floating about in the, blue Sky and Twitterverse. Silk is a pretty cool library that takes in sort of these like native swipeable sheets that you're used to in the native world and brings it to the web in a React library. [00:44:37] +**Mo:** So next up, I just a library that I saw floating about in the, blue Sky and Twitterverse. Silk is a pretty cool library that takes in sort of these like native swipeable sheets that you're used to in the native world and brings it to the web in a React library. [44:37] -So, you know, native feeling sidebars or bottom sheets or sort of like a, a, expandable bottom sheet for things like media players and stuff like that. All of that is quite difficult to do in the web world but very easy to do in the native world. And so they've created a React library and it works delightfully, like, it's very hard to tell that it's not native, which is really, really cool. [00:44:58] +So, you know, native feeling sidebars or bottom sheets or sort of like a, a, expandable bottom sheet for things like media players and stuff like that. All of that is quite difficult to do in the web world but very easy to do in the native world. And so they've created a React library and it works delightfully, like, it's very hard to tell that it's not native, which is really, really cool. [44:58] -The. I guess the, the caveat is that it's not open source for anything that's commercial. So any like hobby projects that you're using or open source projects that you're using, it's free. But you need to pay around 300 euros if you want to use it in any commercial projects [00:45:17] +The. I guess the, the caveat is that it's not open source for anything that's commercial. So any like hobby projects that you're using or open source projects that you're using, it's free. But you need to pay around 300 euros if you want to use it in any commercial projects [45:17] -**Carl:** reminds me of like sublime text, sublime merge, like the, the shareware. Please, please pay us. [00:45:22] +**Carl:** reminds me of like sublime text, sublime merge, like the, the shareware. Please, please pay us. [45:22] ## [\{transitions\} = f(state)](https://jordaneldredge.com/blog/transitions-f-of-state/) -**Mark:** Jordan Eldridge, who is possibly best known for having created the React reimplementation of the Winamp music player from the good old days. wrote a post a month or two ago about transitions, RA function of state. it's not talking about the new React transitions, API, but rather kinda that mindset of viewing the contents and the logic of your component as state machines. It's kinda short, but some good thoughts there that are useful to put into practice. [00:45:51] +**Mark:** Jordan Eldridge, who is possibly best known for having created the React reimplementation of the Winamp music player from the good old days. wrote a post a month or two ago about transitions, RA function of state. it's not talking about the new React transitions, API, but rather kinda that mindset of viewing the contents and the logic of your component as state machines. It's kinda short, but some good thoughts there that are useful to put into practice. [45:51] ## Tailwind 4, Bun, and old Macs: [A Supermarket Bag And a Truckload Of FOMO](https://blog.julik.nl/2025/03/a-little-adventure-in-modern-frontend) -**Mark:** And then tossing out one more There was a very interesting article from someone who is trying to switch from using Tailwind three to Tailwind four. [00:45:58] +**Mark:** And then tossing out one more There was a very interesting article from someone who is trying to switch from using Tailwind three to Tailwind four. [45:58] -I. But they were doing it on an old Mac, and as usual, I haven't used Tailwind, tailwind much myself, but apparently the latest version of Tailwind now uses a customized version of the BUN runtime to do its build steps. BUN is distributed as a native binary, and apparently the bun binary requires some of the latest CPU instructions. So it wouldn't even run on this Mac, even though it was a perfectly valid functional laptop. And so this person kind of got stuck, like, how can I even use Tailwind on this laptop when the latest version of tailwind's, compiler won't run on the laptop? And so it's well written, but also it's, just interesting to see how upgrades can cause problems sometimes. [00:46:47] +I. But they were doing it on an old Mac, and as usual, I haven't used Tailwind, tailwind much myself, but apparently the latest version of Tailwind now uses a customized version of the BUN runtime to do its build steps. BUN is distributed as a native binary, and apparently the bun binary requires some of the latest CPU instructions. So it wouldn't even run on this Mac, even though it was a perfectly valid functional laptop. And so this person kind of got stuck, like, how can I even use Tailwind on this laptop when the latest version of tailwind's, compiler won't run on the laptop? And so it's well written, but also it's, just interesting to see how upgrades can cause problems sometimes. [46:47] ## [Introducing Firebase Studio](https://firebase.blog/posts/2025/04/introducing-firebase-studio/) -**Mo:** if you are somewhat following the world of Gen AI and the whirlwind of different tools and stuff that comes up every day some of them good, some of them not so good. There's been these sort of app builders that have been appearing, right? So things like V zero is the, is the big one that you'll probably be familiar with because of Sha Cian and, you know, the Versal ecosystem. [00:47:08] +**Mo:** if you are somewhat following the world of Gen AI and the whirlwind of different tools and stuff that comes up every day some of them good, some of them not so good. There's been these sort of app builders that have been appearing, right? So things like V zero is the, is the big one that you'll probably be familiar with because of Sha Cian and, you know, the Versal ecosystem. [47:08] -But you know, there's other ones like Repli lovable Dev Bolt and, and many, many more I'm sure. It's a problem that a lot of people are trying to solve, which is, you know, how can we enable non-technical people to build out apps or maybe accelerate developers to actually build them out in some sort of agent tech model. [00:47:25] +But you know, there's other ones like Repli lovable Dev Bolt and, and many, many more I'm sure. It's a problem that a lot of people are trying to solve, which is, you know, how can we enable non-technical people to build out apps or maybe accelerate developers to actually build them out in some sort of agent tech model. [47:25] -And so, Firebase. the classic sort of toolkit that was there for mobile and front-end devs to be able to create backends without being real backend developers and needing to worry about things like infrastructure and whatnot, has thrown its hat into the ring and created Firebase studio. [00:47:41] +And so, Firebase. the classic sort of toolkit that was there for mobile and front-end devs to be able to create backends without being real backend developers and needing to worry about things like infrastructure and whatnot, has thrown its hat into the ring and created Firebase studio. [47:41] -So the whole idea with Firebase Studio is that it's it's kind of giving you the full stack. So, you know, Firebase already existed to help you build backends without really building backends. And so they're thinking of building on top of that. They've released this using sort of the Gemini models that Google has to allow you to also build the front end so you know, in one sort of prompt or set of prompts. [00:48:02] +So the whole idea with Firebase Studio is that it's it's kind of giving you the full stack. So, you know, Firebase already existed to help you build backends without really building backends. And so they're thinking of building on top of that. They've released this using sort of the Gemini models that Google has to allow you to also build the front end so you know, in one sort of prompt or set of prompts. [48:02] -So you can generate a screen and then that goes all the way back and creates the sort of the backend for you as well in, in Firebase world, which is an interesting approach because they already have sort of a backend as a service. That people love and use quite often. And I, I still see it being used on a lot of sort of passion projects and even on some production applications. [00:48:22] +So you can generate a screen and then that goes all the way back and creates the sort of the backend for you as well in, in Firebase world, which is an interesting approach because they already have sort of a backend as a service. That people love and use quite often. And I, I still see it being used on a lot of sort of passion projects and even on some production applications. [48:22] -One of the reasons I thought it was interesting to mention here was because if you look at some of the examples that they've released they don't actually, they have a lot of react examples and not as many angular examples, albeit you can use it to generate angular apps as well. And that makes me think that they're sort of coming around to this fact that it's, you know, there's a lot more react and next js open source code on the internet, which means gen AI is probably better at generating it than something like Angular. [00:48:49] +One of the reasons I thought it was interesting to mention here was because if you look at some of the examples that they've released they don't actually, they have a lot of react examples and not as many angular examples, albeit you can use it to generate angular apps as well. And that makes me think that they're sort of coming around to this fact that it's, you know, there's a lot more react and next js open source code on the internet, which means gen AI is probably better at generating it than something like Angular. [48:49] -But that's just a, that's just a take that I have and it's not grounded on any reality. So take that with a grain of salt. But that's my thought process as to why they're, showing a lot of react examples. Of course, they're showing flutter and some angular as well. So it's not like it's just react, but it's definitely interesting. [00:49:05] +But that's just a, that's just a take that I have and it's not grounded on any reality. So take that with a grain of salt. But that's my thought process as to why they're, showing a lot of react examples. Of course, they're showing flutter and some angular as well. So it's not like it's just react, but it's definitely interesting. [49:05] ## [Gumroad is open source!](https://gumroad.gumroad.com/p/gumroad-is-now-open-source) -**Carl:** maybe further afield from React and such, but Gumroad, for their 14th anniversary of being a product in the world is going open source. So they are, I guess, open sourcing their entire product which is cool. I like that. I'm confused about why, because like, you know, like fundamentally, usually people guard their source code if they're a like, functioning business that like makes revenue, you know, having the source code is a decent moat. [00:49:34] +**Carl:** maybe further afield from React and such, but Gumroad, for their 14th anniversary of being a product in the world is going open source. So they are, I guess, open sourcing their entire product which is cool. I like that. I'm confused about why, because like, you know, like fundamentally, usually people guard their source code if they're a like, functioning business that like makes revenue, you know, having the source code is a decent moat. [49:34] -But yeah, it's cool. I, I like that. I like to see it. I love seeing real production code bases made open source because like, that's such a, that's such a common request that I see people asking for is like, okay, cool, I'm learning all of this, but how do I know if it's good, if it's real? [00:49:50] +But yeah, it's cool. I, I like that. I like to see it. I love seeing real production code bases made open source because like, that's such a, that's such a common request that I see people asking for is like, okay, cool, I'm learning all of this, but how do I know if it's good, if it's real? [49:50] ## [Automattic laid off 16% of staff](https://automattic.com/2025/04/02/restructuring-announcement/) -**Carl:** And my last link also a little further afield, kind of at the intersection of our first job market section and our lightning rounds. But checking in on some of the WordPress drama that we had covered a couple months back; Automattic. The company that maintains WordPress and led by Matt of much drama, the last six months is laying off 16% of its staff. It's a little bit, this like restructuring announcement from earlier this month is a little bit goofy to me to read because it, it's, you know, it's just like why we're making changes. We've reached an important crossroads. While revenue continues to grow, we operate in a highly competitive market. It's like, well, yeah, and you also alienated your entire, like, product base and like open source ecosystem and customer base. [00:50:37] +**Carl:** And my last link also a little further afield, kind of at the intersection of our first job market section and our lightning rounds. But checking in on some of the WordPress drama that we had covered a couple months back; Automattic. The company that maintains WordPress and led by Matt of much drama, the last six months is laying off 16% of its staff. It's a little bit, this like restructuring announcement from earlier this month is a little bit goofy to me to read because it, it's, you know, it's just like why we're making changes. We've reached an important crossroads. While revenue continues to grow, we operate in a highly competitive market. It's like, well, yeah, and you also alienated your entire, like, product base and like open source ecosystem and customer base. [50:37] -so just like seeing them talk about laying off one, one out of every six people who works there without talking about how, like, this was a total self own where the CEO just like burned every bridge he could find is like, alright buddy, good luck. [00:50:51] +so just like seeing them talk about laying off one, one out of every six people who works there without talking about how, like, this was a total self own where the CEO just like burned every bridge he could find is like, alright buddy, good luck. [50:51] -**Mo:** It's kind of poetic in some. [00:50:53] +**Mo:** It's kind of poetic in some. [50:53] -**Carl:** it would feel more like poetic justice if Matt was the one losing his job. [00:50:56] +**Carl:** it would feel more like poetic justice if Matt was the one losing his job. [50:56] -Not people unrelated, but Yes. Ugh. [00:50:59] +Not people unrelated, but Yes. Ugh. [50:59] -**Mo:** But you know, I, I, I hope that other tech executives think twice and it becomes a learning lesson before they try to take open source products and monetize it in their favor when they have control over an ecosystem. I hope that people uh, think twice after this. [00:51:15] +**Mo:** But you know, I, I, I hope that other tech executives think twice and it becomes a learning lesson before they try to take open source products and monetize it in their favor when they have control over an ecosystem. I hope that people uh, think twice after this. [51:15] -**Carl:** Yeah, right. I feel like this is gonna be some kind of business case study somewhere. So that's, you know, hopefully [00:51:20] +**Carl:** Yeah, right. I feel like this is gonna be some kind of business case study somewhere. So that's, you know, hopefully [51:20] -**Mo:** I hope he also loses any bonuses that he was banking on getting this year [00:51:24] +**Mo:** I hope he also loses any bonuses that he was banking on getting this year [51:24] -**Carl:** anyway, That's all we got for you this month. Thank you so much for joining us. We will be back on the last Wednesday of the month, next month here in the live stage or back in your podcast feed just as soon as we can. [00:51:34] +**Carl:** anyway, That's all we got for you this month. Thank you so much for joining us. We will be back on the last Wednesday of the month, next month here in the live stage or back in your podcast feed just as soon as we can. [51:34] -We gather sources from this we in React Bites, dev React status, next JS Weekly, the React JS subreddit here in Reactiflux, and those direct from those publishing articles. If you see anything newsworthy, definitely let us know in the Tech News and reads channel here in Reactiflux or shoot me an email at hello@reactiveflux.com. [00:51:52] +We gather sources from this we in React Bites, dev React status, next JS Weekly, the React JS subreddit here in Reactiflux, and those direct from those publishing articles. If you see anything newsworthy, definitely let us know in the Tech News and reads channel here in Reactiflux or shoot me an email at hello@reactiveflux.com. [51:52] -I read everything that comes in, so definitely send me something. This is a show that you value and would like to support. Best way to do so is by submitting a review. It would be cool if it was, you know, five stars, but whatever, any feedback is appreciated and definitely tell your friends and coworkers about it if you like. [00:52:09] +I read everything that comes in, so definitely send me something. This is a show that you value and would like to support. Best way to do so is by submitting a review. It would be cool if it was, you know, five stars, but whatever, any feedback is appreciated and definitely tell your friends and coworkers about it if you like. [52:09] -Cool. Thank you so much. See you next month. [00:52:11] +Cool. Thank you so much. See you next month. [52:11] **Mo:** See you all next month. diff --git a/src/transcripts/tmir-2025-06.md b/src/transcripts/tmir-2025-06.md index fa216c2..ecb8cf6 100644 --- a/src/transcripts/tmir-2025-06.md +++ b/src/transcripts/tmir-2025-06.md @@ -66,296 +66,296 @@ We had some problems with transcript generation this month, downstream of the au # This Month in React: June, 2025 -[00:00:00] **1-vcarl:** Hi, Carl here. Just a quick note before we get into this episode. We had a little bit of an issue with the audio recording, so the quality is a little bit lower than I usually go for. Sorry about that. We'll do better next month. +[00:00] **1-vcarl:** Hi, Carl here. Just a quick note before we get into this episode. We had a little bit of an issue with the audio recording, so the quality is a little bit lower than I usually go for. Sorry about that. We'll do better next month. -[00:00:11] Hello everyone. Thank you for joining us for the June edition of this month in React, where we recap and digest recent developments in the ever evolving react and web ecosystem. We are coming to you live here in Reactiflux, the place for professional React developers. +[00:11] Hello everyone. Thank you for joining us for the June edition of this month in React, where we recap and digest recent developments in the ever evolving react and web ecosystem. We are coming to you live here in Reactiflux, the place for professional React developers. -[00:00:27] We're supported by infinite red. Consultancy that works in React Native. +[00:27] We're supported by infinite red. Consultancy that works in React Native. -[00:00:31] I'm Carl, a staff product developer and freelance community leader here in React Plex, where I run community programs like these events and build tools to help keep the community operating. +[00:31] I'm Carl, a staff product developer and freelance community leader here in React Plex, where I run community programs like these events and build tools to help keep the community operating. -[00:00:41] **2-acemarke:** Hi, I'm Mark. I maintain Redux. I work at Replay.io io and I apparently spend too much time debating the React team's documentation and communication. +[00:41] **2-acemarke:** Hi, I'm Mark. I maintain Redux. I work at Replay.io io and I apparently spend too much time debating the React team's documentation and communication. -[00:00:51] **1-vcarl:** Endlessly! +[00:51] **1-vcarl:** Endlessly! -## [00:00:52] job market +## [00:52] job market -[00:00:52] **1-vcarl:** Start off with a little bit of job market news. I don't know, maybe we should stop doing these. 'cause I feel like it's not really in crisis anymore and it's not really making any dramatic shifts and I feel like I just keep giving about the same update every month. But yeah, data from Indeed trended up for the first time in a while. +[00:52] **1-vcarl:** Start off with a little bit of job market news. I don't know, maybe we should stop doing these. 'cause I feel like it's not really in crisis anymore and it's not really making any dramatic shifts and I feel like I just keep giving about the same update every month. But yeah, data from Indeed trended up for the first time in a while. -[00:01:12] True up.io, which also. Attempts to answer about the same question in terms of like, are people hiring in tech shows a slightly more positive trend. So I think that might be like giant people are using Indeed and they are not hiring as aggressively in tech for tech roles and everyone else is using a random smattering of hiring tools and they are hiring. So I wonder if that's like a big tech versus little tech dichotomy. I don't know. That's not based off too much concrete in summation at all. +[01:12] True up.io, which also. Attempts to answer about the same question in terms of like, are people hiring in tech shows a slightly more positive trend. So I think that might be like giant people are using Indeed and they are not hiring as aggressively in tech for tech roles and everyone else is using a random smattering of hiring tools and they are hiring. So I wonder if that's like a big tech versus little tech dichotomy. I don't know. That's not based off too much concrete in summation at all. -[00:01:43] The layoff charts for June are the best that they've been in a year and a half. Fewest number of people laid off by a decent margin and fewest companies running layoffs again by a pretty decent margin, about half for each. Lowest five 50%. So that's good. That's nice. I'm not sure if anecdotally feels that much different, but yeah. I don't know if you disagree, lemme know. +[01:43] The layoff charts for June are the best that they've been in a year and a half. Fewest number of people laid off by a decent margin and fewest companies running layoffs again by a pretty decent margin, about half for each. Lowest five 50%. So that's good. That's nice. I'm not sure if anecdotally feels that much different, but yeah. I don't know if you disagree, lemme know. -[00:02:08] We're gonna change up order a little bit. Previously we've done on job market, the conferences and the releases. I'm gonna throw conferences back at the end because I could tell in the data that people were skipping through it. So we're gonna move it. +[02:08] We're gonna change up order a little bit. Previously we've done on job market, the conferences and the releases. I'm gonna throw conferences back at the end because I could tell in the data that people were skipping through it. So we're gonna move it. -## [00:02:19] New Releases +## [02:19] New Releases -[00:02:19] **1-vcarl:** Yeah. New releases. +[02:19] **1-vcarl:** Yeah. New releases. -## [00:02:21] ShadCN +## [02:21] ShadCN -[00:02:21] **1-vcarl:** Shadcn pushed out an updated calendar components. In the release notes, they included like a, a code mod to move imports from at rad cy slash whatever to just rad, cy, like top level like barrel import kind of thing. I don't know what that's about. I didn't really see any new releases from RadixUI that mentioned that. +[02:21] **1-vcarl:** Shadcn pushed out an updated calendar components. In the release notes, they included like a, a code mod to move imports from at rad cy slash whatever to just rad, cy, like top level like barrel import kind of thing. I don't know what that's about. I didn't really see any new releases from RadixUI that mentioned that. -[00:02:40] So like I don't really know why that shift is happening, but like, okay, cool. That seems fine. +[02:40] So like I don't really know why that shift is happening, but like, okay, cool. That seems fine. -[00:02:44] **2-acemarke:** A couple other things about RadixUI UI later on in the discussion. +[02:44] **2-acemarke:** A couple other things about RadixUI UI later on in the discussion. -[00:02:47] **1-vcarl:** Yeah. Oh yeah. We've got some main content chatter about them. Just like some Twitter threads, debating, usefulness and whatever. Yeah, more of them later. +[02:47] **1-vcarl:** Yeah. Oh yeah. We've got some main content chatter about them. Just like some Twitter threads, debating, usefulness and whatever. Yeah, more of them later. -## [00:02:55] rechart +## [02:55] rechart -[00:02:55] **1-vcarl:** Recharts has a major release for the first time in a long time. Their last major release was January 4th, 2023. So two and a half years. That's a while. Recharts is not a library that I'm often happy to use, but it is a library that I often use because it just makes charts pretty easy. Not always as powerfully and flexibility as I want, but, it's good enough. It's pretty great. +[02:55] **1-vcarl:** Recharts has a major release for the first time in a long time. Their last major release was January 4th, 2023. So two and a half years. That's a while. Recharts is not a library that I'm often happy to use, but it is a library that I often use because it just makes charts pretty easy. Not always as powerfully and flexibility as I want, but, it's good enough. It's pretty great. -[00:03:16] The big thing that caught my eye in these release notes was they're claiming it's now accessible by default, so you can tap into it in these arrow keys to navigate it. So that's nice. Accessible charts are hard. +[03:16] The big thing that caught my eye in these release notes was they're claiming it's now accessible by default, so you can tap into it in these arrow keys to navigate it. So that's nice. Accessible charts are hard. -[00:03:27] Most people don't do them, so getting it in the default is lovely. That's, that should help a lot more charts be access, and then Mark feel like you'll have more to say on that. +[03:27] Most people don't do them, so getting it in the default is lovely. That's, that should help a lot more charts be access, and then Mark feel like you'll have more to say on that. -## [00:03:37] vite 7 +## [03:37] vite 7 -[00:03:37] **2-acemarke:** Maybe so, so Vite 7 just came out. I've actually been having a little bit of trouble just trying to keep track of some, some of the releases, it feels like they've, they've really sped up some of the development. +[03:37] **2-acemarke:** Maybe so, so Vite 7 just came out. I've actually been having a little bit of trouble just trying to keep track of some, some of the releases, it feels like they've, they've really sped up some of the development. -[00:03:49] They've bumped their, their node version support. Part of that is because they want to make use of the relatively recent node support for requiring ESM packages. In other words, importing an ESM module from a CGS module. Which was always the, the sticking point for a lot of the ESM common JS compatibility. +[03:49] They've bumped their, their node version support. Part of that is because they want to make use of the relatively recent node support for requiring ESM packages. In other words, importing an ESM module from a CGS module. Which was always the, the sticking point for a lot of the ESM common JS compatibility. -[00:04:10] So they're actually distributing e and Vite 7 as ESM only, which. It feels like a fairly big step in the progress of, you know, the ESM ecosystem. They're also changing the default browser target to use the baseline, widely available preset in terms of browser features. They also now have some better support for the environment. +[04:10] So they're actually distributing e and Vite 7 as ESM only, which. It feels like a fairly big step in the progress of, you know, the ESM ecosystem. They're also changing the default browser target to use the baseline, widely available preset in terms of browser features. They also now have some better support for the environment. -[00:04:35] API, I'm still a little hazy on what exactly that does. My understanding is it, it allows you to ultimately generate bundles for different target environments, I believe is the best way to put it. So Vite 7 feels like it's a fairly big release. +[04:35] API, I'm still a little hazy on what exactly that does. My understanding is it, it allows you to ultimately generate bundles for different target environments, I believe is the best way to put it. So Vite 7 feels like it's a fairly big release. -[00:04:51] **1-vcarl:** We had talked about the environment a while ago. I also don't really understand it too well, but definitely like deep in the weeds for library authors or, I don't know, framework authors. I've heard some positive things, but yeah, it seems esoteric. +[04:51] **1-vcarl:** We had talked about the environment a while ago. I also don't really understand it too well, but definitely like deep in the weeds for library authors or, I don't know, framework authors. I've heard some positive things, but yeah, it seems esoteric. -## [00:05:06] biome +## [05:06] biome -[00:05:06] **2-acemarke:** Meanwhile, we also have a slew of new formatting and lint tool leases, all seemingly with an emphasis on making things go a whole lot faster. First off Biome, which is, you know, formerly known as Rome back in the day, just released a version two, which is a fairly big deal, partly because they're, they now actually have some type aware linting rules. +[05:06] **2-acemarke:** Meanwhile, we also have a slew of new formatting and lint tool leases, all seemingly with an emphasis on making things go a whole lot faster. First off Biome, which is, you know, formerly known as Rome back in the day, just released a version two, which is a fairly big deal, partly because they're, they now actually have some type aware linting rules. -[00:05:31] Part of the issue here is that I. Up until now, the only option for doing types based linting was to use the TypeScript ES lint package, and that involves using the TypeScript compiler actually compiling things. And so it's kind of slow, and I don't know exactly how they've managed to implement this, but Biome now has some form of lightweight type analysis that does not appear to rely on the TypeScript compiler. +[05:31] Part of the issue here is that I. Up until now, the only option for doing types based linting was to use the TypeScript ES lint package, and that involves using the TypeScript compiler actually compiling things. And so it's kind of slow, and I don't know exactly how they've managed to implement this, but Biome now has some form of lightweight type analysis that does not appear to rely on the TypeScript compiler. -[00:05:58] And so they've used that. To implement things like the no Floating Promises Rule. Now, it does not appear to be anywhere near as comprehensive as what TypeScript ES lent supports, but it is an interesting step in that direction. +[05:58] And so they've used that. To implement things like the no Floating Promises Rule. Now, it does not appear to be anywhere near as comprehensive as what TypeScript ES lent supports, but it is an interesting step in that direction. -## [00:06:11] Void Zero +## [06:11] Void Zero -[00:06:11] **2-acemarke:** Meanwhile, Void Zero, which is the VC backed company behind now Vite and other related build tooling development has released Oxlint 1.0. +[06:11] **2-acemarke:** Meanwhile, Void Zero, which is the VC backed company behind now Vite and other related build tooling development has released Oxlint 1.0. -[00:06:24] So we have another lint tool that is a competitor to ES lint. They're claiming they have 50 to 100 x speedups and built in support for over 500 ES lint rules. And they say it's being used in a number of major companies. So if Linting is a particularly slow portion of your build pipeline. You may wanna check that out. +[06:24] So we have another lint tool that is a competitor to ES lint. They're claiming they have 50 to 100 x speedups and built in support for over 500 ES lint rules. And they say it's being used in a number of major companies. So if Linting is a particularly slow portion of your build pipeline. You may wanna check that out. -## [00:06:45] Prettier +## [06:45] Prettier -[00:06:45] **2-acemarke:** And meanwhile, prettier 3.6 is out and they've been working on an internal rewrite of their existing CLI to try to speed it up as well. It's not a, it's not a rewrite and rust, it's just finding more efficient ways to do the same work in JavaScript. So the general theme here is people want to do linting faster. +[06:45] **2-acemarke:** And meanwhile, prettier 3.6 is out and they've been working on an internal rewrite of their existing CLI to try to speed it up as well. It's not a, it's not a rewrite and rust, it's just finding more efficient ways to do the same work in JavaScript. So the general theme here is people want to do linting faster. -## [00:07:07] jest +## [07:07] jest -[00:07:07] **1-vcarl:** Yeah, we've got a new release, new major release from Jest as well. I think we had teased this the other day because they had a beta out. But yeah, first major release in three years. Again, faster perf, faster module resolution with some better ESM support. I know that generally like crawling your modules is one of the slowest is like, you know, broadly one of the slower parts of all of these bundling linting testing, whatever tools. +[07:07] **1-vcarl:** Yeah, we've got a new release, new major release from Jest as well. I think we had teased this the other day because they had a beta out. But yeah, first major release in three years. Again, faster perf, faster module resolution with some better ESM support. I know that generally like crawling your modules is one of the slowest is like, you know, broadly one of the slower parts of all of these bundling linting testing, whatever tools. -[00:07:34] I wish I knew a little bit more details about the internals of like how just versus Vitest do it differently. 'cause my sense is that J is like heavier weight. It like does more, is more, I don't know, doing more on your disk and like crawling the condenses and all of those kinds of things. Yeah. So like one more place where there's a focus on performance in our build environment. +[07:34] I wish I knew a little bit more details about the internals of like how just versus Vitest do it differently. 'cause my sense is that J is like heavier weight. It like does more, is more, I don't know, doing more on your disk and like crawling the condenses and all of those kinds of things. Yeah. So like one more place where there's a focus on performance in our build environment. -[00:07:56] **2-acemarke:** Faster build tools, always a good thing. +[07:56] **2-acemarke:** Faster build tools, always a good thing. -## [00:07:57] rn 0.80 +## [07:57] rn 0.80 -[00:07:57] **2-acemarke:** Those who in the audience may have noticed that MO is not here this week. He had a prior commitment and wasn't able to make it. So I will have to do a poor job of filling in and describing some of the React native changes. React Native 0.80 is out and it looks like the two biggest things out of this are they have frozen support for the legacy architecture. +[07:57] **2-acemarke:** Those who in the audience may have noticed that MO is not here this week. He had a prior commitment and wasn't able to make it. So I will have to do a poor job of filling in and describing some of the React native changes. React Native 0.80 is out and it looks like the two biggest things out of this are they have frozen support for the legacy architecture. -[00:08:18] I believe one of the recent releases made the new architecture default. So they are, they're seizing work on the legacy architecture, and this also brings support for React 19.1 as well. Now along with that, I believe the current version of the Expo SDK, version 53, does not have support for this directly yet. +[08:18] I believe one of the recent releases made the new architecture default. So they are, they're seizing work on the legacy architecture, and this also brings support for React 19.1 as well. Now along with that, I believe the current version of the Expo SDK, version 53, does not have support for this directly yet. -[00:08:41] If you want to use React Native 80 with Expo, they do have a canary version of the SDK that you can try out at the moment. But full support, I believe is. Or is planned that Expo SDK 54 coming out later this year would have support for React Native 0.81. So good luck trying to juggle those. +[08:41] If you want to use React Native 80 with Expo, they do have a canary version of the SDK that you can try out at the moment. But full support, I believe is. Or is planned that Expo SDK 54 coming out later this year would have support for React Native 0.81. So good luck trying to juggle those. -[00:09:03] **1-vcarl:** Yeah, I know Expo has visibly been like focusing on release cadence. +[09:03] **1-vcarl:** Yeah, I know Expo has visibly been like focusing on release cadence. -[00:09:07] I feel like for the last year or so, it seems like they've just been releasing something, being constant. And I know that Mo has talked previously about React Native working to have a more frequent release cadence, which is also has been very apparent. Kudos to Expo for like still being able to address this. Even if it's only in a pre-lease version, we can still test it out. +[09:07] I feel like for the last year or so, it seems like they've just been releasing something, being constant. And I know that Mo has talked previously about React Native working to have a more frequent release cadence, which is also has been very apparent. Kudos to Expo for like still being able to address this. Even if it's only in a pre-lease version, we can still test it out. -[00:09:28] And also just like, it seems like it speaks well to the cadence that they're able to hit that they are, Expo is just saying like, yeah, we'll catch the next one because that's how fast it's gonna come out. I do wish Mo was here 'cause I feel like I see references here that make me curious to have an expert explain a little more. +[09:28] And also just like, it seems like it speaks well to the cadence that they're able to hit that they are, Expo is just saying like, yeah, we'll catch the next one because that's how fast it's gonna come out. I do wish Mo was here 'cause I feel like I see references here that make me curious to have an expert explain a little more. -[00:09:45] They have a good post referenced in these release notes, moving towards a stable JavaScript API. I would love to hear Mo talk about how they are getting rid of JavaScript deep imports, so that, you know, basically just like saying, here's the public API stop importing things from deep within the project, which makes sense that if you let people import whatever the heck they want from inside of your package, then yeah, you just don't have a public API and you have to support literally everything. Everything is a break and change. Seems really cool. We'll have to have Mo catch us up next month. +[09:45] They have a good post referenced in these release notes, moving towards a stable JavaScript API. I would love to hear Mo talk about how they are getting rid of JavaScript deep imports, so that, you know, basically just like saying, here's the public API stop importing things from deep within the project, which makes sense that if you let people import whatever the heck they want from inside of your package, then yeah, you just don't have a public API and you have to support literally everything. Everything is a break and change. Seems really cool. We'll have to have Mo catch us up next month. -## [00:10:15] webkit 26 beta +## [10:15] webkit 26 beta -[00:10:15] **1-vcarl:** Yeah, this is a big one that is, I wish I had slightly more context for, but WebKit Safari version 26 is in beta. They're jumping from version 18, I believe it was all the way up to 26. So that all of the different, you know, iOS, whatever technology things can all be in sync. +[10:15] **1-vcarl:** Yeah, this is a big one that is, I wish I had slightly more context for, but WebKit Safari version 26 is in beta. They're jumping from version 18, I believe it was all the way up to 26. So that all of the different, you know, iOS, whatever technology things can all be in sync. -[00:10:33] This was announced of a WW BC 25 keynote. Yeah, so like Mac, os, iOS, iPad os, vision os and Watch OS are all now version 26. And so is Safari because the browser is also an operating system. Vision's a pretty large update and it has like all sorts of things from like cutting edge. Now you can use a model. +[10:33] This was announced of a WW BC 25 keynote. Yeah, so like Mac, os, iOS, iPad os, vision os and Watch OS are all now version 26. And so is Safari because the browser is also an operating system. Vision's a pretty large update and it has like all sorts of things from like cutting edge. Now you can use a model. -[00:10:54] HTML tag, if you're Envision OS to render a 3D model all the way. So like that's very cutting edge, like future looking high tech, whatever. All the way back to you can also use SBGs as your favicon. A feature that like many other B browsers have had for a decade. So they're like both pushing the envelope and playing catch up. +[10:54] HTML tag, if you're Envision OS to render a 3D model all the way. So like that's very cutting edge, like future looking high tech, whatever. All the way back to you can also use SBGs as your favicon. A feature that like many other B browsers have had for a decade. So they're like both pushing the envelope and playing catch up. -[00:11:14] Yeah. Safari has the di very different release cadence from other browsers. It's much closer to like the old style release. Cadence as opposed to how Chrome and Firefox and Edge are all like Evergreen, constantly updating. So I guess it makes sense that we're gonna have such a huge, massive dump of features, but like definitely check it out because they've got all sorts of stuff. +[11:14] Yeah. Safari has the di very different release cadence from other browsers. It's much closer to like the old style release. Cadence as opposed to how Chrome and Firefox and Edge are all like Evergreen, constantly updating. So I guess it makes sense that we're gonna have such a huge, massive dump of features, but like definitely check it out because they've got all sorts of stuff. -[00:11:34] HDR images, web GPU, lots of CSS changes, lots of, you know, new standardized APIs, standardized job J JavaScript, APIs, all sorts of stuff. Finally, Apollo client just shipped a release candidate for version four. The release notes for this version don't have like a consolidated list of everything that's changed, but if you scroll back some, and you look at some of the lists of the prior alphas, it's clear that the, the Apollo team has been very, very busy and I know that. +[11:34] HDR images, web GPU, lots of CSS changes, lots of, you know, new standardized APIs, standardized job J JavaScript, APIs, all sorts of stuff. Finally, Apollo client just shipped a release candidate for version four. The release notes for this version don't have like a consolidated list of everything that's changed, but if you scroll back some, and you look at some of the lists of the prior alphas, it's clear that the, the Apollo team has been very, very busy and I know that. -[00:12:05] In some discussions with Lens, who is my fellow Redux maintainer, but also works on Apollo client as his day job. They've been doing a lot of work to try to improve some of, and some of the packaging setup that had been, that had stuck around for years. One interesting side point out of this is that there's a good chance that Apollo client for might actually ship pre-compiled with the React compiler to try to optimize some of the internal hooks and components in the library. +[12:05] In some discussions with Lens, who is my fellow Redux maintainer, but also works on Apollo client as his day job. They've been doing a lot of work to try to improve some of, and some of the packaging setup that had been, that had stuck around for years. One interesting side point out of this is that there's a good chance that Apollo client for might actually ship pre-compiled with the React compiler to try to optimize some of the internal hooks and components in the library. -[00:12:34] There was a really interesting discussion thread on Blue Sky between Lens from Apollo and Josepha from the React team where they were discussing like, should libraries go ahead and ship like React compiler pre-compiled bundles already? Does it make sense to wait until some of the compiler runtime pieces are more stable, so clear, like. +[12:34] There was a really interesting discussion thread on Blue Sky between Lens from Apollo and Josepha from the React team where they were discussing like, should libraries go ahead and ship like React compiler pre-compiled bundles already? Does it make sense to wait until some of the compiler runtime pieces are more stable, so clear, like. -[00:12:58] This is very new and new and unusual territory for all of us library maintainers, and so it's interesting to see Lynn's trying to figure out some of these things that for the rest of us, yeah. That question of whether libraries should be pre-compiled with the React compiler definitely seems like a big open one in the ecosystem. +[12:58] This is very new and new and unusual territory for all of us library maintainers, and so it's interesting to see Lynn's trying to figure out some of these things that for the rest of us, yeah. That question of whether libraries should be pre-compiled with the React compiler definitely seems like a big open one in the ecosystem. -[00:13:18] Cool. Alright. We are sponsored by Infinite Red. We are an expert React native consultancy that's been around since 2015. I. They're our only sponsor right now, in part because very few companies do as much as they do for the ecosystem. Just they, I don't know of anyone else who's done it quite so much for quite so long. +[13:18] Cool. Alright. We are sponsored by Infinite Red. We are an expert React native consultancy that's been around since 2015. I. They're our only sponsor right now, in part because very few companies do as much as they do for the ecosystem. Just they, I don't know of anyone else who's done it quite so much for quite so long. -[00:13:34] I've been seeing the name Internet Red around for as long as I've been in React and around React. React Native, which goes back all the way back to like 20 14, 20 15, they host the largest React Native podcast. They organized the largest React native conference in the us. They only do React native and have built over 75 apps for companies from startups to the biggest in the world, other than being great people who've done the great things to the ecosystem. +[13:34] I've been seeing the name Internet Red around for as long as I've been in React and around React. React Native, which goes back all the way back to like 20 14, 20 15, they host the largest React Native podcast. They organized the largest React native conference in the us. They only do React native and have built over 75 apps for companies from startups to the biggest in the world, other than being great people who've done the great things to the ecosystem. -[00:14:00] It's a team of about 30, mostly developers, mostly with more than 10 years of experience, and something like half of them have been there since the company was created. So just, you know, dev shop with Longevity. A dev shop with loyalty to its employees. What wild, they aren't just a feature factory. They will work alongside your devs and help you develop your own expertise. +[14:00] It's a team of about 30, mostly developers, mostly with more than 10 years of experience, and something like half of them have been there since the company was created. So just, you know, dev shop with Longevity. A dev shop with loyalty to its employees. What wild, they aren't just a feature factory. They will work alongside your devs and help you develop your own expertise. -[00:14:20] So if you're spinning up a new product, being React native and want some help in the ground running, definitely give them a ring intimate top red. Cool. Okay. Into our main content. Start us off with your posts and talk. Hi. Yes. This is the part where I go off on things for a while, so if you, if you've been listening to the podcast for a while, you know, following me on Blue Sky or something, I've been involved in a lot of discussions and had a lot of opinions about, I. +[14:20] So if you're spinning up a new product, being React native and want some help in the ground running, definitely give them a ring intimate top red. Cool. Okay. Into our main content. Start us off with your posts and talk. Hi. Yes. This is the part where I go off on things for a while, so if you, if you've been listening to the podcast for a while, you know, following me on Blue Sky or something, I've been involved in a lot of discussions and had a lot of opinions about, I. -[00:14:44] A number of the interactions between the React team and the community, as well as a lot of the common misconceptions that have been unfortunately running around in a lot of community threads for a while now. It seems like pretty much every time you open up a discussion, for example, about Next.JS, there's complaints that the React team has is, you know, too close to next. +[14:44] A number of the interactions between the React team and the community, as well as a lot of the common misconceptions that have been unfortunately running around in a lot of community threads for a while now. It seems like pretty much every time you open up a discussion, for example, about Next.JS, there's complaints that the React team has is, you know, too close to next. -[00:15:06] Or that Elle invented server components just to, you know, just to make money. Or why is the React team doing all these server things? Does the React team even care about, you know, single page apps anymore? And. A lot of this stuff has been going on for a while, all the way back in January and February when some of the CRE React app deprecation stuff was going on. +[15:06] Or that Elle invented server components just to, you know, just to make money. Or why is the React team doing all these server things? Does the React team even care about, you know, single page apps anymore? And. A lot of this stuff has been going on for a while, all the way back in January and February when some of the CRE React app deprecation stuff was going on. -[00:15:28] I kind of got fed up for a while and I was writing an extremely long blog post that I never actually published. I did a lot of research. I wrote a lot of words. It was cathartic. In reviewing it, I concluded that publishing it probably would've burned some bridges, even if the content there was accurate. +[15:28] I kind of got fed up for a while and I was writing an extremely long blog post that I never actually published. I did a lot of research. I wrote a lot of words. It was cathartic. In reviewing it, I concluded that publishing it probably would've burned some bridges, even if the content there was accurate. -[00:15:46] But there was, there was some good historical information in there and a number of folks said that it would be worth, you know, trying to publish that. Anyway, so I had a chance to speak at React Summit in Amsterdam a couple weeks ago, and my talk there was actually directly based on some of the content in the post and. +[15:46] But there was, there was some good historical information in there and a number of folks said that it would be worth, you know, trying to publish that. Anyway, so I had a chance to speak at React Summit in Amsterdam a couple weeks ago, and my talk there was actually directly based on some of the content in the post and. -[00:16:07] I decided it was worth trying to revisit the draft that I never published and extract the info that was relevant to the talk and hopefully make some of the points that I'd originally tried to think of, but, you know, maybe in a slightly more tact, tactful and less inflammatory kind of way. So really the the post and the talk. +[16:07] I decided it was worth trying to revisit the draft that I never published and extract the info that was relevant to the talk and hopefully make some of the points that I'd originally tried to think of, but, you know, maybe in a slightly more tact, tactful and less inflammatory kind of way. So really the the post and the talk. -[00:16:28] Are trying to push back on a lot of the myths and misconceptions and FUD that have floated around in the React community for the last few years, but also point out some places where I think the React team's communication has has kind of fallen down. So a lot of people get confused about. The relationship between the React team and the next team who actually invented server components, why they were invented. +[16:28] Are trying to push back on a lot of the myths and misconceptions and FUD that have floated around in the React community for the last few years, but also point out some places where I think the React team's communication has has kind of fallen down. So a lot of people get confused about. The relationship between the React team and the next team who actually invented server components, why they were invented. -[00:16:55] So as usual, a good portion of the talk and the post are basically a history lesson. You know, I tried, I did my best to try to recap, as I understand it, the origin of server of server components, the timeline of when they were invented, basically that the React team invented them while they were still at Meta, before Versal ever got involved. +[16:55] So as usual, a good portion of the talk and the post are basically a history lesson. You know, I tried, I did my best to try to recap, as I understand it, the origin of server of server components, the timeline of when they were invented, basically that the React team invented them while they were still at Meta, before Versal ever got involved. -[00:17:15] And that it was something the React team invented because they ultimately, they saw the infrastructure that Meta had for server side rendering and data fetching. That was always very specific to meta and it really couldn't be generalized. And so server components was an attempt to. Implement kinda like a generic version of what Meta had for its own infrastructure, but because Meta had that infrastructure, they really couldn't iterate and Alpha test the features the way that they had everything else. +[17:15] And that it was something the React team invented because they ultimately, they saw the infrastructure that Meta had for server side rendering and data fetching. That was always very specific to meta and it really couldn't be generalized. And so server components was an attempt to. Implement kinda like a generic version of what Meta had for its own infrastructure, but because Meta had that infrastructure, they really couldn't iterate and Alpha test the features the way that they had everything else. -[00:17:47] They ended up reaching out to Versal and getting Versal to build out the React team's vision of what they wanted to do. So a lot of this was me attempting to push back on the Versal invented server components to make money narrative. But then I also ended up addressing some of my points of concern where the lack of documentation about server components. +[17:47] They ended up reaching out to Versal and getting Versal to build out the React team's vision of what they wanted to do. So a lot of this was me attempting to push back on the Versal invented server components to make money narrative. But then I also ended up addressing some of my points of concern where the lack of documentation about server components. -[00:18:11] Has been a point of confusion. People not understanding when do I use them, how much should I use them? Is the React telling me to use them or are they optional? As well as a lot of the, the back and forth about why are the docs pushing the concept of frameworks so hard. And so I went into some details on my understanding of the React team's rationales for actually trained to say frameworks should be the default way to use react. +[18:11] Has been a point of confusion. People not understanding when do I use them, how much should I use them? Is the React telling me to use them or are they optional? As well as a lot of the, the back and forth about why are the docs pushing the concept of frameworks so hard. And so I went into some details on my understanding of the React team's rationales for actually trained to say frameworks should be the default way to use react. -[00:18:39] I put a lot of effort into it. I hope it's been informative and the feedback to the post and the talk have been pretty good. Dan Abramov actually retweeted it and basically said that, you know, he, he had a couple nitpicks about the way I described some of the timelines and bits of info, and he actually passed me some corrections on the side, which I tried to, to fill in, but he seemed to think it was generally accurate, and also he said that he'd been kind of stuck. +[18:39] I put a lot of effort into it. I hope it's been informative and the feedback to the post and the talk have been pretty good. Dan Abramov actually retweeted it and basically said that, you know, he, he had a couple nitpicks about the way I described some of the timelines and bits of info, and he actually passed me some corrections on the side, which I tried to, to fill in, but he seemed to think it was generally accurate, and also he said that he'd been kind of stuck. -[00:19:06] Debating whether to write his own history post, and he might end up being able to write one. Now that I've done most of the heavy lifting on it, that at least tells me I was directionally accurate. I. Like I can't have been too far off if he wanted to correct me on. So I don't expect that my me writing a post and doing a conference talk is going to silence a lot of the confusion, but at least I've done my best to try to clarify things. +[19:06] Debating whether to write his own history post, and he might end up being able to write one. Now that I've done most of the heavy lifting on it, that at least tells me I was directionally accurate. I. Like I can't have been too far off if he wanted to correct me on. So I don't expect that my me writing a post and doing a conference talk is going to silence a lot of the confusion, but at least I've done my best to try to clarify things. -[00:19:33] So hopefully we'll see. Yeah, I think it's really valuable is to just check in every couple of years I'm like, what is. True. What did happen? What, what were the facts here? Oral history is very, very valuable. Sometimes capture some of that local knowledge. You put it in the paper. Yeah. I would be very curious to see what kind of oral history Dan OV can write though. +[19:33] So hopefully we'll see. Yeah, I think it's really valuable is to just check in every couple of years I'm like, what is. True. What did happen? What, what were the facts here? Oral history is very, very valuable. Sometimes capture some of that local knowledge. You put it in the paper. Yeah. I would be very curious to see what kind of oral history Dan OV can write though. -[00:19:52] That's, uh, you know, you and I have been paying attention for a long time, but we have not been. Operating anywhere near the same level as Dan has for as long as he has. I would say, I hope it doesn't feel unfair to make the same claim for you, but useful post. Interesting. I think it's interesting too, how I. +[19:52] That's, uh, you know, you and I have been paying attention for a long time, but we have not been. Operating anywhere near the same level as Dan has for as long as he has. I would say, I hope it doesn't feel unfair to make the same claim for you, but useful post. Interesting. I think it's interesting too, how I. -[00:20:10] As big as reactors, you know, the millions of people using it and relying on it and affected by it. At its core, the people in control of it is still like very countable. You know, it's not like unaccountable machine of like hundreds of people turning knobs and dials and you know, like it is at the end of the day, very much a core group of a handful of people making a lot of these decisions and doing a lot of this work. +[20:10] As big as reactors, you know, the millions of people using it and relying on it and affected by it. At its core, the people in control of it is still like very countable. You know, it's not like unaccountable machine of like hundreds of people turning knobs and dials and you know, like it is at the end of the day, very much a core group of a handful of people making a lot of these decisions and doing a lot of this work. -[00:20:37] And I feel like that's maybe, I don't know, that feels relevant when we're discussing its evolution and such. There's a team page in the React Docs and that page Curie lists about 20 people. There's about 13 to 15 at Meta at the moment. There's about five people at Versal, and then there's two or three sort of independent slash emeritus people. +[20:37] And I feel like that's maybe, I don't know, that feels relevant when we're discussing its evolution and such. There's a team page in the React Docs and that page Curie lists about 20 people. There's about 13 to 15 at Meta at the moment. There's about five people at Versal, and then there's two or three sort of independent slash emeritus people. -[00:21:00] So for example, Dan Abramov is not directly on the team at this point, actually. I'm not even sure if he's still listed on the page. I would've to double check. Sophie Alpert, who was at Meta for a number of years is still listed on the team page. I don't think she does a lot of development at this point, but still involved in discussions. +[21:00] So for example, Dan Abramov is not directly on the team at this point, actually. I'm not even sure if he's still listed on the page. I would've to double check. Sophie Alpert, who was at Meta for a number of years is still listed on the team page. I don't think she does a lot of development at this point, but still involved in discussions. -[00:21:19] So it's about 20 ish people that would be considered sort of the, the core team that's separate from, you know, whoever might be doing like React native or other pieces like that. Right. React native is its own court team, which I think is larger. Yeah, I can confirm. Dan Amont was still listed on the meet between page second, so very highly along with me giving my talk. +[21:19] So it's about 20 ish people that would be considered sort of the, the core team that's separate from, you know, whoever might be doing like React native or other pieces like that. Right. React native is its own court team, which I think is larger. Yeah, I can confirm. Dan Amont was still listed on the meet between page second, so very highly along with me giving my talk. -[00:21:43] Earlier in the afternoon. Tanner Winsley did a talk about couple different things. Some of it was, you know, pitching the various 10 stack pieces. So router query the upcoming 10 Stack start framework as well. But part of his thesis was that. Single page apps are still by far the dominant way to build React, even if there's been more of an emphasis on server side pieces in the last few years. +[21:43] Earlier in the afternoon. Tanner Winsley did a talk about couple different things. Some of it was, you know, pitching the various 10 stack pieces. So router query the upcoming 10 Stack start framework as well. But part of his thesis was that. Single page apps are still by far the dominant way to build React, even if there's been more of an emphasis on server side pieces in the last few years. -[00:22:10] He really likes single page apps and a lot of his goal is to build good tooling that would be used by single page apps. I don't think any of the talks from React Summit are are online yet. I think they said they would try to have 'em online within two to three weeks after the conference. I haven't seen a notification that any of 'em were up yet, but I would definitely recommend watching Tanner's talk once the video for that's available. +[22:10] He really likes single page apps and a lot of his goal is to build good tooling that would be used by single page apps. I don't think any of the talks from React Summit are are online yet. I think they said they would try to have 'em online within two to three weeks after the conference. I haven't seen a notification that any of 'em were up yet, but I would definitely recommend watching Tanner's talk once the video for that's available. -[00:22:38] Yeah, maybe we can, oh wait. Oh wait, I see a playlist. No, there's only five videos on it. Yeah. Maybe we'll be able to share those out next month. Yeah, they, I believe they, they're generally put up directly on get nation.org or.com, I think, rather than being listed in the YouTube channel. But we'll have to see. +[22:38] Yeah, maybe we can, oh wait. Oh wait, I see a playlist. No, there's only five videos on it. Yeah. Maybe we'll be able to share those out next month. Yeah, they, I believe they, they're generally put up directly on get nation.org or.com, I think, rather than being listed in the YouTube channel. But we'll have to see. -[00:22:57] Okay. I do see a React Summit 2025 playlist that has a couple of videos with like children views, maybe a ways to watch. Yeah. Moving on. Remix React router, going back to last month. So we've had a lot of. Back and forth between what is Remix, what is React Router? First we had React Router, the client side, LI Library. +[22:57] Okay. I do see a React Summit 2025 playlist that has a couple of videos with like children views, maybe a ways to watch. Yeah. Moving on. Remix React router, going back to last month. So we've had a lot of. Back and forth between what is Remix, what is React Router? First we had React Router, the client side, LI Library. -[00:23:21] Then we had Remix the SSR framework, and then we had Brian Forres announcement at React Conf, I think two years ago that most of the features in Remix we're going to migrate back to React router. And so React router gained things like loaders and a framework mode, and they announced that Remix was going into some kind of hibernation. +[23:21] Then we had Remix the SSR framework, and then we had Brian Forres announcement at React Conf, I think two years ago that most of the features in Remix we're going to migrate back to React router. And so React router gained things like loaders and a framework mode, and they announced that Remix was going into some kind of hibernation. -[00:23:46] What was Remix is now basically all in React router, version seven I. And so Remix had kind of stopped development at version two last month. We talked about the announcement post where they said that Remix V three is coming. It's going to be very different. It's not just like, you know, upgrade to the latest version of React Features or something like that, but instead that it would be. +[23:46] What was Remix is now basically all in React router, version seven I. And so Remix had kind of stopped development at version two last month. We talked about the announcement post where they said that Remix V three is coming. It's going to be very different. It's not just like, you know, upgrade to the latest version of React Features or something like that, but instead that it would be. -[00:24:12] A new framework, one that actually is gonna use a fork of the pre-ACT alternative library, and with various emphasis on things like LLM based development and no bundling. That's the context for where things stand with Remix and react Router as a whole. So from there, Ryan for and Michael Jackson are both pr, you know, still pretty active on Twitter and they've been making a lot of comments that are either teasing things in directions that they want to go with Remix, but also, I'm not entirely gonna call them like clickbait or flame bait posts. +[24:12] A new framework, one that actually is gonna use a fork of the pre-ACT alternative library, and with various emphasis on things like LLM based development and no bundling. That's the context for where things stand with Remix and react Router as a whole. So from there, Ryan for and Michael Jackson are both pr, you know, still pretty active on Twitter and they've been making a lot of comments that are either teasing things in directions that they want to go with Remix, but also, I'm not entirely gonna call them like clickbait or flame bait posts. -[00:24:55] But kind of close stating a number of opinions about React itself that frankly make me very, very, very confused about what it is. Remix V three is actually even gonna look like. An example of this would be that Michael Jackson recently tweeted that he's now very disillusioned with React Hooks. You might even remember that Ryan Florence did one of the original talks at React Con 2018 where he helped, you know, demo React hooks for the first time. +[24:55] But kind of close stating a number of opinions about React itself that frankly make me very, very, very confused about what it is. Remix V three is actually even gonna look like. An example of this would be that Michael Jackson recently tweeted that he's now very disillusioned with React Hooks. You might even remember that Ryan Florence did one of the original talks at React Con 2018 where he helped, you know, demo React hooks for the first time. -[00:25:22] And you know, granted, this is Michael's comment, not Ryan's, but I think it kind of shows their shift in mindset over the last seven years. Yeah, definitely big moves. I don't know, there's. They've been such big figures throughout my career. Like when I was learning React, I learned React rather in parallel, in like literally 2014. +[25:22] And you know, granted, this is Michael's comment, not Ryan's, but I think it kind of shows their shift in mindset over the last seven years. Yeah, definitely big moves. I don't know, there's. They've been such big figures throughout my career. Like when I was learning React, I learned React rather in parallel, in like literally 2014. -[00:25:44] And it's a little bit funny to have like been there for the whole saga because I've just watched them go like back and forth and back and forth on like what should be the API do. We care about data fetch at the router level. Just like watching them explore this and like watching their opinions shift and evolve and like double back and unfold in slightly different directions. +[25:44] And it's a little bit funny to have like been there for the whole saga because I've just watched them go like back and forth and back and forth on like what should be the API do. We care about data fetch at the router level. Just like watching them explore this and like watching their opinions shift and evolve and like double back and unfold in slightly different directions. -[00:26:06] It's, I don't know, it is a bit of a surprise. I, I don't know. It is and isn't surprising to see Michael Jackson here come out against hooks. Also, I'll just say I was trying to confirm whether Michael Jackson still worked at Remix post Shopify acquisition, but I, I had a funny interaction years ago, managed to get enough of the profile in the ecosystem where Michael Jackson was following me on Twitter and we had a interaction during COVD about like lockdown stuff, where he was skeptical of lockdown. +[26:06] It's, I don't know, it is a bit of a surprise. I, I don't know. It is and isn't surprising to see Michael Jackson here come out against hooks. Also, I'll just say I was trying to confirm whether Michael Jackson still worked at Remix post Shopify acquisition, but I, I had a funny interaction years ago, managed to get enough of the profile in the ecosystem where Michael Jackson was following me on Twitter and we had a interaction during COVD about like lockdown stuff, where he was skeptical of lockdown. -[00:26:36] And I was like, it's keeping people safe. And he ended up unfollowing me. So I don't know, like that felt like, that felt like a moment, that was a moment for me. I dunno, big famous person in the ecosystem unfollows you on Twitter. Like it stuck in my head and I don't know, it's just like, to me that feels like that feels relevant here as like point of contrarian and like, I don't know. +[26:36] And I was like, it's keeping people safe. And he ended up unfollowing me. So I don't know, like that felt like, that felt like a moment, that was a moment for me. I dunno, big famous person in the ecosystem unfollows you on Twitter. Like it stuck in my head and I don't know, it's just like, to me that feels like that feels relevant here as like point of contrarian and like, I don't know. -[00:26:56] It's seemed since then that there was kinda like a closing off since then of him being like, Nope, I believe what I believe and I'm very confident that it is right. And like, screw all you. So I don't know. This is interesting. On the one hand, like hell yeah. Know your principles live by them and put the work in and like he's doing that. +[26:56] It's seemed since then that there was kinda like a closing off since then of him being like, Nope, I believe what I believe and I'm very confident that it is right. And like, screw all you. So I don't know. This is interesting. On the one hand, like hell yeah. Know your principles live by them and put the work in and like he's doing that. -[00:27:16] Heck yeah. It's interesting hearing him say like, I don't like hooks. They're not great. And also like I relate to that. I don't know, like I, I started like learning hooks and like rewriting a bunch of code and using them professionally for a number of years. It felt like there was a right way to solve the problem. +[27:16] Heck yeah. It's interesting hearing him say like, I don't like hooks. They're not great. And also like I relate to that. I don't know, like I, I started like learning hooks and like rewriting a bunch of code and using them professionally for a number of years. It felt like there was a right way to solve the problem. -[00:27:35] It felt like I was, it felt less like I was writing code and like doing a thing and more like I was figuring out a puzzle somebody else had made with a right answer. And if you didn't get just the right answer, like you kind of had to start over. You know, it felt video gamey in that way of like, you make a bunch of progress and then you realize that you're at a dead end and it's like, let me start over. +[27:35] It felt like I was, it felt less like I was writing code and like doing a thing and more like I was figuring out a puzzle somebody else had made with a right answer. And if you didn't get just the right answer, like you kind of had to start over. You know, it felt video gamey in that way of like, you make a bunch of progress and then you realize that you're at a dead end and it's like, let me start over. -[00:27:54] I think that, you know, that feels like what he's complaining about here. You know, everything about them just seems so unnecessarily complex. But then he is also like down on signals, which is what a lot of other people are very pro. I'm also skeptical having used, I don't know there, I hear there are differences from event emitters, but I'm skeptical that the differences are that significant. +[27:54] I think that, you know, that feels like what he's complaining about here. You know, everything about them just seems so unnecessarily complex. But then he is also like down on signals, which is what a lot of other people are very pro. I'm also skeptical having used, I don't know there, I hear there are differences from event emitters, but I'm skeptical that the differences are that significant. -[00:28:16] I keep hearing similar trade offs about circular dependencies and like event storm type of stuff. So if he's rejected like pokes and signals, which are the two top of mind ways of dealing with reactivity in React. And he's also stated the intent to use a fork of a fork of react in Remix D three. Yeah, whatever that's gonna be called. +[28:16] I keep hearing similar trade offs about circular dependencies and like event storm type of stuff. So if he's rejected like pokes and signals, which are the two top of mind ways of dealing with reactivity in React. And he's also stated the intent to use a fork of a fork of react in Remix D three. Yeah, whatever that's gonna be called. -[00:28:39] I don't know. It's interesting. Like it doesn't sound like it's react anymore. It sounds like it's, he's gonna try and explore. The same problem space that React has been exploring, but doing so while challenging some of the core assumptions. So I don't know, it's space to watch. Yeah. And, and to be clear, like I'm, I'm not sitting here and saying like, oh no, Michael Jackson hate hooks. +[28:39] I don't know. It's interesting. Like it doesn't sound like it's react anymore. It sounds like it's, he's gonna try and explore. The same problem space that React has been exploring, but doing so while challenging some of the core assumptions. So I don't know, it's space to watch. Yeah. And, and to be clear, like I'm, I'm not sitting here and saying like, oh no, Michael Jackson hate hooks. -[00:29:00] He's a bad person. And anyone who's actually. Excuse, react, understands that hooks have trade-offs. They are not perfect. They have a different set of trade-offs than class components did. There are a lot of pain points, depths, arrays, data flow, you know, reactivity, mental models, et cetera. I am certainly very well aware that. +[29:00] He's a bad person. And anyone who's actually. Excuse, react, understands that hooks have trade-offs. They are not perfect. They have a different set of trade-offs than class components did. There are a lot of pain points, depths, arrays, data flow, you know, reactivity, mental models, et cetera. I am certainly very well aware that. -[00:29:21] Hooks have their own set of trade-offs and flaws. But yeah, like my point, looking at the thread and this discussion is basically what you were saying, like Remix was a react based framework in version one and version two, Remix V three is not a React based. Framework, but given that they don't seem to like hooks and they don't seem to like signals at this point, I just honestly have no idea what it is they're even trying to build or what the feature set is, what the. +[29:21] Hooks have their own set of trade-offs and flaws. But yeah, like my point, looking at the thread and this discussion is basically what you were saying, like Remix was a react based framework in version one and version two, Remix V three is not a React based. Framework, but given that they don't seem to like hooks and they don't seem to like signals at this point, I just honestly have no idea what it is they're even trying to build or what the feature set is, what the. -[00:29:56] Usage patterns are supposed to be. I, I am just, I, I, I don't have a good mental model for what it is they're trying to do at this point, just by reading the discussion and the tweets. I believe they said that, I think there's a, a Remix jam conference coming up later this year. I think possibly in Toronto, if I remember hearing correctly. +[29:56] Usage patterns are supposed to be. I, I am just, I, I, I don't have a good mental model for what it is they're trying to do at this point, just by reading the discussion and the tweets. I believe they said that, I think there's a, a Remix jam conference coming up later this year. I think possibly in Toronto, if I remember hearing correctly. -[00:30:18] I don't have a date for that off the top of my head, but I think it's this fall, and I think I've seen them say that they will have some announcements to make. At Remix Jam, which is understandable. I don't know, like I'm curious to see what they've got, but it, it doesn't seem like we'll really have a decent understanding until they make an actual announcement and then there's good documentation to look at, and then we could critique that. +[30:18] I don't have a date for that off the top of my head, but I think it's this fall, and I think I've seen them say that they will have some announcements to make. At Remix Jam, which is understandable. I don't know, like I'm curious to see what they've got, but it, it doesn't seem like we'll really have a decent understanding until they make an actual announcement and then there's good documentation to look at, and then we could critique that. -[00:30:39] Yeah. Right. So, I don't know. I'm curious. If they have my attention, for sure. It feels like they're being coy about it too. I feel like they have a lot more of this banged out than they're talking about and you know, I feel like there's a private group chat or like a secret repo somewhere that it'd be very fascinating to get access to. +[30:39] Yeah. Right. So, I don't know. I'm curious. If they have my attention, for sure. It feels like they're being coy about it too. I feel like they have a lot more of this banged out than they're talking about and you know, I feel like there's a private group chat or like a secret repo somewhere that it'd be very fascinating to get access to. -[00:30:57] Another little bit about this, they have posted about the open governance. Technical committee, steering committee that reactor adder will now have, I hold some skepticism, some level of skepticism just based on like the contents of this governance stock that you know, this governance announcement blog post, like notably the only people on the steering committee at inception, our existing Remix and react to router contributors, the announcement and the governance model. +[30:57] Another little bit about this, they have posted about the open governance. Technical committee, steering committee that reactor adder will now have, I hold some skepticism, some level of skepticism just based on like the contents of this governance stock that you know, this governance announcement blog post, like notably the only people on the steering committee at inception, our existing Remix and react to router contributors, the announcement and the governance model. -[00:31:28] Both focus very heavily on technical goals while discussing governance and how this is going to be open and like, you know, participant participatory from the ecosystem and whatever. They set up a lot of fences pretty early and strongly of this is what we care about. This is the direction we're gonna be going. +[31:28] Both focus very heavily on technical goals while discussing governance and how this is going to be open and like, you know, participant participatory from the ecosystem and whatever. They set up a lot of fences pretty early and strongly of this is what we care about. This is the direction we're gonna be going. -[00:31:46] So like saying, not including outside people in the initial steering committee. And very aggressively setting direction while discussing open governance to me says this is visible governance, but I don't know if it's gonna be open to that, open to outside participators. Yeah. This feels reminiscent of like some of the working groups in the React ecosystem where they, we were just, you know, a little bit, they had blinders on. +[31:46] So like saying, not including outside people in the initial steering committee. And very aggressively setting direction while discussing open governance to me says this is visible governance, but I don't know if it's gonna be open to that, open to outside participators. Yeah. This feels reminiscent of like some of the working groups in the React ecosystem where they, we were just, you know, a little bit, they had blinders on. -[00:32:11] They were gonna do their thing and they did their thing and that's great, but it's, it's not that open, it's not really that participatory. So this is, this is one that I've only partly read, but it feels like there's some amount of relevance. So the RAD X UI is a headless UI library that is pretty popular, especially because it's been used by the Shad CN component library. +[32:11] They were gonna do their thing and they did their thing and that's great, but it's, it's not that open, it's not really that participatory. So this is, this is one that I've only partly read, but it feels like there's some amount of relevance. So the RAD X UI is a headless UI library that is pretty popular, especially because it's been used by the Shad CN component library. -[00:32:36] But RAD X UI has been borderline unmaintained for quite a while. I believe the library itself got bought out a while back by a company called Work Os. And there's now basically a, a halftime maintainer of the library. And I've actually spoken to that maintainer before at a conference and he is like, yeah, I'm, I'm pretty burned out. +[32:36] But RAD X UI has been borderline unmaintained for quite a while. I believe the library itself got bought out a while back by a company called Work Os. And there's now basically a, a halftime maintainer of the library. And I've actually spoken to that maintainer before at a conference and he is like, yeah, I'm, I'm pretty burned out. -[00:32:59] And I would almost rather like not even do anything with redix at this point. I. So there was some chatter in the last few weeks about whether people really ought to even be using it at this point. And apparently one of the original co-creators of Readex is now working on a competing package called Base ui. +[32:59] And I would almost rather like not even do anything with redix at this point. I. So there was some chatter in the last few weeks about whether people really ought to even be using it at this point. And apparently one of the original co-creators of Readex is now working on a competing package called Base ui. -[00:33:20] And so basically saying that, look, Readex is unmaintained. Try using base ui, try using Aria kit. So I, I don't necessarily have a lot more feedback and thought and no, I have not seen Theo's video on it, so I have no opinions there. I will say that just because something is not getting active maintenance does not mean that the code is dead or suddenly more broken. +[33:20] And so basically saying that, look, Readex is unmaintained. Try using base ui, try using Aria kit. So I, I don't necessarily have a lot more feedback and thought and no, I have not seen Theo's video on it, so I have no opinions there. I will say that just because something is not getting active maintenance does not mean that the code is dead or suddenly more broken. -[00:33:46] But I can definitely understand people's reluctance to use something that isn't getting, you know, like still getting active fixes. Yeah, I do have some opinions. I think that to some extent, like I don't really expect that much active maintenance from a like mature and wide used component library because there's not really that much changing in how you would develop a component library. +[33:46] But I can definitely understand people's reluctance to use something that isn't getting, you know, like still getting active fixes. Yeah, I do have some opinions. I think that to some extent, like I don't really expect that much active maintenance from a like mature and wide used component library because there's not really that much changing in how you would develop a component library. -[00:34:12] Like there has been so many component libraries. All like, you know, building on each other and exploring different directions and like pulling different types of abstractions and different types of like interactivity or whatever, different developer experiences. Going back for like long enough that it's pretty well trot ground at this point, and for a very long time it reacts life. +[34:12] Like there has been so many component libraries. All like, you know, building on each other and exploring different directions and like pulling different types of abstractions and different types of like interactivity or whatever, different developer experiences. Going back for like long enough that it's pretty well trot ground at this point, and for a very long time it reacts life. -[00:34:37] The patterns and the abstractions and the ecosystem they existed in were churning very heavily, and so it, it was not that surprising to see new component libraries coming out like every, you know, six months because there were meaningful differences. Every six months, you know, like, you know, is, is this written with higher order components or render props or hooks or, right. +[34:37] The patterns and the abstractions and the ecosystem they existed in were churning very heavily, and so it, it was not that surprising to see new component libraries coming out like every, you know, six months because there were meaningful differences. Every six months, you know, like, you know, is, is this written with higher order components or render props or hooks or, right. -[00:35:00] Oh, you know, like when I first started, I started writing things with mix-ins, and then I was like, wow, mix-ins are, and then someone was like, oh, here's a higher order component. I was like, oh, that's cool. Let me try that. And then someone was like, here's a render prop. Here's a hook. You know? Now node and MPM support different modes of like consuming libraries. +[35:00] Oh, you know, like when I first started, I started writing things with mix-ins, and then I was like, wow, mix-ins are, and then someone was like, oh, here's a higher order component. I was like, oh, that's cool. Let me try that. And then someone was like, here's a render prop. Here's a hook. You know? Now node and MPM support different modes of like consuming libraries. -[00:35:21] And so now as a component library maintainer, I need to go refactor everything to support tree shaking or to be ESM only. So like there's just been so many big seismic shifts that like, yeah, we got used to that, but it's not really, that hasn't really been strongly the case for a minute now, like I would say, I. +[35:21] And so now as a component library maintainer, I need to go refactor everything to support tree shaking or to be ESM only. So like there's just been so many big seismic shifts that like, yeah, we got used to that, but it's not really, that hasn't really been strongly the case for a minute now, like I would say, I. -[00:35:44] 2022. I feel like it was when we had a, started getting, you know, as an ecosystem, the wisdom of how to use hooks had really settled down pretty well. Like we, we explored a lot of patterns and figured out things that did or did not work. And Hooks came out in 2018. 2022 is like four years of like playing with them. +[35:44] 2022. I feel like it was when we had a, started getting, you know, as an ecosystem, the wisdom of how to use hooks had really settled down pretty well. Like we, we explored a lot of patterns and figured out things that did or did not work. And Hooks came out in 2018. 2022 is like four years of like playing with them. -[00:36:06] And then that was three years ago. So like we've been, we've had a stable set of primitive tools within React. For doing abstractions for seven years now, which is absolutely, you know, that's longer than pre hooks. We only have three years before hooks existed. Four years, maybe five. No, it was 2013 when it came out. +[36:06] And then that was three years ago. So like we've been, we've had a stable set of primitive tools within React. For doing abstractions for seven years now, which is absolutely, you know, that's longer than pre hooks. We only have three years before hooks existed. Four years, maybe five. No, it was 2013 when it came out. -[00:36:25] So like that's more time with hooks than we had without hooks. So I don't know, like. I see this thread started with hot tape using Chad CN slash radix. The liability at this point, and maybe this is also an echo of a point that I try to drive home periodically on this podcast of like there are many different audiences using React and if you're an indie hacker than your constraints are extremely different from someone four years into maintaining a legacy application that's making tens of millions dollars for its parent company. +[36:25] So like that's more time with hooks than we had without hooks. So I don't know, like. I see this thread started with hot tape using Chad CN slash radix. The liability at this point, and maybe this is also an echo of a point that I try to drive home periodically on this podcast of like there are many different audiences using React and if you're an indie hacker than your constraints are extremely different from someone four years into maintaining a legacy application that's making tens of millions dollars for its parent company. -[00:36:56] So like. This hot take sounds to me like someone doing small team build it and set it down projects, not somebody maintaining a legacy application. So like, sure, if you are trying to use the latest, greatest, sharpest leading edge tools, I. Is maybe that, not that name water, but I don't think it's getting rusty that quickly. +[36:56] So like. This hot take sounds to me like someone doing small team build it and set it down projects, not somebody maintaining a legacy application. So like, sure, if you are trying to use the latest, greatest, sharpest leading edge tools, I. Is maybe that, not that name water, but I don't think it's getting rusty that quickly. -[00:37:16] So like if you are not building a new thing every three months, I think it's probably fine. I dunno. Seems okay. And like, and you know, oh there was a really great, oh shoot, did I lose the link? There's a really great, I. Response that I saw from the maintainer of chat already, just baed it in. Lovely. Yes, thank you. +[37:16] So like if you are not building a new thing every three months, I think it's probably fine. I dunno. Seems okay. And like, and you know, oh there was a really great, oh shoot, did I lose the link? There's a really great, I. Response that I saw from the maintainer of chat already, just baed it in. Lovely. Yes, thank you. -[00:37:33] You just did that. Yeah. And he says, he says a lot of things that resonate with me that I think I have hit on here. Like here's what I'd suggest already. There's a quote here, here's what I'd suggest already using redix and prod. Stick with it. Starting a new project. Consider ics React Aria or Aria Kid. +[37:33] You just did that. Yeah. And he says, he says a lot of things that resonate with me that I think I have hit on here. Like here's what I'd suggest already. There's a quote here, here's what I'd suggest already using redix and prod. Stick with it. Starting a new project. Consider ics React Aria or Aria Kid. -[00:37:49] All great choices. So like, yeah, that's, I would agree with all of that. And he closes this, what I'd suggest section with Shae is built for this code. Your own code can approve, rewrite or replace and like, yeah, that's the whole like reason for Shae and being built in the way it was, is that like it's not a library if you're unhappy with it, it's your code, it's hidden, your repo, you committed it. +[37:49] All great choices. So like, yeah, that's, I would agree with all of that. And he closes this, what I'd suggest section with Shae is built for this code. Your own code can approve, rewrite or replace and like, yeah, that's the whole like reason for Shae and being built in the way it was, is that like it's not a library if you're unhappy with it, it's your code, it's hidden, your repo, you committed it. -[00:38:11] So change it, commit something else. So I don't know. It seems cool. This seems, not that I have a lot of opinions on this, but at the end of the day, my opinion is like chill out, care less. Do the thing that's right for you. I guess in a very broad level, the JS ecosystem is entirely too prone to saying Tool X is dead because tool Y exists. +[38:11] So change it, commit something else. So I don't know. It seems cool. This seems, not that I have a lot of opinions on this, but at the end of the day, my opinion is like chill out, care less. Do the thing that's right for you. I guess in a very broad level, the JS ecosystem is entirely too prone to saying Tool X is dead because tool Y exists. -[00:38:34] Yeah, I could rant about that. The human trend towards X is dead long lives. The new X on with Y? Yeah. Okay. I think we've beaten that to death now. Okay. Into our lightning round. I don't have too much to say on this, but I like it. This is a blog post. Of somebody writing React components. Enclosure, this is part three of his series, and that just seems to be, I don't know. +[38:34] Yeah, I could rant about that. The human trend towards X is dead long lives. The new X on with Y? Yeah. Okay. I think we've beaten that to death now. Okay. Into our lightning round. I don't have too much to say on this, but I like it. This is a blog post. Of somebody writing React components. Enclosure, this is part three of his series, and that just seems to be, I don't know. -[00:39:01] I love seeing people play around with server components more and playing around in different languages, in different room times. Is extra interesting, so that's cool. Just a great like use case, write up. There's been a subset of the closure script, whatever community that's used, react in their own way for many years now. +[39:01] I love seeing people play around with server components more and playing around in different languages, in different room times. Is extra interesting, so that's cool. Just a great like use case, write up. There's been a subset of the closure script, whatever community that's used, react in their own way for many years now. -[00:39:21] So seeing, seeing someone attempt to bring server components over in that direction's kind of cool. Dan Abramov has continued to crank out blog posts and he put out a couple more since we did our, our last podcast. He wrote one on progressive JSON, where he talks about how server components will progressively send over pieces of JSON and insert placeholders via suspense. +[39:21] So seeing, seeing someone attempt to bring server components over in that direction's kind of cool. Dan Abramov has continued to crank out blog posts and he put out a couple more since we did our, our last podcast. He wrote one on progressive JSON, where he talks about how server components will progressively send over pieces of JSON and insert placeholders via suspense. -[00:39:44] And then he did another post on how imports work with server components. And the majority of this post actually doesn't have anything to do with. Server components per se. It's really describing how the JavaScript module ecosystem works and then brings in some bits about how server components allow you to connect the dots between the client side and the server side, as well as enforce that certain code only exists on one side or the other. +[39:44] And then he did another post on how imports work with server components. And the majority of this post actually doesn't have anything to do with. Server components per se. It's really describing how the JavaScript module ecosystem works and then brings in some bits about how server components allow you to connect the dots between the client side and the server side, as well as enforce that certain code only exists on one side or the other. -[00:40:13] We've got new ES 2025 out, which seems pretty good. Man, I, it, it took me a little bit to catch up on. Order of operations and what came out when. So this is everything. This contains everything that went to stage four, more or less over the past year. The most recent stage four is going out in 2026. So this what's contained here is Sync Iterator Helpers Promise. +[40:13] We've got new ES 2025 out, which seems pretty good. Man, I, it, it took me a little bit to catch up on. Order of operations and what came out when. So this is everything. This contains everything that went to stage four, more or less over the past year. The most recent stage four is going out in 2026. So this what's contained here is Sync Iterator Helpers Promise. -[00:40:40] Try some new set methods. Methods on the set primitive. That is JSON modules for imports. Import attributes and then a couple of like Redex updates for escape and modifiers and main capture capture groups. Sync iterators. Sync Iterator helpers are definitely the most like, interesting thing on this list to me. +[40:40] Try some new set methods. Methods on the set primitive. That is JSON modules for imports. Import attributes and then a couple of like Redex updates for escape and modifiers and main capture capture groups. Sync iterators. Sync Iterator helpers are definitely the most like, interesting thing on this list to me. -[00:41:00] Just like they're the, the number of times that I've taken a set or, you know, some iterable and then spread it out into an array so that it can map over. It is like constantly. I, every time I use an Iterable, I'm doing stuff like that because I like using e. Map and four each more than I like doing four ofs, so that's cool. +[41:00] Just like they're the, the number of times that I've taken a set or, you know, some iterable and then spread it out into an array so that it can map over. It is like constantly. I, every time I use an Iterable, I'm doing stuff like that because I like using e. Map and four each more than I like doing four ofs, so that's cool. -[00:41:19] I'm excited to see that. Just being able to natively map over Iterable is lovely and I love it. One thing that's probably worth noting is that apparently the iterator support is, might be a little better for perf in some cases because it doesn't have to create a separate array every time you do like a filter or a map, right? +[41:19] I'm excited to see that. Just being able to natively map over Iterable is lovely and I love it. One thing that's probably worth noting is that apparently the iterator support is, might be a little better for perf in some cases because it doesn't have to create a separate array every time you do like a filter or a map, right? -[00:41:37] That's the main thing I think about every time I do that. Oh man, I'm just iterating a new array for no reason. New RA for no reason and kind of related promise that try is sort of a similar type of performance optimization, you know, performance micro optimization. This, the last time I was reading about it, the advantage I saw is that it lets you, it lets you ignore whether something is or is not a promise without skipping a tick. +[41:37] That's the main thing I think about every time I do that. Oh man, I'm just iterating a new array for no reason. New RA for no reason and kind of related promise that try is sort of a similar type of performance optimization, you know, performance micro optimization. This, the last time I was reading about it, the advantage I saw is that it lets you, it lets you ignore whether something is or is not a promise without skipping a tick. -[00:42:03] If it is a promise, you know, and you do a dot, then like, okay, it's gonna consume a tick. But if it's not a promise and you wanna just run something afterwards. All of the like poly fills for something like promise try that would let you exit. Whether or not it returns, a promise would consume a tick. So now that, that's the advantage here is if it, if you're looking for that, it just is a little bit faster. +[42:03] If it is a promise, you know, and you do a dot, then like, okay, it's gonna consume a tick. But if it's not a promise and you wanna just run something afterwards. All of the like poly fills for something like promise try that would let you exit. Whether or not it returns, a promise would consume a tick. So now that, that's the advantage here is if it, if you're looking for that, it just is a little bit faster. -[00:42:27] It's a little bit less talking. Then the, the set methods are a very nice, convenient thing. Sets now have built-in methods for intersection union difference, and a couple other things, which is something that really should have been in there from the beginning. Yeah. Definitely, there's so many more details on Axel Meyer's blog, so like definitely the dive into that and yeah, little teaser of ES 2026 is they have already sh shipped. +[42:27] It's a little bit less talking. Then the, the set methods are a very nice, convenient thing. Sets now have built-in methods for intersection union difference, and a couple other things, which is something that really should have been in there from the beginning. Yeah. Definitely, there's so many more details on Axel Meyer's blog, so like definitely the dive into that and yeah, little teaser of ES 2026 is they have already sh shipped. -[00:42:57] Well, they've already landed. Error is error, like an identity function for errors. So you can actually get like type safety in catch blocks. More easily. That is stage four, but it did not make the cutoff for S 2025, so that'll be out in 2027. There was a post on the Shopify engineering blog about the future of React Native Graphics Web GPU, SKIA and beyond. +[42:57] Well, they've already landed. Error is error, like an identity function for errors. So you can actually get like type safety in catch blocks. More easily. That is stage four, but it did not make the cutoff for S 2025, so that'll be out in 2027. There was a post on the Shopify engineering blog about the future of React Native Graphics Web GPU, SKIA and beyond. -[00:43:21] The land of low level 2D graphics toolkits is complex with. Wrappers and abstractions and cross compat and all kinds of other layers of complexity. And so the post goes into into details on the existing React Native ski, a package for 2D graphics, how they've been able to add web GPU support to React native so they can do things like running three JS inside and some of the other upcoming improvements to React Native Skia as well. +[43:21] The land of low level 2D graphics toolkits is complex with. Wrappers and abstractions and cross compat and all kinds of other layers of complexity. And so the post goes into into details on the existing React Native ski, a package for 2D graphics, how they've been able to add web GPU support to React native so they can do things like running three JS inside and some of the other upcoming improvements to React Native Skia as well. -[00:43:51] Yeah, I, I know I've heard Mo talk about Yeah. A couple of times. See it getting, I don't know, broader. It seems cool. It's neat to see it still going, still chugging along. Cool. This is a personal plug. I wrote a blog post for the node js blog. I. It's June, it's Pride month. I'm proud. I have not always, I have accepted within the last couple of years that I am queer and began understanding what the heck that actually means. +[43:51] Yeah, I, I know I've heard Mo talk about Yeah. A couple of times. See it getting, I don't know, broader. It seems cool. It's neat to see it still going, still chugging along. Cool. This is a personal plug. I wrote a blog post for the node js blog. I. It's June, it's Pride month. I'm proud. I have not always, I have accepted within the last couple of years that I am queer and began understanding what the heck that actually means. -[00:44:18] I was asked to write a blog post for Pride and I pulled together one discussing open source and it's parallels with queer identity and how you know, we all take the labels that exist. Learn from them, incorporate them into our understanding of ourselves and use those as a springboard to find new things. +[44:18] I was asked to write a blog post for Pride and I pulled together one discussing open source and it's parallels with queer identity and how you know, we all take the labels that exist. Learn from them, incorporate them into our understanding of ourselves and use those as a springboard to find new things. -[00:44:38] So, I don't know. I'm proud of it. I like it. It's a good post if you're interested. Check it out. Yeah, I, I've been checking the Twitter replies on the announcement and yeah. Yep. Those people still exist. They don't like it. So anyway, it's all I'll say on that. Closing with conferences, we have a quite a number of conferences coming up, like basically next week, July 3rd through fifth. +[44:38] So, I don't know. I'm proud of it. I like it. It's a good post if you're interested. Check it out. Yeah, I, I've been checking the Twitter replies on the announcement and yeah. Yep. Those people still exist. They don't like it. So anyway, it's all I'll say on that. Closing with conferences, we have a quite a number of conferences coming up, like basically next week, July 3rd through fifth. -[00:45:00] Is React Nexus in Bangalore, India. There is Big Sky devcon out in Bozeman, Montana. Which seems cool. I don't know. I I appreciate that. It's called Big Sky. I know that there's a, I think there's a big Sky National Park and I, I used to do astrophotography, so big skies are like near and dear to my heart. So this one just looks sweet. +[45:00] Is React Nexus in Bangalore, India. There is Big Sky devcon out in Bozeman, Montana. Which seems cool. I don't know. I I appreciate that. It's called Big Sky. I know that there's a, I think there's a big Sky National Park and I, I used to do astrophotography, so big skies are like near and dear to my heart. So this one just looks sweet. -[00:45:22] I don't know. I don't have any, there's not no other reason beyond that for me to have an affinity foot, but I like it. So if you can get up to Bozeman, Montana. There's Kansas City Developer Conference, August 13th through 14th of Kansas City, Kansas. KCBC. 2025, which made me assume from the label that Kent c Dodds might be affiliated, but he is not. +[45:22] I don't know. I don't have any, there's not no other reason beyond that for me to have an affinity foot, but I like it. So if you can get up to Bozeman, Montana. There's Kansas City Developer Conference, August 13th through 14th of Kansas City, Kansas. KCBC. 2025, which made me assume from the label that Kent c Dodds might be affiliated, but he is not. -[00:45:42] It is not. Kent c Dodds conference. It's Kansas City Developer Conference. There is React Universe, September 2nd through fourth in Poland. Then September 16th and 17th, Wacon also in Poland back to back pretty much after Wacon. There's Cascadia Js up in Seattle, Washington, September 18th and 19th. So I think Squiggle conf is happening in Boston the exact same time. +[45:42] It is not. Kent c Dodds conference. It's Kansas City Developer Conference. There is React Universe, September 2nd through fourth in Poland. Then September 16th and 17th, Wacon also in Poland back to back pretty much after Wacon. There's Cascadia Js up in Seattle, Washington, September 18th and 19th. So I think Squiggle conf is happening in Boston the exact same time. -[00:46:07] I. Yeah, you've got SW Con, September 18th, 19th, Boston, Massachusetts. They are great. I plan to be there. This is slightly further afield for further down the line, but React Cons will be back in LA in Las Vegas. I. October 7th and eighth. So yeah, I was there last year and it was a pretty great time. +[46:07] I. Yeah, you've got SW Con, September 18th, 19th, Boston, Massachusetts. They are great. I plan to be there. This is slightly further afield for further down the line, but React Cons will be back in LA in Las Vegas. I. October 7th and eighth. So yeah, I was there last year and it was a pretty great time. -[00:46:26] Definitely check it out. Although tickets are expensive and lottery system, so good luck. That's everything we got for you this month. Thank you so much for joining us. We will be back next month. I hesitate to promise on Wednesday because we have not done that in a minute, but maybe next month on Wednesday here in the live stage, or we'll be back in your podcast feed just as soon as we can after that. +[46:26] Definitely check it out. Although tickets are expensive and lottery system, so good luck. That's everything we got for you this month. Thank you so much for joining us. We will be back next month. I hesitate to promise on Wednesday because we have not done that in a minute, but maybe next month on Wednesday here in the live stage, or we'll be back in your podcast feed just as soon as we can after that. -[00:46:46] Scheduling is hard. Yo scheduling is so hard. We gather sources from this week in React Bites. Do Dev React status, Next.JS Weekly the React JS subreddit. And here in react to plugs from the Tech News Andres channel. If you have any news that you wanna share with us. Tech Reads and News is a great place to do so, or you can send it to us at hello@reactiveflex.com. +[46:46] Scheduling is hard. Yo scheduling is so hard. We gather sources from this week in React Bites. Do Dev React status, Next.JS Weekly the React JS subreddit. And here in react to plugs from the Tech News Andres channel. If you have any news that you wanna share with us. Tech Reads and News is a great place to do so, or you can send it to us at hello@reactiveflex.com. -[00:47:09] If this is a show that you get value from and would like to support, one of the best ways you can do so is give it a review on whatever platform you listen to, listen to it on, and just share it with friends, share it with coworkers. Go to a meetup and say, Hey, there's this great podcast. I like. Yeah, thanks so much for listening. +[47:09] If this is a show that you get value from and would like to support, one of the best ways you can do so is give it a review on whatever platform you listen to, listen to it on, and just share it with friends, share it with coworkers. Go to a meetup and say, Hey, there's this great podcast. I like. Yeah, thanks so much for listening. -[00:47:25] We'll see you next month. Take care. +[47:25] We'll see you next month. Take care. diff --git a/src/transcripts/tmir-2025-08.md b/src/transcripts/tmir-2025-08.md index ffd3362..15b5e9f 100644 --- a/src/transcripts/tmir-2025-08.md +++ b/src/transcripts/tmir-2025-08.md @@ -19,480 +19,480 @@ html li p { -- [[00:00:47](#new-releases)] New releases - - [[00:00:51](#ts-59)] [TS 5.9](https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/) - - [[00:02:50](#ts-60-may-enable-strict-by-default-and-change-other-defaults)] [TS 6.0 may enable \\\`strict\\\` by default](https://bsky.app/profile/robpalmer.bsky.social/post/3lxar2cp5rs2p) and [change other defaults](https://github.com/microsoft/TypeScript/issues?q=milestone%3A%22TypeScript%206.0.0%22) - - [[00:03:46](#react-native-081)] [React Native 0.81](https://reactnative.dev/blog/2025/08/12/react-native-0.81) - - [[00:05:40](#next-155)] [Next 15.5](https://nextjs.org/blog/next-15-5) - - [[00:07:10](#preact-11-beta)] [Preact 11 beta](https://github.com/preactjs/preact/releases/tag/11.0.0-beta.0) - - [[00:07:39](#hydration-20)] [Hydration 2.0](https://github.com/preactjs/preact/issues/4442) - - [[00:07:52](#bun-1221)] [Bun 1.2.21](https://bun.com/blog/release-notes/bun-v1.2.21) - - [[00:08:54](#native-yaml-support-definitely-not-going-to-cause-any-problems)] Native YAML support. Definitely not going to [cause any problems](https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell) - - [[00:10:21](#tanstack-db-beta)] [Tanstack DB beta](https://tanstack.com/blog/tanstack-db-0.1-the-embedded-client-database-for-tanstack-query) - - [[00:11:30](#ghost-v6)] [Ghost v6](https://ghost.org/changelog/6/) -- [[00:13:09](#main-content)] Main Content - - [[00:13:13](#react-api-changes-updates)] React API changes / updates - - [[00:13:24](#react-deprecating-the-throw-a-promise-suspense-trigger-method)] [React deprecating the “throw a promise” Suspense trigger method](https://github.com/facebook/react/pull/34032) - - [[00:16:20](#discussion-between-dan-dominik-and-ricky-about-how-to-support-multiple-react-versions-if-at-all)] Discussion between Dan, Dominik, and Ricky about [how to support multiple React versions (if at all)](https://bsky.app/profile/tkdodo.eu/post/3lv4rhr4mrs2i) - - [[00:17:43](#github-discussion-with-joe-about-why-no-context-selectors-api-or-signals-research-into-data-modeling-and-why-concurrent-stores-are-the-current-focus-area)] Github discussion with Joe about [why no context selectors API or signals, research into data modeling, and why “concurrent stores” are the current focus area](https://github.com/reactjs/rfcs/pull/119#issuecomment-3214971470) - - [[00:21:25](#pr-for-concurrent-stores-skeleton)] [PR for “concurrent stores” skeleton](https://github.com/facebook/react/pull/33215) - - [[00:23:13](#third-party-react-concurrent-store-ponyfill-package)] [Third-party \\\`react-concurrent-store\\\` ponyfill package](https://github.com/thejustinwalsh/react-concurrent-store) - - [[00:26:39](#lee-robinsonss-reflections-on-the-react-community-wrap-up-post)] Lee Robinsons’s [“Reflections on the React Community”](https://leerob.com/reflections) wrap-up post - - [[00:31:18](#remix-doing-its-own-component-model)] [Remix doing its own component model??](https://x.com/mjackson/status/1954975322157486408) - - [[00:36:46](#remix-3-and-the-end-of-react-centric-architectures)] [Remix 3 and the End of React-Centric Architectures](https://thenewstack.io/remix-3-and-the-end-of-react-centric-architectures/) - - [[00:37:21](#popular-nx-packages-compromised-on-npm)] [Popular nx packages compromised on npm](https://www.aikido.dev/blog/popular-nx-packages-compromised-on-npm) - - [[00:39:43](#last-month-eslint-plugin-prettier-maintainers-were-targeted-this-is-a-much-broader-attack)] Last month [eslint-plugin-prettier maintainers were targeted](https://snyk.io/blog/maintainers-of-eslint-prettier-plugin-attacked-via-npm-supply-chain-malware/), this is a much broader attack -- [[00:41:31](#-lightning-round-)] ⚡ Lightning round ⚡ - - [[00:41:33](#react-strict-dom-vs-react-native-for-web-in-2025)] [React Strict DOM vs React Native for Web in 2025](https://shift.infinite.red/react-strict-dom-vs-react-native-for-web-in-2025-bb91582ef261) - - [[00:43:34](#faster-jsonstringify)] [Faster JSON.stringify()](https://v8.dev/blog/json-stringify) - - [[00:44:56](#node-2218-unflags-ts-type-stripping-support)] [Node 22.18 unflags TS type-stripping support](https://nodejs.org/en/blog/release/v22.18.0) - - [[00:46:23](#waku-switches-to-vites-wip-rsc-support)] [Waku switches to Vite’s WIP RSC support](https://waku.gg/blog/migration-to-vite-plugin-rsc) - - [[00:47:00](#rari-a-fast-react-framework-with-rsc-support-built-with-rust)] [Rari, a fast React framework with RSC support built with Rust](https://ryanskinner.com/posts/how-i-built-a-full-stack-react-framework-4x-faster-than-nextjs-with-4x-more-throughput) - - [[00:47:52](#selecting-values-from-query-results-as-well-as-the-useless-usecallback)] [Selecting values from query results](https://tkdodo.eu/blog/react-query-selectors-supercharged), as well as [The Useless useCallback](https://tkdodo.eu/blog/the-useless-use-callback) - - [[00:48:26](#ts-postmortem-effect-ts-experimental-ts-fork)] [TS\+ postmortem (Effect-TS experimental TS fork)](https://effect.website/blog/ts-plus-postmortem/) - - [[00:50:48](#react-usetransition-update-ordering-details)] [React useTransition update ordering details](https://jordaneldredge.com/notes/react-rebasing/) - - [[00:51:13](#a-clock-that-doesnt-snap-techniques-for-fixing-hydration-of-values-like-dates)] [“A Clock that Doesn’t Snap”](https://ethanniser.dev/blog/a-clock-that-doesnt-snap/), Techniques for fixing hydration of values like dates - - [[00:51:36](#react-cache-its-about-consistency)] [React Cache: It’s about consistency](https://twofoldframework.com/blog/react-cache-its-about-consistency) - - [[00:52:26](#self-hosting-next-at-scale)] [Self-hosting Next at scale](https://dlhck.com/thoughts/the-complete-guide-to-self-hosting-nextjs-at-scale) - - [[00:53:26](#server-and-client-component-composition-in-practice)] [Server and Client Component Composition in Practice](https://aurorascharff.no/posts/server-client-component-composition-in-practice/) -- [[00:54:04](#conferences-react-javascript)] Conferences ([React](https://react.dev/community/conferences), [Javascript](https://confs.tech/javascript)) - - [[00:54:06](#react-universe-conf-sept-2-4-2025-wrocaw-poland)] [React Universe Conf](https://www.reactuniverseconf.com/) Sept 2-4, 2025\\. Wrocław, Poland - - [[00:54:14](#waysconf-sept-16-17)] [WaysConf](https://www.waysconf.com/) Sept 16-17 - - [[00:54:21](#cascadiajs-sept-18-19-seattle-wa-usa)] [CascadiaJS](https://cascadiajs.com/2025) Sept 18-19 Seattle, WA, USA - - [[00:54:26](#cascadiajs-sept-18-19-seattle-wa-usa)] [CascadiaJS](https://cascadiajs.com/2025) Sept 18-19 Seattle, WA, USA - - [[00:54:32](#react-alicante-oct-2-4)] [React Alicante](https://reactalicante.es/) Oct 2-4 - - [[00:54:51](#react-conf-is-back-oct-7-8-las-vegas-nv-usa)] [React Conf is back, Oct 7-8](https://bsky.app/profile/react.dev/post/3lmcp4mhmfk2l) Las Vegas, NV, USA - - [[00:54:56](#remix-jam-oct-10-toronto-on-ca)] [Remix Jam](https://remix.run/jam/2025), Oct 10, Toronto ON, CA -- [[00:55:10](#outro)] Outro - -**Carl:** Hello everyone. Thank you for joining us for the August edition of this Month in React. As we recap what's going on with React, react native in the web we're coming to you live from Reactive Flux, the place for professional developers using React. I'm Carl. [00:00:00] - -I'm a staff product developer and freelance community leader here at Reactive Flux, where I do community programs like this event and write some code to help keep the community running. [00:00:13] - -**Mark:** Hi, I'm Mark. I maintain Redux. I try to find time to maintain Redux. Life is busy these days and my day job is working at Replay where we've built a time traveling debugger for JavaScript and are also attempting to get in on the AI app generating craze. [00:00:22] - -**Carl:** Mo is unfortunately out this month, he seems to have food poisoning or something similar. So he's gonna take a break and I'm gonna do my best on React Native news, which is only Okay. [00:00:37] +- [[00:47](#new-releases)] New releases + - [[00:51](#ts-59)] [TS 5.9](https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/) + - [[02:50](#ts-60-may-enable-strict-by-default-and-change-other-defaults)] [TS 6.0 may enable \\\`strict\\\` by default](https://bsky.app/profile/robpalmer.bsky.social/post/3lxar2cp5rs2p) and [change other defaults](https://github.com/microsoft/TypeScript/issues?q=milestone%3A%22TypeScript%206.0.0%22) + - [[03:46](#react-native-081)] [React Native 0.81](https://reactnative.dev/blog/2025/08/12/react-native-0.81) + - [[05:40](#next-155)] [Next 15.5](https://nextjs.org/blog/next-15-5) + - [[07:10](#preact-11-beta)] [Preact 11 beta](https://github.com/preactjs/preact/releases/tag/11.0.0-beta.0) + - [[07:39](#hydration-20)] [Hydration 2.0](https://github.com/preactjs/preact/issues/4442) + - [[07:52](#bun-1221)] [Bun 1.2.21](https://bun.com/blog/release-notes/bun-v1.2.21) + - [[08:54](#native-yaml-support-definitely-not-going-to-cause-any-problems)] Native YAML support. Definitely not going to [cause any problems](https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell) + - [[10:21](#tanstack-db-beta)] [Tanstack DB beta](https://tanstack.com/blog/tanstack-db-0.1-the-embedded-client-database-for-tanstack-query) + - [[11:30](#ghost-v6)] [Ghost v6](https://ghost.org/changelog/6/) +- [[13:09](#main-content)] Main Content + - [[13:13](#react-api-changes-updates)] React API changes / updates + - [[13:24](#react-deprecating-the-throw-a-promise-suspense-trigger-method)] [React deprecating the “throw a promise” Suspense trigger method](https://github.com/facebook/react/pull/34032) + - [[16:20](#discussion-between-dan-dominik-and-ricky-about-how-to-support-multiple-react-versions-if-at-all)] Discussion between Dan, Dominik, and Ricky about [how to support multiple React versions (if at all)](https://bsky.app/profile/tkdodo.eu/post/3lv4rhr4mrs2i) + - [[17:43](#github-discussion-with-joe-about-why-no-context-selectors-api-or-signals-research-into-data-modeling-and-why-concurrent-stores-are-the-current-focus-area)] Github discussion with Joe about [why no context selectors API or signals, research into data modeling, and why “concurrent stores” are the current focus area](https://github.com/reactjs/rfcs/pull/119#issuecomment-3214971470) + - [[21:25](#pr-for-concurrent-stores-skeleton)] [PR for “concurrent stores” skeleton](https://github.com/facebook/react/pull/33215) + - [[23:13](#third-party-react-concurrent-store-ponyfill-package)] [Third-party \\\`react-concurrent-store\\\` ponyfill package](https://github.com/thejustinwalsh/react-concurrent-store) + - [[26:39](#lee-robinsonss-reflections-on-the-react-community-wrap-up-post)] Lee Robinsons’s [“Reflections on the React Community”](https://leerob.com/reflections) wrap-up post + - [[31:18](#remix-doing-its-own-component-model)] [Remix doing its own component model??](https://x.com/mjackson/status/1954975322157486408) + - [[36:46](#remix-3-and-the-end-of-react-centric-architectures)] [Remix 3 and the End of React-Centric Architectures](https://thenewstack.io/remix-3-and-the-end-of-react-centric-architectures/) + - [[37:21](#popular-nx-packages-compromised-on-npm)] [Popular nx packages compromised on npm](https://www.aikido.dev/blog/popular-nx-packages-compromised-on-npm) + - [[39:43](#last-month-eslint-plugin-prettier-maintainers-were-targeted-this-is-a-much-broader-attack)] Last month [eslint-plugin-prettier maintainers were targeted](https://snyk.io/blog/maintainers-of-eslint-prettier-plugin-attacked-via-npm-supply-chain-malware/), this is a much broader attack +- [[41:31](#-lightning-round-)] ⚡ Lightning round ⚡ + - [[41:33](#react-strict-dom-vs-react-native-for-web-in-2025)] [React Strict DOM vs React Native for Web in 2025](https://shift.infinite.red/react-strict-dom-vs-react-native-for-web-in-2025-bb91582ef261) + - [[43:34](#faster-jsonstringify)] [Faster JSON.stringify()](https://v8.dev/blog/json-stringify) + - [[44:56](#node-2218-unflags-ts-type-stripping-support)] [Node 22.18 unflags TS type-stripping support](https://nodejs.org/en/blog/release/v22.18.0) + - [[46:23](#waku-switches-to-vites-wip-rsc-support)] [Waku switches to Vite’s WIP RSC support](https://waku.gg/blog/migration-to-vite-plugin-rsc) + - [[47:00](#rari-a-fast-react-framework-with-rsc-support-built-with-rust)] [Rari, a fast React framework with RSC support built with Rust](https://ryanskinner.com/posts/how-i-built-a-full-stack-react-framework-4x-faster-than-nextjs-with-4x-more-throughput) + - [[47:52](#selecting-values-from-query-results-as-well-as-the-useless-usecallback)] [Selecting values from query results](https://tkdodo.eu/blog/react-query-selectors-supercharged), as well as [The Useless useCallback](https://tkdodo.eu/blog/the-useless-use-callback) + - [[48:26](#ts-postmortem-effect-ts-experimental-ts-fork)] [TS\+ postmortem (Effect-TS experimental TS fork)](https://effect.website/blog/ts-plus-postmortem/) + - [[50:48](#react-usetransition-update-ordering-details)] [React useTransition update ordering details](https://jordaneldredge.com/notes/react-rebasing/) + - [[51:13](#a-clock-that-doesnt-snap-techniques-for-fixing-hydration-of-values-like-dates)] [“A Clock that Doesn’t Snap”](https://ethanniser.dev/blog/a-clock-that-doesnt-snap/), Techniques for fixing hydration of values like dates + - [[51:36](#react-cache-its-about-consistency)] [React Cache: It’s about consistency](https://twofoldframework.com/blog/react-cache-its-about-consistency) + - [[52:26](#self-hosting-next-at-scale)] [Self-hosting Next at scale](https://dlhck.com/thoughts/the-complete-guide-to-self-hosting-nextjs-at-scale) + - [[53:26](#server-and-client-component-composition-in-practice)] [Server and Client Component Composition in Practice](https://aurorascharff.no/posts/server-client-component-composition-in-practice/) +- [[54:04](#conferences-react-javascript)] Conferences ([React](https://react.dev/community/conferences), [Javascript](https://confs.tech/javascript)) + - [[54:06](#react-universe-conf-sept-2-4-2025-wrocaw-poland)] [React Universe Conf](https://www.reactuniverseconf.com/) Sept 2-4, 2025\\. Wrocław, Poland + - [[54:14](#waysconf-sept-16-17)] [WaysConf](https://www.waysconf.com/) Sept 16-17 + - [[54:21](#cascadiajs-sept-18-19-seattle-wa-usa)] [CascadiaJS](https://cascadiajs.com/2025) Sept 18-19 Seattle, WA, USA + - [[54:26](#cascadiajs-sept-18-19-seattle-wa-usa)] [CascadiaJS](https://cascadiajs.com/2025) Sept 18-19 Seattle, WA, USA + - [[54:32](#react-alicante-oct-2-4)] [React Alicante](https://reactalicante.es/) Oct 2-4 + - [[54:51](#react-conf-is-back-oct-7-8-las-vegas-nv-usa)] [React Conf is back, Oct 7-8](https://bsky.app/profile/react.dev/post/3lmcp4mhmfk2l) Las Vegas, NV, USA + - [[54:56](#remix-jam-oct-10-toronto-on-ca)] [Remix Jam](https://remix.run/jam/2025), Oct 10, Toronto ON, CA +- [[55:10](#outro)] Outro + +**Carl:** Hello everyone. Thank you for joining us for the August edition of this Month in React. As we recap what's going on with React, react native in the web we're coming to you live from Reactive Flux, the place for professional developers using React. I'm Carl. [00:00] + +I'm a staff product developer and freelance community leader here at Reactive Flux, where I do community programs like this event and write some code to help keep the community running. [00:13] + +**Mark:** Hi, I'm Mark. I maintain Redux. I try to find time to maintain Redux. Life is busy these days and my day job is working at Replay where we've built a time traveling debugger for JavaScript and are also attempting to get in on the AI app generating craze. [00:22] + +**Carl:** Mo is unfortunately out this month, he seems to have food poisoning or something similar. So he's gonna take a break and I'm gonna do my best on React Native news, which is only Okay. [00:37] ## New releases -**Carl:** But yeah, let's start off with some new releases. Mark, tell us about new TypeScript. [00:00:47] +**Carl:** But yeah, let's start off with some new releases. Mark, tell us about new TypeScript. [00:47] ## [TS 5.9](https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/) -**Mark:** The TypeScript release train keeps on rolling. They've just put out TypeScript 5.9. Few points of interest out of this one. They've updated some of the options for generating any new TypeScript project. They've simplified the initial TS config, JSON that gets generated. They also have support for the upcoming JavaScript import, defer syntax. This is a new thing. That is coming down the pipeline for JavaScript engines where you can use the defer keyword in an import statement and the JavaScript runtime will know that it needs to go read this file, but it won't try to actually load and execute that JavaScript right away. [00:00:51] +**Mark:** The TypeScript release train keeps on rolling. They've just put out TypeScript 5.9. Few points of interest out of this one. They've updated some of the options for generating any new TypeScript project. They've simplified the initial TS config, JSON that gets generated. They also have support for the upcoming JavaScript import, defer syntax. This is a new thing. That is coming down the pipeline for JavaScript engines where you can use the defer keyword in an import statement and the JavaScript runtime will know that it needs to go read this file, but it won't try to actually load and execute that JavaScript right away. [00:51] -Right now, when you do imports, everything's imported and executed synchronously. This can have a lot of effect on startup time, and so the import, defer keyword is meant to la effectively lazy load some pieces of the JS system without having to use the the separate import statement. So TypeScript now at least has support for that syntax, but in a sense it won't do anything until JavaScript engines fully support actually doing something with that. One thing that I personally am excited for is that TS 5.9 now has support for expandable hover previews. If you, if you ever work with TypeScript, you have big type definitions, you know that TypeScript often cuts down the amount of information it shows about a type in the hover preview or, you know, the types are deeply nested and you, you don't already know like what is inside this field. So ts 5.9 now has support for actually being able to drill down into hover previews. you do need to have an updated version of VS code to make use of that as well. But as someone who has spent too much time fiddling with those settings, I'm actually very excited about that one. [00:01:37] +Right now, when you do imports, everything's imported and executed synchronously. This can have a lot of effect on startup time, and so the import, defer keyword is meant to la effectively lazy load some pieces of the JS system without having to use the the separate import statement. So TypeScript now at least has support for that syntax, but in a sense it won't do anything until JavaScript engines fully support actually doing something with that. One thing that I personally am excited for is that TS 5.9 now has support for expandable hover previews. If you, if you ever work with TypeScript, you have big type definitions, you know that TypeScript often cuts down the amount of information it shows about a type in the hover preview or, you know, the types are deeply nested and you, you don't already know like what is inside this field. So ts 5.9 now has support for actually being able to drill down into hover previews. you do need to have an updated version of VS code to make use of that as well. But as someone who has spent too much time fiddling with those settings, I'm actually very excited about that one. [01:37] -**Carl:** Yeah, that sounds great. [00:02:48] +**Carl:** Yeah, that sounds great. [02:48] ## [TS 6.0 may enable \\\`strict\\\` by default](https://bsky.app/profile/robpalmer.bsky.social/post/3lxar2cp5rs2p) and [change other defaults](https://github.com/microsoft/TypeScript/issues?q=milestone%3A%22TypeScript%206.0.0%22) -**Mark:** And then along with that, there are a couple bits about the future of TypeScript. So right now we're on 5.9. The TypeScript team has said that the go port of the TypeScript compiler will become a TypeScript 7.0. They've put out some news and plans on the roadmap for TypeScript 6.0. There's an issue in some discussion about making the strict flag the default, or maybe not the entire strict flag, but maybe graduating some of the specific settings, like strict null checks to be turned on by default. As a maintainer, that makes me very, very happy. I'm tired of seeing people post issues against my library saying, your library doesn't work. Right. And the problem is they didn't have TypeScript in strict mode in the first place. So. still to be worked out, but it's good to see that they are trying to figure out the transition plan for all this. [00:02:50] +**Mark:** And then along with that, there are a couple bits about the future of TypeScript. So right now we're on 5.9. The TypeScript team has said that the go port of the TypeScript compiler will become a TypeScript 7.0. They've put out some news and plans on the roadmap for TypeScript 6.0. There's an issue in some discussion about making the strict flag the default, or maybe not the entire strict flag, but maybe graduating some of the specific settings, like strict null checks to be turned on by default. As a maintainer, that makes me very, very happy. I'm tired of seeing people post issues against my library saying, your library doesn't work. Right. And the problem is they didn't have TypeScript in strict mode in the first place. So. still to be worked out, but it's good to see that they are trying to figure out the transition plan for all this. [02:50] -**Carl:** Definitely super cool. [00:03:44] +**Carl:** Definitely super cool. [03:44] ## [React Native 0.81](https://reactnative.dev/blog/2025/08/12/react-native-0.81) -**Carl:** We've also got React native releasing version uh, O 81. Obviously I am not anywhere near as deeply versed in React native as Mo would be. So, uh, hopefully we'll have him around to catch us up again later on. But we've talked a little bit about what's coming on, what's in this release in previous months. [00:03:46] +**Carl:** We've also got React native releasing version uh, O 81. Obviously I am not anywhere near as deeply versed in React native as Mo would be. So, uh, hopefully we'll have him around to catch us up again later on. But we've talked a little bit about what's coming on, what's in this release in previous months. [03:46] -Nothing here struck me as super new. They're deprecating, the safe area view which they talked about as being originally an iOS specific. Component in order to support, you know, the safe area because of the notch. But now Android has notches too, and it doesn't work very well for that. So it's being deprecated and they're leaning on the, Safe Area Context. They recommend that you migrate to the React native safe Area context library for that. They are also defaulting to Android 16 now in React Native. They had an, a curious call out that seems strange to me. They say predictive back gesture is now enabled by default for apps targeting Android 16 and just , the phrase predictive back gesture. [00:04:07] +Nothing here struck me as super new. They're deprecating, the safe area view which they talked about as being originally an iOS specific. Component in order to support, you know, the safe area because of the notch. But now Android has notches too, and it doesn't work very well for that. So it's being deprecated and they're leaning on the, Safe Area Context. They recommend that you migrate to the React native safe Area context library for that. They are also defaulting to Android 16 now in React Native. They had an, a curious call out that seems strange to me. They say predictive back gesture is now enabled by default for apps targeting Android 16 and just , the phrase predictive back gesture. [04:07] -Is, I don't know, it seems like a lot to me. I know gestures, you have to predict them and whatever, and I guess everything is now gestures, but I have my phone sent to use buttons still, so I don't know what they're talking about, but that sounds complicated. It also talks like, you know, if you have overridden your, the back behavior of your app, then you may need to migrate or change how your app works. [00:04:50] +Is, I don't know, it seems like a lot to me. I know gestures, you have to predict them and whatever, and I guess everything is now gestures, but I have my phone sent to use buttons still, so I don't know what they're talking about, but that sounds complicated. It also talks like, you know, if you have overridden your, the back behavior of your app, then you may need to migrate or change how your app works. [04:50] -So man, if only you could reliably go back in Native apps isn't the web great. They also are introducing pre-compiled iOS builds, which they say cuts the compile time by up to You know, 10 x so like one 10th the compiled time. It used to be in projects where react native is a primary dependency. [00:05:11] +So man, if only you could reliably go back in Native apps isn't the web great. They also are introducing pre-compiled iOS builds, which they say cuts the compile time by up to You know, 10 x so like one 10th the compiled time. It used to be in projects where react native is a primary dependency. [05:11] -And they've got better error rendering in the dev tools as well, which is great. it now shows the original message in Stack trace of uncut JavaScript errors. So how, how lovely to know where your errors come from, [00:05:29] +And they've got better error rendering in the dev tools as well, which is great. it now shows the original message in Stack trace of uncut JavaScript errors. So how, how lovely to know where your errors come from, [05:29] ## [Next 15.5](https://nextjs.org/blog/next-15-5) -**Mark:** Next 15.5 came out. A couple things worth noting from this one. They now have turbo pack builds for production in beta. Turbo Pack had previously really only been used for local development, and so they've been cranking away on trying to get it to full compatibility for production builds. And it seems like that's getting close. They now have node support for middleware. They've got some TypeScript improvements, like actually having full typing for routes. So it'll catch things like mistyped link tags as well as trying to get rid of the old next lint command. [00:05:40] +**Mark:** Next 15.5 came out. A couple things worth noting from this one. They now have turbo pack builds for production in beta. Turbo Pack had previously really only been used for local development, and so they've been cranking away on trying to get it to full compatibility for production builds. And it seems like that's getting close. They now have node support for middleware. They've got some TypeScript improvements, like actually having full typing for routes. So it'll catch things like mistyped link tags as well as trying to get rid of the old next lint command. [05:40] -**Carl:** Yeah, the middleware support for no JS also seems like a pretty big step. You know, one of the main complaints, a large complaint about next is how difficult it is to run yourself not on Vercel. So supporting a more generic runtime for your middleware seems really great. [00:06:16] +**Carl:** Yeah, the middleware support for no JS also seems like a pretty big step. You know, one of the main complaints, a large complaint about next is how difficult it is to run yourself not on Vercel. So supporting a more generic runtime for your middleware seems really great. [06:16] -I haven't run into this with next specifically, but I have run into. Compatibility issues between edge runtimes and node JS code. it's such a constraint if you're trying to run on, edge runtime, which is, you know, okay, so next Vercel is they have their Edge Runtime, in title case. [00:06:33] +I haven't run into this with next specifically, but I have run into. Compatibility issues between edge runtimes and node JS code. it's such a constraint if you're trying to run on, edge runtime, which is, you know, okay, so next Vercel is they have their Edge Runtime, in title case. [06:33] -But also, you know, CloudFlare workers are also a very similar kind of runtime that offer a similar set of constraints. And man, you just can't use a lot of the node ecosystem when you're in one of those constrained environments. So this, this should open up compatibility quite a lot it sounds like to me. [00:06:51] +But also, you know, CloudFlare workers are also a very similar kind of runtime that offer a similar set of constraints. And man, you just can't use a lot of the node ecosystem when you're in one of those constrained environments. So this, this should open up compatibility quite a lot it sounds like to me. [06:51] ## [Preact 11 beta](https://github.com/preactjs/preact/releases/tag/11.0.0-beta.0) -**Mark:** Meanwhile, the Preact library, the, the longstanding smaller replacement for React just put out a beta for version 11. Preact has always been dom slash web only, not native. And the calling cards have been that it's much smaller than full-blown react, but maintains most API compatibility up to a certain point. [00:07:10] +**Mark:** Meanwhile, the Preact library, the, the longstanding smaller replacement for React just put out a beta for version 11. Preact has always been dom slash web only, not native. And the calling cards have been that it's much smaller than full-blown react, but maintains most API compatibility up to a certain point. [07:10] -I think they've stopped trying to, maintain compatibility for some of the newer React APIs in 18 and 19. [00:07:33] +I think they've stopped trying to, maintain compatibility for some of the newer React APIs in 18 and 19. [07:33] ## [Hydration 2.0](https://github.com/preactjs/preact/issues/4442) -**Mark:** A couple of the big points this one they finally dropped IE 11 support and they've improved hydration and a number of other small tweaks. So it's always good to see that them making progress as well. [00:07:39] +**Mark:** A couple of the big points this one they finally dropped IE 11 support and they've improved hydration and a number of other small tweaks. So it's always good to see that them making progress as well. [07:39] ## [Bun 1.2.21](https://bun.com/blog/release-notes/bun-v1.2.21) -**Carl:** Every so often it's nice to check in on what BUN and Dino and everything are doing. BUN has a 1.2 point 21 release out. A couple things that caught my eye on it were the bun sql, you know, standard library tool now supports MySQL, MariaDB, SQL Light, and Postgres, all from like one dependency. [00:07:52] +**Carl:** Every so often it's nice to check in on what BUN and Dino and everything are doing. BUN has a 1.2 point 21 release out. A couple things that caught my eye on it were the bun sql, you know, standard library tool now supports MySQL, MariaDB, SQL Light, and Postgres, all from like one dependency. [07:52] -And that's pretty great. I don't know. Nice to have, nice to be able to swap those out. I wonder what the experience of actually trying to swap them out would be, because the different engines have slightly different constraints. I appreciate that. That's cool. I, I love, especially for like SQL light stuff, it just seems so simple as maybe overstating it, but it's really nice to be able to just spin up a database without installing dependencies. [00:08:12] +And that's pretty great. I don't know. Nice to have, nice to be able to swap those out. I wonder what the experience of actually trying to swap them out would be, because the different engines have slightly different constraints. I appreciate that. That's cool. I, I love, especially for like SQL light stuff, it just seems so simple as maybe overstating it, but it's really nice to be able to just spin up a database without installing dependencies. [08:12] -So, uh, kudos to BUN for adding that. They've also added native YAML support which is great. You know, it's lovely to not for parsing confi common configuration file formats again, seems like something that should be in the standard library. However, I am generally aware of YAML as like a very challenging format to parse. [00:08:35] +So, uh, kudos to BUN for adding that. They've also added native YAML support which is great. You know, it's lovely to not for parsing confi common configuration file formats again, seems like something that should be in the standard library. However, I am generally aware of YAML as like a very challenging format to parse. [08:35] ## Native YAML support. Definitely not going to [cause any problems](https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell) -**Carl:** There's a, a blog post that lives in my brain about YAML from 2023 titled The YAML document from Hell Enumerates some of the complexities one of my favorites being sex decimal numbers. And so a, a, apparently a common older format quirk is that some, ranges of ports that you might try to map in, say a Docker file like Port 22, mapped to port 22 is not parsed as 22, colon 22. [00:08:54] +**Carl:** There's a, a blog post that lives in my brain about YAML from 2023 titled The YAML document from Hell Enumerates some of the complexities one of my favorites being sex decimal numbers. And so a, a, apparently a common older format quirk is that some, ranges of ports that you might try to map in, say a Docker file like Port 22, mapped to port 22 is not parsed as 22, colon 22. [08:54] -It's parsed as a sexagesimal, IE base 60, number. So then instead of the string 22:22, you get 1,342. Which is not a valid port mapping. So like things like there are like 30 different ways to put Booleans to encode Boolean in a YAML file. And so like yes and no are one of the valid formats. And so if you're trying to do a list of countries using standard country codes, apparently Norway will be interpreted. [00:09:24] +It's parsed as a sexagesimal, IE base 60, number. So then instead of the string 22:22, you get 1,342. Which is not a valid port mapping. So like things like there are like 30 different ways to put Booleans to encode Boolean in a YAML file. And so like yes and no are one of the valid formats. And so if you're trying to do a list of countries using standard country codes, apparently Norway will be interpreted. [09:24] -**Mark:** Is NO, [00:09:53] +**Mark:** Is NO, [09:53] -**Carl:** So like, just hearing about that, those kind of like foot guns that exist in the format and apparently like variations in parser behavior is an existing problem throughout the YAML ecosystem. So, great. I [00:09:56] +**Carl:** So like, just hearing about that, those kind of like foot guns that exist in the format and apparently like variations in parser behavior is an existing problem throughout the YAML ecosystem. So, great. I [09:56] -**Mark:** let's add another parser. [00:10:09] +**Mark:** let's add another parser. [10:09] -**Carl:** Right what? Great. One more parser there. Wonderful. I can't wait to hear about what weird, terrible, hellish bugs emerge from this new parser. [00:10:09] +**Carl:** Right what? Great. One more parser there. Wonderful. I can't wait to hear about what weird, terrible, hellish bugs emerge from this new parser. [10:09] -Good luck to them. I hope it's good. [00:10:19] +Good luck to them. I hope it's good. [10:19] ## [Tanstack DB beta](https://tanstack.com/blog/tanstack-db-0.1-the-embedded-client-database-for-tanstack-query) -**Mark:** Next up the folks over in the Tan Stack Collective have just put out a beta of the new Tan Stack database library. it's a little interesting to describe. It's a layer that's supposed to sit on top of your tan stack query setup, and it kind of acts as like a local in client database and sync engine. [00:10:21] +**Mark:** Next up the folks over in the Tan Stack Collective have just put out a beta of the new Tan Stack database library. it's a little interesting to describe. It's a layer that's supposed to sit on top of your tan stack query setup, and it kind of acts as like a local in client database and sync engine. [10:21] -So you can still use 10 set query to do the fetching, but the database layer is supposed to provide a normalized view of the data, supposed to have very fast in client updates. I believe this has been worked on by Kyle Matthews, who you may know as the original creator of the Gatsby framework back in the day. He's been working on electric sql, which is itself a AYC engine layer, so he clearly now has some expertise over there. So, looks like a very potentially interesting tool for fast client side data management. [00:10:41] +So you can still use 10 set query to do the fetching, but the database layer is supposed to provide a normalized view of the data, supposed to have very fast in client updates. I believe this has been worked on by Kyle Matthews, who you may know as the original creator of the Gatsby framework back in the day. He's been working on electric sql, which is itself a AYC engine layer, so he clearly now has some expertise over there. So, looks like a very potentially interesting tool for fast client side data management. [10:41] -**Carl:** it seems like hand stack throwing their hat in the ring on like sync engines at a slightly different level of abstraction than like where React query sits. Further to the backend, further to here's your internal store being managed, not just request caching. [00:11:12] +**Carl:** it seems like hand stack throwing their hat in the ring on like sync engines at a slightly different level of abstraction than like where React query sits. Further to the backend, further to here's your internal store being managed, not just request caching. [11:12] -So that's cool. Yeah. Interesting. [00:11:28] +So that's cool. Yeah. Interesting. [11:28] ## [Ghost v6](https://ghost.org/changelog/6/) -**Carl:** A very small shout out, a little bit further away, but this is a tool that I evaluated for use in a professional setting on a React project. So I'm gonna shout out a new major version. Ghost version 6.0 has been released. Ghost is a, like CMS, an open I believe open source CMS. [00:11:30] +**Carl:** A very small shout out, a little bit further away, but this is a tool that I evaluated for use in a professional setting on a React project. So I'm gonna shout out a new major version. Ghost version 6.0 has been released. Ghost is a, like CMS, an open I believe open source CMS. [11:30] -And they generally seem nice. They seem great. I, you know, as contrasting things like Contentful or Ghost or Substack or Medium or what have [00:11:47] +And they generally seem nice. They seem great. I, you know, as contrasting things like Contentful or Ghost or Substack or Medium or what have [11:47] -you, uh, Word, right? They sit in a good spot in the niche. They, so they're now, they're announcing as part of this version six that they have added distribution. [00:11:57] +you, uh, Word, right? They sit in a good spot in the niche. They, so they're now, they're announcing as part of this version six that they have added distribution. [11:57] -So now you can automatically publish your posts from Ghost across social platforms. So like they, they call out Blue Sky Flipboard Threads, MAs it on WordPress, interestingly and Ghost, they can, so, okay, so you can publish the ghost and it will be distributed elsewhere on, in Ghost, I don't know, I don't know what that means. [00:12:09] +So now you can automatically publish your posts from Ghost across social platforms. So like they, they call out Blue Sky Flipboard Threads, MAs it on WordPress, interestingly and Ghost, they can, so, okay, so you can publish the ghost and it will be distributed elsewhere on, in Ghost, I don't know, I don't know what that means. [12:09] -Or any other social web platform as well as like analytics. And they talk a lot about how much revenue they have passed along to publishers on their platform. So they show their earnings broken down into like. Hosting revenue and platform revenue, and it's like $38 million for their own company and like a hundred million dollars through, you know, distributed to people publishing on ghosts. [00:12:28] +Or any other social web platform as well as like analytics. And they talk a lot about how much revenue they have passed along to publishers on their platform. So they show their earnings broken down into like. Hosting revenue and platform revenue, and it's like $38 million for their own company and like a hundred million dollars through, you know, distributed to people publishing on ghosts. [12:28] -So like that, I don't know. That's great. They, they shout out 4 0 4 Media, which is a site that I'm familiar with and did not realize hosted on this platform. So, you know, love that. That's great. I love a, love a open source media platform that's doing good work right now. [00:12:56] +So like that, I don't know. That's great. They, they shout out 4 0 4 Media, which is a site that I'm familiar with and did not realize hosted on this platform. So, you know, love that. That's great. I love a, love a open source media platform that's doing good work right now. [12:56] ## Main Content -**Carl:** Cool. Uh, That's all the new releases we have for now, into the main content. [00:13:09] +**Carl:** Cool. Uh, That's all the new releases we have for now, into the main content. [13:09] ## React API changes / updates -**Mark:** All right, so we have a roundup of a number of topics related to changes in reacts APIs. So get your technical hats on for these. [00:13:13] +**Mark:** All right, so we have a roundup of a number of topics related to changes in reacts APIs. So get your technical hats on for these. [13:13] ## [React deprecating the “throw a promise” Suspense trigger method](https://github.com/facebook/react/pull/34032) -**Mark:** The first one is that Sebastian Markbåge put up a PR to officially deprecate the throw a promise technique for triggering suspense. So let's wind backwards and unpack a little bit, like what is that in the first place and why does it even exist? So. Currently up through React 17 and 18. The suspense component came out in I think like 16.6, but originally it was only used with React lazy for importing and deferring loading of components. There wasn't an official like react for data fetching method, but there was the unofficial experimental. [00:13:24] +**Mark:** The first one is that Sebastian Markbåge put up a PR to officially deprecate the throw a promise technique for triggering suspense. So let's wind backwards and unpack a little bit, like what is that in the first place and why does it even exist? So. Currently up through React 17 and 18. The suspense component came out in I think like 16.6, but originally it was only used with React lazy for importing and deferring loading of components. There wasn't an official like react for data fetching method, but there was the unofficial experimental. [13:24] -This is never documented, but the code exists and works. If you wanted to trigger suspense in terms of like, you know, managing some data fetching yourself, the super secret technique was that you would throw a promise from within your component. And the reason the React team picked this was because we. It like, to a certain extent, it enabled them to reuse the existing infrastructure from catching errors within a component where, you know, it kind of conceptually, you have a catch block around the actual component call and then react knows, here's where I'm rendering in the tree, and then it can sort of bubble up the behavior to some ancestor component that was supposed to catch it for errors. [00:14:07] +This is never documented, but the code exists and works. If you wanted to trigger suspense in terms of like, you know, managing some data fetching yourself, the super secret technique was that you would throw a promise from within your component. And the reason the React team picked this was because we. It like, to a certain extent, it enabled them to reuse the existing infrastructure from catching errors within a component where, you know, it kind of conceptually, you have a catch block around the actual component call and then react knows, here's where I'm rendering in the tree, and then it can sort of bubble up the behavior to some ancestor component that was supposed to catch it for errors. [14:07] -It's a, you know, actual error handling with the component did catch. And for suspense it's, you know, where's the nearest suspense component in the tree? And so this was never officially documented, but, you know, library maintainers and people investigating the code saw that it was there. And so it's been known and used by the community and libraries for years. [00:14:57] +It's a, you know, actual error handling with the component did catch. And for suspense it's, you know, where's the nearest suspense component in the tree? And so this was never officially documented, but, you know, library maintainers and people investigating the code saw that it was there. And so it's been known and used by the community and libraries for years. [14:57] -And so pretty much anything, any library that had suspense support built in was internally just throwing a promise. So with React 19, we now have the use hook built in, and that is the officially documented publicly, you know, described way to actually trigger suspense. If you look at the use hook, I think internally it does actually still end up throwing a promise last time I checked, but it's now an implementation detail. And it does some other things in there as well. So if you read a pr, they are officially going to get rid of the throwing a suspense, throwing a promise technique for a number of reasons. Some of it has to do with internal implementation details and optimizations. Some of it has to do with, well, we can have the lit rules look for uses of the use hook and flag any, any time you try to put that in a place that it's not legal to do so. [00:15:19] +And so pretty much anything, any library that had suspense support built in was internally just throwing a promise. So with React 19, we now have the use hook built in, and that is the officially documented publicly, you know, described way to actually trigger suspense. If you look at the use hook, I think internally it does actually still end up throwing a promise last time I checked, but it's now an implementation detail. And it does some other things in there as well. So if you read a pr, they are officially going to get rid of the throwing a suspense, throwing a promise technique for a number of reasons. Some of it has to do with internal implementation details and optimizations. Some of it has to do with, well, we can have the lit rules look for uses of the use hook and flag any, any time you try to put that in a place that it's not legal to do so. [15:19] ## Discussion between Dan, Dominik, and Ricky about [how to support multiple React versions (if at all)](https://bsky.app/profile/tkdodo.eu/post/3lv4rhr4mrs2i) -**Mark:** This did then lead to some discussion on Blue Sky amongst a couple of the maintainers like Dominic Dorf, Meister of React Query asking, well, if this comes out in like, you know, 19 3, 19 4, something like that, how are we supposed to manage having our own libraries work with both like React 18 and 19.1 and 19.4 at the same time when there's now three different variations of what is a legal way to trigger suspense. there was a bit of a back and forth on that. One partial answer was, your library can check if the use hook is exported from React and prefer that if it exists and fall back the promise if it doesn't. One of the React team members, Ricky said, well, you probably should just focus on supporting the latest version of React. I'll admit, I feel like that kind of hand waves the problem a little bit. [00:16:20] +**Mark:** This did then lead to some discussion on Blue Sky amongst a couple of the maintainers like Dominic Dorf, Meister of React Query asking, well, if this comes out in like, you know, 19 3, 19 4, something like that, how are we supposed to manage having our own libraries work with both like React 18 and 19.1 and 19.4 at the same time when there's now three different variations of what is a legal way to trigger suspense. there was a bit of a back and forth on that. One partial answer was, your library can check if the use hook is exported from React and prefer that if it exists and fall back the promise if it doesn't. One of the React team members, Ricky said, well, you probably should just focus on supporting the latest version of React. I'll admit, I feel like that kind of hand waves the problem a little bit. [16:20] -**Carl:** How great if everyone could just rely on that. Yeah. [00:17:17] +**Carl:** How great if everyone could just rely on that. Yeah. [17:17] -**Mark:** yeah, because I mean that, that probably also means putting out new major versions of our own libraries, which is then an effort and also has a ripple effect on the ecosystem. I mean, I don't really want to publish a new version, a new major version of, you know, some of the Redux libraries just to support that. But it's good to see that there, that we are actually making headway on that now that 19 is out. [00:17:20] +**Mark:** yeah, because I mean that, that probably also means putting out new major versions of our own libraries, which is then an effort and also has a ripple effect on the ecosystem. I mean, I don't really want to publish a new version, a new major version of, you know, some of the Redux libraries just to support that. But it's good to see that there, that we are actually making headway on that now that 19 is out. [17:20] ## Github discussion with Joe about [why no context selectors API or signals, research into data modeling, and why “concurrent stores” are the current focus area](https://github.com/reactjs/rfcs/pull/119#issuecomment-3214971470) -**Mark:** Another interesting point. So buried in a blue sky thread Joseph from the React team said that. They're planning to not actually implement an idea that they had discussed a few months ago where they'd said, we are going. [00:17:43] +**Mark:** Another interesting point. So buried in a blue sky thread Joseph from the React team said that. They're planning to not actually implement an idea that they had discussed a few months ago where they'd said, we are going. [17:43] -They were thinking about allowing you to call use or use context inside of use memo as a way to optimize context. So backing up technical detail on this one, the weakness of context has always been that when you update the context value, every component that reads it will re-render. And then at that point, all the children inside of that will re-render as well, just because react defaults to when any component renders. [00:18:01] +They were thinking about allowing you to call use or use context inside of use memo as a way to optimize context. So backing up technical detail on this one, the weakness of context has always been that when you update the context value, every component that reads it will re-render. And then at that point, all the children inside of that will re-render as well, just because react defaults to when any component renders. [18:01] -It just keeps on going all the way down the tree unless you optimize it to stop. And so the problem is if you have, you know, fairly large objects with multiple fields as your context value, some of your components probably only care about one or two of those fields. But as soon as you update that object at all, every component that read the context will re-render. And so it ends up leading to, you know, potentially lots of components rendering slower render performance, et cetera. So years ago, like, I don't know, 20 18, 20 19 there was a user land RFC suggestion that react should add context selectors as an API. So, you know, kind of similar to like a, a react redux use selector, but optimize for context instead. [00:18:28] +It just keeps on going all the way down the tree unless you optimize it to stop. And so the problem is if you have, you know, fairly large objects with multiple fields as your context value, some of your components probably only care about one or two of those fields. But as soon as you update that object at all, every component that read the context will re-render. And so it ends up leading to, you know, potentially lots of components rendering slower render performance, et cetera. So years ago, like, I don't know, 20 18, 20 19 there was a user land RFC suggestion that react should add context selectors as an API. So, you know, kind of similar to like a, a react redux use selector, but optimize for context instead. [18:28] -And so that proposal has been around for a long time. Andrew Clark even briefly tried implementing a proof of concept of a context selector's API in like 2020, and then it didn't go anywhere. So a few months ago, the React team said we're, we're thinking about a. Use context in use memo as a alternative to actually writing a selector for context. And apparently their thinking has evolved and they're not going to do that at this point because the React compiler basically gives you 95% of the performance benefits that a context selector's API would have without them needing to design and ship a context selector's API, into React itself. If you think about it, the point of the compiler is that it not only optimizes like your used memos and whatever, it also optimizes the render output. And so if you have a component that reads from a context, it will, it will render because the context value changed. But if none of the data that it needs from the context has updated, it will end up skipping all of its children. And so that drastically cuts down on how many components would render when the context updates. So there was actually some very, very good discussion in the longstanding context, selectors RFC thread, just within the last two or three days where a few people were agitating for react should really add contact selectors. It'll get rid of all these other state management libraries. [00:19:18] +And so that proposal has been around for a long time. Andrew Clark even briefly tried implementing a proof of concept of a context selector's API in like 2020, and then it didn't go anywhere. So a few months ago, the React team said we're, we're thinking about a. Use context in use memo as a alternative to actually writing a selector for context. And apparently their thinking has evolved and they're not going to do that at this point because the React compiler basically gives you 95% of the performance benefits that a context selector's API would have without them needing to design and ship a context selector's API, into React itself. If you think about it, the point of the compiler is that it not only optimizes like your used memos and whatever, it also optimizes the render output. And so if you have a component that reads from a context, it will, it will render because the context value changed. But if none of the data that it needs from the context has updated, it will end up skipping all of its children. And so that drastically cuts down on how many components would render when the context updates. So there was actually some very, very good discussion in the longstanding context, selectors RFC thread, just within the last two or three days where a few people were agitating for react should really add contact selectors. It'll get rid of all these other state management libraries. [19:18] -And I left a couple comments trying to explain how the compiler solves this problem and Joe Savona from the React team then went on and wrote some very extensive, detailed comments talking about how the React team has been doing research into these ideas of data flow analysis. And how do you manage large amounts of state and how does it compare with react context and signals and, you know, third party state management libraries. [00:20:57] +And I left a couple comments trying to explain how the compiler solves this problem and Joe Savona from the React team then went on and wrote some very extensive, detailed comments talking about how the React team has been doing research into these ideas of data flow analysis. And how do you manage large amounts of state and how does it compare with react context and signals and, you know, third party state management libraries. [20:57] ## [PR for “concurrent stores” skeleton](https://github.com/facebook/react/pull/33215) -**Mark:** And so he confirmed that, they're not planning to add a context selector's, API and instead their thought process is actually now about this concept called concurrent stores. So as best as I understand it, the idea is that right now a third party library like Redux or Zeus stand relies on the use sink external store hook to be able to tell react that there's a subscription data changed. This component needs to update, but. That has the limitation that it doesn't play well with suspense and transitions because if something got updated in the middle, react has to throw away work in progress and do a full render. It can't do all the, you know, the performance optimizations and with transitions. So it sounds like this concurrent store idea is supposed to be like an improved, better version of use sync external store where you can still have some data living externally. You can still have selectors saying like, only these components need to update. But the concurrent store would wrap the updates in a concurrent transition compatible way. [00:21:25] +**Mark:** And so he confirmed that, they're not planning to add a context selector's, API and instead their thought process is actually now about this concept called concurrent stores. So as best as I understand it, the idea is that right now a third party library like Redux or Zeus stand relies on the use sink external store hook to be able to tell react that there's a subscription data changed. This component needs to update, but. That has the limitation that it doesn't play well with suspense and transitions because if something got updated in the middle, react has to throw away work in progress and do a full render. It can't do all the, you know, the performance optimizations and with transitions. So it sounds like this concurrent store idea is supposed to be like an improved, better version of use sync external store where you can still have some data living externally. You can still have selectors saying like, only these components need to update. But the concurrent store would wrap the updates in a concurrent transition compatible way. [21:25] -So he said that they're really trying to put some focus in API design onto figuring out what a concurrent store, API ought to look like. And it sounds like they've got some, some amount of progress on that design to talk about in the near future. They did put up a pull request a couple months ago with the skeleton for concurrent stores. It's just like defining some, some data types and adding some tests. There's no implementation code yet. [00:22:41] +So he said that they're really trying to put some focus in API design onto figuring out what a concurrent store, API ought to look like. And it sounds like they've got some, some amount of progress on that design to talk about in the near future. They did put up a pull request a couple months ago with the skeleton for concurrent stores. It's just like defining some, some data types and adding some tests. There's no implementation code yet. [22:41] ## [Third-party \\\`react-concurrent-store\\\` ponyfill package](https://github.com/thejustinwalsh/react-concurrent-store) -**Mark:** However a third party developer that I saw has actually looked at all the tests and then gone off and tried to implement a third party hacky polyfill version of what it looks like the concurrent stores are supposed to be and publish that as a React concurrent store package. I'm very excited about this and I have not had time to actually try it out yet. So the takeaways are a. Most developers probably won't need to use some of these things directly. A lot of this is going to be more library maintainer concerns but it's very good to see that the React team is actively thinking about how, how can we make React apps faster? What are the best ways to manage complex state? How can we better integrate with third party libraries and try to make all the react features like transitions work well in those cases? [00:23:13] +**Mark:** However a third party developer that I saw has actually looked at all the tests and then gone off and tried to implement a third party hacky polyfill version of what it looks like the concurrent stores are supposed to be and publish that as a React concurrent store package. I'm very excited about this and I have not had time to actually try it out yet. So the takeaways are a. Most developers probably won't need to use some of these things directly. A lot of this is going to be more library maintainer concerns but it's very good to see that the React team is actively thinking about how, how can we make React apps faster? What are the best ways to manage complex state? How can we better integrate with third party libraries and try to make all the react features like transitions work well in those cases? [23:13] -So there's your info dump for the day. [00:24:08] +So there's your info dump for the day. [24:08] -**Carl:** Love that. I had said some stuff just before we started recording, just before we started the event about, I've been playing with effect effect ts lately, which we, we've mentioned once or twice now. And again and when you're talking about these concurrent stores and you know, like I'm reading the post from Joe Savona talking about context selectors. [00:24:10] +**Carl:** Love that. I had said some stuff just before we started recording, just before we started the event about, I've been playing with effect effect ts lately, which we, we've mentioned once or twice now. And again and when you're talking about these concurrent stores and you know, like I'm reading the post from Joe Savona talking about context selectors. [24:10] -One of the things that I think effect solves well is dependency injection. it's focused on the backend, that actually says in the documentation like, effect is not meant for front end. They're, it may seem good, but it's not what it's meant for. And they're interested in exploring that, but they haven't yet. [00:24:30] +One of the things that I think effect solves well is dependency injection. it's focused on the backend, that actually says in the documentation like, effect is not meant for front end. They're, it may seem good, but it's not what it's meant for. And they're interested in exploring that, but they haven't yet. [24:30] -But I think the execution model is pretty similar. It's like, it's almost like componentized backend a little bit. But with type safe dependency injection and error generation and, and using effect pretty extensively for the last three or four weeks has really made me. Itch for some of those benefits in React. [00:24:44] +But I think the execution model is pretty similar. It's like, it's almost like componentized backend a little bit. But with type safe dependency injection and error generation and, and using effect pretty extensively for the last three or four weeks has really made me. Itch for some of those benefits in React. [24:44] -I'd be curious to see if they can, well, I've got a little bit more connections to make on that later on, so I guess I'll end it there. I don't know, just about dependency injection in effect and type safety and whatever in the context of selecting data on the front end, I think is interesting. [00:25:05] +I'd be curious to see if they can, well, I've got a little bit more connections to make on that later on, so I guess I'll end it there. I don't know, just about dependency injection in effect and type safety and whatever in the context of selecting data on the front end, I think is interesting. [25:05] -I think there's still a lot of API design exploration to do there. [00:25:20] +I think there's still a lot of API design exploration to do there. [25:20] -**Mark:** I definitely recommend taking a few minutes to read some of Joe's comments in that context. Selector's, RFC thread, if you got some time, and then I, I expect there be, and to be at least some announcements, possibly about concurrent stores coming up at React Conf in October. [00:25:25] +**Mark:** I definitely recommend taking a few minutes to read some of Joe's comments in that context. Selector's, RFC thread, if you got some time, and then I, I expect there be, and to be at least some announcements, possibly about concurrent stores coming up at React Conf in October. [25:25] -**Carl:** Interesting. [00:25:41] +**Carl:** Interesting. [25:41] -**Mark:** Then the last item out of the React related changes they merged a PR to add what looks like a new suspense timeline to the dev tools. They've got a demo video in there, and so it looks like it's actually now a, a third extra tab in the Chrome dev tools. So you've got the component tree, you've got the performance tab, and then there's a suspense timeline tab. And it looks like what it does is a mixture of , a rough rec out, like rectangle outline of the shapes of your components, but not showing like any of the HTML, just like , here's the structure of what your component tree looks like visually, and some highlighting for which ones have suspended, and then possibly some further details in a sidebar about which components suspended and when. So. as a dev tools type person, I'm always very, very excited to see new dev tools capabilities being added. [00:25:42] +**Mark:** Then the last item out of the React related changes they merged a PR to add what looks like a new suspense timeline to the dev tools. They've got a demo video in there, and so it looks like it's actually now a, a third extra tab in the Chrome dev tools. So you've got the component tree, you've got the performance tab, and then there's a suspense timeline tab. And it looks like what it does is a mixture of , a rough rec out, like rectangle outline of the shapes of your components, but not showing like any of the HTML, just like , here's the structure of what your component tree looks like visually, and some highlighting for which ones have suspended, and then possibly some further details in a sidebar about which components suspended and when. So. as a dev tools type person, I'm always very, very excited to see new dev tools capabilities being added. [25:42] ## Lee Robinsons’s [“Reflections on the React Community”](https://leerob.com/reflections) wrap-up post -**Carl:** Okay, let's go into. We talked a little bit about Lee Rob leaving Vercel recently and going to Cursor. He put out a really great blog post called Reflections on the React Community. This sort of summarizing his, his time at Next and in React. Yeah, I don't know. Mark, do you wanna start? [00:26:39] +**Carl:** Okay, let's go into. We talked a little bit about Lee Rob leaving Vercel recently and going to Cursor. He put out a really great blog post called Reflections on the React Community. This sort of summarizing his, his time at Next and in React. Yeah, I don't know. Mark, do you wanna start? [26:39] -I don't know if I have anything specific to start here. It's a really good overall hot, you know, 30,000 foot view of his time. [00:26:59] +I don't know if I have anything specific to start here. It's a really good overall hot, you know, 30,000 foot view of his time. [26:59] -**Mark:** So Lee Robinson was the primary developer relations person for Vercel for about five plus years. And even in my own head like. when I hear the word devel Lee is pretty much the first person that comes to mind. And Lee was always in a very tough position. You know, CEL is, you know, a somewhat divisive company in some ways. You know, it, it puts out some wonderful technology. They've genuinely done a lot to advance the React ecosystem makes, make apps, you know, easier to host, they build next, et cetera. But, you know, they've also been accused of, you know, the React team and pushing reacts direction and making changes just for profit. And you know, as I've discussed in some previous episodes and blog posts, like a lot of that is undeserved criticism or, you know, misinterpretation of the background. And so, as you know, the visible face of Vercel and the next team we was. Frequently the target of a lot of those criticisms, even though, you know, none of it was, you know, like he wasn't the one developing the tool set or, you know, making the businesses decisions. And one of the things I've always appreciated about Lee is that, you know, he was always very, very active in discussions on, you know, Reddit and Twitter and Hacker News. You know, like not just in like the next sub Reddit, but you know, the React Reddit hacker news discussions. Like anytime a discretion thread would happen, he would pop up and, you know, respond to comments, offer feedback, and, you know, yeah. [00:27:07] +**Mark:** So Lee Robinson was the primary developer relations person for Vercel for about five plus years. And even in my own head like. when I hear the word devel Lee is pretty much the first person that comes to mind. And Lee was always in a very tough position. You know, CEL is, you know, a somewhat divisive company in some ways. You know, it, it puts out some wonderful technology. They've genuinely done a lot to advance the React ecosystem makes, make apps, you know, easier to host, they build next, et cetera. But, you know, they've also been accused of, you know, the React team and pushing reacts direction and making changes just for profit. And you know, as I've discussed in some previous episodes and blog posts, like a lot of that is undeserved criticism or, you know, misinterpretation of the background. And so, as you know, the visible face of Vercel and the next team we was. Frequently the target of a lot of those criticisms, even though, you know, none of it was, you know, like he wasn't the one developing the tool set or, you know, making the businesses decisions. And one of the things I've always appreciated about Lee is that, you know, he was always very, very active in discussions on, you know, Reddit and Twitter and Hacker News. You know, like not just in like the next sub Reddit, but you know, the React Reddit hacker news discussions. Like anytime a discretion thread would happen, he would pop up and, you know, respond to comments, offer feedback, and, you know, yeah. [27:07] -Because of his position. Like occasionally people would interpret it as being like a corporate ish response, but he was always very, very active in being in there. And unfortunately that meant he was also the, you took the brunt of a lot of the criticism. So a lot of his blog post, you know, talks about, you know, react has, react has become stable, it's grown, the community's big. [00:28:48] +Because of his position. Like occasionally people would interpret it as being like a corporate ish response, but he was always very, very active in being in there. And unfortunately that meant he was also the, you took the brunt of a lot of the criticism. So a lot of his blog post, you know, talks about, you know, react has, react has become stable, it's grown, the community's big. [28:48] -Working with any community is really, really hard and it can be very stressful and very frustrating. He talks a bit about some of the difference between, you know, a, you know, more broadly like projects like React versus Rails you know, dealing with some of the community management acts, aspects, how you get feedback. He even talks some about, incentives like the React team in some ways builds react for meta. And sometimes that means that, you know, issues slip through the cracks. You know, like Meta isn't trained to make money off React. Well, in some ways Vercel is. And he also talks about, you know, some of the, the server component development process, how that was marketed how it's been interpreted. And he talks about burnout. And boy can I understand and sympathize with this one on multiple levels. responding to issues and comments, even when they're positive, takes a lot of time and effort. And when a lot of those comrades are, you know, angry and critiquing and throwing around conspiracy theories, that wears away at you a lot. So I have a huge amount of respect for Lee and everything he's done for Vercel and next in the React community over the last several years. And so I appreciated him doing the writeup and I could totally identify with a lot of the points he was making in here. [00:29:13] +Working with any community is really, really hard and it can be very stressful and very frustrating. He talks a bit about some of the difference between, you know, a, you know, more broadly like projects like React versus Rails you know, dealing with some of the community management acts, aspects, how you get feedback. He even talks some about, incentives like the React team in some ways builds react for meta. And sometimes that means that, you know, issues slip through the cracks. You know, like Meta isn't trained to make money off React. Well, in some ways Vercel is. And he also talks about, you know, some of the, the server component development process, how that was marketed how it's been interpreted. And he talks about burnout. And boy can I understand and sympathize with this one on multiple levels. responding to issues and comments, even when they're positive, takes a lot of time and effort. And when a lot of those comrades are, you know, angry and critiquing and throwing around conspiracy theories, that wears away at you a lot. So I have a huge amount of respect for Lee and everything he's done for Vercel and next in the React community over the last several years. And so I appreciated him doing the writeup and I could totally identify with a lot of the points he was making in here. [29:13] -**Carl:** Yeah, definitely. And it's funny, I, you know, nobody, nobody's ever paid me to do reactive flux things, and it's a very different type of like community management. But I definitely, a lot of what he said resonated with me. But from that perspective, and also just like, I don't know. The burnout and, you know, thanklessness of wrangling a large group of people is is pretty real. [00:30:35] +**Carl:** Yeah, definitely. And it's funny, I, you know, nobody, nobody's ever paid me to do reactive flux things, and it's a very different type of like community management. But I definitely, a lot of what he said resonated with me. But from that perspective, and also just like, I don't know. The burnout and, you know, thanklessness of wrangling a large group of people is is pretty real. [30:35] -**Mark:** So it's a post worth reading. And Lee, if you ever hear this, thank you for all your time and effort. [00:30:58] +**Mark:** So it's a post worth reading. And Lee, if you ever hear this, thank you for all your time and effort. [30:58] -**Carl:** Yeah. Thank you for all your time and effort. It's been a lot. It's been great. what you said about like Lee really being like you think Lee, Robb is definitely a canonical dev rel, like showed the world how dev rel happens. I think [00:31:04] +**Carl:** Yeah. Thank you for all your time and effort. It's been a lot. It's been great. what you said about like Lee really being like you think Lee, Robb is definitely a canonical dev rel, like showed the world how dev rel happens. I think [31:04] -really, uh, personified it. [00:31:16] +really, uh, personified it. [31:16] ## [Remix doing its own component model??](https://x.com/mjackson/status/1954975322157486408) -**Carl:** Maybe in two remix doing its own component model. [00:31:18] +**Carl:** Maybe in two remix doing its own component model. [31:18] -**Mark:** we've been doing sort of a running observation of what in the world are Michael Jackson and Ryan Florence doing over in their corner. They, they continue to drop cryptic hints on Twitter about the directions of remix version three. And while this isn't, trying to keep this from being the, just repeat what they say on Twitter podcast, but, you know, so far all we have to go by is the cryptic hints that they're dropping. And so we've gone from, you know, just Remix v3 is its own thing to, it's going to use Preact to, well, actually, I guess now it's not using Preact. [00:31:22] +**Mark:** we've been doing sort of a running observation of what in the world are Michael Jackson and Ryan Florence doing over in their corner. They, they continue to drop cryptic hints on Twitter about the directions of remix version three. And while this isn't, trying to keep this from being the, just repeat what they say on Twitter podcast, but, you know, so far all we have to go by is the cryptic hints that they're dropping. And so we've gone from, you know, just Remix v3 is its own thing to, it's going to use Preact to, well, actually, I guess now it's not using Preact. [31:22] -**Carl:** Yeah, so I, I, I guess they want to explore a similar kind of problem space as react and React are, I mean, I, you know, that's the signals that they're putting out here is that like, well, these existing tools do not solve the problem well enough, we believe. And so we're going to explore that. And, you know, I, fair enough, I, I think there is more room to explore there. [00:32:01] +**Carl:** Yeah, so I, I, I guess they want to explore a similar kind of problem space as react and React are, I mean, I, you know, that's the signals that they're putting out here is that like, well, these existing tools do not solve the problem well enough, we believe. And so we're going to explore that. And, you know, I, fair enough, I, I think there is more room to explore there. [32:01] -I know some discussion in reactive flux on this, you know, on this link earlier Ricky had said like, you know, good luck to them. I think they may find some of the same constraints as React has, and I think that's pretty likely. But, you know, also there's a term coming to mind uh, path dependence, which is, you know, like what the options available to you going forward are dependent on the choices you made in the past. [00:32:26] +I know some discussion in reactive flux on this, you know, on this link earlier Ricky had said like, you know, good luck to them. I think they may find some of the same constraints as React has, and I think that's pretty likely. But, you know, also there's a term coming to mind uh, path dependence, which is, you know, like what the options available to you going forward are dependent on the choices you made in the past. [32:26] -And so, like, you know, react is pretty far down, it's set of chosen decisions. So I think there is some value in backing out and saying like, well, hey, maybe we're in a local maximum. Let's explore some other possible paths here. And yeah, so let me pick up where I sat down earlier talking about effect. [00:32:49] +And so, like, you know, react is pretty far down, it's set of chosen decisions. So I think there is some value in backing out and saying like, well, hey, maybe we're in a local maximum. Let's explore some other possible paths here. And yeah, so let me pick up where I sat down earlier talking about effect. [32:49] -Right. So like, it, it feels to me like a componentized model for the backend. And it's really interesting because each, you know, backend component that you write, which I'm, they call 'EM Effects, but you know, this is a React chat, so I'm going to translate. So you write like a backend component and it has a type safe it uses TypeScript generics to describe its outputs, its possible errors emitted and what dependencies it requires to be passed in effects. [00:33:08] +Right. So like, it, it feels to me like a componentized model for the backend. And it's really interesting because each, you know, backend component that you write, which I'm, they call 'EM Effects, but you know, this is a React chat, so I'm going to translate. So you write like a backend component and it has a type safe it uses TypeScript generics to describe its outputs, its possible errors emitted and what dependencies it requires to be passed in effects. [33:08] -These backend components can like, make their own dependencies available, you know, or they can say, you need to provide this at runtime. And so that's pretty, that feels very similar in use to me in like ideology to me as what React is trying to do. [00:33:37] +These backend components can like, make their own dependencies available, you know, or they can say, you need to provide this at runtime. And so that's pretty, that feels very similar in use to me in like ideology to me as what React is trying to do. [33:37] -**Mark:** your props and your output. [00:33:54] +**Mark:** your props and your output. [33:54] -**Carl:** Right. Props, return value, boom. Like, okay, every return value is JSX and it doesn't really matter specifically what, but you know. Yeah. So it, it, it's really interesting having error safety as well as dependency type safety because like props are one thing. But you know that there's no way to describe that. [00:33:56] +**Carl:** Right. Props, return value, boom. Like, okay, every return value is JSX and it doesn't really matter specifically what, but you know. Yeah. So it, it, it's really interesting having error safety as well as dependency type safety because like props are one thing. But you know that there's no way to describe that. [33:56] -This component being rendered relies on being nested underneath a context provider. Like you can do a runtime check for that, but you can't do a a compiled time type safety check for that. And that's the kind of thing that effect is enabling. It's that kind of dependency injection. Like what environment does this expect to be run in, not just what inputs does it expect to be provided. [00:34:16] +This component being rendered relies on being nested underneath a context provider. Like you can do a runtime check for that, but you can't do a a compiled time type safety check for that. And that's the kind of thing that effect is enabling. It's that kind of dependency injection. Like what environment does this expect to be run in, not just what inputs does it expect to be provided. [34:16] -I. So like using that in a backend context, you know, in this, going all in on this in a backend space where it's intended to be used has really made me reflect on the experience of using React and what kind of, what some of its pain points are. And so I guess like the React core team has gone all in on the transition boundary between the client and the server with server components. [00:34:41] +I. So like using that in a backend context, you know, in this, going all in on this in a backend space where it's intended to be used has really made me reflect on the experience of using React and what kind of, what some of its pain points are. And so I guess like the React core team has gone all in on the transition boundary between the client and the server with server components. [34:41] -Like they wanna really make that smooth and instead of this request response model, just have it be more fluid and you know, whatever. Yeah, streaming all that which is great and that's a very interesting direction to explore, but it does not address all of those kinds of things of how do we make a robust. [00:35:04] +Like they wanna really make that smooth and instead of this request response model, just have it be more fluid and you know, whatever. Yeah, streaming all that which is great and that's a very interesting direction to explore, but it does not address all of those kinds of things of how do we make a robust. [35:04] -Reliable application that can be statically verified, will run as expected. And that is more of where effect is coming at the problem space of code authoring from. And yeah, I think the, like both of those are really interesting viable problem spaces to explore. And if Remix is saying, we think the path that React is exploring is not the ideal user experience, maybe they're gonna go more in something like this. [00:35:23] +Reliable application that can be statically verified, will run as expected. And that is more of where effect is coming at the problem space of code authoring from. And yeah, I think the, like both of those are really interesting viable problem spaces to explore. And if Remix is saying, we think the path that React is exploring is not the ideal user experience, maybe they're gonna go more in something like this. [35:23] -And if they do, this is wild, pure, rampant speculation on my part right now. But if they, you know, I can see a possible world where one thing that might interest them is the same kind of guarantees that effect is trying to provide. And that would be valuable. Like, so I, I, yeah, I'll still be paying attention to this. [00:35:51] +And if they do, this is wild, pure, rampant speculation on my part right now. But if they, you know, I can see a possible world where one thing that might interest them is the same kind of guarantees that effect is trying to provide. And that would be valuable. Like, so I, I, yeah, I'll still be paying attention to this. [35:51] -I do have a greater degree of skepticism it's a huge expansion of what scope of problem they're exploring. So that's challenging. But you know, they've taken on big challenges before. Shipped things. So yeah, we'll be paying attention and see what they see. What they come out with. [00:36:09] +I do have a greater degree of skepticism it's a huge expansion of what scope of problem they're exploring. So that's challenging. But you know, they've taken on big challenges before. Shipped things. So yeah, we'll be paying attention and see what they see. What they come out with. [36:09] -**Mark:** Yeah, so basically where things stand at the moment are lots of cryptic hints on Twitter. It's not gonna be a React. It's a different component model. They want to make it LLM friendly. We still haven't seen any good examples, but I'm assuming they will do a big announcement at the Remix Jam conference, which I think is in [00:36:24] +**Mark:** Yeah, so basically where things stand at the moment are lots of cryptic hints on Twitter. It's not gonna be a React. It's a different component model. They want to make it LLM friendly. We still haven't seen any good examples, but I'm assuming they will do a big announcement at the Remix Jam conference, which I think is in [36:24] -October. [00:36:42] +October. [36:42] -**Carl:** Yeah. Oh, they had just done, just recently announced that. [00:36:43] +**Carl:** Yeah. Oh, they had just done, just recently announced that. [36:43] ## [Remix 3 and the End of React-Centric Architectures](https://thenewstack.io/remix-3-and-the-end-of-react-centric-architectures/) -**Mark:** And then along with the rampant speculation bit I saw a blog post just earlier, earlier today, but it was from a month ago called Remix Three and the End of React Centric Architectures, which also does a bit of, you know, speculating, hypothesizing on the ways various frameworks have chosen to build things and says, you know, maybe it's a good thing that Remix three is supposedly going back to a more web native framework approach. [00:36:46] +**Mark:** And then along with the rampant speculation bit I saw a blog post just earlier, earlier today, but it was from a month ago called Remix Three and the End of React Centric Architectures, which also does a bit of, you know, speculating, hypothesizing on the ways various frameworks have chosen to build things and says, you know, maybe it's a good thing that Remix three is supposedly going back to a more web native framework approach. [36:46] -**Carl:** Yeah, and they're doing Remix Jam right after React Conf in Toronto, so, yeah. We'll, we'll shot that out at the, in the conferences section at the end too. [00:37:13] +**Carl:** Yeah, and they're doing Remix Jam right after React Conf in Toronto, so, yeah. We'll, we'll shot that out at the, in the conferences section at the end too. [37:13] ## [Popular nx packages compromised on npm](https://www.aikido.dev/blog/popular-nx-packages-compromised-on-npm) -**Carl:** Yeah. Okay, moving on. our last main content subject for the month, there's another security vulnerability. I feel like we, you know, we, we, we talk about these somewhat regularly it feels like, but some pretty popular NX packages were compromised on NPM. So NX is a, [00:37:21] +**Carl:** Yeah. Okay, moving on. our last main content subject for the month, there's another security vulnerability. I feel like we, you know, we, we, we talk about these somewhat regularly it feels like, but some pretty popular NX packages were compromised on NPM. So NX is a, [37:21] -**Mark:** Monorepo management and build tool [00:37:39] +**Mark:** Monorepo management and build tool [37:39] -**Carl:** yes. It's a competitor to turbo repo. I, I, I think I would [00:37:42] +**Carl:** yes. It's a competitor to turbo repo. I, I, I think I would [37:42] -**Mark:** to, to some extent. Yeah. [00:37:46] +**Mark:** to, to some extent. Yeah. [37:46] -**Carl:** it got wholesale compromised as in like everyone who installed it had a post install script run that swiped a bunch of configuration files like .env and .npmrc, anywhere you can think that credentials might be stored in your project workspace or elsewhere on your system. [00:37:47] +**Carl:** it got wholesale compromised as in like everyone who installed it had a post install script run that swiped a bunch of configuration files like .env and .npmrc, anywhere you can think that credentials might be stored in your project workspace or elsewhere on your system. [37:47] -This script looked for and then uploaded to GitHub. So that's really bad. This is a, this is a, this is a theoretical exploit that I've been hearing about for the last 10 years. Like the vulnerabilities possible by NPM post install has been a subject that comes up every couple of years. And, oh boy, this is a bad one. [00:38:07] +This script looked for and then uploaded to GitHub. So that's really bad. This is a, this is a, this is a theoretical exploit that I've been hearing about for the last 10 years. Like the vulnerabilities possible by NPM post install has been a subject that comes up every couple of years. And, oh boy, this is a bad one. [38:07] -The, this blog post discussing the vulnerability said that when they were, they were monitoring GitHub. 'cause the way the script worked is it would, if it found your GitHub credentials, if it found a valid SSH key for GitHub or I guess actually an API token, not an SSH token. But if it found a GitHub API token, then it would silently upload a new repo. [00:38:27] +The, this blog post discussing the vulnerability said that when they were, they were monitoring GitHub. 'cause the way the script worked is it would, if it found your GitHub credentials, if it found a valid SSH key for GitHub or I guess actually an API token, not an SSH token. But if it found a GitHub API token, then it would silently upload a new repo. [38:27] -So it, it, which is interesting because it was a public repo on GitHub created by this malware. So there was some kind of public metric that could be gathered for its scope of impact. And so there this blog post says that they saw at one point, 1,400 of these repos created by this malware script. [00:38:51] +So it, it, which is interesting because it was a public repo on GitHub created by this malware. So there was some kind of public metric that could be gathered for its scope of impact. And so there this blog post says that they saw at one point, 1,400 of these repos created by this malware script. [38:51] -So like, that's quite a number of people who got all of their secrets swiped off their system. One interesting thing that this malware did is if it found an LLM tool on your system, it would write a prompt to that LLM asking it to find all of the secrets on your system. So like if you, if you've got Claude, like suddenly Claude is maliciously gathering all of your tokens from your entire system that it can, you know, whatever it can access. [00:39:11] +So like, that's quite a number of people who got all of their secrets swiped off their system. One interesting thing that this malware did is if it found an LLM tool on your system, it would write a prompt to that LLM asking it to find all of the secrets on your system. So like if you, if you've got Claude, like suddenly Claude is maliciously gathering all of your tokens from your entire system that it can, you know, whatever it can access. [39:11] -Like, holy shit, that's bad. That's not, yeah, that's, that's pretty bad. [00:39:38] +Like, holy shit, that's bad. That's not, yeah, that's, that's pretty bad. [39:38] ## Last month [eslint-plugin-prettier maintainers were targeted](https://snyk.io/blog/maintainers-of-eslint-prettier-plugin-attacked-via-npm-supply-chain-malware/), this is a much broader attack -**Carl:** you know, last month we discussed a, another vulnerability where the eslint-plugin-prettier package maintainers were targeted. So I guess this, this could be, this could be the same attackers perhaps, and they were just more successful in that, you know, instead of. Getting busted while trying to steal credentials for a major packages maintainers. [00:39:43] +**Carl:** you know, last month we discussed a, another vulnerability where the eslint-plugin-prettier package maintainers were targeted. So I guess this, this could be, this could be the same attackers perhaps, and they were just more successful in that, you know, instead of. Getting busted while trying to steal credentials for a major packages maintainers. [39:43] -They actually got it. And so now they have successfully executed on this broader attack that they were maybe trying to do earlier. Woo. That's bad. And it sucks 'cause like what do you, how do you even respond? What do, how can you keep yourself safe if just [00:40:02] +They actually got it. And so now they have successfully executed on this broader attack that they were maybe trying to do earlier. Woo. That's bad. And it sucks 'cause like what do you, how do you even respond? What do, how can you keep yourself safe if just [40:02] -**Mark:** Monitor your, monitor your dependencies, actually look at lock files. I, I can say that there are some good tools out there that will watch PRS for, you know, like what packages are getting updated in this PR and, you know, warn you if any of them have known PO known problems. That's definitely a valuable thing to include in the CI process. [00:40:16] +**Mark:** Monitor your, monitor your dependencies, actually look at lock files. I, I can say that there are some good tools out there that will watch PRS for, you know, like what packages are getting updated in this PR and, you know, warn you if any of them have known PO known problems. That's definitely a valuable thing to include in the CI process. [40:16] -**Carl:** Yeah. True. But man, one of the, one of the challenging parts about this particular vulnerability is the. I, I remember half of the discussion that I saw earlier, and I can't remember where I found it, so I can't quickly refresh my memory, but there, a, a popular tool uses NX at latest on like, you know, project Bootstrap. [00:40:39] +**Carl:** Yeah. True. But man, one of the, one of the challenging parts about this particular vulnerability is the. I, I remember half of the discussion that I saw earlier, and I can't remember where I found it, so I can't quickly refresh my memory, but there, a, a popular tool uses NX at latest on like, you know, project Bootstrap. [40:39] -So like, you know, if you're just casually idly using whatever project generator this was to start something new oops. You got the latest NX that was compromised. So like that's not even, yeah, I don't know. Just like [00:40:59] +So like, you know, if you're just casually idly using whatever project generator this was to start something new oops. You got the latest NX that was compromised. So like that's not even, yeah, I don't know. Just like [40:59] -**Mark:** the comment was actually in the, the tech reads and news link and it was [00:41:13] +**Mark:** the comment was actually in the, the tech reads and news link and it was [41:13] -the NX vs. Code extension. [00:41:16] +the NX vs. Code extension. [41:16] -**Carl:** Okay. Okay. That's a li that's at least a little bit different vs. Code extension is not as popularly used as a, you know, project bootstrap tool, but yeah, not great. [00:41:19] +**Carl:** Okay. Okay. That's a li that's at least a little bit different vs. Code extension is not as popularly used as a, you know, project bootstrap tool, but yeah, not great. [41:19] ## ⚡ Lightning round ⚡ -**Carl:** Okay. Into the lightning round. [00:41:31] +**Carl:** Okay. Into the lightning round. [41:31] -**Mark:** Go for it. [00:41:33] +**Mark:** Go for it. [41:33] ## [React Strict DOM vs React Native for Web in 2025](https://shift.infinite.red/react-strict-dom-vs-react-native-for-web-in-2025-bb91582ef261) -**Carl:** I saw this post from, it was a blog post summarizing a podcast from react Native Radio from Infinite Red. Great Folks. They spoke with the maintainers of React strict Dom and React native for web comparing and contrasting. We had discussed React strict dom a about a year and a half ago. [00:41:33] +**Carl:** I saw this post from, it was a blog post summarizing a podcast from react Native Radio from Infinite Red. Great Folks. They spoke with the maintainers of React strict Dom and React native for web comparing and contrasting. We had discussed React strict dom a about a year and a half ago. [41:33] -It was like February of 2024. And a, a lot of what we did was compare and contrast it against React native for web. So this was like very precisely the type of conversation we had except with the maintainers who aren't just speculating and guessing and inferring, but like they, no, they made this like, they know how it works. [00:41:54] +It was like February of 2024. And a, a lot of what we did was compare and contrast it against React native for web. So this was like very precisely the type of conversation we had except with the maintainers who aren't just speculating and guessing and inferring, but like they, no, they made this like, they know how it works. [41:54] -They know what the trade-offs are. So it's got some really great architectural diagrams explaining the distinction and what the difference is. It lines up pretty well with what I recall us discussing and they have a really good little flow chart for making decisions about you know, TLDR should you adopt React strict dom. [00:42:13] +They know what the trade-offs are. So it's got some really great architectural diagrams explaining the distinction and what the difference is. It lines up pretty well with what I recall us discussing and they have a really good little flow chart for making decisions about you know, TLDR should you adopt React strict dom. [42:13] -And they did a nice little handy visual, which I'm gonna go to the Happy Path through the Happy Path on, which is do you already have React native app? No. Will you need web support eventually? Yes. Use extract Dom. So like basically they're saying this is a great low level set of abstractions that will make it more feasible to reuse your code in more places. [00:42:30] +And they did a nice little handy visual, which I'm gonna go to the Happy Path through the Happy Path on, which is do you already have React native app? No. Will you need web support eventually? Yes. Use extract Dom. So like basically they're saying this is a great low level set of abstractions that will make it more feasible to reuse your code in more places. [42:30] -You know, like the benefit has always theoretically been that you could reuse much of the code between React native and web. But I've tried to do that a couple of times and the practical realities are challenging. Like, you know, just you need to use doing abstractions so that, that work in both places is really hard. [00:42:54] +You know, like the benefit has always theoretically been that you could reuse much of the code between React native and web. But I've tried to do that a couple of times and the practical realities are challenging. Like, you know, just you need to use doing abstractions so that, that work in both places is really hard. [42:54] -So this acknowledge React native sorry, react strict. Dom sort of acknowledges that and says, rather than trying to make a brand new abstraction on top of both React Native and react dom, we are going to lean more heavily on the web platform as an existing stable abstraction. Which is cool. I like it. [00:43:12] +So this acknowledge React native sorry, react strict. Dom sort of acknowledges that and says, rather than trying to make a brand new abstraction on top of both React Native and react dom, we are going to lean more heavily on the web platform as an existing stable abstraction. Which is cool. I like it. [43:12] -It seems cool. This is a really great blog post. Definitely recommend. [00:43:31] +It seems cool. This is a really great blog post. Definitely recommend. [43:31] ## [Faster JSON.stringify()](https://v8.dev/blog/json-stringify) -**Mark:** The V8 JavaScript engine developers put up a post where they said they've spent a lot of time trying to optimize js, ON stringy. Think about how many times your code stringys stuff, whether it's sending back an H TT P response or you know, serializing things into an extension. they go, they go into a bunch of technical detail about how they've tried to make this faster. [00:43:34] +**Mark:** The V8 JavaScript engine developers put up a post where they said they've spent a lot of time trying to optimize js, ON stringy. Think about how many times your code stringys stuff, whether it's sending back an H TT P response or you know, serializing things into an extension. they go, they go into a bunch of technical detail about how they've tried to make this faster. [43:34] -**Carl:** specifically that problem parsing Jason, Jason Parse performance is exact, like that was the reason for React native doing the new architecture, which they've spent like much of the last year communicating and executing on. So yeah, the massive problem for the entire ecosystem, [00:43:56] +**Carl:** specifically that problem parsing Jason, Jason Parse performance is exact, like that was the reason for React native doing the new architecture, which they've spent like much of the last year communicating and executing on. So yeah, the massive problem for the entire ecosystem, [43:56] -**Mark:** You know, like other than actually executing the JavaScript code faster, like string finding stuff has to be [00:44:14] +**Mark:** You know, like other than actually executing the JavaScript code faster, like string finding stuff has to be [44:14] -one of the most common things your JavaScript code does. So I believe this is supposed to be out in, I think it was like V eight like 13.8 I think it said which is available in Chrome 1 38. And I don't know what node version will contain that, that version of V eight. But faster is good. [00:44:19] +one of the most common things your JavaScript code does. So I believe this is supposed to be out in, I think it was like V eight like 13.8 I think it said which is available in Chrome 1 38. And I don't know what node version will contain that, that version of V eight. But faster is good. [44:19] -**Carl:** Yeah, faster is so good, especially for stringifying. Yeah, man. Just the number of plate serializing and des serializing is one of the largest costs, you know, performance costs like everywhere. So yeah, it'll love that. That's great. [00:44:42] +**Carl:** Yeah, faster is so good, especially for stringifying. Yeah, man. Just the number of plate serializing and des serializing is one of the largest costs, you know, performance costs like everywhere. So yeah, it'll love that. That's great. [44:42] ## [Node 22.18 unflags TS type-stripping support](https://nodejs.org/en/blog/release/v22.18.0) -**Carl:** Node 22 point 18 flags TypeScript type stripping support. [00:44:56] +**Carl:** Node 22 point 18 flags TypeScript type stripping support. [44:56] -node has had experimental support for. Interpreting TypeScript code and stripping out the types. doesn't actually check them or anything, but it allows you to take a project authored natively in TypeScript and run it with node without a compilation step, without building it through the TypeScript compiler. [00:45:02] +node has had experimental support for. Interpreting TypeScript code and stripping out the types. doesn't actually check them or anything, but it allows you to take a project authored natively in TypeScript and run it with node without a compilation step, without building it through the TypeScript compiler. [45:02] -**Mark:** Or, or using a tool like TS Node to execute it. [00:45:21] +**Mark:** Or, or using a tool like TS Node to execute it. [45:21] -**Carl:** Yes. Yeah. Right. More directly. This is a replacement for TS node. And that's great. It's no longer experimental. It's, they're now saying it works. it's officially blessed, it's released. Love that. Definitely the ecosystem has moved more from, you know, a long time ago it was very focused on you compile the code and then you take those built artifacts and you run them, and if the type checker fails, you don't get a built artifact and you know, the metagame here has shifted a little bit more into the. Type checking is one very valuable part of verifying your code statically, but it is not necessarily where the compilation step lives. So, many more projects in my experience have moved towards sort of a parallel model where you have a build step and there is type checking in the project, but it just kind of runs separately from that build step. [00:45:24] +**Carl:** Yes. Yeah. Right. More directly. This is a replacement for TS node. And that's great. It's no longer experimental. It's, they're now saying it works. it's officially blessed, it's released. Love that. Definitely the ecosystem has moved more from, you know, a long time ago it was very focused on you compile the code and then you take those built artifacts and you run them, and if the type checker fails, you don't get a built artifact and you know, the metagame here has shifted a little bit more into the. Type checking is one very valuable part of verifying your code statically, but it is not necessarily where the compilation step lives. So, many more projects in my experience have moved towards sort of a parallel model where you have a build step and there is type checking in the project, but it just kind of runs separately from that build step. [45:24] -So this is, this is a great tool enabling that kind of pattern. And it's released, it's done. Yay. [00:46:16] +So this is, this is a great tool enabling that kind of pattern. And it's released, it's done. Yay. [46:16] ## [Waku switches to Vite’s WIP RSC support](https://waku.gg/blog/migration-to-vite-plugin-rsc) -**Mark:** A couple RSC and project related updates. We've talked previously about how, vet itself has been missing some pieces in that would enable like full RSC support for vet based frameworks and that there has been a work in progress PR to try to add better RSC primitives into vet somehow. So the Waku RSE framework is now making use of vet's work in progress plugin rather than whatever layers they had built for themselves internally already. So it's good to see that that's coming together. [00:46:23] +**Mark:** A couple RSC and project related updates. We've talked previously about how, vet itself has been missing some pieces in that would enable like full RSC support for vet based frameworks and that there has been a work in progress PR to try to add better RSC primitives into vet somehow. So the Waku RSE framework is now making use of vet's work in progress plugin rather than whatever layers they had built for themselves internally already. So it's good to see that that's coming together. [46:23] ## [Rari, a fast React framework with RSC support built with Rust](https://ryanskinner.com/posts/how-i-built-a-full-stack-react-framework-4x-faster-than-nextjs-with-4x-more-throughput) -**Mark:** And then I saw an announcement for a new framework called rari, which is sort of an acronym for something, some, something faster rendering somehow. But it looks like a, it's supposed to be an RSC based framework that has a custom low level layer. Built with rust. And of course, as we all know, rust makes everything faster. But it sounds like someone looked at some benchmarks of, you know, like next RSC performance and said, I think I can do better myself. And has built their own full stack framework that has RSC support using a custom low level rust layer. [00:47:00] +**Mark:** And then I saw an announcement for a new framework called rari, which is sort of an acronym for something, some, something faster rendering somehow. But it looks like a, it's supposed to be an RSC based framework that has a custom low level layer. Built with rust. And of course, as we all know, rust makes everything faster. But it sounds like someone looked at some benchmarks of, you know, like next RSC performance and said, I think I can do better myself. And has built their own full stack framework that has RSC support using a custom low level rust layer. [47:00] -**Carl:** Neat. Cool. Yeah, they do claim four, four times faster component rendering under load four milliseconds versus 17 milliseconds. And that's cool. I don't know that if your problematic performance is 17 milliseconds, that's maybe not the worst problem to have. [00:47:37] +**Carl:** Neat. Cool. Yeah, they do claim four, four times faster component rendering under load four milliseconds versus 17 milliseconds. And that's cool. I don't know that if your problematic performance is 17 milliseconds, that's maybe not the worst problem to have. [47:37] ## [Selecting values from query results](https://tkdodo.eu/blog/react-query-selectors-supercharged), as well as [The Useless useCallback](https://tkdodo.eu/blog/the-useless-use-callback) -**Mark:** Then separate from all that the always wonderful Dominic Dome TK Dodo has put up a couple great blog posts. One is the latest in the series of posts on how to use React Query correctly in this case, how to use the ability to select values out of a query. So maybe like you have a, a list items query and you only want to grab one of 'em. And then you also put up a post talking about how a lot of time you don't actually need the used callback hook. There's a lot of cases that used callback is actually kinda useless. So excellent reading as always. [00:47:52] +**Mark:** Then separate from all that the always wonderful Dominic Dome TK Dodo has put up a couple great blog posts. One is the latest in the series of posts on how to use React Query correctly in this case, how to use the ability to select values out of a query. So maybe like you have a, a list items query and you only want to grab one of 'em. And then you also put up a post talking about how a lot of time you don't actually need the used callback hook. There's a lot of cases that used callback is actually kinda useless. So excellent reading as always. [47:52] ## [TS\+ postmortem (Effect-TS experimental TS fork)](https://effect.website/blog/ts-plus-postmortem/) -**Carl:** Can you tell I've been using effect and it's just been living in my brain for a lot of the time. I, as part of reading it, I found this blog post that they wrote pretty recently beginning of July. Where they had done, they had actually forked the TypeScript compiler wholesale and tried to do what they called TypeScript plus TS plus. [00:48:26] +**Carl:** Can you tell I've been using effect and it's just been living in my brain for a lot of the time. I, as part of reading it, I found this blog post that they wrote pretty recently beginning of July. Where they had done, they had actually forked the TypeScript compiler wholesale and tried to do what they called TypeScript plus TS plus. [48:26] -And I guess part of the idea, as you, as I've been using effect, I can feel very strongly the desire for JavaScript to support a couple of different tools that I, I I, I had remembered seeing as proposals many, many years ago and waited many, many years for them to land mo specifically the pipeline operator for composing functional, you know, programs together and pattern matching, which resembles a switch case, but lets you match on like properties and attributes and, you know, things like that in a different way, in a more flexible way. So. They tried to fork the compiler to make errors a little bit better. Basically, like they're really pushing the bounds of everything you can do in TypeScript and JavaScript. [00:48:45] +And I guess part of the idea, as you, as I've been using effect, I can feel very strongly the desire for JavaScript to support a couple of different tools that I, I I, I had remembered seeing as proposals many, many years ago and waited many, many years for them to land mo specifically the pipeline operator for composing functional, you know, programs together and pattern matching, which resembles a switch case, but lets you match on like properties and attributes and, you know, things like that in a different way, in a more flexible way. So. They tried to fork the compiler to make errors a little bit better. Basically, like they're really pushing the bounds of everything you can do in TypeScript and JavaScript. [48:45] -So the, as part of that, they explored fully forking, TypeScript and this, so this is a great postmortem of their design goals and what they were trying to achieve and why they have backed off of that. Yeah, how far we went and what went wrong, what we learned it's pretty good. Definitely very interesting like this. [00:49:35] +So the, as part of that, they explored fully forking, TypeScript and this, so this is a great postmortem of their design goals and what they were trying to achieve and why they have backed off of that. Yeah, how far we went and what went wrong, what we learned it's pretty good. Definitely very interesting like this. [49:35] -Just reading more about effect, I can just like, it just the amount of the number of different places where they're pushing the envelope and like iterating on the state of the art in web on the backend is just really palpable to me. So, definitely an interesting read here. [00:49:55] +Just reading more about effect, I can just like, it just the amount of the number of different places where they're pushing the envelope and like iterating on the state of the art in web on the backend is just really palpable to me. So, definitely an interesting read here. [49:55] -**Mark:** I, I, I thought it was a good blog post. Honestly, I also partly appreciate it just because they said we spent like an entire year trying to build this thing and it didn't pan out. Here's what we tried and what we learned and what went wrong in the process. I, I, appreciate good art, good write-ups, like that. [00:50:12] +**Mark:** I, I, I thought it was a good blog post. Honestly, I also partly appreciate it just because they said we spent like an entire year trying to build this thing and it didn't pan out. Here's what we tried and what we learned and what went wrong in the process. I, I, appreciate good art, good write-ups, like that. [50:12] -**Carl:** Yeah, right. I feel like this is good to read as an engineer because it's just a really good postmortem where you can really understand their thought process of why they tried to do this, what benefits they were hoping to get, and what challenges they ran into that made them say, okay, this is not achievable. [00:50:29] +**Carl:** Yeah, right. I feel like this is good to read as an engineer because it's just a really good postmortem where you can really understand their thought process of why they tried to do this, what benefits they were hoping to get, and what challenges they ran into that made them say, okay, this is not achievable. [50:29] -Just really good, really good read. [00:50:46] +Just really good, really good read. [50:46] ## [React useTransition update ordering details](https://jordaneldredge.com/notes/react-rebasing/) -**Mark:** I saw a good short post from Jordan Eldridge, who I believe created the web amp recreation of Winamp. Where gave some, gave some thoughts on what happens when you do a React used transition and you apply some other state updates while the transition is going on. Short but useful, especially since transitions are a newer part of the react rendering model. [00:50:48] +**Mark:** I saw a good short post from Jordan Eldridge, who I believe created the web amp recreation of Winamp. Where gave some, gave some thoughts on what happens when you do a React used transition and you apply some other state updates while the transition is going on. Short but useful, especially since transitions are a newer part of the react rendering model. [50:48] ## [“A Clock that Doesn’t Snap”](https://ethanniser.dev/blog/a-clock-that-doesnt-snap/), Techniques for fixing hydration of values like dates -**Mark:** And then I also saw a post called A Clock That Doesn't Snap, which talks about some of the dealing with inconsistency problems between server rented values like dates, and then what happens when you try to actually hydrate that on the client. And a couple different techniques for trying to make it not be inconsistent. [00:51:13] +**Mark:** And then I also saw a post called A Clock That Doesn't Snap, which talks about some of the dealing with inconsistency problems between server rented values like dates, and then what happens when you try to actually hydrate that on the client. And a couple different techniques for trying to make it not be inconsistent. [51:13] -**Carl:** Interesting. [00:51:35] +**Carl:** Interesting. [51:35] ## [React Cache: It’s about consistency](https://twofoldframework.com/blog/react-cache-its-about-consistency) -**Mark:** There was an article on React Cache. It's about consistency, so React added the cache, API for use on the server, and it's, it's a sort of memo function. The idea is that you can get, like if you need to make one fetch call in multiple places while doing server side rendering, you can try to ensure that it only happens once during that particular render pass on the server. And so the post goes into some detail on what the cache method is, why you want, would want to use it, and how it, you know, actually using that cashed value during the render can produce more consistent results during the render process. And then goes into a little bit more about like some of the conceptual behavior of React components and what is pure versus impure anyway. [00:51:36] +**Mark:** There was an article on React Cache. It's about consistency, so React added the cache, API for use on the server, and it's, it's a sort of memo function. The idea is that you can get, like if you need to make one fetch call in multiple places while doing server side rendering, you can try to ensure that it only happens once during that particular render pass on the server. And so the post goes into some detail on what the cache method is, why you want, would want to use it, and how it, you know, actually using that cashed value during the render can produce more consistent results during the render process. And then goes into a little bit more about like some of the conceptual behavior of React components and what is pure versus impure anyway. [51:36] ## [Self-hosting Next at scale](https://dlhck.com/thoughts/the-complete-guide-to-self-hosting-nextjs-at-scale) -**Mark:** saw an article that gave some battle hardened details on the complete guide to self-hosting Next JS at scale. So next is commonly used with Vercel. You can deploy it yourself, but you sometimes have to fill in some of the missing hosting pieces. And so this was a good post that gave and that talked about, you know, what are, what happens when you try to use Next Cache? [00:52:26] +**Mark:** saw an article that gave some battle hardened details on the complete guide to self-hosting Next JS at scale. So next is commonly used with Vercel. You can deploy it yourself, but you sometimes have to fill in some of the missing hosting pieces. And so this was a good post that gave and that talked about, you know, what are, what happens when you try to use Next Cache? [52:26] -And it by default cache is values locally. But if you've got multiple copies of the server rendering, now you can have inconsistencies between different instances. So how would you break that out into using a Redis server or something? Instead, how can you handle image optimization and CDN configuration? So if you're trying to do any self host, you know, next, this looks like a very useful guide. [00:52:53] +And it by default cache is values locally. But if you've got multiple copies of the server rendering, now you can have inconsistencies between different instances. So how would you break that out into using a Redis server or something? Instead, how can you handle image optimization and CDN configuration? So if you're trying to do any self host, you know, next, this looks like a very useful guide. [52:53] -**Carl:** Love that. Such a good, deep technical writeup of, I mean, right. Self-hosting next is such a big problem that people discuss regularly that I, I just love seeing, you know, a proper writeup about it. [00:53:14] +**Carl:** Love that. Such a good, deep technical writeup of, I mean, right. Self-hosting next is such a big problem that people discuss regularly that I, I just love seeing, you know, a proper writeup about it. [53:14] ## [Server and Client Component Composition in Practice](https://aurorascharff.no/posts/server-client-component-composition-in-practice/) -**Mark:** Then finally we have a post from Aurora Scharf who spent a lot of time researching and writing about server components and various usage patterns, and she has an excellent post on server and client component composition in practice, which gives some examples of how you can intermingle server and client components to do some of the work on the server, some of the work on the client figure, and figure out where the boundaries ought to be. [00:53:26] +**Mark:** Then finally we have a post from Aurora Scharf who spent a lot of time researching and writing about server components and various usage patterns, and she has an excellent post on server and client component composition in practice, which gives some examples of how you can intermingle server and client components to do some of the work on the server, some of the work on the client figure, and figure out where the boundaries ought to be. [53:26] -**Carl:** Yeah. figuring out where the boundaries are should lie in things that's uh, very challenging. [00:53:53] +**Carl:** Yeah. figuring out where the boundaries are should lie in things that's uh, very challenging. [53:53] -**Mark:** And I think that's actually all we've got for this month, which is good 'cause we're right about at at time. [00:53:59] +**Mark:** And I think that's actually all we've got for this month, which is good 'cause we're right about at at time. [53:59] ## Conferences ([React](https://react.dev/community/conferences), [Javascript](https://confs.tech/javascript)) -**Carl:** Cool. Let's wrap up here with some conferences. [00:54:04] +**Carl:** Cool. Let's wrap up here with some conferences. [54:04] ## [React Universe Conf](https://www.reactuniverseconf.com/) Sept 2-4, 2025\\. Wrocław, Poland -**Carl:** We got React, Universe coming up in just about a week in September 2nd through fourth in Wroclaw, Poland. [00:54:06] +**Carl:** We got React, Universe coming up in just about a week in September 2nd through fourth in Wroclaw, Poland. [54:06] ## [WaysConf](https://www.waysconf.com/) Sept 16-17 -**Carl:** There's also Ways Conf September 16th and 17th. Krakow Great. Also in Poland. So yeah, Poland heavy uh, September. [00:54:14] +**Carl:** There's also Ways Conf September 16th and 17th. Krakow Great. Also in Poland. So yeah, Poland heavy uh, September. [54:14] ## [CascadiaJS](https://cascadiajs.com/2025) Sept 18-19 Seattle, WA, USA -**Carl:** Then right after that, Cascadia Js, September 18th and 19th in Seattle. [00:54:21] +**Carl:** Then right after that, Cascadia Js, September 18th and 19th in Seattle. [54:21] ## [CascadiaJS](https://cascadiajs.com/2025) Sept 18-19 Seattle, WA, USA -**Carl:** Coincident with Squiggle Con September 18th in Boston, which I will be at [00:54:26] +**Carl:** Coincident with Squiggle Con September 18th in Boston, which I will be at [54:26] ## [React Alicante](https://reactalicante.es/) Oct 2-4 -**Carl:** Then in October we've got React Alicante, October 2nd through fourth in Spain. [00:54:32] +**Carl:** Then in October we've got React Alicante, October 2nd through fourth in Spain. [54:32] -**Mark:** I will be speaking at that one. [00:54:37] +**Mark:** I will be speaking at that one. [54:37] -I was not going to be there originally, but I will be flying back from Spain and showing up at React Conf in Las Vegas. That's gonna be a trip. [00:54:39] +I was not going to be there originally, but I will be flying back from Spain and showing up at React Conf in Las Vegas. That's gonna be a trip. [54:39] -**Carl:** Yeah. Oh, wild. Yeah. [00:54:49] +**Carl:** Yeah. Oh, wild. Yeah. [54:49] ## [React Conf is back, Oct 7-8](https://bsky.app/profile/react.dev/post/3lmcp4mhmfk2l) Las Vegas, NV, USA -**Carl:** 'cause we've got, you know, react conf in Las Vegas right. Then October 7th and eighth, [00:54:51] +**Carl:** 'cause we've got, you know, react conf in Las Vegas right. Then October 7th and eighth, [54:51] ## [Remix Jam](https://remix.run/jam/2025), Oct 10, Toronto ON, CA -**Carl:** then, like we mentioned earlier, we've got Remix Jam October 10th in Toronto. So if you really, like, you could fly out to Vegas and then fly across the, well, I was gonna say across the country, but it's a different country. You can fly across the continent to Toronto. [00:54:56] +**Carl:** then, like we mentioned earlier, we've got Remix Jam October 10th in Toronto. So if you really, like, you could fly out to Vegas and then fly across the, well, I was gonna say across the country, but it's a different country. You can fly across the continent to Toronto. [54:56] ## Outro -**Carl:** Cool. That's all we got for you today. Thanks so much for joining us. We will be back on the last Wednesday of the month here in the live stage or back in your podcast feed just as soon as we can after that. [00:55:10] +**Carl:** Cool. That's all we got for you today. Thanks so much for joining us. We will be back on the last Wednesday of the month here in the live stage or back in your podcast feed just as soon as we can after that. [55:10] -**Mark:** Thank you all for listening. Hopefully the list of links has been useful and informative. If you are going to be at either Squiggle Con, react Delicate, react Ante, or React conf please say hi. I will be running around possibly wearing my Simpsons picture as a name tag. [00:55:19] +**Mark:** Thank you all for listening. Hopefully the list of links has been useful and informative. If you are going to be at either Squiggle Con, react Delicate, react Ante, or React conf please say hi. I will be running around possibly wearing my Simpsons picture as a name tag. [55:19] -**Carl:** great. Love that. Yeah, same. Likewise. If you see me in Boston or in Las Vegas say, Hey, We gather sources from this week in React Bites, dev the React JS subreddit, and here in Reactive Flux from the uh, tech News and Reads channel. If you see anything that you think we should discuss definitely send it over to us at hello@reactiveflux.com. [00:55:37] +**Carl:** great. Love that. Yeah, same. Likewise. If you see me in Boston or in Las Vegas say, Hey, We gather sources from this week in React Bites, dev the React JS subreddit, and here in Reactive Flux from the uh, tech News and Reads channel. If you see anything that you think we should discuss definitely send it over to us at hello@reactiveflux.com. [55:37] -if this is a show you get value from and wanna support, best way you can do so is by submitting a review on wherever you listen and tell your friends and coworkers about it. Thanks so much. you next month. [00:55:56] +if this is a show you get value from and wanna support, best way you can do so is by submitting a review on wherever you listen and tell your friends and coworkers about it. Thanks so much. you next month. [55:56] -**Mark:** Take care. [00:56:04] +**Mark:** Take care. [56:04] diff --git a/src/transcripts/tmir-2025-10.md b/src/transcripts/tmir-2025-10.md index 7c0c8c6..5773f74 100644 --- a/src/transcripts/tmir-2025-10.md +++ b/src/transcripts/tmir-2025-10.md @@ -19,40 +19,40 @@ html li p { -- [[00:00:00](#intro)] Intro -- [[00:00:46](#new-releases)] New releases - - [[00:00:49](#immer-102)] [Immer 10.2](https://github.com/immerjs/immer/releases/tag/v10.2.0) - - [[00:01:55](#arktype-arkregex-typed-regex)] [ArkType ArkRegex](https://arktype.io/docs/blog/arkregex) (typed regex) -- [[00:02:41](#main-content)] Main Content - - [[00:02:45](#react-conf)] React Conf - - [[00:02:50](#official-reactconf-2025-recap)] [Official ReactConf 2025 Recap](https://react.dev/blog/2025/10/16/react-conf-2025-recap) - - [[00:02:57](#introducing-the-react-foundation-also-from-linux-foundation-meta-engineering-and-seth-webster)] [Introducing the React Foundation](https://react.dev/blog/2025/10/07/introducing-the-react-foundation) (also from [Linux Foundation](https://www.linuxfoundation.org/press/linux-foundation-announces-intent-to-launch-the-react-foundation), [Meta engineering](https://engineering.fb.com/2025/10/07/open-source/introducing-the-react-foundation-the-new-home-for-react-react-native/), and [Seth Webster](https://thenewstack.io/react-foundation-leader-on-whats-next-for-the-framework/)) - - [[00:17:03](#192-activity-useeffectevent)] 19.2 (Activity, useEffectEvent) - - [[00:17:27](#react-native-news)] React Native news - - [[00:17:32](#new-architecture-only-from-v082)] [New architecture only from v0.82](https://reactnative.dev/blog/2025/10/08/react-native-0.82#new-architecture-only) - - [[00:18:52](#vega-os-announcement)] [Vega OS announcement](https://developer.amazon.com/apps-and-games/blogs/2025/09/announcing-vega-os) - - [[00:19:04](#vega-introduction-at-react-conf)] [Vega introduction at React Conf](https://www.youtube.com/watch?v=p9OcztRyDl0&t=5737s) - - [[00:22:36](#joe-savonas-exploring-react-performance-talk)] Joe Savona’s “[Exploring React Performance](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=20274s)” talk - - [[00:23:26](#rickys-async-react-part-i-and-part-ii-repo)] Ricky’s “[Async React Part I](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=10907s)” and “[Part II](https://www.youtube.com/watch?v=p9OcztRyDl0&t=29073s)” ([repo](https://github.com/rickhanlonii/async-react)) - - [[00:27:12](#async-react-working-group)] [Async React Working Group](https://github.com/reactwg/async-react) - - [[00:27:35](#first-discussion-of-more-docs-ideas)] First [discussion of more docs ideas](https://github.com/reactwg/async-react/discussions/2) - - [[00:28:27](#remix-v3-announcement)] Remix v3 announcement - - [[00:29:03](#announcement-demo-timestamped-breakdown)] [Announcement demo timestamped breakdown](https://github.com/markdalgleish/remix3-resources) - - [[00:31:28](#updates-syntax-can-be-customized)] [Updates syntax can be customized?](https://x.com/sergiodxa/status/1976878377509568871) - - [[00:34:44](#i-built-the-same-app-10-times-code)] [I built the same app 10 times](https://www.lorenstew.art/blog/10-kanban-boards) ([code](https://github.com/lorenseanstewart/kanban-comparison)) - - [[00:37:57](#same-author-as-react-won-by-default-and-its-killing-innovation)] Same author as [React Won by Default and It’s Killing Innovation](https://www.lorenstew.art/blog/react-won-by-default/) - - [[00:43:33](#solito-5)] [Solito 5](https://solito.dev/v5) - - [[00:46:49](#next-16-and-directives-debate)] Next 16 and Directives debate - - [[00:46:56](#next-16-released)] [Next 16 released](https://nextjs.org/blog/next-16) - - [[00:49:41](#directives-and-the-platform-boundary)] [Directives and the Platform Boundary](https://tanstack.com/blog/directives-and-the-platform-boundary) - - [[00:50:34](#technical-critique-of-next-app-router-everyone-hates-nextjs)] Technical critique of Next App Router: [Everyone Hates Next.js](https://paperclover.net/blog/webdev/everyone-hates-nextjs) -- [[00:54:56](#-lightning-round-)] ⚡ Lightning round ⚡ - - [[00:54:58](#viteconf-roundup)] [ViteConf roundup](https://voidzero.dev/posts/whats-new-viteconf-2025) - - [[00:55:49](#aws-outage-postmortem)] [AWS Outage Postmortem](https://aws.amazon.com/message/101925/) - - [[00:57:10](#voltra)] [Voltra](https://x.com/saul_sharma/status/1972161677165473980) - - [[00:58:10](#building-fully-native-apps-with-eas)] [Building fully native apps with EAS](https://blog.swmansion.com/building-fully-native-ios-apps-with-expo-eas-760b5480d7c5) - - [[00:58:52](#react-native-imgui)] [React Native \\\<\\\> Imgui](https://x.com/tmikov/status/1979771014340047088) - - [[00:59:53](#lodash-maintenance-foundation)] [Lodash maintenance foundation](https://blog.ulisesgascon.com/the-future-of-lodash) +- [[00:00](#intro)] Intro +- [[00:46](#new-releases)] New releases + - [[00:49](#immer-102)] [Immer 10.2](https://github.com/immerjs/immer/releases/tag/v10.2.0) + - [[01:55](#arktype-arkregex-typed-regex)] [ArkType ArkRegex](https://arktype.io/docs/blog/arkregex) (typed regex) +- [[02:41](#main-content)] Main Content + - [[02:45](#react-conf)] React Conf + - [[02:50](#official-reactconf-2025-recap)] [Official ReactConf 2025 Recap](https://react.dev/blog/2025/10/16/react-conf-2025-recap) + - [[02:57](#introducing-the-react-foundation-also-from-linux-foundation-meta-engineering-and-seth-webster)] [Introducing the React Foundation](https://react.dev/blog/2025/10/07/introducing-the-react-foundation) (also from [Linux Foundation](https://www.linuxfoundation.org/press/linux-foundation-announces-intent-to-launch-the-react-foundation), [Meta engineering](https://engineering.fb.com/2025/10/07/open-source/introducing-the-react-foundation-the-new-home-for-react-react-native/), and [Seth Webster](https://thenewstack.io/react-foundation-leader-on-whats-next-for-the-framework/)) + - [[17:03](#192-activity-useeffectevent)] 19.2 (Activity, useEffectEvent) + - [[17:27](#react-native-news)] React Native news + - [[17:32](#new-architecture-only-from-v082)] [New architecture only from v0.82](https://reactnative.dev/blog/2025/10/08/react-native-0.82#new-architecture-only) + - [[18:52](#vega-os-announcement)] [Vega OS announcement](https://developer.amazon.com/apps-and-games/blogs/2025/09/announcing-vega-os) + - [[19:04](#vega-introduction-at-react-conf)] [Vega introduction at React Conf](https://www.youtube.com/watch?v=p9OcztRyDl0&t=5737s) + - [[22:36](#joe-savonas-exploring-react-performance-talk)] Joe Savona’s “[Exploring React Performance](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=20274s)” talk + - [[23:26](#rickys-async-react-part-i-and-part-ii-repo)] Ricky’s “[Async React Part I](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=10907s)” and “[Part II](https://www.youtube.com/watch?v=p9OcztRyDl0&t=29073s)” ([repo](https://github.com/rickhanlonii/async-react)) + - [[27:12](#async-react-working-group)] [Async React Working Group](https://github.com/reactwg/async-react) + - [[27:35](#first-discussion-of-more-docs-ideas)] First [discussion of more docs ideas](https://github.com/reactwg/async-react/discussions/2) + - [[28:27](#remix-v3-announcement)] Remix v3 announcement + - [[29:03](#announcement-demo-timestamped-breakdown)] [Announcement demo timestamped breakdown](https://github.com/markdalgleish/remix3-resources) + - [[31:28](#updates-syntax-can-be-customized)] [Updates syntax can be customized?](https://x.com/sergiodxa/status/1976878377509568871) + - [[34:44](#i-built-the-same-app-10-times-code)] [I built the same app 10 times](https://www.lorenstew.art/blog/10-kanban-boards) ([code](https://github.com/lorenseanstewart/kanban-comparison)) + - [[37:57](#same-author-as-react-won-by-default-and-its-killing-innovation)] Same author as [React Won by Default and It’s Killing Innovation](https://www.lorenstew.art/blog/react-won-by-default/) + - [[43:33](#solito-5)] [Solito 5](https://solito.dev/v5) + - [[46:49](#next-16-and-directives-debate)] Next 16 and Directives debate + - [[46:56](#next-16-released)] [Next 16 released](https://nextjs.org/blog/next-16) + - [[49:41](#directives-and-the-platform-boundary)] [Directives and the Platform Boundary](https://tanstack.com/blog/directives-and-the-platform-boundary) + - [[50:34](#technical-critique-of-next-app-router-everyone-hates-nextjs)] Technical critique of Next App Router: [Everyone Hates Next.js](https://paperclover.net/blog/webdev/everyone-hates-nextjs) +- [[54:56](#-lightning-round-)] ⚡ Lightning round ⚡ + - [[54:58](#viteconf-roundup)] [ViteConf roundup](https://voidzero.dev/posts/whats-new-viteconf-2025) + - [[55:49](#aws-outage-postmortem)] [AWS Outage Postmortem](https://aws.amazon.com/message/101925/) + - [[57:10](#voltra)] [Voltra](https://x.com/saul_sharma/status/1972161677165473980) + - [[58:10](#building-fully-native-apps-with-eas)] [Building fully native apps with EAS](https://blog.swmansion.com/building-fully-native-ios-apps-with-expo-eas-760b5480d7c5) + - [[58:52](#react-native-imgui)] [React Native \\\<\\\> Imgui](https://x.com/tmikov/status/1979771014340047088) + - [[59:53](#lodash-maintenance-foundation)] [Lodash maintenance foundation](https://blog.ulisesgascon.com/the-future-of-lodash) - [[01:00:45](#build-your-own-key-value-database)] [Build Your Own Key-Value Database](https://www.nan.fyi/database) - [[01:02:24](#jared-palmer-asking-for-gh-pr-suggestions-and-giving-some-technical-details)] [Jared Palmer asking for GH PR suggestions](https://x.com/jaredpalmer/status/1979204222420664405) and giving [some technical details](https://x.com/jaredpalmer/status/1980619222918262842) - [[01:03:54](#node-25-with-jsonstringify-improvements)] [Node 25 with JSON.stringify improvements](https://nodejs.org/en/blog/release/v25.0.0) @@ -72,529 +72,529 @@ html li p { ## Intro -**Carl:** Hello everyone. Thank you for joining us for the October edition of This Month in React. As we recap what's going on with React, React native in the web, we're coming to you live from React Flux, the place for professional developers using React. [00:00:00] +**Carl:** Hello everyone. Thank you for joining us for the October edition of This Month in React. As we recap what's going on with React, React native in the web, we're coming to you live from React Flux, the place for professional developers using React. [00:00] -I'm Carl. I'm a staff staff product developer and freelance community leader here at React Flux, where I run community programs like these events and build tools to help keep the community operating. [00:00:12] +I'm Carl. I'm a staff staff product developer and freelance community leader here at React Flux, where I run community programs like these events and build tools to help keep the community operating. [00:12] -**Mark:** Hi, I'm Mark. My day job is at Replay.io and in my copious amounts of spare time, I maintain Redux and rewrite Immer. [00:00:23] +**Mark:** Hi, I'm Mark. My day job is at Replay.io and in my copious amounts of spare time, I maintain Redux and rewrite Immer. [00:23] -**Mo:** I am Mo, I head the mobile team at Theo. I'm an active part of the React native ecosystem and community, and I organize the React Native London Meetups and conference, which is coming up in two weeks. [00:00:30] +**Mo:** I am Mo, I head the mobile team at Theo. I'm an active part of the React native ecosystem and community, and I organize the React Native London Meetups and conference, which is coming up in two weeks. [00:30] -Terrifyingly so. [00:00:42] +Terrifyingly so. [00:42] -**Carl:** Coming right up. Yeah. And you got a shout out that we're gonna talk about. [00:00:43] +**Carl:** Coming right up. Yeah. And you got a shout out that we're gonna talk about. [00:43] ## New releases -**Carl:** Let's start with some new releases. Mark, tell us about Immer. [00:00:46] +**Carl:** Let's start with some new releases. Mark, tell us about Immer. [00:46] ## [Immer 10.2](https://github.com/immerjs/immer/releases/tag/v10.2.0) -**Mark:** Okay, I can, I can do both these things. So I actually take very full credit for this one. So to be clear, I do not maintain the Immer immutable update library that is Michelle West Rate, who created it and has maintained it all the easier years. [00:00:49] +**Mark:** Okay, I can, I can do both these things. So I actually take very full credit for this one. So to be clear, I do not maintain the Immer immutable update library that is Michelle West Rate, who created it and has maintained it all the easier years. [00:49] -However, since the start of September, I have sunk a stupid amount of time, something like 120 plus hours into trying to rewrite the internals of Immer for faster performance after some re users filed complaints to the Redux repos, that it was kind of slow. So I filed a few different prs, one to make some relatively small tweaks, and then a couple larger architectural changes. [00:01:01] +However, since the start of September, I have sunk a stupid amount of time, something like 120 plus hours into trying to rewrite the internals of Immer for faster performance after some re users filed complaints to the Redux repos, that it was kind of slow. So I filed a few different prs, one to make some relatively small tweaks, and then a couple larger architectural changes. [01:01] -And Michelle just merged and released Immer 10.2 with the small options. And we are hoping to land the larger architectural changes in the near future. And those will probably come out as Immer version 11, hopefully in the next few weeks or something. So I'm excited faster for performance free upgrades. [00:01:26] +And Michelle just merged and released Immer 10.2 with the small options. And we are hoping to land the larger architectural changes in the near future. And those will probably come out as Immer version 11, hopefully in the next few weeks or something. So I'm excited faster for performance free upgrades. [01:26] -Yeah, should be. [00:01:45] +Yeah, should be. [01:45] -**Carl:** Yeah, love some big core performance improvements of deep packages. That's awesome. [00:01:46] +**Carl:** Yeah, love some big core performance improvements of deep packages. That's awesome. [01:46] -**Mark:** And I will also hopefully turn this into a conference talk. Nice. [00:01:51] +**Mark:** And I will also hopefully turn this into a conference talk. Nice. [01:51] ## [ArkType ArkRegex](https://arktype.io/docs/blog/arkregex) (typed regex) -**Mark:** Along with that, I, I just saw the announcement, I think like yesterday, that the author of the ARC type validation Library, which is a, a competitor to Zod that takes a, a rather different API approach, just released a, a similar tool called ARC RegX. [00:01:55] +**Mark:** Along with that, I, I just saw the announcement, I think like yesterday, that the author of the ARC type validation Library, which is a, a competitor to Zod that takes a, a rather different API approach, just released a, a similar tool called ARC RegX. [01:55] -It's a function that is supposed to be a replacement for defining regular expressions in JavaScript, but it actually parses the RegX string into TypeScript types so that it can both. Interpret at the type level, what the regular expression is doing, and also even provide syntax errors if the reg itself is invalid. [00:02:12] +It's a function that is supposed to be a replacement for defining regular expressions in JavaScript, but it actually parses the RegX string into TypeScript types so that it can both. Interpret at the type level, what the regular expression is doing, and also even provide syntax errors if the reg itself is invalid. [02:12] -Just looking at the docs, my mind is blown. [00:02:38] +Just looking at the docs, my mind is blown. [02:38] ## Main Content -**Carl:** Well, yeah, other than new releases, we have a bunch of main content this month. [00:02:41] +**Carl:** Well, yeah, other than new releases, we have a bunch of main content this month. [02:41] ## React Conf -**Carl:** The React conf happened, what, three weeks ago, and a bunch of new stuff came out of there. [00:02:45] +**Carl:** The React conf happened, what, three weeks ago, and a bunch of new stuff came out of there. [02:45] ## [Official ReactConf 2025 Recap](https://react.dev/blog/2025/10/16/react-conf-2025-recap) -**Carl:** They did put up an official recap blog post from it on the 16th, about a week after the event happened. [00:02:50] +**Carl:** They did put up an official recap blog post from it on the 16th, about a week after the event happened. [02:50] ## [Introducing the React Foundation](https://react.dev/blog/2025/10/07/introducing-the-react-foundation) (also from [Linux Foundation](https://www.linuxfoundation.org/press/linux-foundation-announces-intent-to-launch-the-react-foundation), [Meta engineering](https://engineering.fb.com/2025/10/07/open-source/introducing-the-react-foundation-the-new-home-for-react-react-native/), and [Seth Webster](https://thenewstack.io/react-foundation-leader-on-whats-next-for-the-framework/)) -**Carl:** The big takeaway here, I think, well, I don't know, we got a couple of big takeaways, but one of the headlines is definitely the React Foundation. This is a pretty big change to, or this sounds like it will be a moderately large change to the governance of React. They're pretty light on details of the actual governance, so far. They have talked about like a new technical steering committee. But they also say that the governance of that is not finalized. The members are not finalized, but they do have the founding members of the founding sponsors basically of this foundation, which are Amazon Call Stack, Expo, Meta, Microsoft Software Mansion, and Vercel with Seth Webster. [00:02:57] +**Carl:** The big takeaway here, I think, well, I don't know, we got a couple of big takeaways, but one of the headlines is definitely the React Foundation. This is a pretty big change to, or this sounds like it will be a moderately large change to the governance of React. They're pretty light on details of the actual governance, so far. They have talked about like a new technical steering committee. But they also say that the governance of that is not finalized. The members are not finalized, but they do have the founding members of the founding sponsors basically of this foundation, which are Amazon Call Stack, Expo, Meta, Microsoft Software Mansion, and Vercel with Seth Webster. [02:57] -Seth Webster is executive director and he's the what manager of the React core team, [00:03:39] +Seth Webster is executive director and he's the what manager of the React core team, [03:39] -**Mark:** Basically. Yes. [00:03:44] +**Mark:** Basically. Yes. [03:44] -**Carl:** Yeah, so that makes sense. He is basically already doing that role and expanding what the core team means to an intercompany organization. But yeah, it's a lot of the details that I was most curious about, like what does, what does this mean for governance? Like how will decisions be made are not yet answered right now from the, from the various posts on this. A quote is, the React team is actively working on this new technical governance structure, and we'll share more details in a future post. So this is an announcement of a future announcement in some ways, but it's pretty real. [00:03:46] +**Carl:** Yeah, so that makes sense. He is basically already doing that role and expanding what the core team means to an intercompany organization. But yeah, it's a lot of the details that I was most curious about, like what does, what does this mean for governance? Like how will decisions be made are not yet answered right now from the, from the various posts on this. A quote is, the React team is actively working on this new technical governance structure, and we'll share more details in a future post. So this is an announcement of a future announcement in some ways, but it's pretty real. [03:46] -So this is in collaboration with the Open JS Foundation, which is a partner to the Linux Foundation. So like th these are very large, pretty well-founded organizations that the React team is glomming onto in support of like a neutral home for React, as they call it. [00:04:19] +So this is in collaboration with the Open JS Foundation, which is a partner to the Linux Foundation. So like th these are very large, pretty well-founded organizations that the React team is glomming onto in support of like a neutral home for React, as they call it. [04:19] -It's sounds like they're in incorporating React Native into this as well, which I think is not necessarily a given. You know, if you're talking about the governance of React, what that means for React Native is not necessarily implied. But just looking at the founding members like Amazon, Call Stack, Software Mansion, and Expo, and I guess Microsoft too, like those are all heavy React native investors. [00:04:38] +It's sounds like they're in incorporating React Native into this as well, which I think is not necessarily a given. You know, if you're talking about the governance of React, what that means for React Native is not necessarily implied. But just looking at the founding members like Amazon, Call Stack, Software Mansion, and Expo, and I guess Microsoft too, like those are all heavy React native investors. [04:38] -**Mo:** I think it's quite surprising in that sense because it's more heavy on the React native side. Like Vercel is really the key sort of non-react native player. The rest are really heavy on React Native and there's like noticeably missing membership from like Shopify on the Remix side as an example. I, I actually find it's very skewed towards React Native, almost shockingly. [00:05:01] +**Mo:** I think it's quite surprising in that sense because it's more heavy on the React native side. Like Vercel is really the key sort of non-react native player. The rest are really heavy on React Native and there's like noticeably missing membership from like Shopify on the Remix side as an example. I, I actually find it's very skewed towards React Native, almost shockingly. [05:01] -**Carl:** Yeah, I'd agree with that. It's, it is almost shockingly skewed towards React. React Native, given that it was not really pitched as the React Native foundation. That's true. I guess Software Mansion does do a fair amount of web React work. But I, I believe Call Stack is predominantly a React native shop as well. [00:05:24] +**Carl:** Yeah, I'd agree with that. It's, it is almost shockingly skewed towards React. React Native, given that it was not really pitched as the React Native foundation. That's true. I guess Software Mansion does do a fair amount of web React work. But I, I believe Call Stack is predominantly a React native shop as well. [05:24] -**Mark:** So I'll do my usual thing where I, I step back and provide historical context and what matter at all. So React was invented at Facebook. It has always been a project owned by Facebook and Meta. The code has been open source, but. You know, for years the entire development team was Facebook meta employees paid by Meta to work on React. And I've said even in my conference talks this year about Meta, Vercel, React ownership, that the React team has had the freedom to work on what they want. And that's true, but I've, I was reminded in some conversations with React team members at React Con, how much their work is constrained by, like the fact that their performance reviews are, "what have you done to further meta's goals this year?" [00:05:42] +**Mark:** So I'll do my usual thing where I, I step back and provide historical context and what matter at all. So React was invented at Facebook. It has always been a project owned by Facebook and Meta. The code has been open source, but. You know, for years the entire development team was Facebook meta employees paid by Meta to work on React. And I've said even in my conference talks this year about Meta, Vercel, React ownership, that the React team has had the freedom to work on what they want. And that's true, but I've, I was reminded in some conversations with React team members at React Con, how much their work is constrained by, like the fact that their performance reviews are, "what have you done to further meta's goals this year?" [05:42] -And so in some ways their ability to push React in the technical directions that they think are right, are limited by how much they can make the case for that. Inside Meta, even something like the Concurrent Stores work is essentially being pitched as, how can we make Facebook's Ads Manager app faster in a lot of ways? [00:06:38] +And so in some ways their ability to push React in the technical directions that they think are right, are limited by how much they can make the case for that. Inside Meta, even something like the Concurrent Stores work is essentially being pitched as, how can we make Facebook's Ads Manager app faster in a lot of ways? [06:38] -So we saw multiple React team members move over to Vercel. Like people used to complain that this is all a Facebook app, all the meetings are inside Meta. There's no public roadmap, it's only meta. And then we had team members move to Vercel, and then it became, well, now Vercel is applying too much ownership to React and all the stuff we've talked about with Next and server components and Vercel and how that's supposedly driving the roadmap, et cetera. [00:07:02] +So we saw multiple React team members move over to Vercel. Like people used to complain that this is all a Facebook app, all the meetings are inside Meta. There's no public roadmap, it's only meta. And then we had team members move to Vercel, and then it became, well, now Vercel is applying too much ownership to React and all the stuff we've talked about with Next and server components and Vercel and how that's supposedly driving the roadmap, et cetera. [07:02] -And so the team itself has been split across two companies, and they're working together. It's one team, but it's kind of within these two companies. And so because of Reacts widespread usage, there's been calls for many, many years that there ought to be some kind of an independent foundation that would own the trademarks, the rights, the development process. [00:07:30] +And so the team itself has been split across two companies, and they're working together. It's one team, but it's kind of within these two companies. And so because of Reacts widespread usage, there's been calls for many, many years that there ought to be some kind of an independent foundation that would own the trademarks, the rights, the development process. [07:30] -To React itself. And it always seemed kinda like one of those pipe dreams. The calls on Twitter to build, React into the browser. And obviously there's no way that's going to happen. And, and this felt like much of the same kind of idea. And so they, they did the initial React and the initial keynote at React Con, and they were mostly focusing on technical things. [00:07:56] +To React itself. And it always seemed kinda like one of those pipe dreams. The calls on Twitter to build, React into the browser. And obviously there's no way that's going to happen. And, and this felt like much of the same kind of idea. And so they, they did the initial React and the initial keynote at React Con, and they were mostly focusing on technical things. [07:56] -Like last year we, we fixed the, the sibling preloading bug. That was the suspense gate problem that everyone was talking about last year. And 19.2 came out and the compiler is 1.0. And then Seth came out and he did the one more thing routine and as soon as he put the React Foundation slide up, my jaw dropped. [00:08:17] +Like last year we, we fixed the, the sibling preloading bug. That was the suspense gate problem that everyone was talking about last year. And 19.2 came out and the compiler is 1.0. And then Seth came out and he did the one more thing routine and as soon as he put the React Foundation slide up, my jaw dropped. [08:17] -And I think I even said out loud, oh my word, they actually did it. And my first reaction was, even without knowing. Any actual details about what the foundation is or how it's going to work or whether this is even going to work out in practice. The fact that they have taken the time to do the legal preparation work to try to make this happen and are actually attempting to execute on that is a huge deal for React and the ecosystem. [00:08:40] +And I think I even said out loud, oh my word, they actually did it. And my first reaction was, even without knowing. Any actual details about what the foundation is or how it's going to work or whether this is even going to work out in practice. The fact that they have taken the time to do the legal preparation work to try to make this happen and are actually attempting to execute on that is a huge deal for React and the ecosystem. [08:40] -It, it is a statement of good faith and intent for how they want React to proceed in the future. Like without any details, my immediate reaction is, yes, finally, this is a good step forward. We'll see what it means in practice, but this is a really big deal. [00:09:12] +It, it is a statement of good faith and intent for how they want React to proceed in the future. Like without any details, my immediate reaction is, yes, finally, this is a good step forward. We'll see what it means in practice, but this is a really big deal. [09:12] -**Carl:** Yeah, I would agree with that. It's a really big deal that they're moving in this direction. [00:09:32] +**Carl:** Yeah, I would agree with that. It's a really big deal that they're moving in this direction. [09:32] -I'm really curious about the details because I think there's a lot of, I don't know, like in the past they've done working groups and et cetera. And my understanding of the takeaway is generally, has generally been that they found it really difficult to manage participation in those like open access kind of arenas. [00:09:37] +I'm really curious about the details because I think there's a lot of, I don't know, like in the past they've done working groups and et cetera. And my understanding of the takeaway is generally, has generally been that they found it really difficult to manage participation in those like open access kind of arenas. [09:37] -So maybe the, this is kind of like adding a new layer of abstraction perhaps with administrative support from currently thriving independent foundations. Mm-hmm. So that, that definitely makes me think that this has a real chance of being something real and valuable that goes on for a long time. I'm curious what it means for things like, like in practice, it's not like anyone's employer is changing. [00:09:56] +So maybe the, this is kind of like adding a new layer of abstraction perhaps with administrative support from currently thriving independent foundations. Mm-hmm. So that, that definitely makes me think that this has a real chance of being something real and valuable that goes on for a long time. I'm curious what it means for things like, like in practice, it's not like anyone's employer is changing. [09:56] -No details have been shared yet. At least that anyone is being paid from this new foundation. I, I don't know whether to call it meta or Facebook 'cause it's on the fb.com domain. Mm-hmm. But in the Facebook engineering announcement here, they do say that Meta has committed to a five year partnership with over $3 million in funding. [00:10:23] +No details have been shared yet. At least that anyone is being paid from this new foundation. I, I don't know whether to call it meta or Facebook 'cause it's on the fb.com domain. Mm-hmm. But in the Facebook engineering announcement here, they do say that Meta has committed to a five year partnership with over $3 million in funding. [10:23] -I don't know what other funding they might have. I don't know what other sources of funding they might have in the future, but like just looking at five years, $3 million, like that's 600,000 per year, which is like, you know, for meta engineers, that's like free engineers. So I don't know. I don't know what that means for people's incentives and where they will work and how their focus and performance will be evaluated. [00:10:42] +I don't know what other funding they might have. I don't know what other sources of funding they might have in the future, but like just looking at five years, $3 million, like that's 600,000 per year, which is like, you know, for meta engineers, that's like free engineers. So I don't know. I don't know what that means for people's incentives and where they will work and how their focus and performance will be evaluated. [10:42] -Yeah. [00:11:04] +Yeah. [11:04] -**Mo:** What that rules out is that effectively the React Native or React and React Native Core teams will definitely not be unemployed by the React Foundation. Right. 'cause that would basically cover three salaries, which is far smaller than what the React teams are. [00:11:05] +**Mo:** What that rules out is that effectively the React Native or React and React Native Core teams will definitely not be unemployed by the React Foundation. Right. 'cause that would basically cover three salaries, which is far smaller than what the React teams are. [11:05] -**Carl:** I think the React core team has like 10 engineers. [00:11:19] +**Carl:** I think the React core team has like 10 engineers. [11:19] -**Mo:** And RN is about the same. So you're talking 20 engineers. It's definitely not going to cover those employees to move them over, which is in some capacity. And then details are to be fleshed out. But in some capacity it is a bit disappointing because it would be great if they had more freedom as the React Native Core team to play around without the restrictions, like you mentioned, of the reviews that Meta has internally. [00:11:22] +**Mo:** And RN is about the same. So you're talking 20 engineers. It's definitely not going to cover those employees to move them over, which is in some capacity. And then details are to be fleshed out. But in some capacity it is a bit disappointing because it would be great if they had more freedom as the React Native Core team to play around without the restrictions, like you mentioned, of the reviews that Meta has internally. [11:22] -And so it's gonna be interesting to see how that Dyna dynamic plays out effectively because there is still gonna be that same team. At Meta [00:11:44] +And so it's gonna be interesting to see how that Dyna dynamic plays out effectively because there is still gonna be that same team. At Meta [11:44] -**Mark:** I, I have three sources of information that I'm piecing together for some of how the foundation is supposed to work. Seth Webster answered a few questions about this during the q and a session that was broadcast at React Conf. [00:11:51] +**Mark:** I, I have three sources of information that I'm piecing together for some of how the foundation is supposed to work. Seth Webster answered a few questions about this during the q and a session that was broadcast at React Conf. [11:51] -I had a conversation with a couple React team members and the topic came up about how things would be governed. And then there was an article on the new stack where Seth Perry was interviewed and was giving some further details about some of the governance. [00:12:05] +I had a conversation with a couple React team members and the topic came up about how things would be governed. And then there was an article on the new stack where Seth Perry was interviewed and was giving some further details about some of the governance. [12:05] -So as best I understand it, so you've got kind of the corporate level stuff that's Meta, Amazon, Callstack, Vercel, et cetera. They will then elect a technical steering committee. Which is, I guess sort of similar to how Node and other projects work, Seth said in the q and a, that meta will start with five votes on that corporate board, and then it will go down to one over the next five years. So you kind of a decreasing amount of influence in that sense. [00:12:21] +So as best I understand it, so you've got kind of the corporate level stuff that's Meta, Amazon, Callstack, Vercel, et cetera. They will then elect a technical steering committee. Which is, I guess sort of similar to how Node and other projects work, Seth said in the q and a, that meta will start with five votes on that corporate board, and then it will go down to one over the next five years. So you kind of a decreasing amount of influence in that sense. [12:21] -The technical steering committee, I assume, would be able to make decisions themselves, but obviously the fact that they are employees of the companies elected by those companies, et cetera, they would be taking their company's interests into account in the process. The article says that the technical governance will be in the open more than it once was. [00:12:53] +The technical steering committee, I assume, would be able to make decisions themselves, but obviously the fact that they are employees of the companies elected by those companies, et cetera, they would be taking their company's interests into account in the process. The article says that the technical governance will be in the open more than it once was. [12:53] -Request for comments, sets of stages, et cetera. But a lot of the process is still to be figured out. The article also talks about the foundation doing things like investing in React hubs, helping boot camps teach React better, possibly some things with conferences and alignment and such. So it sounds like the foundation is going to be doing more outreachy things. [00:13:17] +Request for comments, sets of stages, et cetera. But a lot of the process is still to be figured out. The article also talks about the foundation doing things like investing in React hubs, helping boot camps teach React better, possibly some things with conferences and alignment and such. So it sounds like the foundation is going to be doing more outreachy things. [13:17] -So there, there's a lot of this that is not clear what it means in practice yet, but certainly. React is not solely a meta owned thing at this point. There are multiple companies that are invested in it. There is a, a future for React independent of META'S ownership and goals. And this all feels like the people who care are trained to do the right thing. [00:13:43] +So there, there's a lot of this that is not clear what it means in practice yet, but certainly. React is not solely a meta owned thing at this point. There are multiple companies that are invested in it. There is a, a future for React independent of META'S ownership and goals. And this all feels like the people who care are trained to do the right thing. [13:43] -And [00:14:11] +And [14:11] -**Mo:** on the conference side, I mean, I hope that's the case because one of the, as a conference organizer, one of the things that's perhaps challenging is that Meta doesn't necessarily sponsor any conferences beyond just React conf, right? And so, look, it's well known that that's sort of the case. And so maybe the React Foundations that is going to be able to sponsor those conferences, even if it's not a meta badge to speak, which would be very, very interesting if some of that is used for that. [00:14:11] +**Mo:** on the conference side, I mean, I hope that's the case because one of the, as a conference organizer, one of the things that's perhaps challenging is that Meta doesn't necessarily sponsor any conferences beyond just React conf, right? And so, look, it's well known that that's sort of the case. And so maybe the React Foundations that is going to be able to sponsor those conferences, even if it's not a meta badge to speak, which would be very, very interesting if some of that is used for that. [14:11] -So I'm sure it's not just Meta who's investing, right? Like I, I suspect that there's funding coming in from. Amazon and Microsoft, at least from the bigger, bigger sort of established enterprises [00:14:38] +So I'm sure it's not just Meta who's investing, right? Like I, I suspect that there's funding coming in from. Amazon and Microsoft, at least from the bigger, bigger sort of established enterprises [14:38] -**Carl:** hopefully. And that's interesting. And the new Stack article interviewed Seth and has a bunch of poll quotes from him and they do talk about that, that like the foundation will look at expanding the annual React conf. [00:14:49] +**Carl:** hopefully. And that's interesting. And the new Stack article interviewed Seth and has a bunch of poll quotes from him and they do talk about that, that like the foundation will look at expanding the annual React conf. [14:49] -I guess that's not sponsoring other conferences, but they're talking about conferences at least. But also something that caught my attention. They say while React Comp is one of the few conferences that actually makes a profit, it basically only paid for itself. And also it's a thousand dollars a ticket conference. [00:15:00] +I guess that's not sponsoring other conferences, but they're talking about conferences at least. But also something that caught my attention. They say while React Comp is one of the few conferences that actually makes a profit, it basically only paid for itself. And also it's a thousand dollars a ticket conference. [15:00] -So like hopefully the mode of making conferences self-sustaining is not making them cost a thousand dollars. [00:15:14] +So like hopefully the mode of making conferences self-sustaining is not making them cost a thousand dollars. [15:14] -**Mo:** Yeah. I mean conferences are from experience a very, very expensive endeavor. And if you don't have companies backing them, they will make a loss. [00:15:22] +**Mo:** Yeah. I mean conferences are from experience a very, very expensive endeavor. And if you don't have companies backing them, they will make a loss. [15:22] -**Carl:** I do wanna shout out, as we mentioned at the start, Seth says "We have lots of boot camps out there that are doing their best, but they're also sending people out into the world misinformed about how React works." [00:15:31] +**Carl:** I do wanna shout out, as we mentioned at the start, Seth says "We have lots of boot camps out there that are doing their best, but they're also sending people out into the world misinformed about how React works." [15:31] -This is interesting there. It's a, it's funny, they're actually hitting on a couple of points that I've investigated myself about how to do businesses in like a community since like I had previously connected with a bootcamp. Somebody was working there as the curriculum lead and they were doing a curriculum overhaul. [00:15:40] +This is interesting there. It's a, it's funny, they're actually hitting on a couple of points that I've investigated myself about how to do businesses in like a community since like I had previously connected with a bootcamp. Somebody was working there as the curriculum lead and they were doing a curriculum overhaul. [15:40] -'cause they hadn't changed what they were teaching in three or four years. And they were like, is this still relevant? Is this what the industry's using? And I was like, cool. I help run a community. I know lots of experts. I would be happy to facilitate some kind of professional review. And then the bootcamp curriculum lead got laid off because that was 2022 and lots of things were not happening. So it's interesting to see them talk about things that I've thought a lot about. [00:15:59] +'cause they hadn't changed what they were teaching in three or four years. And they were like, is this still relevant? Is this what the industry's using? And I was like, cool. I help run a community. I know lots of experts. I would be happy to facilitate some kind of professional review. And then the bootcamp curriculum lead got laid off because that was 2022 and lots of things were not happening. So it's interesting to see them talk about things that I've thought a lot about. [15:59] -And also a lovely shout out, Seth says there are also cohorts such as meetups and local groups that could be assisted. One meetup actually led to the creation of the conference React Native London. So that's super cool. Love that for you, Mo. [00:16:22] +And also a lovely shout out, Seth says there are also cohorts such as meetups and local groups that could be assisted. One meetup actually led to the creation of the conference React Native London. So that's super cool. Love that for you, Mo. [16:22] -**Mo:** Yeah, I didn't, I, I did not have that on my Bingo card to get a shout out from Seth Webster on an interview, which is awesome. Yeah, it was good to have him last year. [00:16:36] +**Mo:** Yeah, I didn't, I, I did not have that on my Bingo card to get a shout out from Seth Webster on an interview, which is awesome. Yeah, it was good to have him last year. [16:36] -**Carl:** Mo is the organizer of React Native London and that one meetup that led to the creation. So that, that's just fun. [00:16:44] +**Carl:** Mo is the organizer of React Native London and that one meetup that led to the creation. So that, that's just fun. [16:44] -That's cool. We have actual players in the ecosystem in the podcast right now. [00:16:51] +That's cool. We have actual players in the ecosystem in the podcast right now. [16:51] -**Mo:** Well, you got Mark. So I'm stepping up to very, very, very high standards. Pretending to. [00:16:55] +**Mo:** Well, you got Mark. So I'm stepping up to very, very, very high standards. Pretending to. [16:55] -**Carl:** Cool though. Yeah. So I don't know. I don't know if there's more to say there. [00:17:00] +**Carl:** Cool though. Yeah. So I don't know. I don't know if there's more to say there. [17:00] ## 19.2 (Activity, useEffectEvent) -**Mark:** Some of the more technical stuff. So they, they talked about React 19.2 coming out, which if you've been paying attention to this podcast for the last several months, you would've known all the details already. Like the new activity component for being able to hide components while persisting state use effect event for hopefully fewer use effect related bugs, et cetera. React compiler hit 1.0 and then [00:17:03] +**Mark:** Some of the more technical stuff. So they, they talked about React 19.2 coming out, which if you've been paying attention to this podcast for the last several months, you would've known all the details already. Like the new activity component for being able to hide components while persisting state use effect event for hopefully fewer use effect related bugs, et cetera. React compiler hit 1.0 and then [17:03] ## React Native news -**Mark:** Mo as like as usual, you wanna talk about the React Native-y things? [00:17:27] +**Mark:** Mo as like as usual, you wanna talk about the React Native-y things? [17:27] ## [New architecture only from v0.82](https://reactnative.dev/blog/2025/10/08/react-native-0.82#new-architecture-only) -**Mo:** So a few updates that they did, one of which was quite surprising was that the next release of React native version 0.82 is going to be new architecture only. [00:17:32] +**Mo:** So a few updates that they did, one of which was quite surprising was that the next release of React native version 0.82 is going to be new architecture only. [17:32] -So obviously earlier on a few months ago, we talked about how they deprecated the old architecture than they froze the old architecture. Now they're dropping the old architecture. And so to me that was a much faster deprecation cycle than I, I would've expected. Specifically when it comes to the fact that there are still a fair few libraries that are using the old architecture and only support the old architecture. [00:17:44] +So obviously earlier on a few months ago, we talked about how they deprecated the old architecture than they froze the old architecture. Now they're dropping the old architecture. And so to me that was a much faster deprecation cycle than I, I would've expected. Specifically when it comes to the fact that there are still a fair few libraries that are using the old architecture and only support the old architecture. [17:44] -So to give you a very concrete example, we had our monthly meetup literally yesterday, and there was a talk about Arrive, which is this animation engine that a lot of people are using to animate websites and make really, really cool stuff. But what we learned surprisingly was that Rive only supports the old architecture. [00:18:06] +So to give you a very concrete example, we had our monthly meetup literally yesterday, and there was a talk about Arrive, which is this animation engine that a lot of people are using to animate websites and make really, really cool stuff. But what we learned surprisingly was that Rive only supports the old architecture. [18:06] -So what that means is that this company who's a very popular healthcare company, really don't have a path to sort of migrate to the new architecture and hence version 0.82 until Rive starts to support the new architecture. So there are still libraries, albeit the majority of major libraries have been ported to the new architecture that are still hanging behind. [00:18:24] +So what that means is that this company who's a very popular healthcare company, really don't have a path to sort of migrate to the new architecture and hence version 0.82 until Rive starts to support the new architecture. So there are still libraries, albeit the majority of major libraries have been ported to the new architecture that are still hanging behind. [18:24] -So I'm quite surprised by this, but we'll see how it goes. It probably means that these library maintainers really need to like step up in the next month or two and get ready. [00:18:44] +So I'm quite surprised by this, but we'll see how it goes. It probably means that these library maintainers really need to like step up in the next month or two and get ready. [18:44] ## [Vega OS announcement](https://developer.amazon.com/apps-and-games/blogs/2025/09/announcing-vega-os) -**Mo:** The second big thing, which I have a little bit about later on, but just a quick one, is that Amazon did the Vega Os announcement earlier. [00:18:52] +**Mo:** The second big thing, which I have a little bit about later on, but just a quick one, is that Amazon did the Vega Os announcement earlier. [18:52] -It was towards the end of September that they actually announced it, but [00:19:02] +It was towards the end of September that they actually announced it, but [19:02] ## [Vega introduction at React Conf](https://www.youtube.com/watch?v=p9OcztRyDl0&t=5737s) -**Mo:** they formally talked to the React and React native communities about it during React Conf. This is a completely new operating system that's fully built from scratch by Amazon folks and React Native is the UI layer. It's the only way that you can write apps for it, which is quite a big investment from Amazon's perspective into React Native as a technology. [00:19:04] +**Mo:** they formally talked to the React and React native communities about it during React Conf. This is a completely new operating system that's fully built from scratch by Amazon folks and React Native is the UI layer. It's the only way that you can write apps for it, which is quite a big investment from Amazon's perspective into React Native as a technology. [19:04] -So Amazon makes a lot of devices. For a little bit of context, you might've seen their Fire TV devices, some of the Kindle fire devices that they had, but also like Echo dots and a whole slew of different devices that they manufacture. And previously a lot of these were running on Android or a variety of Android called Fire Os that they had adopted from the Android open source projects. [00:19:27] +So Amazon makes a lot of devices. For a little bit of context, you might've seen their Fire TV devices, some of the Kindle fire devices that they had, but also like Echo dots and a whole slew of different devices that they manufacture. And previously a lot of these were running on Android or a variety of Android called Fire Os that they had adopted from the Android open source projects. [19:27] -And so now they've kind of completely ditched that and they're betting long term on React native now at our company at Theo and a bunch of other companies have been sort of working with Amazon behind the scenes on this. And we're aware of this but weren't really allowed to speak about it. So it's now out in the public. [00:19:47] +And so now they've kind of completely ditched that and they're betting long term on React native now at our company at Theo and a bunch of other companies have been sort of working with Amazon behind the scenes on this. And we're aware of this but weren't really allowed to speak about it. So it's now out in the public. [19:47] -But it has been a good while, which I cannot specify how long that duration is that I have been aware of this, but just not able to talk about it and have been working with the Amazon folks to make sure that things are ready for their launch. So they have an introduction video at React Con, which I think is interesting because TV apps need to run on very, very limited specs. You're talking like a few gigs of Ram one or two gigs of ram and like very, very, very slow CPUs and some of them are even worse than that. So effectively they really had to optimize the living crap out of their operating system and make sure that React plays nice with it and is like the first class citizen when it comes to it. [00:20:02] +But it has been a good while, which I cannot specify how long that duration is that I have been aware of this, but just not able to talk about it and have been working with the Amazon folks to make sure that things are ready for their launch. So they have an introduction video at React Con, which I think is interesting because TV apps need to run on very, very limited specs. You're talking like a few gigs of Ram one or two gigs of ram and like very, very, very slow CPUs and some of them are even worse than that. So effectively they really had to optimize the living crap out of their operating system and make sure that React plays nice with it and is like the first class citizen when it comes to it. [20:02] -So it's, it's very interesting how they had to optimize it and it was a big undertaking for them. So. I guess congrats to the Amazon team, but beyond that, it's quite interesting for people that are interested in performance and React and React native. [00:20:38] +So it's, it's very interesting how they had to optimize it and it was a big undertaking for them. So. I guess congrats to the Amazon team, but beyond that, it's quite interesting for people that are interested in performance and React and React native. [20:38] -**Carl:** Yeah, I was just scanning this to see if I could find any details about what they built on top of, because like, I don't know, nobody builds a whole OS from scratch anymore. And this is on top of Linux? [00:20:48] +**Carl:** Yeah, I was just scanning this to see if I could find any details about what they built on top of, because like, I don't know, nobody builds a whole OS from scratch anymore. And this is on top of Linux? [20:48] -**Mo:** Yeah, it's c plus plus on top of Linux. Basically it's a Linux. Or is a Unix based system. [00:20:59] +**Mo:** Yeah, it's c plus plus on top of Linux. Basically it's a Linux. Or is a Unix based system. [20:59] -**Carl:** Right, like, and so is Android. Like, I'm curious to what extent this is a locked down, stripped back version of Android that they're calling Vega. They don't say that anywhere, but like reading the tea leaves here, I, my assumption is that the, I don't know, Android was such a massive undertaking that Google then acquired and commercialized. [00:21:05] +**Carl:** Right, like, and so is Android. Like, I'm curious to what extent this is a locked down, stripped back version of Android that they're calling Vega. They don't say that anywhere, but like reading the tea leaves here, I, my assumption is that the, I don't know, Android was such a massive undertaking that Google then acquired and commercialized. [21:05] -Curious to hear more technical details about the OS layer here and how it… [00:21:28] +Curious to hear more technical details about the OS layer here and how it… [21:28] -**Mo:** I can tell you a little bit about that because I've known about it for a while. It's not on top of Android in any capacity. It is fully, the Android open source project components of it are fully stripped out. It's built from scratch, which means that compatibility with old apps is. [00:21:32] +**Mo:** I can tell you a little bit about that because I've known about it for a while. It's not on top of Android in any capacity. It is fully, the Android open source project components of it are fully stripped out. It's built from scratch, which means that compatibility with old apps is. [21:32] -Limited and there's other solutions. It's not that you can run Android apps on it as an example that we're the old Fire OS apps. [00:21:47] +Limited and there's other solutions. It's not that you can run Android apps on it as an example that we're the old Fire OS apps. [21:47] -**Carl:** So wait, it sounds a little bit like you're saying there is a shared lineage with Android, but it's different enough that its own technically distinct thing. [00:21:54] +**Carl:** So wait, it sounds a little bit like you're saying there is a shared lineage with Android, but it's different enough that its own technically distinct thing. [21:54] -**Mo:** They share a technical lineage in the same capacity that like Mac Os and Androids here, which is, they are both unique systems and that's pretty much it. [00:22:02] +**Mo:** They share a technical lineage in the same capacity that like Mac Os and Androids here, which is, they are both unique systems and that's pretty much it. [22:02] -Like they serve the same kernel but like so does 90% of devices out there. So it's as Android, as IOS's, Android, if that kind of makes sense. [00:22:11] +Like they serve the same kernel but like so does 90% of devices out there. So it's as Android, as IOS's, Android, if that kind of makes sense. [22:11] -**Carl:** The Tree of Life, kingdom Family order. Like this is not shared genus. This is shared order maybe? Yes. Okay, cool. Good to know. Thank you. [00:22:19] +**Carl:** The Tree of Life, kingdom Family order. Like this is not shared genus. This is shared order maybe? Yes. Okay, cool. Good to know. Thank you. [22:19] -**Mark:** I do wanna highlight a couple talks in particular, and again, you can look at the whole React con recap blog posts to get links to the different talks and the different portions of the live stream. [00:22:27] +**Mark:** I do wanna highlight a couple talks in particular, and again, you can look at the whole React con recap blog posts to get links to the different talks and the different portions of the live stream. [22:27] ## Joe Savona’s “[Exploring React Performance](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=20274s)” talk -**Mark:** A lot of good talks that were worth watching, but two that I liked in particular, Joe Savona did a talk on some of the React team's performance experiments, and there's a bit of controversy because he showed a bunch of hypothetical, semi hypothetical benchmark numbers without any real details on the actual implementation of the benchmarks. [00:22:36] +**Mark:** A lot of good talks that were worth watching, but two that I liked in particular, Joe Savona did a talk on some of the React team's performance experiments, and there's a bit of controversy because he showed a bunch of hypothetical, semi hypothetical benchmark numbers without any real details on the actual implementation of the benchmarks. [22:36] -And then some of them were like, versus we built NAP with signals and compared it with one with React and then ex a highly prototype React and a bunch of other stuff. And then people were saying, well, we tried to mimic this and we think you're probably using signals the wrong way. But it was still interesting to hear the discussion around, we agree that performance has been a problem and we've tried prototyping some different ideas to see what's possible and where bottlenecks might be. [00:22:56] +And then some of them were like, versus we built NAP with signals and compared it with one with React and then ex a highly prototype React and a bunch of other stuff. And then people were saying, well, we tried to mimic this and we think you're probably using signals the wrong way. But it was still interesting to hear the discussion around, we agree that performance has been a problem and we've tried prototyping some different ideas to see what's possible and where bottlenecks might be. [22:56] ## Ricky’s “[Async React Part I](https://www.youtube.com/watch?v=zyVRg2QR6LA&t=10907s)” and “[Part II](https://www.youtube.com/watch?v=p9OcztRyDl0&t=29073s)” ([repo](https://github.com/rickhanlonii/async-react)) -**Mark:** The other one I really wanna point to though, Rick Hanlon did a talk called Async React and he had a few major, he had a couple different points out of this. [00:23:26] +**Mark:** The other one I really wanna point to though, Rick Hanlon did a talk called Async React and he had a few major, he had a couple different points out of this. [23:26] -One was that the React team has been talking about things like suspense and concurrency since 2018, and if it's been hard to follow where the React team is trained to go with this, it's 'cause the React team itself really didn't know where they were trained to go with this. He even pulled out meeting notes from a React team weekly meeting in like 2015 or 2016 where they started having the first initial ideas for, we think we want to go in this direction, but they really didn't know what the final result ought to look like or how they were going to get there. [00:23:36] +One was that the React team has been talking about things like suspense and concurrency since 2018, and if it's been hard to follow where the React team is trained to go with this, it's 'cause the React team itself really didn't know where they were trained to go with this. He even pulled out meeting notes from a React team weekly meeting in like 2015 or 2016 where they started having the first initial ideas for, we think we want to go in this direction, but they really didn't know what the final result ought to look like or how they were going to get there. [23:36] -And so showed a diagram with a whole bunch of back and forth wavy lines like we, we don't know where we're going, but now it's 2025. We've gotten through the confusion. We've now built all the main concurrent pieces that we were trained to build. We are seeing the results of even like the React 16 fiber rerate. [00:24:15] +And so showed a diagram with a whole bunch of back and forth wavy lines like we, we don't know where we're going, but now it's 2025. We've gotten through the confusion. We've now built all the main concurrent pieces that we were trained to build. We are seeing the results of even like the React 16 fiber rerate. [24:15] -And now we can actually say, we've built these pieces and here's how they ought to fit together. And so the second half of his talk was a demo where he took a badly written but viable React app, which uses use effect for data fetching and manual setting, state for loading states and things like that. [00:24:37] +And now we can actually say, we've built these pieces and here's how they ought to fit together. And so the second half of his talk was a demo where he took a badly written but viable React app, which uses use effect for data fetching and manual setting, state for loading states and things like that. [24:37] -And he first refactored it to have a bunch of transitions for better loading animations, using suspense for the data fetching, and he showed the visible improvements in user experience. And then his point towards the end was that, yeah, the, so like this is how modern Async React code ought to work. But in fact, you shouldn't even have to write most of this code in your own app because the transitions and the loading states and everything else really ought to be embedded in your router and your data fetching library. [00:24:56] +And he first refactored it to have a bunch of transitions for better loading animations, using suspense for the data fetching, and he showed the visible improvements in user experience. And then his point towards the end was that, yeah, the, so like this is how modern Async React code ought to work. But in fact, you shouldn't even have to write most of this code in your own app because the transitions and the loading states and everything else really ought to be embedded in your router and your data fetching library. [24:56] -Now, unfortunately, his actual talk got interrupted for stupid technical reasons. So he came back at the end of day two and picked up with his demo and actually had a chance to do a better version of it. [00:25:36] +Now, unfortunately, his actual talk got interrupted for stupid technical reasons. So he came back at the end of day two and picked up with his demo and actually had a chance to do a better version of it. [25:36] -And so I think the key points are, one, the React team has now built the concurrent async features that they've talked about for years. Two, a lot of us, including myself, are still kind of stuck in like a 20 16, 20 18 era mindset of how to use React three. These things make writing React apps better and better user experience. Four, we need to get these things embedded in component libraries and data fetching libraries so that a lot of this stuff just works outta the box. [00:25:48] +And so I think the key points are, one, the React team has now built the concurrent async features that they've talked about for years. Two, a lot of us, including myself, are still kind of stuck in like a 20 16, 20 18 era mindset of how to use React three. These things make writing React apps better and better user experience. Four, we need to get these things embedded in component libraries and data fetching libraries so that a lot of this stuff just works outta the box. [25:48] -So I highly, highly recommend watching Ricky's talk. He also put up the demo code as well. [00:26:23] +So I highly, highly recommend watching Ricky's talk. He also put up the demo code as well. [26:23] -**Carl:** That was a good talk. It was a good demo. I will say, while watching him write the code. I was like, man, this looks really complicated. [00:26:29] +**Carl:** That was a good talk. It was a good demo. I will say, while watching him write the code. I was like, man, this looks really complicated. [26:29] -**Mark:** Yeah. And that, and that's another point that we're going to touch on here with a couple of the, the other things as well. [00:26:37] +**Mark:** Yeah. And that, and that's another point that we're going to touch on here with a couple of the, the other things as well. [26:37] -One other thing that really caught my attention, so if you've been listening to podcasts for a while, you've heard me agitating, saying that we really need is a new React working group where folks from the community can officially communicate to the React team for things like, Hey, we think there should be more docs to cover this topic. [00:26:41] +One other thing that really caught my attention, so if you've been listening to podcasts for a while, you've heard me agitating, saying that we really need is a new React working group where folks from the community can officially communicate to the React team for things like, Hey, we think there should be more docs to cover this topic. [26:41] -Or, oops, create React app just broke. I think you should fix it, and things like that. And Ricky was actually the person who drove most of the React eight team. Working group. [00:27:00] +Or, oops, create React app just broke. I think you should fix it, and things like that. And Ricky was actually the person who drove most of the React eight team. Working group. [27:00] ## [Async React Working Group](https://github.com/reactwg/async-react) -**Mark:** And so at the end of his talk, Ricky actually announced that there is now a new Async React working group. And this is sort of a catchall, it's meant to cover discussions of things like how do we get async React features into major ecosystem libraries and, what kind of docs should we have to cover this stuff? [00:27:12] +**Mark:** And so at the end of his talk, Ricky actually announced that there is now a new Async React working group. And this is sort of a catchall, it's meant to cover discussions of things like how do we get async React features into major ecosystem libraries and, what kind of docs should we have to cover this stuff? [27:12] ## First [discussion of more docs ideas](https://github.com/reactwg/async-react/discussions/2) -**Mark:** And so the, even the first discussion thread is a lot of discussion between me, Ricky, Dan Aberman of Corbin Crutchley, about a whole bunch of possible docs, pages that we could add that would cover things like transitions and suspense and how to use them correctly. [00:27:35] +**Mark:** And so the, even the first discussion thread is a lot of discussion between me, Ricky, Dan Aberman of Corbin Crutchley, about a whole bunch of possible docs, pages that we could add that would cover things like transitions and suspense and how to use them correctly. [27:35] -And getting people from the community to contribute those new docs pages rather than waiting on the React team. To write them. So I am actually genuinely, genuinely excited. Like I've done a lot of complaining and this is the answer to my complaints that we have working group and docs plans and an agreement that people outside the team can contribute. [00:27:53] +And getting people from the community to contribute those new docs pages rather than waiting on the React team. To write them. So I am actually genuinely, genuinely excited. Like I've done a lot of complaining and this is the answer to my complaints that we have working group and docs plans and an agreement that people outside the team can contribute. [27:53] -So like I am actually legitimately thrilled by this. [00:28:16] +So like I am actually legitimately thrilled by this. [28:16] -**Carl:** Nice. I do appreciate more, I don't know, open participation more, more discussion. That's great. [00:28:21] +**Carl:** Nice. I do appreciate more, I don't know, open participation more, more discussion. That's great. [28:21] ## Remix v3 announcement -**Carl:** Should we get into Remix V three? [00:28:27] +**Carl:** Should we get into Remix V three? [28:27] -**Mark:** Yes, we should. Alright, so usual caveat, I still have not had time to actually watch the announcement, but I, I think I can give a fair summary of it from having seen the discussion on Twitter and the articles afterwards. [00:28:29] +**Mark:** Yes, we should. Alright, so usual caveat, I still have not had time to actually watch the announcement, but I, I think I can give a fair summary of it from having seen the discussion on Twitter and the articles afterwards. [28:29] -We have mentioned for the last several months that they were teasing Remix V three is going to be, not pre-ACT, its own component model, something with iframes, whatever. And our last comments on it were just show us some code already. Well, at the Remix Jam conference, they did actually show us the code. [00:28:43] +We have mentioned for the last several months that they were teasing Remix V three is going to be, not pre-ACT, its own component model, something with iframes, whatever. And our last comments on it were just show us some code already. Well, at the Remix Jam conference, they did actually show us the code. [28:43] ## [Announcement demo timestamped breakdown](https://github.com/markdalgleish/remix3-resources) -**Mark:** There was a, a repo put together that did timestamped links to all the appropriate pieces of the announcement video. So if you'd like to be able to jump in and see the examples of what Remix V three code is supposed to look like, that should make it easier. My first impressions, again, just having seen screenshots of the code in following the discussions, is that Remix v three's component model is sort of a mixture between React, view and backbone. [00:29:03] +**Mark:** There was a, a repo put together that did timestamped links to all the appropriate pieces of the announcement video. So if you'd like to be able to jump in and see the examples of what Remix V three code is supposed to look like, that should make it easier. My first impressions, again, just having seen screenshots of the code in following the discussions, is that Remix v three's component model is sort of a mixture between React, view and backbone. [29:03] -So it's kind of like React in that you have function components and they, and that uses JSX. It's kind of like view and the composition API, where you're given a closure as the setup. It's a little bit like backbone in that the function component you're rating still sort of is organized like as if it were a class. [00:29:35] +So it's kind of like React in that you have function components and they, and that uses JSX. It's kind of like view and the composition API, where you're given a closure as the setup. It's a little bit like backbone in that the function component you're rating still sort of is organized like as if it were a class. [29:35] -It passes in a reference to the instance rather than getting the props as an argument, and you're supposed to call it this. And part of that is to make use of a TypeScript typing trick that lets you declare the type of this as an argument to a function. But also you manually trigger updates by first mutating a variable in the setup closure, and then you manually call this update. [00:29:58] +It passes in a reference to the instance rather than getting the props as an argument, and you're supposed to call it this. And part of that is to make use of a TypeScript typing trick that lets you declare the type of this as an argument to a function. But also you manually trigger updates by first mutating a variable in the setup closure, and then you manually call this update. [29:58] -And so Ryan Florence even said, this is basically old school React class component, this dot force update. Essentially, so I, I can see bits and pieces of parallels and influences between all three of those frameworks. When I look at the Remix code, it's also supposed to come with a bunch of utilities for being able to compose event handlers together. [00:30:29] +And so Ryan Florence even said, this is basically old school React class component, this dot force update. Essentially, so I, I can see bits and pieces of parallels and influences between all three of those frameworks. When I look at the Remix code, it's also supposed to come with a bunch of utilities for being able to compose event handlers together. [30:29] -And yeah, so we, we have finally seen the code. I believe they also gave some demonstrations of what the server side loading story is supposed to look like. Some kind of an I frame alike component that has its own URL and can automatically re fetch HTML. I haven't looked into those pieces as much, so very big picture. [00:30:54] +And yeah, so we, we have finally seen the code. I believe they also gave some demonstrations of what the server side loading story is supposed to look like. Some kind of an I frame alike component that has its own URL and can automatically re fetch HTML. I haven't looked into those pieces as much, so very big picture. [30:54] -I saw a lot of people arguing about having this dot update. A lot of people saying it feels like a step backwards, it's manual update code. [00:31:19] +I saw a lot of people arguing about having this dot update. A lot of people saying it feels like a step backwards, it's manual update code. [31:19] ## [Updates syntax can be customized?](https://x.com/sergiodxa/status/1976878377509568871) -**Mark:** But some people demonstrated that you can very quickly write your own wrappers that just call this DOT update internally. I have seen wrappers that mimic like the used state hook. [00:31:28] +**Mark:** But some people demonstrated that you can very quickly write your own wrappers that just call this DOT update internally. I have seen wrappers that mimic like the used state hook. [31:28] -I've seen wrappers for other state management libraries like Redux. So it's a primitive that can clearly be abstracted if you really want to. I saw some good posts and articles from James Long and a couple other people with thoughts on the ability to compose interactions together. Carl, to your point that modern React and all the new async features feel very complicated. [00:31:39] +I've seen wrappers for other state management libraries like Redux. So it's a primitive that can clearly be abstracted if you really want to. I saw some good posts and articles from James Long and a couple other people with thoughts on the ability to compose interactions together. Carl, to your point that modern React and all the new async features feel very complicated. [31:39] -Like there's good reasons why methods like transitions exist to try to give better user experiences, but it's just all these additional concepts and behaviors you have to keep track of in your head. And Remix is trying to go for a less magic, less abstraction approach. So we'll see what it means in terms of adoption. [00:32:06] +Like there's good reasons why methods like transitions exist to try to give better user experiences, but it's just all these additional concepts and behaviors you have to keep track of in your head. And Remix is trying to go for a less magic, less abstraction approach. So we'll see what it means in terms of adoption. [32:06] -Again, this is non-reactive, so different framework, different ecosystem. Who knows what the actual adoption will look like, but I get the sense of what they're trying to go for and I, I think it will appeal to some number of users out there that want to have that kind of behavior. [00:32:31] +Again, this is non-reactive, so different framework, different ecosystem. Who knows what the actual adoption will look like, but I get the sense of what they're trying to go for and I, I think it will appeal to some number of users out there that want to have that kind of behavior. [32:31] -**Carl:** Yeah, I'll definitely keep paying attention to it 'cause they're thoughtful about things and historically have just done a lot. [00:32:49] +**Carl:** Yeah, I'll definitely keep paying attention to it 'cause they're thoughtful about things and historically have just done a lot. [32:49] -So I'm very curious to see where this goes. But my gut feeling here is that this is going to end up more as an API exploration and that any great ideas that come out of it will be a fresh exploration and then maybe validate some ideas that get brought into React or view or other big tools. But yeah, I, I could be wrong, could be, could be more independently successful than that. [00:32:58] +So I'm very curious to see where this goes. But my gut feeling here is that this is going to end up more as an API exploration and that any great ideas that come out of it will be a fresh exploration and then maybe validate some ideas that get brought into React or view or other big tools. But yeah, I, I could be wrong, could be, could be more independently successful than that. [32:58] -They, they did stress in the video that I watched, that this is all like prototype phase. So they, like right now apparently there's splitting it all up into a bunch of different packages. They can iterate independently and explore a bunch of different things. But the, the final intended usage would be from one package, not from 20 different packages. Just to throw that out there as a a thing that will change. Yeah, I don't know. We'll see. We'll see. I think the component model is just gonna be really hard to disrupt. [00:33:25] +They, they did stress in the video that I watched, that this is all like prototype phase. So they, like right now apparently there's splitting it all up into a bunch of different packages. They can iterate independently and explore a bunch of different things. But the, the final intended usage would be from one package, not from 20 different packages. Just to throw that out there as a a thing that will change. Yeah, I don't know. We'll see. We'll see. I think the component model is just gonna be really hard to disrupt. [33:25] -One, one thing I did see in the video of Ryan Florence talking about just talking while he was demoing, he like compared and contrasted with like, here's how we do state changes and you just call the dispatch function instead of set state. [00:33:54] +One, one thing I did see in the video of Ryan Florence talking about just talking while he was demoing, he like compared and contrasted with like, here's how we do state changes and you just call the dispatch function instead of set state. [33:54] -And I was like, I dunno, you can do that in React. Like they've been encouraging people to do that for years, for like six years basically Ever since hooks came out and you could do a state reducer, they were like, please, except for trivial uses of state, all of your state should be in a reducer and you should use dispatch. Not set state. So just like calling that out as a point of comparison, like React has been trying to do that for a long time too. It's just nobody actually does, I dunno, just caught my attention. [00:34:08] +And I was like, I dunno, you can do that in React. Like they've been encouraging people to do that for years, for like six years basically Ever since hooks came out and you could do a state reducer, they were like, please, except for trivial uses of state, all of your state should be in a reducer and you should use dispatch. Not set state. So just like calling that out as a point of comparison, like React has been trying to do that for a long time too. It's just nobody actually does, I dunno, just caught my attention. [34:08] -**Mark:** Well least we have an actual code to critique now and argue about instead of the vague teasing. True facts. [00:34:35] +**Mark:** Well least we have an actual code to critique now and argue about instead of the vague teasing. True facts. [34:35] -**Carl:** I will happily continue reading code and critiquing. [00:34:41] +**Carl:** I will happily continue reading code and critiquing. [34:41] ## [I built the same app 10 times](https://www.lorenstew.art/blog/10-kanban-boards) ([code](https://github.com/lorenseanstewart/kanban-comparison)) -**Carl:** Speaking of which , I love this project. I have thought about doing this so many different times and I never have because it's hard. Somebody built the same app 10 times in a variety of different frameworks and tools and benchmarked them and compared and contrasted their performance in a bunch of different metrics. [00:34:44] +**Carl:** Speaking of which , I love this project. I have thought about doing this so many different times and I never have because it's hard. Somebody built the same app 10 times in a variety of different frameworks and tools and benchmarked them and compared and contrasted their performance in a bunch of different metrics. [34:44] -It seemed like they focused pretty heavily on like bundle size to me, very wordy. I, I will say I got a little bit lost in the [00:35:05] +It seemed like they focused pretty heavily on like bundle size to me, very wordy. I, I will say I got a little bit lost in the [35:05] -**Mark:** instruction. Very wordy and very, also, a lot of the article was very clearly AI generated. I saw some comments from the author saying he had written pieces of it in sections and used AI to help with it. [00:35:12] +**Mark:** instruction. Very wordy and very, also, a lot of the article was very clearly AI generated. I saw some comments from the author saying he had written pieces of it in sections and used AI to help with it. [35:12] -So like there, there was clearly human involvement in it, but the, the AI generation of the article itself was a critique point. [00:35:22] +So like there, there was clearly human involvement in it, but the, the AI generation of the article itself was a critique point. [35:22] -**Carl:** Yeah. Just like as I'm scrolling, it's got so many paragraphs in a row that are all like identically long. Just a little bit of a wall of text. I definitely skimmed this pretty hard. [00:35:30] +**Carl:** Yeah. Just like as I'm scrolling, it's got so many paragraphs in a row that are all like identically long. Just a little bit of a wall of text. I definitely skimmed this pretty hard. [35:30] -All that aside, like I just love the idea of doing the exact same thing with the exact same. Like, well, I don't know that they use the same test suite, but that, that was always my idea is build. You build an end-to-end test suite and then you get a passing app for that test suite in a bunch of different tools. [00:35:38] +All that aside, like I just love the idea of doing the exact same thing with the exact same. Like, well, I don't know that they use the same test suite, but that, that was always my idea is build. You build an end-to-end test suite and then you get a passing app for that test suite in a bunch of different tools. [35:38] -I meant to do more of a deep code review on a couple of the different implementations. It's a CanBan board, it's, you know, a Trello clone type project where you're doing task management with cards and drag and drop. I guess it, it's a great and a parable comparison because drag and drop is really hard to do and so it's very frequently something people try to lean on libraries for. [00:35:54] +I meant to do more of a deep code review on a couple of the different implementations. It's a CanBan board, it's, you know, a Trello clone type project where you're doing task management with cards and drag and drop. I guess it, it's a great and a parable comparison because drag and drop is really hard to do and so it's very frequently something people try to lean on libraries for. [35:54] -So if you are implementing it yourself, that's kind of cha, that makes it a little bit challenging to use as a point of comparison. But the tools that were used here, he built it analog, which I guess is vanilla js is what I'm assuming, or [00:36:15] +So if you are implementing it yourself, that's kind of cha, that makes it a little bit challenging to use as a point of comparison. But the tools that were used here, he built it analog, which I guess is vanilla js is what I'm assuming, or [36:15] -**Mark:** analog is actually a, a next like tool for Angular. [00:36:31] +**Mark:** analog is actually a, a next like tool for Angular. [36:31] -**Carl:** Oh great. Okay. Okay. So you built it an analog, which is an angular type thing. [00:36:36] +**Carl:** Oh great. Okay. Okay. So you built it an analog, which is an angular type thing. [36:36] -And HTMX, Marco, which I'd never heard of. Next.JS, of course. Next. Sure. Qwik City, which is Qwik. I've heard of Qwik City I had not heard of. So this is I guess [00:36:41] +And HTMX, Marco, which I'd never heard of. Next.JS, of course. Next. Sure. Qwik City, which is Qwik. I've heard of Qwik City I had not heard of. So this is I guess [36:41] -**Mark:** probably another solid versus solid start type thing. [00:36:53] +**Mark:** probably another solid versus solid start type thing. [36:53] -**Carl:** Qwik city to qwik Sure. Solid start spelt Kit Tan Stack with solid and then Tan Stack with React. [00:36:55] +**Carl:** Qwik city to qwik Sure. Solid start spelt Kit Tan Stack with solid and then Tan Stack with React. [36:55] -Yeah, one of the first tables, one of the first actual like points of comparison of the output tables is just on bundle size and how much JavaScript was served in order to. Get this app running. They used Next.JS version 16 as the baseline and that was about 500 kilobytes gzipped, which is huge. It's big hand stack. [00:37:03] +Yeah, one of the first tables, one of the first actual like points of comparison of the output tables is just on bundle size and how much JavaScript was served in order to. Get this app running. They used Next.JS version 16 as the baseline and that was about 500 kilobytes gzipped, which is huge. It's big hand stack. [37:03] -Start with React. Clocked in at about 300 kilobytes a little bit more with solid was a half of that hand stack. Start with solid was 150 ish kilobytes. The smallest was Marco. 12. At 12 kilobytes followed by quick city at 88. Oh, I just realized there's parenthesized compressed. I thought I was reading the compressed and I was not. [00:37:25] +Start with React. Clocked in at about 300 kilobytes a little bit more with solid was a half of that hand stack. Start with solid was 150 ish kilobytes. The smallest was Marco. 12. At 12 kilobytes followed by quick city at 88. Oh, I just realized there's parenthesized compressed. I thought I was reading the compressed and I was not. [37:25] -**Mark:** There's also the board page versus the homepage sizes. [00:37:49] +**Mark:** There's also the board page versus the homepage sizes. [37:49] -**Carl:** Yeah. Okay. Alright. This is more confusingly presented than I realized. [00:37:53] +**Carl:** Yeah. Okay. Alright. This is more confusingly presented than I realized. [37:53] ## Same author as [React Won by Default and It’s Killing Innovation](https://www.lorenstew.art/blog/react-won-by-default/) -**Mark:** I think the biggest picture takeaways, number one, it's worth noting that the author of this article previously put up a post a month or two ago saying that React by is the default choice and it's killing innovation in the ecosystem. [00:37:57] +**Mark:** I think the biggest picture takeaways, number one, it's worth noting that the author of this article previously put up a post a month or two ago saying that React by is the default choice and it's killing innovation in the ecosystem. [37:57] -So that kind of to where they're coming from. But I do think they did. They were legitimately trying to do a real meaningful comparison, even if the results were sort of what they were hoping they would be. IE reacted big and bad. So yeah, the big takeaways are like React itself is huge and so any React app is going to be very large bundle size wise. [00:38:08] +So that kind of to where they're coming from. But I do think they did. They were legitimately trying to do a real meaningful comparison, even if the results were sort of what they were hoping they would be. IE reacted big and bad. So yeah, the big takeaways are like React itself is huge and so any React app is going to be very large bundle size wise. [38:08] -And look, if we do like Tan Stack with Solid instead of Tan Stack with React, it gets smaller. But also if you do these other frameworks, it gets even better smaller and then it kind of ends with a bit of a, another rant about React is a bad choice. [00:38:32] +And look, if we do like Tan Stack with Solid instead of Tan Stack with React, it gets smaller. But also if you do these other frameworks, it gets even better smaller and then it kind of ends with a bit of a, another rant about React is a bad choice. [38:32] -**Carl:** Yeah, I, I will validate that. To me it also looked like they really tried to give React a fair shake here. [00:38:49] +**Carl:** Yeah, I, I will validate that. To me it also looked like they really tried to give React a fair shake here. [38:49] -Like, you know, if you wanted to, if you were wanting to complain about bundle size, if React apps, like there are so many easy ways to bloat this up to a couple of megabytes. So like the fact that they didn't do that is indicative enough to me that they tried to give this a fair shot. It's cool. I love this. [00:38:55] +Like, you know, if you wanted to, if you were wanting to complain about bundle size, if React apps, like there are so many easy ways to bloat this up to a couple of megabytes. So like the fact that they didn't do that is indicative enough to me that they tried to give this a fair shot. It's cool. I love this. [38:55] -This is a great project, great effort. I don't know that, to me, at the end of the day, this is interesting and fascinating and a great point of comparison, and also like not that meaningful because the performance metrics that you measure here that are easily measured by comparing the outputs of identically functional applications, that's really only like maybe a third of the reason why you would choose to build an app with any particular set of tools. [00:39:11] +This is a great project, great effort. I don't know that, to me, at the end of the day, this is interesting and fascinating and a great point of comparison, and also like not that meaningful because the performance metrics that you measure here that are easily measured by comparing the outputs of identically functional applications, that's really only like maybe a third of the reason why you would choose to build an app with any particular set of tools. [39:11] -Like really, if you're starting a company and hiring engineers and doing a greenfield project. Like some of the most important things are how much will this cost? [00:39:41] +Like really, if you're starting a company and hiring engineers and doing a greenfield project. Like some of the most important things are how much will this cost? [39:41] -**Mark:** How well is everything? How well is everything documented? How easily can we spin up engineers who know these things? I mean, the, the ecosystem argument is a real thing. [00:39:52] +**Mark:** How well is everything? How well is everything documented? How easily can we spin up engineers who know these things? I mean, the, the ecosystem argument is a real thing. [39:52] -**Carl:** And like, you know, if it takes you two months to find a developer, you know, a senior developer who can build your app in Marco, you know, you could do that in a week. I don't know. The hiring for React is much easier than hiring for some niche tool. And I have seen writeups of people saying like, yeah, we built our startup on this niche framework and we couldn't hire for it. And that ended up contributing to the death of the company. [00:39:59] +**Carl:** And like, you know, if it takes you two months to find a developer, you know, a senior developer who can build your app in Marco, you know, you could do that in a week. I don't know. The hiring for React is much easier than hiring for some niche tool. And I have seen writeups of people saying like, yeah, we built our startup on this niche framework and we couldn't hire for it. And that ended up contributing to the death of the company. [39:59] -So like, you know, these performance metrics are important, they're really useful, it's great to have them. So we know where opportunities to improve are like tying this back mark to your Immer work. Like if somebody hadn't complained about performance, you wouldn't know that it needed to get better. [00:40:23] +So like, you know, these performance metrics are important, they're really useful, it's great to have them. So we know where opportunities to improve are like tying this back mark to your Immer work. Like if somebody hadn't complained about performance, you wouldn't know that it needed to get better. [40:23] -Pretty [00:40:37] +Pretty [40:37] -**Mark:** much. Yeah. [00:40:37] +**Mark:** much. Yeah. [40:37] -**Carl:** So this is great and I love it, but it's also not the end all, be all of like decision making for, things. Yeah. It's also, man, this, it's just so hard to read because of how long it is. I wish they'd stripped this down a bit more. [00:40:38] +**Carl:** So this is great and I love it, but it's also not the end all, be all of like decision making for, things. Yeah. It's also, man, this, it's just so hard to read because of how long it is. I wish they'd stripped this down a bit more. [40:38] -**Mo:** And if we take like a step back out of our like web ecosystem bubble for a second, like you go to like the backend world and like enterprise business companies or finance or whatever, and like they employ a lot of developers, right? [00:40:49] +**Mo:** And if we take like a step back out of our like web ecosystem bubble for a second, like you go to like the backend world and like enterprise business companies or finance or whatever, and like they employ a lot of developers, right? [40:49] -Like thousands, thousands and thousands of developers. And like there's a reason they're all on Java and .Net is because like they can hire for those and it's pretty easy to build a team around. That's the top priority. Even like this stuff is quite minuscule when people are, companies are hiring at a large scale. [00:41:04] +Like thousands, thousands and thousands of developers. And like there's a reason they're all on Java and .Net is because like they can hire for those and it's pretty easy to build a team around. That's the top priority. Even like this stuff is quite minuscule when people are, companies are hiring at a large scale. [41:04] -And then the second thing, which is like not accounted for, I think in this like approach of looking at like just the bundle size that's outputted is the fact that like your productivity with the fact that most of the AI tools are really like optimized around React is not something that you should not look at and consider when you're choosing something. [00:41:21] +And then the second thing, which is like not accounted for, I think in this like approach of looking at like just the bundle size that's outputted is the fact that like your productivity with the fact that most of the AI tools are really like optimized around React is not something that you should not look at and consider when you're choosing something. [41:21] -There's so much training data and so much like tooling around building React apps quickly and prototyping React features or React apps that with AI that is just a bit, it feels a bit moot some of some of these conversations. It feels. [00:41:41] +There's so much training data and so much like tooling around building React apps quickly and prototyping React features or React apps that with AI that is just a bit, it feels a bit moot some of some of these conversations. It feels. [41:41] -**Mark:** To be clear, like React has got itself has gotten much bigger over the years. [00:41:55] +**Mark:** To be clear, like React has got itself has gotten much bigger over the years. [41:55] -In fact, even just 18 to 19 it got notice will be bigger. Bigger bundle sizes are not a good thing. We are not sitting here saying Your bundle size does not matter. Alex Russell, as much as I disagree with his communication style is right to point to the technical receipts saying that big bundle sizes are bad, but also it's not the only single metric you should care about. [00:41:59] +In fact, even just 18 to 19 it got notice will be bigger. Bigger bundle sizes are not a good thing. We are not sitting here saying Your bundle size does not matter. Alex Russell, as much as I disagree with his communication style is right to point to the technical receipts saying that big bundle sizes are bad, but also it's not the only single metric you should care about. [41:59] -**Carl:** Yeah, right. Yep. And also, last thing I'll shout out here. I think the author of this blog post also mentions that he tried not to pull in too many dependencies. So like did not pull in fetch wrappers or data fetch tools like React Query and. [00:42:21] +**Carl:** Yeah, right. Yep. And also, last thing I'll shout out here. I think the author of this blog post also mentions that he tried not to pull in too many dependencies. So like did not pull in fetch wrappers or data fetch tools like React Query and. [42:21] -Axios, the data fetch thing, which many people still use, I don't know. They still have a fair amount of utility just for things like observability and security and various guarantees like that. Like Axios itself is 36 kilobytes ified like 14 compressed. React Query is 55 kilobytes. I guess to say that the way he did it is actually better quote unquote for React in terms of the bundle size argument, but it's also not representative of how people actually build apps. [00:42:40] +Axios, the data fetch thing, which many people still use, I don't know. They still have a fair amount of utility just for things like observability and security and various guarantees like that. Like Axios itself is 36 kilobytes ified like 14 compressed. React Query is 55 kilobytes. I guess to say that the way he did it is actually better quote unquote for React in terms of the bundle size argument, but it's also not representative of how people actually build apps. [42:40] -It's a challenge of these types of articles is that by necessity it has to be the level of scope that a single developer can execute on their own, and that's just not how most apps are built. Like most apps are not passion projects by one person. So yeah. Super cool. Love this post. It's interesting more than it is authoritative, I think. [00:43:11] +It's a challenge of these types of articles is that by necessity it has to be the level of scope that a single developer can execute on their own, and that's just not how most apps are built. Like most apps are not passion projects by one person. So yeah. Super cool. Love this post. It's interesting more than it is authoritative, I think. [43:11] -**Mark:** Good way to put it. Mo, tell us about Solito. [00:43:30] +**Mark:** Good way to put it. Mo, tell us about Solito. [43:30] ## [Solito 5](https://solito.dev/v5) -**Mo:** Yes, Solito. So go back a few months. You'll remember that we said Fernando Rojo joined Vercel. And he joined as the head of mobile firm Vercel. This was significant because he's the author of this library called Solito and a few other libraries like Ziga. So he's really, for the last few years, has been focused on. [00:43:33] +**Mo:** Yes, Solito. So go back a few months. You'll remember that we said Fernando Rojo joined Vercel. And he joined as the head of mobile firm Vercel. This was significant because he's the author of this library called Solito and a few other libraries like Ziga. So he's really, for the last few years, has been focused on. [43:33] -Using React native on the web as well, especially with Next.JS. So he built his own startup in that sort of tech stack. It is from experience and having built with this tech stack quite a lot, it's a challenging approach because you are always balancing oversharing between your native components and your React native code and the web functionality that you import in. [00:43:53] +Using React native on the web as well, especially with Next.JS. So he built his own startup in that sort of tech stack. It is from experience and having built with this tech stack quite a lot, it's a challenging approach because you are always balancing oversharing between your native components and your React native code and the web functionality that you import in. [43:53] -And oftentimes that comes at a detriment of performance or ux, depending on if you do it right. And the more that you share, the more chance there is that you're not, you're sharing something that you probably shouldn't share. And so there's a lot of libraries in the secret system, but Solito is probably one of the key ones where it lets you share navigation across Next.JS and React native apps. [00:44:16] +And oftentimes that comes at a detriment of performance or ux, depending on if you do it right. And the more that you share, the more chance there is that you're not, you're sharing something that you probably shouldn't share. And so there's a lot of libraries in the secret system, but Solito is probably one of the key ones where it lets you share navigation across Next.JS and React native apps. [44:16] -Now, we've talked a bit about Toledo in the past. One of the big limitations that any library in this space has is that it relies on React Native Web Now, React native web was made several, several years ago. I think it was back in 2015. And it was made by Nicholas Gallagher. Now, he also did a talk at React Conf, which I would recommend you watch about React strict dom. [00:44:39] +Now, we've talked a bit about Toledo in the past. One of the big limitations that any library in this space has is that it relies on React Native Web Now, React native web was made several, several years ago. I think it was back in 2015. And it was made by Nicholas Gallagher. Now, he also did a talk at React Conf, which I would recommend you watch about React strict dom. [44:39] -But the key thing with React Native Web is that it's not really receiving as much love because Nicholas is working more on React strict dom, which is sort of like the future path for sharing code across the web and mobile. And so React native web is, is a little bit bloated, and what that means is that any library that you really use, especially your, something like your navigation and routing library will import in large portions of React Native Web, even if you're not using all of the APIs. [00:45:00] +But the key thing with React Native Web is that it's not really receiving as much love because Nicholas is working more on React strict dom, which is sort of like the future path for sharing code across the web and mobile. And so React native web is, is a little bit bloated, and what that means is that any library that you really use, especially your, something like your navigation and routing library will import in large portions of React Native Web, even if you're not using all of the APIs. [45:00] -And so that means that your bundle size goes through the roof. And what the Vercel team slash Fernando Roho have now been able to do is actually remove React Native Web as a dependency from from Solito, which is pretty massive. It sets us up in a foundation where you can effectively get ready for React strict dom adoption more easily in the long run, but also means that if you pick and choose your libraries well, when you're building a UniVercel app and you really think about what you're using on the web platforms, you can really start to tackle that bundle size problem. [00:45:25] +And so that means that your bundle size goes through the roof. And what the Vercel team slash Fernando Roho have now been able to do is actually remove React Native Web as a dependency from from Solito, which is pretty massive. It sets us up in a foundation where you can effectively get ready for React strict dom adoption more easily in the long run, but also means that if you pick and choose your libraries well, when you're building a UniVercel app and you really think about what you're using on the web platforms, you can really start to tackle that bundle size problem. [45:25] -It doesn't help if you're using libraries like let's say Reanimated, which has a pretty heavy reliance on React Native web. But if you're going really vanilla and you're very careful, it means that you can actually achieve much better performance on the web by using this new version of Solito, which is very exciting. [00:46:00] +It doesn't help if you're using libraries like let's say Reanimated, which has a pretty heavy reliance on React Native web. But if you're going really vanilla and you're very careful, it means that you can actually achieve much better performance on the web by using this new version of Solito, which is very exciting. [46:00] -So yeah, if you're already using Solito, give it a look and if you're thinking of building a uniVercel app, it's a really good candidate if you wanna build a highly performant web variant of your application. [00:46:16] +So yeah, if you're already using Solito, give it a look and if you're thinking of building a uniVercel app, it's a really good candidate if you wanna build a highly performant web variant of your application. [46:16] -**Carl:** I love that. It definitely makes a lot of sense to start moving away from React Native Web, given that we've compared and contrasted React Native Web with like React strict dom. [00:46:25] +**Carl:** I love that. It definitely makes a lot of sense to start moving away from React Native Web, given that we've compared and contrasted React Native Web with like React strict dom. [46:25] -I guess it makes sense to move away from React native web, 'cause the guy who made it is now doing a different thing in the exact same space from a very different angle. So yeah, that's a pretty strong argument for changing. [00:46:35] +I guess it makes sense to move away from React native web, 'cause the guy who made it is now doing a different thing in the exact same space from a very different angle. So yeah, that's a pretty strong argument for changing. [46:35] ## Next 16 and Directives debate -**Mark:** Okay, the last major topic for the day next 16 and directives. [00:46:49] +**Mark:** Okay, the last major topic for the day next 16 and directives. [46:49] ## [Next 16 released](https://nextjs.org/blog/next-16) -**Mark:** So next 16 came out. The headline feature is they now have what they're calling cash components. This is the, I don't know, second, third, fourth iteration on how to do caching in next, across the last couple major versions. I'm not gonna pretend that I understand what, how this works. [00:46:56] +**Mark:** So next 16 came out. The headline feature is they now have what they're calling cash components. This is the, I don't know, second, third, fourth iteration on how to do caching in next, across the last couple major versions. I'm not gonna pretend that I understand what, how this works. [46:56] -No one does, but thing is that they introduced. Another new directive. Now to recap a directive is these little strings that you just put in your code. Originally we had use strict back in the ES 2015 days and then React server components introduced, use server and use client, and now we have 'use cache'. [00:47:15] +No one does, but thing is that they introduced. Another new directive. Now to recap a directive is these little strings that you just put in your code. Originally we had use strict back in the ES 2015 days and then React server components introduced, use server and use client, and now we have 'use cache'. [47:15] -And the idea is that by slapping this directive on certain components, that tells the next bundler and compiler that, Hey, this is the output of this component is supposed to be cached. I don't understand the details. From there, go read the documentation long. With that, they also announced a new long-lived workflow product, kind of similar to what the temporal company. [00:47:40] +And the idea is that by slapping this directive on certain components, that tells the next bundler and compiler that, Hey, this is the output of this component is supposed to be cached. I don't understand the details. From there, go read the documentation long. With that, they also announced a new long-lived workflow product, kind of similar to what the temporal company. [47:40] -Has built where you can have a function, for example, that implements a billing workflow by sweeping for 30 days and you've written what looks like one function, but under the hood it's actually like saving its status to a database and then a time job wakes it up and continues executing the code, that sort of thing. [00:48:03] +Has built where you can have a function, for example, that implements a billing workflow by sweeping for 30 days and you've written what looks like one function, but under the hood it's actually like saving its status to a database and then a time job wakes it up and continues executing the code, that sort of thing. [48:03] -And I believe they opted to implement this also with a use workflow directive and like a use step directive. And I think there may have even been one or two others related to variations on caching, like use Cache, remote, something like that. And meanwhile, we've also got the React compiler has opted to use directives for a couple things. [00:48:23] +And I believe they opted to implement this also with a use workflow directive and like a use step directive. And I think there may have even been one or two others related to variations on caching, like use Cache, remote, something like that. And meanwhile, we've also got the React compiler has opted to use directives for a couple things. [48:23] -So there's a use no memo directive. If you want to tell the compiler, don't try to auto optimize this component. And so all of a sudden we've gone from the JavaScript language specifying. One directive. There was also the unofficial, oh, was it use a SM directive that was part of a SM js, the precursor to web assembly, but like one official directive in the language. [00:48:48] +So there's a use no memo directive. If you want to tell the compiler, don't try to auto optimize this component. And so all of a sudden we've gone from the JavaScript language specifying. One directive. There was also the unofficial, oh, was it use a SM directive that was part of a SM js, the precursor to web assembly, but like one official directive in the language. [48:48] -And now we have a couple for bundlers, and now we have more for workflows and the compiler and all these other things. And so the Twitter discourse over the last couple weeks has been our directives, good or bad. And they're so confusing and they are changing the language. And you have all this bundler defined behavior that is not part of the language spec. [00:49:18] +And now we have a couple for bundlers, and now we have more for workflows and the compiler and all these other things. And so the Twitter discourse over the last couple weeks has been our directives, good or bad. And they're so confusing and they are changing the language. And you have all this bundler defined behavior that is not part of the language spec. [49:18] ## [Directives and the Platform Boundary](https://tanstack.com/blog/directives-and-the-platform-boundary) -**Mark:** And so Tanner Linsley, again, creator of all the different Tan Stack libraries, put out a blog post where he expressed his opinion that he does not think directives are a good idea. Because they are unofficial, because they're not standardized, because make it not clear what the actual intended behavior ought to be, as opposed to like explicitly importing a function that says, turn this into a client server function or something like that. [00:49:41] +**Mark:** And so Tanner Linsley, again, creator of all the different Tan Stack libraries, put out a blog post where he expressed his opinion that he does not think directives are a good idea. Because they are unofficial, because they're not standardized, because make it not clear what the actual intended behavior ought to be, as opposed to like explicitly importing a function that says, turn this into a client server function or something like that. [49:41] -So there there's been a lot of arguing about directives and are they understandable? Are they good or bad? Are they too much magic? So that's been happening. [00:50:11] +So there there's been a lot of arguing about directives and are they understandable? Are they good or bad? Are they too much magic? So that's been happening. [50:11] -**Carl:** I'll say it. They're bad. It's too much magic. I hate it. I'm not a fan. [00:50:22] +**Carl:** I'll say it. They're bad. It's too much magic. I hate it. I'm not a fan. [50:22] -**Mark:** I understand the thought process. I, I can't say I'm thrilled. And so on that note, two article articles that are related enough to throw them into this section. [00:50:26] +**Mark:** I understand the thought process. I, I can't say I'm thrilled. And so on that note, two article articles that are related enough to throw them into this section. [50:26] ## Technical critique of Next App Router: [Everyone Hates Next.js](https://paperclover.net/blog/webdev/everyone-hates-nextjs) -**Mark:** I've seen lots of different article articles upset at Next or critiquing next. Most of them are frankly very badly written, but I saw one come out last week that I thought was very well written and focused strictly on the technical pros and cons of using the App Router. The title is Clickbait, everyone Hates Next, but the article itself is actually very well written. [00:50:34] +**Mark:** I've seen lots of different article articles upset at Next or critiquing next. Most of them are frankly very badly written, but I saw one come out last week that I thought was very well written and focused strictly on the technical pros and cons of using the App Router. The title is Clickbait, everyone Hates Next, but the article itself is actually very well written. [50:34] -It discusses technical aspects of using Next, some of the problems his team went in, ran into, and how and why they ended up migrating from the App Router over to 10 Stack Start. And then Nadia Vic, who has done a bunch of very excellent articles on React rendering behavior, put together a very data-driven look into do server components actually help with things like First Contentual Paint and various other White House style metrics. [00:50:57] +It discusses technical aspects of using Next, some of the problems his team went in, ran into, and how and why they ended up migrating from the App Router over to 10 Stack Start. And then Nadia Vic, who has done a bunch of very excellent articles on React rendering behavior, put together a very data-driven look into do server components actually help with things like First Contentual Paint and various other White House style metrics. [50:57] -So very worth reading. [00:51:26] +So very worth reading. [51:26] -**Carl:** As I'm trying to think about how you might solve problems of caching and runtime things without directives. And I'm thinking about, you know, my experiences using like CloudFlare workers or other runtimes where it's not a traditional process scope. And I don't know, I guess like it is a really challenging question of like, how do you signal to a developer that the file they're editing runs in a certain type of context? [00:51:27] +**Carl:** As I'm trying to think about how you might solve problems of caching and runtime things without directives. And I'm thinking about, you know, my experiences using like CloudFlare workers or other runtimes where it's not a traditional process scope. And I don't know, I guess like it is a really challenging question of like, how do you signal to a developer that the file they're editing runs in a certain type of context? [51:27] -And I guess I understand why directives are an appealing thing to reach for, but man, just the state we're in right now is really a lot. I found the Next.JS docs page with directives and it lists 'use cache', 'use client', 'use server', and then two sub variants of 'use cache'. And that's not all of 'em that, so there's missing ones here and. [00:51:56] +And I guess I understand why directives are an appealing thing to reach for, but man, just the state we're in right now is really a lot. I found the Next.JS docs page with directives and it lists 'use cache', 'use client', 'use server', and then two sub variants of 'use cache'. And that's not all of 'em that, so there's missing ones here and. [51:56] -I don't know. When you start getting into like many different contexts, just naming them at the top of the file doesn't really seem like enough for me. I don't know. And then like the implication for that code can import other code that will not have it flagged what context it's running in via a directive at the top of the file. [00:52:20] +I don't know. When you start getting into like many different contexts, just naming them at the top of the file doesn't really seem like enough for me. I don't know. And then like the implication for that code can import other code that will not have it flagged what context it's running in via a directive at the top of the file. [52:20] -And I don't know. It's a tough problem. It's a weird unanswered question in the industry, like not even the ecosystem, but like the industry. How do you flag code that might run on your browser, a real server, serverless environment, and yeah, I don't know. It's a challenge. [00:52:40] +And I don't know. It's a tough problem. It's a weird unanswered question in the industry, like not even the ecosystem, but like the industry. How do you flag code that might run on your browser, a real server, serverless environment, and yeah, I don't know. It's a challenge. [52:40] -**Mark:** I think it really does speak to the overhead and mental complexity of trying to juggle all these things. [00:52:58] +**Mark:** I think it really does speak to the overhead and mental complexity of trying to juggle all these things. [52:58] -We said earlier that React 19 has, 18, 19 have introduced a whole lot of things like transitions and other pieces to try to let you write better user experiences. But now you're having to juggle in your head like, here's the current version of my app in its display state versus a work in progress rendered version versus a future output rendered version. [00:53:04] +We said earlier that React 19 has, 18, 19 have introduced a whole lot of things like transitions and other pieces to try to let you write better user experiences. But now you're having to juggle in your head like, here's the current version of my app in its display state versus a work in progress rendered version versus a future output rendered version. [53:04] -On the server side we're having to deal with, this is server code, this is client code, sometimes they're mixed together in the same file, sometimes they're mixed together in the same component. Which code is running? In which context do I have to worry about accidentally leaking security tokens or something like that. [00:53:28] +On the server side we're having to deal with, this is server code, this is client code, sometimes they're mixed together in the same file, sometimes they're mixed together in the same component. Which code is running? In which context do I have to worry about accidentally leaking security tokens or something like that. [53:28] -We're building tools to solve real problems, but there's more and more to juggle in your head as you go. [00:53:46] +We're building tools to solve real problems, but there's more and more to juggle in your head as you go. [53:46] -**Carl:** Well, I'm gonna plug effect one more time because I saw it come up in the chat. Oh, man. It just like talking about different ways of signaling facts about the code. The code you're writing has certain dependencies. [00:53:53] +**Carl:** Well, I'm gonna plug effect one more time because I saw it come up in the chat. Oh, man. It just like talking about different ways of signaling facts about the code. The code you're writing has certain dependencies. [53:53] -Certain dependencies is too loaded. That's, that carries too much context with it, but the code you write has a certain amount of assumption baked into it about what will be available and what it can rely on. The thing I love about a fact is that it makes that more explicit and brings it into the type system. [00:54:06] +Certain dependencies is too loaded. That's, that carries too much context with it, but the code you write has a certain amount of assumption baked into it about what will be available and what it can rely on. The thing I love about a fact is that it makes that more explicit and brings it into the type system. [54:06] -So I think the challenge right now is that we are missing a like platform and language level abstraction to express information like this. And yeah, I don't think we're gonna get it anytime soon. And I think these explorations will lead to something like that and hopefully converge into something. But I think this is gonna be like a real state-of-the-art problem for a couple of years and still, which I hate, but it'll get better. [00:54:26] +So I think the challenge right now is that we are missing a like platform and language level abstraction to express information like this. And yeah, I don't think we're gonna get it anytime soon. And I think these explorations will lead to something like that and hopefully converge into something. But I think this is gonna be like a real state-of-the-art problem for a couple of years and still, which I hate, but it'll get better. [54:26] ## ⚡ Lightning round ⚡ -**Mark:** Alright, moving on to the lightning round. [00:54:56] +**Mark:** Alright, moving on to the lightning round. [54:56] ## [ViteConf roundup](https://voidzero.dev/posts/whats-new-viteconf-2025) -**Mark:** In addition to React Con and Remix Jam, we also had Vite Conf and the V team gave a bunch of updates on all the different tools they've been working on. Some of the highlights to me were that OX LT now supports ES lint and JS plugins via some really awesome tricks for interop between js and rust without the the cost of serial serialization. [00:54:58] +**Mark:** In addition to React Con and Remix Jam, we also had Vite Conf and the V team gave a bunch of updates on all the different tools they've been working on. Some of the highlights to me were that OX LT now supports ES lint and JS plugins via some really awesome tricks for interop between js and rust without the the cost of serial serialization. [54:58] -They announced a combined tool chain called v plus, which basically pulls all the different tools, VIOX lint, OX format, Vitest, everything else together. That'll be their enterprise sales targeted tool set. And then Vitest four is out with browser mode support. You basically just put a flag in your Vitest config and suddenly your tests are running in a real browser instead of a node plus js. [00:55:21] +They announced a combined tool chain called v plus, which basically pulls all the different tools, VIOX lint, OX format, Vitest, everything else together. That'll be their enterprise sales targeted tool set. And then Vitest four is out with browser mode support. You basically just put a flag in your Vitest config and suddenly your tests are running in a real browser instead of a node plus js. [55:21] ## [AWS Outage Postmortem](https://aws.amazon.com/message/101925/) -**Mark:** Last week, AWS east went down and the internet died and they put out the postmortem and it was DNS apparently they, their internal DNS system for dynamo DB had like three different instances of the DNS updater running and one of them got stuck and was taking a long time to complete, and the other one came along and updated and then said, well, these, some of these plans look out of date, let's delete them. [00:55:49] +**Mark:** Last week, AWS east went down and the internet died and they put out the postmortem and it was DNS apparently they, their internal DNS system for dynamo DB had like three different instances of the DNS updater running and one of them got stuck and was taking a long time to complete, and the other one came along and updated and then said, well, these, some of these plans look out of date, let's delete them. [55:49] -And next thing you know, DNS goes down, dynamo DB goes down and the internet goes down. So, oops. [00:56:19] +And next thing you know, DNS goes down, dynamo DB goes down and the internet goes down. So, oops. [56:19] -**Mo:** It's funny that the, uh, internet is backed by Dynamo db. [00:56:28] +**Mo:** It's funny that the, uh, internet is backed by Dynamo db. [56:28] -**Mark:** A lot of people like us East One is the default. A lot of people have tried to get away from US East one, but when a lot of Amazon's own stuff depends on US. [00:56:31] +**Mark:** A lot of people like us East One is the default. A lot of people have tried to get away from US East one, but when a lot of Amazon's own stuff depends on US. [56:31] -East one. Yep. You all [00:56:39] +East one. Yep. You all [56:39] -**Mo:** of your certificates can only be issued in US East one, so that doesn't really help much. Side note, if you end up working in a consultancy one day, just hope nothing like this happens because the morning of was fascinating reaching out and getting reached out to by a bunch of clients being like, my site is down. [00:56:40] +**Mo:** of your certificates can only be issued in US East one, so that doesn't really help much. Side note, if you end up working in a consultancy one day, just hope nothing like this happens because the morning of was fascinating reaching out and getting reached out to by a bunch of clients being like, my site is down. [56:40] -And then having to figure out what's going wrong, which is US East one on AWS. So it was a fun Monday, [00:56:57] +And then having to figure out what's going wrong, which is US East one on AWS. So it was a fun Monday, [56:57] -**Carl:** but at least the uh, at the end of it was a vendor is out. This is not our fault. [00:57:02] +**Carl:** but at least the uh, at the end of it was a vendor is out. This is not our fault. [57:02] -**Mo:** At least it was that, which was great. Cool. Moving on. [00:57:07] +**Mo:** At least it was that, which was great. Cool. Moving on. [57:07] ## [Voltra](https://x.com/saul_sharma/status/1972161677165473980) -**Mo:** So a couple of React native lightning route items. Firstly ra, which is really cool because we've talked a little bit about live activities on iOS and iOS extensions, all of the little widgets and stuff that you can now use on your iPhone. [00:57:10] +**Mo:** So a couple of React native lightning route items. Firstly ra, which is really cool because we've talked a little bit about live activities on iOS and iOS extensions, all of the little widgets and stuff that you can now use on your iPhone. [57:10] -And you were able to use iOS extensions within a React native app. But the challenge was you had to write SWIFT code to be able to actually implement those. And so a independent developer named S has been working on building an MPM package that allows you to ship these custom widgets and extensions without needing to use Swift X code or extra js, which is so cool because he's basically had to like write a translation layer or a render that takes React UI code. [00:57:24] +And you were able to use iOS extensions within a React native app. But the challenge was you had to write SWIFT code to be able to actually implement those. And so a independent developer named S has been working on building an MPM package that allows you to ship these custom widgets and extensions without needing to use Swift X code or extra js, which is so cool because he's basically had to like write a translation layer or a render that takes React UI code. [57:24] -And converted to Swift UI code, which is not trivial because many have tried before him and failed. So this is a really cool project and like it's one of those things that's like kind of mind blowing. So kudos to him for making this. [00:57:55] +And converted to Swift UI code, which is not trivial because many have tried before him and failed. So this is a really cool project and like it's one of those things that's like kind of mind blowing. So kudos to him for making this. [57:55] ## [Building fully native apps with EAS](https://blog.swmansion.com/building-fully-native-ios-apps-with-expo-eas-760b5480d7c5) -**Mo:** Secondly, and I thought this was an interesting article to link to. On the expo blog, they publish an article about building fully native apps with EAS. So EAS is expo's application services. Typically, this is being used to build React native apps that are usually running on Expo, but actually a lesser known fact, and one that we've actually used on some of our apps is that you don't need to be on Expo and you don't even need to be on a React native app. [00:58:10] +**Mo:** Secondly, and I thought this was an interesting article to link to. On the expo blog, they publish an article about building fully native apps with EAS. So EAS is expo's application services. Typically, this is being used to build React native apps that are usually running on Expo, but actually a lesser known fact, and one that we've actually used on some of our apps is that you don't need to be on Expo and you don't even need to be on a React native app. [58:10] -And so EAS is really great and it's become super mature and it's a really just good build tool for building mobile apps. And so people have started to use it in the wider mobile community rather than it just being a React native thing, which is quite cool to see. [00:58:39] +And so EAS is really great and it's become super mature and it's a really just good build tool for building mobile apps. And so people have started to use it in the wider mobile community rather than it just being a React native thing, which is quite cool to see. [58:39] ## [React Native \\\<\\\> Imgui](https://x.com/tmikov/status/1979771014340047088) -**Mo:** And lastly, this was something that Tzveton from the Hermes team in Meta actually, uh, published a week or so ago. [00:58:52] +**Mo:** And lastly, this was something that Tzveton from the Hermes team in Meta actually, uh, published a week or so ago. [58:52] -And this was actually something he linked me on a DM because we were chatting about interesting things that could be talked about at a conference by a Hermes team. And this was quite cool to see. So for those who don't know, Imgui is like a very light UI layer that is powering a lot of sort of debugging for video games. [00:59:00] +And this was actually something he linked me on a DM because we were chatting about interesting things that could be talked about at a conference by a Hermes team. And this was quite cool to see. So for those who don't know, Imgui is like a very light UI layer that is powering a lot of sort of debugging for video games. [59:00] -And it's used in a bunch of other places, but like the key thing is that it's just like a very, very lightweight UI layer. And so he made a puck of basically using React and then rendering it on Imgui, which is quite cool. And it runs obviously like fully natively. It's fully running on c plus plus. And all it really needed was some typed JavaScript and it's basically just React really, which is quite cool. [00:59:18] +And it's used in a bunch of other places, but like the key thing is that it's just like a very, very lightweight UI layer. And so he made a puck of basically using React and then rendering it on Imgui, which is quite cool. And it runs obviously like fully natively. It's fully running on c plus plus. And all it really needed was some typed JavaScript and it's basically just React really, which is quite cool. [59:18] -So yeah, it's just a little cool fun POC, but it shows the power of using React and how it can be applied to different contexts, which I thought was quite cool to include. [00:59:43] +So yeah, it's just a little cool fun POC, but it shows the power of using React and how it can be applied to different contexts, which I thought was quite cool to include. [59:43] ## [Lodash maintenance foundation](https://blog.ulisesgascon.com/the-future-of-lodash) -**Mark:** Okay, Lodash has powered much of the JavaScript ecosystem for years. Those of us who have been around for a while, remember its predecessor, but low, has also been relatively unmaintained for a while. [00:59:53] +**Mark:** Okay, Lodash has powered much of the JavaScript ecosystem for years. Those of us who have been around for a while, remember its predecessor, but low, has also been relatively unmaintained for a while. [59:53] The author John David Dalton, said there was going to be a low dash version five, and then that never really happened, and so some announcements came out in the last week or two. That low dash is being taken over by a new maintenance foundation, and they're going to be doing work to update the ci, put out some new maintenance releases, and then apparently when low dash V five happens, it'll be more about stripping out a lot of the internals that tried to polyfill platform behavior and try and make it lighter and make use of platform built-ins at this point. [01:00:05] diff --git a/src/transcripts/tmir-april-2023.md b/src/transcripts/tmir-april-2023.md index bbbb1f8..638ccb2 100644 --- a/src/transcripts/tmir-april-2023.md +++ b/src/transcripts/tmir-april-2023.md @@ -11,13 +11,13 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_), [Mark Erikson](https://twit # This Month in React 2023 April -**Carl Vitullo:** Welcome everyone. Thanks for joining us for April's edition of this Month in React, where we talk about what's going on in the React ecosystem. Mark and Sebastian, could you introduce yourself? [00:00:09] +**Carl Vitullo:** Welcome everyone. Thanks for joining us for April's edition of this Month in React, where we talk about what's going on in the React ecosystem. Mark and Sebastian, could you introduce yourself? [00:09] -**Mark Erikson:** I'm Mark Erickson. I'm a senior front end engineer at Replay, where we're building a true time traveling to bugger for JavaScript. Also, I do a whole lot of Redex stuff. [00:00:18] +**Mark Erikson:** I'm Mark Erickson. I'm a senior front end engineer at Replay, where we're building a true time traveling to bugger for JavaScript. Also, I do a whole lot of Redex stuff. [00:18] -**Sebastien Lorber:** So, yeah, I'm Sebastian. I created the This Week In React newsletter, and I'm also the maintainer of Docusaurus, which is a static site generator that many direct websites, use today. [00:00:30] +**Sebastien Lorber:** So, yeah, I'm Sebastian. I created the This Week In React newsletter, and I'm also the maintainer of Docusaurus, which is a static site generator that many direct websites, use today. [00:30] -**Carl Vitullo:** I'll kick us off. The way we do these news events is we do a round robin where one of us will introduce a link from the past month and then we all discuss it until we run other things to say. [00:00:40] +**Carl Vitullo:** I'll kick us off. The way we do these news events is we do a round robin where one of us will introduce a link from the past month and then we all discuss it until we run other things to say. [00:40] ## React Visualized, react.gg @@ -25,63 +25,63 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_), [Mark Erikson](https://twit - [⁠⁠⁠Launch tweet⁠⁠⁠](https://twitter.com/tylermcginnis/status/1642969928562262020) - [⁠⁠⁠The Story of React, uidotdev⁠⁠⁠](https://www.youtube.com/watch?v=Wm_xI7KntDs) -**Carl Vitullo:** Yeah, I guess I'll start with React Visualized react.gg. I just saw this, this is from Tyler McGinnis. He does the bites.dev newsletter. He's been in the React ecosystem for probably, at least as long as I have, maybe longer, I feel like. But definitely a, a giant in the ecosystem and excited to have such a high quality looking resource for learningReact. [00:01:01] +**Carl Vitullo:** Yeah, I guess I'll start with React Visualized react.gg. I just saw this, this is from Tyler McGinnis. He does the bites.dev newsletter. He's been in the React ecosystem for probably, at least as long as I have, maybe longer, I feel like. But definitely a, a giant in the ecosystem and excited to have such a high quality looking resource for learningReact. [01:01] -**Mark Erikson:** Yeah, so there's, there's a couple things going on here. So Tyler runs a training company called UI.Dev, which makes, you know, a bunch of different courses including React Things, and I think they've had a couple different iterations of some of their different React courses. One thing I've seen Tyler do over the last couple years is that he's, he and this company have made a few different videos explaining various aspects of React, but from my perspective, even more importantly, explaining why some of those things about React exist. [00:01:31] +**Mark Erikson:** Yeah, so there's, there's a couple things going on here. So Tyler runs a training company called UI.Dev, which makes, you know, a bunch of different courses including React Things, and I think they've had a couple different iterations of some of their different React courses. One thing I've seen Tyler do over the last couple years is that he's, he and this company have made a few different videos explaining various aspects of React, but from my perspective, even more importantly, explaining why some of those things about React exist. [01:31] -This React Visualized thing, I actually saw them do a video version of this first. It talks, it like goes back in history to, you know, 2010, ancient history by this time. [00:01:44] +This React Visualized thing, I actually saw them do a video version of this first. It talks, it like goes back in history to, you know, 2010, ancient history by this time. [01:44] -**Carl Vitullo:** Ancient! [00:01:44] +**Carl Vitullo:** Ancient! [01:44] -**Mark Erikson:** And, and it talks about, you know, frameworks like Angular and backbone and or, you know, even, vanilla JS, JQuery and some of the pain points people were experiencing working with those. And then it talks about how React was designed to solve some of those pain points as background information. It's sort of like a history lesson plus a, like why does React exist plus, like what are some of the basic concepts of React as an introduction. [00:02:11] +**Mark Erikson:** And, and it talks about, you know, frameworks like Angular and backbone and or, you know, even, vanilla JS, JQuery and some of the pain points people were experiencing working with those. And then it talks about how React was designed to solve some of those pain points as background information. It's sort of like a history lesson plus a, like why does React exist plus, like what are some of the basic concepts of React as an introduction. [02:11] -He did both a video that I saw posted on YouTube. I'm not sure it's actually, it's actually linked from this site, and then this actual React Visualized site, which is semi-interactive visual page that shows a lot of that same information. I'm a really big fan of the concept, that it helps to understand what problems tools were designed to solve in the first place, in order to help learn them properly. [00:02:35] +He did both a video that I saw posted on YouTube. I'm not sure it's actually, it's actually linked from this site, and then this actual React Visualized site, which is semi-interactive visual page that shows a lot of that same information. I'm a really big fan of the concept, that it helps to understand what problems tools were designed to solve in the first place, in order to help learn them properly. [02:35] -I really appreciate that Tyler is kind of taking that approach with some of this training material. Also, like if you, if you haven't seen any of the videos that Tyler has done, they do a nice little mixture of like, straight up serious explanation and historical clips of people talking at conferences where they were announcing certain tools and then like random, snarky, funny bits. [00:02:57] +I really appreciate that Tyler is kind of taking that approach with some of this training material. Also, like if you, if you haven't seen any of the videos that Tyler has done, they do a nice little mixture of like, straight up serious explanation and historical clips of people talking at conferences where they were announcing certain tools and then like random, snarky, funny bits. [02:57] -**Carl Vitullo:** Nice. Yeah, I do. I do love the, all the context for why React is, I think it's really important to understand where it came from in order to understand why it is the way it is. I think that is a very helpful framing. I hadn't heard about the, the YouTube videos, so, thanks for, thanks for putting that on my radar. I'll see if I can find some links for when we publish the recording of this. [00:03:17] +**Carl Vitullo:** Nice. Yeah, I do. I do love the, all the context for why React is, I think it's really important to understand where it came from in order to understand why it is the way it is. I think that is a very helpful framing. I hadn't heard about the, the YouTube videos, so, thanks for, thanks for putting that on my radar. I'll see if I can find some links for when we publish the recording of this. [03:17] -**Sebastien Lorber:** Yeah, I think the. they build all this because they are releasing a course, pretty soon. That is a work in progress, and they created their own, course platform. So somehow I think this resource is, is a symbol of the, the quality of the course that they try to, to achieve. And it looks like, maybe it'll be the, the best competitor to Josh Comeau's course, I think because, both, look, like very polished. [00:03:42] +**Sebastien Lorber:** Yeah, I think the. they build all this because they are releasing a course, pretty soon. That is a work in progress, and they created their own, course platform. So somehow I think this resource is, is a symbol of the, the quality of the course that they try to, to achieve. And it looks like, maybe it'll be the, the best competitor to Josh Comeau's course, I think because, both, look, like very polished. [03:42] -**Carl Vitullo:** When your competition is Josh Comeau that you're in pretty good company. Cool. [00:03:46] +**Carl Vitullo:** When your competition is Josh Comeau that you're in pretty good company. Cool. [03:46] -Yeah, Mark, you want to kick us off with our next link? [00:03:49] +Yeah, Mark, you want to kick us off with our next link? [03:49] ## Immer v10 - [⁠⁠⁠Immer v10⁠⁠⁠](https://github.com/immerjs/immer/releases/tag/v10.0.0) -**Mark Erikson:** Immer version 10 just came out this last week. And for background, Immer is a library to simplify making immutable updates. So if you've used React, or Redux, you're probably familiar with having to do a whole bunch of, like spread the object, spread the nested object, spread `state.a.b.c`, or you know, mapping the arrays, slicing the arrays, concating the arrays, all that kind of stuff. Immutable updates are hard to get right. They're long, they're hard to read. It's easy to make mistakes. [00:04:17] +**Mark Erikson:** Immer version 10 just came out this last week. And for background, Immer is a library to simplify making immutable updates. So if you've used React, or Redux, you're probably familiar with having to do a whole bunch of, like spread the object, spread the nested object, spread `state.a.b.c`, or you know, mapping the arrays, slicing the arrays, concating the arrays, all that kind of stuff. Immutable updates are hard to get right. They're long, they're hard to read. It's easy to make mistakes. [04:17] -Immer is a great library from Michel Westrate, the author of the MobX state management library. It lets it wraps your data in a proxy object, and then inside of that, you can write what looks like mutating syntax. So, `state.value` equals 1, 2, 3, and it traps those changes and turns it into a safe and correct immutable update. And in fact, we've been using Immer inside of Redux Toolkit since the very first proof of concept. [00:04:46] +Immer is a great library from Michel Westrate, the author of the MobX state management library. It lets it wraps your data in a proxy object, and then inside of that, you can write what looks like mutating syntax. So, `state.value` equals 1, 2, 3, and it traps those changes and turns it into a safe and correct immutable update. And in fact, we've been using Immer inside of Redux Toolkit since the very first proof of concept. [04:46] -Immer has been around for a few years and they were on version nine. Immer still had, various pieces of legacy support. They had a ES5 fullback mode so that it would work in environments that didn't support proxies, which was primarily either IE11 or older versions of React Native before the Hermes JavaScript engine added proxy support. It, it also was trying to be like a little too correct in copying properties on objects. [00:05:14] +Immer has been around for a few years and they were on version nine. Immer still had, various pieces of legacy support. They had a ES5 fullback mode so that it would work in environments that didn't support proxies, which was primarily either IE11 or older versions of React Native before the Hermes JavaScript engine added proxy support. It, it also was trying to be like a little too correct in copying properties on objects. [05:14] -It was doing a lot of like diligent, careful little checks for getters and a bunch of other things, and it was like correct behavior, but that also kind of slowed down the work of making the copies, for the most part, you know, assuming you're dealing with small data that wasn't too much of a per overhead and goodness knows the, the simplicity benefits made it worth it. [00:05:35] +It was doing a lot of like diligent, careful little checks for getters and a bunch of other things, and it was like correct behavior, but that also kind of slowed down the work of making the copies, for the most part, you know, assuming you're dealing with small data that wasn't too much of a per overhead and goodness knows the, the simplicity benefits made it worth it. [05:35] -But for Immer 10, Michel Westrate made a bunch of updates. he dropped the ES5 fallback, and he also kind of adopted a looser approach to copying properties in new objects that is significantly faster. He'd been putting that, he'd been working on that for about the last month. Put out a few betas. [00:05:55] +But for Immer 10, Michel Westrate made a bunch of updates. he dropped the ES5 fallback, and he also kind of adopted a looser approach to copying properties in new objects that is significantly faster. He'd been putting that, he'd been working on that for about the last month. Put out a few betas. [05:55] -We tried them out over in Redux Toolkit, and Immer 10 final just came out about a week ago. It is noticeably faster and it's nice. And I actually contributed a PR to help improve the build tooling setup, and that helped improve some of the module formatting, ESM, CommonJS, and also help shrink the bundle size as well. [00:06:19] +We tried them out over in Redux Toolkit, and Immer 10 final just came out about a week ago. It is noticeably faster and it's nice. And I actually contributed a PR to help improve the build tooling setup, and that helped improve some of the module formatting, ESM, CommonJS, and also help shrink the bundle size as well. [06:19] -So I'm really excited about that in general, and especially because that's gonna be included in Redux Toolkit version two, which we've already got in Alphas. So it's sort of a, a free win for a lot of the ecosystem in terms of bundle size and performance. [00:06:33] +So I'm really excited about that in general, and especially because that's gonna be included in Redux Toolkit version two, which we've already got in Alphas. So it's sort of a, a free win for a lot of the ecosystem in terms of bundle size and performance. [06:33] -**Carl Vitullo:** Nice. Yeah. I know that Immer from the start relied on on a lot of newer JavaScript features. I remember it being like a little bit of a, you know, maybe not a miracle, but a tough project to get it to work in more legacy environments like ES5. So now that they're able to drop some of that code. Makes sense that there'd be a lot of, you know, long tail enhancements, like bundle size and performance. That's awesome. Hell yeah. [00:06:58] +**Carl Vitullo:** Nice. Yeah. I know that Immer from the start relied on on a lot of newer JavaScript features. I remember it being like a little bit of a, you know, maybe not a miracle, but a tough project to get it to work in more legacy environments like ES5. So now that they're able to drop some of that code. Makes sense that there'd be a lot of, you know, long tail enhancements, like bundle size and performance. That's awesome. Hell yeah. [06:58] -**Mark Erikson:** Michel Westrate is a genius. [00:07:00] +**Mark Erikson:** Michel Westrate is a genius. [07:00] -**Sebastien Lorber:** Yeah, I actually, I've seen a few, competitors projects. I don't know, but maybe, one or two were claiming to be, much faster than ImmerJS, but I think maybe they didn't support the older environments in the first place. So of course, it's, it's easier when you reduce the scope of, the library. [00:07:20] +**Sebastien Lorber:** Yeah, I actually, I've seen a few, competitors projects. I don't know, but maybe, one or two were claiming to be, much faster than ImmerJS, but I think maybe they didn't support the older environments in the first place. So of course, it's, it's easier when you reduce the scope of, the library. [07:20] -**Mark Erikson:** Yeah, I, I saw two different Immer equivalants, or competitors, pop up within the last few months. one is called Mutative and the other is called Structura. and they, they both perform the same basic function, wrap your data and a proxy, track the updates, make 'em immutable. [00:07:38] +**Mark Erikson:** Yeah, I, I saw two different Immer equivalants, or competitors, pop up within the last few months. one is called Mutative and the other is called Structura. and they, they both perform the same basic function, wrap your data and a proxy, track the updates, make 'em immutable. [07:38] -On the Redux side, we've had Immer built-in as a hard coded, non-negotiable part of `createSlice` from the beginning. Partly because we think Immer is using Immer is the right choice. But like we've had people say like, "I don't wanna use Immer." And we're like, then don't use Redux Toolkit because we think it's the right thing to do. And we're not making that configurable in any way. [00:08:00] +On the Redux side, we've had Immer built-in as a hard coded, non-negotiable part of `createSlice` from the beginning. Partly because we think Immer is using Immer is the right choice. But like we've had people say like, "I don't wanna use Immer." And we're like, then don't use Redux Toolkit because we think it's the right thing to do. And we're not making that configurable in any way. [08:00] -Because a couple potential competitors did come out, we actually have an experimental PR over on the Redux Toolkit side that tries to let you swap out which immutable update library gets used inside of like create slice and stuff. It's tough because we actually use those imports in a lot of different places and so, you know, trying to figure out how to sort of turn them into like factories that let you configure it is tough. [00:08:27] +Because a couple potential competitors did come out, we actually have an experimental PR over on the Redux Toolkit side that tries to let you swap out which immutable update library gets used inside of like create slice and stuff. It's tough because we actually use those imports in a lot of different places and so, you know, trying to figure out how to sort of turn them into like factories that let you configure it is tough. [08:27] -And I'm, I'm not sure if that'll actually end up getting merged, but given that there's a couple other equivalent tools for immutable updates, we figured it was worth at least kind of playing around with it a little bit. [00:08:38] +And I'm, I'm not sure if that'll actually end up getting merged, but given that there's a couple other equivalent tools for immutable updates, we figured it was worth at least kind of playing around with it a little bit. [08:38] -**Carl Vitullo:** Nice. Yeah. Makes sense. [00:08:39] +**Carl Vitullo:** Nice. Yeah. Makes sense. [08:39] -Yeah. Sebastian, you wanna take us off? [00:08:41] +Yeah. Sebastian, you wanna take us off? [08:41] ## NextJS 13.3 @@ -89,121 +89,121 @@ Yeah. Sebastian, you wanna take us off? [00:08:41] - [⁠⁠⁠Rich Harris talk⁠⁠⁠](https://www.youtube.com/watch?v=uXCipjbcQfM) - [⁠⁠⁠Notes on talk⁠⁠⁠](https://blog.jim-nielsen.com/2023/notes-from-richs-talk/) -**Sebastien Lorber:** yeah. Well, wanted to to talk about, the new NextJS 13.3 release. I think this one is interesting, in particular for one thing that I am particularly excited about. It's not the parallel routes and things like that, but more, the, the static export because, I think they, they don't highlight this enough in their marketing, but when you build the right server components with NextJS, by default, they are static. And if you don't choose any dynamic api, like getting the error of a request or getting the querystring or things like that, the server component will actually run at build time instead of, run time. So I think it's a really interesting property you can, configure if you want the server component to be static or to be dynamic. [00:09:29] +**Sebastien Lorber:** yeah. Well, wanted to to talk about, the new NextJS 13.3 release. I think this one is interesting, in particular for one thing that I am particularly excited about. It's not the parallel routes and things like that, but more, the, the static export because, I think they, they don't highlight this enough in their marketing, but when you build the right server components with NextJS, by default, they are static. And if you don't choose any dynamic api, like getting the error of a request or getting the querystring or things like that, the server component will actually run at build time instead of, run time. So I think it's a really interesting property you can, configure if you want the server component to be static or to be dynamic. [09:29] -But by default, it tries to automatically detect if you use any dynamic API and decide for, for itself if it should run at, build time or at run time. So, I think this is really, really interesting and they now support the static export. So basically this means if you don't choose any dynamic API anywhere in your app, you can export your, NextJS website statically, and all the server components will run at build time. [00:09:58] +But by default, it tries to automatically detect if you use any dynamic API and decide for, for itself if it should run at, build time or at run time. So, I think this is really, really interesting and they now support the static export. So basically this means if you don't choose any dynamic API anywhere in your app, you can export your, NextJS website statically, and all the server components will run at build time. [09:58] -I think it's quite exciting, and also this works with, nested router. So the static or dynamic nature of the, of your components will depend on the root segments. So, for example, you can have a part of your page that is dynamic and some other part that is static. In the end, they really try hard to, to make, most of your components static, if it's possible. [00:10:21] +I think it's quite exciting, and also this works with, nested router. So the static or dynamic nature of the, of your components will depend on the root segments. So, for example, you can have a part of your page that is dynamic and some other part that is static. In the end, they really try hard to, to make, most of your components static, if it's possible. [10:21] -And the, the rest will be dynamic, but they don't render too much things. And try to, to build, as much as possible at build time, all the server components. [00:10:32] +And the, the rest will be dynamic, but they don't render too much things. And try to, to build, as much as possible at build time, all the server components. [10:32] -**Carl Vitullo:** Nice. Yeah, that's really, that sounds really cool. I guess I, I thought that they already had something for a static export. I know that we, we use next for the Reactiflux website, I think that I did some kind of static export. [00:10:46] +**Carl Vitullo:** Nice. Yeah, that's really, that sounds really cool. I guess I, I thought that they already had something for a static export. I know that we, we use next for the Reactiflux website, I think that I did some kind of static export. [10:46] -**Sebastien Lorber:** Yeah, it, it existed, but not for the, for the new app root directory, so it was not, working for server components yet. [00:10:53] +**Sebastien Lorber:** Yeah, it, it existed, but not for the, for the new app root directory, so it was not, working for server components yet. [10:53] -**Carl Vitullo:** gotcha. Okay. That makes sense. Okay. Yeah, I. I haven't touched that in probably a year now, so it definitely did not get the app router in there. Okay, cool. Very nice. Yeah. I also see that they have new metadata API and dynamic open graph generation. Those both sound pretty cool. I know that a lot yeah, just open graph and the review image. [00:11:15] +**Carl Vitullo:** gotcha. Okay. That makes sense. Okay. Yeah, I. I haven't touched that in probably a year now, so it definitely did not get the app router in there. Okay, cool. Very nice. Yeah. I also see that they have new metadata API and dynamic open graph generation. Those both sound pretty cool. I know that a lot yeah, just open graph and the review image. [11:15] -I think that's, I feel like over the last year or two, I've seen a lot more people, especially for like their blogs and their personal sites, treating that open graph as a, more of like a first class feature, rather than just sort of like an afterthought of copy some text outta the page and boom, there you go. [00:11:32] +I think that's, I feel like over the last year or two, I've seen a lot more people, especially for like their blogs and their personal sites, treating that open graph as a, more of like a first class feature, rather than just sort of like an afterthought of copy some text outta the page and boom, there you go. [11:32] -So having some more first class support for that from Next, seems like it will enable a lot of really cool features. [00:11:40] +So having some more first class support for that from Next, seems like it will enable a lot of really cool features. [11:40] -**Sebastien Lorber:** Yeah. actually I'm, I don't know exactly exactly how the integration work, but as far as I understood the OG image, package that they created only runs on Vercel because it requires some tooling available on the edge to, to make it work. so I wonder if it doesn't create coupling between NextJS and Vercel as a host. [00:12:04] +**Sebastien Lorber:** Yeah. actually I'm, I don't know exactly exactly how the integration work, but as far as I understood the OG image, package that they created only runs on Vercel because it requires some tooling available on the edge to, to make it work. so I wonder if it doesn't create coupling between NextJS and Vercel as a host. [12:04] -So, I don't know. It's, it's not, mentioned in the blog post, so, so maybe I'm wrong, I don't know, but, recently there was someone that posted a blog post that says, "I am able to run a Vercel OG image on Netlify," or another host, I don't remember which one. And it required some, some tricks to, to make it work. [00:12:24] +So, I don't know. It's, it's not, mentioned in the blog post, so, so maybe I'm wrong, I don't know, but, recently there was someone that posted a blog post that says, "I am able to run a Vercel OG image on Netlify," or another host, I don't remember which one. And it required some, some tricks to, to make it work. [12:24] -So it was not so, so easy. And I'm not sure if this package works everywhere yet. [00:12:29] +So it was not so, so easy. And I'm not sure if this package works everywhere yet. [12:29] -**Carl Vitullo:** Gotcha. Yeah, I know that's been a, a pretty common point of negative feedback about Next is that everything works on Vercel first. [00:12:36] +**Carl Vitullo:** Gotcha. Yeah, I know that's been a, a pretty common point of negative feedback about Next is that everything works on Vercel first. [12:36] -**Mark Erikson:** Yeah, that's that. That was the same thing that was going through my mind. So with a couple caveats that I have not used server components yet, and frankly, I've never worked on a project that needed SSR in any form. So I can't speak from trying stuff out myself. First it's very, very good that next does have a static export option, and I know that the new React docs where they're talking about picking a framework, do try to, you know, actually link and say that hey, you can use next without an actual running next server instance on your backend. [00:13:11] +**Mark Erikson:** Yeah, that's that. That was the same thing that was going through my mind. So with a couple caveats that I have not used server components yet, and frankly, I've never worked on a project that needed SSR in any form. So I can't speak from trying stuff out myself. First it's very, very good that next does have a static export option, and I know that the new React docs where they're talking about picking a framework, do try to, you know, actually link and say that hey, you can use next without an actual running next server instance on your backend. [13:11] -And I've seen Dan trying to, you know, help clarify that on Twitter. But I think some of the unease that people have with this, you know, this shift in advertising and direction from the React team is that they feel like they're being pushed towards next and Remix and stuff. Where the default path is you need to have a server running. [00:13:35] +And I've seen Dan trying to, you know, help clarify that on Twitter. But I think some of the unease that people have with this, you know, this shift in advertising and direction from the React team is that they feel like they're being pushed towards next and Remix and stuff. Where the default path is you need to have a server running. [13:35] -It's going to work best on Vercel. It's very easy to end up using features that require, you know, a whole bunch of additional entanglement. And yes, the options exist where you can skip that stuff, but the default happy path is adding all the, you know, all these dependencies and servers and stuff. And it, it's tricky to kind of say separate, like you can go without that stuff, but you have to do work to try to skip out on that. [00:14:01] +It's going to work best on Vercel. It's very easy to end up using features that require, you know, a whole bunch of additional entanglement. And yes, the options exist where you can skip that stuff, but the default happy path is adding all the, you know, all these dependencies and servers and stuff. And it, it's tricky to kind of say separate, like you can go without that stuff, but you have to do work to try to skip out on that. [14:01] -I think that's what's, you know, kind of adding to this feeling of concern. [00:14:06] +I think that's what's, you know, kind of adding to this feeling of concern. [14:06] -**Carl Vitullo:** Right. Yeah. Makes sense. But you know, I also definitely understand the motivation for, you know, there've been a lot of new, new ways to approach web development over the last couple of years with like ,edge workers and things like that. And I think that there's a lot of really exciting possibilities coming out of that. [00:14:23] +**Carl Vitullo:** Right. Yeah. Makes sense. But you know, I also definitely understand the motivation for, you know, there've been a lot of new, new ways to approach web development over the last couple of years with like ,edge workers and things like that. And I think that there's a lot of really exciting possibilities coming out of that. [14:23] -So I understand the impetus to try and offer like first party ways to explore that. And yeah, I mean, I guess, you know, control over the server definitely makes it a lot easier to offer a good experience. But yeah, I guess I understand both sides of this, which is not a very exciting take (laughter). [00:14:41] +So I understand the impetus to try and offer like first party ways to explore that. And yeah, I mean, I guess, you know, control over the server definitely makes it a lot easier to offer a good experience. But yeah, I guess I understand both sides of this, which is not a very exciting take (laughter). [14:41] -**Mark Erikson:** Quick side note, Rich Harris recently did a fantastic talk. He, he gave like his thoughts on 10 different topics and he was rating them in terms of spiciness and, even the highest spicy rated takes weren't necessarily all that spicy. It was actually very thoughtful, deep nuanced discussion of trade offs of different tools and scenarios. [00:15:02] +**Mark Erikson:** Quick side note, Rich Harris recently did a fantastic talk. He, he gave like his thoughts on 10 different topics and he was rating them in terms of spiciness and, even the highest spicy rated takes weren't necessarily all that spicy. It was actually very thoughtful, deep nuanced discussion of trade offs of different tools and scenarios. [15:02] -**Carl Vitullo:** Yeah, that's definitely someone I would expect to, or that I would have a lot of trust in to talk about. Topics like that with a lot of nuance. [00:15:09] +**Carl Vitullo:** Yeah, that's definitely someone I would expect to, or that I would have a lot of trust in to talk about. Topics like that with a lot of nuance. [15:09] ## New React documentation translation - [⁠⁠⁠New React documentation translation⁠⁠⁠](https://github.com/reactjs/react.dev/issues/4135#issuecomment-1518443599) -**Carl Vitullo:** All right, I'll move this on with our next, this is, you know, maybe not a whole lot to talk about here, but the new react.dev documentation site is getting translated. [00:15:18] +**Carl Vitullo:** All right, I'll move this on with our next, this is, you know, maybe not a whole lot to talk about here, but the new react.dev documentation site is getting translated. [15:18] -I know that that was a, you know, that was one of the, points of negative feedback I heard about it is the old docs were in available in so many different languages and the new new docs were not launched with support for those. So good to see it as a fast follow to the launch. Looks like it's been in in the works for a long time and seeing a lot of work done. [00:15:37] +I know that that was a, you know, that was one of the, points of negative feedback I heard about it is the old docs were in available in so many different languages and the new new docs were not launched with support for those. So good to see it as a fast follow to the launch. Looks like it's been in in the works for a long time and seeing a lot of work done. [15:37] -I see a huge, huge list of translations. [00:15:40] +I see a huge, huge list of translations. [15:40] -**Mark Erikson:** And I know that as a whole, the reason why the docs were delayed so long was Dan was waiting to, was trying to get the content to, you know, a sufficiently complete level, and also make sure that the explanations and the tone were the right way. It's kind of hard to really start translation when you're still iterating on that process. [00:16:01] +**Mark Erikson:** And I know that as a whole, the reason why the docs were delayed so long was Dan was waiting to, was trying to get the content to, you know, a sufficiently complete level, and also make sure that the explanations and the tone were the right way. It's kind of hard to really start translation when you're still iterating on that process. [16:01] -**Sebastien Lorber:** If you refactor everything, it's a pain for the translators because they have to, the, the strategy that they used is based on a repository, so they have to, some of the, there is the main repository with the trans, the English language, and there are folks for each language and. They synchronized the new documentations from the upstream language to the older folks. [00:16:25] +**Sebastien Lorber:** If you refactor everything, it's a pain for the translators because they have to, the, the strategy that they used is based on a repository, so they have to, some of the, there is the main repository with the trans, the English language, and there are folks for each language and. They synchronized the new documentations from the upstream language to the older folks. [16:25] -They have a bot to automate this, but, still I think they, it can be a bit painful to manage all this and to ensure that there are not, merge conflicts between, the, the current translations and the new documentation that the red car team is aiding. So, it's better to, to have most of the content quite polished in the first place before starting the the translation effort, I think. [00:16:49] +They have a bot to automate this, but, still I think they, it can be a bit painful to manage all this and to ensure that there are not, merge conflicts between, the, the current translations and the new documentation that the red car team is aiding. So, it's better to, to have most of the content quite polished in the first place before starting the the translation effort, I think. [16:49] -**Carl Vitullo:** Yeah, definitely makes sense. Every language you wanna do it in explodes the amount of work or you know, it adds one more copy of it. So given that, I think, looks like the list of language they support is easily 15 or 20. So definitely trying to write all of those in parallel is just like a non-starter for that. So yeah, glad to see you coming out. [00:17:11] +**Carl Vitullo:** Yeah, definitely makes sense. Every language you wanna do it in explodes the amount of work or you know, it adds one more copy of it. So given that, I think, looks like the list of language they support is easily 15 or 20. So definitely trying to write all of those in parallel is just like a non-starter for that. So yeah, glad to see you coming out. [17:11] -**Sebastien Lorber:** Because the translation workflow even is a bit complex, so you have to onboard people if they are not used to it. So [00:17:19] +**Sebastien Lorber:** Because the translation workflow even is a bit complex, so you have to onboard people if they are not used to it. So [17:19] -**Carl Vitullo:** Right, [00:17:20] +**Carl Vitullo:** Right, [17:20] -**Sebastien Lorber:** this is not easy. I think the, hopefully they, they're able to split the work, between, each site. So, each site can somehow autonomously work on the translation. But, you have to explain to each main language contributor how it, it works to, to make them productive in the translation process. [00:17:41] +**Sebastien Lorber:** this is not easy. I think the, hopefully they, they're able to split the work, between, each site. So, each site can somehow autonomously work on the translation. But, you have to explain to each main language contributor how it, it works to, to make them productive in the translation process. [17:41] -**Carl Vitullo:** Right, right. I've only ever dabbled in translation on apps that I've worked on. You know, none of them really had serious international usage, so it wasn't a major impediment, but writing documentation to explain difficult technical concepts in 20 different languages. Like, oh, oh boy. What a task. [00:17:58] +**Carl Vitullo:** Right, right. I've only ever dabbled in translation on apps that I've worked on. You know, none of them really had serious international usage, so it wasn't a major impediment, but writing documentation to explain difficult technical concepts in 20 different languages. Like, oh, oh boy. What a task. [17:58] -Well, Mark, what's up on your list? [00:18:00] +Well, Mark, what's up on your list? [18:00] ## TypeScript 5.1 - [⁠⁠⁠TypeScript 5.1⁠⁠⁠](https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-beta/) -**Mark Erikson:** So TypeScript 5.0 just came out, and hot on the heels is TypeScript 5.1 in beta and one of the changes there has to do with TypeScript support for JSX syntax and type checking what gets returned. Now I only barely understand what's going on here, so you know, please, please take my explanations here with a grain of salt, TypeScript support for JSX was basically originally started to support React. [00:18:28] +**Mark Erikson:** So TypeScript 5.0 just came out, and hot on the heels is TypeScript 5.1 in beta and one of the changes there has to do with TypeScript support for JSX syntax and type checking what gets returned. Now I only barely understand what's going on here, so you know, please, please take my explanations here with a grain of salt, TypeScript support for JSX was basically originally started to support React. [18:28] -But JSX is not a React only concept today in a lot of other frameworks like Solid use it. And so TypeScript has had to do this kind of difficult dance internally where they need to be able to handle JSX but not lock their support of it to only working with React specifically. It has to be a little more generalized, and that's had limits on how the, the type checking process can work. [00:18:55] +But JSX is not a React only concept today in a lot of other frameworks like Solid use it. And so TypeScript has had to do this kind of difficult dance internally where they need to be able to handle JSX but not lock their support of it to only working with React specifically. It has to be a little more generalized, and that's had limits on how the, the type checking process can work. [18:55] -This has actually had ripple effects on how you can use TypeScript in your React components. And the biggest pain point is that due to something about the way JSX elements were implemented, TypeScript would actually yell at you if you tried to return some of the newer, non-JSX return values from a component. [00:19:15] +This has actually had ripple effects on how you can use TypeScript in your React components. And the biggest pain point is that due to something about the way JSX elements were implemented, TypeScript would actually yell at you if you tried to return some of the newer, non-JSX return values from a component. [19:15] -So, you know, if you tried to return like strings or arrays from a function component, it's totally legal JavaScript and as of like, you know, React 16, it's totally fine, but TypeScript would yell at you and say, "you can't do that," and you end up having to wrap that in a fragment that serves no purpose other than to satisfy TypeScript. [00:19:34] +So, you know, if you tried to return like strings or arrays from a function component, it's totally legal JavaScript and as of like, you know, React 16, it's totally fine, but TypeScript would yell at you and say, "you can't do that," and you end up having to wrap that in a fragment that serves no purpose other than to satisfy TypeScript. [19:34] -So, The React team has been working on trying to allow some components to do things like return promises, and of course, TypeScript would not allow that given its current type checking support. This discussion started like, two or three years ago and I think it's been a very long running issue, and the TypeScript team just merged a PR that somehow alters how TypeScript interprets and type checks JSX syntax. [00:20:02] +So, The React team has been working on trying to allow some components to do things like return promises, and of course, TypeScript would not allow that given its current type checking support. This discussion started like, two or three years ago and I think it's been a very long running issue, and the TypeScript team just merged a PR that somehow alters how TypeScript interprets and type checks JSX syntax. [20:02] -And this seems to loosen up what it will allow and is apparently going to make it easier to do things like returning a string or an array from a component. And it'll be legal as far as TypeScript's concerned. And it will also unlock future changes for things like returning promises from components. Basically TypeScript is trying to make it better and easier to return a broader array of things from components with JSX syntax. [00:20:30] +And this seems to loosen up what it will allow and is apparently going to make it easier to do things like returning a string or an array from a component. And it'll be legal as far as TypeScript's concerned. And it will also unlock future changes for things like returning promises from components. Basically TypeScript is trying to make it better and easier to return a broader array of things from components with JSX syntax. [20:30] -**Carl Vitullo:** Yeah, I definitely remember encountering those sort of type bugs where I know that this is a valid thing to return from this component, but actually getting TypeScript to recognize that was a pain in the butt. You know, figuring out what type I'm supposed to use to describe the component, whether that's React.FunctionComponent, or you know, React.FC or whatever it is. So I'm excited to see this improve the situation. [00:20:54] +**Carl Vitullo:** Yeah, I definitely remember encountering those sort of type bugs where I know that this is a valid thing to return from this component, but actually getting TypeScript to recognize that was a pain in the butt. You know, figuring out what type I'm supposed to use to describe the component, whether that's React.FunctionComponent, or you know, React.FC or whatever it is. So I'm excited to see this improve the situation. [20:54] -**Mark Erikson:** The default recommendation has been just don't use it at all. Provide a type for the props and let ts figure out what the return type is. [00:21:02] +**Mark Erikson:** The default recommendation has been just don't use it at all. Provide a type for the props and let ts figure out what the return type is. [21:02] -**Carl Vitullo:** Hmm. Yeah. Excited to see that get better. [00:21:05] +**Carl Vitullo:** Hmm. Yeah. Excited to see that get better. [21:05] -Cool. Yeah. Sebastian, you wanna take us on our next news item? [00:21:08] +Cool. Yeah. Sebastian, you wanna take us on our next news item? [21:08] ## MillionJS, one-function React perf wins - [⁠⁠⁠MillionJS, one-function React perf wins⁠⁠⁠](https://twitter.com/aidenybai/status/1650406345517199361) -**Sebastien Lorber:** Maybe you've seen there is a new package called, MillionJS. I think it's, it's interesting and it, it got my curiosity. The idea is somehow to, to make, to improve the performance of the virtual dom by using, a block based virtual DOM. As far as I understand it, the idea is that if you have two virtual DOMs that have exactly the same size and structure and things like that, you are able to optimize this and perform the diff faster. [00:21:37] +**Sebastien Lorber:** Maybe you've seen there is a new package called, MillionJS. I think it's, it's interesting and it, it got my curiosity. The idea is somehow to, to make, to improve the performance of the virtual dom by using, a block based virtual DOM. As far as I understand it, the idea is that if you have two virtual DOMs that have exactly the same size and structure and things like that, you are able to optimize this and perform the diff faster. [21:37] -And recently there was, a new version of MillionJS, which support, NextJS too. So it's possible to integrate into an existing app to make it faster. And, there's also a repository that now is there for learning purpose called HundredJS. And the idea is that, it provides a very simple, implementation of a block-based virtual DOM, but you can, understand, the idea. [00:22:04] +And recently there was, a new version of MillionJS, which support, NextJS too. So it's possible to integrate into an existing app to make it faster. And, there's also a repository that now is there for learning purpose called HundredJS. And the idea is that, it provides a very simple, implementation of a block-based virtual DOM, but you can, understand, the idea. [22:04] -So I don't know exactly how it works yet, but, I found, it was quite interesting somehow the first time I came across this project, I thought, oh, they have a beautiful landing page, and the developer is 16 years old or something like that, I don't remember, but he's very young. I somehow dismissed this project, but, now it, I, I get more curiosity for it. I think, maybe this will be, an interesting thing, to, to follow in the years to come. [00:22:30] +So I don't know exactly how it works yet, but, I found, it was quite interesting somehow the first time I came across this project, I thought, oh, they have a beautiful landing page, and the developer is 16 years old or something like that, I don't remember, but he's very young. I somehow dismissed this project, but, now it, I, I get more curiosity for it. I think, maybe this will be, an interesting thing, to, to follow in the years to come. [22:30] -**Carl Vitullo:** Yeah, interesting. This is, this is a new project to me, but you know, anything that promises to make stuff faster just by wrapping it into function, is both interesting and draws a little bit of skepticism (laughs). I've definitely written some components, or rather some helper functions that look like this to solve performance problems for myself. [00:22:50] +**Carl Vitullo:** Yeah, interesting. This is, this is a new project to me, but you know, anything that promises to make stuff faster just by wrapping it into function, is both interesting and draws a little bit of skepticism (laughs). I've definitely written some components, or rather some helper functions that look like this to solve performance problems for myself. [22:50] -The main situation I'm thinking of is where I have a very slow, you know, maybe it's very complicated or something, some slow component as part of a larger page. And some number of years ago I wrote a, a little helper that just, it, it was basically sort of a, a cheap async rendering helper. It would just render nothing for one render pass and then render the actual children. [00:23:13] +The main situation I'm thinking of is where I have a very slow, you know, maybe it's very complicated or something, some slow component as part of a larger page. And some number of years ago I wrote a, a little helper that just, it, it was basically sort of a, a cheap async rendering helper. It would just render nothing for one render pass and then render the actual children. [23:13] -Yeah, I used that on a very complicated list page, and it took initial render down from like over two seconds to tens of milliseconds just really helped the sense of interactivity, if not the total overall render time. You know, the, the actual render time didn't change that much, but at least you can interact with the page while it's doing all of that. [00:23:32] +Yeah, I used that on a very complicated list page, and it took initial render down from like over two seconds to tens of milliseconds just really helped the sense of interactivity, if not the total overall render time. You know, the, the actual render time didn't change that much, but at least you can interact with the page while it's doing all of that. [23:32] -So I, I wonder if it's doing something similar to that, just enabling rendering to split up over multiple passes. But yeah, cur curious to dig into that more. [00:23:41] +So I, I wonder if it's doing something similar to that, just enabling rendering to split up over multiple passes. But yeah, cur curious to dig into that more. [23:41] -**Sebastien Lorber:** Yes, I'm, I don't know exactly. I, I can tell, but this is something interesting to follow, I think. So we will figure out, soon, I think (chuckles). [00:23:49] +**Sebastien Lorber:** Yes, I'm, I don't know exactly. I, I can tell, but this is something interesting to follow, I think. So we will figure out, soon, I think (chuckles). [23:49] -**Carl Vitullo:** Cool. Yeah. I guess I'll pick us on to the next one. [00:23:51] +**Carl Vitullo:** Cool. Yeah. I guess I'll pick us on to the next one. [23:51] ## React Server Components @@ -213,143 +213,143 @@ So I, I wonder if it's doing something similar to that, just enabling rendering - [⁠⁠⁠Lenz RFC for Apollo/RSC⁠⁠⁠](https://twitter.com/phry/status/1649520340647673856) - [⁠⁠⁠AsyncContext stage 2⁠⁠⁠](https://twitter.com/sebastienlorber/status/1639183216799100928) -**Carl Vitullo:** So this is not necessarily one single news article, but definitely a topic of discussion, React Server Components. There's been a lot of news and discussion coming out over the past month or so. I saw Dan Abramov did a quiz thread on Twitter. Looks like it answers a lot of questions about how React server components behave. [00:24:11] +**Carl Vitullo:** So this is not necessarily one single news article, but definitely a topic of discussion, React Server Components. There's been a lot of news and discussion coming out over the past month or so. I saw Dan Abramov did a quiz thread on Twitter. Looks like it answers a lot of questions about how React server components behave. [24:11] -Definitely interesting information in there. I have not yet really used React server components at all, so I , I don't feel like I can speak too deeply on this subject, but Mark, Sebastian, have you used server components much? [00:24:23] +Definitely interesting information in there. I have not yet really used React server components at all, so I , I don't feel like I can speak too deeply on this subject, but Mark, Sebastian, have you used server components much? [24:23] -**Mark Erikson:** Not in the slightest. [00:24:25] +**Mark Erikson:** Not in the slightest. [24:25] -**Carl Vitullo:** Hahah. [00:24:26] +**Carl Vitullo:** Hahah. [24:26] -**Sebastien Lorber:** No, (laughs) no, I mean, I only work on Docusaurus, so there is no Server Components yet, but I, I wish, to do that, soon, but need to figure out a few things before. [00:24:38] +**Sebastien Lorber:** No, (laughs) no, I mean, I only work on Docusaurus, so there is no Server Components yet, but I, I wish, to do that, soon, but need to figure out a few things before. [24:38] -**Carl Vitullo:** Yeah. Yeah. I feel that. [00:24:40] +**Carl Vitullo:** Yeah. Yeah. I feel that. [24:40] -**Mark Erikson:** And, and similarly, like my day job at Replay is, replay is entirely a classic client side, single page app. And between that and all the Redux stuff, I don't have time to go play with other new shiny things. [00:24:53] +**Mark Erikson:** And, and similarly, like my day job at Replay is, replay is entirely a classic client side, single page app. And between that and all the Redux stuff, I don't have time to go play with other new shiny things. [24:53] -**Carl Vitullo:** Right, right. Yeah, I know that Dan has been on a, a bit of a, a bit of a PR blitz. Yeah. He's been on a tear doing all sorts of events and talking about React Server Components a lot. We've talked briefly about doing an event here, and maybe having an ongoing channel for people to ask questions about it. So yeah, stay tuned for news about that. [00:25:15] +**Carl Vitullo:** Right, right. Yeah, I know that Dan has been on a, a bit of a, a bit of a PR blitz. Yeah. He's been on a tear doing all sorts of events and talking about React Server Components a lot. We've talked briefly about doing an event here, and maybe having an ongoing channel for people to ask questions about it. So yeah, stay tuned for news about that. [25:15] -But, nothing to announce at the moment, but yeah, so I saw that quiz thread from him. I also saw a great sort of history of that I just posted in the chat. it talks a lot about X H P and hack and Facebook code going back to 2010 era. Definitely. Yeah. I mean, like we're talking about with React Visualized, I think the history of why things came to be what they are is super helpful for understanding what they are. [00:25:42] +But, nothing to announce at the moment, but yeah, so I saw that quiz thread from him. I also saw a great sort of history of that I just posted in the chat. it talks a lot about X H P and hack and Facebook code going back to 2010 era. Definitely. Yeah. I mean, like we're talking about with React Visualized, I think the history of why things came to be what they are is super helpful for understanding what they are. [25:42] -So I, I think that's a, I think that's a good thread to read, to understand what's going on. [00:25:46] +So I, I think that's a, I think that's a good thread to read, to understand what's going on. [25:46] -**Sebastien Lorber:** Yeah, definitely. [00:25:47] +**Sebastien Lorber:** Yeah, definitely. [25:47] -**Carl Vitullo:** Yeah. [00:25:48] +**Carl Vitullo:** Yeah. [25:48] -**Sebastien Lorber:** I think the, the, the quiz is very interesting because somehow we challenge your, your intuition that you can have. And honestly, I, I, I think I got all free and sales correct, but, I wasn't absolutely sure about, any of them (laughter). So this is, this is really not easy and I think many people, don't have the intuition of, of several components. [00:26:09] +**Sebastien Lorber:** I think the, the, the quiz is very interesting because somehow we challenge your, your intuition that you can have. And honestly, I, I, I think I got all free and sales correct, but, I wasn't absolutely sure about, any of them (laughter). So this is, this is really not easy and I think many people, don't have the intuition of, of several components. [26:09] -So this is really worth to, to take it and see if you, if you have the intuition. [00:26:14] +So this is really worth to, to take it and see if you, if you have the intuition. [26:14] -**Carl Vitullo:** Yeah, definitely. [00:26:15] +**Carl Vitullo:** Yeah, definitely. [26:15] -**Mark Erikson:** It seems like one of those things where half the people are gonna get this wrong either way. [00:26:19] +**Mark Erikson:** It seems like one of those things where half the people are gonna get this wrong either way. [26:19] -**Carl Vitullo:** Right, right [00:26:20] +**Carl Vitullo:** Right, right [26:20] -**Sebastien Lorber:** (chuckles) [00:26:21] +**Sebastien Lorber:** (chuckles) [26:21] -**Carl Vitullo:** Definitely a, a big iteration on the React mental model. So I'm sort of, I'm sort of waiting for the dust to settle before I dig too deep into it. Just, you know, a lot of churn going on, a lot of innovation and discussion, and I'll, I'll come through a little bit later and see what it all looks like, but it's definitely a lot to stay on top of. [00:26:40] +**Carl Vitullo:** Definitely a, a big iteration on the React mental model. So I'm sort of, I'm sort of waiting for the dust to settle before I dig too deep into it. Just, you know, a lot of churn going on, a lot of innovation and discussion, and I'll, I'll come through a little bit later and see what it all looks like, but it's definitely a lot to stay on top of. [26:40] -Cool. Yeah. And one more link I wanna paste from one of our, one of our community members, Lenz Weber-Tronic, phryneas' post is, looks like he's looking into React Server Components, how to connect it to Redux Toolkit in Apollo. [00:26:54] +Cool. Yeah. And one more link I wanna paste from one of our, one of our community members, Lenz Weber-Tronic, phryneas' post is, looks like he's looking into React Server Components, how to connect it to Redux Toolkit in Apollo. [26:54] -**Mark Erikson:** Yeah, so Lens is my Redux Toolkit co-maintainer created our RTK query data fetching library, and he also recently got hired by Apollo to work on Apollo client. So we've, we've had a couple of different discussions with the React team about, you know, how our external data libraries supposed to integrate with suspense. [00:27:14] +**Mark Erikson:** Yeah, so Lens is my Redux Toolkit co-maintainer created our RTK query data fetching library, and he also recently got hired by Apollo to work on Apollo client. So we've, we've had a couple of different discussions with the React team about, you know, how our external data libraries supposed to integrate with suspense. [27:14] -And the shorter, the short answer is, "we're still not really sure, go make new APIs instead of building that into your query hooks." But then he's also been doing a bunch of research over the last few weeks into, how you server components work, and how would you integrate external data fetching libraries into server components in the lifecycle? [00:27:34] +And the shorter, the short answer is, "we're still not really sure, go make new APIs instead of building that into your query hooks." But then he's also been doing a bunch of research over the last few weeks into, how you server components work, and how would you integrate external data fetching libraries into server components in the lifecycle? [27:34] -And he's only, he's only hinted at bits and pieces and some of that, some of those hints were in this, this Twitter thread, but it sounds like he's been trying to put together a fairly large write up to start a discussion and ask some questions. So I am actually legitimately curious to see what his summaries are and what his questions are because again, like I don't have time to look into this myself, so I'm glad Lenz does. [00:27:59] +And he's only, he's only hinted at bits and pieces and some of that, some of those hints were in this, this Twitter thread, but it sounds like he's been trying to put together a fairly large write up to start a discussion and ask some questions. So I am actually legitimately curious to see what his summaries are and what his questions are because again, like I don't have time to look into this myself, so I'm glad Lenz does. [27:59] -**Sebastien Lorber:** Yeah. [00:27:59] +**Sebastien Lorber:** Yeah. [27:59] -**Carl Vitullo:** Yeah, definitely very curious to see what he, his conclusions are. Yeah, I mean he's been active in Reactiflux for years and very helpful and thoughtful, so very much curious to see what he thinks. [00:28:10] +**Carl Vitullo:** Yeah, definitely very curious to see what he, his conclusions are. Yeah, I mean he's been active in Reactiflux for years and very helpful and thoughtful, so very much curious to see what he thinks. [28:10] -**Sebastien Lorber:** Something, I'm thinking about is, you know, we already discussed that in the past, but I think it's a bit related, is the new AsyncContext proposal, which is a stage two for standardization in JavaScript. I have the feeling that the, the idea of this API could be to, to use React context in a cross platform where in both our components, when they use I think, weight and, also in a regular components that we use today on the client and things like that. [00:28:41] +**Sebastien Lorber:** Something, I'm thinking about is, you know, we already discussed that in the past, but I think it's a bit related, is the new AsyncContext proposal, which is a stage two for standardization in JavaScript. I have the feeling that the, the idea of this API could be to, to use React context in a cross platform where in both our components, when they use I think, weight and, also in a regular components that we use today on the client and things like that. [28:41] -I think it's interesting because, it could enable you to provide the, the, the context of maybe Apple, Apollo or React Query to your tree. No matter if it's a client component or a server component, it should be able to work. So, I look forward to, to see this api, become adopted everywhere and see if, and see if it unlocks any use case. [00:29:06] +I think it's interesting because, it could enable you to provide the, the, the context of maybe Apple, Apollo or React Query to your tree. No matter if it's a client component or a server component, it should be able to work. So, I look forward to, to see this api, become adopted everywhere and see if, and see if it unlocks any use case. [29:06] -I think Sebastian Markbåge posted something, recently and, and somehow it summarized the idea that, that I tried to, to explain is that you could use eventually the standard, I think, context feature as React context directly. So I think this is interesting because this would not only work with, React hooks, but also, as a regular, JavaScript feature that we can work both on the edge, on the NodeJS runtimes, and also on the client. [00:29:38] +I think Sebastian Markbåge posted something, recently and, and somehow it summarized the idea that, that I tried to, to explain is that you could use eventually the standard, I think, context feature as React context directly. So I think this is interesting because this would not only work with, React hooks, but also, as a regular, JavaScript feature that we can work both on the edge, on the NodeJS runtimes, and also on the client. [29:38] -Maybe it's not what is, maybe it's not, it's not the challenge that Apollo is facing to integrate with several components. I don't know. But I think it's one of the piece that could make it, easier. [00:29:49] +Maybe it's not what is, maybe it's not, it's not the challenge that Apollo is facing to integrate with several components. I don't know. But I think it's one of the piece that could make it, easier. [29:49] -**Carl Vitullo:** Yeah, definitely always nice to rely on standard browser features rather than something hand rolled within a library. I'm sure React would love to have some sort of standardized context. [00:30:00] +**Carl Vitullo:** Yeah, definitely always nice to rely on standard browser features rather than something hand rolled within a library. I'm sure React would love to have some sort of standardized context. [30:00] -**Mark Erikson:** Use the platform. [00:30:01] +**Mark Erikson:** Use the platform. [30:01] -**Carl Vitullo:** Use the platform! [00:30:02] +**Carl Vitullo:** Use the platform! [30:02] -Cool. Yeah. Mark, what have you got next? [00:30:06] +Cool. Yeah. Mark, what have you got next? [30:06] ## Recommending uncontrolled components - [⁠⁠⁠Recommending uncontrolled components⁠⁠⁠](https://twitter.com/dan_abramov/status/1641830612955803650) - [⁠⁠⁠API Reference⁠⁠⁠](https://react.dev/reference/react-dom/components/input) -**Mark Erikson:** Okay, so the existing React Docs or the, I guess now the, the Legacy React Docs always had a page on forms. And the standard direction in that docs page was write controlled inputs where React is always in charge of pushing the current value of the input into the DOM. And your job is to provide, you know, here's what the current value should be and here's, you know, a, a callback that sets state and that went along with Reacts philosophy that, you know, the UI should always be based on the state. [00:30:42] +**Mark Erikson:** Okay, so the existing React Docs or the, I guess now the, the Legacy React Docs always had a page on forms. And the standard direction in that docs page was write controlled inputs where React is always in charge of pushing the current value of the input into the DOM. And your job is to provide, you know, here's what the current value should be and here's, you know, a, a callback that sets state and that went along with Reacts philosophy that, you know, the UI should always be based on the state. [30:42] -And that made this idea of uncontrolled inputs, sort of like a, a very non idiomatic approach within the React ecosystem. Within the last few years, we've seen a little more acceptance of using uncontrolled inputs as being valid. The library React Hook Form, I believe, uses uncontrolled inputs and, Remix has been doing things with that as well. [00:31:08] +And that made this idea of uncontrolled inputs, sort of like a, a very non idiomatic approach within the React ecosystem. Within the last few years, we've seen a little more acceptance of using uncontrolled inputs as being valid. The library React Hook Form, I believe, uses uncontrolled inputs and, Remix has been doing things with that as well. [31:08] -So the new React docs are complete as far as the learning content, and they're basically complete as far as the API reference material, but they don't have a lot in the way of usage guide pages. There's a lot of pages that just simply need to be written from scratch for things like testing, and that includes forms. [00:31:29] +So the new React docs are complete as far as the learning content, and they're basically complete as far as the API reference material, but they don't have a lot in the way of usage guide pages. There's a lot of pages that just simply need to be written from scratch for things like testing, and that includes forms. [31:29] -There, there is no specific page on how to use forms in the new React docs. However, what I did not realize is that the API reference section actually has some pages on how to use specific HTML tag types in React. That includes the input tag and this reference page on using input tags actually talks about the difference between controlled and uncontrolled inputs, and basically recommends using uncontrolled inputs by default. [00:32:05] +There, there is no specific page on how to use forms in the new React docs. However, what I did not realize is that the API reference section actually has some pages on how to use specific HTML tag types in React. That includes the input tag and this reference page on using input tags actually talks about the difference between controlled and uncontrolled inputs, and basically recommends using uncontrolled inputs by default. [32:05] -This is actually a really big shift in what the React team is suggesting people should do. And it there, I think there's a few different reasons for it. One is that, you know, setting up controlled inputs has always taken work. You have to have the useState, and the callbacks, and the value, and you're putting in the extra effort to make things consistent. [00:32:26] +This is actually a really big shift in what the React team is suggesting people should do. And it there, I think there's a few different reasons for it. One is that, you know, setting up controlled inputs has always taken work. You have to have the useState, and the callbacks, and the value, and you're putting in the extra effort to make things consistent. [32:26] -And then I think it also kind of ties into some of the React server components work that they're doing where they want to be able to pass form state back to the server processing. And I guess that seems to work a little better if the inputs are uncontrolled. So I, I have not even gone through this input docs page in detail. [00:32:47] +And then I think it also kind of ties into some of the React server components work that they're doing where they want to be able to pass form state back to the server processing. And I guess that seems to work a little better if the inputs are uncontrolled. So I, I have not even gone through this input docs page in detail. [32:47] -I didn't realize the Docs page existed until I saw Dan tweet about it, and I definitely did not realize that the React team was shifting their recommendation there. So it's, it's definitely worth going through and trying to read that page and see what it has to say. And I don't know, like it, it's that shift in patterns and recommendations again. [00:33:05] +I didn't realize the Docs page existed until I saw Dan tweet about it, and I definitely did not realize that the React team was shifting their recommendation there. So it's, it's definitely worth going through and trying to read that page and see what it has to say. And I don't know, like it, it's that shift in patterns and recommendations again. [33:05] -**Carl Vitullo:** Yeah, I'm, I'm sort of ski- skimming that page while you're talking a little bit and. Yeah. One thing that jumps to my mind is the use case of trying to provide very, very high quality validation for input values, and it's been my experience that the browser doesn't expose very good primitives for validation. [00:33:27] +**Carl Vitullo:** Yeah, I'm, I'm sort of ski- skimming that page while you're talking a little bit and. Yeah. One thing that jumps to my mind is the use case of trying to provide very, very high quality validation for input values, and it's been my experience that the browser doesn't expose very good primitives for validation. [33:27] -I think at best you end up, you can do like, what, a regex based on the value? But you know, like especially if you need like some sort of dynamic validation. Like for instance, I've done password inputs when signing up that hit an API to see if the input password is too similar to, you know, publicly cracked password lists or otherwise perform some sort of processing that requires an async step, and going from an uncontrolled form to a form that has advanced validation, like that seems like a pretty big lift. [00:34:00] +I think at best you end up, you can do like, what, a regex based on the value? But you know, like especially if you need like some sort of dynamic validation. Like for instance, I've done password inputs when signing up that hit an API to see if the input password is too similar to, you know, publicly cracked password lists or otherwise perform some sort of processing that requires an async step, and going from an uncontrolled form to a form that has advanced validation, like that seems like a pretty big lift. [34:00] -So I, I, I generally agree with the idea that you should lean on the platform as much as possible. We should not write JavaScript that duplicates behaviors that the browser gives us free. But yeah, there's definitely some, some gaps in what the browser offers around forms and validation. So that seems like it's gonna be a bit of a, a point of friction on an ongoing basis. [00:34:21] +So I, I, I generally agree with the idea that you should lean on the platform as much as possible. We should not write JavaScript that duplicates behaviors that the browser gives us free. But yeah, there's definitely some, some gaps in what the browser offers around forms and validation. So that seems like it's gonna be a bit of a, a point of friction on an ongoing basis. [34:21] -I guess one other thought I want to connect it to, I just had opportunity to see the React documentary again, and it was funny hearing, I can't remember the exact line, but somebody mentions that, nobody's ever written a form and React as of, you know, when it was being open sourced. [00:34:37] +I guess one other thought I want to connect it to, I just had opportunity to see the React documentary again, and it was funny hearing, I can't remember the exact line, but somebody mentions that, nobody's ever written a form and React as of, you know, when it was being open sourced. [34:37] -And so it's, it is funny to see now, yeah, no, actually 10 years later. Cause that was uh 2013. Forms in React is still a little bit of an open question. There still isn't complete guidance for what it should look like. [00:34:49] +And so it's, it is funny to see now, yeah, no, actually 10 years later. Cause that was uh 2013. Forms in React is still a little bit of an open question. There still isn't complete guidance for what it should look like. [34:49] -**Sebastien Lorber:** I think the, the thing is, maybe the shift happens because of Remix, because, you know, there, there's a lot more traction for progressive enhancement these days, thanks to Remix, I think, it existed before, but not much in React ecosystem. And to, to, to have a progressively enhanced form, you need it to work without React somehow. [00:35:10] +**Sebastien Lorber:** I think the, the thing is, maybe the shift happens because of Remix, because, you know, there, there's a lot more traction for progressive enhancement these days, thanks to Remix, I think, it existed before, but not much in React ecosystem. And to, to, to have a progressively enhanced form, you need it to work without React somehow. [35:10] -So if you, if you make it, controlled, you are basically implementing features that will only work if JavaScript is there. So I think also this, this shift is happening because, because of progressive enhancement and the need for a form to be able to just work with HTML and a server somehow. [00:35:28] +So if you, if you make it, controlled, you are basically implementing features that will only work if JavaScript is there. So I think also this, this shift is happening because, because of progressive enhancement and the need for a form to be able to just work with HTML and a server somehow. [35:28] -**Carl Vitullo:** Yeah, for sure. [00:35:30] +**Carl Vitullo:** Yeah, for sure. [35:30] -Cool. Yeah. Sebastian. Wha- what's your next news article? [00:35:33] +Cool. Yeah. Sebastian. Wha- what's your next news article? [35:33] ## Super Apps in React Native - [⁠⁠⁠Super Apps in React Native⁠⁠⁠](https://www.callstack.com/super-app-development) - [⁠⁠⁠RN PS5⁠⁠⁠](https://twitter.com/syke/status/1619413099861413889) -**Sebastien Lorber:** Let me check. I don't remember. yeah, it's, Super App development. There is, a new resource from Gold Stack, the React Native company that is presenting the, the idea of Super App development. It's not the first time, but I saw that. I see blog posts of them, mentioning this idea, it's, the, the concept of Super App is quite popular in, in Asia. [00:35:57] +**Sebastien Lorber:** Let me check. I don't remember. yeah, it's, Super App development. There is, a new resource from Gold Stack, the React Native company that is presenting the, the idea of Super App development. It's not the first time, but I saw that. I see blog posts of them, mentioning this idea, it's, the, the concept of Super App is quite popular in, in Asia. [35:57] -For example, there is the WeChat app in China, I think. And the idea is that somehow you gather many, many small apps inside a big host app and your users, users are able to seamlessly transition from one app to the over. And, somehow it requires, some, a bit complicated things to, to, to set this up. [00:36:17] +For example, there is the WeChat app in China, I think. And the idea is that somehow you gather many, many small apps inside a big host app and your users, users are able to seamlessly transition from one app to the over. And, somehow it requires, some, a bit complicated things to, to, to set this up. [36:17] -for example, you don't, you, I think you can't use the default React Native bundler. You have to use a repack, which is, somehow a layer above, webpack to make it work and have got spliting module federations and and advanced webpack features to make this work. So I, I don't know exactly how you set this up, but they, they provided a comprehensive resource with a step-by step, tutorial. [00:36:41] +for example, you don't, you, I think you can't use the default React Native bundler. You have to use a repack, which is, somehow a layer above, webpack to make it work and have got spliting module federations and and advanced webpack features to make this work. So I, I don't know exactly how you set this up, but they, they provided a comprehensive resource with a step-by step, tutorial. [36:41] -And there's also, a showcase repository that you can try so you can actually, build your super up locally and see it work live. And also, I thought there was something quite interesting, but I came across for some place that, I think, I'm not sure, but I think the PlayStation 5 UI is actually a super app built with React Native. [00:37:06] +And there's also, a showcase repository that you can try so you can actually, build your super up locally and see it work live. And also, I thought there was something quite interesting, but I came across for some place that, I think, I'm not sure, but I think the PlayStation 5 UI is actually a super app built with React Native. [37:06] -And, I will link a with, in the chat to show you why I think that, but, maybe I'm wrong. I don't know. I think it's, it's quite exciting to, to see that, first, React Native is running on PlayStation 5 and, that this is a super app maybe. [00:37:22] +And, I will link a with, in the chat to show you why I think that, but, maybe I'm wrong. I don't know. I think it's, it's quite exciting to, to see that, first, React Native is running on PlayStation 5 and, that this is a super app maybe. [37:22] -**Carl Vitullo:** Oh, interesting. Wait, PlayStation 5 UI is implemented and React Native? Is that what you said? [00:37:27] +**Carl Vitullo:** Oh, interesting. Wait, PlayStation 5 UI is implemented and React Native? Is that what you said? [37:27] -**Sebastien Lorber:** Yeah, actually I think they started to use React Native, already at, PlayStation 4, according to the comments. [00:37:35] +**Sebastien Lorber:** Yeah, actually I think they started to use React Native, already at, PlayStation 4, according to the comments. [37:35] -**Carl Vitullo:** Oh wow. That's pretty cool. I didn't know that. Very nice. Yeah, the, the super app, as they describe it, I see that they have a comparison to micro front ends and definitely sounds a little bit similar, sort of a architecture around. Structuring an app. [00:37:50] +**Carl Vitullo:** Oh wow. That's pretty cool. I didn't know that. Very nice. Yeah, the, the super app, as they describe it, I see that they have a comparison to micro front ends and definitely sounds a little bit similar, sort of a architecture around. Structuring an app. [37:50] -**Sebastien Lorber:** This is, yeah, I think perhaps is the, the mobile term for micro front ends on the web. So it's exactly the same, I think, module federations and things like that. So, [00:38:00] +**Sebastien Lorber:** This is, yeah, I think perhaps is the, the mobile term for micro front ends on the web. So it's exactly the same, I think, module federations and things like that. So, [38:00] -**Carl Vitullo:** Yeah, it makes sense. And I think both of those are, or you know, my understanding of micro front ends is it's an architectural decision that is influenced by the size of the team, sort of a, it's maybe not desirable on its own. But in the context of a large company that has, you know, say 80 developers, 80, 100, 200 developers, all working on the same application, getting to a place where you aren't constantly stepping on each other's toes with merge conflicts, and it's just swapping out behavior of shared primitives all the time. [00:38:36] +**Carl Vitullo:** Yeah, it makes sense. And I think both of those are, or you know, my understanding of micro front ends is it's an architectural decision that is influenced by the size of the team, sort of a, it's maybe not desirable on its own. But in the context of a large company that has, you know, say 80 developers, 80, 100, 200 developers, all working on the same application, getting to a place where you aren't constantly stepping on each other's toes with merge conflicts, and it's just swapping out behavior of shared primitives all the time. [38:36] -I think it— that's sort of the context where these super apps or micro front ends are really important and really, not just important, but kind of necessary for enabling that level of, collaboration. [00:38:47] +I think it— that's sort of the context where these super apps or micro front ends are really important and really, not just important, but kind of necessary for enabling that level of, collaboration. [38:47] -**Sebastien Lorber:** Yeah I think, this is necessary. I think I, I had a case, at work a few years ago where, They wanted to, to build a, a very large application for, a big, company in France. And they wanted to so that each part of the app would be implemented by a different contracting team. basically, we all share the same dependencies, but there are like 10 teams from different companies working as a contractor for the client. [00:39:17] +**Sebastien Lorber:** Yeah I think, this is necessary. I think I, I had a case, at work a few years ago where, They wanted to, to build a, a very large application for, a big, company in France. And they wanted to so that each part of the app would be implemented by a different contracting team. basically, we all share the same dependencies, but there are like 10 teams from different companies working as a contractor for the client. [39:17] -So this looks like a, a really good use case for, for using, this kind of, of architecture because, you know, otherwise it's, it's a big mess because you, someone in another team will upgrade a dependency and then you will have a. Really complex side effects for all the other teams and or everybody will, fight again each server to reject the responsibility for, for, for the bugs (laughter). [00:39:44] +So this looks like a, a really good use case for, for using, this kind of, of architecture because, you know, otherwise it's, it's a big mess because you, someone in another team will upgrade a dependency and then you will have a. Really complex side effects for all the other teams and or everybody will, fight again each server to reject the responsibility for, for, for the bugs (laughter). [39:44] -**Carl Vitullo:** Makes sense. Oh man. That's, having multiple different contracting agencies work on the same app. That's like an extra level to that. Because I imagine you need various Yeah. Controls to keep different people from accessing parts they're not authorized too. Yeah. Wow. [00:40:01] +**Carl Vitullo:** Makes sense. Oh man. That's, having multiple different contracting agencies work on the same app. That's like an extra level to that. Because I imagine you need various Yeah. Controls to keep different people from accessing parts they're not authorized too. Yeah. Wow. [40:01] -Cool. Yeah. Well, I'll kick us off with a lightning round. [00:40:03] +Cool. Yeah. Well, I'll kick us off with a lightning round. [40:03] ## ⚡️ Core team layoffs @@ -358,104 +358,104 @@ Cool. Yeah. Well, I'll kick us off with a lightning round. [00:40:03] - [⁠⁠⁠Matt Carroll⁠⁠⁠](https://twitter.com/mattcarrollcode/status/1648770402272018432) - [⁠⁠⁠Sean Keegan⁠⁠⁠](https://twitter.com/DevRelSean/status/1649466893806215172) -**Carl Vitullo:** Just a, a quick shout out that I think is nice to do. A number of core team members for React and, you know, the surrounding ecosystem were hit by layoffs at Meta. Just a, you know, poor run out for our, for our Lost Friends. [00:40:18] +**Carl Vitullo:** Just a, a quick shout out that I think is nice to do. A number of core team members for React and, you know, the surrounding ecosystem were hit by layoffs at Meta. Just a, you know, poor run out for our, for our Lost Friends. [40:18] -Just looks like it was a, among others. This is the list that I am aware of top of mind. [00:40:24] +Just looks like it was a, among others. This is the list that I am aware of top of mind. [40:24] -Mengdi Chen from the React Dev Tools. Robert Balicky from Relay. Matt Carroll doing devrel for React, and Sean Keegan also doing devrel. Yeah, layoffs, they suck, but also seeing Tom Occhino and Dominic Gannaway joined Vercel. So more, you know, legendary React figures moving over there. A lot of, lot of churn going on team right now. [00:40:47] +Mengdi Chen from the React Dev Tools. Robert Balicky from Relay. Matt Carroll doing devrel for React, and Sean Keegan also doing devrel. Yeah, layoffs, they suck, but also seeing Tom Occhino and Dominic Gannaway joined Vercel. So more, you know, legendary React figures moving over there. A lot of, lot of churn going on team right now. [40:47] ## ⚡️ React Miami -**Mark Erikson:** React Miami was this last week and it was an amazingly well done conference. Both Carl and I were there. I, I got to speak. It was excellent, organized. The rest of the speakers were wonderful. The atmosphere was amazing and I got to spend a lot of time talking to, you know, both people that I know from online, from the conference circuit, but also just talking to lots of, you know, sort of lots of random people who are working in different jobs, solving different problems. [00:41:14] +**Mark Erikson:** React Miami was this last week and it was an amazingly well done conference. Both Carl and I were there. I, I got to speak. It was excellent, organized. The rest of the speakers were wonderful. The atmosphere was amazing and I got to spend a lot of time talking to, you know, both people that I know from online, from the conference circuit, but also just talking to lots of, you know, sort of lots of random people who are working in different jobs, solving different problems. [41:14] -It was just a wonderful experience. [00:41:16] +It was just a wonderful experience. [41:16] -**Carl Vitullo:** Echoing that, absolutely amazing. [00:41:19] +**Carl Vitullo:** Echoing that, absolutely amazing. [41:19] -Cool. Yeah. Sebastian, you got a lightning round link. [00:41:21] +Cool. Yeah. Sebastian, you got a lightning round link. [41:21] ## ⚡️ react-three offscreen - [⁠⁠⁠⚡️ react-three offscreen⁠⁠⁠](https://github.com/pmndrs/react-three-offscreen) -**Sebastien Lorber:** I just wanted to mention, react-three offscreen. The idea is that, you use a react-three fiber to run the three descents. And now it supports to be, to run inside a web worker. So basically you, you use something, a standard web API called Offscreen Canvas and it permits to, to draw inside the web worker. [00:41:45] +**Sebastien Lorber:** I just wanted to mention, react-three offscreen. The idea is that, you use a react-three fiber to run the three descents. And now it supports to be, to run inside a web worker. So basically you, you use something, a standard web API called Offscreen Canvas and it permits to, to draw inside the web worker. [41:45] -So basically you run down your three design inside another thread, and it doesn't block your UI thread. So, It's quite interesting for performance reasons because you can integrate, complex, 3D animations and it doesn't block the, the rest of your website. So I think it's interesting to, to use. [00:42:04] +So basically you run down your three design inside another thread, and it doesn't block your UI thread. So, It's quite interesting for performance reasons because you can integrate, complex, 3D animations and it doesn't block the, the rest of your website. So I think it's interesting to, to use. [42:04] ## ⚡️ Lingui v4.0 - [⁠⁠⁠⚡️ Lingui v4.0⁠⁠⁠](https://github.com/lingui/js-lingui/releases/tag/v4.0.0) -**Carl Vitullo:** Very cool. I'll take next Lingui 4.0. I've used Lingui in the past, it's a internationalization framework. I've tried a couple of different internationalization frameworks and wasn't super happy with them, but Lingui actually worked pretty reliably, when I did need to use it. So just shout, shouting them out. New major release. [00:42:24] +**Carl Vitullo:** Very cool. I'll take next Lingui 4.0. I've used Lingui in the past, it's a internationalization framework. I've tried a couple of different internationalization frameworks and wasn't super happy with them, but Lingui actually worked pretty reliably, when I did need to use it. So just shout, shouting them out. New major release. [42:24] -**Sebastien Lorber:** Yeah, actually I'm, I'm in touch with the, the guy, that sent me this link for just today, and I, I asked him to, To write a blog post and maybe we will feature it better in the newsletter next week because, I think may, it looks interesting. It looks like a bit react-intl, but, provides some additional, developer experience on top of it. [00:42:48] +**Sebastien Lorber:** Yeah, actually I'm, I'm in touch with the, the guy, that sent me this link for just today, and I, I asked him to, To write a blog post and maybe we will feature it better in the newsletter next week because, I think may, it looks interesting. It looks like a bit react-intl, but, provides some additional, developer experience on top of it. [42:48] -I think, I mean it's not, a layer on top of, react-intl, but it's quite similar. It's using the ICU message syntax and, quite similar features, like the ability to extract the translation from the cloud and things like that. So I think they will, they will write a blog post to present better this new release quite soon. [00:43:10] +I think, I mean it's not, a layer on top of, react-intl, but it's quite similar. It's using the ICU message syntax and, quite similar features, like the ability to extract the translation from the cloud and things like that. So I think they will, they will write a blog post to present better this new release quite soon. [43:10] -**Carl Vitullo:** Cool. Yeah. Maybe we can go go in more in depth next month. [00:43:13] +**Carl Vitullo:** Cool. Yeah. Maybe we can go go in more in depth next month. [43:13] -**Sebastien Lorber:** Yeah. [00:43:14] +**Sebastien Lorber:** Yeah. [43:14] ## ⚡️ Redux Toolkit 2.0 alpha - [⁠⁠⁠⚡️ Redux Toolkit 2.0 alpha⁠⁠⁠](https://github.com/reduxjs/redux-toolkit/releases/tag/v2.0.0-alpha.5) -**Mark Erikson:** I've got a, I've got a semi self plug. So we've been working on the Redux Toolkit 2.0 Alphas, and we're currently on 2.0 Alpha five. The RTK 2.0 is working on improving our ESM common JS package formatting, modernizing the JavaScript output and. We're moving a few bits of deprecated options and APIs and generally trying to make things faster. [00:43:40] +**Mark Erikson:** I've got a, I've got a semi self plug. So we've been working on the Redux Toolkit 2.0 Alphas, and we're currently on 2.0 Alpha five. The RTK 2.0 is working on improving our ESM common JS package formatting, modernizing the JavaScript output and. We're moving a few bits of deprecated options and APIs and generally trying to make things faster. [43:40] -we've also got a couple new features in there, so they're tagged as Alpha because we're still working on changing a bunch things, but the code that's in there is stable and we'd really encourage folks to try out the Alphas and give us feedback like, does this work in your app? Does it accidentally break anything? [00:43:56] +we've also got a couple new features in there, so they're tagged as Alpha because we're still working on changing a bunch things, but the code that's in there is stable and we'd really encourage folks to try out the Alphas and give us feedback like, does this work in your app? Does it accidentally break anything? [43:56] -The current Alphas have Emerton final in there, so you get some of the speed benefits that I was talking about earlier, and then something that I hope will end up as part of RTK 2.0. Final. I've been experimenting with a couple new memorization options for the Reselect library. One of them is very inspired by what the Ember folks have done with auto tracking field accesses. [00:44:21] +The current Alphas have Emerton final in there, so you get some of the speed benefits that I was talking about earlier, and then something that I hope will end up as part of RTK 2.0. Final. I've been experimenting with a couple new memorization options for the Reselect library. One of them is very inspired by what the Ember folks have done with auto tracking field accesses. [44:21] -So the idea is that. It knows exactly what fields you're accessing and only recalculates the select results if those fields got changed and not other fields. There's also another one that I was playing around with that is basically a direct copy paste from a React internal cash implementation that uses weak maps to track arguments. [00:44:42] +So the idea is that. It knows exactly what fields you're accessing and only recalculates the select results if those fields got changed and not other fields. There's also another one that I was playing around with that is basically a direct copy paste from a React internal cash implementation that uses weak maps to track arguments. [44:42] -Right now none of that is released. I have a PR up over in the reselect repo that has like the initial, like "I've been hacking on this and it sort of seems to work" graphs, so I'm hoping to go back and work on that further. Assuming those work out, they will either go into Reselect 4.2 or Reselect 5.0 depending on what I feel like. [00:45:04] +Right now none of that is released. I have a PR up over in the reselect repo that has like the initial, like "I've been hacking on this and it sort of seems to work" graphs, so I'm hoping to go back and work on that further. Assuming those work out, they will either go into Reselect 4.2 or Reselect 5.0 depending on what I feel like. [45:04] -And then one way or another that the new version of Reselect would get included in RTK 2.0. So trying to find ways to make things better. [00:45:13] +And then one way or another that the new version of Reselect would get included in RTK 2.0. So trying to find ways to make things better. [45:13] ## ⚡️ Netlify framework popularity - [⁠⁠⁠⚡️ Netlify framework popularity⁠⁠⁠](https://www.netlify.com/blog/framework-popularity-on-netlify/) -**Carl Vitullo:** Cool. Heck yeah. Yeah. well I saw the framework popularity on Netflix, or Netlify blog post. Definitely pretty interesting data to look at. They broke it down by free sites, paid sites, and enterprise sites. Just a couple of notable, I'll, I'll call out, Create React App Next, and Gatsby, I think those were, Some of the interesting results. [00:45:34] +**Carl Vitullo:** Cool. Heck yeah. Yeah. well I saw the framework popularity on Netflix, or Netlify blog post. Definitely pretty interesting data to look at. They broke it down by free sites, paid sites, and enterprise sites. Just a couple of notable, I'll, I'll call out, Create React App Next, and Gatsby, I think those were, Some of the interesting results. [45:34] -So free sites, 40% of them were using Create React App that goes down to 23% if you just go by paid sites and all the way down to 18 if you're looking at Enterprise. So yeah, Next, and Gatsby were 2 and 3. Those are pretty reliably the top three, and Next only gets more popular as you go up in price scheme. [00:45:56] +So free sites, 40% of them were using Create React App that goes down to 23% if you just go by paid sites and all the way down to 18 if you're looking at Enterprise. So yeah, Next, and Gatsby were 2 and 3. Those are pretty reliably the top three, and Next only gets more popular as you go up in price scheme. [45:56] -Yeah, I thought it was a pretty interesting bit of data to look at. Definitely impressive to see how well Next is doing. Although, you know, one thing I was surprised to see missing here was Remix, but I guess they don't really support so much of a static export, and that's kind of Netlify's bread and butter. [00:46:14] +Yeah, I thought it was a pretty interesting bit of data to look at. Definitely impressive to see how well Next is doing. Although, you know, one thing I was surprised to see missing here was Remix, but I guess they don't really support so much of a static export, and that's kind of Netlify's bread and butter. [46:14] -**Sebastien Lorber:** There is a Remix adaptor for Netlify, I think, but, yeah, it's always complicated to, to market another platform, then, when it's not maybe the first class to support and, [00:46:27] +**Sebastien Lorber:** There is a Remix adaptor for Netlify, I think, but, yeah, it's always complicated to, to market another platform, then, when it's not maybe the first class to support and, [46:27] -**Carl Vitullo:** Yeah, sure. [00:46:28] +**Carl Vitullo:** Yeah, sure. [46:28] -**Sebastien Lorber:** Although was happy to, to find out that, Docusaurus, has a 4%, share in the enterprise site. So this is, there are more Docusaurus sites on Netlify than, Remix sites on, on Netlify. [00:46:43] +**Sebastien Lorber:** Although was happy to, to find out that, Docusaurus, has a 4%, share in the enterprise site. So this is, there are more Docusaurus sites on Netlify than, Remix sites on, on Netlify. [46:43] -**Carl Vitullo:** Oh, funny. [00:46:44] +**Carl Vitullo:** Oh, funny. [46:44] -**Mark Erikson:** I think the other interesting takeaway there is the popularity of Create React App in, in those categories, which, you know, kind of goes to the difference between like the, the chatter on Twitter and, you know, all the, the emphasis from the React team we've seen versus, well, okay, here's how stuff is actually being used in the real world at the moment. [00:47:02] +**Mark Erikson:** I think the other interesting takeaway there is the popularity of Create React App in, in those categories, which, you know, kind of goes to the difference between like the, the chatter on Twitter and, you know, all the, the emphasis from the React team we've seen versus, well, okay, here's how stuff is actually being used in the real world at the moment. [47:02] -**Carl Vitullo:** Right. Hobbyists versus professional maybe. [00:47:06] +**Carl Vitullo:** Right. Hobbyists versus professional maybe. [47:06] -Yeah. Cool. mark, anything else you wanna call out? [00:47:09] +Yeah. Cool. mark, anything else you wanna call out? [47:09] ## ⚡️ PartyKit - [⁠⁠⁠⚡️ PartyKit⁠⁠⁠](https://github.com/partykit/partykit) -**Mark Erikson:** One other little item. So Sunil Pai, who's a former member of the React Team and has been revolved in the re in the React ecosystem for many years, has been doing a startup called Party Kit where he's building infrastructure for real-time multi-player applications. You know, the, the kind of thing where you see like 30 different people interacting with the same whiteboard simultaneously, and he just open sourced the party kit repo at React Miami. [00:47:39] +**Mark Erikson:** One other little item. So Sunil Pai, who's a former member of the React Team and has been revolved in the re in the React ecosystem for many years, has been doing a startup called Party Kit where he's building infrastructure for real-time multi-player applications. You know, the, the kind of thing where you see like 30 different people interacting with the same whiteboard simultaneously, and he just open sourced the party kit repo at React Miami. [47:39] -I know it's a thing he was very, very excited about and I haven't had, again, haven't had a chance to play with it, but it looks really cool. [00:47:48] +I know it's a thing he was very, very excited about and I haven't had, again, haven't had a chance to play with it, but it looks really cool. [47:48] -**Carl Vitullo:** Yeah, agreed on all counts. I haven't played with it yet, but I've been following development because Sunil Pai is just such a, such a great person. I really enjoy… we, we had him on for an event, talking about rewrites, and he's just such a, thoughtful and kind person. I, you know, I'm gonna be rooting for him, in anything he does. Ha. [00:48:07] +**Carl Vitullo:** Yeah, agreed on all counts. I haven't played with it yet, but I've been following development because Sunil Pai is just such a, such a great person. I really enjoy… we, we had him on for an event, talking about rewrites, and he's just such a, thoughtful and kind person. I, you know, I'm gonna be rooting for him, in anything he does. Ha. [48:07] -**Sebastien Lorber:** Yeah (chuckles). [00:48:09] +**Sebastien Lorber:** Yeah (chuckles). [48:09] -**Carl Vitullo:** Cool. Okay, everyone, thank you so much for joining us for this April edition of This Month In React. I hope, I hope you learned something. I hope that you felt like we're helping you stay on top of the React ecosystem. There's always a lot going on, so hopefully we can bring some clarity. [00:48:22] +**Carl Vitullo:** Cool. Okay, everyone, thank you so much for joining us for this April edition of This Month In React. I hope, I hope you learned something. I hope that you felt like we're helping you stay on top of the React ecosystem. There's always a lot going on, so hopefully we can bring some clarity. [48:22] -Mark and Sebastian, thank you so much for talking with us. [00:48:25] +Mark and Sebastian, thank you so much for talking with us. [48:25] -**Mark Erikson:** Yep. Always. [00:48:26] +**Mark Erikson:** Yep. Always. [48:26] -**Sebastien Lorber:** Thank you, and see you next, next month. [00:48:28] +**Sebastien Lorber:** Thank you, and see you next, next month. [48:28] -**Carl Vitullo:** Yeah, see you next month. Awesome. Thanks so much. see you guys later. [00:48:33] +**Carl Vitullo:** Yeah, see you next month. Awesome. Thanks so much. see you guys later. [48:33] **Sebastien Lorber:** Bye. diff --git a/src/transcripts/tmir-august-2023.md b/src/transcripts/tmir-august-2023.md index 7ae2c67..b20628c 100644 --- a/src/transcripts/tmir-august-2023.md +++ b/src/transcripts/tmir-august-2023.md @@ -54,370 +54,370 @@ Links used: - [The underlying mechanisms of React’s concurrent mode](https://andreigatej.dev/blog/the-underlying-mechanisms-of-reacts-concurrent-mode/) - [React Jam - Summer 2023 Winners](https://reactjam.com/summer-2023-winners) -[00:00:00] **Carl Vitullo:** Hello, everyone. Thank you for joining us again for This Month in React, where we digest and discuss the latest developments in the ever evolving React and web ecosystem. Right now I've got myself the community manager of sorts for Reactiflux, and Mark Erikson. Mark, you want to introduce yourself? +[00:00] **Carl Vitullo:** Hello, everyone. Thank you for joining us again for This Month in React, where we digest and discuss the latest developments in the ever evolving React and web ecosystem. Right now I've got myself the community manager of sorts for Reactiflux, and Mark Erikson. Mark, you want to introduce yourself? -[00:00:20] **Mark Erikson:** My day job is working at Replay.io where we're building a true time traveling debugger for JavaScript. If you haven't seen it, please check it out. And in my copious amounts of free time, I work on various Redux related projects. +[00:20] **Mark Erikson:** My day job is working at Replay.io where we're building a true time traveling debugger for JavaScript. If you haven't seen it, please check it out. And in my copious amounts of free time, I work on various Redux related projects. -[00:00:33] **Carl Vitullo:** Various projects. Yeah, that's almost understating it. Cool. Yeah, uh, we usually have Sebastian Lorber as well, but um, He's not here yet. So let's go ahead and jump in I guess. +[00:33] **Carl Vitullo:** Various projects. Yeah, that's almost understating it. Cool. Yeah, uh, we usually have Sebastian Lorber as well, but um, He's not here yet. So let's go ahead and jump in I guess. -[00:00:44] My first link that I wanted to discuss is, Is Gatsby Dead, uh, which here is a tweet from Sebastian with a screenshot, uh of mid August, Fred Schott. " Notice that there have been zero commits to the Gatsby repo in the last 24 days." Which, for a thriving open source project, that's not a great statistic. +[00:44] My first link that I wanted to discuss is, Is Gatsby Dead, uh, which here is a tweet from Sebastian with a screenshot, uh of mid August, Fred Schott. " Notice that there have been zero commits to the Gatsby repo in the last 24 days." Which, for a thriving open source project, that's not a great statistic. -[00:01:07] I know it was acquired by Netlify earlier this year, this year. Um, and yeah, there's been a lot of discussion around Gatsby as a project, I guess, and where it's headed. yeah, I don't know, Mark, any, any, any thoughts on Gatsby's status? +[01:07] I know it was acquired by Netlify earlier this year, this year. Um, and yeah, there's been a lot of discussion around Gatsby as a project, I guess, and where it's headed. yeah, I don't know, Mark, any, any, any thoughts on Gatsby's status? -[00:01:26] **Mark Erikson:** So my first caveat was I never had a chance to use it myself, but just kind of eyeballing bits and pieces, it certainly felt like next has been eating into Gatsby's, uh, market share and mind share over the last year or two, um, both due to complexities around trying to manage. +[01:26] **Mark Erikson:** So my first caveat was I never had a chance to use it myself, but just kind of eyeballing bits and pieces, it certainly felt like next has been eating into Gatsby's, uh, market share and mind share over the last year or two, um, both due to complexities around trying to manage. -[00:01:45] Build times and graph QL setups and whatnot with Gatsby as well as, you know, sort of the evolving ecosystem consensus that next is sort of the default way to build React apps for better or for worse. And so I'd certainly gotten the vague sense that Gatsby has been sort of kind of falling out of favor over time. +[01:45] Build times and graph QL setups and whatnot with Gatsby as well as, you know, sort of the evolving ecosystem consensus that next is sort of the default way to build React apps for better or for worse. And so I'd certainly gotten the vague sense that Gatsby has been sort of kind of falling out of favor over time. -[00:02:08] And I don't know, like, anytime I see any product get acquired by a bigger company, you just have that sense that, well, it was nice knowing you, uh, like, sooner or later it's dead. And especially when that involves, you know, companies with. VC backing and it feels like Netlify itself has been struggling a bit and on the downswing. +[02:08] And I don't know, like, anytime I see any product get acquired by a bigger company, you just have that sense that, well, it was nice knowing you, uh, like, sooner or later it's dead. And especially when that involves, you know, companies with. VC backing and it feels like Netlify itself has been struggling a bit and on the downswing. -[00:02:32] And so the fact that they bought Gatsby and then don't seem to be doing much with it certainly suggests to me that it's, it's basically dead at this point. +[02:32] And so the fact that they bought Gatsby and then don't seem to be doing much with it certainly suggests to me that it's, it's basically dead at this point. -[00:02:42] **Carl Vitullo:** And dead is always, you know, what, what does dead mean is always, uh, an open question, you know, because Gatsby still works. It's an open source, you know, self hosted product for the most part, or project, I guess, for the most part. +[02:42] **Carl Vitullo:** And dead is always, you know, what, what does dead mean is always, uh, an open question, you know, because Gatsby still works. It's an open source, you know, self hosted product for the most part, or project, I guess, for the most part. -[00:02:55] So yeah, I have used Gatsby on a couple of relatively large projects. I used it for my personal website. I used it for a marketing website at a previous company, which actually it ended up getting replaced by Webflow. and I, used it again on a large documentation site, which again has now been replaced by Docusaurus. +[02:55] So yeah, I have used Gatsby on a couple of relatively large projects. I used it for my personal website. I used it for a marketing website at a previous company, which actually it ended up getting replaced by Webflow. and I, used it again on a large documentation site, which again has now been replaced by Docusaurus. -[00:03:15] So I think that's, I think that that's kind of the the pattern I've observed is, you know, maybe four years ago, there was a lot of energy around using Gatsby, and there's a lot of excitement for it. But at least, you know, my experience was I tried to use it for some relatively large projects and stakeholders weren't super into it. +[03:15] So I think that's, I think that that's kind of the the pattern I've observed is, you know, maybe four years ago, there was a lot of energy around using Gatsby, and there's a lot of excitement for it. But at least, you know, my experience was I tried to use it for some relatively large projects and stakeholders weren't super into it. -[00:03:34] The marketing and content folk didn't really jive with the experience of authoring content. The deployment story was a little bit hairy, uh, just ended up with a lot of funky little breakages every now and again, that were a little bit tricky to debug though. I don't know. +[03:34] The marketing and content folk didn't really jive with the experience of authoring content. The deployment story was a little bit hairy, uh, just ended up with a lot of funky little breakages every now and again, that were a little bit tricky to debug though. I don't know. -[00:03:52] Yeah, I, I echo your sentiments on being a VC backed company, acquire an open source project. There's always a bit of a squinty eyed skepticism. Like, where's this going? +[03:52] Yeah, I, I echo your sentiments on being a VC backed company, acquire an open source project. There's always a bit of a squinty eyed skepticism. Like, where's this going? -[00:04:04] **Mark Erikson:** Well, I mean, on top of that, they're, they're both VC backed projects. I mean, Netlify itself, even though we can probably think of it as being a relatively stable company has a whole bunch of VC backing. And Gatsby is an actual company with VC backing different sizes. +[04:04] **Mark Erikson:** Well, I mean, on top of that, they're, they're both VC backed projects. I mean, Netlify itself, even though we can probably think of it as being a relatively stable company has a whole bunch of VC backing. And Gatsby is an actual company with VC backing different sizes. -[00:04:21] **Carl Vitullo:** You know, I, I did see that there, you know, the official Gatsby account did reply to that tweet thread we're discussing and they said, "fear not Gatsby is vital to many, to a great many of our customers updates to React 18 and Gatsby adapters are the most imminent updates, but we're also busy investing in platform primitives for a stronger Gatsby JS and other frameworks too," I don't know, they're saying it's not dead, but I, I would agree with you on the, you know, sort of the vibes I've been picking up with. +[04:21] **Carl Vitullo:** You know, I, I did see that there, you know, the official Gatsby account did reply to that tweet thread we're discussing and they said, "fear not Gatsby is vital to many, to a great many of our customers updates to React 18 and Gatsby adapters are the most imminent updates, but we're also busy investing in platform primitives for a stronger Gatsby JS and other frameworks too," I don't know, they're saying it's not dead, but I, I would agree with you on the, you know, sort of the vibes I've been picking up with. -[00:04:47] Netlify invested really hard in Jamstack and the client, you know, client side applications. And those have kind of gone out of vogue a little bit, but yeah, I guess we'll have to see what happens. I did actually connect with some Gatsby folks after Reactathon a couple of weeks ago, maybe eight weeks ago, um, about maybe doing some community work with them and they said, what I heard back was decisions are being made and we'll see what, what happens there. +[04:47] Netlify invested really hard in Jamstack and the client, you know, client side applications. And those have kind of gone out of vogue a little bit, but yeah, I guess we'll have to see what happens. I did actually connect with some Gatsby folks after Reactathon a couple of weeks ago, maybe eight weeks ago, um, about maybe doing some community work with them and they said, what I heard back was decisions are being made and we'll see what, what happens there. -[00:05:14] So, I don't know, have to see, have to see how it shakes out, but not looking super great for Gatsby as a, the growth trajectory of Gatsby is not looking super great to me. +[05:14] So, I don't know, have to see, have to see how it shakes out, but not looking super great for Gatsby as a, the growth trajectory of Gatsby is not looking super great to me. -[00:05:24] **Mark Erikson:** So, so you mentioned Jamstack, and I actually, I know I saw a couple articles, and I'm trying to bring up some links at the moment, uh, that very recently were talking about how the term Jamstack feels like it's either, it's also either dead, or at least has just sort of become so vague and nebulous it doesn't have a specific meaning. +[05:24] **Mark Erikson:** So, so you mentioned Jamstack, and I actually, I know I saw a couple articles, and I'm trying to bring up some links at the moment, uh, that very recently were talking about how the term Jamstack feels like it's either, it's also either dead, or at least has just sort of become so vague and nebulous it doesn't have a specific meaning. -[00:05:48] Again, this is not my area of expertise, but seeing that discussion and knowing how much Netlify had tried to orient themselves around the term JAMstack, and as well as Gatsby, also suggests that the ecosystem has shifted enough that it You know, kind of points away from Gatsby as a Gatsby still usable. +[05:48] Again, this is not my area of expertise, but seeing that discussion and knowing how much Netlify had tried to orient themselves around the term JAMstack, and as well as Gatsby, also suggests that the ecosystem has shifted enough that it You know, kind of points away from Gatsby as a Gatsby still usable. -[00:06:12] Obviously, it's just not where the mindset is at this point. +[06:12] Obviously, it's just not where the mindset is at this point. -[00:06:15] **Carl Vitullo:** Definitely. It feels like the zeitgeist of Web and React has expanded beyond what Gatsby offers. Well, and what Jamstack was oriented around. Definitely. +[06:15] **Carl Vitullo:** Definitely. It feels like the zeitgeist of Web and React has expanded beyond what Gatsby offers. Well, and what Jamstack was oriented around. Definitely. -[00:06:27] Cool. Uh, you want to take us on our next link? +[06:27] Cool. Uh, you want to take us on our next link? -## [00:06:30] Things You Forgot or Never Knew Because of React +## [06:30] Things You Forgot or Never Knew Because of React -[00:06:30] **Mark Erikson:** So there's been a whole sub genre of blog articles over the last few years with people going off on rants about act is an awful library. +[06:30] **Mark Erikson:** So there's been a whole sub genre of blog articles over the last few years with people going off on rants about act is an awful library. -[00:06:42] The people behind React are trying to sell you something that is, that is misleading. " React is horrible for web performance." And these articles are usually fairly well written. I don't generally agree with them, but it is a useful set of counterpoints to, you know, kind of our own little bubble that we have. +[06:42] The people behind React are trying to sell you something that is, that is misleading. " React is horrible for web performance." And these articles are usually fairly well written. I don't generally agree with them, but it is a useful set of counterpoints to, you know, kind of our own little bubble that we have. -[00:07:04] Alex Russell, uh, formerly of Google, now Microsoft, has written a number of articles along those lines. Um, a lot of folks who are very involved in the web components community have written articles along those lines. And so there was another article of that type that came out a few weeks ago called Things You Forgot or Never Knew Because of React. +[07:04] Alex Russell, uh, formerly of Google, now Microsoft, has written a number of articles along those lines. Um, a lot of folks who are very involved in the web components community have written articles along those lines. And so there was another article of that type that came out a few weeks ago called Things You Forgot or Never Knew Because of React. -[00:07:26] And it's, it's a long article, um, I, I won't try to cover all the points that it makes, but it's, it's worth reading at a minimum to get kind of like an alternate perspective. On how does React fit in with the rest of the web development ecosystem? What are pain points that other people see looking at react? +[07:26] And it's, it's a long article, um, I, I won't try to cover all the points that it makes, but it's, it's worth reading at a minimum to get kind of like an alternate perspective. On how does React fit in with the rest of the web development ecosystem? What are pain points that other people see looking at react? -[00:07:47] Um, what are some of the lessons that we in the React develop the developer community have internalized that maybe are worth a rethought? And include some things like, um, "hooks as excited as we all were when they came out. Well, now we've now there are things like, and observables and other ways of managing data flow. +[07:47] Um, what are some of the lessons that we in the React develop the developer community have internalized that maybe are worth a rethought? And include some things like, um, "hooks as excited as we all were when they came out. Well, now we've now there are things like, and observables and other ways of managing data flow. -[00:08:09] The end. So the post argues that, you know, they're faster and easier to work with. Actually, yeah, okay, this, this is a good, good one. There's a bullet point that says "nobody else is afraid of their frameworks version of useEffect." Okay, that, that's, that's probably the one point in this article I agree with the most. +[08:09] The end. So the post argues that, you know, they're faster and easier to work with. Actually, yeah, okay, this, this is a good, good one. There's a bullet point that says "nobody else is afraid of their frameworks version of useEffect." Okay, that, that's, that's probably the one point in this article I agree with the most. -[00:08:26] You know, it argues that, you know, two way data binding, which is something that we, we in the React community have always argued against because control components, even though similar, are somehow better. It argues that two way data binding is not a thing that you should be afraid of, and, you know, goes on and lists a whole bunch of other different competing frameworks and suggests that you should look at them - affect my own personal view of React, but it's always good to kind of get that, you know, that alternate viewpoint of what are some of the strengths and weaknesses of tools and make considerations from there. +[08:26] You know, it argues that, you know, two way data binding, which is something that we, we in the React community have always argued against because control components, even though similar, are somehow better. It argues that two way data binding is not a thing that you should be afraid of, and, you know, goes on and lists a whole bunch of other different competing frameworks and suggests that you should look at them - affect my own personal view of React, but it's always good to kind of get that, you know, that alternate viewpoint of what are some of the strengths and weaknesses of tools and make considerations from there. -[00:09:00] **Carl Vitullo:** I think, I think what you said about, you know, people shouldn't be afraid of two way binding. That doesn't really jive with my personal experience of using two way binding, which is that it was scary. It was difficult to debug. I didn't find it a pleasant, you know, experience for authoring code. So, I don't know, somebody else telling me, "oh, don't be afraid of it, it's fine." +[09:00] **Carl Vitullo:** I think, I think what you said about, you know, people shouldn't be afraid of two way binding. That doesn't really jive with my personal experience of using two way binding, which is that it was scary. It was difficult to debug. I didn't find it a pleasant, you know, experience for authoring code. So, I don't know, somebody else telling me, "oh, don't be afraid of it, it's fine." -[00:09:19] It's like, well, I'm afraid of it because it was, Very painful for me in the times when I used it professionally for, you know, two years before I used React. Um, so, that did not resonate with me very strongly. +[09:19] It's like, well, I'm afraid of it because it was, Very painful for me in the times when I used it professionally for, you know, two years before I used React. Um, so, that did not resonate with me very strongly. -[00:09:34] **Mark Erikson:** I'd have to go back and re read that section of the post, but I do sort of feel like programming paradigms come and go and come again and go again. +[09:34] **Mark Erikson:** I'd have to go back and re read that section of the post, but I do sort of feel like programming paradigms come and go and come again and go again. -[00:09:45] Everything's in a circle and nothing's new. But I do, I feel like there is a little bit of a sense of people forgetting why shifts in paradigms were made in the first place, you know, people getting into React today don't actually know what it was like to use Backbon or Angular 1. And so they don't understand the pain points and why React was such a big deal and so exciting when it first came out because they didn't. +[09:45] Everything's in a circle and nothing's new. But I do, I feel like there is a little bit of a sense of people forgetting why shifts in paradigms were made in the first place, you know, people getting into React today don't actually know what it was like to use Backbon or Angular 1. And so they don't understand the pain points and why React was such a big deal and so exciting when it first came out because they didn't. -[00:10:15] Feel that pain. Now it's just, we've always had React. It's always quote unquote, "been the default", and yeah, like back that, for example, an Angular one template could mutate arbitrary data, you know, deeply nested from within a JS nested in an HTML template string, that was really hard to debug and keep track of. +[10:15] Feel that pain. Now it's just, we've always had React. It's always quote unquote, "been the default", and yeah, like back that, for example, an Angular one template could mutate arbitrary data, you know, deeply nested from within a JS nested in an HTML template string, that was really hard to debug and keep track of. -[00:10:38] And so I think, I think that's where a lot of the concern about two way data binding actually came from in the first place and we all sort of internalized and repeated this phrase and now no one remembers why we did, why did we have that concern to start with? +[10:38] And so I think, I think that's where a lot of the concern about two way data binding actually came from in the first place and we all sort of internalized and repeated this phrase and now no one remembers why we did, why did we have that concern to start with? -[00:10:53] **Carl Vitullo:** Yeah, I, I definitely agree with that. If that reminds me of a, a line from the post where they talked about React being tech from 2013 designed for 2008 constraints, which I don't a hundred percent agree with. +[10:53] **Carl Vitullo:** Yeah, I, I definitely agree with that. If that reminds me of a, a line from the post where they talked about React being tech from 2013 designed for 2008 constraints, which I don't a hundred percent agree with. -[00:11:07] But I do think it's, it's not, you know, wildly off base. I think it's, you know, there were, there were a lot of things that React was developed around that were trying to patch over issues with the platform, you know, compatibility and whatever. But, um, Yeah, I don't think that's quite accurate. I pulled out a couple of quotes that were thought provoking for me. +[11:07] But I do think it's, it's not, you know, wildly off base. I think it's, you know, there were, there were a lot of things that React was developed around that were trying to patch over issues with the platform, you know, compatibility and whatever. But, um, Yeah, I don't think that's quite accurate. I pulled out a couple of quotes that were thought provoking for me. -[00:11:30] One of the lines was, um, "React has trained us that packages need to be built specifically for our framework," which I think I don't know if that's on React. I think that is just kind of the general trend for people. You know, if you're I'm using X framework, I would like to get something that is tailor made for my situation. +[11:30] One of the lines was, um, "React has trained us that packages need to be built specifically for our framework," which I think I don't know if that's on React. I think that is just kind of the general trend for people. You know, if you're I'm using X framework, I would like to get something that is tailor made for my situation. -[00:11:50] And so I'm going to look for an SDK that was built for this tool in this setting. And I do agree with the idea that it's not good to require that all the tools we use be built, you know, to be specifically cross compatible with each other. You know, it's fine to use a general purpose library in React. It doesn't need to be hooks specific. +[11:50] And so I'm going to look for an SDK that was built for this tool in this setting. And I do agree with the idea that it's not good to require that all the tools we use be built, you know, to be specifically cross compatible with each other. You know, it's fine to use a general purpose library in React. It doesn't need to be hooks specific. -[00:12:13] So, yeah, I thought that was at least a decent point. +[12:13] So, yeah, I thought that was at least a decent point. -[00:12:16] **Mark Erikson:** Have we forgotten how many jQuery plugin adapters there were? +[12:16] **Mark Erikson:** Have we forgotten how many jQuery plugin adapters there were? -[00:12:20] **Carl Vitullo:** Right. There were some, yeah, right. So I, you know, I don't think that is a React problem. I think that it has been very visible in React because React, you know, as this post says is, it's the default. +[12:20] **Carl Vitullo:** Right. There were some, yeah, right. So I, you know, I don't think that is a React problem. I think that it has been very visible in React because React, you know, as this post says is, it's the default. -[00:12:34] Lots of people use it. And so when lots of people use it, then all of the problems that happen when any large group of people do something become very, you know, that becomes the problems of that framework that in that context. So. +[12:34] Lots of people use it. And so when lots of people use it, then all of the problems that happen when any large group of people do something become very, you know, that becomes the problems of that framework that in that context. So. -[00:12:47] **Mark Erikson:** there, there's an XKCD out there. Uh, Ooh, I think I found it. The cartoonist points out that when you're, like, when your map basically resembles a map of the population, it's not actually telling you anything useful. And so I think there is just a little bit of that with the React community, because React is so big, you sort of have a natural full distribution of... +[12:47] **Mark Erikson:** there, there's an XKCD out there. Uh, Ooh, I think I found it. The cartoonist points out that when you're, like, when your map basically resembles a map of the population, it's not actually telling you anything useful. And so I think there is just a little bit of that with the React community, because React is so big, you sort of have a natural full distribution of... -[00:13:12] People and situations and problems. So to be clear, like I'm, I'm not, I'm not saying that, you know, this, this original, you know, what's wrong with React article is wrong. I think it actually makes a lot of very, very good points. There, there is a little bit of a sense in which some, and some of the complaints are simply because there are so many people using React in so many ways. +[13:12] People and situations and problems. So to be clear, like I'm, I'm not, I'm not saying that, you know, this, this original, you know, what's wrong with React article is wrong. I think it actually makes a lot of very, very good points. There, there is a little bit of a sense in which some, and some of the complaints are simply because there are so many people using React in so many ways. -[00:13:33] **Carl Vitullo:** Right. You know, people have a lot of problems with React because there are so many people using React and they've really felt out every every possible base and edge case where you can't hit problems. Um, there are a couple of the quotes that I wanted to highlight. I think, uh, "no other modern front end framework as a stubbornly incompatible with the platform as React." +[13:33] **Carl Vitullo:** Right. You know, people have a lot of problems with React because there are so many people using React and they've really felt out every every possible base and edge case where you can't hit problems. Um, there are a couple of the quotes that I wanted to highlight. I think, uh, "no other modern front end framework as a stubbornly incompatible with the platform as React." -[00:13:54] I, you know, I don't know if I disagree with that specifically, but I also think it's a little bit. It ignores the fact that no other framework attempts to be as broadly cross compatible as React. Like, you know, there's not Angular Native, there's not Vue Native. So it's, a recurring criticism of React has been incompatibility with, uh, Web Components. +[13:54] I, you know, I don't know if I disagree with that specifically, but I also think it's a little bit. It ignores the fact that no other framework attempts to be as broadly cross compatible as React. Like, you know, there's not Angular Native, there's not Vue Native. So it's, a recurring criticism of React has been incompatibility with, uh, Web Components. -[00:14:14] And, you know, okay, sure, it's not very compatible with Web Components, but... You could argue that that's kind of a web component problem, because if React is, has successfully solved, you know, has been found to be a valuable tool for web, native, you know, mobile, desktop native, you know, all of these different contexts, like maybe it's inability to use web components is more of an indictment of web components ability to solve a problem. +[14:14] And, you know, okay, sure, it's not very compatible with Web Components, but... You could argue that that's kind of a web component problem, because if React is, has successfully solved, you know, has been found to be a valuable tool for web, native, you know, mobile, desktop native, you know, all of these different contexts, like maybe it's inability to use web components is more of an indictment of web components ability to solve a problem. -[00:14:41] **Mark Erikson:** yeah, the, the whole React and web components thing is its own very complicated topic from the off the top of my head. My general understanding is number 1, you can render web component tags from a React component, but you lose some of the, some of the back and forth and being able to pass in props correctly. +[14:41] **Mark Erikson:** yeah, the, the whole React and web components thing is its own very complicated topic from the off the top of my head. My general understanding is number 1, you can render web component tags from a React component, but you lose some of the, some of the back and forth and being able to pass in props correctly. -[00:15:00] Some of that is because there's some kind of a difference between properties and attributes in web components and you can't just pass in plain objects as props the way you would from one React component to another. The React team had not prioritized trying to implement better compatibility because they had a lot of other things they were worrying about. +[15:00] Some of that is because there's some kind of a difference between properties and attributes in web components and you can't just pass in plain objects as props the way you would from one React component to another. The React team had not prioritized trying to implement better compatibility because they had a lot of other things they were worrying about. -[00:15:24] They kind of asked for some directions from the community. To say, look, there's like four different ways we could try to handle this, you know, handle passing the data back and forth, which one do Web Components experts think is the right option? And there were arguments back and forth for years without the web component community actually settling on a consensus for the best way to pass stuff in. +[15:24] They kind of asked for some directions from the community. To say, look, there's like four different ways we could try to handle this, you know, handle passing the data back and forth, which one do Web Components experts think is the right option? And there were arguments back and forth for years without the web component community actually settling on a consensus for the best way to pass stuff in. -[00:15:50] And so where things stand now, as far as I know, is someone actually has implemented quote unquote "proper compatibility" for web components in React. It's in a branch. It's either, it's either not merged or it's merged behind a feature flag and they intend to release it officially whenever React 19 comes out or like it's enough of a shift, they don't want to do it in a minor version. +[15:50] And so where things stand now, as far as I know, is someone actually has implemented quote unquote "proper compatibility" for web components in React. It's in a branch. It's either, it's either not merged or it's merged behind a feature flag and they intend to release it officially whenever React 19 comes out or like it's enough of a shift, they don't want to do it in a minor version. -[00:16:19] So the work has been done. React's versioning strategy is totally messed up at the moment. +[16:19] So the work has been done. React's versioning strategy is totally messed up at the moment. -[00:16:24] **Carl Vitullo:** (Chuckles) Sure. Right. +[16:24] **Carl Vitullo:** (Chuckles) Sure. Right. -[00:16:26] **Mark Erikson:** So it's it's multiple factors. It's React knows how to compose and web components don't. There were questions about how React should compose with web components and people and. People who cared about that stuff couldn't agree on the right way to do it and then work has been done. +[16:26] **Mark Erikson:** So it's it's multiple factors. It's React knows how to compose and web components don't. There were questions about how React should compose with web components and people and. People who cared about that stuff couldn't agree on the right way to do it and then work has been done. -[00:16:43] React hasn't been released because focused on server side stuff and not actually shipping major versions right now. +[16:43] React hasn't been released because focused on server side stuff and not actually shipping major versions right now. -[00:16:52] **Carl Vitullo:** Yeah, right. They've been just maybe not top priority for them right now, which, um, yeah, I, I want to, I want to run through a couple of other quotes here that I thought were good to. I don't know, rebut, discuss. +[16:52] **Carl Vitullo:** Yeah, right. They've been just maybe not top priority for them right now, which, um, yeah, I, I want to, I want to run through a couple of other quotes here that I thought were good to. I don't know, rebut, discuss. -[00:17:04] "The worry that a front end framework might not scale is as old as jQuery and should be considered just as antiquated in relation to modern web development." That's talking about, I think, both performance and maintainability in terms of scaling. And, ooh, I do not agree with that. I don't agree that it is an antiquated idea. +[17:04] "The worry that a front end framework might not scale is as old as jQuery and should be considered just as antiquated in relation to modern web development." That's talking about, I think, both performance and maintainability in terms of scaling. And, ooh, I do not agree with that. I don't agree that it is an antiquated idea. -[00:17:22] Definitely there are patterns that do or do not scale very well. Um, and I think React tends to be better than average at that. Um, so like with regards to code isolation and refactorability, you know, you can certainly build things that are difficult to maintain and difficult to swap out. +[17:22] Definitely there are patterns that do or do not scale very well. Um, and I think React tends to be better than average at that. Um, so like with regards to code isolation and refactorability, you know, you can certainly build things that are difficult to maintain and difficult to swap out. -[00:17:41] But I do think React does a decent, in my opinion, better than average job of that compared to other modern frameworks. So, I don't know, just hand waving away like, "you don't need to think about scaling anymore." I don't agree with that. Sorry, buddy. +[17:41] But I do think React does a decent, in my opinion, better than average job of that compared to other modern frameworks. So, I don't know, just hand waving away like, "you don't need to think about scaling anymore." I don't agree with that. Sorry, buddy. -[00:17:54] And another one. "Styling is a solved problem in several other frameworks." I'm grimacing here for those who don't are watching the camera. Um, I don't agree with that. I think, you know, okay, yes, we there has been a lot of churn on styling as something you need to do in the React world. You know, CSS in JS. Plain CSS, less or sass, okay, sure, I think now we've moved away from CSS in JS as a good idea because it has, you know, I think, I feel like the zeitgeist has moved towards, there are too many trade offs, too many negative trade offs on doing CSS in JS. +[17:54] And another one. "Styling is a solved problem in several other frameworks." I'm grimacing here for those who don't are watching the camera. Um, I don't agree with that. I think, you know, okay, yes, we there has been a lot of churn on styling as something you need to do in the React world. You know, CSS in JS. Plain CSS, less or sass, okay, sure, I think now we've moved away from CSS in JS as a good idea because it has, you know, I think, I feel like the zeitgeist has moved towards, there are too many trade offs, too many negative trade offs on doing CSS in JS. -[00:18:30] But to call it a solved problem, ooh, no, I don't, I disagree with that. Cool. Any other thoughts you want to add there? +[18:30] But to call it a solved problem, ooh, no, I don't, I disagree with that. Cool. Any other thoughts you want to add there? -[00:18:36] **Mark Erikson:** Not immediately. +[18:36] **Mark Erikson:** Not immediately. -[00:18:38] **Carl Vitullo:** I'll, I'll take us on to our next link. Oh, yeah. Orta here in the comments, CSS in JS is good for other platforms. That's extremely true. It is, you know, if, if your platform doesn't support CSS, then you got to find something else for it. +[18:38] **Carl Vitullo:** I'll, I'll take us on to our next link. Oh, yeah. Orta here in the comments, CSS in JS is good for other platforms. That's extremely true. It is, you know, if, if your platform doesn't support CSS, then you got to find something else for it. -[00:18:50] So that's why it's not a solved problem. I don't, yeah. (Laughs) But yeah, moving on here. +[18:50] So that's why it's not a solved problem. I don't, yeah. (Laughs) But yeah, moving on here. -## [00:18:57] React Server Components DevTools +## [18:57] React Server Components DevTools -[00:18:57] **Carl Vitullo:** Uh, somebody has published a dev tools for React server components extension. I'm pretty, I think this is pretty cool. This is... maybe a first effort. This is looking, you know, I look at the, uh, the user interface of it and it looks like it breaks down... it looks like it's largely a reverse engineering of the data being streamed in, uh, sort of converting the JSON markup into pseudo HTML so that you can review it as a human a little more easily. And as well as, they call it time travel, but I think it's just kind of a log of data being sent. Looks super useful, looks a lot better than crawling the network tab to me. +[18:57] **Carl Vitullo:** Uh, somebody has published a dev tools for React server components extension. I'm pretty, I think this is pretty cool. This is... maybe a first effort. This is looking, you know, I look at the, uh, the user interface of it and it looks like it breaks down... it looks like it's largely a reverse engineering of the data being streamed in, uh, sort of converting the JSON markup into pseudo HTML so that you can review it as a human a little more easily. And as well as, they call it time travel, but I think it's just kind of a log of data being sent. Looks super useful, looks a lot better than crawling the network tab to me. -[00:19:36] **Mark Erikson:** I am always interested in newer or better developer tools. I think the fact that the React dev tools exist was one of the huge reasons to even consider picking React early on and been done on them over the years is incredible. So it's actually a little surprising to me that the React team itself hadn't prioritized trying to build tool some some form of dev tools integration for server components and that it took someone from the community trying to give it a shot. +[19:36] **Mark Erikson:** I am always interested in newer or better developer tools. I think the fact that the React dev tools exist was one of the huge reasons to even consider picking React early on and been done on them over the years is incredible. So it's actually a little surprising to me that the React team itself hadn't prioritized trying to build tool some some form of dev tools integration for server components and that it took someone from the community trying to give it a shot. -[00:20:10] I've said it, I've said it a number of times before, I know the React team had, like, despite all the corporate backing, has a limited number of people and a limited amount of engineering effort, but I really, really would have expected them to have put some serious planning and effort to building out DevTools support for server components. +[20:10] I've said it, I've said it a number of times before, I know the React team had, like, despite all the corporate backing, has a limited number of people and a limited amount of engineering effort, but I really, really would have expected them to have put some serious planning and effort to building out DevTools support for server components. -[00:20:28] For that matter, I know that Facebook has not been putting a lot of engineering hours into improving the existing DevTools lately. I think they had a couple engineers, Brian Vaughn, who used to do a lot of that work, left a year and a half ago and now works with me at Replay. There were one or two people working on the React DevTools code. +[20:28] For that matter, I know that Facebook has not been putting a lot of engineering hours into improving the existing DevTools lately. I think they had a couple engineers, Brian Vaughn, who used to do a lot of that work, left a year and a half ago and now works with me at Replay. There were one or two people working on the React DevTools code. -[00:20:51] In the React repository, one of those people was laid off recently and so that like, I've seen a couple maintenance level PRS, but I don't think a lot of effort is going into improving the reactive tools right now. And, you know, the good news is like the, the reactive tools are there and they work, but I know Brian had a lot of ideas for improving them down the road and who knows if, or when those will happen. +[20:51] In the React repository, one of those people was laid off recently and so that like, I've seen a couple maintenance level PRS, but I don't think a lot of effort is going into improving the reactive tools right now. And, you know, the good news is like the, the reactive tools are there and they work, but I know Brian had a lot of ideas for improving them down the road and who knows if, or when those will happen. -[00:21:17] So I'm actually genuinely not sure if or when we'll get official React server components integration into the React DevTools. +[21:17] So I'm actually genuinely not sure if or when we'll get official React server components integration into the React DevTools. -[00:21:26] **Carl Vitullo:** Sure, yeah, that makes sense. Yeah, as someone who works on DevTools professionally, do you know if, I know Replay is a general purpose DevTool more on the browser than on any specific framework, but do you know if there's any interest in, I don't know, tapping into some of these internals like that on the Replay side? +[21:26] **Carl Vitullo:** Sure, yeah, that makes sense. Yeah, as someone who works on DevTools professionally, do you know if, I know Replay is a general purpose DevTool more on the browser than on any specific framework, but do you know if there's any interest in, I don't know, tapping into some of these internals like that on the Replay side? -[00:21:45] **Mark Erikson:** We would love to. Um, you know, semi sales pitch time for the moment. Um, so, as I said earlier, Replay is a time traveling debugger for JavaScript. We we have you record yourself using your website with our modified Firefox or chrome for a couple of minutes, and then you can debug the recording and it's like a DVR, like, You can jump anywhere in time within that recording, see every line of code that executed, and it really simplifies, trying to dig into what happened and understand bugs. +[21:45] **Mark Erikson:** We would love to. Um, you know, semi sales pitch time for the moment. Um, so, as I said earlier, Replay is a time traveling debugger for JavaScript. We we have you record yourself using your website with our modified Firefox or chrome for a couple of minutes, and then you can debug the recording and it's like a DVR, like, You can jump anywhere in time within that recording, see every line of code that executed, and it really simplifies, trying to dig into what happened and understand bugs. -[00:22:19] So, right now, we have Replay integration with the React DevTools. Um, besides just like you can record any website written with anything, like it just records the JavaScript that ran. But if the site that you're recording was built with React, we can capture all the React related data. And I've actually built a lot of this integration myself. +[22:19] So, right now, we have Replay integration with the React DevTools. Um, besides just like you can record any website written with anything, like it just records the JavaScript that ran. But if the site that you're recording was built with React, we can capture all the React related data. And I've actually built a lot of this integration myself. -[00:22:44] So we can show the React component tree and in the React DevTools UI at any point in time. And we've done that because number one, we use React ourselves. Replay is a React app, two, React is the biggest framework. So it makes sense to build features for, you know, the largest target audience. We would like to build more integrations with more frameworks over time, like view angular, well, solid, you know, maybe something special for Apollo and GraphQL. +[22:44] So we can show the React component tree and in the React DevTools UI at any point in time. And we've done that because number one, we use React ourselves. Replay is a React app, two, React is the biggest framework. So it makes sense to build features for, you know, the largest target audience. We would like to build more integrations with more frameworks over time, like view angular, well, solid, you know, maybe something special for Apollo and GraphQL. -[00:23:19] we, we would love to build these things. We, we just, we're a very small team right now and we have limited engineering time and way too many things to do, but longterm, we would love to have integrations for all the major frameworks out there so that if you make a Replay recording of a website built with one of those frameworks, you'll get. +[23:19] we, we would love to build these things. We, we just, we're a very small team right now and we have limited engineering time and way too many things to do, but longterm, we would love to have integrations for all the major frameworks out there so that if you make a Replay recording of a website built with one of those frameworks, you'll get. -[00:23:38] You know, extra special visibility into what happened for sure. +[23:38] You know, extra special visibility into what happened for sure. -[00:23:42] **Carl Vitullo:** Yeah. I mean, developer tools, developer experience. That's a huge force multiplier. All right. You want to take us on our next link? +[23:42] **Carl Vitullo:** Yeah. I mean, developer tools, developer experience. That's a huge force multiplier. All right. You want to take us on our next link? -## [00:23:49] My (Mark's) Experience Modernizing Packages to ESM +## [23:49] My (Mark's) Experience Modernizing Packages to ESM -[00:23:49] **Mark Erikson:** Yes. So, uh, continuing the self plug here, earlier this month, I wrote a very long blog post entitled my experience, modernizing packages to ESM. +[23:49] **Mark Erikson:** Yes. So, uh, continuing the self plug here, earlier this month, I wrote a very long blog post entitled my experience, modernizing packages to ESM. -[00:24:01] This was kind of the story of all the shenanigans I've had to go through this year, trying to update the Redux related packages to have proper ES module compatibility, whatever the heck that means. And I'll be honest, like, it has been an extremely painful and frustrating effort and year trying to do that. +[24:01] This was kind of the story of all the shenanigans I've had to go through this year, trying to update the Redux related packages to have proper ES module compatibility, whatever the heck that means. And I'll be honest, like, it has been an extremely painful and frustrating effort and year trying to do that. -[00:24:23] And I've learned a lot. There's a lot of things I wish I hadn't had to learn. And I'm still not done. I am still messing with this stuff, even within the last week, I was trying to work on these things. And normally when I write these blog posts, I try to write them to say, Here's all the stuff I've learned, and here are the correct answers that I've learned. +[24:23] And I've learned a lot. There's a lot of things I wish I hadn't had to learn. And I'm still not done. I am still messing with this stuff, even within the last week, I was trying to work on these things. And normally when I write these blog posts, I try to write them to say, Here's all the stuff I've learned, and here are the correct answers that I've learned. -[00:24:44] And in this case... It's more of a, here's all the places I've banged my head against the wall, trying to figure things out. I still don't know the correct answers, but at least describing the stuff that I've gone through will hopefully benefit other people who are trying to deal with the same things. +[24:44] And in this case... It's more of a, here's all the places I've banged my head against the wall, trying to figure things out. I still don't know the correct answers, but at least describing the stuff that I've gone through will hopefully benefit other people who are trying to deal with the same things. -[00:25:03] When I, when I write blog posts. I usually have a decent sense of how popular they might get, you know, I'm not trying to optimize for page views, but you know, like my posts on React rendering or Redux versus context. Okay, like, it's very obvious people are going to have a, an interest in those. I really did not expect a lot of people to be interested in a post about how to publish libraries correctly, but it's actually gotten a fair amount of attention. +[25:03] When I, when I write blog posts. I usually have a decent sense of how popular they might get, you know, I'm not trying to optimize for page views, but you know, like my posts on React rendering or Redux versus context. Okay, like, it's very obvious people are going to have a, an interest in those. I really did not expect a lot of people to be interested in a post about how to publish libraries correctly, but it's actually gotten a fair amount of attention. -[00:25:29] And there's been a lot of other folks who are, you know, building libraries who have, you know, replied or messaged or talked to me and said, "Oh, yeah, like, I'm running into the exact same problems myself", or "I totally sympathize and understand with all the different pain points you've gone through." +[25:29] And there's been a lot of other folks who are, you know, building libraries who have, you know, replied or messaged or talked to me and said, "Oh, yeah, like, I'm running into the exact same problems myself", or "I totally sympathize and understand with all the different pain points you've gone through." -[00:25:46] So, you know, there are a bunch of different factors, um, trying to define the package export setup is really hard. Trying to figure out what file formats and whether you do you pre bundle your JavaScript, do you pre bundle your TypeScript types? What about file extensions? Um, but then another complicating factor has been React server components. You know, it turns out that you can't do things like even, you know, importing and using React hooks in a server components environment. +[25:46] So, you know, there are a bunch of different factors, um, trying to define the package export setup is really hard. Trying to figure out what file formats and whether you do you pre bundle your JavaScript, do you pre bundle your TypeScript types? What about file extensions? Um, but then another complicating factor has been React server components. You know, it turns out that you can't do things like even, you know, importing and using React hooks in a server components environment. -[00:26:16] Which makes it really hard for libraries like Apollo and RTK Query that can be mixed mode. Like they have a plain JavaScript aspect, but they also have a React Hooks aspect. And normally you would be able to use that on both sides. But now, you know, Next is throwing errors automatically if you even try to import. React hooks, it's doing static analysis. +[26:16] Which makes it really hard for libraries like Apollo and RTK Query that can be mixed mode. Like they have a plain JavaScript aspect, but they also have a React Hooks aspect. And normally you would be able to use that on both sides. But now, you know, Next is throwing errors automatically if you even try to import. React hooks, it's doing static analysis. -[00:26:44] And so for us as library maintainers, trying to figure out like, how do we ship packages that are going to work without just exploding yet another environment has been really, really hard. +[26:44] And so for us as library maintainers, trying to figure out like, how do we ship packages that are going to work without just exploding yet another environment has been really, really hard. -[00:26:58] **Carl Vitullo:** Yeah, I don't have a lot to add there as someone who doesn't maintain any major libraries, but yeah, my, my, my outsider perspective has been that it was already quite difficult to support, you know, ES modules versus CommonJS versus, you know, like, I don't know if Bower is still something that needs to be actively supported. +[26:58] **Carl Vitullo:** Yeah, I don't have a lot to add there as someone who doesn't maintain any major libraries, but yeah, my, my, my outsider perspective has been that it was already quite difficult to support, you know, ES modules versus CommonJS versus, you know, like, I don't know if Bower is still something that needs to be actively supported. -[00:27:20] **Mark Erikson:** One of the questions I had was, you know, should I still be shipping UMD modules to support like the, the script tag in a Codepen use case? And I, you know, I, I finally settled on, eh, probably not, but let's ship an additional ES module file that has been pre compiled to production usage. You could do a script tag type equals module and use it as an ESM module in the browser. +[27:20] **Mark Erikson:** One of the questions I had was, you know, should I still be shipping UMD modules to support like the, the script tag in a Codepen use case? And I, you know, I, I finally settled on, eh, probably not, but let's ship an additional ES module file that has been pre compiled to production usage. You could do a script tag type equals module and use it as an ESM module in the browser. -[00:27:49] **Carl Vitullo:** Oh, sure. Oh, yeah. Interesting. I guess that was one use case that ES modules has been meant to replace. So, okay. Interesting that that has maybe come to fruition now. Interesting. Pulling a comment from chat. "I still ship UMD more often than ESM for my own use cases. It's a big learning curve." Definitely big learning curve is definitely maybe an understatement. +[27:49] **Carl Vitullo:** Oh, sure. Oh, yeah. Interesting. I guess that was one use case that ES modules has been meant to replace. So, okay. Interesting that that has maybe come to fruition now. Interesting. Pulling a comment from chat. "I still ship UMD more often than ESM for my own use cases. It's a big learning curve." Definitely big learning curve is definitely maybe an understatement. -[00:28:12] **Mark Erikson:** Yeah, one of my biggest complaints is that there is no single authoritative comprehensive guide to how to correctly publish a library with all the tools and settings and correct file formats and stuff that you should include. So everyone's just sort of figuring this out for themselves and borrowing from everyone else. +[28:12] **Mark Erikson:** Yeah, one of my biggest complaints is that there is no single authoritative comprehensive guide to how to correctly publish a library with all the tools and settings and correct file formats and stuff that you should include. So everyone's just sort of figuring this out for themselves and borrowing from everyone else. -[00:28:30] **Carl Vitullo:** Yeah, actually, even, you know, you're saying there's no comprehensive guide on how to do it. There's not, I don't even think there's a comprehensive guide on what environments are out there, you know? Like, what do you even need to think about supporting? Yeah, that's interesting. +[28:30] **Carl Vitullo:** Yeah, actually, even, you know, you're saying there's no comprehensive guide on how to do it. There's not, I don't even think there's a comprehensive guide on what environments are out there, you know? Like, what do you even need to think about supporting? Yeah, that's interesting. -[00:28:43] **Mark Erikson:** I mean, that was, that was part of the point of my post. +[28:43] **Mark Erikson:** I mean, that was, that was part of the point of my post. -[00:28:48] Was, like, literally, like, here's all the stuff that I'm having to consider. +[28:48] Was, like, literally, like, here's all the stuff that I'm having to consider. -[00:28:52] **Carl Vitullo:** Yeah, Orta with the good chat comments here. "Most recent strategy has been use Deno." I've, that is not the first time I've heard use Deno as a good strategy for publishing a library. I've heard that it has made local development, or rather it's made the transition from local development to usable package published to the, uh, to the npm just easier to do. +[28:52] **Carl Vitullo:** Yeah, Orta with the good chat comments here. "Most recent strategy has been use Deno." I've, that is not the first time I've heard use Deno as a good strategy for publishing a library. I've heard that it has made local development, or rather it's made the transition from local development to usable package published to the, uh, to the npm just easier to do. -[00:29:16] Um, and it's not something I've tried, but yeah, that's been an interesting thought that's been lodged in the back of my brain just using a different environment that makes it easier to do the right thing, even in other environments. That's interesting. +[29:16] Um, and it's not something I've tried, but yeah, that's been an interesting thought that's been lodged in the back of my brain just using a different environment that makes it easier to do the right thing, even in other environments. That's interesting. -## [00:29:31] Remix DevTools +## [29:31] Remix DevTools -[00:29:31] **Carl Vitullo:** Well, I'll, I'll move us on here. I think, yeah, one more dev tools update the. +[29:31] **Carl Vitullo:** Well, I'll, I'll move us on here. I think, yeah, one more dev tools update the. -[00:29:37] Remix DevTools has a new release this month, uh, 2. 0. Um, I, I have not used this yet, uh, but I do, I, I have a couple of Remix projects, Remix based projects. So, um, I'll have to poke around here and see what kind of stuff it adds. +[29:37] Remix DevTools has a new release this month, uh, 2. 0. Um, I, I have not used this yet, uh, but I do, I, I have a couple of Remix projects, Remix based projects. So, um, I'll have to poke around here and see what kind of stuff it adds. -[00:29:54] Looks like it gives you better inspectability of like your routes and your pages. Um, so yeah, the. I think debugging got more complicated with the, you know, server client, I don't know, seem in between there. So the value of platforms or the value of framework specific developer tools has gone up a lot more with that. You know, how do you have something that's aware of the server as well as the client and can tell you more information about what all is going on there? +[29:54] Looks like it gives you better inspectability of like your routes and your pages. Um, so yeah, the. I think debugging got more complicated with the, you know, server client, I don't know, seem in between there. So the value of platforms or the value of framework specific developer tools has gone up a lot more with that. You know, how do you have something that's aware of the server as well as the client and can tell you more information about what all is going on there? -[00:30:24] So yeah, remix developer tools 2. 0 something to check out. +[30:24] So yeah, remix developer tools 2. 0 something to check out. -[00:30:28] **Mark Erikson:** Yeah, Jessica Sac hs actually recently sent me a link to a demo video for the, the, the Nuxt framework and like it, you know, it's a Vue based equivalent to Next, roughly, and it apparently has some kind of a dev tools plug in that looks pretty similar to what I'm seeing in the, you know, the, the gift demos for this, this remix one, you know, listing all the routes and the options. +[30:28] **Mark Erikson:** Yeah, Jessica Sac hs actually recently sent me a link to a demo video for the, the, the Nuxt framework and like it, you know, it's a Vue based equivalent to Next, roughly, and it apparently has some kind of a dev tools plug in that looks pretty similar to what I'm seeing in the, you know, the, the gift demos for this, this remix one, you know, listing all the routes and the options. -[00:30:54] So that, yeah, that looks extremely useful. +[30:54] So that, yeah, that looks extremely useful. -[00:30:56] **Carl Vitullo:** Yeah. Even just surfacing how it's being all parsed out. You know, now that. I both remix the next, add that layer of file and folder names having influence on the behavior of the code you write in them. Uh, it's just, it's, it's reasonably indirect and it's a little, it, I have found it confusing at times, you know, if you have to debug, like, why isn't this route showing up? +[30:56] **Carl Vitullo:** Yeah. Even just surfacing how it's being all parsed out. You know, now that. I both remix the next, add that layer of file and folder names having influence on the behavior of the code you write in them. Uh, it's just, it's, it's reasonably indirect and it's a little, it, I have found it confusing at times, you know, if you have to debug, like, why isn't this route showing up? -[00:31:19] Like, the only way to do so is futzing around with the file names, which. It's not great. It's not great inspectability. So better developer tools, at least saying this is how the framework is understanding what you've given it. That seems like a big help. Uh, cool. +[31:19] Like, the only way to do so is futzing around with the file names, which. It's not great. It's not great inspectability. So better developer tools, at least saying this is how the framework is understanding what you've given it. That seems like a big help. Uh, cool. -[00:31:35] **Mark Erikson:** Uh, so there was a really good post actually technically back in July, but I think got listed more recently called everything I wish I knew before moving 50, 000 lines of code to React server components. +[31:35] **Mark Erikson:** Uh, so there was a really good post actually technically back in July, but I think got listed more recently called everything I wish I knew before moving 50, 000 lines of code to React server components. -[00:31:45] It had a really nice, some really nice diagrams of, you know, kind of like the shift from client server behavior to React server component behavior, how server components, you know, actually kind of manage the tree, a lot of different code snippets, and information on, like, how would you actually start using server components in a code base. +[31:45] It had a really nice, some really nice diagrams of, you know, kind of like the shift from client server behavior to React server component behavior, how server components, you know, actually kind of manage the tree, a lot of different code snippets, and information on, like, how would you actually start using server components in a code base. -[00:32:06] You know, one of my, one of my biggest complaints about the server components rollout has been that, you know, there, there isn't a migration story, there isn't really good advice on how to start adopting these. And frankly, this is about the best information I've seen on, on that topic. So I, I thought this was an excellent, excellent post. Uh, it also had a link to a talk from the Reactathon conference that was done a couple of months ago, which discusses, when should you even consider using server components? +[32:06] You know, one of my, one of my biggest complaints about the server components rollout has been that, you know, there, there isn't a migration story, there isn't really good advice on how to start adopting these. And frankly, this is about the best information I've seen on, on that topic. So I, I thought this was an excellent, excellent post. Uh, it also had a link to a talk from the Reactathon conference that was done a couple of months ago, which discusses, when should you even consider using server components? -[00:32:36] And that, that talk from Jeff Escalante was actually just a little, just a little on the intentionally skeptical side. Like it points out that server components are very useful for some kinds of apps. But not so much for others. And so it's not, you know, server components are not a silver bullet that you should just slap on everything, but instead actually kind of consider if it makes sense for your use case. So this was a very, very helpful resource, I think. +[32:36] And that, that talk from Jeff Escalante was actually just a little, just a little on the intentionally skeptical side. Like it points out that server components are very useful for some kinds of apps. But not so much for others. And so it's not, you know, server components are not a silver bullet that you should just slap on everything, but instead actually kind of consider if it makes sense for your use case. So this was a very, very helpful resource, I think. -[00:33:05] **Carl Vitullo:** I haven't read this in depth, it's very long. I think they said it was like 5500 words. It's rivaling one of your posts, Mark ( Mark laughs), but it, you know, just scanning through it, it reminds me of some of the resources on, you know, architecture and sort of summarizing behavior, and like the perspective that went into designing server components. +[33:05] **Carl Vitullo:** I haven't read this in depth, it's very long. I think they said it was like 5500 words. It's rivaling one of your posts, Mark ( Mark laughs), but it, you know, just scanning through it, it reminds me of some of the resources on, you know, architecture and sort of summarizing behavior, and like the perspective that went into designing server components. -[00:33:25] It reminds me of some of the write ups on, uh, or that like the next JS team has put up about that. Um, but I think a lot of those have been more from the maintainer side of things of like, here's why we did it, here's why we made this the way it is. It is. And this seems much more anchored from a pragmatic point of view of like, we don't care about how it works specifically, but here's how we used it, and here's the pitfalls we found. +[33:25] It reminds me of some of the write ups on, uh, or that like the next JS team has put up about that. Um, but I think a lot of those have been more from the maintainer side of things of like, here's why we did it, here's why we made this the way it is. It is. And this seems much more anchored from a pragmatic point of view of like, we don't care about how it works specifically, but here's how we used it, and here's the pitfalls we found. -[00:33:52] Uh, so yeah, definitely agreed that this looks like a really phenomenal resource. Uh, and referencing something we talked about earlier, uh, one of the headers is CSS in JS is a non starter. Uh, so yeah, CSS in JS doesn't work in server components. So One reason why the React ecosystem has been moving away from that. +[33:52] Uh, so yeah, definitely agreed that this looks like a really phenomenal resource. Uh, and referencing something we talked about earlier, uh, one of the headers is CSS in JS is a non starter. Uh, so yeah, CSS in JS doesn't work in server components. So One reason why the React ecosystem has been moving away from that. -[00:34:14] But yeah, I mean, if CSS in JS is the only way to get native styles working. Oops, there's a tension, can only use it, can only use CSS in JS in native environments and cannot use it at all in server environments. So that was like fragmentation to me. +[34:14] But yeah, I mean, if CSS in JS is the only way to get native styles working. Oops, there's a tension, can only use it, can only use CSS in JS in native environments and cannot use it at all in server environments. So that was like fragmentation to me. -[00:34:32] **Mark Erikson:** A lot of that. +[34:32] **Mark Erikson:** A lot of that. -[00:34:32] **Carl Vitullo:** Yeah, not ideal, but yeah, definitely a great read. +[34:32] **Carl Vitullo:** Yeah, not ideal, but yeah, definitely a great read. -[00:34:35] Definitely a great resource for anyone looking at how to get server components involved in their app, especially if it's not a greenfield project, and it's trying to bring it in as an optimization to bring it in as an improvement to an existing application. +[34:35] Definitely a great resource for anyone looking at how to get server components involved in their app, especially if it's not a greenfield project, and it's trying to bring it in as an optimization to bring it in as an improvement to an existing application. -## [00:34:50] Expo Release Week +## [34:50] Expo Release Week -[00:34:50] **Carl Vitullo:** All right, I guess, uh, let me move us on to our next link. +[34:50] **Carl Vitullo:** All right, I guess, uh, let me move us on to our next link. -[00:34:53] Yeah, I don't have one single link here, but Expo did a release week shipping a whole bunch of new features. Um, let me, I've got like eight links here and I don't know how to quickly dump them all, but there's Expo preview, a fully customizable builds on EAS build. +[34:53] Yeah, I don't have one single link here, but Expo did a release week shipping a whole bunch of new features. Um, let me, I've got like eight links here and I don't know how to quickly dump them all, but there's Expo preview, a fully customizable builds on EAS build. -[00:35:12] Um, I'm not really familiar enough with Expo. I haven't used it on a, you know, a production app, so I can't speak too much to all of these different acronyms and features, but fully customizable builds, I could certainly imagine situations where you might need to have finer grain control over how your application gets built. So that seems valuable. +[35:12] Um, I'm not really familiar enough with Expo. I haven't used it on a, you know, a production app, so I can't speak too much to all of these different acronyms and features, but fully customizable builds, I could certainly imagine situations where you might need to have finer grain control over how your application gets built. So that seems valuable. -[00:35:33] There's a proof of concept for Expo CLI DevTools plugins. So continuing with the DevTools theme, feature preview of single sign on, feature preview of EAS update. So I guess that's the build for, you know, a fresh version of an app versus releasing an update to an existing app. Use updates API for Expo updates, which I it sounds related to that, updating. +[35:33] There's a proof of concept for Expo CLI DevTools plugins. So continuing with the DevTools theme, feature preview of single sign on, feature preview of EAS update. So I guess that's the build for, you know, a fresh version of an app versus releasing an update to an existing app. Use updates API for Expo updates, which I it sounds related to that, updating. -[00:36:00] There was an interesting one that caught my eye was Expo SQLite integration. They They reference convergent replicated sqlite, which is, that's really interesting. So it talks about having multiple different sqlite databases that have independent writes and then get merged together. And they had a little demo video showing multiple to do apps that are being kept in sync. +[36:00] There was an interesting one that caught my eye was Expo SQLite integration. They They reference convergent replicated sqlite, which is, that's really interesting. So it talks about having multiple different sqlite databases that have independent writes and then get merged together. And they had a little demo video showing multiple to do apps that are being kept in sync. -[00:36:28] Um, I, I have a soft spot in my heart for SQLite, um, and a soft spot in my heart for CRDTs, um, which I'm blanking on the, what that stands for, but replicated data types. Um, conflict free data types. Conflict free replicated data types. That's it. Uh, yeah. So I have a soft spot in my heart for those, local first, merged data kinds of tools. +[36:28] Um, I, I have a soft spot in my heart for SQLite, um, and a soft spot in my heart for CRDTs, um, which I'm blanking on the, what that stands for, but replicated data types. Um, conflict free data types. Conflict free replicated data types. That's it. Uh, yeah. So I have a soft spot in my heart for those, local first, merged data kinds of tools. -[00:36:57] So it's interesting to, it'll be interesting. I think that could be a large unlock for people building mobile apps. +[36:57] So it's interesting to, it'll be interesting. I think that could be a large unlock for people building mobile apps. -[00:37:05] **Mark Erikson:** Yeah. I mean, just, just skimming down the list. It looks like they're putting a lot of effort into the, the build and deploy story for X for Expo apps. +[37:05] **Mark Erikson:** Yeah. I mean, just, just skimming down the list. It looks like they're putting a lot of effort into the, the build and deploy story for X for Expo apps. -[00:37:13] **Carl Vitullo:** Yeah. And I know that there's been, you know, over the years, there's been some various churn on the React Native story for updates or for builds and updates, I guess, you know, for a long time, one of the advantages of React Native was you could update the JavaScript and change the behavior of an app without doing a full app store release, which I think is still true to an extent, but like policies have shifted on that. +[37:13] **Carl Vitullo:** Yeah. And I know that there's been, you know, over the years, there's been some various churn on the React Native story for updates or for builds and updates, I guess, you know, for a long time, one of the advantages of React Native was you could update the JavaScript and change the behavior of an app without doing a full app store release, which I think is still true to an extent, but like policies have shifted on that. -[00:37:37] And it's like, Uh, it's I know that Apple doesn't like that generally because they want to have firm control over what apps do. So if you're able to change what an app does outside of their review process there, they look at you suspiciously for that. So, uh, but yeah, definitely, you know, my, my recollection is that four or five years ago, Expo was really great for what it could do, but it was a very limiting sandbox. +[37:37] And it's like, Uh, it's I know that Apple doesn't like that generally because they want to have firm control over what apps do. So if you're able to change what an app does outside of their review process there, they look at you suspiciously for that. So, uh, but yeah, definitely, you know, my, my recollection is that four or five years ago, Expo was really great for what it could do, but it was a very limiting sandbox. -[00:38:02] If you try, if you needed capabilities that it didn't offer out of the box. You're kind of screwed. You had, uh, it was a little bit like Create React App in that where what it did was really great, but it didn't do everything. And if you needed more, you had to eject and then you're on your own. Um, but that is not how I understand the story of or, you know, the experience of using expo today. +[38:02] If you try, if you needed capabilities that it didn't offer out of the box. You're kind of screwed. You had, uh, it was a little bit like Create React App in that where what it did was really great, but it didn't do everything. And if you needed more, you had to eject and then you're on your own. Um, but that is not how I understand the story of or, you know, the experience of using expo today. -[00:38:24] From what I hear, if you're building React Native right now, you start with expo because it just does makes it so much easier for you. So cool to see so much investment going into it still. +[38:24] From what I hear, if you're building React Native right now, you start with expo because it just does makes it so much easier for you. So cool to see so much investment going into it still. -[00:38:33] Got another link for us? +[38:33] Got another link for us? -[00:38:35] **Mark Erikson:** Uh, that's all the, all the major ones I had to talk about. I think at this point, we're sort of onto the lightning things, although I could, I could talk about some of the lightning things in more depth if we wanted. +[38:35] **Mark Erikson:** Uh, that's all the, all the major ones I had to talk about. I think at this point, we're sort of onto the lightning things, although I could, I could talk about some of the lightning things in more depth if we wanted. -[00:38:45] **Carl Vitullo:** Yeah, we got 15 minutes. Let's do a, let's do a, maybe I'm trying to think of a slower lightning round, but let's do a pseudo lightning round here. +[38:45] **Carl Vitullo:** Yeah, we got 15 minutes. Let's do a, let's do a, maybe I'm trying to think of a slower lightning round, but let's do a pseudo lightning round here. -## [00:38:53] React Prod Source Maps (!!) +## [38:53] React Prod Source Maps (!!) -[00:38:53] **Mark Erikson:** So, um, this next one is, And on these next two are things that I both have a very personal stake in. So, over the weekend, I published a new package called ReactProdSourceMaps. +[38:53] **Mark Erikson:** So, um, this next one is, And on these next two are things that I both have a very personal stake in. So, over the weekend, I published a new package called ReactProdSourceMaps. -[00:39:09] And this is going to take a little bit of background and explanation. Um, so, JavaScript libraries Are normally published to NPM code that has been backwards compiled to, you know, yes, five syntax for compatibility with IE 11, although that's finally starting to change and more libraries are shipping modern JavaScript. +[39:09] And this is going to take a little bit of background and explanation. Um, so, JavaScript libraries Are normally published to NPM code that has been backwards compiled to, you know, yes, five syntax for compatibility with IE 11, although that's finally starting to change and more libraries are shipping modern JavaScript. -[00:39:30] And then when you build your application with next or Vite or expo or create React app or whatever. All your application code and your nice original js or tsx files all get mangled together, mashed into a bundle, minified, and shipped to production. And when we want to debug our applications, we, like, we need a way to reverse map from the final mangled minified code back to the original source files that you had on disk. +[39:30] And then when you build your application with next or Vite or expo or create React app or whatever. All your application code and your nice original js or tsx files all get mangled together, mashed into a bundle, minified, and shipped to production. And when we want to debug our applications, we, like, we need a way to reverse map from the final mangled minified code back to the original source files that you had on disk. -[00:40:03] And so bundlers and build tools use a technology called source maps, which literally contains the exact original source files that you had on your computer when it was built and defines how they got transformed into the final minified lines of code. So for example, uh, App bundle dot JS line one column 700, 000 through 700, 010 to do list item dot JS line 23 you declared your to do list item component. +[40:03] And so bundlers and build tools use a technology called source maps, which literally contains the exact original source files that you had on your computer when it was built and defines how they got transformed into the final minified lines of code. So for example, uh, App bundle dot JS line one column 700, 000 through 700, 010 to do list item dot JS line 23 you declared your to do list item component. -[00:40:39] And so that's how Browse and browser dev tools and other tools can show you what looks like the original files when you try to debug either a development or production application. And the problem is. Specifically, that the React libraries have never shipped with source maps. For their production build artifacts. +[40:39] And so that's how Browse and browser dev tools and other tools can show you what looks like the original files when you try to debug either a development or production application. And the problem is. Specifically, that the React libraries have never shipped with source maps. For their production build artifacts. -[00:41:02] So if you build a React app in dev mode, React has a development build where the bundle is still readable. It's got comments and white space and original variable names. And if an error gets thrown, you can see a stack trace, and you can at least read the function names inside of React. One of the nice things about React has always been that most of the time you don't have to worry about how it works inside. +[41:02] So if you build a React app in dev mode, React has a development build where the bundle is still readable. It's got comments and white space and original variable names. And if an error gets thrown, you can see a stack trace, and you can at least read the function names inside of React. One of the nice things about React has always been that most of the time you don't have to worry about how it works inside. -[00:41:28] We can treat React as a black box. The important thing is understanding that, you know, it's, it's the mental model. If I set state, it re renders. If my UI is wrong... Look at the data, look at the rendering logic, trace the data back up the tree to where it came from. So most of the time, you don't have to debug inside of React. +[41:28] We can treat React as a black box. The important thing is understanding that, you know, it's, it's the mental model. If I set state, it re renders. If my UI is wrong... Look at the data, look at the rendering logic, trace the data back up the tree to where it came from. So most of the time, you don't have to debug inside of React. -[00:41:49] But there are times when you do. Okay, maybe that's more applicable to library maintainers or people like myself and Brian that are working on developer tools at Replay. The problem is when you try to debug a production build of a React app. React has only shipped the minified, the prebuilt minified bundle. +[41:49] But there are times when you do. Okay, maybe that's more applicable to library maintainers or people like myself and Brian that are working on developer tools at Replay. The problem is when you try to debug a production build of a React app. React has only shipped the minified, the prebuilt minified bundle. -[00:42:09] They don't have source maps for it. And it's hard enough to understand what's going on inside of React. When you can actually read the original source code, it is impossible to understand it when all you have are single character variable names and everything's been mashed together. So, uh, about four months ago. +[42:09] They don't have source maps for it. And it's hard enough to understand what's going on inside of React. When you can actually read the original source code, it is impossible to understand it when all you have are single character variable names and everything's been mashed together. So, uh, about four months ago. -[00:42:27] I took about a week, and I figured out how to modify React's build pipeline so that it will actually generate source maps whenever you, whenever they build React. And that PR has been sitting there, and Dan Abramov and I were going back and forth on reviews for it, and as far as I'm concerned, it's there, and it works, and it should just be merged. Dan had one small reservation, and I never quite convinced him that... It's fine. It works. Merge it. So it's still sitting there. And hopefully it will get merged at some point in the near future. +[42:27] I took about a week, and I figured out how to modify React's build pipeline so that it will actually generate source maps whenever you, whenever they build React. And that PR has been sitting there, and Dan Abramov and I were going back and forth on reviews for it, and as far as I'm concerned, it's there, and it works, and it should just be merged. Dan had one small reservation, and I never quite convinced him that... It's fine. It works. Merge it. So it's still sitting there. And hopefully it will get merged at some point in the near future. -[00:43:02] But the next problem is that even once it gets merged, the React team hasn't released a stable version of React since 18.2 came out a year and a half ago. Which is kind of frustrating. They are putting out canary builds, and Next is using those canary builds, but we haven't had a new stable release in a year and a half. So if and when a, that PR is merged and a new stable release comes out, then, you know, React 18.3 would have source maps. +[43:02] But the next problem is that even once it gets merged, the React team hasn't released a stable version of React since 18.2 came out a year and a half ago. Which is kind of frustrating. They are putting out canary builds, and Next is using those canary builds, but we haven't had a new stable release in a year and a half. So if and when a, that PR is merged and a new stable release comes out, then, you know, React 18.3 would have source maps. -[00:43:31] But there's nothing for React 18.2 or 1 or 17 or 16. What I did over the weekend was I literally checked out React 18.2's tag from the repository and I backported my build pipeline changes. I made sure that I could build the exact byte for byte identical copy of React 18.2 production. And then I copy pasted my build pipeline changes to generate source maps over to that. +[43:31] But there's nothing for React 18.2 or 1 or 17 or 16. What I did over the weekend was I literally checked out React 18.2's tag from the repository and I backported my build pipeline changes. I made sure that I could build the exact byte for byte identical copy of React 18.2 production. And then I copy pasted my build pipeline changes to generate source maps over to that. -[00:44:04] And it works! And the next problem is that, okay, so let's say that, you know, I have a Vite app and I'm using React 18.2. Well, I've installed React off of NPM, didn't include any source maps. I can download the React 18.2 source map I generated. But that doesn't help the app bundle source map that I just made. +[44:04] And it works! And the next problem is that, okay, so let's say that, you know, I have a Vite app and I'm using React 18.2. Well, I've installed React off of NPM, didn't include any source maps. I can download the React 18.2 source map I generated. But that doesn't help the app bundle source map that I just made. -[00:44:31] I figured out how to use a couple different source mapping libraries, and I've written a CLI package that will... You give it the file path to the source map for an app bundle, and it looks to find a copy of React dom listed in the in the files, and it replaces The source map of the minified file with the source map of the original bundle before it got minified. +[44:31] I figured out how to use a couple different source mapping libraries, and I've written a CLI package that will... You give it the file path to the source map for an app bundle, and it looks to find a copy of React dom listed in the in the files, and it replaces The source map of the minified file with the source map of the original bundle before it got minified. -[00:45:00] So that as far as the source map bundle is concerned, it has the original looking React source code available to debug. And I was able to prove that I could like serve up that modified V app and I could stick a break point inside the place where React renders function components and it worked and it paused there and I could inspect everything that was in scope with the release of this package, uh, I have not actually done it yet, but in theory. +[45:00] So that as far as the source map bundle is concerned, it has the original looking React source code available to debug. And I was able to prove that I could like serve up that modified V app and I could stick a break point inside the place where React renders function components and it worked and it paused there and I could inspect everything that was in scope with the release of this package, uh, I have not actually done it yet, but in theory. -[00:45:30] Anybody who has a React app right now that uses React 18.2, 18. 1, or 17. 0. 2 could add a post build step that uses my package, correct React source map in their app bundle. And the other thing that I would like to do with this... So I've been talking about, you know, my day job at Replay ought to be able to take those same source maps and automatically insert them into our backend so that if you made a recording of a React app and didn't have the original source maps, we could automatically insert them anyway, as you debug the recording, like, I'm sure we can do it. +[45:30] Anybody who has a React app right now that uses React 18.2, 18. 1, or 17. 0. 2 could add a post build step that uses my package, correct React source map in their app bundle. And the other thing that I would like to do with this... So I've been talking about, you know, my day job at Replay ought to be able to take those same source maps and automatically insert them into our backend so that if you made a recording of a React app and didn't have the original source maps, we could automatically insert them anyway, as you debug the recording, like, I'm sure we can do it. -[00:46:09] It's just a matter of convincing the backend team that we should. +[46:09] It's just a matter of convincing the backend team that we should. -[00:46:12] **Carl Vitullo:** Yeah, I, I'm thinking of, I'm thinking of like Sentry and things too. All these other +[46:12] **Carl Vitullo:** Yeah, I, I'm thinking of, I'm thinking of like Sentry and things too. All these other -[00:46:17] **Mark Erikson:** Yeah. The, yeah, the, the, the Sentry folks have been following what I've been doing and they are very excited about this. +[46:17] **Mark Erikson:** Yeah. The, yeah, the, the, the Sentry folks have been following what I've been doing and they are very excited about this. -[00:46:22] **Carl Vitullo:** Yeah, no doubt. +[46:22] **Carl Vitullo:** Yeah, no doubt. -[00:46:24] **Mark Erikson:** So I, I realize this is sort of a niche thing and not everyone is going to get immediate benefit from it, but like, I truly think this is something that a good bunch of the React community will benefit from because I was able to do the work to generate these just once. +[46:24] **Mark Erikson:** So I, I realize this is sort of a niche thing and not everyone is going to get immediate benefit from it, but like, I truly think this is something that a good bunch of the React community will benefit from because I was able to do the work to generate these just once. -[00:46:41] **Carl Vitullo:** Wow. Okay. So I knew that you had done this. I knew you had, you know, published a thing, but I didn't realize that you were, it had done, it had taken so much, I don't know, effort, like, wow, going in and modifying source maps for... taking the apps, source maps, and then replacing the right parts of them, so the unrelated source maps still work, but you also get all the React ones. +[46:41] **Carl Vitullo:** Wow. Okay. So I knew that you had done this. I knew you had, you know, published a thing, but I didn't realize that you were, it had done, it had taken so much, I don't know, effort, like, wow, going in and modifying source maps for... taking the apps, source maps, and then replacing the right parts of them, so the unrelated source maps still work, but you also get all the React ones. -[00:47:06] Like what? That's actually crazy. That sounds if I got, okay. If I got to that point, I would say, wow, no, I'm not doing that. That sounds like a pain in the butt. +[47:06] Like what? That's actually crazy. That sounds if I got, okay. If I got to that point, I would say, wow, no, I'm not doing that. That sounds like a pain in the butt. -[00:47:15] **Mark Erikson:** Like the thing is the actual logic is like 20 lines of code because there is a library that I found that will do the source map swapping. Like the majority of the logic is just import this library. The existing application source map, and then it gives you a callback for every file that it sees listed. And so I'm literally just saying, is this file's name React dom. production. min. js? And if so, figure out what version of React it is, load the right sourcemap and replace it. +[47:15] **Mark Erikson:** Like the thing is the actual logic is like 20 lines of code because there is a library that I found that will do the source map swapping. Like the majority of the logic is just import this library. The existing application source map, and then it gives you a callback for every file that it sees listed. And so I'm literally just saying, is this file's name React dom. production. min. js? And if so, figure out what version of React it is, load the right sourcemap and replace it. -[00:47:49] **Carl Vitullo:** Good job, holy crap, that's wild. um, I think that's all I have to say on that. That sounds incredible. That sounds super valuable. And especially if, if Replay and Sentry can both take advantage of that and just do it on behalf of everyone. That sounds incredible. If everyone using either of those products can get source maps for free without. Or source maps for React for free without doing anything without changing configuration or anything. +[47:49] **Carl Vitullo:** Good job, holy crap, that's wild. um, I think that's all I have to say on that. That sounds incredible. That sounds super valuable. And especially if, if Replay and Sentry can both take advantage of that and just do it on behalf of everyone. That sounds incredible. If everyone using either of those products can get source maps for free without. Or source maps for React for free without doing anything without changing configuration or anything. -[00:48:15] Wow. Okay, cool. Nice. Big project. +[48:15] Wow. Okay, cool. Nice. Big project. -[00:48:19] **Mark Erikson:** So that's what I did my last two or three days. +[48:19] **Mark Erikson:** So that's what I did my last two or three days. -[00:48:21] **Carl Vitullo:** (laughs) That's that's a productive two or three days. Very nice. Cool. Okay. Well, I don't know how lightning that round was, but. +[48:21] **Carl Vitullo:** (laughs) That's that's a productive two or three days. Very nice. Cool. Okay. Well, I don't know how lightning that round was, but. -[00:48:29] **Mark Erikson:** Not very, but hey, it worked. +[48:29] **Mark Erikson:** Not very, but hey, it worked. -[00:48:31] **Carl Vitullo:** It worked. It was interesting. It was good. +[48:31] **Carl Vitullo:** It worked. It was interesting. It was good. -## [00:48:33] Official React+Typescript documentation +## [48:33] Official React+Typescript documentation -[00:48:33] **Carl Vitullo:** Cool. Uh, I'll move us on though. Um, Yeah, React. Dev now has official TypeScript documentation. Thank you, Orta, for bringing this home. We discussed this last month when it was still a draft PR, but it has been merged, it has landed, and we now have official documentation on how to use TypeScript with React. Absolutely incredible. We're not going to comment on how long React and TypeScript have been out and available and the delay between... It being widely used and it being documented, but we have it. It's great. I'm glad we have it now. +[48:33] **Carl Vitullo:** Cool. Uh, I'll move us on though. Um, Yeah, React. Dev now has official TypeScript documentation. Thank you, Orta, for bringing this home. We discussed this last month when it was still a draft PR, but it has been merged, it has landed, and we now have official documentation on how to use TypeScript with React. Absolutely incredible. We're not going to comment on how long React and TypeScript have been out and available and the delay between... It being widely used and it being documented, but we have it. It's great. I'm glad we have it now. -[00:49:11] **Mark Erikson:** It looks amazing. Orta, you did a fantastic job. Thank you. +[49:11] **Mark Erikson:** It looks amazing. Orta, you did a fantastic job. Thank you. -[00:49:15] **Carl Vitullo:** Uh, Mark, you got another lightning round? Well, you said you have a hard stop in three minutes. So if we want to blitz through some of these. +[49:15] **Carl Vitullo:** Uh, Mark, you got another lightning round? Well, you said you have a hard stop in three minutes. So if we want to blitz through some of these. -## [00:49:23] Redux Toolkit 2.0 beta +## [49:23] Redux Toolkit 2.0 beta -[00:49:23] **Mark Erikson:** Yep. So really fast, uh, mentioned this before, but Redux Toolkit 2. 0 is still in beta. We would really like people to try it out. And then just this last week, I published React Redux version 9 alpha, which has the same kind of, you know, ES module packaging changes. That, you know, I've been trying to apply to all our different libraries. Um, so again, we would really, really like people to try these out. +[49:23] **Mark Erikson:** Yep. So really fast, uh, mentioned this before, but Redux Toolkit 2. 0 is still in beta. We would really like people to try it out. And then just this last week, I published React Redux version 9 alpha, which has the same kind of, you know, ES module packaging changes. That, you know, I've been trying to apply to all our different libraries. Um, so again, we would really, really like people to try these out. -[00:49:48] Tell us what breaks that shouldn't be breaking and give us feedback on things like the, you know, the new features and Redux toolkit 2. 0, pry them out. Tell us what you like or don't like so we can, you know, make any changes before they go final. +[49:48] Tell us what breaks that shouldn't be breaking and give us feedback on things like the, you know, the new features and Redux toolkit 2. 0, pry them out. Tell us what you like or don't like so we can, you know, make any changes before they go final. -[00:50:03] **Carl Vitullo:** All right, now's your chance. Get that feedback in. Uh, you want to run through your last link there? +[50:03] **Carl Vitullo:** All right, now's your chance. Get that feedback in. Uh, you want to run through your last link there? -## [00:50:09] The Underlying Mechanisms of React's Concurrent Mode +## [50:09] The Underlying Mechanisms of React's Concurrent Mode -[00:50:09] **Mark Erikson:** Yep. Uh, and then the last item I have is, there was a really, really good article called The Underlying Mechanisms of React's Concurrent Mode. And again, this is not a thing that most people need to necessarily worry about because it's inside of React. I always appreciate articles that explain how stuff is built, what are the technical constraints. +[50:09] **Mark Erikson:** Yep. Uh, and then the last item I have is, there was a really, really good article called The Underlying Mechanisms of React's Concurrent Mode. And again, this is not a thing that most people need to necessarily worry about because it's inside of React. I always appreciate articles that explain how stuff is built, what are the technical constraints. -[00:50:29] And so this was a really good look at how React has implemented the ability to split up renders into multiple pieces and delay parts of it. +[50:29] And so this was a really good look at how React has implemented the ability to split up renders into multiple pieces and delay parts of it. -[00:50:37] **Carl Vitullo:** Very nice. Um, I, I just have one lightning round link myself. Um, Sebastian and I were judges for React jam, which is a, it was a hackathon put on by a startup called rune that. +[50:37] **Carl Vitullo:** Very nice. Um, I, I just have one lightning round link myself. Um, Sebastian and I were judges for React jam, which is a, it was a hackathon put on by a startup called rune that. -[00:50:51] Is a I don't even know how to describe it, but it's a it's an app that you can play other games in. Uh, it's like a multiplayer games app. It's a little bit like discord activities if you've used any of those, uh, they did a hackathon building games with React. Um, so. Yeah. Sebastian and I judged it. We played a bunch of games. +[50:51] Is a I don't even know how to describe it, but it's a it's an app that you can play other games in. Uh, it's like a multiplayer games app. It's a little bit like discord activities if you've used any of those, uh, they did a hackathon building games with React. Um, so. Yeah. Sebastian and I judged it. We played a bunch of games. -[00:51:13] They were pretty fun. And yeah, check it out if you like games and React and stuff built games built with JavaScript. +[51:13] They were pretty fun. And yeah, check it out if you like games and React and stuff built games built with JavaScript. -[00:51:20] **Mark Erikson:** And on that note, I do unfortunately have to bail out for another meeting, but it's been a good discussion. And yeah, I think there's a lot of good stuff happening in the ecosystem. +[51:20] **Mark Erikson:** And on that note, I do unfortunately have to bail out for another meeting, but it's been a good discussion. And yeah, I think there's a lot of good stuff happening in the ecosystem. -[00:51:29] **Carl Vitullo:** Yeah. Yeah. Always, always many new things. +[51:29] **Carl Vitullo:** Yeah. Yeah. Always, always many new things. -[00:51:32] Cool. Uh, Mark, thanks for joining me, uh, everyone in the audience. Thanks for listening along. +[51:32] Cool. Uh, Mark, thanks for joining me, uh, everyone in the audience. Thanks for listening along. diff --git a/src/transcripts/tmir-dec-2023.md b/src/transcripts/tmir-dec-2023.md index d15ff70..60d3265 100644 --- a/src/transcripts/tmir-dec-2023.md +++ b/src/transcripts/tmir-dec-2023.md @@ -8,62 +8,62 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t --- - Quick hits: - - [[00:00:55](#layoffs-news)] [layoffs.fyi](https://layoffs.fyi/) - - [[00:01:37](#state-of-react-native-survey-closes-jan-5)] [State of React Native runs til Jan 5th](https://stateofreactnative.com/en) - - [[00:01:50](#adobe-💔-figma)] [Adobe and Figma abandon merger](https://www.figma.com/blog/figma-adobe-abandon-proposed-merger/) -- [[00:02:07](#react-native-073)] [React Native 0.73](https://reactnative.dev/blog/2023/12/06/0.73-debugging-improvements-stable-symlinks) + - [[00:55](#layoffs-news)] [layoffs.fyi](https://layoffs.fyi/) + - [[01:37](#state-of-react-native-survey-closes-jan-5)] [State of React Native runs til Jan 5th](https://stateofreactnative.com/en) + - [[01:50](#adobe-💔-figma)] [Adobe and Figma abandon merger](https://www.figma.com/blog/figma-adobe-abandon-proposed-merger/) +- [[02:07](#react-native-073)] [React Native 0.73](https://reactnative.dev/blog/2023/12/06/0.73-debugging-improvements-stable-symlinks) - [New debugging docs](https://reactnative.dev/docs/debugging) - New Debugger, [give feedback here](https://github.com/react-native-community/discussions-and-proposals/discussions/733) - [Bridgeless mode](https://github.com/reactwg/react-native-new-architecture/discussions/154) -- [[00:06:33](#redux-toolkit-20-and-supporting-libraries)] [Redux Toolkit 2.0](https://github.com/reduxjs/redux-toolkit/releases/tag/v2.0.0), [Redux 5.0](https://github.com/reduxjs/redux/releases/tag/v5.0.0), and [React-Redux 9.0](https://github.com/reduxjs/react-redux/releases/tag/v9.0.0) -- [[00:11:37](#xstate-v5)] [XState v5](https://stately.ai/blog/2023-12-01-xstate-v5) +- [[06:33](#redux-toolkit-20-and-supporting-libraries)] [Redux Toolkit 2.0](https://github.com/reduxjs/redux-toolkit/releases/tag/v2.0.0), [Redux 5.0](https://github.com/reduxjs/redux/releases/tag/v5.0.0), and [React-Redux 9.0](https://github.com/reduxjs/react-redux/releases/tag/v9.0.0) +- [[11:37](#xstate-v5)] [XState v5](https://stately.ai/blog/2023-12-01-xstate-v5) - React Server Components updates - - [[00:17:49](#react-core-team-panel-on-server-components)] [Frontend Should Embrace React Server Components](https://thenewstack.io/react-panel-frontend-should-embrace-react-server-components/) - - [[00:18:47](#ben-holmes-react-server-components-from-scratch)] [RSCs from scratch video from Ben Holmes](https://twitter.com/BHolmesDev/status/1735701191823151239) - - [[00:19:16](#storybook-adds-support-for-rscs)] [Storybook for React Server Components](https://storybook.js.org/blog/storybook-react-server-components/) - - [[00:19:45](#dan-abramov-blogs-again)] [Dan’s “Chain Reaction” post](https://overreacted.io/a-chain-reaction/) - - [[00:21:52](#daishi-katos-oss-prototype-rsc-framework)] [New RSC-first framework, Waku](https://github.com/dai-shi/waku) -- [[00:29:29](#stylex-released-by-meta)] [Introducing StyleX](https://stylexjs.com/blog/introducing-stylex/) + - [[17:49](#react-core-team-panel-on-server-components)] [Frontend Should Embrace React Server Components](https://thenewstack.io/react-panel-frontend-should-embrace-react-server-components/) + - [[18:47](#ben-holmes-react-server-components-from-scratch)] [RSCs from scratch video from Ben Holmes](https://twitter.com/BHolmesDev/status/1735701191823151239) + - [[19:16](#storybook-adds-support-for-rscs)] [Storybook for React Server Components](https://storybook.js.org/blog/storybook-react-server-components/) + - [[19:45](#dan-abramov-blogs-again)] [Dan’s “Chain Reaction” post](https://overreacted.io/a-chain-reaction/) + - [[21:52](#daishi-katos-oss-prototype-rsc-framework)] [New RSC-first framework, Waku](https://github.com/dai-shi/waku) +- [[29:29](#stylex-released-by-meta)] [Introducing StyleX](https://stylexjs.com/blog/introducing-stylex/) - React docs discussion - - [[00:32:50](#documentation-for-the-use-hook)] [Recent core docs pages updates](https://github.com/reactwg/server-components/discussions/7) - - [[00:35:08](#dan-abramovs-ama-on-bluesky)] [Dan Abramov React AMA on BlueSky](https://bsky.app/profile/danabra.mov/post/3khbvuwanqx2h) + - [[32:50](#documentation-for-the-use-hook)] [Recent core docs pages updates](https://github.com/reactwg/server-components/discussions/7) + - [[35:08](#dan-abramovs-ama-on-bluesky)] [Dan Abramov React AMA on BlueSky](https://bsky.app/profile/danabra.mov/post/3khbvuwanqx2h) - Lightning round: - - [[00:42:16](#-requesterimpairment-an-ietf-joke)] [An HTTP Status Code, Requester Impairment (joke??)](https://www.ietf.org/archive/id/draft-richardroda-420requesterimpaired-02.html) - - [[00:43:18](#-jules-blom-on-flushsync)] [More Than You Need to Know About ReactDOM.flushSync](https://julesblom.com/writing/flushsync) - - [[00:44:56](#-react-fights-you-can-have-with-your-team)] [React Fights You Can Have With Your Team](https://www.bekk.christmas/post/2023/13/react-fights-you-can-have-with-your-team) - - [[00:45:33](#-an-interview-with-kyle-mathews-on-gatsbys-story)] [Building React Framework Gatsby](https://oss-startup-podcast.launchnotes.io/announcements/episode-118-building-react-framework-gatsby) - - [[00:46:41](#-tanstack-router-v1)] [TanStack Router v1](https://tanstack.com/router/v1) -- [[00:47:19](#what-will-happen-in-2024)] Discussion: what do we think will happen with React and the ecosystem in 2024? + - [[42:16](#-requesterimpairment-an-ietf-joke)] [An HTTP Status Code, Requester Impairment (joke??)](https://www.ietf.org/archive/id/draft-richardroda-420requesterimpaired-02.html) + - [[43:18](#-jules-blom-on-flushsync)] [More Than You Need to Know About ReactDOM.flushSync](https://julesblom.com/writing/flushsync) + - [[44:56](#-react-fights-you-can-have-with-your-team)] [React Fights You Can Have With Your Team](https://www.bekk.christmas/post/2023/13/react-fights-you-can-have-with-your-team) + - [[45:33](#-an-interview-with-kyle-mathews-on-gatsbys-story)] [Building React Framework Gatsby](https://oss-startup-podcast.launchnotes.io/announcements/episode-118-building-react-framework-gatsby) + - [[46:41](#-tanstack-router-v1)] [TanStack Router v1](https://tanstack.com/router/v1) +- [[47:19](#what-will-happen-in-2024)] Discussion: what do we think will happen with React and the ecosystem in 2024? -[00:00:00] **Carl Vitullo:** Thank you for joining us for December. I'm sorry about the audio quality of this month, I am on the road and I forgot my headset this time around. This is This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. +[00:00] **Carl Vitullo:** Thank you for joining us for December. I'm sorry about the audio quality of this month, I am on the road and I forgot my headset this time around. This is This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. I'm Carl, I'm a staff product developer and freelance community manager at Reactiflux. Here, the Discord for React professionals. Mark, you want to say hey? -[00:00:24] **Mark Erikson:** Hi, I'm Mark Erikson. My day job is working at Replay. Io, where we're building a time traveling debugger for JavaScript. And in my copious amounts of spare time, I work on Redux, and boy, have I spent a lot of time doing that lately. +[00:24] **Mark Erikson:** Hi, I'm Mark Erikson. My day job is working at Replay. Io, where we're building a time traveling debugger for JavaScript. And in my copious amounts of spare time, I work on Redux, and boy, have I spent a lot of time doing that lately. -[00:00:37] **Carl Vitullo:** Yeah, you've got a lot of, releases to announce. +[00:37] **Carl Vitullo:** Yeah, you've got a lot of, releases to announce. -[00:00:40] **Mark Erikson:** I think we're both recording this one while we're on the road, too. +[00:40] **Mark Erikson:** I think we're both recording this one while we're on the road, too. -[00:00:43] **Carl Vitullo:** Yeah, I am coming, I am genuinely coming to you live from, my mom's basement. So this is a funny recording this time around. +[00:43] **Carl Vitullo:** Yeah, I am coming, I am genuinely coming to you live from, my mom's basement. So this is a funny recording this time around. I'll start us off with a couple of just quick hits of little news. ## Layoffs news -[00:00:55] **Carl Vitullo:** I'm thinking of starting a new segment just talking about layoffs and trends in the job market for tech, that seems pretty relevant for news discussion. December has been trending down per layoffs.fyi, which is a great resource, highly recommend. It's trending down; fewest layoffs by number of companies running layoffs since April of 2022, and it's been, qualitatively it's felt a little bit better, but last year December was among the lowest of the months for layoff and January went way through the roof, so fingers crossed that doesn't happen this year. I think that'll be a pretty big indicator for tone of 2024. +[00:55] **Carl Vitullo:** I'm thinking of starting a new segment just talking about layoffs and trends in the job market for tech, that seems pretty relevant for news discussion. December has been trending down per layoffs.fyi, which is a great resource, highly recommend. It's trending down; fewest layoffs by number of companies running layoffs since April of 2022, and it's been, qualitatively it's felt a little bit better, but last year December was among the lowest of the months for layoff and January went way through the roof, so fingers crossed that doesn't happen this year. I think that'll be a pretty big indicator for tone of 2024. ## State of React Native survey closes Jan 5 -[00:01:37] **Carl Vitullo:** There is a state of React Native survey that's currently running. It went live a couple weeks ago and runs until January 5th. So, if you use React Native, definitely check that out. Highly recommend, giving your feedback. +[01:37] **Carl Vitullo:** There is a state of React Native survey that's currently running. It went live a couple weeks ago and runs until January 5th. So, if you use React Native, definitely check that out. Highly recommend, giving your feedback. ## Adobe 💔 Figma -[00:01:50] **Carl Vitullo:** This is sort of related to our field, but, Adobe and Figma had been doing a very large merger. I know many, many people in the React ecosystem work with people who work with Figma. So I thought I'd give that a shout out. +[01:50] **Carl Vitullo:** This is sort of related to our field, but, Adobe and Figma had been doing a very large merger. I know many, many people in the React ecosystem work with people who work with Figma. So I thought I'd give that a shout out. ## React Native 0.73 -[00:02:07] **Carl Vitullo:** On to the real news. I'll start us off with our first link, which is react native 0. 73. New pretty big feature release. They've got a lot of good improvements coming out here with improvements to debugging, a couple of relatively nitty gritty technical details like Support for symlinks, which is a huge problem if you use symlinks in development, and not a problem at all for anyone else, which would include me. +[02:07] **Carl Vitullo:** On to the real news. I'll start us off with our first link, which is react native 0. 73. New pretty big feature release. They've got a lot of good improvements coming out here with improvements to debugging, a couple of relatively nitty gritty technical details like Support for symlinks, which is a huge problem if you use symlinks in development, and not a problem at all for anyone else, which would include me. But, the new debugging section looks really good. It looks like they've put a lot of energy into making debugging a lot better, which, as someone who has developed a product with React Native, debugging was a painful experience, so that's nice to see. They've got a new experimental, and Kind of buggy debugger. @@ -75,21 +75,21 @@ So that alone is a huge improvement. I think that'll be nice. Another relatively You no longer need to use the at types package. So that's awesome. -[00:04:08] **Mark Erikson:** Experience is zero. Like I've, I've attempted to run one or two tiny React Native projects. Mostly just sussed out tiny bits of Redux stuff, and that's it. One observation out of that that I do think is interesting is that it feels like React Native has jumped on board TypeScript more than the React core has. +[04:08] **Mark Erikson:** Experience is zero. Like I've, I've attempted to run one or two tiny React Native projects. Mostly just sussed out tiny bits of Redux stuff, and that's it. One observation out of that that I do think is interesting is that it feels like React Native has jumped on board TypeScript more than the React core has. One is that they, I think, React Native projects now ship with TypeScript set up by default, it sounds like. You know, this example here of moving the types into the core, whereas with the actual React and ReactDOM packages, the React types are still maintained separately. Now, the React types packages are now semi officially maintained by people affiliated with the React team, but there's still that difference of not actually shipping it with the actual React packages. Now you can also caveat and say this is a good thing because there have been tweaks and improvements to the React types packages that have come out in the last year and a half. Whereas there have been zero official stable React package releases. So there is actually a little bit of benefit to having those decoupled. -[00:05:22] **Carl Vitullo:** Yeah, well, hey, maybe if they had been forced to React release in order to update the types, they would have stuck in a couple of, small improvements along the way too. +[05:22] **Carl Vitullo:** Yeah, well, hey, maybe if they had been forced to React release in order to update the types, they would have stuck in a couple of, small improvements along the way too. -[00:05:30] **Mark Erikson:** One other React native thing to toss in here, we'll mention it later, but Dan Abramov was doing an AMA over on BlueSky one of the various Twitter clones that are out there. +[05:30] **Mark Erikson:** One other React native thing to toss in here, we'll mention it later, but Dan Abramov was doing an AMA over on BlueSky one of the various Twitter clones that are out there. And one of the questions was. You know, Dan, now that you're working on a product that is built with React Native, what are your opinions? And so per way that down that discussion, he had a couple thoughts about it's in some ways, it's great. In some ways, it actually feels really, really difficult and hard to use. But there were some interesting thoughts and discussion there. -[00:06:03] **Carl Vitullo:** My general sentiment seems to be shared by a lot of people that I've known have worked pretty deeply with React Native is it was really great, it let me do all sorts of stuff, I never want to use it again. +[06:03] **Carl Vitullo:** My general sentiment seems to be shared by a lot of people that I've known have worked pretty deeply with React Native is it was really great, it let me do all sorts of stuff, I never want to use it again. I think that's maybe just a reflection on the fact that mobile development is harder than web. And if you're trying to do both web and mobile development, React Native is pretty great, lets you do a lot more cheaply. Because you can actually share a substantial amount of the code between apps. @@ -97,7 +97,7 @@ But, it's got its own headaches too. You want to take us on, Mark? ## Redux Toolkit 2.0 (and supporting libraries) -[00:06:33] **Mark Erikson:** Yes! So, my big news, kind of on a personal and professional level, I've been teasing this one for months, but on December, I finally hit the button and shipped Redux Toolkit 2. 0. Along with major releases for all the other Redux related packages. +[06:33] **Mark Erikson:** Yes! So, my big news, kind of on a personal and professional level, I've been teasing this one for months, but on December, I finally hit the button and shipped Redux Toolkit 2. 0. Along with major releases for all the other Redux related packages. Redux Core Version 5, React Redux Version 9, Reselect Version 5, and Redux Thunk Version 3. This has been a massive undertaking on so many levels. I started working on this slew of major versions at the start of the year. And Initially, the primary goal was to update the packaging to better improve ES module CommonJS compatibility. @@ -111,9 +111,9 @@ One of the biggest ones was We changed the default memoization strategy for Rese This always felt like kind of a bad developer experience situation. And so I ended up swiping crash implementation based on weak maps directly out of the React source code. React has a new memoization function built in called cache, and I literally copy pasted that code and made use of it and re select. -[00:09:54] **Carl Vitullo:** Oh, very cool. +[09:54] **Carl Vitullo:** Oh, very cool. -[00:09:56] **Mark Erikson:** Yeah, it's buried down in the library, and I think it may actually be now listed in the docs. So, we did some testing on it, and we concluded that it's at least as fast in terms of like raw comparison performance. +[09:56] **Mark Erikson:** Yeah, it's buried down in the library, and I think it may actually be now listed in the docs. So, we did some testing on it, and we concluded that it's at least as fast in terms of like raw comparison performance. Um, in a sense, it has like an infinite cache size, but on the other hand, that could also be referred to as a memory leak, depending on how you look at it. Ultimately made the decision that this was worth actually including. And made that switch in Reselect version 5. @@ -121,25 +121,25 @@ So, I shipped all these literally the day before I went off on a trip to a confe The biggest couple things I'm seeing are some lingering TypeScript update issues where there's things are just changed a little bit in ways that people weren't expecting. I am very, very happy to have this out the door. -[00:11:18] **Carl Vitullo:** You've brought up the alphas and the betas in the last couple of months. +[11:18] **Carl Vitullo:** You've brought up the alphas and the betas in the last couple of months. Glad to, glad to hear you got it shipped. That's awesome. I obviously don't have anywhere near the level of access, or familiarity with you, so I can't, I don't even feel like I can respond to that appropriately, so. (laughter from both) I'm just going to roll us on to our next one. -[00:11:36] **Mark Erikson:** Moving on! +[11:36] **Mark Erikson:** Moving on! ## XState v5 -[00:11:37] **Carl Vitullo:** Moving on! stately, or XState v5 has been released. +[11:37] **Carl Vitullo:** Moving on! stately, or XState v5 has been released. I don't know, I don't think I would call it a competitor to Redux, but it does also deal with state. It deals with State machines, which Redux is one way. You can also implement state machines in Redux. It's not, I don't know, would you say, would you say Redux models things as state machines? Or would that be, would you say that's inaccurate? -[00:12:05] **Mark Erikson:** David K. Piano would point out that Redux is typically half of a state machine. Um, the distinction being that a true, with a true state machine, first you look at what state am I in now, and then you decide, okay, if I'm in state A, do I want to respond to action or event? And in Redux, you typically just respond, you respond to the action in the reducer unconditionally. +[12:05] **Mark Erikson:** David K. Piano would point out that Redux is typically half of a state machine. Um, the distinction being that a true, with a true state machine, first you look at what state am I in now, and then you decide, okay, if I'm in state A, do I want to respond to action or event? And in Redux, you typically just respond, you respond to the action in the reducer unconditionally. And so like, David actually contributed an example to the Redux style guide a while back, where it's like the first thing you would do in a reducer to make it a true state machine is switch state. Status, and then look at the action type. Whereas with a typical Redux reducer, you just, oh, here's the action. I handle it regardless of what the values are originally. -[00:12:58] **Carl Vitullo:** That's a cool and precise distinction. I like that. I have always like had a place in my heart for XState, but I've never really used it in a project. Um, they've had a. A bunch of really phenomenal developer tools that help with designing state machines. +[12:58] **Carl Vitullo:** That's a cool and precise distinction. I like that. I have always like had a place in my heart for XState, but I've never really used it in a project. Um, they've had a. A bunch of really phenomenal developer tools that help with designing state machines. You know, as a state machine library, they've written tools so that you can visualize them and write them in a visual way and then copy paste the code out. So I have actually used those tools in a Redux context because most of the projects I've worked on have been in that. But I've, I've been following them, following along with their development for a number of years. @@ -155,23 +155,23 @@ They've got some cool future plans listed as well. Um, I, one that I really like So, um, I think that sounds pretty neat. -[00:15:36] **Mark Erikson:** Yeah, as someone who also maintains a state management library, I, I just generally appreciate the amount of effort and work it took them to get this release out the door, um, I, I know that trying to implement their TypeScript support has been really, really complicated and they've got an absolute genius working for them. Matush Brzezinski, whose, whose handle is, andreasrake, has done a lot of work around their TypeScript support and trying to design APIs that are sufficiently flexible is a really, really tough task. +[15:36] **Mark Erikson:** Yeah, as someone who also maintains a state management library, I, I just generally appreciate the amount of effort and work it took them to get this release out the door, um, I, I know that trying to implement their TypeScript support has been really, really complicated and they've got an absolute genius working for them. Matush Brzezinski, whose, whose handle is, andreasrake, has done a lot of work around their TypeScript support and trying to design APIs that are sufficiently flexible is a really, really tough task. So I, I understand and appreciate the amount of effort it took them to get this out the door. One other, one other plug, I don't know if this is even a thing they've released yet, but something they've been looking at is the idea of being able to analyze real world code and describe it in a state machine format, kind of like AI powered, being being able to use To like take like an arbitrary Redux reducer or maybe even like a use effect setup and have it analyze that and generate a state machine like description of it so that you can then use some of those graphical developer tools to visualize the code. That's a separate thing from the XState library itself, but I know that's something that the stately company is working on. -[00:17:00] **Carl Vitullo:** That sounds incredible, actually. Yeah. That's like the dream of self documenting code. State machines are just so easy to read in the abstract. I've always really struggled to go back and forth between state machine, real code. +[17:00] **Carl Vitullo:** That sounds incredible, actually. Yeah. That's like the dream of self documenting code. State machines are just so easy to read in the abstract. I've always really struggled to go back and forth between state machine, real code. So if I could have something do that for me, ooh, that's pretty cool. Alright, let's move on though. Mark, what's your next link? Or set of links. -[00:17:24] **Mark Erikson:** So my, my caveat for a lot of this month's discussion, as usual, is that between travel and holiday stuff, I'm, I'm even less plugged into what's actually been going on in the ecosystem this month. This section especially is a collection of things that look interesting, but I haven't had a chance to go through them myself. So a few different updates and discussions related to React server components. +[17:24] **Mark Erikson:** So my, my caveat for a lot of this month's discussion, as usual, is that between travel and holiday stuff, I'm, I'm even less plugged into what's actually been going on in the ecosystem this month. This section especially is a collection of things that look interesting, but I haven't had a chance to go through them myself. So a few different updates and discussions related to React server components. ## React core team panel on Server Components -[00:17:49] **Mark Erikson:** A panel at the React Summit New York conference in, mid November where some members of the React team and Next. Js and a couple other ecosystem folks had a discussion about the state of React server components and whether they're worth adopting now and how are they used and how do they work. Ironically, I was at the conference. +[17:49] **Mark Erikson:** A panel at the React Summit New York conference in, mid November where some members of the React team and Next. Js and a couple other ecosystem folks had a discussion about the state of React server components and whether they're worth adopting now and how are they used and how do they work. Ironically, I was at the conference. I did not have a chance to watch that panel either live or recorded later, but this article is a fairly good summary of the discussion in that, um, so there were, there were a number of folks involved in that, including Andrew Clark, one of the React core members, Tom Preston Werner, who's currently working with RedwoodJS, Ben Holmes, Josh Camot, and a couple of the React devrels. @@ -179,15 +179,15 @@ Curious about sort of like the, I guess like the semi official view of what's go ## Ben Holmes, React Server Components from Scratch -[00:18:47] **Mark Erikson:** Speaking of Ben Holmes, so he's very involved with the Astro framework, but he also does a lot of videos on his YouTube channel where he explains things. He did a larger video called React Server Components from Scratch, about 20 minutes where he talks about server components and does a lot of drawing on the whiteboard and tries to explain how they work and what's going on and knowing Ben's ability to describe things that should be very useful. +[18:47] **Mark Erikson:** Speaking of Ben Holmes, so he's very involved with the Astro framework, but he also does a lot of videos on his YouTube channel where he explains things. He did a larger video called React Server Components from Scratch, about 20 minutes where he talks about server components and does a lot of drawing on the whiteboard and tries to explain how they work and what's going on and knowing Ben's ability to describe things that should be very useful. ## Storybook adds support for RSCs -[00:19:16] **Mark Erikson:** The storybook tool for documenting has actually added React server component support. Frankly, I have no idea how they've even implemented this at the technical level, but I can see this being a very useful thing. Like if you're writing server components, you want some way to be able to document them and make use of them, but they have all these requirements around being able to fetch data. So in some way, they've implemented support for using server components. +[19:16] **Mark Erikson:** The storybook tool for documenting has actually added React server component support. Frankly, I have no idea how they've even implemented this at the technical level, but I can see this being a very useful thing. Like if you're writing server components, you want some way to be able to document them and make use of them, but they have all these requirements around being able to fetch data. So in some way, they've implemented support for using server components. ## Dan Abramov blogs again -[00:19:45] **Mark Erikson:** Dan Abramov had done a lot of blogging in 2018 2019 on his site overreacted. Io, and Dan is a very deep thinker, he does a great job of explaining things, and he'd written a number of posts that kind of talk about how does React work conceptually, how do you approach modeling things with use effect, And he'd really spent his last two to three years entirely focused on rewriting the React documentation. +[19:45] **Mark Erikson:** Dan Abramov had done a lot of blogging in 2018 2019 on his site overreacted. Io, and Dan is a very deep thinker, he does a great job of explaining things, and he'd written a number of posts that kind of talk about how does React work conceptually, how do you approach modeling things with use effect, And he'd really spent his last two to three years entirely focused on rewriting the React documentation. So he hadn't blogged at all in a couple years. Well, now that the new React docs are finally out, and Dan has left Facebook and is now working on the BlueSky app, he's finally had a little bit of time to sit back, And do some thinking. And he's put up a new blog post. It's a little bit on the same principle of his talk from RemixConf earlier this year. @@ -199,11 +199,11 @@ And he never actually uses the word server components in this blog post, but if ## Daishi Kato's OSS prototype RSC framework -[00:21:52] **Carl Vitullo:** This is pretty early stage, I think, but somebody has put together, Daishi Kato. +[21:52] **Carl Vitullo:** This is pretty early stage, I think, but somebody has put together, Daishi Kato. -[00:21:59] **Mark Erikson:** He created Jotai and Valtio and now maintains Zustand, and he's also written a dozen other React slash state management utility libraries. +[21:59] **Mark Erikson:** He created Jotai and Valtio and now maintains Zustand, and he's also written a dozen other React slash state management utility libraries. -[00:22:13] **Carl Vitullo:** I recognize his name because you had mentioned him in previous episodes we've recorded. +[22:13] **Carl Vitullo:** I recognize his name because you had mentioned him in previous episodes we've recorded. But I could not have given that comprehensive list, so thank you for that. Daishi Kato has written a minimal React framework for, that uses React server components. So, this is the third, sort of React server components from scratch that I've seen. I think this is the first that I've seen that is Positioned as a framework that you can use. @@ -215,17 +215,17 @@ So I think, to me, that is a really big step in this open source process. We've So starting with a blog post, then a video, now a framework by three separate people. The community expertise in React Server Components is really ratcheting up, pretty cool to see. -[00:24:05] **Mark Erikson:** I can also vouch that RedwoodJS has been putting a lot of effort into trying to implement Server Components for their framework as well. +[24:05] **Mark Erikson:** I can also vouch that RedwoodJS has been putting a lot of effort into trying to implement Server Components for their framework as well. I know they did a blog post a couple months ago where they said we're all in on Server Components. I had a chance to talk with Tom Preston Werner at a conference a couple months ago where he was talking about some of the complexities where in a lot of cases they're having to go into the guts of Next and look at the implementation and try to figure out like how much of this is going What anything integrating with server components would need versus how much of it is specific to Next's internals. And I've seen some of the discussions from some of the other Redwood engineers as they're trying to figure out how to put all the pieces together. So there is activity. I don't know how fully along Redwood's implementation is yet, but there is very definite. Effort being put into trying to, trying to productionize that. -[00:25:00] **Carl Vitullo:** I don't know. When did we, when did we start seriously talking about React server components? Do you, do you have a sense for that? It feels like it's been all year. +[25:00] **Carl Vitullo:** I don't know. When did we, when did we start seriously talking about React server components? Do you, do you have a sense for that? It feels like it's been all year. -[00:25:07] **Mark Erikson:** I feel like almost three years ago was when the first video came out. It was either two or three years ago. And, and like it sat around for a while. And then we finally started seeing the integration to Next after, Sebastien and Andrew moved over to Vercel. +[25:07] **Mark Erikson:** I feel like almost three years ago was when the first video came out. It was either two or three years ago. And, and like it sat around for a while. And then we finally started seeing the integration to Next after, Sebastien and Andrew moved over to Vercel. -[00:25:23] **Carl Vitullo:** This is all building upon the primitives that were added in Suspense, right? Which I know that, I just saw some discussion about, it's been five years since Suspense was first unveiled. +[25:23] **Carl Vitullo:** This is all building upon the primitives that were added in Suspense, right? Which I know that, I just saw some discussion about, it's been five years since Suspense was first unveiled. So this is, I think, to me, that's a testament to just how difficult the work that they're trying to do is. We can talk a little bit more about what this unlocks later, um, I have a link coming up in the lightning round. Well actually maybe I'll just bring it in right now. @@ -243,23 +243,23 @@ It's one of the reasons I have a lot of trust in them, is they keep executing, a Well, you know what? They're doing it. They keep, it's hard, it's really difficult to feel out all the edge cases, it's really hard to communicate to all of the developers what you're supposed to be doing, but man, they're doing it. They are, they have continued to do it for my entire career, and I just have huge, huge amounts of respect for them. -[00:29:11] **Mark Erikson:** Yeah, they've always had a very long term vision of how they want to build things, and they've kept chugging along towards that goal. +[29:11] **Mark Erikson:** Yeah, they've always had a very long term vision of how they want to build things, and they've kept chugging along towards that goal. -[00:29:19] **Carl Vitullo:** Bit of a, bit of a ramble there, bit of a rant, but, I was thinking about it over the last week or so, in prepping for this. Just, the work they're doing is really cool. +[29:19] **Carl Vitullo:** Bit of a, bit of a ramble there, bit of a rant, but, I was thinking about it over the last week or so, in prepping for this. Just, the work they're doing is really cool. ## StyleX released by Meta -[00:29:29] **Carl Vitullo:** Okay, but under our next link, facebook released, something that they first talked about a number of years ago, Stylex, a CSS and JS tool that, that they use at Meta. Sorry, not Facebook, Meta. I don't have a lot to say on this. Um, I know I'm introducing it, but it's a CSS and JS library. Kind of feels like the moment for that has, um we, we had a lot of experimentation on that. +[29:29] **Carl Vitullo:** Okay, but under our next link, facebook released, something that they first talked about a number of years ago, Stylex, a CSS and JS tool that, that they use at Meta. Sorry, not Facebook, Meta. I don't have a lot to say on this. Um, I know I'm introducing it, but it's a CSS and JS library. Kind of feels like the moment for that has, um we, we had a lot of experimentation on that. And it feels like generally we, as a, an ecosystem, the React subset of web development, have settled on CSS and JS not being the best solution. Just, some some of the trade offs are Increasing the size of the JavaScript bundle, where JavaScript is more expensive to load and parse than CSS. So it tends to add a lot. Relative to non more traditional CSS. It tends to add more startup cost than other methods. Mark, do you remember when they first announced StyleX? -[00:30:31] **Mark Erikson:** It, there was a, there was a conference talk about it at ReactConf in either 2018 or 2019. And they didn't give many details. They just kind of said, here's an overview of the tooling that we use internally at what was, what I guess was still then Facebook and kind of what it does and how it works at a high level. +[30:31] **Mark Erikson:** It, there was a, there was a conference talk about it at ReactConf in either 2018 or 2019. And they didn't give many details. They just kind of said, here's an overview of the tooling that we use internally at what was, what I guess was still then Facebook and kind of what it does and how it works at a high level. The community was aware that existed. But there was no information on the actual internals or anything that you could use. So there was, it was always sort of this, this hint of this exists. It was only this year that you could actually, they were, they started actually moving towards being able to release it open source. And so now it's finally out. Um, yeah, the couple bits that I know about it are as, as the comment just said, it's primarily compile time, not runtime, so there's always trade offs there in terms of the amount of dynamic behavior it can have. I believe it compiles down to Atomic CSS, so part of the sales pitch is that as the app grows and you have more and more components using certain styles and certain rules, the growth of the size of the CSS stays lower than it might with other approaches. -[00:31:48] **Carl Vitullo:** That does seem like a genuine advancement of the state of the art of CSS and JS. Um, especially, pulling, that was always the challenge with stuff like Emotion, um, or styled components was, I think you could wire it up to Webpack or limited other build systems, such that it would extract the, the styles into CSS. +[31:48] **Carl Vitullo:** That does seem like a genuine advancement of the state of the art of CSS and JS. Um, especially, pulling, that was always the challenge with stuff like Emotion, um, or styled components was, I think you could wire it up to Webpack or limited other build systems, such that it would extract the, the styles into CSS. Some of them could, some of them couldn't, bit of a mix and match, but okay, that, that being, The major downside of CSS and JS, if they, since they have built it as a compile time extraction of styles, that's avoiding the biggest, worst trade off. So that sounds pretty cool. @@ -267,7 +267,7 @@ Positioning this as extremely large code base styling tool, so focus on performa ## Documentation for the use() hook -[00:32:50] **Mark Erikson:** Moving us along, a couple of discussions around docs. So, I've, I've actually been whining for a lot of this year that okay, it's great that the new React doc site is available, it has a wonderful tutorial, but it just feels like there's so many other pages that need to get filled out for it to be fully useful in terms of some of the API references and usage guides. +[32:50] **Mark Erikson:** Moving us along, a couple of discussions around docs. So, I've, I've actually been whining for a lot of this year that okay, it's great that the new React doc site is available, it has a wonderful tutorial, but it just feels like there's so many other pages that need to get filled out for it to be fully useful in terms of some of the API references and usage guides. And I I had some discussions with some of the React dev rels this year. So they actually just posted an update that collates some of the recently added or updated docs pages that they've been working on. And it looks like a, and kind of the, some of the theme here is they've been working on documenting A lot of the new APIs that exist around server components and server actions. @@ -279,23 +279,23 @@ They've documented the HTML form tag. In a sense of, here's how you can use this ## Dan Abramov's AMA on BlueSky -[00:35:08] **Mark Erikson:** Along with that, Dan Abramov is now working on the BlueSky Twitter clone app as his day job. And he recently did an AMA over on BlueSky. People had a whole bunch of good questions over there. I mentioned the one earlier about people asking What are your thoughts on React Native now that you've actually used it? +[35:08] **Mark Erikson:** Along with that, Dan Abramov is now working on the BlueSky Twitter clone app as his day job. And he recently did an AMA over on BlueSky. People had a whole bunch of good questions over there. I mentioned the one earlier about people asking What are your thoughts on React Native now that you've actually used it? Um, there were some questions about React batching and will React ever get ported to Rust? There was one in there that was, What do you think should happen to create React now? And Dan's comment was, It would be nice if it was turned into a build time server components framework. I don't expect that to actually happen, but it's an interesting train of thought of what could we do with the name and the toolset if we wanted to. -[00:36:03] **Carl Vitullo:** Dan has gone a little quiet the last, like you mentioned earlier, he's talked about going all in on the docs. He also mentioned some challenges he experienced with his own perfectionism trying to get it just right, which is he attributed as part of the reason the docs took so long to come out. Sounds like he may have gotten a little burned out too. +[36:03] **Carl Vitullo:** Dan has gone a little quiet the last, like you mentioned earlier, he's talked about going all in on the docs. He also mentioned some challenges he experienced with his own perfectionism trying to get it just right, which is he attributed as part of the reason the docs took so long to come out. Sounds like he may have gotten a little burned out too. -[00:36:22] **Mark Erikson:** Oh, yeah. Oh, yeah. +[36:22] **Mark Erikson:** Oh, yeah. Oh, yeah. -[00:36:24] **Carl Vitullo:** Burnout is real. Burnout is tough. So it's nice to see him in a new context, working on a new It sounds like he's enjoying getting his hands dirty working on an application rather than staying at the high level of just talking about React and developing it from the core. Um, I think it might, seems like he's enjoying it. +[36:24] **Carl Vitullo:** Burnout is real. Burnout is tough. So it's nice to see him in a new context, working on a new It sounds like he's enjoying getting his hands dirty working on an application rather than staying at the high level of just talking about React and developing it from the core. Um, I think it might, seems like he's enjoying it. It's nice to see him get back into writing and community discussion a little bit more. Um, this has been a really good thread. I'm, I'm also a big fan of Blue Sky. I have been enthusiastically looking for an alternative to Twitter. So I am optimistic that Dan being a more prolific poster on the platform will help it succeed. Glad to see a few more of these. Definitely recommend going through the thread and just reading a bit. There's a, there were a couple of really good questions and answers. One that I saw and responded to, so I'm gonna toot my own horn a little bit. Somebody asked about, um, React and, what's the Like, Module Federation, What, Microfrontends? -[00:37:33] **Mark Erikson:** yeah. Those are probably too +[37:33] **Mark Erikson:** yeah. Those are probably too -[00:37:36] **Carl Vitullo:** Yeah, okay, so somebody asked about micro frontends and module federation and how React would work with it. I know that's been a subject of debate for a couple of years. It's sort of come and gone over time, ebbed and flowed, but I think that's a really big challenge. I think it's, maybe we'll see it come back a bit with React server components as those settle down, but I think the real challenge there is CI and CD, the build and deploy process for micro frontends. +[37:36] **Carl Vitullo:** Yeah, okay, so somebody asked about micro frontends and module federation and how React would work with it. I know that's been a subject of debate for a couple of years. It's sort of come and gone over time, ebbed and flowed, but I think that's a really big challenge. I think it's, maybe we'll see it come back a bit with React server components as those settle down, but I think the real challenge there is CI and CD, the build and deploy process for micro frontends. Which I think is, it solves a real problem for large teams, but it's difficult to implement. Tends to be a DevOps discipline rather than a library or product. Just, it's too deeply embedded in every step of the build, the development, the deploy, testing. Just too tricky. @@ -309,49 +309,49 @@ I think that a lot of them have been in flux for a long time, a period of years It's, I look forward to see what the docs are like in 2024. -[00:40:04] **Mark Erikson:** I actually had a back and forth with Rick Hanlon from the React team in mid November where I was getting a little worked up and complaining that You know, the React docs really need to have more details about how React renders. You know, that's always been one of my biggest and most appreciated blog posts, is the article about React's rendering behavior. +[40:04] **Mark Erikson:** I actually had a back and forth with Rick Hanlon from the React team in mid November where I was getting a little worked up and complaining that You know, the React docs really need to have more details about how React renders. You know, that's always been one of my biggest and most appreciated blog posts, is the article about React's rendering behavior. I actually got called out a little bit by Rick, who linked me to certain sections of the docs that actually have some of the information that I was complaining didn't exist. I had looked through some of the early betas of the docs, and to be honest, I hadn't really gone back and dug through them since then, and so there were definitely some pages that called out some of the specific nuances that I thought should be in there that I didn't realize had actually been added. Like even talking about kind of like the existence of like the render versus commit phase. It is sort of scattered through some of the different learning material pages. It's not like in one single start to finish usage guide or how this works page. But there is actually a lot more of that material in the current docs than, certainly in the old docs, and more than I had actually given it credit for. -[00:41:22] **Carl Vitullo:** It has been a bit of a challenge to figure out how to stay on top of what changes are coming out in the docs. I note that the last blog post on react. Dev was in May. So, I think you can be a little forgiven for finding it difficult to stay on top of what changes have happened. +[41:22] **Carl Vitullo:** It has been a bit of a challenge to figure out how to stay on top of what changes are coming out in the docs. I note that the last blog post on react. Dev was in May. So, I think you can be a little forgiven for finding it difficult to stay on top of what changes have happened. I'm not even sure how you would. Because I don't think they get published as releases in GitHub. -[00:41:45] **Mark Erikson:** Well, no, the React docs should still be a public repo, um, it used to be React. Js slash React. Js dot org, they might have renamed the repo, but the repo exists, so I assume I could watch the repo for PRs. +[41:45] **Mark Erikson:** Well, no, the React docs should still be a public repo, um, it used to be React. Js slash React. Js dot org, they might have renamed the repo, but the repo exists, so I assume I could watch the repo for PRs. -[00:41:59] **Carl Vitullo:** That's a high noise source of input though, where's the bi monthly summary of here's all the stuff we've shipped. So anyway whatever. They got more, they got some more DevRel folks. We'll see, we'll see what's going on. Anyway, +[41:59] **Carl Vitullo:** That's a high noise source of input though, where's the bi monthly summary of here's all the stuff we've shipped. So anyway whatever. They got more, they got some more DevRel folks. We'll see, we'll see what's going on. Anyway, -[00:42:13] **Mark Erikson:** cool. Lightning round. +[42:13] **Mark Erikson:** cool. Lightning round. ## ⚡️ RequesterImpairment (an IETF joke??) -[00:42:16] **Carl Vitullo:** Lightning round. I don't quite comprehend the implications of this, but IETF, um, The task force that owns HTTP has put out a draft of an HTTP status code to report requester impairment. +[42:16] **Carl Vitullo:** Lightning round. I don't quite comprehend the implications of this, but IETF, um, The task force that owns HTTP has put out a draft of an HTTP status code to report requester impairment. I don't quite know what that means. They talk a little bit about AI requesters. -[00:42:38] **Mark Erikson:** It's a joke. +[42:38] **Mark Erikson:** It's a joke. -[00:42:39] **Carl Vitullo:** Is it a joke? They put out a joke in December? +[42:39] **Carl Vitullo:** Is it a joke? They put out a joke in December? -[00:42:42] **Mark Erikson:** Look at the status code. +[42:42] **Mark Erikson:** Look at the status code. -[00:42:44] **Carl Vitullo:** RequesterImpairment 420. Okay, this is straight up a joke? It's a very serious looking joke. +[42:44] **Carl Vitullo:** RequesterImpairment 420. Okay, this is straight up a joke? It's a very serious looking joke. -[00:42:50] **Mark Erikson:** Have you ever seen HTTP status code 418? I'm a little teapot. +[42:50] **Mark Erikson:** Have you ever seen HTTP status code 418? I'm a little teapot. -[00:42:54] **Carl Vitullo:** But that was released on April Fool's Day, like 20 years ago. +[42:54] **Carl Vitullo:** But that was released on April Fool's Day, like 20 years ago. -[00:42:59] **Mark Erikson:** Yeah, I don't know why this one would have been released. But I'm pretty sure this is a joke of some kind. +[42:59] **Mark Erikson:** Yeah, I don't know why this one would have been released. But I'm pretty sure this is a joke of some kind. -[00:43:05] **Carl Vitullo:** It smells like a joke. It's RequesterImpairment 420 Yeah. It smells like a joke, and I don't know how to interpret this. Maybe it's a joke. +[43:05] **Carl Vitullo:** It smells like a joke. It's RequesterImpairment 420 Yeah. It smells like a joke, and I don't know how to interpret this. Maybe it's a joke. Move us on, take us away. ## ⚡️ Jules Blom on FlushSync -[00:43:18] **Mark Erikson:** A blogger named Jules Blom, who has put out a number of posts in the last year that talk about some very specific technical nuances of React rendering, which is a topic that I always appreciate. And so Jules put out a post recently that talks about a relatively new React API called FlushSync. +[43:18] **Mark Erikson:** A blogger named Jules Blom, who has put out a number of posts in the last year that talk about some very specific technical nuances of React rendering, which is a topic that I always appreciate. And so Jules put out a post recently that talks about a relatively new React API called FlushSync. And this exists because of the change in how React batches updates. Prior to React 18, React would automatically batch renders if you called set state more than once in an event handler, but it would not do it if you did it in some async function. And so React 18 switches it so that React now always batches any updates that occur in the same event loop tick. @@ -363,13 +363,13 @@ So, this is a useful article talking about what it is and why you would want to ## ⚡️ React Fights You Can Have With Your Team -[00:44:56] **Carl Vitullo:** Thank you, next. I like this one. It's a little silly. A Christmas post. React fights you can have with your team. I was just reading this and all of these are fights that I have had with my team over the years. So default versus named exports. +[44:56] **Carl Vitullo:** Thank you, next. I like this one. It's a little silly. A Christmas post. React fights you can have with your team. I was just reading this and all of these are fights that I have had with my team over the years. So default versus named exports. Do you call a file in a, a feature folder index tsx, or the same name as the folder? How do you name props, regular functions or arrow functions? I, it, it was, it was just a, a, a great comprehensive list of all sorts of fights that I've had over the years on teams. So, appreciated it. Um, okay, I have a second one queued up here, so I'm just gonna run with it. ## ⚡️ An interview with Kyle Mathews on Gatsby's story -[00:45:33] **Carl Vitullo:** Um, there was a good podcast recently interviewing Kyle Matthews about building Gatsby. It just, just, it seemed like a very honest and open discussion of the lifespan of Gatsby from Inception to V2, V3, and Acquisition. Reactiflux and Gatsby share some ancestry. Kyle Matthews used to be pretty active here. +[45:33] **Carl Vitullo:** Um, there was a good podcast recently interviewing Kyle Matthews about building Gatsby. It just, just, it seemed like a very honest and open discussion of the lifespan of Gatsby from Inception to V2, V3, and Acquisition. Reactiflux and Gatsby share some ancestry. Kyle Matthews used to be pretty active here. At one point he had admin permissions over a subset of channels that Gatsby used as their official chat. So I have a soft spot in my heart for Gatsby. And it's nice to see some discussion of inside baseball, how did it work, how did it grow, why was it made. I, I, something I thought was pretty interesting is he explicitly talks about making it for himself for blogs and small sites. @@ -377,15 +377,15 @@ One of the big complaints is that Gatsby didn't really scale beyond those, so he ## ⚡️ TanStack Router v1 -[00:46:41] **Mark Erikson:** All right, and last lightning round item is that the ever prolific Tanner Lindsley has released TanStack Router v1. I know Tanner has had a lot of opinions about Things like, how does a router integrate into a framework, type safety, and data fetching and loading. +[46:41] **Mark Erikson:** All right, and last lightning round item is that the ever prolific Tanner Lindsley has released TanStack Router v1. I know Tanner has had a lot of opinions about Things like, how does a router integrate into a framework, type safety, and data fetching and loading. So, this, I could not sit here and list the differences between TanStackRouter and ReactRouter. But, Tanner has a track record of creating libraries that are very useful, very well thought out, and he puts a lot of effort into them. So, probably worth taking a look. ## What will happen in 2024?? -[00:47:19] **Carl Vitullo:** And Mark, you had a great idea. For an end of episode discussion, what do we think will happen with React and the ecosystem in 2024? +[47:19] **Carl Vitullo:** And Mark, you had a great idea. For an end of episode discussion, what do we think will happen with React and the ecosystem in 2024? -[00:47:29] **Mark Erikson:** The biggest one that I'm so very much looking forward to and excited about is the React Forget compiler. So the initial mentions of it were well over two years ago. It was kind of quiet. We got tiny little hints and a couple updates. You know, over the last year and a half. And then finally, late this year, we got a couple big updates from the team members who were building the Forget compiler. +[47:29] **Mark Erikson:** The biggest one that I'm so very much looking forward to and excited about is the React Forget compiler. So the initial mentions of it were well over two years ago. It was kind of quiet. We got tiny little hints and a couple updates. You know, over the last year and a half. And then finally, late this year, we got a couple big updates from the team members who were building the Forget compiler. Sathya did a talk at React India, and then Joe and Mofe did a talk at React Advanced in London. It sounds as if React Forget is real, it works, it is being used in production at a couple of different metasites, and it sounds like the hard part And now it's the other hard part of trying to fully productionize this and make it ready. @@ -397,11 +397,11 @@ And you write your React code exactly the same way you always have. You don't ha Obviously there's no actual release date. You know, the, during the talk at London, Joe and Moffay said it'll be available when we think we've got it fully productionized and are ready to support it. I'm hopeful that it will actually come out in 2024. -[00:49:42] **Carl Vitullo:** I like that. Good prediction. Well, I don't know a prediction, but +[49:42] **Carl Vitullo:** I like that. Good prediction. Well, I don't know a prediction, but -[00:49:45] **Mark Erikson:** Wishlist. +[49:45] **Mark Erikson:** Wishlist. -[00:49:46] **Carl Vitullo:** Wishlist, sure. +[49:46] **Carl Vitullo:** Wishlist, sure. I have always taken an approach of no expectations. I prefer to just let the news wash over me and See, I think, I think I find predictions less valuable than responsive, being responsive to what comes out. Updating a mental model periodically. I'm very excited to see how server components continue to shake out. @@ -409,7 +409,7 @@ That's maybe a kind of a cop out answer, the obvious choice, but it's true. I, I It's really cool to see momentum build. In the community, in the ecosystem. I think it's complicated, I think it's hard. I think 2024 might be when we hit critical mass on that and start seeing a lot more powerful applications of server components more generally. -[00:50:51] **Mark Erikson:** another thing that will hopefully happen next year is another stable version of release of React. +[50:51] **Mark Erikson:** another thing that will hopefully happen next year is another stable version of release of React. Because the current one is 18. 2, that came out well over a year and a half ago. You know, I've voiced my complaints about React's versioning strategy a number of times this year. They put out the blog post about the canary release idea, which has resulted in a lot of arguments about, well, what does it mean that this feature is stable for frameworks, not actually stable and usable by anybody else? @@ -427,7 +427,7 @@ The question is, how long will it take to come out? And will there be any minor Should I use Redux versus Context? Da da da da da da da da da da. -[00:54:09] **Carl Vitullo:** The never ending cycle of questions. Yeah, we're, we're going to be doing a, a thank you to the React core team soon before the end of the year. Years and years ago, we used to do an annual like end of year thank you to the core team, which was really lovely. +[54:09] **Carl Vitullo:** The never ending cycle of questions. Yeah, we're, we're going to be doing a, a thank you to the React core team soon before the end of the year. Years and years ago, we used to do an annual like end of year thank you to the core team, which was really lovely. And we just fell off and stopped doing it. So we're going to be trying to revive that now. And it's been six years since the last time we did that. Last one was in 2017. It was a good excuse to go back, pull up the web archive, and see how the communities have grown. So I pulled up like this the subreddit, the React. Js subreddit, Reactiflux, and Thackoverflow. diff --git a/src/transcripts/tmir-june-2023.md b/src/transcripts/tmir-june-2023.md index 74500ba..109e562 100644 --- a/src/transcripts/tmir-june-2023.md +++ b/src/transcripts/tmir-june-2023.md @@ -9,25 +9,25 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_), [Mark Erikson](https://twit -[00:00:00] **Carl Vitullo:** Thanks for joining us for this month's, This Month in React, for June, where we recap and digest recent develop elements in the ever evolving React and web ecosystem. We are your hosts. I am Carl Vitullo. I'm a staff software engineer and community manager for Reactiflux. +[00:00] **Carl Vitullo:** Thanks for joining us for this month's, This Month in React, for June, where we recap and digest recent develop elements in the ever evolving React and web ecosystem. We are your hosts. I am Carl Vitullo. I'm a staff software engineer and community manager for Reactiflux. -[00:00:17] **Mark Erikson:** Hi, I'm Mark Erikson. Most folks might know me as the maintainer of the Redux family of libraries, and my day job is at replay.io, where we're building a true time traveling debugger for JavaScript. +[00:17] **Mark Erikson:** Hi, I'm Mark Erikson. Most folks might know me as the maintainer of the Redux family of libraries, and my day job is at replay.io, where we're building a true time traveling debugger for JavaScript. -[00:00:28] **Sebastien Lorber:** Hello, I'm Sebastian and I am known for Docusaurus as being the maintainer and also the creator of the This Week in React newsletter. +[00:28] **Sebastien Lorber:** Hello, I'm Sebastian and I am known for Docusaurus as being the maintainer and also the creator of the This Week in React newsletter. -[00:00:38] **Carl Vitullo:** Yeah, I feel like we've had a lot of news this month, so how about we jump into it? +[00:38] **Carl Vitullo:** Yeah, I feel like we've had a lot of news this month, so how about we jump into it? # StackOverflow Developer Survey - [Stack Overflow Developer Survey 2023](https://survey.stackoverflow.co/2023/) -[00:00:43] I am starting off a little broad here. The StackOverflow developer survey for 2023 came out and I feel like it had a lot of, I don't know, this is just such a like seminal survey in the programming world generally. And I guess, from the survey I was seeing just how much of the programming world is specifically web and React. +[00:43] I am starting off a little broad here. The StackOverflow developer survey for 2023 came out and I feel like it had a lot of, I don't know, this is just such a like seminal survey in the programming world generally. And I guess, from the survey I was seeing just how much of the programming world is specifically web and React. -[00:01:04] So it's, I thought this was interesting to see. This is good to cover for, even though we, this is not specifically about React or Web narrowly, but Yeah, I mean, for example, they had a bunch of questions about what technologies you use and of the top 5, 3 of them are web technologies. +[01:04] So it's, I thought this was interesting to see. This is good to cover for, even though we, this is not specifically about React or Web narrowly, but Yeah, I mean, for example, they had a bunch of questions about what technologies you use and of the top 5, 3 of them are web technologies. -[00:01:20] 65% of respondents use JavaScript, 38% use TypeScript, half use HTML and CSS. So a lot of good insights in here. Some good examples on hybrid versus in-person work, like only 16% of software developers are currently fully in person. Well, 16% of respondents to the StackOverflow survey. +[01:20] 65% of respondents use JavaScript, 38% use TypeScript, half use HTML and CSS. So a lot of good insights in here. Some good examples on hybrid versus in-person work, like only 16% of software developers are currently fully in person. Well, 16% of respondents to the StackOverflow survey. -[00:01:40] They had some good salary information. US, UK, India. For a front end developer in the US, average reported salary was 140,000., Same title in the UK was 71, same title in India was 15. So one thing I love about this survey is just seeing, sort of a benchmark about the industry as a whole, or at least the portion of the industry that makes heavy use of StackOverflow, but always fun to see and definitely good things to read here. +[01:40] They had some good salary information. US, UK, India. For a front end developer in the US, average reported salary was 140,000., Same title in the UK was 71, same title in India was 15. So one thing I love about this survey is just seeing, sort of a benchmark about the industry as a whole, or at least the portion of the industry that makes heavy use of StackOverflow, but always fun to see and definitely good things to read here. # Server Components @@ -37,100 +37,100 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_), [Mark Erikson](https://twit - [Redwood: All in on RSCs](https://community.redwoodjs.com/t/redwoodjs-next-epoch-all-in-on-react-server-components/4967) - [React WG - RSC from Scratch. Part 1: Server Components](https://github.com/reactwg/server-components/discussions/5) -[00:02:08] **Mark Erikson:** Nice. Kind of a similar theme, so general big picture news. The biggest topic of discussion that I continue to see in between Twitter and Reddit and wherever else is React Server Components. And there's been a few pieces of information as far as technical updates and helping people understand how they actually work. +[02:08] **Mark Erikson:** Nice. Kind of a similar theme, so general big picture news. The biggest topic of discussion that I continue to see in between Twitter and Reddit and wherever else is React Server Components. And there's been a few pieces of information as far as technical updates and helping people understand how they actually work. -[00:02:31] First off the NextJS folks put up a blog post that gave an update about the NextJS app router and its current functional status. Why they built it, how it supports incremental adoption. It's stable, but they are still working on improving it. They talked about some of the plans they have for improvements, like improving the speed of the local development server, working to make fast refresh faster using the the Turbopack build tool and getting that from beta to production ready. +[02:31] First off the NextJS folks put up a blog post that gave an update about the NextJS app router and its current functional status. Why they built it, how it supports incremental adoption. It's stable, but they are still working on improving it. They talked about some of the plans they have for improvements, like improving the speed of the local development server, working to make fast refresh faster using the the Turbopack build tool and getting that from beta to production ready. -[00:03:07] They also talked about trying to improve the docs. They've done a lot of work over the last year to improve the NextJS docs specifically. We'll talk about this more in a little bit, so there really aren't, isn't any documentation about React Server Components in the actual React Docs. +[03:07] They also talked about trying to improve the docs. They've done a lot of work over the last year to improve the NextJS docs specifically. We'll talk about this more in a little bit, so there really aren't, isn't any documentation about React Server Components in the actual React Docs. -[00:03:25] The only real official documentation you can find is in next's documentation site. So the blog post talks about like, we're, we're working on that as well. There were a couple other pretty good related links. Dan Abramov has a discussion thread in the one of the React Working Group repos that talks about why client components get converted to html. +[03:25] The only real official documentation you can find is in next's documentation site. So the blog post talks about like, we're, we're working on that as well. There were a couple other pretty good related links. Dan Abramov has a discussion thread in the one of the React Working Group repos that talks about why client components get converted to html. -[00:03:49] He also did a very long, deep dive thread, which to be honest, I still haven't even had time to read through where he tried to rebuild the function and some of the basic functionality of React Server Components. From scratch, and I've seen a lot of folks say that this was really helpful in understanding the mental model as well as the technical details of how Server Components work. +[03:49] He also did a very long, deep dive thread, which to be honest, I still haven't even had time to read through where he tried to rebuild the function and some of the basic functionality of React Server Components. From scratch, and I've seen a lot of folks say that this was really helpful in understanding the mental model as well as the technical details of how Server Components work. -[00:04:13] And I think I've seen a, a couple people try to take the information that Dan wrote in this article and turn it into tutorial videos as well. And then I know that a couple other React related frameworks besides next are looking into using Server Components, and that includes both Remix and Redwood. +[04:13] And I think I've seen a, a couple people try to take the information that Dan wrote in this article and turn it into tutorial videos as well. And then I know that a couple other React related frameworks besides next are looking into using Server Components, and that includes both Remix and Redwood. -[00:04:37] And then there's at least a few other folks experimenting with Server Components in different ways. Daishi Kato, who's the maintainer of the Zustand and Valtio and Jotai libraries has been doing his own little spin on a server component based framework. So there's a lot of motion going on around the ecosystem in relation to Server Components. +[04:37] And then there's at least a few other folks experimenting with Server Components in different ways. Daishi Kato, who's the maintainer of the Zustand and Valtio and Jotai libraries has been doing his own little spin on a server component based framework. So there's a lot of motion going on around the ecosystem in relation to Server Components. -[00:04:59] **Carl Vitullo:** Yeah, definitely a lot of motion. I hadn't seen the Redwood discussion of Server Components. And I tried to check out Remix Server Components proof of concept, but it doesn't look like there are very many details there at all yet. That, you know, proof of concept tweet from Ryan Florence is just a, you know, it's just Lighthouse, like, cool, okay. I guess it works well, but what, like, what does it look like? +[04:59] **Carl Vitullo:** Yeah, definitely a lot of motion. I hadn't seen the Redwood discussion of Server Components. And I tried to check out Remix Server Components proof of concept, but it doesn't look like there are very many details there at all yet. That, you know, proof of concept tweet from Ryan Florence is just a, you know, it's just Lighthouse, like, cool, okay. I guess it works well, but what, like, what does it look like? -[00:05:22] **Sebastien Lorber:** There is actually a few links that you can find on on GitHub with repositories where the, the implementation is being worked on. So you can follow this on on GitHub. I don't think it's Ryan Florence for working on it, I think it's Jacob Parish or something like that, that is working on on this implementation. +[05:22] **Sebastien Lorber:** There is actually a few links that you can find on on GitHub with repositories where the, the implementation is being worked on. So you can follow this on on GitHub. I don't think it's Ryan Florence for working on it, I think it's Jacob Parish or something like that, that is working on on this implementation. -[00:05:40] **Carl Vitullo:** Yeah, I guess that makes sense. If you're trying to follow along the implementation, tracking the GitHub directly is where, where that actually happens. +[05:40] **Carl Vitullo:** Yeah, I guess that makes sense. If you're trying to follow along the implementation, tracking the GitHub directly is where, where that actually happens. -[00:05:46] Yeah. More, more drama, more resources, more details trickling out. Server Components are definitely still actively evolving and I guess they probably will be for a while still. +[05:46] Yeah. More, more drama, more resources, more details trickling out. Server Components are definitely still actively evolving and I guess they probably will be for a while still. -[00:05:57] **Mark Erikson:** We'll get to that part when we circle back around. +[05:57] **Mark Erikson:** We'll get to that part when we circle back around. -[00:06:01] **Carl Vitullo:** Yeah. Cool. Yeah, I hadn't seen the React Server Components from scratch. +[06:01] **Carl Vitullo:** Yeah. Cool. Yeah, I hadn't seen the React Server Components from scratch. -[00:06:05] That's a, that's a really good resource. That reminds me of Dan Abram's talk. What was it? React in an alternate dimension. Looking at IE6, so definitely feels like he's trying to anchor the React Server Components conversation, sort of going back to fundamentals, like not chasing trends, not sort of saying like, "here's where the path has evolved. Here's the current state," but saying, "let's look back at what web development used to be. Let's look at what it is right now. Let's try and find a, not just a local maximum, but maybe a, you know, universal maximum." +[06:05] That's a, that's a really good resource. That reminds me of Dan Abram's talk. What was it? React in an alternate dimension. Looking at IE6, so definitely feels like he's trying to anchor the React Server Components conversation, sort of going back to fundamentals, like not chasing trends, not sort of saying like, "here's where the path has evolved. Here's the current state," but saying, "let's look back at what web development used to be. Let's look at what it is right now. Let's try and find a, not just a local maximum, but maybe a, you know, universal maximum." -[00:06:38] I guess I appreciate that framing a lot. It's nice to not just be reactive and see this is what people have been doing recently, this is how the community and ecosystem are evolving, but really trying to go back and say, "okay, this is what we're trying to build. How does that make sense in the current moment, and how does it make sense in previous moments as well?" +[06:38] I guess I appreciate that framing a lot. It's nice to not just be reactive and see this is what people have been doing recently, this is how the community and ecosystem are evolving, but really trying to go back and say, "okay, this is what we're trying to build. How does that make sense in the current moment, and how does it make sense in previous moments as well?" -[00:06:59] So I I, I like that. You know, I, I've said that I defer a lot to the React core team because they have not let me down to the past, and I like that. I think that's a good framing and I feel pretty good about the direction that that suggests to me. +[06:59] So I I, I like that. You know, I, I've said that I defer a lot to the React core team because they have not let me down to the past, and I like that. I think that's a good framing and I feel pretty good about the direction that that suggests to me. -[00:07:14] **Mark Erikson:** Dan's teaching style has always been very much from first principles, like first I will explain the concepts and why they matter and how we arrived at them, and then I will explain the technical details. +[07:14] **Mark Erikson:** Dan's teaching style has always been very much from first principles, like first I will explain the concepts and why they matter and how we arrived at them, and then I will explain the technical details. -[00:07:27] You can see that in the original Redux tutorials, you can see that in the rewritten React Dev website. And so, yeah, like I'm, I'm just now finally skimming that Server Components from Scratch article, and I can, I can definitely see that same mindset at work, which is good. Like I, I've always found it's useful to explain a problem and then explain the solution to the problem now that you understand why it's there. +[07:27] You can see that in the original Redux tutorials, you can see that in the rewritten React Dev website. And so, yeah, like I'm, I'm just now finally skimming that Server Components from Scratch article, and I can, I can definitely see that same mindset at work, which is good. Like I, I've always found it's useful to explain a problem and then explain the solution to the problem now that you understand why it's there. -[00:07:52] And I, I think this is a really good post. +[07:52] And I, I think this is a really good post. -[00:07:54] **Carl Vitullo:** Sebastian, you wanna take us off? +[07:54] **Carl Vitullo:** Sebastian, you wanna take us off? # Skew Protection on Vercel - [Vercel - Introducing Skew Protection](https://vercel.com/blog/version-skew-protection) -[00:07:56] **Sebastien Lorber:** Yeah, I wanted to talk about something Vercel released recently. They called it Skew Protection. And I found it interesting because somehow it solves a problem that I had in the past. Where you deploy your new version of your software and then when someone loads a, a website in the browser, they don't always refresh the page, so they, they may have a stale client app locally, and you deploy a new server version, and then there is a mismatch between the server and the client. And somehow Vercel released something recently that permits to, to mitigate this problem. +[07:56] **Sebastien Lorber:** Yeah, I wanted to talk about something Vercel released recently. They called it Skew Protection. And I found it interesting because somehow it solves a problem that I had in the past. Where you deploy your new version of your software and then when someone loads a, a website in the browser, they don't always refresh the page, so they, they may have a stale client app locally, and you deploy a new server version, and then there is a mismatch between the server and the client. And somehow Vercel released something recently that permits to, to mitigate this problem. -[00:08:33] So the idea is that if you have a still client running locally, it'll try to use the server code that match that, that client version. And they can do that because they do some routing on on their infrastructure based on HTTP headers. So the idea is that if you do a breaking change during a deployment, it might not generate errors and they just added this to the last NextJS version. So you can just add the flag to the config and this will be enabled by default. +[08:33] So the idea is that if you have a still client running locally, it'll try to use the server code that match that, that client version. And they can do that because they do some routing on on their infrastructure based on HTTP headers. So the idea is that if you do a breaking change during a deployment, it might not generate errors and they just added this to the last NextJS version. So you can just add the flag to the config and this will be enabled by default. -[00:09:07] **Carl Vitullo:** Skew protection. Definitely interesting. Definitely a problem I have run into in my career. This has been a problem I've especially noticed on Netlify because they only serve the assets for the most recent deploy. +[09:07] **Carl Vitullo:** Skew protection. Definitely interesting. Definitely a problem I have run into in my career. This has been a problem I've especially noticed on Netlify because they only serve the assets for the most recent deploy. -[00:09:19] So how I've seen this present is somebody keeps a tab open. You know, the app we have shipped is split into multiple bundles. So then they, they can click around, they can keep navigating within the app for all of the JavaScript they've already loaded. But then they try to go to a new page. It goes to fetch the bundle, the bundle 404s, and then something breaks catastrophically. +[09:19] So how I've seen this present is somebody keeps a tab open. You know, the app we have shipped is split into multiple bundles. So then they, they can click around, they can keep navigating within the app for all of the JavaScript they've already loaded. But then they try to go to a new page. It goes to fetch the bundle, the bundle 404s, and then something breaks catastrophically. -[00:09:41] So how we fixed that on teams I've been on in the past was we set up a 404 javaScript bundle that would just do, you know, browser reload, which it worked. It's fine. It's a little janky. That's led to situations where like if we have state that somebody's entered into text inputs or whatever, that gets lost. +[09:41] So how we fixed that on teams I've been on in the past was we set up a 404 javaScript bundle that would just do, you know, browser reload, which it worked. It's fine. It's a little janky. That's led to situations where like if we have state that somebody's entered into text inputs or whatever, that gets lost. -[00:10:00] So happy to see a more graceful implementation here. +[10:00] So happy to see a more graceful implementation here. -[00:10:04] **Sebastien Lorber:** Yeah, what is nice, some of our examples just showed the case where you call an api, like you submit a form or something like that, and there is a mismatch between the payload and the, the serverless function. But apparently it also works with the static assets. +[10:04] **Sebastien Lorber:** Yeah, what is nice, some of our examples just showed the case where you call an api, like you submit a form or something like that, and there is a mismatch between the payload and the, the serverless function. But apparently it also works with the static assets. -[00:10:19] So if you have a code split app with a prefetching and basic code loading, you should be able to to, to fetch the appropriate bundle to the appropriate immutable deployment. And if you keep your tab open you have like 24 hours of transition, so that you can still access the older deployments. +[10:19] So if you have a code split app with a prefetching and basic code loading, you should be able to to, to fetch the appropriate bundle to the appropriate immutable deployment. And if you keep your tab open you have like 24 hours of transition, so that you can still access the older deployments. -[00:10:39] This also present some security concerns apparently because for example, if you have a vulnerable deployment in the past this gives the ability of data here to eventually keep using it, using using HTTP header. So there's a trade off. +[10:39] This also present some security concerns apparently because for example, if you have a vulnerable deployment in the past this gives the ability of data here to eventually keep using it, using using HTTP header. So there's a trade off. -[00:10:54] **Carl Vitullo:** Huh, interesting. Okay. Yeah, a 24 hour grace period for refreshing a tab seems a lot better than nothing. +[10:54] **Carl Vitullo:** Huh, interesting. Okay. Yeah, a 24 hour grace period for refreshing a tab seems a lot better than nothing. -[00:11:02] I had always wondered why this wasn't a problem that was solved at the level of the hosting provider, because, you know, it, to me it looked like kind of a bug. You know, I, okay, yes, immutable deployments, but like, it's not that those old assets don't exist anymore, it's just they're not the freshest. +[11:02] I had always wondered why this wasn't a problem that was solved at the level of the hosting provider, because, you know, it, to me it looked like kind of a bug. You know, I, okay, yes, immutable deployments, but like, it's not that those old assets don't exist anymore, it's just they're not the freshest. -[00:11:17] So, you know, when I, when I've controlled a server in the past, like I only cleaned up old artifacts every now and again. So, yeah. Interesting though. Cool to see a hosting provider bring it. +[11:17] So, you know, when I, when I've controlled a server in the past, like I only cleaned up old artifacts every now and again. So, yeah. Interesting though. Cool to see a hosting provider bring it. -[00:11:28] **Sebastien Lorber:** If you use Netlify for example, there was a way to, to mitigate vita this as well. For example, you could use the net cash and you can keep the previous static deployments in your cash and then merge them with the new deployments so that you get, somehow you keep the old assets and then add the new assets to provide the old assets. And then both remain accessible. So this is not ideal, but at least it was a, a solution. +[11:28] **Sebastien Lorber:** If you use Netlify for example, there was a way to, to mitigate vita this as well. For example, you could use the net cash and you can keep the previous static deployments in your cash and then merge them with the new deployments so that you get, somehow you keep the old assets and then add the new assets to provide the old assets. And then both remain accessible. So this is not ideal, but at least it was a, a solution. -[00:11:57] The problem is that you sometimes had to clean up the deployment because it's it would keep growing forever if you don't do the cleanup someday. +[11:57] The problem is that you sometimes had to clean up the deployment because it's it would keep growing forever if you don't do the cleanup someday. -[00:12:05] **Carl Vitullo:** Never want unbounded growth. Cool. Well, I'll take us on. +[12:05] **Carl Vitullo:** Never want unbounded growth. Cool. Well, I'll take us on. # React Native 0.72 - [React Native 0.72 - Symlink Support, Better Errors, and more](https://reactnative.dev/blog/2023/06/21/0.72-metro-package-exports-symlinks) - [Fabric Renderer](https://reactnative.dev/architecture/fabric-renderer) -[00:12:09] **Carl Vitullo:** So React native had a new big version put out, version 0.72. The highlights were symlink support in Metro, better errors and developer experience, and some more. It looked like a lot of the "more" is sort of finer points related to. A new architecture. They, you know, they had New Architecture in title case all over this post. +[12:09] **Carl Vitullo:** So React native had a new big version put out, version 0.72. The highlights were symlink support in Metro, better errors and developer experience, and some more. It looked like a lot of the "more" is sort of finer points related to. A new architecture. They, you know, they had New Architecture in title case all over this post. -[00:12:35] So it looks like this relates to the new architecture and React Native, Fabric, which I guess is a new renderer, new core technology for how the apps get put on the phone. +[12:35] So it looks like this relates to the new architecture and React Native, Fabric, which I guess is a new renderer, new core technology for how the apps get put on the phone. -[00:12:48] **Sebastien Lorber:** Fabric is a new renderer for the new architecture. There are multiple pieces to the new architecture and Fabric is the, is the new renderer. +[12:48] **Sebastien Lorber:** Fabric is a new renderer for the new architecture. There are multiple pieces to the new architecture and Fabric is the, is the new renderer. -[00:12:57] **Carl Vitullo:** Okay. Yeah, so, you know, my, my reading of this news here, they have a new interop layer that makes that new architecture more usable for, a wider range of people who are on older versions of React Native. I saw that it's, you know, they're intentionally not doing a hundred percent coverage right now, just focusing on common issues. Common compatibility. Yeah. Cool. Awesome to see it get better developer experience because that's always been my largest pain point when trying to use +[12:57] **Carl Vitullo:** Okay. Yeah, so, you know, my, my reading of this news here, they have a new interop layer that makes that new architecture more usable for, a wider range of people who are on older versions of React Native. I saw that it's, you know, they're intentionally not doing a hundred percent coverage right now, just focusing on common issues. Common compatibility. Yeah. Cool. Awesome to see it get better developer experience because that's always been my largest pain point when trying to use -[00:13:25] **Sebastien Lorber:** it. And also the, the new metro features will be super useful. For example, the symlink support was requested for years. I think it's maybe the oldest issue in React Native. +[13:25] **Sebastien Lorber:** it. And also the, the new metro features will be super useful. For example, the symlink support was requested for years. I think it's maybe the oldest issue in React Native. -[00:13:37] So we are happy to, to finally have the ability to, to use a manual report without having to, to plug any extra config to make it work. +[13:37] So we are happy to, to finally have the ability to, to use a manual report without having to, to plug any extra config to make it work. -[00:13:47] **Carl Vitullo:** Yeah. Very nice. Very nice. Yeah, and I see some other little smaller developer experience changes, like not failing on style errors. If you give it a bad style prop, it doesn't blow up anymore, so that's nice. +[13:47] **Carl Vitullo:** Yeah. Very nice. Very nice. Yeah, and I see some other little smaller developer experience changes, like not failing on style errors. If you give it a bad style prop, it doesn't blow up anymore, so that's nice. -[00:13:58] You know, low priority errors not interrupting your workflow is always good. +[13:58] You know, low priority errors not interrupting your workflow is always good. # Social Dimension of React Server Components @@ -140,252 +140,252 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_), [Mark Erikson](https://twit - [React-Query trying to add “use client” and struggling](https://twitter.com/TkDodo/status/1673401744087195657) - [Seb describes the `”react-server”` export condition](https://twitter.com/sebmarkbage/status/1673419412144025604)\*\* -[00:14:02] **Mark Erikson:** Okay, Carl, please prepare to begin pasting and links for this one. +[14:02] **Mark Erikson:** Okay, Carl, please prepare to begin pasting and links for this one. -[00:14:06] **Carl Vitullo:** Uh oh. Uh oh! +[14:06] **Carl Vitullo:** Uh oh. Uh oh! -[00:14:08] **Mark Erikson:** Okay, so a minute ago we talked about the kind of the technical news around React Server Components, and then there's the social aspect, which is that there is still a ton of confusion and concern in actual real, no kidding pain points around the rollout of Server Components. +[14:08] **Mark Erikson:** Okay, so a minute ago we talked about the kind of the technical news around React Server Components, and then there's the social aspect, which is that there is still a ton of confusion and concern in actual real, no kidding pain points around the rollout of Server Components. -[00:14:30] The behavior of next. React's versioning and how existing libraries in the ecosystem are supposed to inter-op with all this stuff. , I've, I've been collecting a whole bunch of links and I've actually been forwarding a lot of these over to members of the React team to give them an indication of, "look, these are all the problems people are experiencing, or at least feeling right now. You need to be aware of these so that you can figure out how to actually like, improve the marketing, improve the docs, and address the problems that people are having." +[14:30] The behavior of next. React's versioning and how existing libraries in the ecosystem are supposed to inter-op with all this stuff. , I've, I've been collecting a whole bunch of links and I've actually been forwarding a lot of these over to members of the React team to give them an indication of, "look, these are all the problems people are experiencing, or at least feeling right now. You need to be aware of these so that you can figure out how to actually like, improve the marketing, improve the docs, and address the problems that people are having." -[00:15:10] So let's, let's roll through a few of those. There was a post that came out entitled, " Is React having an AngularJS moment?" And the background on this for people who weren't around 10 years ago Angular JS 1 was very, very popular for several years, and then the Angular team announced Angular 2, which was effectively a completely different framework, but just using the same name. +[15:10] So let's, let's roll through a few of those. There was a post that came out entitled, " Is React having an AngularJS moment?" And the background on this for people who weren't around 10 years ago Angular JS 1 was very, very popular for several years, and then the Angular team announced Angular 2, which was effectively a completely different framework, but just using the same name. -[00:15:39] And the initial announcement was that there would be no migration path to go from Angular 1 to Angular 2. And this killed much of the Angular ecosystem at the time, and it coincided with React coming out. And so in 2013, 2014, a lot of teams said, well, if we're gonna have to rewrite our app anyway, let's just switch from Angular 1 to React instead. +[15:39] And the initial announcement was that there would be no migration path to go from Angular 1 to Angular 2. And this killed much of the Angular ecosystem at the time, and it coincided with React coming out. And so in 2013, 2014, a lot of teams said, well, if we're gonna have to rewrite our app anyway, let's just switch from Angular 1 to React instead. -[00:16:05] And so, a number of people have made this comparison that the rollout of Server Components is like an Angular 1 to 2 transition for React. Now, the React team has pushed back on this idea and pointed out that, you know, we're, we're not killing any of the, the existing client component capabilities. We're we're adding more functionality to React. +[16:05] And so, a number of people have made this comparison that the rollout of Server Components is like an Angular 1 to 2 transition for React. Now, the React team has pushed back on this idea and pointed out that, you know, we're, we're not killing any of the, the existing client component capabilities. We're we're adding more functionality to React. -[00:16:31] So in some very real ways. The comparison is a no, but it's also true that there is no migration path that I've seen right now to add Server Components to an existing app unless you're using Next and you start switching over to using the app router, et cetera. So there is a very real feeling of this shiny new thing is being dangled in front of us. +[16:31] So in some very real ways. The comparison is a no, but it's also true that there is no migration path that I've seen right now to add Server Components to an existing app unless you're using Next and you start switching over to using the app router, et cetera. So there is a very real feeling of this shiny new thing is being dangled in front of us. -[00:16:59] And we're being encouraged to use it, and yet many of us cannot. So there's, there's a feeling of being blocked there, even if the technical details are, are somewhat in between and hazy. So the article came out, and then there was one specific, Twitter thread, started by Joel Hooks from, from Egghead. +[16:59] And we're being encouraged to use it, and yet many of us cannot. So there's, there's a feeling of being blocked there, even if the technical details are, are somewhat in between and hazy. So the article came out, and then there was one specific, Twitter thread, started by Joel Hooks from, from Egghead. -[00:17:20] Who was discussing it. And that led to a ton of sub discussions. And I, I got involved in that thread halfway down and actually ended up having a bit of an argument with one of the React team members about, you know, things like defaults matter and, you know, there's, there's missing docs for a lot of these things. +[17:20] Who was discussing it. And that led to a ton of sub discussions. And I, I got involved in that thread halfway down and actually ended up having a bit of an argument with one of the React team members about, you know, things like defaults matter and, you know, there's, there's missing docs for a lot of these things. -[00:17:39] And a lot of other people were participating in that thread as well. And it's just an example of the kinds of, Frustrations that I'm seeing echoing throughout the entire ecosystem. So that's one side of things. +[17:39] And a lot of other people were participating in that thread as well. And it's just an example of the kinds of, Frustrations that I'm seeing echoing throughout the entire ecosystem. So that's one side of things. -[00:17:53] Another is that a recent Next pre-canary test release broke a couple libraries like Apollo client and React Query, and they reverted that particular change, but the implication and that I'm getting out of it, is that libraries that want to be able to interact with Server Components in some way, basically need to add an entire new bundle file to their packages and specify a new export condition called React Server, so that when the React server component bundler tries to load your library, it finds an extra special version of your library that has all the client code stripped out so that it's not sending extra pieces over the wire. +[17:53] Another is that a recent Next pre-canary test release broke a couple libraries like Apollo client and React Query, and they reverted that particular change, but the implication and that I'm getting out of it, is that libraries that want to be able to interact with Server Components in some way, basically need to add an entire new bundle file to their packages and specify a new export condition called React Server, so that when the React server component bundler tries to load your library, it finds an extra special version of your library that has all the client code stripped out so that it's not sending extra pieces over the wire. -[00:18:46] The problem is this means a whole lot of extra work for library maintainers like us. And while there's been some discussion about this on GitHub and Twitter, none of this is actually documented yet. +[18:46] The problem is this means a whole lot of extra work for library maintainers like us. And while there's been some discussion about this on GitHub and Twitter, none of this is actually documented yet. -[00:18:58] So Lenz Weber, who works on both Redux Toolkit and Apollo client, and myself and Dominik Dorfmeister of React Query have all expressed our frustration with, you know, the fact that our libraries are now breaking and we're being forced to do this extra work, but there isn't even documentation for it yet. So there was, there was a very long discussion thread over in the, the Apollo repo There's been discussion on Twitter. +[18:58] So Lenz Weber, who works on both Redux Toolkit and Apollo client, and myself and Dominik Dorfmeister of React Query have all expressed our frustration with, you know, the fact that our libraries are now breaking and we're being forced to do this extra work, but there isn't even documentation for it yet. So there was, there was a very long discussion thread over in the, the Apollo repo There's been discussion on Twitter. -[00:19:26] Dominik has a PR up where he is trying to add this new export condition to React Query and Sebastian Markbåge is trying to give some advice. So it's, it's, it's a very frustrating time for library maintainers as well. And then on top of that just within the last week or so, there's been a lot of discussion about versioning. +[19:26] Dominik has a PR up where he is trying to add this new export condition to React Query and Sebastian Markbåge is trying to give some advice. So it's, it's, it's a very frustrating time for library maintainers as well. And then on top of that just within the last week or so, there's been a lot of discussion about versioning. -[00:19:48] So the current stable version of React is 18.2, and it's been out for over a year, and there's no indication of when an 18.3 or even an 19.0 will come out. Well, it turns out that a lot of the functionality that Next uses in the App Router only exists in what's known as these Canary builds of React. So React has a bunch of internal feature flags. +[19:48] So the current stable version of React is 18.2, and it's been out for over a year, and there's no indication of when an 18.3 or even an 19.0 will come out. Well, it turns out that a lot of the functionality that Next uses in the App Router only exists in what's known as these Canary builds of React. So React has a bunch of internal feature flags. -[00:20:17] And they put out the stable builds, which have a lot of those feature flags turned off. There's the narrow builds or in experi in the daily experimental builds, which have many of these feature flags turned on. And so if you're using the app router next actually ignores whatever version of React you have listed in your package, J S O N. +[20:17] And they put out the stable builds, which have a lot of those feature flags turned off. There's the narrow builds or in experi in the daily experimental builds, which have many of these feature flags turned on. And so if you're using the app router next actually ignores whatever version of React you have listed in your package, J S O N. -[00:20:39] And instead they use one of these canary builds of React. That has the extra special functionality. And the problem is that right now there is no documentation whatsoever on what features are even turned on in one of these canary builds. And there's no way for a library maintainer to know, okay, well you're reporting a bug with our library, like our, our, our library, but we don't even know what version of React you're using. +[20:39] And instead they use one of these canary builds of React. That has the extra special functionality. And the problem is that right now there is no documentation whatsoever on what features are even turned on in one of these canary builds. And there's no way for a library maintainer to know, okay, well you're reporting a bug with our library, like our, our, our library, but we don't even know what version of React you're using. -[00:21:09] And, and or we don't know what features we should expect to be available in React when you're using like next in the app router. So there's both frustration from maintainers where we don't know, like the React team isn't documenting, here's what's available for you to use. What are the stability of these APIs? +[21:09] And, and or we don't know what features we should expect to be available in React when you're using like next in the app router. So there's both frustration from maintainers where we don't know, like the React team isn't documenting, here's what's available for you to use. What are the stability of these APIs? -[00:21:30] What, what canaries have, what features turned on? And then there's also an argument about (exhale) React wants to be able to try out these new features. A lot of these features are expected to be used by frameworks like Next and Remix. And so the framework can kind of like add a layer of protection on top of those. +[21:30] What, what canaries have, what features turned on? And then there's also an argument about (exhale) React wants to be able to try out these new features. A lot of these features are expected to be used by frameworks like Next and Remix. And so the framework can kind of like add a layer of protection on top of those. -[00:21:52] And even if the features aren't a hundred percent done and they change a little bit over time, the framework can put in effort. To keep them from breaking users applications, but what does that mean in terms of semantic versioning and publishing the libraries? So there was, there was a lot of debate about what is the right way for React to put out these features so people can try them out versus semantic versioning versus framework usage. +[21:52] And even if the features aren't a hundred percent done and they change a little bit over time, the framework can put in effort. To keep them from breaking users applications, but what does that mean in terms of semantic versioning and publishing the libraries? So there was, there was a lot of debate about what is the right way for React to put out these features so people can try them out versus semantic versioning versus framework usage. -[00:22:22] So it's, it's all very, very confusing right now. I will say that I've, in addition to all the public debate, I've, I've had some messages on the side with some React, some, some kinda like non-public React team members who are explicitly intending to work on core documentation for Server Components and wanting to work on. +[22:22] So it's, it's all very, very confusing right now. I will say that I've, in addition to all the public debate, I've, I've had some messages on the side with some React, some, some kinda like non-public React team members who are explicitly intending to work on core documentation for Server Components and wanting to work on. -[00:22:46] How to docu, like how do we document these canary builds? Can we do something similar to like the TC 39 stages process where we say, you know, we've got these 15 features. Some of them are just an idea. Some of them we have a proof of concept. Some of them are already ready to go and hopefully be able to like apply that as like a, a matrix or a table or something to all the different canary builds maybe. +[22:46] How to docu, like how do we document these canary builds? Can we do something similar to like the TC 39 stages process where we say, you know, we've got these 15 features. Some of them are just an idea. Some of them we have a proof of concept. Some of them are already ready to go and hopefully be able to like apply that as like a, a matrix or a table or something to all the different canary builds maybe. -[00:23:12] But Right. As of right now, none of that information exists, and it's very frustrating. +[23:12] But Right. As of right now, none of that information exists, and it's very frustrating. -[00:23:17] **Carl Vitullo:** Yeah. Right. And I, I think another aspect that you didn't even mention in all of that (laughter) is that like, it's already so hard to publish a library correctly because the ES module ecosystem has been such a nightmare. +[23:17] **Carl Vitullo:** Yeah. Right. And I, I think another aspect that you didn't even mention in all of that (laughter) is that like, it's already so hard to publish a library correctly because the ES module ecosystem has been such a nightmare. -[00:23:33] **Mark Erikson:** Oh, don't even get me started. +[23:33] **Mark Erikson:** Oh, don't even get me started. -[00:23:36] I, I was flying back from React Summit a couple weeks ago. I've been threatening to write a blog post for the last few months about, look, I've been suffering through trying to convert the Redux libraries to e sm. I'm finally going to write, I'm going at some point, I'm going to write down all the stuff I've learned and tried and bang my head against. +[23:36] I, I was flying back from React Summit a couple weeks ago. I've been threatening to write a blog post for the last few months about, look, I've been suffering through trying to convert the Redux libraries to e sm. I'm finally going to write, I'm going at some point, I'm going to write down all the stuff I've learned and tried and bang my head against. -[00:23:53] So I wrote half the blog post on the flight back. It's 4,000 words long, and I still need to sit down and write the other half of that. And I even had the redwood folks ping me and say, Hey, you've, you know, stuff, something about this e sm transition, right? Can you help us? I'm like, I'm not sure that I'm the person to help with this. +[23:53] So I wrote half the blog post on the flight back. It's 4,000 words long, and I still need to sit down and write the other half of that. And I even had the redwood folks ping me and say, Hey, you've, you know, stuff, something about this e sm transition, right? Can you help us? I'm like, I'm not sure that I'm the person to help with this. -[00:24:13] **Carl Vitullo:** You're the expert, Mark. +[24:13] **Carl Vitullo:** You're the expert, Mark. -[00:24:14] **Mark Erikson:** No-oooo. +[24:14] **Mark Erikson:** No-oooo. -[00:24:16] **Carl Vitullo:** (laughter) yeah. So I mean, it's already. Very difficult because the ecosystem ha is still reeling from the effects of the last major, you know, bifurcation of package authoring. I guess connecting this back to what I was talking about earlier with the StackOverflow and representation of React as a, you know, portion of the overall tech world and you know, it's something, it's like 60% of respondents are using React or something like that. So like the tech world is enormous. React's influence on it is enormous. The ES modules nightmare is still not over. +[24:16] **Carl Vitullo:** (laughter) yeah. So I mean, it's already. Very difficult because the ecosystem ha is still reeling from the effects of the last major, you know, bifurcation of package authoring. I guess connecting this back to what I was talking about earlier with the StackOverflow and representation of React as a, you know, portion of the overall tech world and you know, it's something, it's like 60% of respondents are using React or something like that. So like the tech world is enormous. React's influence on it is enormous. The ES modules nightmare is still not over. -[00:24:54] **Mark Erikson:** Oh, it's still going on, trust me. +[24:54] **Mark Erikson:** Oh, it's still going on, trust me. -[00:24:56] **Carl Vitullo:** Well, you know, Mark, maybe you can end it finally at long last by finishing your 8,000 word blog post about how to, how to integrate it correctly. +[24:56] **Carl Vitullo:** Well, you know, Mark, maybe you can end it finally at long last by finishing your 8,000 word blog post about how to, how to integrate it correctly. -[00:25:04] **Mark Erikson:** (ironic laughter) +[25:04] **Mark Erikson:** (ironic laughter) -[00:25:06] **Carl Vitullo:** (real laughter) But yeah, so, I really feel like your, your frustrations here around trying to be a library author, dealing with this transition gracefully and correctly, and feeling like there's no good, like, like there is no way to do so, like, it's an impossible path. Yeah. That's, that feels very real. +[25:06] **Carl Vitullo:** (real laughter) But yeah, so, I really feel like your, your frustrations here around trying to be a library author, dealing with this transition gracefully and correctly, and feeling like there's no good, like, like there is no way to do so, like, it's an impossible path. Yeah. That's, that feels very real. -[00:25:25] **Sebastien Lorber:** I, I don't think it's bad for Vercel and NextJS to use the canary version, but the problem is, maybe it's just a documentation problem, I, I mean, it's a good way for them to, to have a quick feedback loop and have some adoption somehow. +[25:25] **Sebastien Lorber:** I, I don't think it's bad for Vercel and NextJS to use the canary version, but the problem is, maybe it's just a documentation problem, I, I mean, it's a good way for them to, to have a quick feedback loop and have some adoption somehow. -[00:25:40] It reminds me of what we had with Docusaurus too, you know, that it took a long time to release. And the fact that the community adopted the alpha versions gave a lot of feedback because we had a lot of download on, on this version, and many used it in production, including Redux, I think. +[25:40] It reminds me of what we had with Docusaurus too, you know, that it took a long time to release. And the fact that the community adopted the alpha versions gave a lot of feedback because we had a lot of download on, on this version, and many used it in production, including Redux, I think. -[00:25:59] I know that it produced some pain because we did some breaking changes, but at the same time it provided a ton of feedback, that permitted to refine things. There's a trade off for the NextJS team to, to find between being stuck, not being able to reiterate fast because their software has come somehow, too related to, to React new features to evolve independently. So they need to iterate on, on both of them at the same time. +[25:59] I know that it produced some pain because we did some breaking changes, but at the same time it provided a ton of feedback, that permitted to refine things. There's a trade off for the NextJS team to, to find between being stuck, not being able to reiterate fast because their software has come somehow, too related to, to React new features to evolve independently. So they need to iterate on, on both of them at the same time. -[00:26:25] And. If they do that, then the community is a bit confused because the two versions are related and not everything is properly documented on the React side. And if they don't do that, they will be much slower. For example if they need a, a React core feature in to, to do something in NextJS. +[26:25] And. If they do that, then the community is a bit confused because the two versions are related and not everything is properly documented on the React side. And if they don't do that, they will be much slower. For example if they need a, a React core feature in to, to do something in NextJS. -[00:26:47] This may mean that we need a new version of React and Uneven NextJS can use it and uneven we can get feedback because the community is using the new version of NextJS That is using the new version of React. It's a much longer feedback loop, and it's not good for the community to take, to have things, being slower. So, I mean, if it's a bit more painful in the short term, I think it's better to, to have this quick, , feedback loop somehow. +[26:47] This may mean that we need a new version of React and Uneven NextJS can use it and uneven we can get feedback because the community is using the new version of NextJS That is using the new version of React. It's a much longer feedback loop, and it's not good for the community to take, to have things, being slower. So, I mean, if it's a bit more painful in the short term, I think it's better to, to have this quick, , feedback loop somehow. -[00:27:16] **Mark Erikson:** No, I definitely agree with that. I'm like, as a library author, I'm very sympathetic to, like, I've made changes I want people to try it out and, and actually give us feedback. I, I wish we got feedback for the Redux office in beta. But the, the fact that there is no documentation on what any of these, like what these new features are and which Canary build actually have certain features turned on is, is very frustrating. +[27:16] **Mark Erikson:** No, I definitely agree with that. I'm like, as a library author, I'm very sympathetic to, like, I've made changes I want people to try it out and, and actually give us feedback. I, I wish we got feedback for the Redux office in beta. But the, the fact that there is no documentation on what any of these, like what these new features are and which Canary build actually have certain features turned on is, is very frustrating. -[00:27:44] **Carl Vitullo:** You know, like, okay, bundling a library is difficult. Publishing it correctly so it can be consumed is difficult. It seems very frustrating, but it does make sense to me that like the documentation for that, It's not stable yet. +[27:44] **Carl Vitullo:** You know, like, okay, bundling a library is difficult. Publishing it correctly so it can be consumed is difficult. It seems very frustrating, but it does make sense to me that like the documentation for that, It's not stable yet. -[00:27:56] **Mark Erikson:** Nonexistent is the problem. +[27:56] **Mark Erikson:** Nonexistent is the problem. -[00:27:59] **Carl Vitullo:** It's not surprising to me that the documentation for that bundling and publishing concern is not existent. It's confusing to me that the, that there is no documentation for what feature flags are enabled in a specific canary release. Like that seems like a very routine part of publishing a canary package. Like if you can't, if you don't know what's in it, how can you give feedback about it? +[27:59] **Carl Vitullo:** It's not surprising to me that the documentation for that bundling and publishing concern is not existent. It's confusing to me that the, that there is no documentation for what feature flags are enabled in a specific canary release. Like that seems like a very routine part of publishing a canary package. Like if you can't, if you don't know what's in it, how can you give feedback about it? -[00:28:20] So, I guess that suggests to me that they, that there's a pretty heavy reliance on like, backchannel communications. And so, you know, the, the 10 people who participated in creating this canary release, they already know what's in it, so they don't need the documentation. +[28:20] So, I guess that suggests to me that they, that there's a pretty heavy reliance on like, backchannel communications. And so, you know, the, the 10 people who participated in creating this canary release, they already know what's in it, so they don't need the documentation. -[00:28:34] And so it feels like that's who the audience for these canary releases are. The people who are already in the room. +[28:34] And so it feels like that's who the audience for these canary releases are. The people who are already in the room. -[00:28:40] **Sebastien Lorber:** When you say feature flags, do you have a particular feature in mind that could be activated in the canary? +[28:40] **Sebastien Lorber:** When you say feature flags, do you have a particular feature in mind that could be activated in the canary? -[00:28:47] **Mark Erikson:** Well, oh yeah. Like, like the, the `use` hook. +[28:47] **Mark Erikson:** Well, oh yeah. Like, like the, the `use` hook. -[00:28:50] You know, the, the React team published this RFC about this new use hook that's supposed to let you unwrap promises like a year ago. And the use hook then, or the use RFC mentions an upcoming cache or an upcoming RFC for some kind of cache component or API and says more details will come later. And the use RFC discussion, 95% of it was, well, people don't like the name, slash what kind of value are you allowed to pass to this either now or in the future? +[28:50] You know, the, the React team published this RFC about this new use hook that's supposed to let you unwrap promises like a year ago. And the use hook then, or the use RFC mentions an upcoming cache or an upcoming RFC for some kind of cache component or API and says more details will come later. And the use RFC discussion, 95% of it was, well, people don't like the name, slash what kind of value are you allowed to pass to this either now or in the future? -[00:29:22] And it went silent. And so as library maintainers who would like to integrate with suspense? Our assumption was, well, nothing is happening with this RFC at all. And then Next comes out with this in the app directory, and they, and suddenly they're telling us that, oh yeah, the use hook is ready to go. You like we either we use it internally or you can do something with it Next. And something something. +[29:22] And it went silent. And so as library maintainers who would like to integrate with suspense? Our assumption was, well, nothing is happening with this RFC at all. And then Next comes out with this in the app directory, and they, and suddenly they're telling us that, oh yeah, the use hook is ready to go. You like we either we use it internally or you can do something with it Next. And something something. -[00:29:45] And we're like, wait, what you're, you're telling us that's usable? What about the cash thing? That never materialized. And, and so like we, we just have no idea where things even stand with that stuff. +[29:45] And we're like, wait, what you're, you're telling us that's usable? What about the cash thing? That never materialized. And, and so like we, we just have no idea where things even stand with that stuff. -[00:29:58] **Sebastien Lorber:** I understand that at, at the same time, somehow the, the hook is not documented in NextJS also, as far as I remember. +[29:58] **Sebastien Lorber:** I understand that at, at the same time, somehow the, the hook is not documented in NextJS also, as far as I remember. -[00:30:06] For the end user, they are not supposed to, to even use it. So the end user, the app developer shouldn't care about if the feature is enabled on the direct canary flag or not, because, this is used only internally. So the problem is more that you as a library author, can't try the new things because they are not documented. +[30:06] For the end user, they are not supposed to, to even use it. So the end user, the app developer shouldn't care about if the feature is enabled on the direct canary flag or not, because, this is used only internally. So the problem is more that you as a library author, can't try the new things because they are not documented. -[00:30:29] But I, I don't think it's a problem for the majority of users. It's more like that, you can't start working on, on the new cutting edge things now because you are, you don't have the same back channel with the React team. So, I, I see some auto, two different problems. It's one for framework authors and library authors, and another for the end user. +[30:29] But I, I don't think it's a problem for the majority of users. It's more like that, you can't start working on, on the new cutting edge things now because you are, you don't have the same back channel with the React team. So, I, I see some auto, two different problems. It's one for framework authors and library authors, and another for the end user. -[00:30:52] I don't think adopting NextJS With Canary release for the end user is a big deal today, apart that there are a lot of bugs that are reported, but they will be fixed. But the, I don't think the end user need to know much about all these new things that are not documented. +[30:52] I don't think adopting NextJS With Canary release for the end user is a big deal today, apart that there are a lot of bugs that are reported, but they will be fixed. But the, I don't think the end user need to know much about all these new things that are not documented. -[00:31:10] **Mark Erikson:** Yeah. The, the flip side is that we, we do see a lot of our, our users asking like, you know, can I use Apollo React query, RTK query with suspense? +[31:10] **Mark Erikson:** Yeah. The, the flip side is that we, we do see a lot of our, our users asking like, you know, can I use Apollo React query, RTK query with suspense? -[00:31:22] And there's clearly a lot of interest in doing that, and we really don't have an answer for how you can do that yet. +[31:22] And there's clearly a lot of interest in doing that, and we really don't have an answer for how you can do that yet. -[00:31:29] **Carl Vitullo:** I have one more thing I wanna pull in. Sebastian posted a very short little Twitter thread. I'll just read some snippets from it. +[31:29] **Carl Vitullo:** I have one more thing I wanna pull in. Sebastian posted a very short little Twitter thread. I'll just read some snippets from it. - [Sebastian Markbåge, "Who owns the direction?"](https://twitter.com/sebmarkbage/status/1673767392369844236) -[00:31:36] "When a community of consumers grow large enough, it's interesting what happens with ownership. I think there's an argument to be made. It's that at some point the community bought into something and you can't change that from underneath them. They own what they bought into. From that perspective, if we as maintainers want to go a different direction, we should have given it a different brand, even if it's backwards compatible." +[31:36] "When a community of consumers grow large enough, it's interesting what happens with ownership. I think there's an argument to be made. It's that at some point the community bought into something and you can't change that from underneath them. They own what they bought into. From that perspective, if we as maintainers want to go a different direction, we should have given it a different brand, even if it's backwards compatible." -[00:31:53] I think that's very directly talking about all of this React Server Components drama and positioning, he posted those yesterday, about 24 hours ago. I, I'm looking forward to seeing where that may have echoes on. How the React Core team is thinking about React Server Components. +[31:53] I think that's very directly talking about all of this React Server Components drama and positioning, he posted those yesterday, about 24 hours ago. I, I'm looking forward to seeing where that may have echoes on. How the React Core team is thinking about React Server Components. -[00:32:13] And tying it back to, you know, where we started on this with comparisons to Angular 2. Like, okay, maybe this is not an Angular 2 moment for React, it is fundamentally backwards compatible, they are engaging with, you know, maybe not engaging perfectly, but they are making good faith efforts to include stakeholders in the conversation. Yada, yada. But I think this is maybe an early signal of a change in approach and yeah. Interesting to see how that shakes out. +[32:13] And tying it back to, you know, where we started on this with comparisons to Angular 2. Like, okay, maybe this is not an Angular 2 moment for React, it is fundamentally backwards compatible, they are engaging with, you know, maybe not engaging perfectly, but they are making good faith efforts to include stakeholders in the conversation. Yada, yada. But I think this is maybe an early signal of a change in approach and yeah. Interesting to see how that shakes out. -[00:32:41] Okay, now we can move on. We've beaten it fully into the ground. Sebastian, you wanna introduce our next link? +[32:41] Okay, now we can move on. We've beaten it fully into the ground. Sebastian, you wanna introduce our next link? -[00:32:47] **Sebastien Lorber:** Yeah, it's a quick one. I, I noticed that we are both on the jury of, , React Jam, so I didn't know, but, , that was a happy surprise. +[32:47] **Sebastien Lorber:** Yeah, it's a quick one. I, I noticed that we are both on the jury of, , React Jam, so I didn't know, but, , that was a happy surprise. -[00:32:57] So this is a contest where you create a game with React. And I think it it'll be nice if the Reactiflux community wants to participate. So we'll be happy to review your React games in I think next month maybe. +[32:57] So this is a contest where you create a game with React. And I think it it'll be nice if the Reactiflux community wants to participate. So we'll be happy to review your React games in I think next month maybe. -[00:33:13] **Carl Vitullo:** That's a good call out. Sebastian and I are both judges for a hackathon around developing games using React and web technologies. +[33:13] **Carl Vitullo:** That's a good call out. Sebastian and I are both judges for a hackathon around developing games using React and web technologies. -[00:33:22] I think it's happening on July 20th through 30th, so it's 10 days long. As judges we will be given the, you know, I think it's gonna be 10 candidates and then we grade them. I'm excited for it. I think it'll be fun. We've done a couple of Office Hours and interest in video games has been a very common theme on what got people interested in programming. +[33:22] I think it's happening on July 20th through 30th, so it's 10 days long. As judges we will be given the, you know, I think it's gonna be 10 candidates and then we grade them. I'm excited for it. I think it'll be fun. We've done a couple of Office Hours and interest in video games has been a very common theme on what got people interested in programming. -[00:33:43] So if that's you, if you are interested in developing games yeah check out React Jam and maybe you'll have me and Sebastian play your game. +[33:43] So if that's you, if you are interested in developing games yeah check out React Jam and maybe you'll have me and Sebastian play your game. -[00:33:52] **Sebastien Lorber:** Yeah. (chuckles) +[33:52] **Sebastien Lorber:** Yeah. (chuckles) -[00:33:53] **Carl Vitullo:** Cool. My, my next link here, just a kind of small update. We talk a lot about Next and I feel like Remix maybe gets a little bit short shrift, but I see that they've got a, a new V2 development server that has some relatively large changes to the, some of the core assumptions around Remix. +[33:53] **Carl Vitullo:** Cool. My, my next link here, just a kind of small update. We talk a lot about Next and I feel like Remix maybe gets a little bit short shrift, but I see that they've got a, a new V2 development server that has some relatively large changes to the, some of the core assumptions around Remix. -[00:34:12] Most notably, it looks like this totally swaps out the semantics around routing. The big comparison that I saw, you know, front and center of this announcement was previously Remix, inferred what routes your pages were on based on the folder structure, with, you know, templates and wrappers and things like that. +[34:12] Most notably, it looks like this totally swaps out the semantics around routing. The big comparison that I saw, you know, front and center of this announcement was previously Remix, inferred what routes your pages were on based on the folder structure, with, you know, templates and wrappers and things like that. -[00:34:33] Now that is purely based on the file name. So instead of the folder hierarchy being reflected in the routes, it's Using. A different mechanism for determining conceptually what's a folder, what's what looks like a folder in the url. That's a pretty big shift. +[34:33] Now that is purely based on the file name. So instead of the folder hierarchy being reflected in the routes, it's Using. A different mechanism for determining conceptually what's a folder, what's what looks like a folder in the url. That's a pretty big shift. -[00:34:48] I am interested to see them roll this out because it is such a large change to the everyday development experience of using Remix. So yeah, and seeing like a sub component of a framework, being given a new major version is interesting to me. We just talked a lot about Server Components and the versioning and the struggles of rolling that out. +[34:48] I am interested to see them roll this out because it is such a large change to the everyday development experience of using Remix. So yeah, and seeing like a sub component of a framework, being given a new major version is interesting to me. We just talked a lot about Server Components and the versioning and the struggles of rolling that out. -[00:35:11] So here's a different example. Smaller, you know, obviously Remix is inherently a subset of React usage, so it, the, the ecosystem is inherently smaller, but yeah, interesting to see another approach to making a major revision to floor behaviors. +[35:11] So here's a different example. Smaller, you know, obviously Remix is inherently a subset of React usage, so it, the, the ecosystem is inherently smaller, but yeah, interesting to see another approach to making a major revision to floor behaviors. -[00:35:28] **Sebastien Lorber:** It's quite interesting that they have implemented future flags to enable V2 features in Remix version one. +[35:28] **Sebastien Lorber:** It's quite interesting that they have implemented future flags to enable V2 features in Remix version one. -[00:35:36] And I've also seen this this new flat routing convention that they implemented. There also great article that already tried to use this new feature about the ability to create somehow your, your own Remix routing convention. +[35:36] And I've also seen this this new flat routing convention that they implemented. There also great article that already tried to use this new feature about the ability to create somehow your, your own Remix routing convention. -[00:35:53] So the, the idea is that you can create your own convention, read the files on the file system, and then eventually create the route you want for that file system secure. And so this gives a lot of flexibility. On Docusaurus, we already have a quite similar thing. +[35:53] So the, the idea is that you can create your own convention, read the files on the file system, and then eventually create the route you want for that file system secure. And so this gives a lot of flexibility. On Docusaurus, we already have a quite similar thing. -[00:36:09] We have a concept of autogenerated sidebar. And it gives the ability also to, to create somehow a tree. And we give the, the ability to customize it. +[36:09] We have a concept of autogenerated sidebar. And it gives the ability also to, to create somehow a tree. And we give the, the ability to customize it. -[00:36:20] Also, they recently released the, the last version of Remix with dev server version two. So as far as I understand, I think the idea if I remember correctly, is that if you change code in the Remix loader, you will also have the hot reloading experience that you expect. While it was not the case before. +[36:20] Also, they recently released the, the last version of Remix with dev server version two. So as far as I understand, I think the idea if I remember correctly, is that if you change code in the Remix loader, you will also have the hot reloading experience that you expect. While it was not the case before. -[00:36:41] **Carl Vitullo:** Nice. +[36:41] **Carl Vitullo:** Nice. -[00:36:41] Before we jump into Lightning Run. So, Sebastian, do you have more links? You wanna do a full discussion on? +[36:41] Before we jump into Lightning Run. So, Sebastian, do you have more links? You wanna do a full discussion on? -[00:36:45] **Sebastien Lorber:** Yeah, I think it's worth mentioning Panda CSS. It's a new CSS-in-JS solution, , that use a static analysis to, to do many things with with no runtime. Actually, I'm not sure it's completely without any runtime. I think I read there is a very little runtime, but I'm not sure. Now today, the, the devs are like tailwind, css a lot. And there are good reasons for that because you can copy paste code easily and you can also delete code quite easily and, and things keep working. +[36:45] **Sebastien Lorber:** Yeah, I think it's worth mentioning Panda CSS. It's a new CSS-in-JS solution, , that use a static analysis to, to do many things with with no runtime. Actually, I'm not sure it's completely without any runtime. I think I read there is a very little runtime, but I'm not sure. Now today, the, the devs are like tailwind, css a lot. And there are good reasons for that because you can copy paste code easily and you can also delete code quite easily and, and things keep working. -[00:37:18] So this is a very interesting property. At the same time, Tailwind CSS get a lot of criticism for, for the very long class names. It looks a bit messy for people that don't approve to, to this way of thinking. And Panda that CSS could be a, a greater alternative to, to Tailwind. It looks quite interesting and it's from the chakra UI team. +[37:18] So this is a very interesting property. At the same time, Tailwind CSS get a lot of criticism for, for the very long class names. It looks a bit messy for people that don't approve to, to this way of thinking. And Panda that CSS could be a, a greater alternative to, to Tailwind. It looks quite interesting and it's from the chakra UI team. -[00:37:43] I think the Quik framework is also trying to adapt it because they are building integrations and making it work in Quik already. So I think it's a tool to follow and we'll see how the community adapt it. But it looks like like one of the most promising CSS-in-JS solution today. +[37:43] I think the Quik framework is also trying to adapt it because they are building integrations and making it work in Quik already. So I think it's a tool to follow and we'll see how the community adapt it. But it looks like like one of the most promising CSS-in-JS solution today. -[00:38:04] **Carl Vitullo:** Cool. Very neat. Oh, I just opened the webpage and the CSS has broken. Haha, not a ideal. Yeah. Interesting though. It's been a, it's been a minute since we've had new CSS-in-JS strategies come out, so I'll have to dive in compared to this and. See what it's introducing. +[38:04] **Carl Vitullo:** Cool. Very neat. Oh, I just opened the webpage and the CSS has broken. Haha, not a ideal. Yeah. Interesting though. It's been a, it's been a minute since we've had new CSS-in-JS strategies come out, so I'll have to dive in compared to this and. See what it's introducing. -[00:38:21] Cool. Okay. Let's go to, let's go to a lightning round. Mark, take us away. +[38:21] Cool. Okay. Let's go to, let's go to a lightning round. Mark, take us away. -[00:38:27] **Mark Erikson:** Okay. Two things real fast. One is that ever since function components came out, there were a couple things that they could not do that class components could. One of those was defining an error boundary to catch errors that are thrown while your component is rendering. +[38:27] **Mark Erikson:** Okay. Two things real fast. One is that ever since function components came out, there were a couple things that they could not do that class components could. One of those was defining an error boundary to catch errors that are thrown while your component is rendering. -[00:38:44] You still had to use class components to write one of those. There is a PR up that adds a new catch component to React that would basically eliminate the need to use class components for error boundaries. I haven't looked in detail at the api, but there is some form of early EPR up for that. +[38:44] You still had to use class components to write one of those. There is a PR up that adds a new catch component to React that would basically eliminate the need to use class components for error boundaries. I haven't looked in detail at the api, but there is some form of early EPR up for that. -[00:39:03] So hopefully we'll get that in the next meaningful release. Also, I had filed an issue a couple months ago. Saying that as good as the new React docs are, they really need to add a page on how to use TypeScript with React and Orta Therox, who's been very involved in the TypeScript website docs just put up a PR that adds that page. +[39:03] So hopefully we'll get that in the next meaningful release. Also, I had filed an issue a couple months ago. Saying that as good as the new React docs are, they really need to add a page on how to use TypeScript with React and Orta Therox, who's been very involved in the TypeScript website docs just put up a PR that adds that page. -[00:39:27] And I, I skimmed it right before this, this meeting, and it looks fantastic. So I'm, I'm very, very excited to see a React Docs page saying, here's how you use TypeScript with React. +[39:27] And I, I skimmed it right before this, this meeting, and it looks fantastic. So I'm, I'm very, very excited to see a React Docs page saying, here's how you use TypeScript with React. -[00:39:39] **Carl Vitullo:** Definitely a frustrating experience a little bit. I feel like every time I come back to it after a, a little while away, I need to find some cheat sheet to be like, wait, what am I supposed to use? What am I not supposed to use? +[39:39] **Carl Vitullo:** Definitely a frustrating experience a little bit. I feel like every time I come back to it after a, a little while away, I need to find some cheat sheet to be like, wait, what am I supposed to use? What am I not supposed to use? -[00:39:50] So I guess that segues nicely into another one, but React.FC is no longer viewed as an anti-pattern for typing React components. Nice to see that, and nice to have documentation on how to use TypeScript with React. Cool. +[39:50] So I guess that segues nicely into another one, but React.FC is no longer viewed as an anti-pattern for typing React components. Nice to see that, and nice to have documentation on how to use TypeScript with React. Cool. -[00:40:05] Sebastian got any lightning rounds? +[40:05] Sebastian got any lightning rounds? -[00:40:07] **Sebastien Lorber:** This week in the React Native ecosystem we had we saw a lot of quick demos of running the latest version of React Native on VisionOS the SDK for Vision Pro from Apple. And I found it interesting. I don't know how it works exactly, but apparently the, the React devs had fun with it, so it's already working. +[40:07] **Sebastien Lorber:** This week in the React Native ecosystem we had we saw a lot of quick demos of running the latest version of React Native on VisionOS the SDK for Vision Pro from Apple. And I found it interesting. I don't know how it works exactly, but apparently the, the React devs had fun with it, so it's already working. -[00:40:28] I know it's it's already working for, for Flutter too, so maybe it was a simple thing to do, I don't know. There are also pull requests to, to add a support for vision or in Cocoa Pods. So I guess it'll become easier to, to add support for our VisionOS in the future in React Native applications. +[40:28] I know it's it's already working for, for Flutter too, so maybe it was a simple thing to do, I don't know. There are also pull requests to, to add a support for vision or in Cocoa Pods. So I guess it'll become easier to, to add support for our VisionOS in the future in React Native applications. -[00:40:47] **Mark Erikson:** I ran across a website within the last couple weeks called the React Handbook. And I haven't even had time to go through it fully in depth, but it's, it's like an overview and guide to the React ecosystem. Common problems like state management and data fetching and it tries to give some advice on what libraries to use and how to work with things. +[40:47] **Mark Erikson:** I ran across a website within the last couple weeks called the React Handbook. And I haven't even had time to go through it fully in depth, but it's, it's like an overview and guide to the React ecosystem. Common problems like state management and data fetching and it tries to give some advice on what libraries to use and how to work with things. -[00:41:09] And I had actually tried to, to get a similar kind of ecosystem overview guide website started a couple years ago. And I, I put up a proof of concept page, had some discussion about what I wanted this site to be, but I never got other folks in the community to spend time helping fill out the content. So this React Handbook looks very similar to the kind of idea and the kind of resource that I wanted to help build for the React community. +[41:09] And I had actually tried to, to get a similar kind of ecosystem overview guide website started a couple years ago. And I, I put up a proof of concept page, had some discussion about what I wanted this site to be, but I never got other folks in the community to spend time helping fill out the content. So this React Handbook looks very similar to the kind of idea and the kind of resource that I wanted to help build for the React community. -[00:41:37] And I'm actually still supposed to talk to the primary author of this site about, you know, here's some of the ideas I had and maybe we can like, sort of join forces and help build this one out more. +[41:37] And I'm actually still supposed to talk to the primary author of this site about, you know, here's some of the ideas I had and maybe we can like, sort of join forces and help build this one out more. -[00:41:48] **Carl Vitullo:** I know it's lightning around, but that also reminds me of us of our Reactiflux learning page, which has, which you curated with a ton of resources. So yeah, looks like a good resource. +[41:48] **Carl Vitullo:** I know it's lightning around, but that also reminds me of us of our Reactiflux learning page, which has, which you curated with a ton of resources. So yeah, looks like a good resource. -[00:41:59] My next lightning round Chrome for testing, reliable downloads for browser automation. Browser automation's really tough. Puppeteer kind of sucks. Playwright I hear is better. Cypress I have used successfully, but have always run into difficult edge cases, so having a blessed browser version specifically for testing. I see this is titled Chrome for testing. Like heck yeah. That's awesome. This is possibly an absolutely enormous level up for the testing ecosystem and maybe we'll start getting real movement on problems like visual regression tests, which I've seen probably a dozen attempts at companies trying to solve that problem over my 10 years as a web developer. +[41:59] My next lightning round Chrome for testing, reliable downloads for browser automation. Browser automation's really tough. Puppeteer kind of sucks. Playwright I hear is better. Cypress I have used successfully, but have always run into difficult edge cases, so having a blessed browser version specifically for testing. I see this is titled Chrome for testing. Like heck yeah. That's awesome. This is possibly an absolutely enormous level up for the testing ecosystem and maybe we'll start getting real movement on problems like visual regression tests, which I've seen probably a dozen attempts at companies trying to solve that problem over my 10 years as a web developer. -[00:42:42] **Sebastien Lorber:** Quick link would be shadcn UI, I don't know to pronounce Shadcn, but You probably heard of this trending library recently. It released recently a new CLI that permits to bring a great developer experience on top of the React component, collection because it's not a library, it's a collection of Tailwind and Radix components. +[42:42] **Sebastien Lorber:** Quick link would be shadcn UI, I don't know to pronounce Shadcn, but You probably heard of this trending library recently. It released recently a new CLI that permits to bring a great developer experience on top of the React component, collection because it's not a library, it's a collection of Tailwind and Radix components. -[00:43:05] I was quite impressed somehow in the beginning I didn't understand really the value of this library because somehow it looks like just a registry of of code that you can copy paste. Somehow it's bringing a CLI to, to be able to update the components, eventually use artificial intelligence features to it so that you can type a prompt on the CLI and it'll update the component according to what you, you say you want to do. +[43:05] I was quite impressed somehow in the beginning I didn't understand really the value of this library because somehow it looks like just a registry of of code that you can copy paste. Somehow it's bringing a CLI to, to be able to update the components, eventually use artificial intelligence features to it so that you can type a prompt on the CLI and it'll update the component according to what you, you say you want to do. -[00:43:33] **Mark Erikson:** So at my, my, I, as I said earlier, my day job is working for Replay io and we're building a time traveling debugger for JavaScript. And we just announced something we've been building for the last six to eight months called Replay for test suites. +[43:33] **Mark Erikson:** So at my, my, I, as I said earlier, my day job is working for Replay io and we're building a time traveling debugger for JavaScript. And we just announced something we've been building for the last six to eight months called Replay for test suites. -[00:43:48] And the idea is that, You know, lots of companies have Cyrus or playwright tests. You run them in CI, but often either they flake, you know, they, they fail unpredictably 10% of the time. Or if a test fails in CI, you have no way to go debug what happened to that test. And so what we've announced is that we have the ability to change your test running setup to record all the tests that occur. And then if a test fails, you can open up the recording and time travel, debug that recording. So we, we, we just announced it we're, we're doing a wait list thing. We're gonna be doing some, some onboarding of teams to, you know, try it out and make sure that what we've built actually works. +[43:48] And the idea is that, You know, lots of companies have Cyrus or playwright tests. You run them in CI, but often either they flake, you know, they, they fail unpredictably 10% of the time. Or if a test fails in CI, you have no way to go debug what happened to that test. And so what we've announced is that we have the ability to change your test running setup to record all the tests that occur. And then if a test fails, you can open up the recording and time travel, debug that recording. So we, we, we just announced it we're, we're doing a wait list thing. We're gonna be doing some, some onboarding of teams to, you know, try it out and make sure that what we've built actually works. -[00:44:36] But I'm, I'm really excited about this. Like, the amount of time I've spent trying to figure out why end-to-end tests are failing is absurd. And we're talking to companies that, like, they routinely waste tens of thousands of dollars on Amazon costs when tests fail and they have to go rerun the whole thing. +[44:36] But I'm, I'm really excited about this. Like, the amount of time I've spent trying to figure out why end-to-end tests are failing is absurd. And we're talking to companies that, like, they routinely waste tens of thousands of dollars on Amazon costs when tests fail and they have to go rerun the whole thing. -[00:44:52] So I'm, I'm excited for something that will help, help teams fix their tests and run them consistently. Something else that I've been doing myself. So earlier this year I, I built our own, our integration of the React dev tools for Chrome by doing backend post-processing of the recordings to extract the data. +[44:52] So I'm, I'm excited for something that will help, help teams fix their tests and run them consistently. Something else that I've been doing myself. So earlier this year I, I built our own, our integration of the React dev tools for Chrome by doing backend post-processing of the recordings to extract the data. -[00:45:18] And we have officially turned that on. And just a week ago I shipped a major new update for it that actually improves on what you can do with the reactive tools browser extension, so the real React extension in the browser. If you record a or if, if you're looking at the website of a production app, you're going to see minified component names. +[45:18] And we have officially turned that on. And just a week ago I shipped a major new update for it that actually improves on what you can do with the reactive tools browser extension, so the real React extension in the browser. If you record a or if, if you're looking at the website of a production app, you're going to see minified component names. -[00:45:44] And what I've figured out is using time travel debugging, I can go look up the original files and find the original component names and show those to you when you debug a React app in a recording. So you can go from, you know, minified names like xz to the original name, like to-do list item in the recording. +[45:44] And what I've figured out is using time travel debugging, I can go look up the original files and find the original component names and show those to you when you debug a React app in a recording. So you can go from, you know, minified names like xz to the original name, like to-do list item in the recording. -[00:46:06] So I'm really excited about that. And then just yesterday I was hacking on a proof of concept feature that would be able to to look at a React and Redux app recording and pull out information like, here's all the times your selectors ran, here's how long it took to update the ui. Here's like, which selectors were expensive, and hopefully give you like some performance optimization information. +[46:06] So I'm really excited about that. And then just yesterday I was hacking on a proof of concept feature that would be able to to look at a React and Redux app recording and pull out information like, here's all the times your selectors ran, here's how long it took to update the ui. Here's like, which selectors were expensive, and hopefully give you like some performance optimization information. -[00:46:32] **Carl Vitullo:** My last lightning round link here Vitest 1.0 roadmap has been shared. I'm using Vitest. I think it's great. I enjoy it. It's very quick. Runs my tests. +[46:32] **Carl Vitullo:** My last lightning round link here Vitest 1.0 roadmap has been shared. I'm using Vitest. I think it's great. I enjoy it. It's very quick. Runs my tests. -[00:46:43] I'm very happy with it. I was always a little frustrated with Jest and it's, you know, parallel configuration. Just one more thing to configure and set up. Cool to see it have a roadmap for getting to 1.0. Excited to have that land. +[46:43] I'm very happy with it. I was always a little frustrated with Jest and it's, you know, parallel configuration. Just one more thing to configure and set up. Cool to see it have a roadmap for getting to 1.0. Excited to have that land. -[00:46:55] **Sebastien Lorber:** Yeah. So my last link will be the Docusaurus version three Alpha. +[46:55] **Sebastien Lorber:** Yeah. So my last link will be the Docusaurus version three Alpha. -[00:47:00] So this is what I've been working on in the, in the last month, and it includes MDX 2 and React 18 finally. And So if you use the Qru, I'd be happy to, if you can try the, the Canary versions and. And give me feedback if it's working fine or if you have any bugs, then I would be happy to help you do the upgrade if you have any trouble. +[47:00] So this is what I've been working on in the, in the last month, and it includes MDX 2 and React 18 finally. And So if you use the Qru, I'd be happy to, if you can try the, the Canary versions and. And give me feedback if it's working fine or if you have any bugs, then I would be happy to help you do the upgrade if you have any trouble. -[00:47:25] **Mark Erikson:** Oh, nice. We'll have to carry that out for the Redux docs. +[47:25] **Mark Erikson:** Oh, nice. We'll have to carry that out for the Redux docs. -[00:47:28] Okay. Last item I've got is a whole slew of updates for the Redux libraries. So we've published Redux Toolkit 2.0 Beta, which ha Has some small breaking changes to remove deprecated options. It has improved TypeScript types. +[47:28] Okay. Last item I've got is a whole slew of updates for the Redux libraries. So we've published Redux Toolkit 2.0 Beta, which ha Has some small breaking changes to remove deprecated options. It has improved TypeScript types. -[00:47:43] It has several new features like some reducer injection and other stuff. I don't have an ETA on when this will go final because we're trying to update all of our libraries, which with a bunch of stuff simultaneously. Actually, the other, the other big thing we're doing with a lot of these is trying to update the packaging to support better ES module common JS interop, which as we mentioned earlier, is a royal pain. +[47:43] It has several new features like some reducer injection and other stuff. I don't have an ETA on when this will go final because we're trying to update all of our libraries, which with a bunch of stuff simultaneously. Actually, the other, the other big thing we're doing with a lot of these is trying to update the packaging to support better ES module common JS interop, which as we mentioned earlier, is a royal pain. -[00:48:10] But the idea is we're gonna publish major versions of all the Redux related libraries simultaneously. And so I'm juggling like 15 different things in my head trying to keep track of what needs to be done sort of related to that. We just shipped React Redux 8.1, which has dev mode warnings if your selectors accidentally return new values when they should't, which is a common mistake that we see people make. +[48:10] But the idea is we're gonna publish major versions of all the Redux related libraries simultaneously. And so I'm juggling like 15 different things in my head trying to keep track of what needs to be done sort of related to that. We just shipped React Redux 8.1, which has dev mode warnings if your selectors accidentally return new values when they should't, which is a common mistake that we see people make. -[00:48:37] So you can think of it, think of it as kind of being similar to React running, use of effect twice to try to catch mistakes. I've got a PR up that will become React Redux nine Alpha. I don't have it merged yet because there's, there's a couple different packaging issues that I, that I ran into that I need to solve there. +[48:37] So you can think of it, think of it as kind of being similar to React running, use of effect twice to try to catch mistakes. I've got a PR up that will become React Redux nine Alpha. I don't have it merged yet because there's, there's a couple different packaging issues that I, that I ran into that I need to solve there. -[00:48:56] And then I'm, I'm on business travel this week, but literally on the flight out here on Monday, I was experimenting with some proof of concept changes to how React Redux manages subscriptions and updates the ui. Sort of inspired by signals or observables. And the goal is to hopefully make it more optimized and update the UI faster. +[48:56] And then I'm, I'm on business travel this week, but literally on the flight out here on Monday, I was experimenting with some proof of concept changes to how React Redux manages subscriptions and updates the ui. Sort of inspired by signals or observables. And the goal is to hopefully make it more optimized and update the UI faster. -[00:49:23] I spent four or five hours hacking on the flight and I at least got something running that passes tests at the moment. But I still need to actually do a bunch of performance testing and see like, okay, this thing that I built, is it actually any better or not? If it works out, it would probably show up in React Redux version nine as a new opt-in hook called use Tracked Selector so that all the existing hooks would, and, and you know, components would work exactly the same as they have, but if you want to make use of this new functionality, there's an additional hook that you could use, which would be more optimized. +[49:23] I spent four or five hours hacking on the flight and I at least got something running that passes tests at the moment. But I still need to actually do a bunch of performance testing and see like, okay, this thing that I built, is it actually any better or not? If it works out, it would probably show up in React Redux version nine as a new opt-in hook called use Tracked Selector so that all the existing hooks would, and, and you know, components would work exactly the same as they have, but if you want to make use of this new functionality, there's an additional hook that you could use, which would be more optimized. -[00:50:05] We'll, we'll see if this actually works out or not. +[50:05] We'll, we'll see if this actually works out or not. -[00:50:08] **Sebastien Lorber:** Yeah, I have another one. There is a new AI framework called AI.JSX, and it's using JSX as a composition block and is meant to be integrated in React applications, but it's not a React renderer. So I don't know exactly how it works, but this look like quite interesting to, to study. +[50:08] **Sebastien Lorber:** Yeah, I have another one. There is a new AI framework called AI.JSX, and it's using JSX as a composition block and is meant to be integrated in React applications, but it's not a React renderer. So I don't know exactly how it works, but this look like quite interesting to, to study. -[00:50:30] **Carl Vitullo:** Cool! Okay. Thank you everyone for joining us. One more this month in React. Hopefully we're helping you keep on the cutting edge of the React and web ecosystem. Thanks so much for joining us. +[50:30] **Carl Vitullo:** Cool! Okay. Thank you everyone for joining us. One more this month in React. Hopefully we're helping you keep on the cutting edge of the React and web ecosystem. Thanks so much for joining us. -[00:50:40] Keep an eye out. Next week I'm gonna be talking with a conference organizer for React Rally. Yeah, excited to talk, talk with him. It's a great conference. See you guys next month. +[50:40] Keep an eye out. Next week I'm gonna be talking with a conference organizer for React Rally. Yeah, excited to talk, talk with him. It's a great conference. See you guys next month. -[00:50:50] **Sebastien Lorber:** Thank you. See you. Bye. +[50:50] **Sebastien Lorber:** Thank you. See you. Bye. diff --git a/src/transcripts/tmir-march-2023.md b/src/transcripts/tmir-march-2023.md index 8ef4fb8..67956f1 100644 --- a/src/transcripts/tmir-march-2023.md +++ b/src/transcripts/tmir-march-2023.md @@ -9,506 +9,506 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_), [Mark Erikson](https://twit -**Carl Vitullo:** Thanks everyone for joining us for this month in React, where we break down the news and what's going on in the React ecosystem over the past month. It's March this month. There's been a lot to talk about. Excited to have Matt Pocock joining us to talk about the new TypeScript five release. [00:00:16] +**Carl Vitullo:** Thanks everyone for joining us for this month in React, where we break down the news and what's going on in the React ecosystem over the past month. It's March this month. There's been a lot to talk about. Excited to have Matt Pocock joining us to talk about the new TypeScript five release. [00:16] -And very excited to talk about the React Labs post that the core team put out. I think there's been a lot of work that they've been doing over the past several years, and I think this post has been just really brought up a lot of those things. Excited to see what we can get into. [00:00:31] +And very excited to talk about the React Labs post that the core team put out. I think there's been a lot of work that they've been doing over the past several years, and I think this post has been just really brought up a lot of those things. Excited to see what we can get into. [00:31] -Yeah, Mark and Matt, do you, can you introduce yourself real quick? Mark, can you go first? [00:00:34] +Yeah, Mark and Matt, do you, can you introduce yourself real quick? Mark, can you go first? [00:34] -**Mark Erikson:** Sure. Hi, I'm Mark Erickson. I maintain Redux. I sit around here and answer a lot of questions. I work at a company called Replay, where we're building a true time traveling debugger for JavaScript. If you haven't seen it, please check it out. And I generally show up in React or Redux related discussions across the internet. [00:00:53] +**Mark Erikson:** Sure. Hi, I'm Mark Erickson. I maintain Redux. I sit around here and answer a lot of questions. I work at a company called Replay, where we're building a true time traveling debugger for JavaScript. If you haven't seen it, please check it out. And I generally show up in React or Redux related discussions across the internet. [00:53] -**Carl Vitullo:** (giggle) yes, you do. Cool. And Matt, can you introduce yourself? [00:00:57] +**Carl Vitullo:** (giggle) yes, you do. Cool. And Matt, can you introduce yourself? [00:57] -**Matt Pocock:** My name's Matt Pocock I am a general TypeScript person I guess. I was a software developer for about four or five years, and it's, feels weird to say was a software developer cause I'm now full-time TypeScript educator. I guess since like December left my job at Vercel and now working full-time, building a TypeScript course called Total TypeScript. [00:01:15] +**Matt Pocock:** My name's Matt Pocock I am a general TypeScript person I guess. I was a software developer for about four or five years, and it's, feels weird to say was a software developer cause I'm now full-time TypeScript educator. I guess since like December left my job at Vercel and now working full-time, building a TypeScript course called Total TypeScript. [01:15] -I was a React developer for for my career as well. So working with React and TypeScript for about four or five years. But I'm, as I said before, I'm a little bit out of the React ecosystem at the moment, but I'm really excited to hear what's been going on. [00:01:27] +I was a React developer for for my career as well. So working with React and TypeScript for about four or five years. But I'm, as I said before, I'm a little bit out of the React ecosystem at the moment, but I'm really excited to hear what's been going on. [01:27] -**Carl Vitullo:** Yeah, we're excited to have you bring some more of your expertise about the TypeScript ecosystem in here. Cool. Yeah, let's jump into it. So the format we use for this we will introduce a link in a round robin fashion, just going around one by one and have open discussion about it for a couple of minutes. [00:01:44] +**Carl Vitullo:** Yeah, we're excited to have you bring some more of your expertise about the TypeScript ecosystem in here. Cool. Yeah, let's jump into it. So the format we use for this we will introduce a link in a round robin fashion, just going around one by one and have open discussion about it for a couple of minutes. [01:44] ## Retire SPA and MPA? -**Carl Vitullo:** So I'll kick us off here. A couple days, weeks ago. Dan Abramov tweeted about, he said, petition to retire terms, Single Page Application, Multi-Page Application, SSR, SSG, they represent the previous generation of I think that's interesting. It's a, we're at a moment of time where, single page versus multi-page application like that was such a strong client versus server distinction for a lot of my career. [00:02:10] +**Carl Vitullo:** So I'll kick us off here. A couple days, weeks ago. Dan Abramov tweeted about, he said, petition to retire terms, Single Page Application, Multi-Page Application, SSR, SSG, they represent the previous generation of I think that's interesting. It's a, we're at a moment of time where, single page versus multi-page application like that was such a strong client versus server distinction for a lot of my career. [02:10] -But it, you know, it feels like the ecosystem is really cooled on the idea of a single page application saying it's sort of an acknowledgement that you can't do everything you need just on the client. And a bit of a return to more of the history of, web and software development where things were much more server based and the application side of things was, I don't know, maybe not raised to quite its own separate entity. [00:02:36] +But it, you know, it feels like the ecosystem is really cooled on the idea of a single page application saying it's sort of an acknowledgement that you can't do everything you need just on the client. And a bit of a return to more of the history of, web and software development where things were much more server based and the application side of things was, I don't know, maybe not raised to quite its own separate entity. [02:36] -Yeah. What do you guys think about that? [00:02:38] +Yeah. What do you guys think about that? [02:38] -**Mark Erikson:** There definitely has been a shift in the discussion both inside the React community and outside the React community over the last year or year and a half. Some of it positive, some of it negative. I've seen a few different articles and some of them were in the, you know, This Week in React link posts that have expressed a lot of very strong critique about React in the community and how hard everybody went in on the single page application concept starting around 2015. [00:03:07] +**Mark Erikson:** There definitely has been a shift in the discussion both inside the React community and outside the React community over the last year or year and a half. Some of it positive, some of it negative. I've seen a few different articles and some of them were in the, you know, This Week in React link posts that have expressed a lot of very strong critique about React in the community and how hard everybody went in on the single page application concept starting around 2015. [03:07] -And, I think some of it is miscommunication and, attributing bad will to, to people when there wasn't any. You know, there's, there's the ongoing difference of am I building a website with pages versus like, am I building a fully interactive application that happens to live in the browser? [00:03:25] +And, I think some of it is miscommunication and, attributing bad will to, to people when there wasn't any. You know, there's, there's the ongoing difference of am I building a website with pages versus like, am I building a fully interactive application that happens to live in the browser? [03:25] -And so you've got different people building different kinds of programs and yelling at each other when, they turns out they actually have different needs and technical differences. So that's one part of it. But also I think there is the fact that the tooling around things, around the React ecosystem, you know, whether it be next or Remix or server components or whatever makes it more feasible to build server side pieces. [00:03:50] +And so you've got different people building different kinds of programs and yelling at each other when, they turns out they actually have different needs and technical differences. So that's one part of it. But also I think there is the fact that the tooling around things, around the React ecosystem, you know, whether it be next or Remix or server components or whatever makes it more feasible to build server side pieces. [03:50] -I mean, React has had a concept of server side rendering for a long time now, but, If you weren't using next, you had to build a lot of that yourself. And the tooling wasn't there. And to be fair, like I have never dealt with SSR in any of my own projects. My own applications have always been strongly client side. [00:04:08] +I mean, React has had a concept of server side rendering for a long time now, but, If you weren't using next, you had to build a lot of that yourself. And the tooling wasn't there. And to be fair, like I have never dealt with SSR in any of my own projects. My own applications have always been strongly client side. [04:08] -So like I'm kind of sitting off to the side and trying to observe what everyone else is doing. And I can't speak to this from my own experience. But if you look at something like next, even when you're doing server side rendering and or static site generation, it still ends up with the client side interactivity and then you transition from page to page. [00:04:27] +So like I'm kind of sitting off to the side and trying to observe what everyone else is doing. And I can't speak to this from my own experience. But if you look at something like next, even when you're doing server side rendering and or static site generation, it still ends up with the client side interactivity and then you transition from page to page. [04:27] -And it's primarily doing that on the client. So even right there, it has that mixture of behavior. So I can see the point that Dan's actually getting at here is that even with the tools we have right now, there is a mixture. And when you start including things like server components and you know, next new app router in that combination, it is somewhere in between. [00:04:51] +And it's primarily doing that on the client. So even right there, it has that mixture of behavior. So I can see the point that Dan's actually getting at here is that even with the tools we have right now, there is a mixture. And when you start including things like server components and you know, next new app router in that combination, it is somewhere in between. [04:51] -And the terms don't seem to fully apply the way they used to. [00:04:55] +And the terms don't seem to fully apply the way they used to. [04:55] -**Carl Vitullo:** Yeah, I think that makes sense. I saw that Kent C Dodds proposed the term PEMPAs, which I don't, I don't, I don't think I'm a big of. uh, P E M P A for progressively enhanced multi-page apps. And (sigh) yeah, I, I guess my thought on this is like, maybe the problem is that like we're trying to assign specific terms for all of these different behaviors, really. [00:05:19] +**Carl Vitullo:** Yeah, I think that makes sense. I saw that Kent C Dodds proposed the term PEMPAs, which I don't, I don't, I don't think I'm a big of. uh, P E M P A for progressively enhanced multi-page apps. And (sigh) yeah, I, I guess my thought on this is like, maybe the problem is that like we're trying to assign specific terms for all of these different behaviors, really. [05:19] -Like, incremental static regeneration and static site generation and all those, like, to me, incremental static regeneration is just a dynamic site behind a cache, you know what I mean? Like, it's not something I would architect a build process around. It would be an implementation detail of the caching for me. [00:05:36] +Like, incremental static regeneration and static site generation and all those, like, to me, incremental static regeneration is just a dynamic site behind a cache, you know what I mean? Like, it's not something I would architect a build process around. It would be an implementation detail of the caching for me. [05:36] -Like it's a performance improvement. It's not a core part of the architecture. So I think maybe maybe a challenging point of friction here is that like we're trying to figure out terminology to describe all of these increasingly nuanced and, I don't know, just very specific ways of writing software. So I don't know. [00:05:56] +Like it's a performance improvement. It's not a core part of the architecture. So I think maybe maybe a challenging point of friction here is that like we're trying to figure out terminology to describe all of these increasingly nuanced and, I don't know, just very specific ways of writing software. So I don't know. [05:56] -**Mark Erikson:** I'm gonna go kind of meta on this one. Thinking about it just now, I think what we're actually dealing with is a categorization problem. And the problem is we're talking about things as categories, and a thing can only fit into one category, whereas what we're really dealing with is programs have like tags and you can have many tags on one thing, or to put it in software terms, it's, is it class inheritance or is it like, you know, a game style entity component system where it's like, this thing is movable and this thing can shoot and this thing can do x and this thing can do Y, and maybe the problem is that the terminology we're using is only one label, and we really need to be able to apply many labels to a given app. [00:06:39] +**Mark Erikson:** I'm gonna go kind of meta on this one. Thinking about it just now, I think what we're actually dealing with is a categorization problem. And the problem is we're talking about things as categories, and a thing can only fit into one category, whereas what we're really dealing with is programs have like tags and you can have many tags on one thing, or to put it in software terms, it's, is it class inheritance or is it like, you know, a game style entity component system where it's like, this thing is movable and this thing can shoot and this thing can do x and this thing can do Y, and maybe the problem is that the terminology we're using is only one label, and we really need to be able to apply many labels to a given app. [06:39] -**Matt Pocock:** I think there's there's like two things that I would think around this stuff. I think one of Kent's terms was PESPA, right? Progressively enhanced single page application. A lot of these terms, SPA, MPA, they all have "page" in them, right? "Page" is the unit of fetching the unit of thing that you're caring about. [00:06:55] +**Matt Pocock:** I think there's there's like two things that I would think around this stuff. I think one of Kent's terms was PESPA, right? Progressively enhanced single page application. A lot of these terms, SPA, MPA, they all have "page" in them, right? "Page" is the unit of fetching the unit of thing that you're caring about. [06:55] -And whether you're doing SSR or SSG, you are really talking about the page is the thing that you are, assessing, but really what Next, and it seems like what Dan is tilting at here, is that instead of the page being the unit, now the component is gonna be the unit. [00:07:11] +And whether you're doing SSR or SSG, you are really talking about the page is the thing that you are, assessing, but really what Next, and it seems like what Dan is tilting at here, is that instead of the page being the unit, now the component is gonna be the unit. [07:11] -Think that's in general where it seems like things are moving to, and whether you use like nested routing in Remix or something, or whether you're doing, server side components, you still have a concept of a single component being exported from a file and attaching a loader to it, or having that component itself to the data. [00:07:27] +Think that's in general where it seems like things are moving to, and whether you use like nested routing in Remix or something, or whether you're doing, server side components, you still have a concept of a single component being exported from a file and attaching a loader to it, or having that component itself to the data. [07:27] -But I also think that people don't consume the categories, they consume the frameworks that sell the categories right? So you have, for the last five years, let's say — probably since 2015 actually — Create React App has been still the dominant way that people make React apps. [00:07:41] +But I also think that people don't consume the categories, they consume the frameworks that sell the categories right? So you have, for the last five years, let's say — probably since 2015 actually — Create React App has been still the dominant way that people make React apps. [07:41] -We have all of this huge conversation around SSR and Remix and the framework wars and all that stuff, but really it's been Create React App all the way, and Next has only caught up recently. So the fact that, now Create React App is disappearing, it's gone out of the React documentation, I imagine we'll see its usage drop off, and then finally Next and other frameworks can come into its place. I think like really we are consuming frameworks instead of categories, but really the conversation is about the categories. [00:08:11] +We have all of this huge conversation around SSR and Remix and the framework wars and all that stuff, but really it's been Create React App all the way, and Next has only caught up recently. So the fact that, now Create React App is disappearing, it's gone out of the React documentation, I imagine we'll see its usage drop off, and then finally Next and other frameworks can come into its place. I think like really we are consuming frameworks instead of categories, but really the conversation is about the categories. [08:11] -**Mark Erikson:** That makes sense. Yeah. [00:08:12] +**Mark Erikson:** That makes sense. Yeah. [08:12] -**Carl Vitullo:** Yeah. And maybe building on that a little bit. I think that thinking about this in terms of frameworks and, the project bootstrap process I think is limiting in that a lot of people are using React with a wide range of backends. So, you know, if you're not building a new project and starting, with Remix or Next or something like that, but you know, you're working off a project that has existed for five years and is originally built with Rails or Django or something like that. [00:08:40] +**Carl Vitullo:** Yeah. And maybe building on that a little bit. I think that thinking about this in terms of frameworks and, the project bootstrap process I think is limiting in that a lot of people are using React with a wide range of backends. So, you know, if you're not building a new project and starting, with Remix or Next or something like that, but you know, you're working off a project that has existed for five years and is originally built with Rails or Django or something like that. [08:40] -That category of development feels left out from this conversation to me. And I was thinking about this while I was preparing for this, and to me, I think this is like a Venn diagram of three different categories that each have their own, breakdowns within them. [00:08:53] +That category of development feels left out from this conversation to me. And I was thinking about this while I was preparing for this, and to me, I think this is like a Venn diagram of three different categories that each have their own, breakdowns within them. [08:53] -So it's like, when is the content rendered? Is it rendered in advance at build time, is it rendered dynamically, is it totally static? It's never built, it's just always the same content. So that's, that's one category with three options. [00:09:05] +So it's like, when is the content rendered? Is it rendered in advance at build time, is it rendered dynamically, is it totally static? It's never built, it's just always the same content. So that's, that's one category with three options. [09:05] -Then, like, how is it cached? Is it not cached at all, it's fully dynamic, it needs to be rendered from scratch every time it's requested, or is it cached for a long time? [00:09:13] +Then, like, how is it cached? Is it not cached at all, it's fully dynamic, it needs to be rendered from scratch every time it's requested, or is it cached for a long time? [09:13] -And then a more subtle one that took me a second to come up with and then even wrap my head around was, who owns the url? Because , the server owns a lot of URLs, and it, you want the server to respond to these. But then there's the other category where you don't want the server to respond to it. It's entirely within the bounds of your client side app. [00:09:32] +And then a more subtle one that took me a second to come up with and then even wrap my head around was, who owns the url? Because , the server owns a lot of URLs, and it, you want the server to respond to these. But then there's the other category where you don't want the server to respond to it. It's entirely within the bounds of your client side app. [09:32] -So I don't know. I was thinking about how I was thinking about what terms I might use, and I came up with those three categories and was just thinking like, okay, if there was a Venn diagram showing all of the overlap between these different components, that feels like it could get towards being a complete taxonomy of development. [00:09:49] +So I don't know. I was thinking about how I was thinking about what terms I might use, and I came up with those three categories and was just thinking like, okay, if there was a Venn diagram showing all of the overlap between these different components, that feels like it could get towards being a complete taxonomy of development. [09:49] -But, like also every intersection of those would need its own acronym. And if we have, three categories that each have between three and five subcategories, that can all overlap with one or more of each other. Like, I don't think we need 25 different acronyms to describe the totality of it. It's complex and maybe the taxonomy we're trying to build is not super valuable. [00:10:04] [00:10:09] +But, like also every intersection of those would need its own acronym. And if we have, three categories that each have between three and five subcategories, that can all overlap with one or more of each other. Like, I don't think we need 25 different acronyms to describe the totality of it. It's complex and maybe the taxonomy we're trying to build is not super valuable. [10:04] [10:09] ## Create React App no longer officially recommended -**Mark Erikson:** I'm gonna take this opportunity to go to the next point because it actually circles right around to this part of the same discussion. [00:10:14] +**Mark Erikson:** I'm gonna take this opportunity to go to the next point because it actually circles right around to this part of the same discussion. [10:14] -So one of the biggest pieces of news from the last month is that the new React Doc site is finally live. That's the good news. The bad news is that it, it took four and a half years after the announcement of hooks, and it took two and a half years since they announced they were even working on a new doc site. [00:10:31] +So one of the biggest pieces of news from the last month is that the new React Doc site is finally live. That's the good news. The bad news is that it, it took four and a half years after the announcement of hooks, and it took two and a half years since they announced they were even working on a new doc site. [10:31] -But it is finally live. And it came with some big surprises. One is that there's a new url. The new home is at React.dev, whereas the old site was at Reactjs.org. And for the record, the old docs are still available, but they're now at legacy.Reactjs.org, and they all have, you know, headers saying, please look at the new docs instead. [00:10:53] +But it is finally live. And it came with some big surprises. One is that there's a new url. The new home is at React.dev, whereas the old site was at Reactjs.org. And for the record, the old docs are still available, but they're now at legacy.Reactjs.org, and they all have, you know, headers saying, please look at the new docs instead. [10:53] -The controversial ish side of the docs announcement, and we've mentioned this in passing already, is that the instructions for "how do I start a new React project" no longer mention Create React App basically at all. And instead the focus is on using a broader, more powerful framework. [00:11:13] +The controversial ish side of the docs announcement, and we've mentioned this in passing already, is that the instructions for "how do I start a new React project" no longer mention Create React App basically at all. And instead the focus is on using a broader, more powerful framework. [11:13] -The first three frameworks that it mentions are Next, Remix, and Expo. And I think there might be one other in there, I'd have to double check. [00:11:22] +The first three frameworks that it mentions are Next, Remix, and Expo. And I think there might be one other in there, I'd have to double check. [11:22] -And this is actually brought up a fair amount of controversy. You have and this kind of goes back to what Carl was saying about like different people with existing projects or different people who have different concerns. [00:11:31] +And this is actually brought up a fair amount of controversy. You have and this kind of goes back to what Carl was saying about like different people with existing projects or different people who have different concerns. [11:31] -There are people who are worried about beginners needing a simpler tool set to get started with. And Next is more powerful than Create React App, but it's also more complicated. There are people who have said, "okay, fine, Create React App is dead, but the docs or the installation and setup page should talk about Vite because clearly Vite is superior to Create React App." [00:11:55] +There are people who are worried about beginners needing a simpler tool set to get started with. And Next is more powerful than Create React App, but it's also more complicated. There are people who have said, "okay, fine, Create React App is dead, but the docs or the installation and setup page should talk about Vite because clearly Vite is superior to Create React App." [11:55] -And so it should be like a replacement in that sense. There are people who are concerned with, " if I use Next, which is now in a sense, the default choice, then I have to have a node server and I have to deploy it on Vercel in order to use it." And neither of those is true, but those are sort of the default assumptions that people have. [00:12:16] +And so it should be like a replacement in that sense. There are people who are concerned with, " if I use Next, which is now in a sense, the default choice, then I have to have a node server and I have to deploy it on Vercel in order to use it." And neither of those is true, but those are sort of the default assumptions that people have. [12:16] ## React encouraging server capabilities -**Mark Erikson:** And so there's been a lot of discussion and debate and pushback. There were a couple articles going around basically saying that the React team now wants to pretend that single page applications don't exist. And there is a little bit of truth to that because the React team wants people to be using a framework that has server side capabilities. [00:12:36] +**Mark Erikson:** And so there's been a lot of discussion and debate and pushback. There were a couple articles going around basically saying that the React team now wants to pretend that single page applications don't exist. And there is a little bit of truth to that because the React team wants people to be using a framework that has server side capabilities. [12:36] -You might start only using the client side stuff, but their stance is, you will want to use the server side pieces eventually, you will want to use routing ,and so on. And using a framework that has this built in out of the box is gonna give you a better starting point. So this has fed into a lot of the debate like, okay, the docs are out, but they're really pushing you towards a framework, especially Next. [00:13:01] +You might start only using the client side stuff, but their stance is, you will want to use the server side pieces eventually, you will want to use routing ,and so on. And using a framework that has this built in out of the box is gonna give you a better starting point. So this has fed into a lot of the debate like, okay, the docs are out, but they're really pushing you towards a framework, especially Next. [13:01] -And there are people who are not necessarily happy about that. And there are folks using, different backends like, you know, C# or Java, that aren't Node, who are concerned about their projects not working well with React in the future in some way. [00:13:14] +And there are people who are not necessarily happy about that. And there are folks using, different backends like, you know, C# or Java, that aren't Node, who are concerned about their projects not working well with React in the future in some way. [13:14] -**Matt Pocock:** It's a kind of awkward spot for React, because React is a library and it's always styled itself as a library. But what, what happens when your library starts making demands of your architecture, right? React is starting to say, okay, we are not just a client side thing. I mean, you can use us for client side, but our more powerful features, the cool stuff, it's gonna involve a server. That's the messaging coming out of Dan, too. [00:13:39] +**Matt Pocock:** It's a kind of awkward spot for React, because React is a library and it's always styled itself as a library. But what, what happens when your library starts making demands of your architecture, right? React is starting to say, okay, we are not just a client side thing. I mean, you can use us for client side, but our more powerful features, the cool stuff, it's gonna involve a server. That's the messaging coming out of Dan, too. [13:39] -What happens then when your library starts saying, " To use me properly, you need this certain architecture." I think that's a bit of where my, sort of, strange feeling comes with this and especially when it was like Next Conf for last year when they announced Turbo Pack and the new version of Next, Andrew Clark was there from the React team, who I think now works at Vercel, and he said that this new version of Next feels like the new version of React. [00:14:06] +What happens then when your library starts saying, " To use me properly, you need this certain architecture." I think that's a bit of where my, sort of, strange feeling comes with this and especially when it was like Next Conf for last year when they announced Turbo Pack and the new version of Next, Andrew Clark was there from the React team, who I think now works at Vercel, and he said that this new version of Next feels like the new version of React. [14:06] -**Mark Erikson:** The real React 18, I think, was the [00:14:08] +**Mark Erikson:** The real React 18, I think, was the [14:08] -**Matt Pocock:** Exactly. Yeah, I was in the room actually when he said that. Yeah, "it feels like the real incarnation of React," which is kind of strange because it shouldn't be tied to a framework like that, but it feels like they're building features which can really only be like made live through through a certain architecture. [00:14:26] +**Matt Pocock:** Exactly. Yeah, I was in the room actually when he said that. Yeah, "it feels like the real incarnation of React," which is kind of strange because it shouldn't be tied to a framework like that, but it feels like they're building features which can really only be like made live through through a certain architecture. [14:26] -**Carl Vitullo:** I think another dimension of this is, to me, I think the React team has been very consistent about that framing for a very long time. Like they've always tried to be agnostic to anything you want to be able to do and to provide the best experience they possibly can, regardless of what setting you want to use React in. [00:14:46] +**Carl Vitullo:** I think another dimension of this is, to me, I think the React team has been very consistent about that framing for a very long time. Like they've always tried to be agnostic to anything you want to be able to do and to provide the best experience they possibly can, regardless of what setting you want to use React in. [14:46] -So, I think that is true that React is trying to influence the architecture that you develop apps around. But I also think that it's not entirely something that they're foisting on the ecosystem. I think it is very much responding to express needs from the variety of teams that they talk to and the variety of teams that they have worked with internally at Facebook. [00:15:09] +So, I think that is true that React is trying to influence the architecture that you develop apps around. But I also think that it's not entirely something that they're foisting on the ecosystem. I think it is very much responding to express needs from the variety of teams that they talk to and the variety of teams that they have worked with internally at Facebook. [15:09] -So I'm interested to see how the server components development goes, how that whole rollout works. But like this isn't anything shocking to me because from my reading of all of the conference talks and demos and how they've framed React, this seems very consistent to me. [00:15:27] +So I'm interested to see how the server components development goes, how that whole rollout works. But like this isn't anything shocking to me because from my reading of all of the conference talks and demos and how they've framed React, this seems very consistent to me. [15:27] ## Three TypeScript 5 highlights -**Carl Vitullo:** Matt, can you introduce TypeScript 5.0 for us? [00:15:29] +**Carl Vitullo:** Matt, can you introduce TypeScript 5.0 for us? [15:29] -**Matt Pocock:** Yeah, so, well, this is pretty recent, I think, was it like last week or maybe the week before? TypeScript 5.0 is out and it brings a bunch of really cool new features, new optimizations, and I've been actually updating my course total TypeScript with the new stuff literally today. So it's fresh in my mind. [00:15:48] +**Matt Pocock:** Yeah, so, well, this is pretty recent, I think, was it like last week or maybe the week before? TypeScript 5.0 is out and it brings a bunch of really cool new features, new optimizations, and I've been actually updating my course total TypeScript with the new stuff literally today. So it's fresh in my mind. [15:48] -And the three kind of headline items are, performance, TypeScript performance has gotten a lot better with this release, and that's due to a lot of internal changes that they've made. [00:15:56] +And the three kind of headline items are, performance, TypeScript performance has gotten a lot better with this release, and that's due to a lot of internal changes that they've made. [15:56] -Decorators are now supported in TypeScript. TypeScript had support for like an experimental version of decorators to help it support Angular back in the day. But this is the new shiny stuff and the stuff that's actually gonna be adopted into JavaScript. [00:16:08] +Decorators are now supported in TypeScript. TypeScript had support for like an experimental version of decorators to help it support Angular back in the day. But this is the new shiny stuff and the stuff that's actually gonna be adopted into JavaScript. [16:08] -The third one is a new type of annotation for generics, which sounds really, really nerdy, but it's going to, I think, make a lot of really cool stuff that you can do with tap script generics a lot easier, especially when it comes to, passing configuration to components or passing things around, or making abstractions that make your life easier as a developer. [00:16:27] +The third one is a new type of annotation for generics, which sounds really, really nerdy, but it's going to, I think, make a lot of really cool stuff that you can do with tap script generics a lot easier, especially when it comes to, passing configuration to components or passing things around, or making abstractions that make your life easier as a developer. [16:27] -This kind of TypeScript knowledge is super, super useful. [00:16:30] +This kind of TypeScript knowledge is super, super useful. [16:30] ## TS5 performance improvements -**Matt Pocock:** So, Mark, do you wanna kick us off by talking about the performance things that they've done? [00:16:35] +**Matt Pocock:** So, Mark, do you wanna kick us off by talking about the performance things that they've done? [16:35] -**Mark Erikson:** Okay. The TypeScript team did a lot of work on their build tooling and code base structure in the run up to TypeScript version five. TypeScript first came out I think in 2012, so it's been over 10 years. Obviously the landscape of the JavaScript ecosystem has changed and TypeScript itself has changed dramatically since then. [00:16:56] +**Mark Erikson:** Okay. The TypeScript team did a lot of work on their build tooling and code base structure in the run up to TypeScript version five. TypeScript first came out I think in 2012, so it's been over 10 years. Obviously the landscape of the JavaScript ecosystem has changed and TypeScript itself has changed dramatically since then. [16:56] -TypeScript's own source code is written in TypeScript, but a lot of the organization for that was using an early TypeScript feature called Name Spaces. For TypeScript version five, they wanted to restructure their code to use the more modern ES module syntax. [00:17:14] +TypeScript's own source code is written in TypeScript, but a lot of the organization for that was using an early TypeScript feature called Name Spaces. For TypeScript version five, they wanted to restructure their code to use the more modern ES module syntax. [17:14] -There were a few reasons for that. One was to make use of TypeScript's own features while working on the code, but another was that the way that code got compiled for publishing actually made the TypeScript compiler run relatively slow because of the code that was generated. They figured out that if they restructured the code to use ES module syntax, , the JavaScript engine would actually be able to run the code faster. [00:17:40] +There were a few reasons for that. One was to make use of TypeScript's own features while working on the code, but another was that the way that code got compiled for publishing actually made the TypeScript compiler run relatively slow because of the code that was generated. They figured out that if they restructured the code to use ES module syntax, , the JavaScript engine would actually be able to run the code faster. [17:40] -And the size of the package that they published to NPM would be smaller. I think the version four X packages were like, 50 or 60 megabytes extracted into node modules. And with version five, it's down to like half of that. The module structure changes also literally made the TypeScript compiler run about 10% faster. [00:18:01] +And the size of the package that they published to NPM would be smaller. I think the version four X packages were like, 50 or 60 megabytes extracted into node modules. And with version five, it's down to like half of that. The module structure changes also literally made the TypeScript compiler run about 10% faster. [18:01] -There was a fantastic post on the TypeScript blog where they talked about the nitty gritty technical details of the changes. One thing that I thought was fascinating actually they did a lot of work to convert everything all over to use the ES 2015, let and const keywords for variables. [00:18:19] +There was a fantastic post on the TypeScript blog where they talked about the nitty gritty technical details of the changes. One thing that I thought was fascinating actually they did a lot of work to convert everything all over to use the ES 2015, let and const keywords for variables. [18:19] -And then they found out that in some places that actually made things too slow because of how the JavaScript interpreter has to handle those variables and hand replacing some of those with var instead actually got things back to being about 10% faster. So it, it was a fascinating read, and some amazing technical detail. [00:18:39] +And then they found out that in some places that actually made things too slow because of how the JavaScript interpreter has to handle those variables and hand replacing some of those with var instead actually got things back to being about 10% faster. So it, it was a fascinating read, and some amazing technical detail. [18:39] -So summary is if you upgraded TypeScript five, it ought to actually do the compilation a little bit faster and it will be smaller to download. [00:18:47] +So summary is if you upgraded TypeScript five, it ought to actually do the compilation a little bit faster and it will be smaller to download. [18:47] -**Carl Vitullo:** Yeah, I had seen TypeScript 4.9 was 64 megabytes in node modules, and TypeScript five is gonna be 37 and a half, so like that's enormous. Very cool that they were able to get so much benefit to performance and module size and everything, apparently just from switching to ES modules, I say just I'm sure it was a huge amount of effort to convert such [00:19:08] +**Carl Vitullo:** Yeah, I had seen TypeScript 4.9 was 64 megabytes in node modules, and TypeScript five is gonna be 37 and a half, so like that's enormous. Very cool that they were able to get so much benefit to performance and module size and everything, apparently just from switching to ES modules, I say just I'm sure it was a huge amount of effort to convert such [19:08] -**Mark Erikson:** Massive amount of work. [00:19:10] +**Mark Erikson:** Massive amount of work. [19:10] -**Carl Vitullo:** code base to Right. Just a such a fundamental change of assumptions, [00:19:14] +**Carl Vitullo:** code base to Right. Just a such a fundamental change of assumptions, [19:14] -**Matt Pocock:** I saw pr, I think it was like 500,000 change lines or something Crazy. [00:19:19] +**Matt Pocock:** I saw pr, I think it was like 500,000 change lines or something Crazy. [19:19] -**Mark Erikson:** There was a lot of automatic conversion work going so they can keep it updated. [00:19:23] +**Mark Erikson:** There was a lot of automatic conversion work going so they can keep it updated. [19:23] -**Carl Vitullo:** No doubt. I can't even imagine how you would begin to audit that the code still performs the same, it doesn't immediately break everyone's code, [00:19:32] +**Carl Vitullo:** No doubt. I can't even imagine how you would begin to audit that the code still performs the same, it doesn't immediately break everyone's code, [19:32] -**Mark Erikson:** what tests are for. [00:19:33] +**Mark Erikson:** what tests are for. [19:33] -**Carl Vitullo:** ( laughter) a lot of tests. But 10% faster and half the bundle size or 60% of the bundle size is pretty incredible. [00:19:41] +**Carl Vitullo:** ( laughter) a lot of tests. But 10% faster and half the bundle size or 60% of the bundle size is pretty incredible. [19:41] ## TS5 decorators -**Matt Pocock:** Pretty neat indeed. Carl, you wanna talk about decorators? [00:19:44] +**Matt Pocock:** Pretty neat indeed. Carl, you wanna talk about decorators? [19:44] -**Carl Vitullo:** Sure, Decorators are… they've been something that I've watched for— actually, they've been something that I stopped watching in my career because… I first heard about decorators in something like 2013. And, like five years on, they still hadn't an advanced past stage two. And it, that's the TC 39 standards process for introducing something to JavaScript has four stages, you know, like there's stage 0, 1, 2, 3, and 4, where 4 is shipped. [00:20:09] +**Carl Vitullo:** Sure, Decorators are… they've been something that I've watched for— actually, they've been something that I stopped watching in my career because… I first heard about decorators in something like 2013. And, like five years on, they still hadn't an advanced past stage two. And it, that's the TC 39 standards process for introducing something to JavaScript has four stages, you know, like there's stage 0, 1, 2, 3, and 4, where 4 is shipped. [20:09] -So decorators were stuck at stage two for [00:20:13] +So decorators were stuck at stage two for [20:13] -**Mark Erikson:** Years. [00:20:14] +**Mark Erikson:** Years. [20:14] -**Carl Vitullo:** like close to a decade with like competing proposals and different libraries were using different incompatible versions. I know that like Mob X went pretty hard on decorators pretty early, and I think that ended up burning them pretty badly. [00:20:26] +**Carl Vitullo:** like close to a decade with like competing proposals and different libraries were using different incompatible versions. I know that like Mob X went pretty hard on decorators pretty early, and I think that ended up burning them pretty badly. [20:26] -**Mark Erikson:** Angular has been all in on decorators since day one. [00:20:29] +**Mark Erikson:** Angular has been all in on decorators since day one. [20:29] -**Carl Vitullo:** Yeah. And so it's I saw that they advanced to stage three, which is, I think advancing from stage two to stage three is one of the more crucial hurdles to cross because it means, I think Stage 2 is, "okay, we have a proof of concept for how this is gonna work." Stage 3 means "we have validated that this will work in existing JavaScript engines." [00:20:49] +**Carl Vitullo:** Yeah. And so it's I saw that they advanced to stage three, which is, I think advancing from stage two to stage three is one of the more crucial hurdles to cross because it means, I think Stage 2 is, "okay, we have a proof of concept for how this is gonna work." Stage 3 means "we have validated that this will work in existing JavaScript engines." [20:49] -**Mark Erikson:** it's going from alpha to beta, basically. [00:20:51] +**Mark Erikson:** it's going from alpha to beta, basically. [20:51] -**Matt Pocock:** And TypeScript, too, takes that. When it gets to stage three, like optional training did a couple years ago, it takes that as a sign and it says, okay, now it's in stage three. Now we are gonna implement it. So everything that gets to stage three will be implemented by TypeScript. [00:21:04] +**Matt Pocock:** And TypeScript, too, takes that. When it gets to stage three, like optional training did a couple years ago, it takes that as a sign and it says, okay, now it's in stage three. Now we are gonna implement it. So everything that gets to stage three will be implemented by TypeScript. [21:04] -**Carl Vitullo:** Okay, cool. I didn't know that was their go signal, but that makes sense. I think that I think last year when decorators advanced at stage three was like a pretty, maybe a quiet, but I think a pretty big turning point for the standard, finally, we can have a lot more confidence that they're going to land in the form that they are described there. [00:21:20] +**Carl Vitullo:** Okay, cool. I didn't know that was their go signal, but that makes sense. I think that I think last year when decorators advanced at stage three was like a pretty, maybe a quiet, but I think a pretty big turning point for the standard, finally, we can have a lot more confidence that they're going to land in the form that they are described there. [21:20] -Maybe now we'll see a resurgence of libraries and tools making use of decorators as a first class api. And maybe now I'll actually consider using them because, you know, I'm unlikely to have the rug pulled out from under me and have the spec totally change. [00:21:34] +Maybe now we'll see a resurgence of libraries and tools making use of decorators as a first class api. And maybe now I'll actually consider using them because, you know, I'm unlikely to have the rug pulled out from under me and have the spec totally change. [21:34] -**Matt Pocock:** Yeah, I think they've made it inning in kind of like a limited form. So the old experimental decorators had more metadata associated with them, so, which is not something they wanted to guarantee in this new version. So the new version is a little bit stripped down, a little bit less powerful, but I think there's probably gonna be more proposals that they're gonna add new things onto the decorators. [00:21:55] +**Matt Pocock:** Yeah, I think they've made it inning in kind of like a limited form. So the old experimental decorators had more metadata associated with them, so, which is not something they wanted to guarantee in this new version. So the new version is a little bit stripped down, a little bit less powerful, but I think there's probably gonna be more proposals that they're gonna add new things onto the decorators. [21:55] -But I think they've just split the conversation up into a couple of steps, basically. But now that we've got this sort of basic decorator stuff, which is. For those who don't know decorators, let you wrap a method in a class or wrap a class itself and just let you bundle up some logic within that wrapper to, let's say, add logging to a function, for instance. [00:22:12] +But I think they've just split the conversation up into a couple of steps, basically. But now that we've got this sort of basic decorator stuff, which is. For those who don't know decorators, let you wrap a method in a class or wrap a class itself and just let you bundle up some logic within that wrapper to, let's say, add logging to a function, for instance. [22:12] -Or, validate the parameters of a function that gets passed in super useful and I think really nice. And I think, yeah, I'm excited for what people are gonna build with this. [00:22:21] +Or, validate the parameters of a function that gets passed in super useful and I think really nice. And I think, yeah, I'm excited for what people are gonna build with this. [22:21] -**Carl Vitullo:** Yeah, and maybe to tie this back to the React ecosystem a little bit, I think decorators got a lot of excitement around the time when higher order components were one of the primary patterns in the React ecosystem, the idea was that, a higher order component is basically just a decorator, but without a syntactical feature enabling them. [00:22:40] +**Carl Vitullo:** Yeah, and maybe to tie this back to the React ecosystem a little bit, I think decorators got a lot of excitement around the time when higher order components were one of the primary patterns in the React ecosystem, the idea was that, a higher order component is basically just a decorator, but without a syntactical feature enabling them. [22:40] -Yeah, I think that'll be interesting. Higher order components are much less common now, but , I think they still have a real place in the React ecosystem separate from hooks. Like if you're just trying to, if you have an existing component that works and you want to add a seam between that and whatever is rendering it to add props or guarantee behavior, like for instance, I've used higher order components as an authentication wrapper so I can ensure that a component will never be rendered if the user's logged out. [00:23:06] +Yeah, I think that'll be interesting. Higher order components are much less common now, but , I think they still have a real place in the React ecosystem separate from hooks. Like if you're just trying to, if you have an existing component that works and you want to add a seam between that and whatever is rendering it to add props or guarantee behavior, like for instance, I've used higher order components as an authentication wrapper so I can ensure that a component will never be rendered if the user's logged out. [23:06] -So yeah, it'll be interesting to see what the impact of fully shipped standardized decorators will be on the React ecosystem. [00:23:14] +So yeah, it'll be interesting to see what the impact of fully shipped standardized decorators will be on the React ecosystem. [23:14] -**Matt Pocock:** I saw that Rafael asked in the chat, are the decorators fully backward compatible? No, they are not. So, yeah, angular, NextJS apps that, or frameworks that rely on the previous experimental decorators they will have a difficult time. I think too, there's a really interesting thing about React developers in general because if you probably asked the median React developer, do you like classes or not, they were probably gonna say no. Right? [00:23:37] +**Matt Pocock:** I saw that Rafael asked in the chat, are the decorators fully backward compatible? No, they are not. So, yeah, angular, NextJS apps that, or frameworks that rely on the previous experimental decorators they will have a difficult time. I think too, there's a really interesting thing about React developers in general because if you probably asked the median React developer, do you like classes or not, they were probably gonna say no. Right? [23:37] -Because I think a lot of React developers, especially those who made the transition when hooks came in, they'd probably feel a little bit of, hatred towards the old class components where you couldn't compose logic so easily where you had to do all of this, do all of that. So I feel like decorators might just go over the heads of some people who are primarily using React and JavaScript, but don't sleep on it. [00:23:57] +Because I think a lot of React developers, especially those who made the transition when hooks came in, they'd probably feel a little bit of, hatred towards the old class components where you couldn't compose logic so easily where you had to do all of this, do all of that. So I feel like decorators might just go over the heads of some people who are primarily using React and JavaScript, but don't sleep on it. [23:57] -There's a lot of cool stuff there. [00:23:58] +There's a lot of cool stuff there. [23:58] ## TS5 const annotations -**Carl Vitullo:** Cool. Matt, can you take us through the constant type parameters? [00:24:02] +**Carl Vitullo:** Cool. Matt, can you take us through the constant type parameters? [24:02] -**Matt Pocock:** Sure. So this is a funny one. This is one that's gonna affect, I think, library code more than application code. But what it lets you do is it lets you, when you create a generic function, and for those who dunno what that is, it means that when you call a function, you can tell TypeScript to capture something about the way that you're calling that function. [00:24:19] +**Matt Pocock:** Sure. So this is a funny one. This is one that's gonna affect, I think, library code more than application code. But what it lets you do is it lets you, when you create a generic function, and for those who dunno what that is, it means that when you call a function, you can tell TypeScript to capture something about the way that you're calling that function. [24:19] -So one of its arguments, for instance, and you might have used in TypeScript, you might have used a feature called `as const`. And `as const`, what it lets you do is it lets you take a configuration object and infer it to like its tightest level. So it, if you have like a b ABC in there with like, let's say, let's say an array of success loading or arid for instance, if you wrap that array in as const, it actually infers success loading or arid, instead of it just being an array of strings. [00:24:47] +So one of its arguments, for instance, and you might have used in TypeScript, you might have used a feature called `as const`. And `as const`, what it lets you do is it lets you take a configuration object and infer it to like its tightest level. So it, if you have like a b ABC in there with like, let's say, let's say an array of success loading or arid for instance, if you wrap that array in as const, it actually infers success loading or arid, instead of it just being an array of strings. [24:47] -what this behavior does is it gives you that same behavior when you infer it in a function. So you can say, this is like const t, and then that t or that thing that's being inferred will be it's, God, it's so hard to describe without actually looking code front of… my days. I think the question is like, when should you use it? [00:25:04] +what this behavior does is it gives you that same behavior when you infer it in a function. So you can say, this is like const t, and then that t or that thing that's being inferred will be it's, God, it's so hard to describe without actually looking code front of… my days. I think the question is like, when should you use it? [25:04] -What is this going to help with? This is gonna help a lot, I think, with people who are just dipping their toe into generics and trying to figure out some of the weird stuff that's in there. I'm really excited to start teaching it more because it's gonna mean that more people get more access to more powerful abstractions, I think. And I think that's how it's gonna look. It's, you are gonna find it a little bit easier to make more complicated generic functions. And I think lowering that bridge is something that TypeScript really needs to focus on, because I think in every application you are going to have a part of that app. [00:25:40] +What is this going to help with? This is gonna help a lot, I think, with people who are just dipping their toe into generics and trying to figure out some of the weird stuff that's in there. I'm really excited to start teaching it more because it's gonna mean that more people get more access to more powerful abstractions, I think. And I think that's how it's gonna look. It's, you are gonna find it a little bit easier to make more complicated generic functions. And I think lowering that bridge is something that TypeScript really needs to focus on, because I think in every application you are going to have a part of that app. [25:40] -Probably like the utils folder or some sort of shared abstraction that is going to be complex TypeScript wise. Is there anything that they can do to lower that? Drawbridge a little bit. Let a few more people in I think is great. And I think constant annotations is part of that. [00:25:54] +Probably like the utils folder or some sort of shared abstraction that is going to be complex TypeScript wise. Is there anything that they can do to lower that? Drawbridge a little bit. Let a few more people in I think is great. And I think constant annotations is part of that. [25:54] -**Carl Vitullo:** Yeah, I think that this const annotations would've made a very specific case that I've run into a number of times, easier to work with. When I'm working with TypeScript, I pretty frequently end up with basically, like a lookup object keyed by something to get some value. [00:26:09] +**Carl Vitullo:** Yeah, I think that this const annotations would've made a very specific case that I've run into a number of times, easier to work with. When I'm working with TypeScript, I pretty frequently end up with basically, like a lookup object keyed by something to get some value. [26:09] -And I'm trying to come up with an example off the top of my head, and I'm blanking, [00:26:13] +And I'm trying to come up with an example off the top of my head, and I'm blanking, [26:13] -**Mark Erikson:** Enums to components or something. [00:26:15] +**Mark Erikson:** Enums to components or something. [26:15] -**Matt Pocock:** The thing that comes to my mind is translations, right? So imagine you have like an object of translations, where the keys are the, the translation and then the the actual values are the actual English translation. If you don't use as cons there, or you don't use cons sanitations, then it's gonna just sort of infer it a string. [00:26:32] +**Matt Pocock:** The thing that comes to my mind is translations, right? So imagine you have like an object of translations, where the keys are the, the translation and then the the actual values are the actual English translation. If you don't use as cons there, or you don't use cons sanitations, then it's gonna just sort of infer it a string. [26:32] -And so you can't do any sort of like clever interpolation there. Like you can't get really cool with it. But if you strap it with a cons, then you can actually get the literal values of the strings. And so you can, detect whether a string has like a dynamic parameter, like a name or something, and then you can, oh, it is there's just so many cool things you can do with. [00:26:49] +And so you can't do any sort of like clever interpolation there. Like you can't get really cool with it. But if you strap it with a cons, then you can actually get the literal values of the strings. And so you can, detect whether a string has like a dynamic parameter, like a name or something, and then you can, oh, it is there's just so many cool things you can do with. [26:49] -**Carl Vitullo:** Yeah. I am excited for this. It seems like a cool change. [00:26:52] +**Carl Vitullo:** Yeah. I am excited for this. It seems like a cool change. [26:52] ## TC39 proposal advancements -**Carl Vitullo:** Maybe a little bit related, moving one step of abstraction up from TypeScript the TC 39. Technical committee that determines the underlying standard. The JavaScript is an implementation of, had a new meeting and they advanced a couple of proposals. [00:27:06] +**Carl Vitullo:** Maybe a little bit related, moving one step of abstraction up from TypeScript the TC 39. Technical committee that determines the underlying standard. The JavaScript is an implementation of, had a new meeting and they advanced a couple of proposals. [27:06] -So we've now got well one, one exciting one that I, people have been asking for forever is iterator dot range. Finally we have a way of generating an array range from a standard library primitive. [00:27:16] +So we've now got well one, one exciting one that I, people have been asking for forever is iterator dot range. Finally we have a way of generating an array range from a standard library primitive. [27:16] -We've got explicit resource management, which actually that one confused me. It seems something somehow related to like generators somehow improves a pattern that's commonly used around there, but I don't know. I've never found generators that useful for things that I was trying to do, so I don't really understand that. [00:27:32] +We've got explicit resource management, which actually that one confused me. It seems something somehow related to like generators somehow improves a pattern that's commonly used around there, but I don't know. I've never found generators that useful for things that I was trying to do, so I don't really understand that. [27:32] -There was also Async context, which was advanced, I believe, to stage two. I seem to recall some conversation in the React ecosystem specifically about how like React would make use of the async context primitive. So I think that they had some input onto that standard, but I'm blanking a little bit on the specifics. [00:27:49] +There was also Async context, which was advanced, I believe, to stage two. I seem to recall some conversation in the React ecosystem specifically about how like React would make use of the async context primitive. So I think that they had some input onto that standard, but I'm blanking a little bit on the specifics. [27:49] -**Mark Erikson:** My vague understanding of that and that that's more from reading Twitter chatter than the actual documentation is. It's it's a little like React context in that you have some value, which is now accessible anywhere, but instead of being based on like a React component tree, it's like anywhere within an async call stack can access a value. [00:28:09] +**Mark Erikson:** My vague understanding of that and that that's more from reading Twitter chatter than the actual documentation is. It's it's a little like React context in that you have some value, which is now accessible anywhere, but instead of being based on like a React component tree, it's like anywhere within an async call stack can access a value. [28:09] -I think the hypothetical idea would be like, you have a server, you have some server side code, you have some incoming data, and you want to store information like per request call stack. So you know, this user, that database value, et cetera. And it should all go away when that async call stack unwinds. [00:28:28] +I think the hypothetical idea would be like, you have a server, you have some server side code, you have some incoming data, and you want to store information like per request call stack. So you know, this user, that database value, et cetera. And it should all go away when that async call stack unwinds. [28:28] -I think that's the general idea. [00:28:30] +I think that's the general idea. [28:30] -**Matt Pocock:** Is the idea then to use that for streaming or to use that for server components? [00:28:35] +**Matt Pocock:** Is the idea then to use that for streaming or to use that for server components? [28:35] -**Mark Erikson:** I would assume server components because my understanding is that normal React context does not work in server components. I think. And so having this ability built into Node and in the language itself would then act as your equivalent for, I need to access this value anywhere within a set of server components. [00:28:56] +**Mark Erikson:** I would assume server components because my understanding is that normal React context does not work in server components. I think. And so having this ability built into Node and in the language itself would then act as your equivalent for, I need to access this value anywhere within a set of server components. [28:56] -**Carl Vitullo:** Sure. Yeah. This reminds me, I had two thoughts when I was reading this spec. My first one, I tend to write a lot of, functional code rather than object oriented. And one sort of downstream consequence of that is I tend to use, slash, some might call it abuse, module scope variables for tracking state, which that works great in a client side application where every, every user has their own context. You know, it's running on the user's machine. It does not work at all on the server side of things. [00:29:25] +**Carl Vitullo:** Sure. Yeah. This reminds me, I had two thoughts when I was reading this spec. My first one, I tend to write a lot of, functional code rather than object oriented. And one sort of downstream consequence of that is I tend to use, slash, some might call it abuse, module scope variables for tracking state, which that works great in a client side application where every, every user has their own context. You know, it's running on the user's machine. It does not work at all on the server side of things. [29:25] -So I think that this is a new language primitive that would allow me as a, as an application developer to use a similar pattern to module scope singletons, but in a way that works out of the box on the server side. [00:29:40] +So I think that this is a new language primitive that would allow me as a, as an application developer to use a similar pattern to module scope singletons, but in a way that works out of the box on the server side. [29:40] -That leads me into my second thought, which is this smells a lot like a. The session global from PHP it, I think it's not exactly that because it's not a global, but I think it allows you to declare something similar to a session wherever you want. [00:29:54] +That leads me into my second thought, which is this smells a lot like a. The session global from PHP it, I think it's not exactly that because it's not a global, but I think it allows you to declare something similar to a session wherever you want. [29:54] -So it's, you know, it's not one global session per request, but you can say this is a session associated with this specific running context. So I think that's really interesting. That seems like a pretty large change to the assumptions that a JavaScript run time is based on. [00:30:08] +So it's, you know, it's not one global session per request, but you can say this is a session associated with this specific running context. So I think that's really interesting. That seems like a pretty large change to the assumptions that a JavaScript run time is based on. [30:08] -There are some other some other small ones. I saw Float 16 array, just a new typed array. It sounds like that came directly out of a W three C request where they want to offer more precision for canvas buffers. [00:30:21] +There are some other some other small ones. I saw Float 16 array, just a new typed array. It sounds like that came directly out of a W three C request where they want to offer more precision for canvas buffers. [30:21] -And last one that I wanna highlight is the Await Dictionary proposal, which looks like it's a sort of object based complement to Promise.All. [00:30:29] +And last one that I wanna highlight is the Await Dictionary proposal, which looks like it's a sort of object based complement to Promise.All. [30:29] -It allows you to await an object full of promises and destructure that as named, named variables instead of having to convert it to an array and then deal with argument ordering. [00:30:39] +It allows you to await an object full of promises and destructure that as named, named variables instead of having to convert it to an array and then deal with argument ordering. [30:39] -**Mark Erikson:** Which, I mean, it's syntax sugar, but if I can totally see how that would be handy. [00:30:43] +**Mark Erikson:** Which, I mean, it's syntax sugar, but if I can totally see how that would be handy. [30:43] -**Carl Vitullo:** Cool. Yeah, some big changes there. [00:30:44] +**Carl Vitullo:** Cool. Yeah, some big changes there. [30:44] -Mark, what do you wanna talk about? [00:30:46] +Mark, what do you wanna talk about? [30:46] ## React labs update -**Mark Erikson:** Okay. So the, one of the other really big things that came out in the last few weeks the React team put up what they call a React Labs post, which is their category for, here's the stuff we're experimenting or doing research on recently. Lot of really good, discussions there. [00:31:02] +**Mark Erikson:** Okay. So the, one of the other really big things that came out in the last few weeks the React team put up what they call a React Labs post, which is their category for, here's the stuff we're experimenting or doing research on recently. Lot of really good, discussions there. [31:02] -But some general highlights. One is they talked about their work on React server components. They talked about some of the changes they've made since the first proof of concept announcement that they did a couple years ago. They talked about how you can use async await within server components. [00:31:18] +But some general highlights. One is they talked about their work on React server components. They talked about some of the changes they've made since the first proof of concept announcement that they did a couple years ago. They talked about how you can use async await within server components. [31:18] -The first example of server components is shipped inside of next experimental app router. And they're doing some other work around being able to stream data and metadata as well. [00:31:28] +The first example of server components is shipped inside of next experimental app router. And they're doing some other work around being able to stream data and metadata as well. [31:28] ## React Forget -**Mark Erikson:** The part that I was really excited to read to the point that I'd been bugging some of the team members about this on Twitter at React Conf last year, the React team announced that they were working on an experimental React, optimizing compiler, codenamed React Forget. [00:31:45] +**Mark Erikson:** The part that I was really excited to read to the point that I'd been bugging some of the team members about this on Twitter at React Conf last year, the React team announced that they were working on an experimental React, optimizing compiler, codenamed React Forget. [31:45] -And just for reference, the React team has a habit of like every project they have has a codename that starts with the letter F. React Fiber, React… Fizz, React Forget. [00:31:56] +And just for reference, the React team has a habit of like every project they have has a codename that starts with the letter F. React Fiber, React… Fizz, React Forget. [31:56] -So the idea that they talked about is you write a normal React component and it looks at it and it figures out how to rewrite the internals of the component to better memorize and optimize the inputs and outputs of that component with the goal that it would eventually help save on this whole, like, "when is my component going to re-render?" [00:32:19] +So the idea that they talked about is you write a normal React component and it looks at it and it figures out how to rewrite the internals of the component to better memorize and optimize the inputs and outputs of that component with the goal that it would eventually help save on this whole, like, "when is my component going to re-render?" [32:19] -How do I avoid unnecessary renderers? When should I use, use memo and use callback and all that stuff. And that if the compiler works out, it would basically just do all that for you. They've had a team of about four or five people working on this for about the last year, and they gave a status update. [00:32:38] +How do I avoid unnecessary renderers? When should I use, use memo and use callback and all that stuff. And that if the compiler works out, it would basically just do all that for you. They've had a team of about four or five people working on this for about the last year, and they gave a status update. [32:38] -The general summary is that, they've got the basics of the compiler working. And they've bec because you can have literally any JavaScript logic you want in a React component, writing a compiler is really, really hard, versus a, a framework like Angular that uses HTML templates. [00:32:55] +The general summary is that, they've got the basics of the compiler working. And they've bec because you can have literally any JavaScript logic you want in a React component, writing a compiler is really, really hard, versus a, a framework like Angular that uses HTML templates. [32:55] -So they've started off by supporting like just a small amount of the JavaScript language as acceptable code that the compiler knows how to work with. And they've been trying, trained out inside of Facebook, they have been also trying to figure out like, how tied is this to babble as a compiler. [00:33:12] +So they've started off by supporting like just a small amount of the JavaScript language as acceptable code that the compiler knows how to work with. And they've been trying, trained out inside of Facebook, they have been also trying to figure out like, how tied is this to babble as a compiler. [33:12] -So they've made progress on it. They're hoping to open source it eventually. I don't know. Like I'm really excited about this. If the compiler works out, it will make our React apps run faster, it'll make it easier for us to write components. We won't have to think about that stuff as much. I just really want to see this in action and play with it myself. [00:33:31] +So they've made progress on it. They're hoping to open source it eventually. I don't know. Like I'm really excited about this. If the compiler works out, it will make our React apps run faster, it'll make it easier for us to write components. We won't have to think about that stuff as much. I just really want to see this in action and play with it myself. [33:31] -**Matt Pocock:** To play like a bit of devil's advocate here — this does seem super cool — is there a danger that you could, it could over-optimize in certain places because, like caches aren't free. Like to a cash, reading from a cash or. Would it optimize things into positions where you would get bugs? [00:33:46] +**Matt Pocock:** To play like a bit of devil's advocate here — this does seem super cool — is there a danger that you could, it could over-optimize in certain places because, like caches aren't free. Like to a cash, reading from a cash or. Would it optimize things into positions where you would get bugs? [33:46] -Are there ways to disable the compiler profile if you, I mean, I dunno why I'm [00:33:50] +Are there ways to disable the compiler profile if you, I mean, I dunno why I'm [33:50] -**Mark Erikson:** yeah, there's there's always caveats and trade-offs. One, one of the most obvious ones I can think of is that it'll, like, the idea is it'll look at the logic in your component. And for example, maybe it'll, it, maybe it sees that your component outputs like three different chunks of content in the JSX, and maybe it can figure out that one of those never changes. [00:34:10] +**Mark Erikson:** yeah, there's there's always caveats and trade-offs. One, one of the most obvious ones I can think of is that it'll, like, the idea is it'll look at the logic in your component. And for example, maybe it'll, it, maybe it sees that your component outputs like three different chunks of content in the JSX, and maybe it can figure out that one of those never changes. [34:10] -The second only depends on piece of data. A and the second depends on piece of data B. Now, if I were to optimize that by hand right now, what I could do is extract the first chunk of content to be some JSX elements outside the component and just use that variable every time. And then inside the component right now I could have like a useMemo A, useMemo B. [00:34:37] +The second only depends on piece of data. A and the second depends on piece of data B. Now, if I were to optimize that by hand right now, what I could do is extract the first chunk of content to be some JSX elements outside the component and just use that variable every time. And then inside the component right now I could have like a useMemo A, useMemo B. [34:37] -So the idea is that the compiler would hopefully be able to figure that stuff out and figure out, this piece never changes. This piece only changes when data A changes. And the other piece only changes when data B changes. It is possible to do that stuff, but the compiled version might literally be more lines of JavaScript code. [00:34:58] +So the idea is that the compiler would hopefully be able to figure that stuff out and figure out, this piece never changes. This piece only changes when data A changes. And the other piece only changes when data B changes. It is possible to do that stuff, but the compiled version might literally be more lines of JavaScript code. [34:58] -So there could be, for example, an increase in the bundle size because it now has the extra logic to determine what needs to be memoized and whatnot. There's always a course of bugs because a compiler is just software, and old software can have bugs, but that's what they're trying to figure out right now is how much of the JavaScript language does it know how to support, what kinds of restrictions does it need to have? [00:35:19] +So there could be, for example, an increase in the bundle size because it now has the extra logic to determine what needs to be memoized and whatnot. There's always a course of bugs because a compiler is just software, and old software can have bugs, but that's what they're trying to figure out right now is how much of the JavaScript language does it know how to support, what kinds of restrictions does it need to have? [35:19] -How good is the code output? And they're testing it against fa, parts of Facebook internally to try to prove all that out. [00:35:27] +How good is the code output? And they're testing it against fa, parts of Facebook internally to try to prove all that out. [35:27] -**Matt Pocock:** It's interesting cuz React, hasn't had a compiler before, but other frameworks, like Svelte or Solid. Have their own compilers, which do their own optimizations as far as I'm aware. So it's interesting that they're joining onto this and it's interesting that this takes React from being just JavaScript, to having this little optional layer, I guess, on top, that sort of takes it away from just JavaScript. [00:35:48] +**Matt Pocock:** It's interesting cuz React, hasn't had a compiler before, but other frameworks, like Svelte or Solid. Have their own compilers, which do their own optimizations as far as I'm aware. So it's interesting that they're joining onto this and it's interesting that this takes React from being just JavaScript, to having this little optional layer, I guess, on top, that sort of takes it away from just JavaScript. [35:48] -So we were talking about React positioning before. I wonder if that impacts it at all. [00:35:52] +So we were talking about React positioning before. I wonder if that impacts it at all. [35:52] -**Mark Erikson:** It, it does in a couple ways, and this also ties back to the server components bit. Nothing about server components suddenly makes our existing client side React logic not work. You can still use Create React App, you can still use Vite, you can still data fetch in a component on the client if you want to, but now there are new options on the server that give React new capabilities. [00:36:17] +**Mark Erikson:** It, it does in a couple ways, and this also ties back to the server components bit. Nothing about server components suddenly makes our existing client side React logic not work. You can still use Create React App, you can still use Vite, you can still data fetch in a component on the client if you want to, but now there are new options on the server that give React new capabilities. [36:17] -So in the same way, let's say React Forget works, let's say the compiler comes out and it's, you know, it's now built into, next or Remix or whatever. You could still. Build a page by linking the React script tags and writing some plain JavaScript code that, generates the output with React dot create element, none of that goes away. [00:36:38] +So in the same way, let's say React Forget works, let's say the compiler comes out and it's, you know, it's now built into, next or Remix or whatever. You could still. Build a page by linking the React script tags and writing some plain JavaScript code that, generates the output with React dot create element, none of that goes away. [36:38] -But now there is a newer approach that most of the apps would use, in the same way that, most React apps do use, webpack, Babel, SWC, esbuild, et cetera as a build step. So like, yeah, you could do things the old way, but there would be a new approach that, while technically optional would probably be built in to all these different frameworks by default and hopefully it would just work. [00:37:05] +But now there is a newer approach that most of the apps would use, in the same way that, most React apps do use, webpack, Babel, SWC, esbuild, et cetera as a build step. So like, yeah, you could do things the old way, but there would be a new approach that, while technically optional would probably be built in to all these different frameworks by default and hopefully it would just work. [37:05] -Fingers crossed. [00:37:06] +Fingers crossed. [37:06] -**Matt Pocock:** Yeah, this feels kind of like eslint, really. Like, it's sort of an optional layer if you want to add it, and the React team has built like custom eslint plugins that help you, prompt you to add different things to useEffect and things. So it feels a nice little, it's a nice to have, right? It doesn't feel critical. [00:37:20] +**Matt Pocock:** Yeah, this feels kind of like eslint, really. Like, it's sort of an optional layer if you want to add it, and the React team has built like custom eslint plugins that help you, prompt you to add different things to useEffect and things. So it feels a nice little, it's a nice to have, right? It doesn't feel critical. [37:20] -**Mark Erikson:** Well, if it works out the way I think it will, I think it'll be a technically optional, but you would really, really want to use it for the benefits kind of a thing. [00:37:29] +**Mark Erikson:** Well, if it works out the way I think it will, I think it'll be a technically optional, but you would really, really want to use it for the benefits kind of a thing. [37:29] -**Carl Vitullo:** Sure, not using it is an escape hatch for if you are working in a context where it doesn't work. For sure. [00:37:35] +**Carl Vitullo:** Sure, not using it is an escape hatch for if you are working in a context where it doesn't work. For sure. [37:35] -**Mark Erikson:** Mm-hmm. The one other thing to note about this Dan has been trying to figure out like how he wants to describe these things, and this goes back to all the debates over the last couple months about like signals and Reactivity versus, virtual doms and all that kind of stuff. And one of Dan's point is that assuming again, that the compiler works out, the code that you write in your component would still be normal JavaScript, array maps and using plain variables and plain object. [00:38:03] +**Mark Erikson:** Mm-hmm. The one other thing to note about this Dan has been trying to figure out like how he wants to describe these things, and this goes back to all the debates over the last couple months about like signals and Reactivity versus, virtual doms and all that kind of stuff. And one of Dan's point is that assuming again, that the compiler works out, the code that you write in your component would still be normal JavaScript, array maps and using plain variables and plain object. [38:03] -There's no special wrappers around the data. You're not having to worry to remember to call functions to access the data, but that the code you write is still basically playing JavaScript and then it's the compiler's job to figure out how to make that better, instead of, you know, needing to remember like, I have to call signal dot, get to access a value, or, some of the other rules there. [00:38:26] +There's no special wrappers around the data. You're not having to worry to remember to call functions to access the data, but that the code you write is still basically playing JavaScript and then it's the compiler's job to figure out how to make that better, instead of, you know, needing to remember like, I have to call signal dot, get to access a value, or, some of the other rules there. [38:26] -So his argument is that the compiler would give you basically all the performance improvements, but without you having to worry about it in your own code. [00:38:34] +So his argument is that the compiler would give you basically all the performance improvements, but without you having to worry about it in your own code. [38:34] -**Carl Vitullo:** Well, I'm always all for not having to think about something, so that sounds pretty great to me. [00:38:39] +**Carl Vitullo:** Well, I'm always all for not having to think about something, so that sounds pretty great to me. [38:39] ## Offscreen rendering -**Carl Vitullo:** That React Labs Post has so much detail in it about what they've been working on. I think it's really cool. Something in there that I thought was pretty interesting, the offscreen rendering feature. [00:38:48] +**Carl Vitullo:** That React Labs Post has so much detail in it about what they've been working on. I think it's really cool. Something in there that I thought was pretty interesting, the offscreen rendering feature. [38:48] -**Mark Erikson:** Yes. [00:38:49] +**Mark Erikson:** Yes. [38:49] -**Carl Vitullo:** I'm excited for that. I think there's, that's something that I've written some, components to help with. Like, they talk about it, your options generally having been to either not render it and then that has a performance cost of, it's gotta tear it down and set it back up [00:39:02] +**Carl Vitullo:** I'm excited for that. I think there's, that's something that I've written some, components to help with. Like, they talk about it, your options generally having been to either not render it and then that has a performance cost of, it's gotta tear it down and set it back up [39:02] -**Mark Erikson:** Losing state. [00:39:03] +**Mark Erikson:** Losing state. [39:03] -**Carl Vitullo:** Right. Yeah. Losing state, You either lose all your state and blow it away, or you hide it in CSS and then you still have to deal with all the performance implications of [00:39:13] +**Carl Vitullo:** Right. Yeah. Losing state, You either lose all your state and blow it away, or you hide it in CSS and then you still have to deal with all the performance implications of [39:13] -**Mark Erikson:** or you put it in Redux or recoil or Mob X or [00:39:16] +**Mark Erikson:** or you put it in Redux or recoil or Mob X or [39:16] -**Carl Vitullo:** Right, which is its own can of worms. This offscreen feature sounds very cool. I also like that it's taking advantage of a feature that was implemented in React. I think in React 18, like this is really a priority hint. This is a way for us as developers to say this is low priority. [00:39:35] +**Carl Vitullo:** Right, which is its own can of worms. This offscreen feature sounds very cool. I also like that it's taking advantage of a feature that was implemented in React. I think in React 18, like this is really a priority hint. This is a way for us as developers to say this is low priority. [39:35] -But framing it as "offscreen" is interesting and useful. It, I think it communicates more about developer intent, like this could have been introduced as " deprioritized" or "low priority". But I think framing it as "offscreen" helps clarify when it's meant to be. [00:39:51] +But framing it as "offscreen" is interesting and useful. It, I think it communicates more about developer intent, like this could have been introduced as " deprioritized" or "low priority". But I think framing it as "offscreen" helps clarify when it's meant to be. [39:51] -**Mark Erikson:** So I can tell you that we are actually using the Offscreen API in my day job at Replay right now. One of my teammates is Brian Vaughn, who used to be on the React Core team. And so he's brought over a lot of his knowledge of these relatively new and somewhat still experimental React features. And we've been using some of them in Replay's code for the last year. [00:40:12] +**Mark Erikson:** So I can tell you that we are actually using the Offscreen API in my day job at Replay right now. One of my teammates is Brian Vaughn, who used to be on the React Core team. And so he's brought over a lot of his knowledge of these relatively new and somewhat still experimental React features. And we've been using some of them in Replay's code for the last year. [40:12] -So the offscreen component is available in React, but only in the daily experimental builds, not the full like official production releases. And so Replay uses an experimental build of React that has the offscreen component available. [00:40:29] +So the offscreen component is available in React, but only in the daily experimental builds, not the full like official production releases. And so Replay uses an experimental build of React that has the offscreen component available. [40:29] -We've been using it for, in the last, in most of the last year, and it actually works pretty well. We did run into one or two cases where they were having to like fix bugs in the behavior, and we actually got bit by that once or twice, but for the most part it works pretty well. [00:40:43] +We've been using it for, in the last, in most of the last year, and it actually works pretty well. We did run into one or two cases where they were having to like fix bugs in the behavior, and we actually got bit by that once or twice, but for the most part it works pretty well. [40:43] -You just wrap an offscreen component around like the tab panel, or something that you care about. And then as you're switching tabs, instead of tearing down the panel, you just set, `offscreen = false` and it keeps it around and it works great. [00:40:58] +You just wrap an offscreen component around like the tab panel, or something that you care about. And then as you're switching tabs, instead of tearing down the panel, you just set, `offscreen = false` and it keeps it around and it works great. [40:58] -**Matt Pocock:** They've been thinking about this for a while, right? This links back to the reason that because there was, sort of, a little bit of a furor when useEffect changed in React 18 to fire twice in dev mode, right? [00:41:10] +**Matt Pocock:** They've been thinking about this for a while, right? This links back to the reason that because there was, sort of, a little bit of a furor when useEffect changed in React 18 to fire twice in dev mode, right? [41:10] -**Mark Erikson:** Yep. [00:41:10] +**Mark Erikson:** Yep. [41:10] -**Matt Pocock:** And the reasoning behind that was the offscreen was coming and can't remember what the link was. And could you fill in the gap for me? [00:41:19] +**Matt Pocock:** And the reasoning behind that was the offscreen was coming and can't remember what the link was. And could you fill in the gap for me? [41:19] -**Mark Erikson:** Yeah. So, [00:41:20] +**Mark Erikson:** Yeah. So, [41:20] -um, [00:41:20] +um, [41:20] -hang on. There's a very specific discussion from the React Working Group where they, they talked about this, and this is one of those cases where they iterated on how they wanted to describe it. Like originally they were saying like, "it's really strict effects and we're gonna make effects fire twice." [00:41:37] +hang on. There's a very specific discussion from the React Working Group where they, they talked about this, and this is one of those cases where they iterated on how they wanted to describe it. Like originally they were saying like, "it's really strict effects and we're gonna make effects fire twice." [41:37] -And then they changed it to emphasize the positive instead of the negative, where it's like, well, "React is going to preserve your state instead of fully unmounting the component," so kinda like the same thing but a different perspective on viewing it. So like reading that React Working Group discussion covers some of this. [00:41:55] +And then they changed it to emphasize the positive instead of the negative, where it's like, well, "React is going to preserve your state instead of fully unmounting the component," so kinda like the same thing but a different perspective on viewing it. So like reading that React Working Group discussion covers some of this. [41:55] -**Matt Pocock:** Nice. Yeah I'm really hyped for this. I think it's gonna be great. [00:41:58] +**Matt Pocock:** Nice. Yeah I'm really hyped for this. I think it's gonna be great. [41:58] ## Server Components -**Carl Vitullo:** There's a lot we could say about React server components as well. I have not stayed super on top of their development, so I don't feel like I have the most context. been a, there's been a lot going on there. [00:42:08] +**Carl Vitullo:** There's a lot we could say about React server components as well. I have not stayed super on top of their development, so I don't feel like I have the most context. been a, there's been a lot going on there. [42:08] -**Mark Erikson:** The one line status summary I'll give is, they exist. The big issue is that they need to be integrated into a bundler and a router and a build system to have any value. [00:42:20] +**Mark Erikson:** The one line status summary I'll give is, they exist. The big issue is that they need to be integrated into a bundler and a router and a build system to have any value. [42:20] -So right now, the primary way you could use them is by using the next 13 experimental app directory. Other framework authors are trying to play around with like, how would I build this in to Remix or just like a, or, standalone webpack config or something. [00:42:39] +So right now, the primary way you could use them is by using the next 13 experimental app directory. Other framework authors are trying to play around with like, how would I build this in to Remix or just like a, or, standalone webpack config or something. [42:39] -The problem is because it's still very experimental, there's no documentation on how to do that, so you've got like individuals playing around with it and trying to reverse engineer, how do I make use of this functionality by looking at next, or looking at the React test just because there, there isn't documentation on how to do it, but a bunch of different frameworks are playing around with the idea at the moment. [00:43:01] +The problem is because it's still very experimental, there's no documentation on how to do that, so you've got like individuals playing around with it and trying to reverse engineer, how do I make use of this functionality by looking at next, or looking at the React test just because there, there isn't documentation on how to do it, but a bunch of different frameworks are playing around with the idea at the moment. [43:01] -**Carl Vitullo:** Yeah, definitely. I'll respond to that in a sec. [00:43:03] +**Carl Vitullo:** Yeah, definitely. I'll respond to that in a sec. [43:03] -We are coming up in an hour and Matt Pocock has a hard stop here. So yeah. Matt, thank you so much for coming out. It was really great having your perspective on TypeScript changes. [00:43:11] +We are coming up in an hour and Matt Pocock has a hard stop here. So yeah. Matt, thank you so much for coming out. It was really great having your perspective on TypeScript changes. [43:11] -**Matt Pocock:** No worries. Really, really fun to chat to you guys as always. [00:43:13] +**Matt Pocock:** No worries. Really, really fun to chat to you guys as always. [43:13] -**Mark Erikson:** Yep. [00:43:14] +**Mark Erikson:** Yep. [43:14] -**Carl Vitullo:** All right. Thanks so much. [00:43:15] +**Carl Vitullo:** All right. Thanks so much. [43:15] -**Matt Pocock:** See Bye. [00:43:16] +**Matt Pocock:** See Bye. [43:16] -**Carl Vitullo:** That context for server components I think is interesting. It's the core team is really saying these exist, they are in use by some people, but they are not for general consumption. [00:43:28] +**Carl Vitullo:** That context for server components I think is interesting. It's the core team is really saying these exist, they are in use by some people, but they are not for general consumption. [43:28] -**Mark Erikson:** Yeah. [00:43:28] +**Mark Erikson:** Yeah. [43:28] -**Carl Vitullo:** That reminds me of now, close to 10 years ago, that was the state of React context. [00:43:34] +**Carl Vitullo:** That reminds me of now, close to 10 years ago, that was the state of React context. [43:34] -It was undocumented feature. They were using it internally, they knew that people would want to use it, but they weren't comfortable with the api. They wanted to iterate on a little bit more. [00:43:43] +It was undocumented feature. They were using it internally, they knew that people would want to use it, but they weren't comfortable with the api. They wanted to iterate on a little bit more. [43:43] -**Mark Erikson:** Funny thing is, I think React Redux, and Dan Abramov, like one of the first cases that an external library started using the original Legacy React Context api and that helped prove how some people wanted to use it. It also helped expose some bugs and weaknesses in that API design, and that's what led to the React Team building the current Context API that came out in React 16.3 a few years later. [00:44:13] +**Mark Erikson:** Funny thing is, I think React Redux, and Dan Abramov, like one of the first cases that an external library started using the original Legacy React Context api and that helped prove how some people wanted to use it. It also helped expose some bugs and weaknesses in that API design, and that's what led to the React Team building the current Context API that came out in React 16.3 a few years later. [44:13] -**Carl Vitullo:** Yeah, and I was refreshing my memory on some of the timing around React versions recently. I didn't realize that we only got context around the same time as we got hooks [00:44:22] +**Carl Vitullo:** Yeah, and I was refreshing my memory on some of the timing around React versions recently. I didn't realize that we only got context around the same time as we got hooks [44:22] -**Mark Erikson:** it was a few months. It was five versions and a few months earlier. Context came out in 16.3 hooks came out in 16.8. [00:44:30] +**Mark Erikson:** it was a few months. It was five versions and a few months earlier. Context came out in 16.3 hooks came out in 16.8. [44:30] -**Carl Vitullo:** yeah. Okay. Just to me, context has been around forever. So seeing that actually not that, in, in the overall lifespan of React, it was officially released, not that far away from hooks. Like those would feel like two totally different epochs to me. [00:44:44] +**Carl Vitullo:** yeah. Okay. Just to me, context has been around forever. So seeing that actually not that, in, in the overall lifespan of React, it was officially released, not that far away from hooks. Like those would feel like two totally different epochs to me. [44:44] -**Mark Erikson:** Very much so. [00:44:46] +**Mark Erikson:** Very much so. [44:46] -**Carl Vitullo:** But yeah, so seeing the React core team talking about. Server components in a similar sort of way of like, Hey, don't use this yet. It exists. If you poke around, you can figure out how it works, but we're not going to release documentation yet. Like that is certainly something that, that is a pattern that they followed before. It's not new. Not new for them. [00:45:06] +**Carl Vitullo:** But yeah, so seeing the React core team talking about. Server components in a similar sort of way of like, Hey, don't use this yet. It exists. If you poke around, you can figure out how it works, but we're not going to release documentation yet. Like that is certainly something that, that is a pattern that they followed before. It's not new. Not new for them. [45:06] -**Mark Erikson:** And to be fair, Dan was grinding out the last several pages on the new doc site, and that took him a long time to do it. They just literally haven't had time to write documentation for things like server components, even if they were like fully done, which they're not. I mean, like literally they haven't had time to write documentation on the these things and how you would integrate them into a bundler. [00:45:29] +**Mark Erikson:** And to be fair, Dan was grinding out the last several pages on the new doc site, and that took him a long time to do it. They just literally haven't had time to write documentation for things like server components, even if they were like fully done, which they're not. I mean, like literally they haven't had time to write documentation on the these things and how you would integrate them into a bundler. [45:29] -**Carl Vitullo:** This feels to me like they are looking at how people are using React and seeing that many people are reaching for Next and Remix over just using React and both Next and Remix found their own solutions for something like server components. [00:45:45] +**Carl Vitullo:** This feels to me like they are looking at how people are using React and seeing that many people are reaching for Next and Remix over just using React and both Next and Remix found their own solutions for something like server components. [45:45] -So to me, this feels like they have been observing what's going on in the ecosystem, seen what patterns have arisen, and now we're trying to learn from those and introduce it as a feature within React so that then both Next and Remix can expose the same underlying abstraction rather than having, rather than fragmenting the community and coming up with their own core concepts for it. [00:46:09] +So to me, this feels like they have been observing what's going on in the ecosystem, seen what patterns have arisen, and now we're trying to learn from those and introduce it as a feature within React so that then both Next and Remix can expose the same underlying abstraction rather than having, rather than fragmenting the community and coming up with their own core concepts for it. [46:09] -I think that's absolutely the right approach for them to take and I'm sure that Next and Remix are excited for that because now they will have one less, feature that they need to maintain. I know Remix uses a .client or .server file name annotation I'm sure they would love to not have to maintain a feature for determining that separation. [00:46:28] +I think that's absolutely the right approach for them to take and I'm sure that Next and Remix are excited for that because now they will have one less, feature that they need to maintain. I know Remix uses a .client or .server file name annotation I'm sure they would love to not have to maintain a feature for determining that separation. [46:28] -**Mark Erikson:** The Next folks are obviously very excited about React server components. Probably cuz you know, half the React team now works at Vercel. [00:46:34] +**Mark Erikson:** The Next folks are obviously very excited about React server components. Probably cuz you know, half the React team now works at Vercel. [46:34] -**Carl Vitullo (editing):** Fun fact, the core team has 25 members. There are 20 developers and five managers. So four reports each on average. Three of the engineers are independent three, work at Vercel and 19 work at Facebook. There are a lot more folks building React than many people realize. [00:46:50] +**Carl Vitullo (editing):** Fun fact, the core team has 25 members. There are 20 developers and five managers. So four reports each on average. Three of the engineers are independent three, work at Vercel and 19 work at Facebook. There are a lot more folks building React than many people realize. [46:50] -**Mark Erikson:** I think the Remix folks are still kind of hesitant about the whole idea and how it would fit in. [00:46:54] +**Mark Erikson:** I think the Remix folks are still kind of hesitant about the whole idea and how it would fit in. [46:54] -**Carl Vitullo:** That's interesting. I didn't realize that. Yeah, I guess that makes sense though because so many of the core team is now at Vercel, Next is very much under their domain at this point. [00:47:03] +**Carl Vitullo:** That's interesting. I didn't realize that. Yeah, I guess that makes sense though because so many of the core team is now at Vercel, Next is very much under their domain at this point. [47:03] ## Asset Loading and Transition Tracing -**Carl Vitullo:** Yeah, I guess closing up on the React Labs post, they also mentioned asset loading and transition tracing. [00:47:09] +**Carl Vitullo:** Yeah, I guess closing up on the React Labs post, they also mentioned asset loading and transition tracing. [47:09] -Both of those to me sounded like features that are likely to be pretty big sea changes for developer experience. They're not very flashy features. You know, they're not exciting, you don't get hype about it, but I think that both of those have the potential to be massively influential on what it feels like to develop code. [00:47:27] +Both of those to me sounded like features that are likely to be pretty big sea changes for developer experience. They're not very flashy features. You know, they're not exciting, you don't get hype about it, but I think that both of those have the potential to be massively influential on what it feels like to develop code. [47:27] -So I'm excited to see what comes out of those, but I, I don't know how much there is to talk about it. [00:47:31] +So I'm excited to see what comes out of those, but I, I don't know how much there is to talk about it. [47:31] -And transition tracing, just to explain it to the, to audience. If you are doing performance profiling of a React app right now, they have code in there to track component mounting and unmounting. They can annotate your flame chart with what component is where. [00:47:45] +And transition tracing, just to explain it to the, to audience. If you are doing performance profiling of a React app right now, they have code in there to track component mounting and unmounting. They can annotate your flame chart with what component is where. [47:45] -But something missing from that is events. So you can't see on the flame chart when was a button clicked, when was a form input fired? So my understanding of this transition tracing feature that they're working on is it will annotate your flame chart with tho those details, which I, as someone who's done a lot of performance profiling for React applications, that is a pain that I have felt many times and I'm excited to see it come out. [00:48:09] +But something missing from that is events. So you can't see on the flame chart when was a button clicked, when was a form input fired? So my understanding of this transition tracing feature that they're working on is it will annotate your flame chart with tho those details, which I, as someone who's done a lot of performance profiling for React applications, that is a pain that I have felt many times and I'm excited to see it come out. [48:09] -**Mark Erikson:** I think the other aspect is that with React eighteen's ability to split a render into many pieces over time it's harder to be able to track like, really when did this render start and finish? And they, they wanted to make that more feasible. [00:48:25] +**Mark Erikson:** I think the other aspect is that with React eighteen's ability to split a render into many pieces over time it's harder to be able to track like, really when did this render start and finish? And they, they wanted to make that more feasible. [48:25] -**Carl Vitullo:** Interesting. Yeah, that makes sense. Yeah. I know they had done, they had the Reactive tools, which had like commit and [00:48:31] +**Carl Vitullo:** Interesting. Yeah, that makes sense. Yeah. I know they had done, they had the Reactive tools, which had like commit and [48:31] -**Mark Erikson:** Mm-hmm. [00:48:32] +**Mark Erikson:** Mm-hmm. [48:32] -**Carl Vitullo:** I can't remember the other term, but it had like [00:48:33] +**Carl Vitullo:** I can't remember the other term, but it had like [48:33] -**Mark Erikson:** render phase and commit phase. [00:48:35] +**Mark Erikson:** render phase and commit phase. [48:35] -**Carl Vitullo:** Yeah, sure. And it, it could, like, you could use that to discover expensive components, but it wasn't super useful for actually figuring out what caused that expensive re-render to happen. [00:48:48] +**Carl Vitullo:** Yeah, sure. And it, it could, like, you could use that to discover expensive components, but it wasn't super useful for actually figuring out what caused that expensive re-render to happen. [48:48] -I think they said in the React Labs post that they had actually removed some of the code that was powering some of that because it just wasn't working for people, which was my experience. So, Cool. [00:48:57] +I think they said in the React Labs post that they had actually removed some of the code that was powering some of that because it just wasn't working for people, which was my experience. So, Cool. [48:57] -**Mark Erikson:** Can I go off and talk about a work project for 30 for like one minute? [00:49:02] +**Mark Erikson:** Can I go off and talk about a work project for 30 for like one minute? [49:02] -**Carl Vitullo:** Ooh, please do. [00:49:03] +**Carl Vitullo:** Ooh, please do. [49:03] -**Mark Erikson:** okay, so, I work at Replay. We're building a time traveling debugger for JavaScript, and we have the ability to inspect anything that happened inside of a running recorded JavaScript program. And over the last f last couple months, I've built some experimental features where I can write code that asks our backend, Hey, when did this piece of code run? [00:49:28] +**Mark Erikson:** okay, so, I work at Replay. We're building a time traveling debugger for JavaScript, and we have the ability to inspect anything that happened inside of a running recorded JavaScript program. And over the last f last couple months, I've built some experimental features where I can write code that asks our backend, Hey, when did this piece of code run? [49:28] -Or what was the call stack when it ran? And do more further analysis from there. And over the last couple weeks, I built an experimental feature in Replay, like, because I know a decent amount about how React works inside. I figured out that every time you call set state, it goes through one internal function inside React. [00:49:50] +Or what was the call stack when it ran? And do more further analysis from there. And over the last couple weeks, I built an experimental feature in Replay, like, because I know a decent amount about how React works inside. I figured out that every time you call set state, it goes through one internal function inside React. [49:50] -And if you ask Replay, tell me every time that function ran, and then you walk backwards up the call stack to user land code. Eventually you find the place in your code that you called setState, or in a lot of cases called a Redux dispatch, which goes through Redux and then eventually hits the same React internal function. [00:50:13] +And if you ask Replay, tell me every time that function ran, and then you walk backwards up the call stack to user land code. Eventually you find the place in your code that you called setState, or in a lot of cases called a Redux dispatch, which goes through Redux and then eventually hits the same React internal function. [50:13] -So I built a very, very experimental proof of concept panel where it, if you make a recording of a React app, it will walk through the recording and show you list items that represent every time your code called Set State. And then you prep, you click on one of those list items and it jumps you to that line of code and the time in the recording when it made that call. [00:50:38] +So I built a very, very experimental proof of concept panel where it, if you make a recording of a React app, it will walk through the recording and show you list items that represent every time your code called Set State. And then you prep, you click on one of those list items and it jumps you to that line of code and the time in the recording when it made that call. [50:38] -It's still very experimental and proof of concept, but it does actually work. [00:50:43] +It's still very experimental and proof of concept, but it does actually work. [50:43] -**Carl Vitullo:** Cool. Yeah, I have not used Replay yet. I, and honestly at this point in my career, I'm not really doing like heads down day to day React code to the same extent that I used to be, but, I think if I were in a place where I was more frequently debugging complex issues… oh man, Replay just sounds like an incredible boon for productivity. [00:51:03] +**Carl Vitullo:** Cool. Yeah, I have not used Replay yet. I, and honestly at this point in my career, I'm not really doing like heads down day to day React code to the same extent that I used to be, but, I think if I were in a place where I was more frequently debugging complex issues… oh man, Replay just sounds like an incredible boon for productivity. [51:03] -So getting more understanding of their internals React. Heck yeah. [00:51:08] +So getting more understanding of their internals React. Heck yeah. [51:08] -**Mark Erikson:** Hmm. That also actually ties into something else I'm doing for my day job, but it will actually, hopefully have a benefit to the Greater React ecosystem. React ships multiple files in node modules, and they ship both a development copy of the React code, already bundled, and a production copy of the React code, bundled. [00:51:27] +**Mark Erikson:** Hmm. That also actually ties into something else I'm doing for my day job, but it will actually, hopefully have a benefit to the Greater React ecosystem. React ships multiple files in node modules, and they ship both a development copy of the React code, already bundled, and a production copy of the React code, bundled. [51:27] -And the problem is that they have never shipped source maps. And source maps are what a JavaScript debugger uses to be able to translate from the minified code that is actually running in the browser back to like the original source code files. So like if you ship source maps with your application, even though it's been mangled down to one minified bundle, when you go to debug it, you can still see source/features/my-component.tsx and debug that original looking code. React has never shipped source maps. [00:52:01] +And the problem is that they have never shipped source maps. And source maps are what a JavaScript debugger uses to be able to translate from the minified code that is actually running in the browser back to like the original source code files. So like if you ship source maps with your application, even though it's been mangled down to one minified bundle, when you go to debug it, you can still see source/features/my-component.tsx and debug that original looking code. React has never shipped source maps. [52:01] -And so that's why whenever you see like a, an error stack trace from React in production, all like there are no function names, everything's like, two letter gibberish. if you were to say like put a break point in a function component and then step, step, step, step out of the component back into React's, internals, it's all gibberish and you can't read any of it. [00:52:23] +And so that's why whenever you see like a, an error stack trace from React in production, all like there are no function names, everything's like, two letter gibberish. if you were to say like put a break point in a function component and then step, step, step, step out of the component back into React's, internals, it's all gibberish and you can't read any of it. [52:23] -At Replay, we use source maps to also help debug code and so I as a Replay employee, have put in work over the last couple weeks to modify Reacts build system so that it will actually generate source maps for Reacts production bundles. And I got it working and I have a pull request up in the React repo. [00:52:47] +At Replay, we use source maps to also help debug code and so I as a Replay employee, have put in work over the last couple weeks to modify Reacts build system so that it will actually generate source maps for Reacts production bundles. And I got it working and I have a pull request up in the React repo. [52:47] -I just need to convince Dan Abramov to actually merge that PR. So assuming that gets merged, fingers crossed, then starting with the next React release, hopefully, probably 18.3, you would be able to see what the original code looked like for the production bundles. In a, like, in like a deployed application if an error gets thrown in production, at least the stack trace would be a little more readable. [00:53:14] +I just need to convince Dan Abramov to actually merge that PR. So assuming that gets merged, fingers crossed, then starting with the next React release, hopefully, probably 18.3, you would be able to see what the original code looked like for the production bundles. In a, like, in like a deployed application if an error gets thrown in production, at least the stack trace would be a little more readable. [53:14] -The React internals are really complicated, so you're still not gonna understand what's going on, but at least you could read the code. [00:53:19] +The React internals are really complicated, so you're still not gonna understand what's going on, but at least you could read the code. [53:19] -So I'm really, really hoping that I can convince Dan to merge that PR within the next couple of days. [00:53:23] +So I'm really, really hoping that I can convince Dan to merge that PR within the next couple of days. [53:23] -**Carl Vitullo:** Yeah. Very cool. Well I hope to see that la I hope you're able to convince Dan that that's a valuable contribution. I think sounds great. [00:53:30] +**Carl Vitullo:** Yeah. Very cool. Well I hope to see that la I hope you're able to convince Dan that that's a valuable contribution. I think sounds great. [53:30] -**Mark Erikson:** Like, it works and they've got their CI system set up to do example builds from the PR. So you could try installing a copy of React from that PR right now if you wanted to, play around with it. But I tested it out in, a couple different projects, a Vite app, a next app, et cetera, and the source maps look pretty good. [00:53:51] +**Mark Erikson:** Like, it works and they've got their CI system set up to do example builds from the PR. So you could try installing a copy of React from that PR right now if you wanted to, play around with it. But I tested it out in, a couple different projects, a Vite app, a next app, et cetera, and the source maps look pretty good. [53:51] -**Carl Vitullo:** Nice. Heck yeah. [00:53:52] +**Carl Vitullo:** Nice. Heck yeah. [53:52] -**Mark Erikson:** I probably oughta call it a day here and actually go get something done. In fact, what I probably had to do is go back to that PR and see if I can make a couple tweaks Dan requested. [00:54:00] +**Mark Erikson:** I probably oughta call it a day here and actually go get something done. In fact, what I probably had to do is go back to that PR and see if I can make a couple tweaks Dan requested. [54:00] -**Carl Vitullo:** Ha. Well, thanks for going 12 minutes over time with me. It's been really great recapping the news and the React ecosystem with you. [00:54:07] +**Carl Vitullo:** Ha. Well, thanks for going 12 minutes over time with me. It's been really great recapping the news and the React ecosystem with you. [54:07] -**Mark Erikson:** Good stuff. [00:54:08] +**Mark Erikson:** Good stuff. [54:08] **Carl Vitullo:** Excellent. All right. Thanks so much. See you guys next time. diff --git a/src/transcripts/tmir-may-2023.md b/src/transcripts/tmir-may-2023.md index 21e6c3a..00a5b4c 100644 --- a/src/transcripts/tmir-may-2023.md +++ b/src/transcripts/tmir-may-2023.md @@ -9,21 +9,21 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_), [Mark Erikson](https://twit -**Carl Vitullo:** Hello everyone. Thanks for joining us for May's This Month in React, where we recap and digest recent developments in the ever-evolving React and web ecosystem. I'm here with Mark Erikson and Sebastian Lober. Mark, you wanna introduce yourself? [00:00:15] +**Carl Vitullo:** Hello everyone. Thanks for joining us for May's This Month in React, where we recap and digest recent developments in the ever-evolving React and web ecosystem. I'm here with Mark Erikson and Sebastian Lober. Mark, you wanna introduce yourself? [00:15] -**Mark Erikson:** Hi, I'm Mark Erikson. My day job is working at Replay, where we're building a time traveling to bugger for JavaScript. My free time, copious amounts thereof is taken up maintaining Redux. [00:00:26] +**Mark Erikson:** Hi, I'm Mark Erikson. My day job is working at Replay, where we're building a time traveling to bugger for JavaScript. My free time, copious amounts thereof is taken up maintaining Redux. [00:26] -**Carl Vitullo:** Heck yeah. Sebastien, can you introduce yourself? [00:00:29] +**Carl Vitullo:** Heck yeah. Sebastien, can you introduce yourself? [00:29] -**Sebastien Lorber:** Yeah. I'm the author of this in React, the newsletter at keeps You to date with React and React Native, and also the maintainer of Docusaurus React documentation framework from Meta. [00:00:42] +**Sebastien Lorber:** Yeah. I'm the author of this in React, the newsletter at keeps You to date with React and React Native, and also the maintainer of Docusaurus React documentation framework from Meta. [00:42] -**Carl Vitullo:** You know, I realized that I have been asking you guys to introduce yourself and I don't really introduce myself. [00:00:47] +**Carl Vitullo:** You know, I realized that I have been asking you guys to introduce yourself and I don't really introduce myself. [00:47] -**Mark Erikson:** Carl, would you, would you tell us about yourself? (laughter) [00:00:50] +**Mark Erikson:** Carl, would you, would you tell us about yourself? (laughter) [00:50] -**Carl Vitullo:** Yes, I would love to. I'm Carl Vitullo. I am a staff software engineer and freelance community manager, sort of community lead for Reactiflux. [00:00:58] +**Carl Vitullo:** Yes, I would love to. I'm Carl Vitullo. I am a staff software engineer and freelance community manager, sort of community lead for Reactiflux. [00:58] -I, I think, not a ton of huge news going on right now, but yeah. Mark, can you kick us off with our first link? [00:01:04] +I, I think, not a ton of huge news going on right now, but yeah. Mark, can you kick us off with our first link? [01:04] ## Next 13.4, App Router and Server Actions @@ -33,318 +33,318 @@ I, I think, not a ton of huge news going on right now, but yeah. Mark, can you k - [Rich Harris on frameworks, the web, and the edge](https://www.youtube.com/watch?v=uXCipjbcQfM) - [RSC data leak security footgun](https://twitter.com/tomus_sherman/status/1654211227172716545) -**Mark Erikson:** Okay. So first off last month, Next 13.4 came out and the, the really big news item out of this is that they are declaring that the NextJS app router is stable, which has a couple different implications. [00:01:20] +**Mark Erikson:** Okay. So first off last month, Next 13.4 came out and the, the really big news item out of this is that they are declaring that the NextJS app router is stable, which has a couple different implications. [01:20] -One is that it's a different way to define the routing structure through your page. And the second is that this is the first official "production" ready release of React Server Components. [00:01:33] +One is that it's a different way to define the routing structure through your page. And the second is that this is the first official "production" ready release of React Server Components. [01:33] -Now this is where it's always dangerous for me to try to describe things because I have not had a chance to use any of this stuff. So, you know, a lot of what I can say here is either looking at the announcement blog post or trying to summarize the stuff that I've read off the various discussions on, on Twitter and Reddit. [00:01:51] +Now this is where it's always dangerous for me to try to describe things because I have not had a chance to use any of this stuff. So, you know, a lot of what I can say here is either looking at the announcement blog post or trying to summarize the stuff that I've read off the various discussions on, on Twitter and Reddit. [01:51] -So at this point, React Server Components are in theory production ready to use, and I've certainly seen people, you know, mentioning that they've, you know, they've rewr rewritten their blog or, you know, put together some actual example sites using React Server Components. [00:02:07] +So at this point, React Server Components are in theory production ready to use, and I've certainly seen people, you know, mentioning that they've, you know, they've rewr rewritten their blog or, you know, put together some actual example sites using React Server Components. [02:07] -It feels like there's still some question about just how production ready they are, both in terms of stability as well as like what are expected usage patterns and how do you integrate various existing community tools and libraries into those. But you know, at least as far as the Next team is concerned these are in theory pretty much ready to go. Um, so that's, that's by far the, the biggest piece of news. [00:02:37] +It feels like there's still some question about just how production ready they are, both in terms of stability as well as like what are expected usage patterns and how do you integrate various existing community tools and libraries into those. But you know, at least as far as the Next team is concerned these are in theory pretty much ready to go. Um, so that's, that's by far the, the biggest piece of news. [02:37] -And then looking at the release notes the couple other big things in 13.4. Next has a team building a tool called TurboPack, which is a equivalent kind of build tool to Webpack, except it's written in Rust. It's being written by the original author of Webpack, Tobias Koppers, and it's supposed to be significantly faster. And so the release notes say that they, they are marking TurboPack as being in beta. It still does not have full future parity with Webpack, but they are making progress on it. [00:03:11] +And then looking at the release notes the couple other big things in 13.4. Next has a team building a tool called TurboPack, which is a equivalent kind of build tool to Webpack, except it's written in Rust. It's being written by the original author of Webpack, Tobias Koppers, and it's supposed to be significantly faster. And so the release notes say that they, they are marking TurboPack as being in beta. It still does not have full future parity with Webpack, but they are making progress on it. [03:11] -And then the last piece is something that I, I, I've only seen bits and pieces about myself, which is that Next and React are working together on something that they call Server Actions. And this is apparently very inspired by what Remix has, where it's, it's like a new primitive for sending requests to the server based on plain HTML forms. [00:03:37] +And then the last piece is something that I, I, I've only seen bits and pieces about myself, which is that Next and React are working together on something that they call Server Actions. And this is apparently very inspired by what Remix has, where it's, it's like a new primitive for sending requests to the server based on plain HTML forms. [03:37] -And I, I think the idea, looking at the examples is that on the client side you have a lowercase form input and you provided a prop called action. And that action can then in turn, really run on the server and do like a direct database insertion or query or something like that, and the compiler is able to separate out the fact that this action function needs to run on the server versus the rest of the code, which could technically run on the client or the server. [00:04:11] +And I, I think the idea, looking at the examples is that on the client side you have a lowercase form input and you provided a prop called action. And that action can then in turn, really run on the server and do like a direct database insertion or query or something like that, and the compiler is able to separate out the fact that this action function needs to run on the server versus the rest of the code, which could technically run on the client or the server. [04:11] -So it's, it's kind of like that Remix style thing where you're writing code in the same file that mixes together client code and server code, and it automatically just works. So they, they announced this Server Actions idea. It's still very much an alpha and experimental, but it is a thing that they're working on right now. [00:04:31] +So it's, it's kind of like that Remix style thing where you're writing code in the same file that mixes together client code and server code, and it automatically just works. So they, they announced this Server Actions idea. It's still very much an alpha and experimental, but it is a thing that they're working on right now. [04:31] -And so these, these pieces have the possibility if they, you know, actually pan out to be pretty large changes in the way we structure and write React applications. [00:04:41] +And so these, these pieces have the possibility if they, you know, actually pan out to be pretty large changes in the way we structure and write React applications. [04:41] -**Carl Vitullo:** Yeah, definitely as you were and you know, as I was reading the notes on Server Actions, my immediate thought was Remix as well. [00:04:48] +**Carl Vitullo:** Yeah, definitely as you were and you know, as I was reading the notes on Server Actions, my immediate thought was Remix as well. [04:48] -I do think that's a really powerful pattern that Remix introduced. So I'm excited to see Next Adopt It. And yeah, I mean this is, to me, this is exactly why it's so beneficial to have multiple clients doing, or, you know, mul multiple tools trying to solve the same use cases cuz they come up with different ideas and some of them stick. I'm pretty excited to see Server Action stick. [00:05:08] +I do think that's a really powerful pattern that Remix introduced. So I'm excited to see Next Adopt It. And yeah, I mean this is, to me, this is exactly why it's so beneficial to have multiple clients doing, or, you know, mul multiple tools trying to solve the same use cases cuz they come up with different ideas and some of them stick. I'm pretty excited to see Server Action stick. [05:08] -I think this, I think if you're going to have code that spans the server and the client, you know, it can't all be UI code, not everything we do on the server is render UI. So having, you know, an easy way to run other types of arbitrary code. Yeah, that sounds awesome. Excited for Server Actions. [00:05:25] +I think this, I think if you're going to have code that spans the server and the client, you know, it can't all be UI code, not everything we do on the server is render UI. So having, you know, an easy way to run other types of arbitrary code. Yeah, that sounds awesome. Excited for Server Actions. [05:25] -**Sebastien Lorber:** Yeah. I'm also excited for, for Server Actions. Maybe for another reason is also the, the support for Progressive Enhancement. Because so, so far Remix has shown that it's possible to, to have a great Progressive Enhancement story with React, but this kind of feature was lacking in in NextJS. And now they, they, they show that they really care about it. [00:05:49] +**Sebastien Lorber:** Yeah. I'm also excited for, for Server Actions. Maybe for another reason is also the, the support for Progressive Enhancement. Because so, so far Remix has shown that it's possible to, to have a great Progressive Enhancement story with React, but this kind of feature was lacking in in NextJS. And now they, they, they show that they really care about it. [05:49] -And you know, when you submit a form now the abstraction, the the abstraction make makes it possible to, to submit the form without JavaScript, without even direct being hydrated on the client. And the server is able to, to receive the form submission and and send the new HTML page. depending on if JavaScript is running on the client or not, the payload will not be the same. [00:06:16] +And you know, when you submit a form now the abstraction, the the abstraction make makes it possible to, to submit the form without JavaScript, without even direct being hydrated on the client. And the server is able to, to receive the form submission and and send the new HTML page. depending on if JavaScript is running on the client or not, the payload will not be the same. [06:16] -And actually, I think the NextJS markets this feature as Server Actions. But really I think the action prop is right, is a React Core concept. Now you can you can pass an action to a form in React and it can be a very string or callback. And, and depending on whether the JavaScript will run or not the, you will use one form or another in NextJS to support a progressive announcement or the submitting the form locally with a JavaScript. [00:06:51] +And actually, I think the NextJS markets this feature as Server Actions. But really I think the action prop is right, is a React Core concept. Now you can you can pass an action to a form in React and it can be a very string or callback. And, and depending on whether the JavaScript will run or not the, you will use one form or another in NextJS to support a progressive announcement or the submitting the form locally with a JavaScript. [06:51] -**Carl Vitullo:** Okay. Interesting. I didn't realize that this was a React concept that Next is looking to expose. [00:06:57] +**Carl Vitullo:** Okay. Interesting. I didn't realize that this was a React concept that Next is looking to expose. [06:57] -**Mark Erikson:** I think it's a plain HTML concept that they are extending. So the plain HTML form element has always had an `action` attribute that would, I think it defaults to POST, and that's why if you just have a plain HTML form and you submit it, the browser literally makes a post request to the server, right? [00:07:19] +**Mark Erikson:** I think it's a plain HTML concept that they are extending. So the plain HTML form element has always had an `action` attribute that would, I think it defaults to POST, and that's why if you just have a plain HTML form and you submit it, the browser literally makes a post request to the server, right? [07:19] -Uh, I think you can change it to be GET instead. And so I guess technically what the React team is doing is they're overloading the existing action attribute so that you can pass a function instead of a string. And if so, they, they wire things together on both ends. [00:07:37] +Uh, I think you can change it to be GET instead. And so I guess technically what the React team is doing is they're overloading the existing action attribute so that you can pass a function instead of a string. And if so, they, they wire things together on both ends. [07:37] -**Sebastien Lorber:** Actually, what you mean is the method, POST or GET is the method and action with the URL of the, the target endpoint of the form. [00:07:45] +**Sebastien Lorber:** Actually, what you mean is the method, POST or GET is the method and action with the URL of the, the target endpoint of the form. [07:45] -So somehow they just allowed to accept the callback. But I think on the, on the server, the, the callback is serialized to string by the compiler so that before hydration React is able to know where to post the form on the server. [00:08:02] +So somehow they just allowed to accept the callback. But I think on the, on the server, the, the callback is serialized to string by the compiler so that before hydration React is able to know where to post the form on the server. [08:02] -**Carl Vitullo:** Oh, interesting. Okay. So I think I see, I think I see what you're saying. [00:08:05] +**Carl Vitullo:** Oh, interesting. Okay. So I think I see, I think I see what you're saying. [08:05] -So I just put a little code snippet in the chat here. So there's this page component, it has a function defined inline. [00:08:12] +So I just put a little code snippet in the chat here. So there's this page component, it has a function defined inline. [08:12] -**Mark Erikson:** The key, the key thing is that it has the "use server" string inside, and this is where the compiler part comes into play. So similar to Remix, you've got code that could run on either side in the file and some code that only runs on the server in the file. And they have to have some way to delineate which code in that file is server only, and they're basically just gonna strip that out of the part that goes to the client. [00:08:40] +**Mark Erikson:** The key, the key thing is that it has the "use server" string inside, and this is where the compiler part comes into play. So similar to Remix, you've got code that could run on either side in the file and some code that only runs on the server in the file. And they have to have some way to delineate which code in that file is server only, and they're basically just gonna strip that out of the part that goes to the client. [08:40] -**Carl Vitullo:** Okay. That's interesting. Okay. So it doesn't need to be inline. That's good (laughs). I, I'm not a huge fan of this "use server" tag, but like, okay, sure. That's how, that's how it works, whatever. Um, it reminds me of an article I read recently talking about "colored functions" and how it's yeah, it just introduces multiple types of functions here. [00:08:59] +**Carl Vitullo:** Okay. That's interesting. Okay. So it doesn't need to be inline. That's good (laughs). I, I'm not a huge fan of this "use server" tag, but like, okay, sure. That's how, that's how it works, whatever. Um, it reminds me of an article I read recently talking about "colored functions" and how it's yeah, it just introduces multiple types of functions here. [08:59] -But the point I wanna make here, to me, this actually just reading this code and thinking about this as like, the compiler is extracting out the function, it seems almost more like a developer experience improvement on serverless. You know, because you could write a function like this that handles a single form, but it's pretty painful to do that with a serverless backend. [00:09:20] +But the point I wanna make here, to me, this actually just reading this code and thinking about this as like, the compiler is extracting out the function, it seems almost more like a developer experience improvement on serverless. You know, because you could write a function like this that handles a single form, but it's pretty painful to do that with a serverless backend. [09:20] -So having a compiler that will extract out that code and handle the packaging it into a serverless, you know, executable and putting it somewhere and inserting the url, or Yeah, inserting the URL into a form. That actually that's, that's actually really interesting to me. [00:09:37] +So having a compiler that will extract out that code and handle the packaging it into a serverless, you know, executable and putting it somewhere and inserting the url, or Yeah, inserting the URL into a form. That actually that's, that's actually really interesting to me. [09:37] -**Sebastien Lorber:** There is something to, to not be wrong about this snippet is that, you are not mixing server and client, code inside the same file. The whole component is a server component and the "use server" only expose the function to the public interface of the server, somehow. [00:09:55] +**Sebastien Lorber:** There is something to, to not be wrong about this snippet is that, you are not mixing server and client, code inside the same file. The whole component is a server component and the "use server" only expose the function to the public interface of the server, somehow. [09:55] -So I think the, the first reaction you have when you see the, the snippet is, you are able to somehow mix server and client side code in the same file. But it's not exactly that. [00:10:05] +So I think the, the first reaction you have when you see the, the snippet is, you are able to somehow mix server and client side code in the same file. But it's not exactly that. [10:05] -It's more like, inside your server component you can choose to render functions and some of them will get exposed to the public interface that the server runtime will create. So I just want to, to, to make sure that people don't make this confusion because the, the form is a server component. It's not a a client component. [00:10:26] +It's more like, inside your server component you can choose to render functions and some of them will get exposed to the public interface that the server runtime will create. So I just want to, to, to make sure that people don't make this confusion because the, the form is a server component. It's not a a client component. [10:26] -**Mark Erikson:** That, that does kind of go into, I guess my, my biggest concern with all this stuff, and that's trying to wrap your head around the mental model. My biggest personal problem is I just literally have not had a chance to use any of this. So I've been trying to understand it without actually using any of it in practice. [00:10:43] +**Mark Erikson:** That, that does kind of go into, I guess my, my biggest concern with all this stuff, and that's trying to wrap your head around the mental model. My biggest personal problem is I just literally have not had a chance to use any of this. So I've been trying to understand it without actually using any of it in practice. [10:43] -But it feels like trying to understand these boundaries between what's, what's a server component, what's a client component? Like as my Redux co-maintainer Lenz has pointed out, it's like, client components can run on the server, the phrases server and client don't necessarily have the meanings you think they do with this technology. Um, I actually wanted to link two other articles that I'll, or, well, an article and a post that I'll throw in here. [00:11:06] +But it feels like trying to understand these boundaries between what's, what's a server component, what's a client component? Like as my Redux co-maintainer Lenz has pointed out, it's like, client components can run on the server, the phrases server and client don't necessarily have the meanings you think they do with this technology. Um, I actually wanted to link two other articles that I'll, or, well, an article and a post that I'll throw in here. [11:06] -And I thought these did a pretty good job of discussing some of the, the pros, cons, concerns, and trade-offs with both like,, Server Components as a technology, and in general, what we're doing as we kind of mix and match with this code where you can have a database call and something that runs on the client in the same file, it starts to blur the lines. [00:11:30] +And I thought these did a pretty good job of discussing some of the, the pros, cons, concerns, and trade-offs with both like,, Server Components as a technology, and in general, what we're doing as we kind of mix and match with this code where you can have a database call and something that runs on the client in the same file, it starts to blur the lines. [11:30] -And we're doing this sort of in pursuit of developer experience, but it does bring up potential concerns around things like accidentally Exposing API's, keys, or secrets into the client if you're not careful enough about how you structure the code, or just trained to wrap your head around what pieces of code are going to run where, and I know Dan has said that, you know, in, in a lot of ways this simplifies how you teach React to people because you don't have to explain, "well, I, I make a fetch call when the useEffect" or "I have to go learn how to use React Query" or something like that. [00:12:08] +And we're doing this sort of in pursuit of developer experience, but it does bring up potential concerns around things like accidentally Exposing API's, keys, or secrets into the client if you're not careful enough about how you structure the code, or just trained to wrap your head around what pieces of code are going to run where, and I know Dan has said that, you know, in, in a lot of ways this simplifies how you teach React to people because you don't have to explain, "well, I, I make a fetch call when the useEffect" or "I have to go learn how to use React Query" or something like that. [12:08] -Instead you just, you're just making an async/await call inside of a component and it just works. And I see the point he's trying to make, but there are a lot more moving pieces involved here as well. And I don't have a great answer for how are we going to teach all this and what kind of problems are, are people going to run into as a result. [00:12:31] +Instead you just, you're just making an async/await call inside of a component and it just works. And I see the point he's trying to make, but there are a lot more moving pieces involved here as well. And I don't have a great answer for how are we going to teach all this and what kind of problems are, are people going to run into as a result. [12:31] -**Sebastien Lorber:** Yeah. By the way, there, it's worth mentioning that there is a little security issue that related to the Server Actions in NextJS, I will post in the chat. A tweet related to that is that if your server action captures a variable in its closure, actually this variable will be sent to the client inside the form as a hidden parameter, so that it'll be sent back to the server so that the, the closure is able to, to see this variable again, because unlike client components, the, the Server Components do not have state. [00:13:07] +**Sebastien Lorber:** Yeah. By the way, there, it's worth mentioning that there is a little security issue that related to the Server Actions in NextJS, I will post in the chat. A tweet related to that is that if your server action captures a variable in its closure, actually this variable will be sent to the client inside the form as a hidden parameter, so that it'll be sent back to the server so that the, the closure is able to, to see this variable again, because unlike client components, the, the Server Components do not have state. [13:07] -I, I mean, for example, if one server component serve your request, it might be in AWS US west 1, and then on the second request, it might be another data center that serves your request. So all the Server Components have to be stateless. And if you need to preserve state across closures inside your Server Components, they must be sent to the client. [00:13:31] +I, I mean, for example, if one server component serve your request, it might be in AWS US west 1, and then on the second request, it might be another data center that serves your request. So all the Server Components have to be stateless. And if you need to preserve state across closures inside your Server Components, they must be sent to the client. [13:31] -And currently this is a risk to expose secrets to the clients. So the React team said that they were thinking about encrypting the hidden parameters, but it's not ideal solution because of course you, you don't necessarily want to expose secrets even encrypted. [00:13:50] +And currently this is a risk to expose secrets to the clients. So the React team said that they were thinking about encrypting the hidden parameters, but it's not ideal solution because of course you, you don't necessarily want to expose secrets even encrypted. [13:50] -And I don't know what will be the, the solution and if a decision has been made, but it's worth knowing that there is a little security issue currently regarding the usage of Server Actions. [00:14:01] +And I don't know what will be the, the solution and if a decision has been made, but it's worth knowing that there is a little security issue currently regarding the usage of Server Actions. [14:01] -**Mark Erikson:** I actually just had a, a side flashback to the, the old classic ASP.net view state approach for serializing data to the client. [00:14:10] +**Mark Erikson:** I actually just had a, a side flashback to the, the old classic ASP.net view state approach for serializing data to the client. [14:10] -**Carl Vitullo:** But so we're, we're 20 minutes in. We've done one link, so we should probably move on (laughs). That's a lot to talk about though. Yeah. Sebastian, you wanna take us on to our next one? [00:14:20] +**Carl Vitullo:** But so we're, we're 20 minutes in. We've done one link, so we should probably move on (laughs). That's a lot to talk about though. Yeah. Sebastian, you wanna take us on to our next one? [14:20] ## React Native Skia - [William Candillon – The Joy of Painting with Skia | App.js Conf 2023](https://www.youtube.com/watch?v=Hfb_gpfCHzk) -**Sebastien Lorber:** There have been uh, three React Native conferences this month. There was AppJS in Poland, there was uh, Chain React in USA and there was a React Native Connection in Paris. I like particularly the talk of William Candillon that presented the progress with React Native Skia, which is the renderer used inside Flutter and inside Android and inside Chrome, and inside many of other things. [00:14:43] +**Sebastien Lorber:** There have been uh, three React Native conferences this month. There was AppJS in Poland, there was uh, Chain React in USA and there was a React Native Connection in Paris. I like particularly the talk of William Candillon that presented the progress with React Native Skia, which is the renderer used inside Flutter and inside Android and inside Chrome, and inside many of other things. [14:43] -And you can use it in React Native today, and it permits to, to somehow unlock many use case that that were not possible previously. The talk is presenting a few interesting things like the ability to create a screen transitions that are powered by OpenGL shaders and things like that, that's quite impressive. [00:15:03] +And you can use it in React Native today, and it permits to, to somehow unlock many use case that that were not possible previously. The talk is presenting a few interesting things like the ability to create a screen transitions that are powered by OpenGL shaders and things like that, that's quite impressive. [15:03] -**Carl Vitullo:** Interesting. So it's about, painting. So it's sort of like, is this like a React Native version of Canvas? Sort of? [00:15:11] +**Carl Vitullo:** Interesting. So it's about, painting. So it's sort of like, is this like a React Native version of Canvas? Sort of? [15:11] -**Mark Erikson:** Just as a little better background Skia is a C++ library for two-dimensional graphics. And my understanding is that most browsers actually use this to literally draw stuff on the screen in the first place, including implementing the HTML Canvas element. So it sounds like this is now, this library is now being exposed as something you can use from React Native to do custom graphics. [00:15:40] +**Mark Erikson:** Just as a little better background Skia is a C++ library for two-dimensional graphics. And my understanding is that most browsers actually use this to literally draw stuff on the screen in the first place, including implementing the HTML Canvas element. So it sounds like this is now, this library is now being exposed as something you can use from React Native to do custom graphics. [15:40] -**Sebastien Lorber:** Yeah, it's exactly that. The idea is that you have a canvas, you have some primitive that you can draw, you can use OpenGL shaders and things like that. [00:15:49] +**Sebastien Lorber:** Yeah, it's exactly that. The idea is that you have a canvas, you have some primitive that you can draw, you can use OpenGL shaders and things like that. [15:49] -In the beginning, I think, maybe last year they released the first proof of concept. And then there was Shopify that was interested in this lib and sponsored it. So now the, the development in is funded by Shopify. I think the first version was more of a proof of concept, and now it's more production ready. [00:16:09] +In the beginning, I think, maybe last year they released the first proof of concept. And then there was Shopify that was interested in this lib and sponsored it. So now the, the development in is funded by Shopify. I think the first version was more of a proof of concept, and now it's more production ready. [16:09] -I think one of the challenge in the beginning was also that it was not possible to interleave easily the, the canvas inside the native application because somehow the, the canvas was over the native views or it was under, and you have to, to do the trade off of deciding how to integrate the canvas inside your app. [00:16:28] +I think one of the challenge in the beginning was also that it was not possible to interleave easily the, the canvas inside the native application because somehow the, the canvas was over the native views or it was under, and you have to, to do the trade off of deciding how to integrate the canvas inside your app. [16:28] -So it was a bit complicated to achieve certain visual effects. And now the integration is better. The talk is showing some possible solutions to, to be able to integrate better with native views and things like that. And also to integrate better the canvas with Reanimated, which is the popular animation framework, for React Native today. [00:16:48] +So it was a bit complicated to achieve certain visual effects. And now the integration is better. The talk is showing some possible solutions to, to be able to integrate better with native views and things like that. And also to integrate better the canvas with Reanimated, which is the popular animation framework, for React Native today. [16:48] -**Carl Vitullo:** Interesting. Okay. Very cool. So I wonder if using the same primitives as Canvas and the browser, I don't know if this is the case, but I wonder if it will allow a lot more cross compatibility with that sort of graphics rendering. Yeah. That using the same primitive, the same, you know, base tool to bring that into, into native. [00:17:09] +**Carl Vitullo:** Interesting. Okay. Very cool. So I wonder if using the same primitives as Canvas and the browser, I don't know if this is the case, but I wonder if it will allow a lot more cross compatibility with that sort of graphics rendering. Yeah. That using the same primitive, the same, you know, base tool to bring that into, into native. [17:09] -That, that does seem like a really huge step. Yeah. [00:17:12] +That, that does seem like a really huge step. Yeah. [17:12] -**Sebastien Lorber:** I think it unlocks a lot of things and we are just in the beginning, yeah. [00:17:16] +**Sebastien Lorber:** I think it unlocks a lot of things and we are just in the beginning, yeah. [17:16] -**Carl Vitullo:** Yeah. You know, honestly, that reminds me of the effort to bring Flexbox rendering into Native. So, yeah, I mean, graphics rendering is really hard. It's also really powerful. So if we can have similar primitives for doing graphics rendering on both web and native, yeah, I could see just a little glimpse of what new features that would enable. Yeah. Very cool. That's pretty awesome. Cool. Okay, [00:17:40] +**Carl Vitullo:** Yeah. You know, honestly, that reminds me of the effort to bring Flexbox rendering into Native. So, yeah, I mean, graphics rendering is really hard. It's also really powerful. So if we can have similar primitives for doing graphics rendering on both web and native, yeah, I could see just a little glimpse of what new features that would enable. Yeah. Very cool. That's pretty awesome. Cool. Okay, [17:40] -I'll move this on to our next one. [00:17:42] +I'll move this on to our next one. [17:42] ## Struggles with Remix - [My Struggle With Remix](https://redd.one/blog/my-struggle-with-remix) -**Carl Vitullo:** Yeah. Um, I wanted to share a blog post about someone sharing their struggle with Remix. I think it's good to talk about not just what's great about things, but also where the rough edges are. Um, and this seems like a pretty measured and realistic perspective on where some of the rough parts on Remix are right now. [00:18:03] +**Carl Vitullo:** Yeah. Um, I wanted to share a blog post about someone sharing their struggle with Remix. I think it's good to talk about not just what's great about things, but also where the rough edges are. Um, and this seems like a pretty measured and realistic perspective on where some of the rough parts on Remix are right now. [18:03] -It talks about the developer experience and some of the struggles there. Routing is too magical is one of its points, which I, I do, I, I think I agree with a little bit. It basically has its own DSL, domain specific language, for routing where, as part of the file name, as part of the path for your routes, it does a lot of parsing out of that string and changing behavior based on that. [00:18:26] +It talks about the developer experience and some of the struggles there. Routing is too magical is one of its points, which I, I do, I, I think I agree with a little bit. It basically has its own DSL, domain specific language, for routing where, as part of the file name, as part of the path for your routes, it does a lot of parsing out of that string and changing behavior based on that. [18:26] -So like having to learn a brand new DSL for routing that you don't really have a lot of control or access into, outside of that, like that, all that, that all happens as part of the Remix dev and build server. It's not super inspectable and uh, definitely a little bit magical. [00:18:42] +So like having to learn a brand new DSL for routing that you don't really have a lot of control or access into, outside of that, like that, all that, that all happens as part of the Remix dev and build server. It's not super inspectable and uh, definitely a little bit magical. [18:42] -One of the categories of complaints it has is that it gives you enough rope to hang yourself which is both great and terrible. It, it is nice that it is so powerful, but part of the downside of having so much power is that it doesn't do a lot of things for you. [00:18:56] +One of the categories of complaints it has is that it gives you enough rope to hang yourself which is both great and terrible. It, it is nice that it is so powerful, but part of the downside of having so much power is that it doesn't do a lot of things for you. [18:56] -This author talks about needing to write a lot of supporting logic for handling things like static assets like you, you put a relative path to an image in your markdown, and then you have to write code that understands how to parse out that relative path and convert it into a, an absolute path when it's actually showing the page. [00:19:11] +This author talks about needing to write a lot of supporting logic for handling things like static assets like you, you put a relative path to an image in your markdown, and then you have to write code that understands how to parse out that relative path and convert it into a, an absolute path when it's actually showing the page. [19:11] -So, I, I, I, this seemed like a really good, I don't know, collection of some of the rough spots in Remix right now. [00:19:16] +So, I, I, I, this seemed like a really good, I don't know, collection of some of the rough spots in Remix right now. [19:16] -**Mark Erikson:** Uh, again, I, I have not used Remix, so I can't comment on the technical aspects here, but I, I really did appreciate this post because it was very clearly written. it was framed as "these are my experiences and pain points using it," not, "oh no, this tool is awful." it was actually like more of an attempt to say, how can we make this better rather than attempt to bash the tool or its authors. [00:19:43] +**Mark Erikson:** Uh, again, I, I have not used Remix, so I can't comment on the technical aspects here, but I, I really did appreciate this post because it was very clearly written. it was framed as "these are my experiences and pain points using it," not, "oh no, this tool is awful." it was actually like more of an attempt to say, how can we make this better rather than attempt to bash the tool or its authors. [19:43] -And I appreciate that. Like, there, there's just so many negativity and, you know, "tool X kills Y" being thrown around and I, I, I appreciate it when we can have reasoned debate and discussion about technical trade-offs rather than flame wars. [00:19:59] +And I appreciate that. Like, there, there's just so many negativity and, you know, "tool X kills Y" being thrown around and I, I, I appreciate it when we can have reasoned debate and discussion about technical trade-offs rather than flame wars. [19:59] -**Carl Vitullo:** Yeah. And I, I appreciate that in the, you know, in the intro setting off the whole post, he says, "I think Remix is a great framework. I will not be mentioning Remix advantages." Uh, it kind of, it reminds me of that scene in the Silicon Valley TV show a number of years ago where they're talking about their frustrations and they, they come up with an acronym for "Richard is great, but." You gotta get that outta the way you gotta "Remix is great, but." [00:20:23] +**Carl Vitullo:** Yeah. And I, I appreciate that in the, you know, in the intro setting off the whole post, he says, "I think Remix is a great framework. I will not be mentioning Remix advantages." Uh, it kind of, it reminds me of that scene in the Silicon Valley TV show a number of years ago where they're talking about their frustrations and they, they come up with an acronym for "Richard is great, but." You gotta get that outta the way you gotta "Remix is great, but." [20:23] -So I think this was a great way to, to focus on the challenges without having to extol all of its great virtues of which there are many, it has a lot of great things. [00:20:32] +So I think this was a great way to, to focus on the challenges without having to extol all of its great virtues of which there are many, it has a lot of great things. [20:32] -**Sebastien Lorber:** Yeah. But the, the author in the end, "I still would use it for a startup," so that's already quite nice. I think the conclusion was he wouldn't pick it again for a blog. I tried also to, to create my newsletter website with Remix in the past, and also I thought it was a bit it had some rough edge, but it was possible to use it, but maybe not the, the simplest solution. But also they focus maybe on low level primitives and a bit on the architecture side. And for example, I'm quite surprised that the author was looking for the, you know, the markdown images to be able to use the relative image path. I don't think it comes for free in many frameworks. [00:21:12] +**Sebastien Lorber:** Yeah. But the, the author in the end, "I still would use it for a startup," so that's already quite nice. I think the conclusion was he wouldn't pick it again for a blog. I tried also to, to create my newsletter website with Remix in the past, and also I thought it was a bit it had some rough edge, but it was possible to use it, but maybe not the, the simplest solution. But also they focus maybe on low level primitives and a bit on the architecture side. And for example, I'm quite surprised that the author was looking for the, you know, the markdown images to be able to use the relative image path. I don't think it comes for free in many frameworks. [21:12] -I know that does it, but it's not free, it's we have to implement it manually. So maybe NextJS does it. But I don't know. That's not something that for me come out of the box unless the framework is opinionated to where they're using MDX or something like that. But, otherwise not too surprised that this kind of feature is doesn't come outta the box. [00:21:34] +I know that does it, but it's not free, it's we have to implement it manually. So maybe NextJS does it. But I don't know. That's not something that for me come out of the box unless the framework is opinionated to where they're using MDX or something like that. But, otherwise not too surprised that this kind of feature is doesn't come outta the box. [21:34] -**Carl Vitullo:** Yeah. Agreed. He mentions. Gatsby doing this for him, and that wasn't my experience. I haven't used Gatsby extensively, you know, in any deep capacity for a number of years now, so maybe something changed, but I, I do remember having to write code that did exactly that when I used Gatsby in about 2018. So, yeah, I don't know. [00:21:52] +**Carl Vitullo:** Yeah. Agreed. He mentions. Gatsby doing this for him, and that wasn't my experience. I haven't used Gatsby extensively, you know, in any deep capacity for a number of years now, so maybe something changed, but I, I do remember having to write code that did exactly that when I used Gatsby in about 2018. So, yeah, I don't know. [21:52] -Cool. Mark, you wanna take us off? [00:21:53] +Cool. Mark, you wanna take us off? [21:53] ## You Might Not Need React Query - [You Might Not Need React Query](https://tkdodo.eu/blog/you-might-not-need-react-query) - [Using Apollo Client with Next.js 13](https://www.apollographql.com/blog/announcement/frontend/using-apollo-client-with-next-js-13-releasing-an-official-library-to-support-the-app-router/) -**Mark Erikson:** Yep. So continuing with the, the Next 13 and Server Components theme, a lot of the big questions within the community have been how do data fetching libraries like Apollo React Query, RTK Query, and SWR, work in conjunction with Next 13.4 and React Server Components, and the, the new app directory. [00:22:19] +**Mark Erikson:** Yep. So continuing with the, the Next 13 and Server Components theme, a lot of the big questions within the community have been how do data fetching libraries like Apollo React Query, RTK Query, and SWR, work in conjunction with Next 13.4 and React Server Components, and the, the new app directory. [22:19] -And there's a couple, couple big discussions and pieces of news on this front. One is that Dominik Dorfmeister, the maintainer of React Query, wrote a post entitled You Might Not Need React Query, and you should read it because it's, it's a really good post in general, like everything that Dominic writes. [00:22:38] +And there's a couple, couple big discussions and pieces of news on this front. One is that Dominik Dorfmeister, the maintainer of React Query, wrote a post entitled You Might Not Need React Query, and you should read it because it's, it's a really good post in general, like everything that Dominic writes. [22:38] -Some of the summary here is that , if you choose to do data fetching with React Server Components, well, React Query is a data fetching library and you just chose to use a different tool to solve that problem. That's not to say that React Server Components completely kill React Query because where and how you need that data or some, or if you need some of the specific features of React Query there, there are still very much use cases. [00:23:10] +Some of the summary here is that , if you choose to do data fetching with React Server Components, well, React Query is a data fetching library and you just chose to use a different tool to solve that problem. That's not to say that React Server Components completely kill React Query because where and how you need that data or some, or if you need some of the specific features of React Query there, there are still very much use cases. [23:10] -But it's, it's that same kind of question of, there's, you know, 3, 4, 5 tools available to solve this problem. If you pick one tool, you probably don't need the other tools that do some of the same thing. Another item is that my Redux co-maintainer, Lenz Weber, recently started working for Apollo and he works on Apollo Client in his day job and thinks about RTK Query in his free time. [00:23:34] +But it's, it's that same kind of question of, there's, you know, 3, 4, 5 tools available to solve this problem. If you pick one tool, you probably don't need the other tools that do some of the same thing. Another item is that my Redux co-maintainer, Lenz Weber, recently started working for Apollo and he works on Apollo Client in his day job and thinks about RTK Query in his free time. [23:34] -And he spent a couple months trying to work through Server Components and Apollo and figure out how these things even can work together at all. I'm still not clear on all the details, but he, he put up a RFC document that describes how Apollo and Server Components can even potentially fit together at the technical level. [00:23:59] +And he spent a couple months trying to work through Server Components and Apollo and figure out how these things even can work together at all. I'm still not clear on all the details, but he, he put up a RFC document that describes how Apollo and Server Components can even potentially fit together at the technical level. [23:59] -And then there was a blog post that accompanied that, where I believe they put out some kind of a proof of concept library that can help Apollo and Server Components sort of go together. We've been getting a lot of questions about like, so I wanna use Redux, but I also you wanna use Server Components. [00:24:16] +And then there was a blog post that accompanied that, where I believe they put out some kind of a proof of concept library that can help Apollo and Server Components sort of go together. We've been getting a lot of questions about like, so I wanna use Redux, but I also you wanna use Server Components. [24:16] -How do they fit together? And you know, like, to a certain extent, you know, the answer is they don't, you know, both at the, at the technical level and the conceptual level, that's sort of the same thing over here, but it's, it, there's still a lot of open questions around all this stuff. I think that Lenz's proof of concept library is doing some very specific hacks that only work with Next in terms of how it's able to serialize and stream data onto the client. [00:24:44] +How do they fit together? And you know, like, to a certain extent, you know, the answer is they don't, you know, both at the, at the technical level and the conceptual level, that's sort of the same thing over here, but it's, it, there's still a lot of open questions around all this stuff. I think that Lenz's proof of concept library is doing some very specific hacks that only work with Next in terms of how it's able to serialize and stream data onto the client. [24:44] -One thing I know when said is you wouldn't want to mix and match fetching data on the server and fetching the same piece of data on the client. It's like it either needs to be done via a server component or it needs to be fetched on the client, but you wouldn't do both for the same piece of data at the same time. [00:25:04] +One thing I know when said is you wouldn't want to mix and match fetching data on the server and fetching the same piece of data on the client. It's like it either needs to be done via a server component or it needs to be fetched on the client, but you wouldn't do both for the same piece of data at the same time. [25:04] -The short answer is no one knows what we're doing, we're all trying to figure it out, and there's a lot of open questions. [00:25:09] +The short answer is no one knows what we're doing, we're all trying to figure it out, and there's a lot of open questions. [25:09] -**Carl Vitullo:** Yeah. I mean, how does, when people ask, "how do these things fit together," I think like everyone is still figuring that out because Server Components are such a brand new concept. But you know, there, there's so many different types of server interactions. [00:25:23] +**Carl Vitullo:** Yeah. I mean, how does, when people ask, "how do these things fit together," I think like everyone is still figuring that out because Server Components are such a brand new concept. But you know, there, there's so many different types of server interactions. [25:23] -Like when you're first loading a page, like the data that you need is like, you need to do an auth handshake. Like, do you already have a valid token? You need to load the user settings data, you know, which is my, in my experience, there's like JSON blob for the user that contains, like, do they prefer dark mode, what feature flags are enabled for them? There's, you know, whatever data is initially necessary to render for the page. [00:25:47] +Like when you're first loading a page, like the data that you need is like, you need to do an auth handshake. Like, do you already have a valid token? You need to load the user settings data, you know, which is my, in my experience, there's like JSON blob for the user that contains, like, do they prefer dark mode, what feature flags are enabled for them? There's, you know, whatever data is initially necessary to render for the page. [25:47] -Then, okay, sure. All of that stuff's loaded. The page is rendered. They're clicking around. Then they need to, you know, they scroll down on Reddit and they need to load more content. Or they submit, they click an upvote button and they need to send something back. Like, all of these are different. [00:26:03] +Then, okay, sure. All of that stuff's loaded. The page is rendered. They're clicking around. Then they need to, you know, they scroll down on Reddit and they need to load more content. Or they submit, they click an upvote button and they need to send something back. Like, all of these are different. [26:03] -Fundamentally, they are server interactions, like an HTTP request is made, A response is sent, whether that's JSON or HTML or whatever. So like superficially, they're all server interactions, but like categorically, like semantically for the user, for the app, they all have very different constraints associated with them. [00:26:24] +Fundamentally, they are server interactions, like an HTTP request is made, A response is sent, whether that's JSON or HTML or whatever. So like superficially, they're all server interactions, but like categorically, like semantically for the user, for the app, they all have very different constraints associated with them. [26:24] -And so like React Server Components very helpful for the first set of those things. Like as you're hydrating, as you're rendering the first HTML that the user will see and interact with, I absolutely understand how Server Components interact with that category of data fetching. But then like the, you know, then there is still the client side mode, like the, if you're doing an infinite scroll interaction, like there is no, the server has nothing to do with that. [00:26:51] +And so like React Server Components very helpful for the first set of those things. Like as you're hydrating, as you're rendering the first HTML that the user will see and interact with, I absolutely understand how Server Components interact with that category of data fetching. But then like the, you know, then there is still the client side mode, like the, if you're doing an infinite scroll interaction, like there is no, the server has nothing to do with that. [26:51] -The server doesn't even know where on the page you are. It has no way of observing that. So that is purely a client side interaction. So, yeah, I, I don't know. I feel like where does this fit in? It is it, it's new. It's, it's a new space. You know, it replaces some of the data fetch, but it doesn't replace everything. [00:27:11] +The server doesn't even know where on the page you are. It has no way of observing that. So that is purely a client side interaction. So, yeah, I, I don't know. I feel like where does this fit in? It is it, it's new. It's, it's a new space. You know, it replaces some of the data fetch, but it doesn't replace everything. [27:11] -**Mark Erikson:** Uh, and another couple examples I think Lenz was pointing to was that Server Components are kind of limited in the sense that it's, it's another way to pass down props to client components. You know, like Apollo has this very powerful normalized cache, so if you like it, it keeps track of items by type and by ID so that it's only re fetching, you know, like the, the three missing to-dos you haven't grabbed out of the 100 that you already have already. [00:27:41] +**Mark Erikson:** Uh, and another couple examples I think Lenz was pointing to was that Server Components are kind of limited in the sense that it's, it's another way to pass down props to client components. You know, like Apollo has this very powerful normalized cache, so if you like it, it keeps track of items by type and by ID so that it's only re fetching, you know, like the, the three missing to-dos you haven't grabbed out of the 100 that you already have already. [27:41] -And I don't think Server Components can necessarily help with the normalized data use case, and I don't think they can help with the ongoing push subscription use case either. [00:27:53] +And I don't think Server Components can necessarily help with the normalized data use case, and I don't think they can help with the ongoing push subscription use case either. [27:53] -**Sebastien Lorber:** And I think one of the case that Dominik presented was, for the infinite scroll. The idea, for example, was the server component would render, the, the first part of the, the infinite call, maybe the first page and the React Query would be able to kick in later. [00:28:11] +**Sebastien Lorber:** And I think one of the case that Dominik presented was, for the infinite scroll. The idea, for example, was the server component would render, the, the first part of the, the infinite call, maybe the first page and the React Query would be able to kick in later. [28:11] -And you would use React Query for the, for the upcoming page, the, the second page, the third page, and things like that. [00:28:18] +And you would use React Query for the, for the upcoming page, the, the second page, the third page, and things like that. [28:18] -**Mark Erikson:** Yeah. So a lot of things to be figured out here. Yeah. [00:28:22] +**Mark Erikson:** Yeah. So a lot of things to be figured out here. Yeah. [28:22] -**Carl Vitullo:** Yeah, definitely. Cool. Sebastian, do you have another link? [00:28:25] +**Carl Vitullo:** Yeah, definitely. Cool. Sebastian, do you have another link? [28:25] ## Expo Router v2 - [Write Once, Route Everywhere: File System-based Navigation for Native Apps](https://www.youtube.com/watch?v=608r8etX_cg) -**Sebastien Lorber:** Uh, maybe I can just give some little news about the other things that happen that React Native conferences because I know that you won't cover much React Native. [00:28:36] +**Sebastien Lorber:** Uh, maybe I can just give some little news about the other things that happen that React Native conferences because I know that you won't cover much React Native. [28:36] -Maybe the most important one is the announcement of Expo Router version two. And I think it's important because it shows that actually the using Expo and React Native. For the web is becoming something that is quite serious. I mean, the first version was somehow like a Create React App, but using Ative for creating a website. [00:28:58] +Maybe the most important one is the announcement of Expo Router version two. And I think it's important because it shows that actually the using Expo and React Native. For the web is becoming something that is quite serious. I mean, the first version was somehow like a Create React App, but using Ative for creating a website. [28:58] -So it was not so great. It was working because you were able to create an application with React Native and published on the web, but as it was only clientside routing, it was a bit limited and you couldn't really use it for many use case, for example, when you need SEO and anything like that. And clearly the, the Expo Router is progressing to making this much more production ready making less compromises when you create a web application using Expo. [00:29:31] +So it was not so great. It was working because you were able to create an application with React Native and published on the web, but as it was only clientside routing, it was a bit limited and you couldn't really use it for many use case, for example, when you need SEO and anything like that. And clearly the, the Expo Router is progressing to making this much more production ready making less compromises when you create a web application using Expo. [29:31] -For example, this new version will have static routes, so you will be able to pregenerate a static website from your Expo app that you can publish on Netlify or Vercel or, whatever. There are also features that are interesting. For example, universal linking, which means that you use the, the URL forwarding on the mobile app. And this gives a lot of interesting benefits, like the ability to seamlessly transition from your web app to your mobile app and to have universal links. [00:30:00] +For example, this new version will have static routes, so you will be able to pregenerate a static website from your Expo app that you can publish on Netlify or Vercel or, whatever. There are also features that are interesting. For example, universal linking, which means that you use the, the URL forwarding on the mobile app. And this gives a lot of interesting benefits, like the ability to seamlessly transition from your web app to your mobile app and to have universal links. [30:00] -For example, you, you tap a link on an email that you receive on, on mobile and we, it'll open the mobile app if you have it installed, or it'll open the website if you don't have it installed. And there are other things that maybe I should just keep it simple. Expo Router is bringing maybe a, a good experience for the developing website using React Native technologies. [00:30:25] +For example, you, you tap a link on an email that you receive on, on mobile and we, it'll open the mobile app if you have it installed, or it'll open the website if you don't have it installed. And there are other things that maybe I should just keep it simple. Expo Router is bringing maybe a, a good experience for the developing website using React Native technologies. [30:25] -And I think it's important because we, we want a shortcut, and I think it's exciting and maybe eventually Expo will catch up on the web with other frameworks and provide more and more features and I don't know, maybe compared with NextJS, someday, I hope it'll be the case. [00:30:41] +And I think it's important because we, we want a shortcut, and I think it's exciting and maybe eventually Expo will catch up on the web with other frameworks and provide more and more features and I don't know, maybe compared with NextJS, someday, I hope it'll be the case. [30:41] -**Carl Vitullo:** Yeah, interesting. [00:30:43] +**Carl Vitullo:** Yeah, interesting. [30:43] -My experience with trying to do things and React Native has been the story around navigation is so confusing and different from what I'm used to on the web. You know, like the React promise of "learn once write anywhere" has not been true so far in my experience. Just because the fundamental, the, the base assumptions on mobile for, how do you navigate within the application are so, so different. It, it is learning a brand new context and so it's not learned once I, I do have to learn twice. Yeah. Hmm. [00:31:15] +My experience with trying to do things and React Native has been the story around navigation is so confusing and different from what I'm used to on the web. You know, like the React promise of "learn once write anywhere" has not been true so far in my experience. Just because the fundamental, the, the base assumptions on mobile for, how do you navigate within the application are so, so different. It, it is learning a brand new context and so it's not learned once I, I do have to learn twice. Yeah. Hmm. [31:15] -Seeing some file system based navigation show up in React Native, anything that brings the experience of navigation on React Native to something more familiar for Web concepts. I'm excited to see that. That makes, that makes a lot of sense. It seems like a big improvement. [00:31:31] +Seeing some file system based navigation show up in React Native, anything that brings the experience of navigation on React Native to something more familiar for Web concepts. I'm excited to see that. That makes, that makes a lot of sense. It seems like a big improvement. [31:31] -**Sebastien Lorber:** Yeah. It's not easy to master the navigation in React Native in the beginning. [00:31:36] +**Sebastien Lorber:** Yeah. It's not easy to master the navigation in React Native in the beginning. [31:36] -And I think for example, if you look at Expo Router, there are some conventions or things that are not exactly the same as in NextJS because maybe, you know, when you, you target all the platforms, you, you need to think about a few things that NextJS doesn't have to, to think about because As they only target the web they only need to to create conventions that work on the web. [00:31:58] +And I think for example, if you look at Expo Router, there are some conventions or things that are not exactly the same as in NextJS because maybe, you know, when you, you target all the platforms, you, you need to think about a few things that NextJS doesn't have to, to think about because As they only target the web they only need to to create conventions that work on the web. [31:58] -But maybe Expo Router needs to, to find some abstractions that work for free platforms instead of just one (chuckles). [00:32:06] +But maybe Expo Router needs to, to find some abstractions that work for free platforms instead of just one (chuckles). [32:06] -**Carl Vitullo:** Yeah, for sure. [00:32:07] +**Carl Vitullo:** Yeah, for sure. [32:07] ## Improving Performance with HTTP Streaming - [Improving Performance with HTTP Streaming](https://medium.com/airbnb-engineering/improving-performance-with-http-streaming-ba9e72c66408) -**Carl Vitullo:** I'll, kick us off with our next link. This is, so this is a, a blog post from Airbnb engineering. Airbnb has a history of releasing some pretty influential blog posts on their engineering practices. I know esp, especially in the context of React Native, the Airbnb blog post of, "we're moving away from React Native," uh, still has, I think they wrote that like six years ago and it still has echoes on the ecosystem. [00:32:33] +**Carl Vitullo:** I'll, kick us off with our next link. This is, so this is a, a blog post from Airbnb engineering. Airbnb has a history of releasing some pretty influential blog posts on their engineering practices. I know esp, especially in the context of React Native, the Airbnb blog post of, "we're moving away from React Native," uh, still has, I think they wrote that like six years ago and it still has echoes on the ecosystem. [32:33] -But yeah, so they, they, I saw this, you know, improving performance with HDP streaming and it's not directly about React. But I think that the concepts that they're talking about have a lot of overlap with React Server Components because ultimately, you know, the goal for React Server Components is improving first load performance. And so this is one example of a first load performance improvement that can be done entirely in isolation from React and even from JavaScript. [00:33:02] +But yeah, so they, they, I saw this, you know, improving performance with HDP streaming and it's not directly about React. But I think that the concepts that they're talking about have a lot of overlap with React Server Components because ultimately, you know, the goal for React Server Components is improving first load performance. And so this is one example of a first load performance improvement that can be done entirely in isolation from React and even from JavaScript. [33:02] -Like everything they talk about is an HTML level optimization. But it's also, it's a good background reader on things like network waterfalls, early flush talks about sequencing of loading assets, which I, I think it's, these are things that I had to learn on sort of by trial and error, just sort of realizing like, "Ooh, this has gone badly and I need to figure out how to make it better." [00:33:25] +Like everything they talk about is an HTML level optimization. But it's also, it's a good background reader on things like network waterfalls, early flush talks about sequencing of loading assets, which I, I think it's, these are things that I had to learn on sort of by trial and error, just sort of realizing like, "Ooh, this has gone badly and I need to figure out how to make it better." [33:25] -And in researching those things, learned a lot of the concepts that are discussed here. So I, I thought this was a really good framing for sort of a background reader on concepts that will be very important to understand as code that takes advantage of React Server Components is being written. [00:33:43] +And in researching those things, learned a lot of the concepts that are discussed here. So I, I thought this was a really good framing for sort of a background reader on concepts that will be very important to understand as code that takes advantage of React Server Components is being written. [33:43] -Cool. And I guess that's all we gotta say on it (laughter). Yep. Cool. Mark, what do you got? [00:33:50] +Cool. And I guess that's all we gotta say on it (laughter). Yep. Cool. Mark, what do you got? [33:50] ## React Canary Releases - [React Canaries: Enabling Incremental Feature Rollout Outside Meta](https://react.dev/blog/2023/05/03/react-canaries) -**Mark Erikson:** So the, the React team put up a blog post announcing what they're calling Canary version releases of React. So historically the React team has primarily delivered React as your standard semantic versioning releases. [00:34:05] +**Mark Erikson:** So the, the React team put up a blog post announcing what they're calling Canary version releases of React. So historically the React team has primarily delivered React as your standard semantic versioning releases. [34:05] -So 18.0 major, 18.1 minor, 18.2 minor. And they've also had an experimental channel, which as the post points out, they'd also referred to as their "next" channel which were just daily experimental daily builds of React, which. In addition to being built every day, also had a bunch of feature flags turned on so that work in progress, experimental features were included. [00:34:34] +So 18.0 major, 18.1 minor, 18.2 minor. And they've also had an experimental channel, which as the post points out, they'd also referred to as their "next" channel which were just daily experimental daily builds of React, which. In addition to being built every day, also had a bunch of feature flags turned on so that work in progress, experimental features were included. [34:34] -And we've actually been using an experimental build of React at my day job Replay, for a long time now because we've been doing some things with like React suspense in our code base, and those relied on methods that only existed in the experimental builds, not in the public, like 18.1. 18.2 builds. [00:34:54] +And we've actually been using an experimental build of React at my day job Replay, for a long time now because we've been doing some things with like React suspense in our code base, and those relied on methods that only existed in the experimental builds, not in the public, like 18.1. 18.2 builds. [34:54] -And if you were to go look at NextJS, my understanding is that they have been shipping specific ver like pre-release versions of React with Next for a while now, in order to also make use of some of these not yet final features, and this is actually bringing up a problem for a couple reasons. [00:35:18] +And if you were to go look at NextJS, my understanding is that they have been shipping specific ver like pre-release versions of React with Next for a while now, in order to also make use of some of these not yet final features, and this is actually bringing up a problem for a couple reasons. [35:18] -One is that there's a lot of confusions about what features are actually ready for, for production use. Another is that, you know, you see some people complaining that, well, you know, Next is getting kinda like an unfair advantage in being able to use these features. And third, like it's, it's actually been like a year since React 18.2 came out and we, we, I actually have no idea when 18.3 will even be released. [00:35:44] +One is that there's a lot of confusions about what features are actually ready for, for production use. Another is that, you know, you see some people complaining that, well, you know, Next is getting kinda like an unfair advantage in being able to use these features. And third, like it's, it's actually been like a year since React 18.2 came out and we, we, I actually have no idea when 18.3 will even be released. [35:44] -So with this blog post, the React team is announcing that they're going to start releasing a series of canary builds, which are somewhere between like a daily, just whatever is at the tip of, of main build and an official public semantic version in release. So that Canary builds will have these experimental features turned on. [00:36:08] +So with this blog post, the React team is announcing that they're going to start releasing a series of canary builds, which are somewhere between like a daily, just whatever is at the tip of, of main build and an official public semantic version in release. So that Canary builds will have these experimental features turned on. [36:08] -And they will actually say ahead of time, here's which ones are basically stable or not. And they're actually encouraging frameworks and, and other packages to try out these features and even say, and even go ahead and use them for real, but to like pin what version you're using to a specific canary release. Not just like whatever one is, is the most recent. [00:36:33] +And they will actually say ahead of time, here's which ones are basically stable or not. And they're actually encouraging frameworks and, and other packages to try out these features and even say, and even go ahead and use them for real, but to like pin what version you're using to a specific canary release. Not just like whatever one is, is the most recent. [36:33] -And the comment is that sometimes they work for a long time on some of these features and sometimes a bunch of these features overlap and they, they might even be ready before the React team decides to make a new official semantic version of your release. [00:36:48] +And the comment is that sometimes they work for a long time on some of these features and sometimes a bunch of these features overlap and they, they might even be ready before the React team decides to make a new official semantic version of your release. [36:48] -So it, it's good because it's kind of making that like, here's here's some of the work in progress stuff available in a somewhat more official way. It's also really confusing because. It's hard to keep track of what pieces are actually ready or not. And there's, there's a couple examples of this. So like, eight months or a year ago, the React team published an RFC where they announced there was gonna be a new hook called use, which was, it would let you actually kinda like unwrap and await a promise in a, in like a client component. [00:37:21] +So it, it's good because it's kind of making that like, here's here's some of the work in progress stuff available in a somewhat more official way. It's also really confusing because. It's hard to keep track of what pieces are actually ready or not. And there's, there's a couple examples of this. So like, eight months or a year ago, the React team published an RFC where they announced there was gonna be a new hook called use, which was, it would let you actually kinda like unwrap and await a promise in a, in like a client component. [37:21] -And that RFC was published and there were a lot of comments mostly complaining about the name. And the RFC said there will be a follow up RFC talking about some kind of new caching capability. And like, there's been nothing published about it since then. And frankly, we, like we library maintainers roll, like, "uh, is this thing dead or what?" [00:37:42] +And that RFC was published and there were a lot of comments mostly complaining about the name. And the RFC said there will be a follow up RFC talking about some kind of new caching capability. And like, there's been nothing published about it since then. And frankly, we, like we library maintainers roll, like, "uh, is this thing dead or what?" [37:42] -But apparently it's already like shipped and being used in production in Next 13.4. And so there's a lot of confusion about like, what is the status of these features? So hopefully the Canary builds will ha help make it a little clearer when these features are ready to actually try out. I've also had some discussions with React team members saying like, it would be really helpful if there was like a public list of what features the React team is working on and what their current status is. [00:38:11] +But apparently it's already like shipped and being used in production in Next 13.4. And so there's a lot of confusion about like, what is the status of these features? So hopefully the Canary builds will ha help make it a little clearer when these features are ready to actually try out. I've also had some discussions with React team members saying like, it would be really helpful if there was like a public list of what features the React team is working on and what their current status is. [38:11] -Kind of similar to how TC 39 develops new JavaScript features. Like is it, stage zero, we have an idea. Stage one, proof of concept. Stage two, it mostly works. Stage three, it's almost ready. Stage four, done. Something like that would really be helpful for the community to understand things, but at least these canary builds are a step in the right direction where it's like a little more ready to try out. [00:38:35] +Kind of similar to how TC 39 develops new JavaScript features. Like is it, stage zero, we have an idea. Stage one, proof of concept. Stage two, it mostly works. Stage three, it's almost ready. Stage four, done. Something like that would really be helpful for the community to understand things, but at least these canary builds are a step in the right direction where it's like a little more ready to try out. [38:35] -**Carl Vitullo:** It's interesting that there's been that much confusion from library maintainers around, really like, what's part of React. I'm a little surprised to hear that that's been a point of confusion because that, that really does seem like a very, very important for both the React team and for library maintainers to both have a shared understanding of, and the core team has definitely been very vocal about being interested in soliciting feedback from and being in dialogue with library maintainers. [00:39:04] +**Carl Vitullo:** It's interesting that there's been that much confusion from library maintainers around, really like, what's part of React. I'm a little surprised to hear that that's been a point of confusion because that, that really does seem like a very, very important for both the React team and for library maintainers to both have a shared understanding of, and the core team has definitely been very vocal about being interested in soliciting feedback from and being in dialogue with library maintainers. [39:04] -So that seems like a relatively large communications miss on something that they have talked about being very interested in doing well. [00:39:11] +So that seems like a relatively large communications miss on something that they have talked about being very interested in doing well. [39:11] -**Mark Erikson:** Yeah, and I, I had some in-person conversations with Eli and Lily from the React team at a couple different conferences. It was, it was almost like they were trying to do a listening tour. [00:39:22] +**Mark Erikson:** Yeah, and I, I had some in-person conversations with Eli and Lily from the React team at a couple different conferences. It was, it was almost like they were trying to do a listening tour. [39:22] -Like, let's go out, talk, talk to folks in the community, get the pulse of what's going on, hear people's complaints and, and see what we can do about it. I definitely want to give 'em credit for how willing they were to listen to things. I'm hopeful that some of these ideas, like, could you give us like a, a status page of the features and stuff like that will come out of some of those discussions? [00:39:44] +Like, let's go out, talk, talk to folks in the community, get the pulse of what's going on, hear people's complaints and, and see what we can do about it. I definitely want to give 'em credit for how willing they were to listen to things. I'm hopeful that some of these ideas, like, could you give us like a, a status page of the features and stuff like that will come out of some of those discussions? [39:44] -**Carl Vitullo:** I like the point you made about using TC 39 as a model perhaps, because I think that that framework for feature prioritization and, you know, communicating what's under consideration. I think that that did come about for similar reasons where there were a lot of stakeholders, there were a lot of interested parties who wanted to advance the state of the web in the case of TC 39, the web and JavaScript, well, I guess JavaScript specifically for TC 39, but there were a lot of people who were interested in having a seat at the table, and so they figured out, they put together that mode of communication. [00:40:21] +**Carl Vitullo:** I like the point you made about using TC 39 as a model perhaps, because I think that that framework for feature prioritization and, you know, communicating what's under consideration. I think that that did come about for similar reasons where there were a lot of stakeholders, there were a lot of interested parties who wanted to advance the state of the web in the case of TC 39, the web and JavaScript, well, I guess JavaScript specifically for TC 39, but there were a lot of people who were interested in having a seat at the table, and so they figured out, they put together that mode of communication. [40:21] -And it's, it seems like React is now in a similar place where it occupies a very foundational place in the web ecosystem. You know, it's certainly not as broad as JavaScript does. It's inherently, well, I was gonna say, it's inherently a subset of JavaScript, but you know, I guess with React Native, it kind of, isn't it, it does go a little broader than web and JavaScript, which is interesting. [00:40:44] +And it's, it seems like React is now in a similar place where it occupies a very foundational place in the web ecosystem. You know, it's certainly not as broad as JavaScript does. It's inherently, well, I was gonna say, it's inherently a subset of JavaScript, but you know, I guess with React Native, it kind of, isn't it, it does go a little broader than web and JavaScript, which is interesting. [40:44] -But yeah. You know, maybe that is, maybe that is a model that they could look towards and yeah, I guess if they're doing a listening tour right now, I'll be curious to see what they come back to the community with over the Next couple of months. [00:40:57] +But yeah. You know, maybe that is, maybe that is a model that they could look towards and yeah, I guess if they're doing a listening tour right now, I'll be curious to see what they come back to the community with over the Next couple of months. [40:57] -**Sebastien Lorber:** Yeah. Well, something I found interesting is that, for example in, in the experimental builds of React that NextJS is using, there, there are two new hooks called useOptimistic and useFormStatus that permits to the Server Actions. [00:41:12] +**Sebastien Lorber:** Yeah. Well, something I found interesting is that, for example in, in the experimental builds of React that NextJS is using, there, there are two new hooks called useOptimistic and useFormStatus that permits to the Server Actions. [41:12] -And they actually are documented in the NextJS documentation, but they are not on the official React documentation. So you, you have to go to the NextJS documentation to, to read more about them. [00:41:26] +And they actually are documented in the NextJS documentation, but they are not on the official React documentation. So you, you have to go to the NextJS documentation to, to read more about them. [41:26] -**Mark Erikson:** Yeah. Th this, this was one of the points I specifically brought up, even, even at the uh, React Summit conference a a couple days ago. [00:41:31] +**Mark Erikson:** Yeah. Th this, this was one of the points I specifically brought up, even, even at the uh, React Summit conference a a couple days ago. [41:31] -It's like, I, I realize that, like Dan has, 70 to 80% of this stuff is quote unquote "React". You know, like that, you know, `action={someFunction}` thing is built into React. It's not a Next specific feature, but that also means that there really ought to be information in the React docs about a lot of this stuff. [00:41:55] +It's like, I, I realize that, like Dan has, 70 to 80% of this stuff is quote unquote "React". You know, like that, you know, `action={someFunction}` thing is built into React. It's not a Next specific feature, but that also means that there really ought to be information in the React docs about a lot of this stuff. [41:55] -And I, I realize the React team has, you know, limited number of people, limited amount resources, they, and a lot of the stuff is in flight. They can't publish docs on everything right this second, but I would not have expected to look at the Next docs for a React hook specifically. And, and it feels like there is very much a gap in confusion about some of that right now. [00:42:17] +And I, I realize the React team has, you know, limited number of people, limited amount resources, they, and a lot of the stuff is in flight. They can't publish docs on everything right this second, but I would not have expected to look at the Next docs for a React hook specifically. And, and it feels like there is very much a gap in confusion about some of that right now. [42:17] -**Sebastien Lorber:** Yeah. But I think, for Docusaurus, we have been using Canary release, and it's a nice way for them to get feedback from the NextJS team before presenting things publicly to broader audience. So for Docusaurus it has, it has been great to be in beta for long because at, at that time, lots of people were adopting the, the betters of Docusaurus and I was able to get a lot of feedback on, you, you merge a pull request and then one week after you already get feedback on it, even if there is no public release, because people get used to, to using Canary version of your project. [00:42:57] +**Sebastien Lorber:** Yeah. But I think, for Docusaurus, we have been using Canary release, and it's a nice way for them to get feedback from the NextJS team before presenting things publicly to broader audience. So for Docusaurus it has, it has been great to be in beta for long because at, at that time, lots of people were adopting the, the betters of Docusaurus and I was able to get a lot of feedback on, you, you merge a pull request and then one week after you already get feedback on it, even if there is no public release, because people get used to, to using Canary version of your project. [42:57] -And I think also integrating a canary in NextJS like that permits to somehow give the, the new React versions to a broader audience. But we weren't necessarily exposing all the new APIs at once because they're hidden behind abstractions, for example, maybe there are some React APIs that NextJS is using today, but they're not they're not exposed to the, to the users of NextJS app router because they're only used internally inside the inside NextJS [00:43:31] +And I think also integrating a canary in NextJS like that permits to somehow give the, the new React versions to a broader audience. But we weren't necessarily exposing all the new APIs at once because they're hidden behind abstractions, for example, maybe there are some React APIs that NextJS is using today, but they're not they're not exposed to the, to the users of NextJS app router because they're only used internally inside the inside NextJS [43:31] -**Carl Vitullo:** I think you're right, Mark, about it being unexpected to go to the Next documentation to read something about a beta React hook. I'm sure that there's all sorts of reasons why that was the, you know, most straightforward, most obvious place to put that information. [00:43:47] +**Carl Vitullo:** I think you're right, Mark, about it being unexpected to go to the Next documentation to read something about a beta React hook. I'm sure that there's all sorts of reasons why that was the, you know, most straightforward, most obvious place to put that information. [43:47] -Like, you know, if, if Next is the only place where you can use this right now, I could see why it makes intuitive, logical sense to put that information in those docs. But, given that there has been a lot of confusion and uncertainty and handwringing over the relationship between the React core team and Next specifically, you know, that seems like the sort of communication, I was gonna say communication gap, but maybe not a gap so much as just sending some more signal than you intended. [00:44:18] +Like, you know, if, if Next is the only place where you can use this right now, I could see why it makes intuitive, logical sense to put that information in those docs. But, given that there has been a lot of confusion and uncertainty and handwringing over the relationship between the React core team and Next specifically, you know, that seems like the sort of communication, I was gonna say communication gap, but maybe not a gap so much as just sending some more signal than you intended. [44:18] -The words they're saying is Next does not have special treatment, but. If Next, if you know the beta features are coming out, are being documented from Next first, and actually not even first from Next only at the moment, then that certainly seems to undercut the words of the message, if nothing else. [00:44:38] +The words they're saying is Next does not have special treatment, but. If Next, if you know the beta features are coming out, are being documented from Next first, and actually not even first from Next only at the moment, then that certainly seems to undercut the words of the message, if nothing else. [44:38] -Yeah. Interesting. [00:44:39] +Yeah. Interesting. [44:39] -**Sebastien Lorber:** And something I just thought about it, but if you look at the Remix team somehow, I, I feel the communication is completely different and the way they approach adding new features has been different in the past. For example they added things in Remix first and then they're trying to backward things to React Router while on for React and NextJS, I think it's a bit the opposite. [00:45:04] +**Sebastien Lorber:** And something I just thought about it, but if you look at the Remix team somehow, I, I feel the communication is completely different and the way they approach adding new features has been different in the past. For example they added things in Remix first and then they're trying to backward things to React Router while on for React and NextJS, I think it's a bit the opposite. [45:04] -They try to, to build the abstraction first on, on the React side and then use it on NextJS to dog food. But the, the abstractions on React are working rocky, but maybe this new should be first introduced in NextJS, and if this works great for NextJS users, they could backward them to, to React too. [00:45:26] +They try to, to build the abstraction first on, on the React side and then use it on NextJS to dog food. But the, the abstractions on React are working rocky, but maybe this new should be first introduced in NextJS, and if this works great for NextJS users, they could backward them to, to React too. [45:26] -**Carl Vitullo:** Oh, oh, interesting. I see what you're saying. Yeah. That's an interesting thought too. Just sort of a, yeah, we're getting into all the subtleties of PR and comms and API design. All the intersection of marketing and development and developer relations. Yeah. Interesting. [00:45:42] +**Carl Vitullo:** Oh, oh, interesting. I see what you're saying. Yeah. That's an interesting thought too. Just sort of a, yeah, we're getting into all the subtleties of PR and comms and API design. All the intersection of marketing and development and developer relations. Yeah. Interesting. [45:42] -**Mark Erikson:** May, maybe, maybe some of the the Next tech writers should actually be filing PRs against the React core docs instead. [00:45:49] +**Mark Erikson:** May, maybe, maybe some of the the Next tech writers should actually be filing PRs against the React core docs instead. [45:49] -**Carl Vitullo:** Ooh, ooh. Interesting. Gauntlet thrown (laughs). [00:45:53] +**Carl Vitullo:** Ooh, ooh. Interesting. Gauntlet thrown (laughs). [45:53] -Cool. Should we go onto the lightning round? [00:45:55] +Cool. Should we go onto the lightning round? [45:55] -**Mark Erikson:** Yep. [00:45:56] +**Mark Erikson:** Yep. [45:56] ## Lightning round @@ -352,46 +352,46 @@ Cool. Should we go onto the lightning round? [00:45:55] - [Client-side rendering of HTML and interactivity](https://web.dev/client-side-rendering-of-html-and-interactivity/) -**Carl Vitullo:** Perfect. Client side rendering of HTML and interactivity, a new post on the web.dev from Google. [00:46:04] +**Carl Vitullo:** Perfect. Client side rendering of HTML and interactivity, a new post on the web.dev from Google. [46:04] -Uh, it's pretty similar in theme to my, you know, my last link from Airbnb, improving performance with HTTP streaming. Just, I think it has a lot of information about good foundational concepts that will help people be more prepared for writing code when React Server Components are more broadly available. [00:46:21] +Uh, it's pretty similar in theme to my, you know, my last link from Airbnb, improving performance with HTTP streaming. Just, I think it has a lot of information about good foundational concepts that will help people be more prepared for writing code when React Server Components are more broadly available. [46:21] -Yeah, Mark? [00:46:22] +Yeah, Mark? [46:22] ### React Summit, Debugging JavaScript - [React Summit](https://reactsummit.com/) - [Debugging JavaScript](https://portal.gitnation.org/contents/debugging-js) -**Mark Erikson:** Last week I got to go to React Summit. I actually spoke there in the morning, I gave a talk about debugging JavaScript. Honestly, I only saw one other talk, and that's because I spent the rest of the time having discussions with both other speakers and people. But it was a huge conference. [00:46:36] +**Mark Erikson:** Last week I got to go to React Summit. I actually spoke there in the morning, I gave a talk about debugging JavaScript. Honestly, I only saw one other talk, and that's because I spent the rest of the time having discussions with both other speakers and people. But it was a huge conference. [46:36] -It seemed very successful. A lot of atte, a lot of attendees, a lot of great discussions, and I personally had an amazing time getting to meet people. So it was great. [00:46:48] +It seemed very successful. A lot of atte, a lot of attendees, a lot of great discussions, and I personally had an amazing time getting to meet people. So it was great. [46:48] ### Debugging in React Native - [Debugging should be easier | App.js Conf 2023](https://www.youtube.com/watch?v=sRLunWEzwHI) -**Sebastien Lorber:** Just a quick mention that debugging in React Native should become easier in the future. It has always been somewhat difficult in the past. Over time there were a lot of different ways to debug in React Native. And none of the methodologies was perfect. [00:47:05] +**Sebastien Lorber:** Just a quick mention that debugging in React Native should become easier in the future. It has always been somewhat difficult in the past. Over time there were a lot of different ways to debug in React Native. And none of the methodologies was perfect. [47:05] -And notably you, you could connect your Chrome Debugger to the, to the mobile application and it didn't work so great. For example, you couldn't get the, the network tab to work correctly. And now it, it's going to, to work a bit better in the future, thanks to the work of Expo. [00:47:23] +And notably you, you could connect your Chrome Debugger to the, to the mobile application and it didn't work so great. For example, you couldn't get the, the network tab to work correctly. And now it, it's going to, to work a bit better in the future, thanks to the work of Expo. [47:23] ### React From Another Dimension - [React from Another Dimension by Dan Abramov at RemixConf 2023](https://www.youtube.com/watch?v=zMf_xeGPn6s) -**Mark Erikson:** So Dan Abramov did a talk at Remix Conf a couple weeks ago entitled "React From Another Dimension." And it was sort of a couple different points trying to be made. The pitch of the talk was. What if React originally only worked on the server and not on the client, and he actually did a demo where he used like IE6 in a, in like a Windows XP virtual machine and proceeded to build, build out a nifty little like 1990s style webpage and slowly add server-based interactivity to it before he ever actually finally added anything on the client side. [00:48:01] +**Mark Erikson:** So Dan Abramov did a talk at Remix Conf a couple weeks ago entitled "React From Another Dimension." And it was sort of a couple different points trying to be made. The pitch of the talk was. What if React originally only worked on the server and not on the client, and he actually did a demo where he used like IE6 in a, in like a Windows XP virtual machine and proceeded to build, build out a nifty little like 1990s style webpage and slowly add server-based interactivity to it before he ever actually finally added anything on the client side. [48:01] -And part of it in a sense was this is a pitch for, here's a mental model for how React Server Components work, but it was also a very interesting talk and like alternate history universe, kind of an example. [00:48:14] +And part of it in a sense was this is a pitch for, here's a mental model for how React Server Components work, but it was also a very interesting talk and like alternate history universe, kind of an example. [48:14] ### Server-side rendering React in OCaml - [Server-side rendering React in OCaml](https://sancho.dev/blog/server-side-rendering-react-in-ocaml) -**Sebastien Lorber:** One link that I found particularly interesting was the, someone posted about creating server side rendering in React. But using OCaml for the server. So somehow they re-implemented the React server rendering in OCaml and um, it's exactly the same, but it doesn't support the, all, all the new things like React Server Components only rendering to string and actually it significantly improved the performance. [00:48:43] +**Sebastien Lorber:** One link that I found particularly interesting was the, someone posted about creating server side rendering in React. But using OCaml for the server. So somehow they re-implemented the React server rendering in OCaml and um, it's exactly the same, but it doesn't support the, all, all the new things like React Server Components only rendering to string and actually it significantly improved the performance. [48:43] -So I think it's interesting because for example, if you are using OCaml like uh, ReasonML for your application, if you decide to run your server side, your React server in the native language, OCaml, then uh, you can get a much better performance for free because you are using a language that is faster of than NextJS and uh, and things like that. [00:49:05] +So I think it's interesting because for example, if you are using OCaml like uh, ReasonML for your application, if you decide to run your server side, your React server in the native language, OCaml, then uh, you can get a much better performance for free because you are using a language that is faster of than NextJS and uh, and things like that. [49:05] -So I thought the idea is interesting and I think it's the first language that I see supporting server rendering of a React application in in another language than JavaScript. [00:49:17] +So I thought the idea is interesting and I think it's the first language that I see supporting server rendering of a React application in in another language than JavaScript. [49:17] ### Several links on React rendering @@ -400,58 +400,58 @@ So I thought the idea is interesting and I think it's the first language that I - [React reconciliation: how it works and why should we care](https://www.developerway.com/posts/reconciliation-in-react) - [A (Mostly) Complete Guide to React Rendering Behavior](https://blog.isquaredsoftware.com/2020/05/blogged-answers-a-mostly-complete-guide-to-react-rendering-behavior/) -**Mark Erikson:** One of the biggest problems I see that confuses people with React is that they, they don't have a good grasp on the mental model. [00:49:25] +**Mark Erikson:** One of the biggest problems I see that confuses people with React is that they, they don't have a good grasp on the mental model. [49:25] -Like they have the basic idea of components and rendering, but a lot of the real world aspects of how that works confuses them. And there were three really good articles in the newsletter within the last couple weeks that all tackle this idea of how does React rendering work from a different aspect. [00:49:44] +Like they have the basic idea of components and rendering, but a lot of the real world aspects of how that works confuses them. And there were three really good articles in the newsletter within the last couple weeks that all tackle this idea of how does React rendering work from a different aspect. [49:44] -There was one called The Interactive Guide to Rendering and React from Tyler McGinnis and ui.dev folks. There was a journey of a React component by Alex Sidorenko, who has a great blog post series called A Visual Guide to React Rendering. And then there was an article on React Reconciliation, how it works and why We Should Care by Nadia Makarevich, who has also had a couple previously good posts. [00:50:07] +There was one called The Interactive Guide to Rendering and React from Tyler McGinnis and ui.dev folks. There was a journey of a React component by Alex Sidorenko, who has a great blog post series called A Visual Guide to React Rendering. And then there was an article on React Reconciliation, how it works and why We Should Care by Nadia Makarevich, who has also had a couple previously good posts. [50:07] -They all tackle, you know, some of the same concepts but from different angles. But it's really good information and I think a lot of people would benefit from kinda like going back and reviewing some of those basics to make sure they understand 'em. And then along those lines, I will also toss in my own guide to React Rendering Behavior post as well. [00:50:27] +They all tackle, you know, some of the same concepts but from different angles. But it's really good information and I think a lot of people would benefit from kinda like going back and reviewing some of those basics to make sure they understand 'em. And then along those lines, I will also toss in my own guide to React Rendering Behavior post as well. [50:27] -**Carl Vitullo:** You gotta, sounds super useful. I love hearing multiple perspectives on the same concept. Super useful. Cool. Sebastian, you got any more? [00:50:36] +**Carl Vitullo:** You gotta, sounds super useful. I love hearing multiple perspectives on the same concept. Super useful. Cool. Sebastian, you got any more? [50:36] ### Spatial Navigation - [TV Spatial Navigation](https://engineering.atspotify.com/2023/05/tv-spatial-navigation/) -**Sebastien Lorber:** So my last link is about a post of Spotify and implementing TV spatial navigation. So the idea that you use your remote control with the arrow up, down, left, right, and things like that, and you should be able to navigate inside the ui. [00:50:53] +**Sebastien Lorber:** So my last link is about a post of Spotify and implementing TV spatial navigation. So the idea that you use your remote control with the arrow up, down, left, right, and things like that, and you should be able to navigate inside the ui. [50:53] -And the thing is, there is no web standard to, to support this in in the web. So they had to reimplement this themselves by keeping the element that you can navigate to in memory. And I found it, it is a bit interesting because it's quite, unusual topic and I, I see more and more companies doing this. [00:51:16] +And the thing is, there is no web standard to, to support this in in the web. So they had to reimplement this themselves by keeping the element that you can navigate to in memory. And I found it, it is a bit interesting because it's quite, unusual topic and I, I see more and more companies doing this. [51:16] -Uh, I know someone two, two persons working at two French companies do doing that also for TV applications. Um, some are web applications, some are React Native applications. And recently we had a talk at React Native connection in Paris about the same subject. So this is basically every time someone needs to create a TV application for using React technology, they do something like this. [00:51:45] +Uh, I know someone two, two persons working at two French companies do doing that also for TV applications. Um, some are web applications, some are React Native applications. And recently we had a talk at React Native connection in Paris about the same subject. So this is basically every time someone needs to create a TV application for using React technology, they do something like this. [51:45] -So if you need to build something for the TV someday maybe it's worth taking a look at. [00:51:52] +So if you need to build something for the TV someday maybe it's worth taking a look at. [51:52] -**Mark Erikson:** That's cool. [00:51:53] +**Mark Erikson:** That's cool. [51:53] -**Carl Vitullo:** Yeah, I think it's also, like, sure, TV, It also reminds me of video game UIs, where you've got a dpad or a joystick. But I think it's also a very powerful accessibility tool. You know, like keyboard navigation is so important. [00:52:07] +**Carl Vitullo:** Yeah, I think it's also, like, sure, TV, It also reminds me of video game UIs, where you've got a dpad or a joystick. But I think it's also a very powerful accessibility tool. You know, like keyboard navigation is so important. [52:07] -If you, you know, for people who are poorly cited or mobility limited or you know, yada, yada, all sorts of situations where that can be valuable. And yeah, I mean, I, I think that's a really, I think that's a really interesting read to see how people solve that problem. Because if you wanna provide powerful keyboard navigation in a web context, it's not easy. [00:52:27] +If you, you know, for people who are poorly cited or mobility limited or you know, yada, yada, all sorts of situations where that can be valuable. And yeah, I mean, I, I think that's a really, I think that's a really interesting read to see how people solve that problem. Because if you wanna provide powerful keyboard navigation in a web context, it's not easy. [52:27] -Like, what are you gonna do? Tab index? (laughs) [00:52:31] +Like, what are you gonna do? Tab index? (laughs) [52:31] -**Sebastien Lorber:** Yeah. No, they, they keep the, the limits in memory. But this is funny because the solution from Spotify and the solution that was recently presented at the React Native Conference were different. For example, I think I remember Spotify is using geometry and trying to figure out which, somehow they, they use maybe APIs like getBoundingClientRect or something to get the positions of the elements on the screen. [00:52:58] +**Sebastien Lorber:** Yeah. No, they, they keep the, the limits in memory. But this is funny because the solution from Spotify and the solution that was recently presented at the React Native Conference were different. For example, I think I remember Spotify is using geometry and trying to figure out which, somehow they, they use maybe APIs like getBoundingClientRect or something to get the positions of the elements on the screen. [52:58] -While the, the other company in France that presented the React Native solution was using somehow recreating a tree, a React tree inside memory so that you know, which are the, the previous and the Next element, but not considering the, the placement on the screen. So it was quite different UX in the end, but uh, the solutions were quite similar. It's just the algorithm to navigate that was different. [00:53:24] +While the, the other company in France that presented the React Native solution was using somehow recreating a tree, a React tree inside memory so that you know, which are the, the previous and the Next element, but not considering the, the placement on the screen. So it was quite different UX in the end, but uh, the solutions were quite similar. It's just the algorithm to navigate that was different. [53:24] ## Closing -**Carl Vitullo:** Cool. Mark you have any other like lightning round links? [00:53:27] +**Carl Vitullo:** Cool. Mark you have any other like lightning round links? [53:27] -**Mark Erikson:** I think we're out, out of, out of items at this point. [00:53:29] +**Mark Erikson:** I think we're out, out of, out of items at this point. [53:29] -**Carl Vitullo:** Out of items. Well good cuz we are well over an hour at this point. [00:53:33] +**Carl Vitullo:** Out of items. Well good cuz we are well over an hour at this point. [53:33] -**Mark Erikson:** Way over time. [00:53:35] +**Mark Erikson:** Way over time. [53:35] -**Carl Vitullo:** Yeah, that's okay. We had a good time. [00:53:39] +**Carl Vitullo:** Yeah, that's okay. We had a good time. [53:39] -Cool. All right. [00:53:40] +Cool. All right. [53:40] -Well thank you so much. Thanks for joining us. Thanks for having in the audience for sticking us with us through May in React. All right, Mark, Sebastian, thanks so much for coming up. [00:53:51] +Well thank you so much. Thanks for joining us. Thanks for having in the audience for sticking us with us through May in React. All right, Mark, Sebastian, thanks so much for coming up. [53:51] -**Mark Erikson:** Always. [00:53:52] +**Mark Erikson:** Always. [53:52] -**Sebastien Lorber:** Thank you. [00:53:53] +**Sebastien Lorber:** Thank you. [53:53] **Carl Vitullo:** Talk to you guys later. diff --git a/src/transcripts/tmir-nov-2023.md b/src/transcripts/tmir-nov-2023.md index a45d098..fdc251a 100644 --- a/src/transcripts/tmir-nov-2023.md +++ b/src/transcripts/tmir-nov-2023.md @@ -14,19 +14,19 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t Chapter list: -- [00:00:35] Conference news -- [00:01:58] TypeScript 5.3 -- [00:10:24] Kent and Lee, dueling positivity on frameworks -- [00:14:58] Next.js 14 and Next Conf -- [00:18:07] Using React Server Components without a framework -- [00:22:59] Remix 2.2 -- [00:27:52] Shopify Hydrogen Remix v2 support -- [00:29:51] Redux Toolkit 2.0 and related libraries -- [00:35:40] CSS improvements - :has() selector, nesting, advanced color functions -- [00:37:31] Why you want React Query -- [00:39:04] Retrospective on 10 years of JavaScript decorators -- [00:40:10] React sourcemaps now available in canary builds -- [00:41:47] $22,500 bounty for improving formatter performance +- [00:35] Conference news +- [01:58] TypeScript 5.3 +- [10:24] Kent and Lee, dueling positivity on frameworks +- [14:58] Next.js 14 and Next Conf +- [18:07] Using React Server Components without a framework +- [22:59] Remix 2.2 +- [27:52] Shopify Hydrogen Remix v2 support +- [29:51] Redux Toolkit 2.0 and related libraries +- [35:40] CSS improvements - :has() selector, nesting, advanced color functions +- [37:31] Why you want React Query +- [39:04] Retrospective on 10 years of JavaScript decorators +- [40:10] React sourcemaps now available in canary builds +- [41:47] $22,500 bounty for improving formatter performance Links discussed: @@ -61,382 +61,382 @@ Links discussed: - [Google-created React components for Google Maps](https://cloud.google.com/blog/products/maps-platform/introducing-react-components-for-the-maps-javascript-api/) - [Win95-inspired component library](https://lisandro52.github.io/react-winplaza-98/) -[00:00:00] **Carl Vitullo:** Thanks everyone for joining us for November's This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. I'm Carl, I'm a staff product developer and freelance community leader at Reactiflux. Where you are now, the Discord for React professionals. Uh, Mark, want to introduce yourself? +[00:00] **Carl Vitullo:** Thanks everyone for joining us for November's This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. I'm Carl, I'm a staff product developer and freelance community leader at Reactiflux. Where you are now, the Discord for React professionals. Uh, Mark, want to introduce yourself? -[00:00:19] **Mark Erikson:** I'm Mark Erikson. Uh, in my day job, I work at Replay. io, where we're building a true time traveling debugger for JavaScript apps. And outside of Replay, I spend far too much time working on Redux. +[00:19] **Mark Erikson:** I'm Mark Erikson. Uh, in my day job, I work at Replay. io, where we're building a true time traveling debugger for JavaScript apps. And outside of Replay, I spend far too much time working on Redux. -[00:00:31] **Carl Vitullo:** And answering every question about it on every platform. +[00:31] **Carl Vitullo:** And answering every question about it on every platform. -## [00:00:35] Conference news +## [00:35] Conference news -[00:00:35] **Carl Vitullo:** We're going to try out something new, uh, speaking of conferences in the prep chat. Folks interested in the news may be interested in attending conferences too! +[00:35] **Carl Vitullo:** We're going to try out something new, uh, speaking of conferences in the prep chat. Folks interested in the news may be interested in attending conferences too! -[00:00:45] We have React Day Berlin coming up on December 8th, with a hybrid online streaming follow up on the 12th. There's also a couple of early bird tickets that were just announced. There's Future Frontend, uh, which is going to be in oh, in Finland. I believe it's being organized by React Finland. That's going to be on June 13th and 14th of 2024. Uh, which competes with Render Atlanta, which is also going to be June 12th through 14th of 2024, and just announced early bird ticket sales as well. +[00:45] We have React Day Berlin coming up on December 8th, with a hybrid online streaming follow up on the 12th. There's also a couple of early bird tickets that were just announced. There's Future Frontend, uh, which is going to be in oh, in Finland. I believe it's being organized by React Finland. That's going to be on June 13th and 14th of 2024. Uh, which competes with Render Atlanta, which is also going to be June 12th through 14th of 2024, and just announced early bird ticket sales as well. -[00:01:19] There's also a little bit of survey ecosystem news. The wonderful people behind the State of JS ecosystem survey are doing a State of React survey as well. That just closed about two weeks ago. No final word yet on when the results of that will be available, but I've heard that it's going to be early in 2024 and might have Sacha Greif on here to talk about the results when they're ready. So yeah, keep an eye out for that. +[01:19] There's also a little bit of survey ecosystem news. The wonderful people behind the State of JS ecosystem survey are doing a State of React survey as well. That just closed about two weeks ago. No final word yet on when the results of that will be available, but I've heard that it's going to be early in 2024 and might have Sacha Greif on here to talk about the results when they're ready. So yeah, keep an eye out for that. -[00:01:46] And also one final note, the State of JS survey has opened for 2023. So definitely check that out, you know, contribute, make it. Give it better data. +[01:46] And also one final note, the State of JS survey has opened for 2023. So definitely check that out, you know, contribute, make it. Give it better data. -## [00:01:58] TS 5.3 +## [01:58] TS 5.3 -[00:01:58] **Carl Vitullo:** I'll start us off. First news event that we're going to be talking about here, uh, TypeScript 5. 3 is out. Out of beta, out of release candidate. +[01:58] **Carl Vitullo:** I'll start us off. First news event that we're going to be talking about here, uh, TypeScript 5. 3 is out. Out of beta, out of release candidate. -[00:02:08] Looks like it's not a ton of major new changes here. +[02:08] Looks like it's not a ton of major new changes here. -[00:02:13] They're adding support for a TC39 proposal, import attributes, that give an inline syntax for module import statements to give more information about what that module is. As far as I know, the only currently supported additional attributes are in support of JSON modules. +[02:13] They're adding support for a TC39 proposal, import attributes, that give an inline syntax for module import statements to give more information about what that module is. As far as I know, the only currently supported additional attributes are in support of JSON modules. -[00:02:34] Instead of JSON modules being sort of like an informal standard that just works, um, this is now formalizing that and giving I'm giving away for more information to be provided about how to import additional modules. So hopefully we'll see this being used for things like image imports, SVGs, fonts, things like that. +[02:34] Instead of JSON modules being sort of like an informal standard that just works, um, this is now formalizing that and giving I'm giving away for more information to be provided about how to import additional modules. So hopefully we'll see this being used for things like image imports, SVGs, fonts, things like that. -[00:02:54] Um, which currently that's all been just like through Webpack or whatever bundler and whatever plugin, just totally ad hoc based on whatever bundler you're using. So seeing a proposal come in to standardize that is I'm here for it. That's cool. +[02:54] Um, which currently that's all been just like through Webpack or whatever bundler and whatever plugin, just totally ad hoc based on whatever bundler you're using. So seeing a proposal come in to standardize that is I'm here for it. That's cool. -[00:03:09] **Mark Erikson:** Yeah, I've seen that the syntax exists. I haven't had it, like, actually, like, most things these days, I haven't had a chance to, like, look at it or play with it yet. +[03:09] **Mark Erikson:** Yeah, I've seen that the syntax exists. I haven't had it, like, actually, like, most things these days, I haven't had a chance to, like, look at it or play with it yet. -[00:03:17] Um, like, I've seen the comment that, you know, like, one of the great things about, you know, Webpack and Vite and whatever is that it lets us, you know, mix together, you know, like, I need to import this CSS file, I need to import this, you know, this image file. And then all the processing happens during build time, but it's also true that you're basically almost inventing your own little language, especially if you start adding more plugins to deal with certain build types. +[03:17] Um, like, I've seen the comment that, you know, like, one of the great things about, you know, Webpack and Vite and whatever is that it lets us, you know, mix together, you know, like, I need to import this CSS file, I need to import this, you know, this image file. And then all the processing happens during build time, but it's also true that you're basically almost inventing your own little language, especially if you start adding more plugins to deal with certain build types. -[00:03:46] And, like, actually, it's a little bit like the React vs. Web component debate. You know, are you supposed to be strictly, strictly using the platform or are you okay with using tools that aren't strictly the platform, build in the specific pieces that you need, but you're, you're, you're maybe kind of conceptually locked in and maybe that's okay. +[03:46] And, like, actually, it's a little bit like the React vs. Web component debate. You know, are you supposed to be strictly, strictly using the platform or are you okay with using tools that aren't strictly the platform, build in the specific pieces that you need, but you're, you're, you're maybe kind of conceptually locked in and maybe that's okay. -[00:04:10] So in this case, I think what we're sort of seeing is that app developers for years have wanted to be able to do things where they are quote importing non JavaScript or TypeScript assets. Into their code for one, for one reason or another, and build tools have supported that for many, many years. And so now we're sort of seeing the little, you know, the trickle down effect where some concept of that is now trickling into the platform. +[04:10] So in this case, I think what we're sort of seeing is that app developers for years have wanted to be able to do things where they are quote importing non JavaScript or TypeScript assets. Into their code for one, for one reason or another, and build tools have supported that for many, many years. And so now we're sort of seeing the little, you know, the trickle down effect where some concept of that is now trickling into the platform. -[00:04:40] Even if it's not, like, building in functionality to do something with it. But at least now there's a, there's a common syntax for saying, here's a file, treat this specially. +[04:40] Even if it's not, like, building in functionality to do something with it. But at least now there's a, there's a common syntax for saying, here's a file, treat this specially. -[00:04:53] **Carl Vitullo:** Yeah, like you were saying, it's, it's not all of the long tail of modules now, but I, I appreciate that it's a low level primitive that will allow for that sort of, that, that later work to be done in a consistent manner. So that's cool. I'm, I'm excited to see that. +[04:53] **Carl Vitullo:** Yeah, like you were saying, it's, it's not all of the long tail of modules now, but I, I appreciate that it's a low level primitive that will allow for that sort of, that, that later work to be done in a consistent manner. So that's cool. I'm, I'm excited to see that. -[00:05:09] But another bit that caught my eyes, uh, being valuable is improved type narrowing. If you do a switch with a true case and then, you know, have subcases for different, uh, conditionals, it, the behavior around type inference around there, uh, should be better on, on 5. 3. +[05:09] But another bit that caught my eyes, uh, being valuable is improved type narrowing. If you do a switch with a true case and then, you know, have subcases for different, uh, conditionals, it, the behavior around type inference around there, uh, should be better on, on 5. 3. -[00:05:27] **Mark Erikson:** That's actually one of the weirder little bits of TypeScript, or actually of JavaScript, really. So, you know, normally with a switch statement, the idea is you have a single variable that could have many different possible values. +[05:27] **Mark Erikson:** That's actually one of the weirder little bits of TypeScript, or actually of JavaScript, really. So, you know, normally with a switch statement, the idea is you have a single variable that could have many different possible values. -[00:05:40] And the switch case is, if the value is A, do this. If the value is B, do that. And the weird thing is, in JavaScript, you've always been able to say like, switch true, but then the case statements can have actual comparisons that don't even have to do with a single variable. It's kind of like another way of chaining if else statements. +[05:40] And the switch case is, if the value is A, do this. If the value is B, do that. And the weird thing is, in JavaScript, you've always been able to say like, switch true, but then the case statements can have actual comparisons that don't even have to do with a single variable. It's kind of like another way of chaining if else statements. -[00:06:07] And so, this has been legal JavaScript syntax for a long time, and TypeScript is now actually being a little smarter and saying, well, actually, if you're going to do that, we can apply some type level inference to what's going on inside. +[06:07] And so, this has been legal JavaScript syntax for a long time, and TypeScript is now actually being a little smarter and saying, well, actually, if you're going to do that, we can apply some type level inference to what's going on inside. -[00:06:20] **Carl Vitullo:** I don't know if this is a widely held opinion, but I've generally viewed that as, that behavior of doing switch true, as like, a little bit of a convenient hack. +[06:20] **Carl Vitullo:** I don't know if this is a widely held opinion, but I've generally viewed that as, that behavior of doing switch true, as like, a little bit of a convenient hack. -[00:06:29] I don't know where switch cases originated from, but like, I've certainly seen them all the way back to like, C, right? That is very much not the semantics, going back that far in their, you know, legacy. But, you know, that's how people have been using them in JavaScript for a decade. +[06:29] I don't know where switch cases originated from, but like, I've certainly seen them all the way back to like, C, right? That is very much not the semantics, going back that far in their, you know, legacy. But, you know, that's how people have been using them in JavaScript for a decade. -[00:06:45] So, acknowledging that and just making it work better, like, that's awesome. +[06:45] So, acknowledging that and just making it work better, like, that's awesome. -[00:06:50] **Mark Erikson:** Uh, one other item that I don't, I don't know if it's even listed in these release notes, but Andrew Branch from the TypeScript team has been working on a new set of documentation For the TypeScript website, about how TypeScript understands the concept of module files. +[06:50] **Mark Erikson:** Uh, one other item that I don't, I don't know if it's even listed in these release notes, but Andrew Branch from the TypeScript team has been working on a new set of documentation For the TypeScript website, about how TypeScript understands the concept of module files. -[00:07:10] So, ESM files, CommonJS files, um, all the different variations in terms of module resolution. And he finally merged that into the actual TypeScript docs a few weeks ago. And there is a ton of information here. I've not even had a chance to read through all of it. But part of this is really long and complex because of how complex the JavaScript and TypeScript ecosystem is. +[07:10] So, ESM files, CommonJS files, um, all the different variations in terms of module resolution. And he finally merged that into the actual TypeScript docs a few weeks ago. And there is a ton of information here. I've not even had a chance to read through all of it. But part of this is really long and complex because of how complex the JavaScript and TypeScript ecosystem is. -[00:07:40] And you know, how many different tools and concepts are interacting. But it's basically an explanation of this is how TypeScript views. The world. And it gives a lot of very good explanations of the theory and choosing a lot of the compiler options and trying to deal with, you know, both using packages and publishing packages. +[07:40] And you know, how many different tools and concepts are interacting. But it's basically an explanation of this is how TypeScript views. The world. And it gives a lot of very good explanations of the theory and choosing a lot of the compiler options and trying to deal with, you know, both using packages and publishing packages. -[00:08:02] And as someone who has spent a disturbing part of this year banging my head against the wall of publishing packages, uh, this is, having this information available is very valuable. +[08:02] And as someone who has spent a disturbing part of this year banging my head against the wall of publishing packages, uh, this is, having this information available is very valuable. -[00:08:11] **Carl Vitullo:** Before we move on, I'm just going to read down the list of all the what's new from the blog post. Import attributes, which we discussed. +[08:11] **Carl Vitullo:** Before we move on, I'm just going to read down the list of all the what's new from the blog post. Import attributes, which we discussed. -[00:08:19] Stable support for resolution mode and import types, which I think is what you were just talking about. +[08:19] Stable support for resolution mode and import types, which I think is what you were just talking about. -[00:08:24] Resolution mode support in all module types, so related. +[08:24] Resolution mode support in all module types, so related. -[00:08:27] Switch true narrowing, what we just discussed. +[08:27] Switch true narrowing, what we just discussed. -[00:08:30] Narrowing on comparison to booleans, uh, which I imagine probably came out of the switch true casing, but also another great, you know, we can narrow types on if statements. That's awesome. +[08:30] Narrowing on comparison to booleans, uh, which I imagine probably came out of the switch true casing, but also another great, you know, we can narrow types on if statements. That's awesome. -[00:08:41] Instance of narrowing through symbol has is instance. +[08:41] Instance of narrowing through symbol has is instance. -[00:08:45] Checks for super property access on instance fields. +[08:45] Checks for super property access on instance fields. -[00:08:48] Interactive inlay hints for types. I don't even know what that means. +[08:48] Interactive inlay hints for types. I don't even know what that means. -[00:08:51] Looks like a couple of other optimizations. Consolidation between TSS server library and typescript.js. +[08:51] Looks like a couple of other optimizations. Consolidation between TSS server library and typescript.js. -[00:08:58] **Mark Erikson:** That one actually has a little bit of an impact. So, most people haven't noticed this, but if you installed, like, TypeScript version, I don't know, 4. 6, 4. 7, the unpacked file on, er, folder on disk was like 50 or 60 megabytes. And nobody thinks about it, but it's because TypeScript is a really complicated tool, but also they basically shipped, like, three different copies of the same core functionality in different bundles inside node modules. +[08:58] **Mark Erikson:** That one actually has a little bit of an impact. So, most people haven't noticed this, but if you installed, like, TypeScript version, I don't know, 4. 6, 4. 7, the unpacked file on, er, folder on disk was like 50 or 60 megabytes. And nobody thinks about it, but it's because TypeScript is a really complicated tool, but also they basically shipped, like, three different copies of the same core functionality in different bundles inside node modules. -[00:09:29] The TypeScript package contents shrank in like 5. 0 because they altered how they build and bundle the TypeScript tools itself. And here they've done further work to say, you know what, actually two of these bundles are basically almost identical, let's extract the common piece so that it's only built once. +[09:29] The TypeScript package contents shrank in like 5. 0 because they altered how they build and bundle the TypeScript tools itself. And here they've done further work to say, you know what, actually two of these bundles are basically almost identical, let's extract the common piece so that it's only built once. -[00:09:50] And then the two bundle files that get used for different purposes just reuse that common functionality. And so the actual installed size of TypeScript has shrunk again down to like, uh, I don't know, like 25, 30 megs? So I mean, it's something. Smaller node modules is always nice. Cool. +[09:50] And then the two bundle files that get used for different purposes just reuse that common functionality. And so the actual installed size of TypeScript has shrunk again down to like, uh, I don't know, like 25, 30 megs? So I mean, it's something. Smaller node modules is always nice. Cool. -[00:10:12] **Carl Vitullo:** About 20 percent smaller package size on disk after you install TypeScript. Cool, that's nice. Probably going to save a lot of disk space in aggregate across everyone. +[10:12] **Carl Vitullo:** About 20 percent smaller package size on disk after you install TypeScript. Cool, that's nice. Probably going to save a lot of disk space in aggregate across everyone. -[00:10:21] Alright, Mark, you want to take us on to our next link? +[10:21] Alright, Mark, you want to take us on to our next link? -## [00:10:24] Kent and Lee, dueling positivity +## [10:24] Kent and Lee, dueling positivity -[00:10:24] **Mark Erikson:** So it's always amusing to me when we have kind of like dueling articles come out. Someone writes, someone writes article A, someone else looks at it and writes article B. +[10:24] **Mark Erikson:** So it's always amusing to me when we have kind of like dueling articles come out. Someone writes, someone writes article A, someone else looks at it and writes article B. -[00:10:35] So in this case, we had an article from Kent C. Dodds, you know, always very prolific, you know, author and teacher. Who wrote a very long post entitled, Why I Won't Use Next. JS. And he laid out a bunch of reasons here, and there's like a bunch of sort of spin off thoughts that happened. +[10:35] So in this case, we had an article from Kent C. Dodds, you know, always very prolific, you know, author and teacher. Who wrote a very long post entitled, Why I Won't Use Next. JS. And he laid out a bunch of reasons here, and there's like a bunch of sort of spin off thoughts that happened. -[00:10:54] So the first thing is, you know, up front, Kent worked on, as part of the Remix team, for, you know, like, 8 to 10 months. He teaches Remix in his courses. He is a big vocal fan of Remix as a tool. And so, a lot of people ask him, both because he's a teacher and because he likes Remix, "well, why won't you use Next. JS? Or like, why do you prefer Remix over Next?" And so, like any good blogger, he said, okay, I've been asked this question dozens of times, I'm going to go ahead and write an article. +[10:54] So the first thing is, you know, up front, Kent worked on, as part of the Remix team, for, you know, like, 8 to 10 months. He teaches Remix in his courses. He is a big vocal fan of Remix as a tool. And so, a lot of people ask him, both because he's a teacher and because he likes Remix, "well, why won't you use Next. JS? Or like, why do you prefer Remix over Next?" And so, like any good blogger, he said, okay, I've been asked this question dozens of times, I'm going to go ahead and write an article. -[00:11:31] And he laid out a whole bunch of reasons, ranging from, you know, Remix is more of a focus on the web platform, it's not part of Vercel, he has some uneasiness with the way Next and the React team are sort of co mingled at this point, he feels it's more stable and does a better job with, you know, managing the pace of changes and it's less complex, You know, frankly, I haven't used Remix, but I actually agree and sympathize with most of the points he's making. +[11:31] And he laid out a whole bunch of reasons, ranging from, you know, Remix is more of a focus on the web platform, it's not part of Vercel, he has some uneasiness with the way Next and the React team are sort of co mingled at this point, he feels it's more stable and does a better job with, you know, managing the pace of changes and it's less complex, You know, frankly, I haven't used Remix, but I actually agree and sympathize with most of the points he's making. -[00:12:03] I've felt some of that unease with some of the pace of change with Next and the way some of the release processes get managed. Now, a lot of people have complained that Kent has a huge conflict of interest, and I see the comment down there in the chat. +[12:03] I've felt some of that unease with some of the pace of change with Next and the way some of the release processes get managed. Now, a lot of people have complained that Kent has a huge conflict of interest, and I see the comment down there in the chat. -[00:12:19] I'm gonna side with Kent here. Yeah, he has biases and opinions. This is a post where he is stating his biases and opinions. Like, he's allowed to say, here's why I like this thing. And, you know, people have asked him, what are your thoughts? And so he's documenting that. +[12:19] I'm gonna side with Kent here. Yeah, he has biases and opinions. This is a post where he is stating his biases and opinions. Like, he's allowed to say, here's why I like this thing. And, you know, people have asked him, what are your thoughts? And so he's documenting that. -[00:12:37] So, that post was really good. And, you know, got a lot of attention. And a week or two later, Leerob, who is the, you know, the lead developer relations guy for Next, Went out and wrote a post on why he is using Next. And I thought this one was also very well written. Uh, a lot of it is a direct response to what Kent wrote. +[12:37] So, that post was really good. And, you know, got a lot of attention. And a week or two later, Leerob, who is the, you know, the lead developer relations guy for Next, Went out and wrote a post on why he is using Next. And I thought this one was also very well written. Uh, a lot of it is a direct response to what Kent wrote. -[00:13:00] And I actually liked that both of them were very careful up front to say, like, Here are some opinions, I like this tool, I have preferences, and we even went out of his way to like tweet picture up front of like, "look, here's me and Kent, smiling, we get along, we don't hate each other," but, you know, kind of giving some counter thoughts on, you know, look, Next, Next does use the platform, I like the app router, and, you know, some of the other, you know, features that are built into Next. +[13:00] And I actually liked that both of them were very careful up front to say, like, Here are some opinions, I like this tool, I have preferences, and we even went out of his way to like tweet picture up front of like, "look, here's me and Kent, smiling, we get along, we don't hate each other," but, you know, kind of giving some counter thoughts on, you know, look, Next, Next does use the platform, I like the app router, and, you know, some of the other, you know, features that are built into Next. -[00:13:30] What I appreciated as a neutral, independent third party is that, these are, these are well written posts, they are basically positive, I mean, they, they express a few, like, pain points and concerns, but they're written in a positive sort of a way, not like a tear everybody else down sort of way. +[13:30] What I appreciated as a neutral, independent third party is that, these are, these are well written posts, they are basically positive, I mean, they, they express a few, like, pain points and concerns, but they're written in a positive sort of a way, not like a tear everybody else down sort of way. -[00:13:52] I, I just feel like the entire ecosystem would benefit from more articles and discussions that are organized and pitched with that mindset. So both of those were really interesting. A lot of really good feed for thought there. +[13:52] I, I just feel like the entire ecosystem would benefit from more articles and discussions that are organized and pitched with that mindset. So both of those were really interesting. A lot of really good feed for thought there. -[00:14:05] **Carl Vitullo:** Yeah, I would agree. And both of these come out the day that we recorded October's This Month in React. So I was like, ah, dang it. If we waited a day, we could have discussed these immediately after. +[14:05] **Carl Vitullo:** Yeah, I would agree. And both of these come out the day that we recorded October's This Month in React. So I was like, ah, dang it. If we waited a day, we could have discussed these immediately after. -[00:14:15] So here we are a month later, but yeah, I definitely agree. I'm a big fan of a positive framing of things. I guess, you know, ultimately Kent's post was, why I won't, so that is kind of a negative framing. But the actual content of it is very much, you know, like his, the first heading of it is, "whatever you use is probably fine." +[14:15] So here we are a month later, but yeah, I definitely agree. I'm a big fan of a positive framing of things. I guess, you know, ultimately Kent's post was, why I won't, so that is kind of a negative framing. But the actual content of it is very much, you know, like his, the first heading of it is, "whatever you use is probably fine." -[00:14:36] I can enthusiastically support anything that Just respects that there are different trade offs, and different people find different trade offs appealing. Only two of the largest people in developer relations for two of the largest frameworks in the React ecosystem having a nice, reasoned discussion with each other in the form of public letters. +[14:36] I can enthusiastically support anything that Just respects that there are different trade offs, and different people find different trade offs appealing. Only two of the largest people in developer relations for two of the largest frameworks in the React ecosystem having a nice, reasoned discussion with each other in the form of public letters. -[00:14:56] **Mark Erikson:** And speaking of Next. +[14:56] **Mark Erikson:** And speaking of Next. -## [00:14:58] Next 14 and Next Conf +## [14:58] Next 14 and Next Conf -[00:14:58] **Carl Vitullo:** Next14! They announced this at the Next conference, which I'm going to link to a playlist of all the talks there as well. Major highlights here, uh, looks like TurboPack is offering big performance improvements for developer experience locally. They're claiming 53 percent faster local server startup and 94 percent faster updates, so rebuilds. +[14:58] **Carl Vitullo:** Next14! They announced this at the Next conference, which I'm going to link to a playlist of all the talks there as well. Major highlights here, uh, looks like TurboPack is offering big performance improvements for developer experience locally. They're claiming 53 percent faster local server startup and 94 percent faster updates, so rebuilds. -[00:15:27] Faster to start, much, much, much faster to rebuild. Sounds cool. As far as I know, the major new feature being rolled out with Next 14 is server actions, which is a React Canary feature that is now being exposed as a first class function in Next. Sounds cool. We discussed that at greater length in the last episode, I think. +[15:27] Faster to start, much, much, much faster to rebuild. Sounds cool. As far as I know, the major new feature being rolled out with Next 14 is server actions, which is a React Canary feature that is now being exposed as a first class function in Next. Sounds cool. We discussed that at greater length in the last episode, I think. -[00:15:49] Partial re rendering, fast initial static response and streaming dynamic content for, I guess, you know, partial pages. Sounds cool. And it looks like they've put out some new educational content as well, teaching about how to use the app router and authentication and databases and stuff. +[15:49] Partial re rendering, fast initial static response and streaming dynamic content for, I guess, you know, partial pages. Sounds cool. And it looks like they've put out some new educational content as well, teaching about how to use the app router and authentication and databases and stuff. -[00:16:06] I still have not been able to find a great use case for myself to explore Next, you know, the more advanced Next features like the App Router, uh, in my own time. I'm not currently employed as a full time software engineer, so I don't currently maintain a large scale application, which is, I think, the only way to get real experience with using these, you know, the experience of working on a full team, making decisions in the context of maintaining them for a period of years. +[16:06] I still have not been able to find a great use case for myself to explore Next, you know, the more advanced Next features like the App Router, uh, in my own time. I'm not currently employed as a full time software engineer, so I don't currently maintain a large scale application, which is, I think, the only way to get real experience with using these, you know, the experience of working on a full team, making decisions in the context of maintaining them for a period of years. -[00:16:37] Um, so, I'm not going to feel comfortable passing firm judgment on AppRouter, I think, until I've been able to build a real application. So, I don't have a lot to say on the specific details yet. +[16:37] Um, so, I'm not going to feel comfortable passing firm judgment on AppRouter, I think, until I've been able to build a real application. So, I don't have a lot to say on the specific details yet. -[00:16:52] **Mark Erikson:** Yeah, uh, I'm, I'm sort of in the same boat, I mean my, my day job at Replay is technically a Next app, but it might as well be just a, you know, a pure single page application, conceptually. Basically don't make any real use of routing at all. +[16:52] **Mark Erikson:** Yeah, uh, I'm, I'm sort of in the same boat, I mean my, my day job at Replay is technically a Next app, but it might as well be just a, you know, a pure single page application, conceptually. Basically don't make any real use of routing at all. -[00:17:07] Anecdotally, you know, just looking at discussions on Twitter and Reddit, I, I see a very mixed bag. I, I see people who love the app router and some of the functionality that's built in there. I've seen a lot of people complain that in between the app router and like Vercel's multiple caching layers that there's a lot of pain points they're dealing with. +[17:07] Anecdotally, you know, just looking at discussions on Twitter and Reddit, I, I see a very mixed bag. I, I see people who love the app router and some of the functionality that's built in there. I've seen a lot of people complain that in between the app router and like Vercel's multiple caching layers that there's a lot of pain points they're dealing with. -[00:17:28] So I see anecdotes, I don't have a lot of, I don't have any personal experience that I can offer in that respect. +[17:28] So I see anecdotes, I don't have a lot of, I don't have any personal experience that I can offer in that respect. -[00:17:36] **Carl Vitullo:** Yeah, and there have been wildly popular framework in the past that had all sorts of blog posts and discussion and everyone raving about how great it was to use. And then a couple years later, everyone started using it for larger scale projects and found all the pain points. And I noticed all of that positivity going away. So, you know, In the interest of not repeating that pattern, I'm just not comfortable passing judgment too quickly here. +[17:36] **Carl Vitullo:** Yeah, and there have been wildly popular framework in the past that had all sorts of blog posts and discussion and everyone raving about how great it was to use. And then a couple years later, everyone started using it for larger scale projects and found all the pain points. And I noticed all of that positivity going away. So, you know, In the interest of not repeating that pattern, I'm just not comfortable passing judgment too quickly here. -[00:18:02] Want to take us on? Maybe a good segue from Next into Frameworkless. +[18:02] Want to take us on? Maybe a good segue from Next into Frameworkless. -## [00:18:07] RSCs without a framework +## [18:07] RSCs without a framework -[00:18:07] **Mark Erikson:** So, one of the big issues with server components so far, has, well, a number of issues, but one of the issues has been that the only real way to use them has been with Next. +[18:07] **Mark Erikson:** So, one of the big issues with server components so far, has, well, a number of issues, but one of the issues has been that the only real way to use them has been with Next. -[00:18:20] And, you know, there's the whole separate discussions over Next sort of getting first access to React features, you know, being sort of a concern, but also, you know, give credit to Vercel because they're literally investing a lot of money and time into building out the core pieces that are in React itself and then making use of those features in Next specifically. +[18:20] And, you know, there's the whole separate discussions over Next sort of getting first access to React features, you know, being sort of a concern, but also, you know, give credit to Vercel because they're literally investing a lot of money and time into building out the core pieces that are in React itself and then making use of those features in Next specifically. -[00:18:45] So, there's a number of different tools and frameworks that are experimenting with integrating server components right now. I know that the RedwoodJS folks have said that they're all in on server components, and I've seen some of the technical discussions where they're working on it. I've seen, uh, Daishi Kato, who created Jotai and works on Zustend, um, has his own little experimental server components based framework. +[18:45] So, there's a number of different tools and frameworks that are experimenting with integrating server components right now. I know that the RedwoodJS folks have said that they're all in on server components, and I've seen some of the technical discussions where they're working on it. I've seen, uh, Daishi Kato, who created Jotai and works on Zustend, um, has his own little experimental server components based framework. -[00:19:13] So, there are a small but interested number of people who have been playing around with trying to build things with server components, but it always, like, needs some higher level of build tool integration to work, and that's by design. So, there was a really, really good post from a guy named, I believe, uh, Tim Tim Pillard. +[19:13] So, there are a small but interested number of people who have been playing around with trying to build things with server components, but it always, like, needs some higher level of build tool integration to work, and that's by design. So, there was a really, really good post from a guy named, I believe, uh, Tim Tim Pillard. -[00:19:38] And it's called, React Server Components Without a Framework. And in this post, he kind of breaks down, like, what are the pieces behind server components. Where do server components fit into, like, the build and deploy and usage sequence? And he then kind of dives into, like, what are the pieces inside of React that you would actually need to build your own server components integration? +[19:38] And it's called, React Server Components Without a Framework. And in this post, he kind of breaks down, like, what are the pieces behind server components. Where do server components fit into, like, the build and deploy and usage sequence? And he then kind of dives into, like, what are the pieces inside of React that you would actually need to build your own server components integration? -[00:20:05] And this was a really, really detailed article. And, is everyone going, like, going to need to, like, dive through this and understand all the inner workings to use server components? No, because you would normally use them just because, you know, Next, or Redwood, or Remix already has them integrated, and you sort of follow, like, the framework version of the docs, for the most part. +[20:05] And this was a really, really detailed article. And, is everyone going, like, going to need to, like, dive through this and understand all the inner workings to use server components? No, because you would normally use them just because, you know, Next, or Redwood, or Remix already has them integrated, and you sort of follow, like, the framework version of the docs, for the most part. -[00:20:30] But, one of the problems with server components has just been that the low level workings have not really been documented so far. So, everyone's either having to look at the very bare bones examples in the React repo, or, in most cases, actually looking at the internals of Next, and trying to figure out, "well, how much of this is something we need to copy and paste, and how much of this implementation is very specific to the way Next works." +[20:30] But, one of the problems with server components has just been that the low level workings have not really been documented so far. So, everyone's either having to look at the very bare bones examples in the React repo, or, in most cases, actually looking at the internals of Next, and trying to figure out, "well, how much of this is something we need to copy and paste, and how much of this implementation is very specific to the way Next works." -[00:20:58] So, like, everyone's looking at Next's internals and trying to figure out what they're supposed to do. So, having an article that sort of breaks some of this down without any other frameworks involved is actually pretty helpful to understand what's going on inside. +[20:58] So, like, everyone's looking at Next's internals and trying to figure out what they're supposed to do. So, having an article that sort of breaks some of this down without any other frameworks involved is actually pretty helpful to understand what's going on inside. -[00:21:13] **Carl Vitullo:** Most, most definitely. I was pretty surprised at, having never even, I've barely even tried to use server components through Next. So I've had even less exposure to using server components without Next or any other framework. And I was a little surprised at some of the details here, like he mentioned having to use the react-server-dom-webpack webpack plugin, which has no documentation at all for it. So like, ooh, yikes, okay, I've wrangled some complex webpack configs before, and they're hard enough when it is documented. +[21:13] **Carl Vitullo:** Most, most definitely. I was pretty surprised at, having never even, I've barely even tried to use server components through Next. So I've had even less exposure to using server components without Next or any other framework. And I was a little surprised at some of the details here, like he mentioned having to use the react-server-dom-webpack webpack plugin, which has no documentation at all for it. So like, ooh, yikes, okay, I've wrangled some complex webpack configs before, and they're hard enough when it is documented. -[00:21:49] So going, just the setting of transcending the like client server boundary through the bundler without documentation. It's like, oh yeah, okay, we're still in a rough spot here. +[21:49] So going, just the setting of transcending the like client server boundary through the bundler without documentation. It's like, oh yeah, okay, we're still in a rough spot here. -[00:22:02] **Mark Erikson:** There's a whole lot of dragons there. +[22:02] **Mark Erikson:** There's a whole lot of dragons there. -[00:22:03] **Carl Vitullo:** There be dragons for sure. So, just, you know, I tried to read through the code to get a general sense of what it would look like. +[22:03] **Carl Vitullo:** There be dragons for sure. So, just, you know, I tried to read through the code to get a general sense of what it would look like. -[00:22:12] I am a big fan of going from first principles, you know, even if I'm going to stick at the level of, you know, using a framework, I like to generally have a sense of what's going on inside. And, honestly, even reading this code, it was a little bit tricky to unfurl even, you know, what are just internal abstractions that were set up for this little toy example versus what's strictly required. +[22:12] I am a big fan of going from first principles, you know, even if I'm going to stick at the level of, you know, using a framework, I like to generally have a sense of what's going on inside. And, honestly, even reading this code, it was a little bit tricky to unfurl even, you know, what are just internal abstractions that were set up for this little toy example versus what's strictly required. -[00:22:36] So, yeah, it's definitely, I think, highlighted how rough of a state the experience of using server components is right now. Huge, huge props to Tim for putting this together. I think this is a, I think this will be, you know, regarded as a canonical contribution to the development of server components. +[22:36] So, yeah, it's definitely, I think, highlighted how rough of a state the experience of using server components is right now. Huge, huge props to Tim for putting this together. I think this is a, I think this will be, you know, regarded as a canonical contribution to the development of server components. -[00:22:56] You know, just want to applaud Tim for that. +[22:56] You know, just want to applaud Tim for that. -## [00:22:59] Remix 2.2 +## [22:59] Remix 2.2 -[00:22:59] **Carl Vitullo:** Talked about Next, it's time for Remix. Uh, Remix 2. 2 came out, and, it's interesting. I, so it looks like they are moving away from being a from owning a compiler and bundler step of it and moving towards leaning on Vite. So they, you know, they are claiming, you know, they are now supporting Vite as a bundler internally. +[22:59] **Carl Vitullo:** Talked about Next, it's time for Remix. Uh, Remix 2. 2 came out, and, it's interesting. I, so it looks like they are moving away from being a from owning a compiler and bundler step of it and moving towards leaning on Vite. So they, you know, they are claiming, you know, they are now supporting Vite as a bundler internally. -[00:23:28] Uh, and one of the, one of the things they Called out in this announcement that caught my eye is they, they're saying remix is no longer a compiler remix itself is just a vite plugin. That seems remarkable to me to totally change out the internals of how a framework is operating in that way, transparently and in a way that allows people to opt into it. +[23:28] Uh, and one of the, one of the things they Called out in this announcement that caught my eye is they, they're saying remix is no longer a compiler remix itself is just a vite plugin. That seems remarkable to me to totally change out the internals of how a framework is operating in that way, transparently and in a way that allows people to opt into it. -[00:23:52] in advance of the breaking changes being shipped. I think we talked last, it was either last episode or the one before, about the rollout process for new features that Remix is using and I think they're doing it really well. I think a lot of other open source projects could take a, you know, take a page from their book on how to roll out new features. +[23:52] in advance of the breaking changes being shipped. I think we talked last, it was either last episode or the one before, about the rollout process for new features that Remix is using and I think they're doing it really well. I think a lot of other open source projects could take a, you know, take a page from their book on how to roll out new features. -[00:24:11] **Mark Erikson:** Yeah, I think I'd seen some discussion from Ryan and Michael over the last couple years that they'd kept their compiler workings internal and abstracted, sort of, I guess, like, in spirit, similar to the way React App tried to hide everything behind a wall, because they were worried about exposing some of the specific knobs to end users, And, you know, that causing trouble for, for future upgrades, you know, like everything, it has trade offs, you know, maybe it made some people's uses of Remix a little bit harder because they couldn't tweak those knobs, but it, it seems like it's also made this particular upgrade process a little easier because now they've, they've swapped the underlying layer entirely and actually sort of been able to get out of the compiler business completely. +[24:11] **Mark Erikson:** Yeah, I think I'd seen some discussion from Ryan and Michael over the last couple years that they'd kept their compiler workings internal and abstracted, sort of, I guess, like, in spirit, similar to the way React App tried to hide everything behind a wall, because they were worried about exposing some of the specific knobs to end users, And, you know, that causing trouble for, for future upgrades, you know, like everything, it has trade offs, you know, maybe it made some people's uses of Remix a little bit harder because they couldn't tweak those knobs, but it, it seems like it's also made this particular upgrade process a little easier because now they've, they've swapped the underlying layer entirely and actually sort of been able to get out of the compiler business completely. -[00:24:57] **Carl Vitullo:** Very cool. Very interesting. It seems like they've made a lot of really good, uh. Choices to set them up for speed of iteration, which I think is a great metric to optimize for. Seeing a comment in the chat, Vite is under scrutiny for using ES modules in development, not convinced this is the best course of action. +[24:57] **Carl Vitullo:** Very cool. Very interesting. It seems like they've made a lot of really good, uh. Choices to set them up for speed of iteration, which I think is a great metric to optimize for. Seeing a comment in the chat, Vite is under scrutiny for using ES modules in development, not convinced this is the best course of action. -[00:25:15] Yeah, I've also heard some, just in the last day or two, I've seen some blowback. Vite as like, I don't know, the bundle less movement is, I think Next just put out some stuff saying that like, oh, the bundle less Uh, movement has failed, and they talked about how they really tried to make it work with Vite and just couldn't. +[25:15] Yeah, I've also heard some, just in the last day or two, I've seen some blowback. Vite as like, I don't know, the bundle less movement is, I think Next just put out some stuff saying that like, oh, the bundle less Uh, movement has failed, and they talked about how they really tried to make it work with Vite and just couldn't. -[00:25:34] So, I don't know, curious, you know, we just did a, discussed the comparison of Next and Remix and curious that, uh, Next said, like, ugh, this can't work, we can't make it work. And Remix just Did it. +[25:34] So, I don't know, curious, you know, we just did a, discussed the comparison of Next and Remix and curious that, uh, Next said, like, ugh, this can't work, we can't make it work. And Remix just Did it. -[00:25:45] **Mark Erikson:** I'm a little, I'm a little bit curious about what the actual meaning of bundleless in that specific discussion is. +[25:45] **Mark Erikson:** I'm a little, I'm a little bit curious about what the actual meaning of bundleless in that specific discussion is. -[00:25:54] I know that in development mode, Vite tries to use ES modules kind of like straight up without, without fully bundling them, but they do actually get bundled for production. And so, like, a lot of the discussion, maybe four or five years ago, was, you know, with, with HTTP2 streaming, and, and like, you know, browsers supporting ES modules natively, we might not have to bundle, you can just have your individual dot You know, JS or mjs files on disk and they can all, like, they can all just get fed out automatically and eventually folks concluded that, you know, based on the number of files that have to be downloaded and dependency, you know, chains and whatnot, that, well, actually, yeah, bundling is still a good idea, but that's really talking about production usages, and so I'm a little confused why I think it was Guillermo Rauch in this case was saying, like, bundleless didn't work and pointing the finger at Vite when Vite does it in dev. +[25:54] I know that in development mode, Vite tries to use ES modules kind of like straight up without, without fully bundling them, but they do actually get bundled for production. And so, like, a lot of the discussion, maybe four or five years ago, was, you know, with, with HTTP2 streaming, and, and like, you know, browsers supporting ES modules natively, we might not have to bundle, you can just have your individual dot You know, JS or mjs files on disk and they can all, like, they can all just get fed out automatically and eventually folks concluded that, you know, based on the number of files that have to be downloaded and dependency, you know, chains and whatnot, that, well, actually, yeah, bundling is still a good idea, but that's really talking about production usages, and so I'm a little confused why I think it was Guillermo Rauch in this case was saying, like, bundleless didn't work and pointing the finger at Vite when Vite does it in dev. -[00:26:58] So I'm not following all that discussion. +[26:58] So I'm not following all that discussion. -[00:27:01] **Carl Vitullo:** Thanks for bringing that in. I had forgotten some of that context, but now that you mention it, I know that they have talked over the last six weeks or so about, I know that Next has talked about working to improve the developer experience, and so I wonder if maybe that's the lens they're looking at this from, is they were, they came at it with a goal of making the developer experience better. +[27:01] **Carl Vitullo:** Thanks for bringing that in. I had forgotten some of that context, but now that you mention it, I know that they have talked over the last six weeks or so about, I know that Next has talked about working to improve the developer experience, and so I wonder if maybe that's the lens they're looking at this from, is they were, they came at it with a goal of making the developer experience better. -[00:27:21] And we're not able to make the, you know, unbundled files as necessary, actually improve the experience because, right, because of, you know, exactly the same reason that nobody has ever been able to make HTTP a usable experience, uh, just there's constant waterfalls and you request one file and that request more files, which request more and more and more and more. +[27:21] And we're not able to make the, you know, unbundled files as necessary, actually improve the experience because, right, because of, you know, exactly the same reason that nobody has ever been able to make HTTP a usable experience, uh, just there's constant waterfalls and you request one file and that request more files, which request more and more and more and more. -[00:27:46] I think that's probably where that came from. +[27:46] I think that's probably where that came from. -[00:27:48] **Mark Erikson:** That would make sense. +[27:48] **Mark Erikson:** That would make sense. -[00:27:49] **Carl Vitullo:** I think it's super cool that Remix has been able to make this work. +[27:49] **Carl Vitullo:** I think it's super cool that Remix has been able to make this work. -## [00:27:52] Shopify Hydrogen Remix v2 support +## [27:52] Shopify Hydrogen Remix v2 support -[00:27:52] **Carl Vitullo:** Sort of sub Remix news, Shopify acquired the Remix business, so they've been sponsoring development and supporting the team, and it looks like they just shipped the port for Remix 2 in their Hydrogen e commerce headless framework. +[27:52] **Carl Vitullo:** Sort of sub Remix news, Shopify acquired the Remix business, so they've been sponsoring development and supporting the team, and it looks like they just shipped the port for Remix 2 in their Hydrogen e commerce headless framework. -[00:28:09] Cool to see that they are genuinely investing in this, not just sponsoring. +[28:09] Cool to see that they are genuinely investing in this, not just sponsoring. -[00:28:14] **Mark Erikson:** Not just acquire, hiring the team. +[28:14] **Mark Erikson:** Not just acquire, hiring the team. -[00:28:16] **Carl Vitullo:** Right, exactly. They didn't just buy the talent. They are genuinely investing in the open source project and then improving their own more narrowly scoped open source development on top of that. +[28:16] **Carl Vitullo:** Right, exactly. They didn't just buy the talent. They are genuinely investing in the open source project and then improving their own more narrowly scoped open source development on top of that. -[00:28:30] So, super cool. It's, I know people have talked about You know, oh, venture capital in open source is, you know, anathema, it's terrible, don't do it. But this looks like a really cool positive outcome for that setting. Okay, Remix, the economics for running that as a venture invested business are maybe, I don't know how you get the growth multiples there. +[28:30] So, super cool. It's, I know people have talked about You know, oh, venture capital in open source is, you know, anathema, it's terrible, don't do it. But this looks like a really cool positive outcome for that setting. Okay, Remix, the economics for running that as a venture invested business are maybe, I don't know how you get the growth multiples there. -[00:28:55] Raising funding to pay yourselves as you develop and then selling to a business that does see a business use case in operating that. This seems like a pretty positive outcome for that, so just, yeah, I appreciate that. Seems cool. +[28:55] Raising funding to pay yourselves as you develop and then selling to a business that does see a business use case in operating that. This seems like a pretty positive outcome for that, so just, yeah, I appreciate that. Seems cool. -[00:29:09] **Mark Erikson:** One other little snarky side observation along the way. It's ironic that the React docs emphasize so strongly that you should be using a framework to start any new React project. +[29:09] **Mark Erikson:** One other little snarky side observation along the way. It's ironic that the React docs emphasize so strongly that you should be using a framework to start any new React project. -[00:29:21] And of course, you know, the top choices are Next, Remix, Gatsby, (RIP) and Expo. And yet, Remix itself, and like, Vite is relegated to the, "well, if you want to start an SPA, I guess you can, we can't stop you." And yet, Remix itself is now actually based on Vite, which was relegated to that subheader. +[29:21] And of course, you know, the top choices are Next, Remix, Gatsby, (RIP) and Expo. And yet, Remix itself, and like, Vite is relegated to the, "well, if you want to start an SPA, I guess you can, we can't stop you." And yet, Remix itself is now actually based on Vite, which was relegated to that subheader. -[00:29:47] **Carl Vitullo:** Yeah, low level tools. +[29:47] **Carl Vitullo:** Yeah, low level tools. -[00:29:48] Cool to see them get used though. +[29:48] Cool to see them get used though. -## [00:29:51] RTK 2.0 (and lots of others) +## [29:51] RTK 2.0 (and lots of others) -[00:29:51] **Mark Erikson:** Okay, so next item, some personal interest here, but it's also actual news, which technically hasn't happened yet, but is about to. We are hopefully about to hit the button on Redux Toolkit 2. 0. Like, so help me, by Sunday, I hope. This is an effort that has been going on since literally the start of this year. +[29:51] **Mark Erikson:** Okay, so next item, some personal interest here, but it's also actual news, which technically hasn't happened yet, but is about to. We are hopefully about to hit the button on Redux Toolkit 2. 0. Like, so help me, by Sunday, I hope. This is an effort that has been going on since literally the start of this year. -[00:30:13] When this happens, we're going to simultaneously ship major versions of Redux Toolkit 2. 0, Redux Core 5. 0, Reselect 5. 0, React Redux 9. 0, and, drumroll please, Redux Thunk 3. 0. And all of these are going to have modernized packaging with, hopefully, proper ESM CommonJS compatibility. Modernized JavaScript build output, so we're using the latest, greatest JavaScript syntax and no longer targeting IE11, thankfully. +[30:13] When this happens, we're going to simultaneously ship major versions of Redux Toolkit 2. 0, Redux Core 5. 0, Reselect 5. 0, React Redux 9. 0, and, drumroll please, Redux Thunk 3. 0. And all of these are going to have modernized packaging with, hopefully, proper ESM CommonJS compatibility. Modernized JavaScript build output, so we're using the latest, greatest JavaScript syntax and no longer targeting IE11, thankfully. -[00:30:49] There's some performance improvements. Redux Toolkit now uses Immer 10, which has some noticeable updates in updates, or improvements in update speed. We've cleaned up a bunch of deprecated options and added some new features. A migration guide page already up on the website. There may be a couple last Tweaks that need to go in there. +[30:49] There's some performance improvements. Redux Toolkit now uses Immer 10, which has some noticeable updates in updates, or improvements in update speed. We've cleaned up a bunch of deprecated options and added some new features. A migration guide page already up on the website. There may be a couple last Tweaks that need to go in there. -[00:31:12] Our hope is that for a lot of apps, it might just be bump the versions and you're done, but we've tried to call out all the things that qualify as either really breaking changes or like this could sort of be considered a breaking change. +[31:12] Our hope is that for a lot of apps, it might just be bump the versions and you're done, but we've tried to call out all the things that qualify as either really breaking changes or like this could sort of be considered a breaking change. -[00:31:29] The one last thing that is sort of holding up the release at the moment is I am about to pull the trigger on changing some of the default behavior for the Reselect library. Reselect has been mostly unchanged ever since its release in terms of how the internals work. It's sort of doing one reference equality comparison for every argument, basically. And if any of those have changed, then it recalculates. But you can swap out the comparison function to do, like, shallow equality, or whatever. +[31:29] The one last thing that is sort of holding up the release at the moment is I am about to pull the trigger on changing some of the default behavior for the Reselect library. Reselect has been mostly unchanged ever since its release in terms of how the internals work. It's sort of doing one reference equality comparison for every argument, basically. And if any of those have changed, then it recalculates. But you can swap out the comparison function to do, like, shallow equality, or whatever. -[00:32:04] CreateSelector has always had a default cache size of 1. If you, like, alternate the arguments back and forth, it'll never memoize, because it's like, "This doesn't look like the last thing you gave me. Recalculate. This doesn't look like the last thing you gave me. Recalculate." And so you kind of have to go through some shenanigans to handle cases where, like, you want to use the same selector in a list item component, but you're passing in, like, the ID of the item as an argument or something. +[32:04] CreateSelector has always had a default cache size of 1. If you, like, alternate the arguments back and forth, it'll never memoize, because it's like, "This doesn't look like the last thing you gave me. Recalculate. This doesn't look like the last thing you gave me. Recalculate." And so you kind of have to go through some shenanigans to handle cases where, like, you want to use the same selector in a list item component, but you're passing in, like, the ID of the item as an argument or something. -[00:32:36] And I had updated reselect a couple years ago to be able to have a larger cache size, but you had to specifically pass in that option. So earlier this year I actually copy pasted this super secret caching function implementation from the React code, and it uses weak maps to form like a tree of cache data. +[32:36] And I had updated reselect a couple years ago to be able to have a larger cache size, but you had to specifically pass in that option. So earlier this year I actually copy pasted this super secret caching function implementation from the React code, and it uses weak maps to form like a tree of cache data. -[00:33:01] And the net effect is it kind of basically becomes like an infinite cache size with no further work needed. +[33:01] And the net effect is it kind of basically becomes like an infinite cache size with no further work needed. -[00:33:09] **Carl Vitullo:** Oh, interesting. +[33:09] **Carl Vitullo:** Oh, interesting. -[00:33:10] **Mark Erikson:** And so what I've been debating is, is it worth switching Reselect's default behavior over to use that? As the default preferred approach. And I've, I've been waffling and debating the pros and cons and the trade offs. +[33:10] **Mark Erikson:** And so what I've been debating is, is it worth switching Reselect's default behavior over to use that? As the default preferred approach. And I've, I've been waffling and debating the pros and cons and the trade offs. -[00:33:25] And I think I'm actually about to do it. One observation I'll make is that technically an infinite cache size is also synonymous with a memory leak, like, you know, sort of looks the same way. Weighing a couple of concerns around that. But I think the improvement in the default behavior is going to be nice enough that it's worth making that switch. +[33:25] And I think I'm actually about to do it. One observation I'll make is that technically an infinite cache size is also synonymous with a memory leak, like, you know, sort of looks the same way. Weighing a couple of concerns around that. But I think the improvement in the default behavior is going to be nice enough that it's worth making that switch. -[00:33:45] And we'll sort of document, like, here's the trade offs with the new built in approach. So, you know, that's the kind of stuff that's been on my mind trying to finalize this over the last couple of weeks. +[33:45] And we'll sort of document, like, here's the trade offs with the new built in approach. So, you know, that's the kind of stuff that's been on my mind trying to finalize this over the last couple of weeks. -[00:33:57] I'm actually literally hoping to make that change to the code tonight, document it, update the release notes, do some, do some hopefully last minute real world ish testing, and then hopefully ship this by the weekend, I hope, because I really don't want to spend December like, while I'm traveling, having this stuff on my mind. +[33:57] I'm actually literally hoping to make that change to the code tonight, document it, update the release notes, do some, do some hopefully last minute real world ish testing, and then hopefully ship this by the weekend, I hope, because I really don't want to spend December like, while I'm traveling, having this stuff on my mind. -[00:34:16] **Carl Vitullo:** I remember that being, like, kind of the number one gotcha with, you know, Idiomatic Redux, you get a lot of really great performance characteristics if you get all the selectors just right, but it became kind of a puzzle of how to set it up just right to get there. You know, like, if you, like you said, if you end up having a list of things where you want to select items out of it, then you needed to, like, you needed to instantiate the selector in just this right certain way, so it was actually memoizing, so you actually got the performance benefits. So yeah, very cool. That makes a lot of sense for changing defaults to make it give you good performance in a wider range of circumstances. +[34:16] **Carl Vitullo:** I remember that being, like, kind of the number one gotcha with, you know, Idiomatic Redux, you get a lot of really great performance characteristics if you get all the selectors just right, but it became kind of a puzzle of how to set it up just right to get there. You know, like, if you, like you said, if you end up having a list of things where you want to select items out of it, then you needed to, like, you needed to instantiate the selector in just this right certain way, so it was actually memoizing, so you actually got the performance benefits. So yeah, very cool. That makes a lot of sense for changing defaults to make it give you good performance in a wider range of circumstances. -[00:34:54] **Mark Erikson:** Right, so I mean, it ultimately boils down to, I think the, it'll be a small but meaningful improvement to developer experience. +[34:54] **Mark Erikson:** Right, so I mean, it ultimately boils down to, I think the, it'll be a small but meaningful improvement to developer experience. -[00:35:02] Uh, similarly, we've actually added a couple development mode checks to reselect. Sort of similar in spirit to like, you know, how strict mode works with React components. To watch for things like, you know, your input functions are returning a new reference every time, so this selector never actually memoizes. Or, the output function just returns the value it was given with no transformation, which, either of those means you're holding this wrong. Stop it. +[35:02] Uh, similarly, we've actually added a couple development mode checks to reselect. Sort of similar in spirit to like, you know, how strict mode works with React components. To watch for things like, you know, your input functions are returning a new reference every time, so this selector never actually memoizes. Or, the output function just returns the value it was given with no transformation, which, either of those means you're holding this wrong. Stop it. -[00:35:34] **Carl Vitullo:** Cool, I'll move us on. I guess that's the end of our full discussion links, so we're into the lightning round now. +[35:34] **Carl Vitullo:** Cool, I'll move us on. I guess that's the end of our full discussion links, so we're into the lightning round now. -## [00:35:40] CSS improvements +## [35:40] CSS improvements -[00:35:40] **Carl Vitullo:** Couldn't find a better source for this than just a newsletter that I was reading, so I'm posting that. +[35:40] **Carl Vitullo:** Couldn't find a better source for this than just a newsletter that I was reading, so I'm posting that. -[00:35:45] But some good CSS improvements coming out, like the hasSelector, which is something I've needed on a number of occasions and just never found a way to do it. So I'm excited to see that like browser support is currently there to where you can just use this. You can select nodes in the DOM that contain something else. +[35:45] But some good CSS improvements coming out, like the hasSelector, which is something I've needed on a number of occasions and just never found a way to do it. So I'm excited to see that like browser support is currently there to where you can just use this. You can select nodes in the DOM that contain something else. -[00:36:05] Previously, selectors were sort of upward looking, like you could, you could select, you could narrow in on children under specific parents, but you couldn't say For all parents of this type of thing, style it this way. So it sort of reverses the direction of control for CSS, or gives you a mechanism to do so, which just unlocks a whole other category of things that you can do with CSS in a way that I think is super powerful. +[36:05] Previously, selectors were sort of upward looking, like you could, you could select, you could narrow in on children under specific parents, but you couldn't say For all parents of this type of thing, style it this way. So it sort of reverses the direction of control for CSS, or gives you a mechanism to do so, which just unlocks a whole other category of things that you can do with CSS in a way that I think is super powerful. -[00:36:31] There's also CSS nesting, which is Virtually the only reason I still use Sass anymore, just being able to write rules instead of a series of long lines just like wrapping, you know, nesting them under each other for related selectors. And I don't know that this is one that I would use myself specifically, but I think it's pretty cool. +[36:31] There's also CSS nesting, which is Virtually the only reason I still use Sass anymore, just being able to write rules instead of a series of long lines just like wrapping, you know, nesting them under each other for related selectors. And I don't know that this is one that I would use myself specifically, but I think it's pretty cool. -[00:36:53] a color function for more advanced control over what color space you're using, which not something I need very often in developing web products, but if you're doing something a little bit more like creative coding, artistry, or trying to correctly render colors in a specific setting, like if you know that this monitor can render this color space accurately, use that rather than sRGB. +[36:53] a color function for more advanced control over what color space you're using, which not something I need very often in developing web products, but if you're doing something a little bit more like creative coding, artistry, or trying to correctly render colors in a specific setting, like if you know that this monitor can render this color space accurately, use that rather than sRGB. -[00:37:19] Um, as somebody who has done a lot of photography and gained an awareness of color spaces through trying to do prints and things like that. I appreciate that this exists, that this is now a function that can be used in CSS. +[37:19] Um, as somebody who has done a lot of photography and gained an awareness of color spaces through trying to do prints and things like that. I appreciate that this exists, that this is now a function that can be used in CSS. -## [00:37:31] Why you want React Query +## [37:31] Why you want React Query -[00:37:31] **Mark Erikson:** So, Dominic Dorfmeister, aka TKDodo, the maintainer of ReactQuery and Uh, tanstackquery put up a really good post talking about why you want ReactQuery. +[37:31] **Mark Erikson:** So, Dominic Dorfmeister, aka TKDodo, the maintainer of ReactQuery and Uh, tanstackquery put up a really good post talking about why you want ReactQuery. -[00:37:43] And I believe this was kind of inspired by a, you know, kind of a tweet that was going around showing like, "look, here's a fetch call and a useEffect. It's like 10 lines of code. How many bugs are there?" And the answer is a lot. And some of it's, some of it's bugs, some of it's, well, here's a bunch of edge cases you didn't take into account, like this, this doesn't have error handling, this doesn't deal with, you know, double fetching in strict mode, this doesn't deal with handling, you know, resetting data or error separately. +[37:43] And I believe this was kind of inspired by a, you know, kind of a tweet that was going around showing like, "look, here's a fetch call and a useEffect. It's like 10 lines of code. How many bugs are there?" And the answer is a lot. And some of it's, some of it's bugs, some of it's, well, here's a bunch of edge cases you didn't take into account, like this, this doesn't have error handling, this doesn't deal with, you know, double fetching in strict mode, this doesn't deal with handling, you know, resetting data or error separately. -[00:38:14] And so, Dominic kind of walks through the process of, like, if we were to make this 10 line example properly robust, Here's all the added complexity that the example skipped over. And dealing with that complexity is not a thing you want to write for yourself. And this is actually why it's worth using a library, like ReactQuery, Apollo, SWR, RTKQuery, to manage that for you. +[38:14] And so, Dominic kind of walks through the process of, like, if we were to make this 10 line example properly robust, Here's all the added complexity that the example skipped over. And dealing with that complexity is not a thing you want to write for yourself. And this is actually why it's worth using a library, like ReactQuery, Apollo, SWR, RTKQuery, to manage that for you. -[00:38:44] Because all that really complex logic has already been encapsulated inside the library, you would have had to write this yourself anyway. You wouldn't have thought about it, just use the library. It deals with it for you, it will handle it correctly. But very worth reading to get a sense of here's all the edge cases involved. +[38:44] Because all that really complex logic has already been encapsulated inside the library, you would have had to write this yourself anyway. You wouldn't have thought about it, just use the library. It deals with it for you, it will handle it correctly. But very worth reading to get a sense of here's all the edge cases involved. -## [00:39:04] Looking back on Decorators +## [39:04] Looking back on Decorators -[00:39:04] **Carl Vitullo:** Cool. I just liked this post. It's not necessarily newsworthy, it's not something new, but 10 years of JavaScript decorators. Decorators have been around in various states for 10 years. It's been 2013, yeah, that I first started hearing about them. You know, Angular went pretty hard on them. There was MobX went pretty hard on them. +[39:04] **Carl Vitullo:** Cool. I just liked this post. It's not necessarily newsworthy, it's not something new, but 10 years of JavaScript decorators. Decorators have been around in various states for 10 years. It's been 2013, yeah, that I first started hearing about them. You know, Angular went pretty hard on them. There was MobX went pretty hard on them. -[00:39:26] The actual standardized proposal for how to add them to JavaScript just languished for So, so, so many years. Uh, so I just appreciated this, you know, retrospective on the evolution that decorators have gone through over the, over the years and all the reasoning why it got stalled out and thought it was a good read on a relatively common but very confusing part of the +[39:26] The actual standardized proposal for how to add them to JavaScript just languished for So, so, so many years. Uh, so I just appreciated this, you know, retrospective on the evolution that decorators have gone through over the, over the years and all the reasoning why it got stalled out and thought it was a good read on a relatively common but very confusing part of the -[00:39:51] **Mark Erikson:** JavaScript language. +[39:51] **Mark Erikson:** JavaScript language. -[00:39:52] I would expect that most people who have used decorators have never thought about what's actually going on under the hood or the fact that the definition and the implementation has changed multiple times. +[39:52] I would expect that most people who have used decorators have never thought about what's actually going on under the hood or the fact that the definition and the implementation has changed multiple times. -[00:40:03] **Carl Vitullo:** Yeah, MobX or Angular, were not exactly shouting about how this is an unstable feature and it has not landed yet. +[40:03] **Carl Vitullo:** Yeah, MobX or Angular, were not exactly shouting about how this is an unstable feature and it has not landed yet. -[00:40:09] Cool, wanna take us on? +[40:09] Cool, wanna take us on? -## [00:40:10] React sourcemaps generally available +## [40:10] React sourcemaps generally available -[00:40:10] **Mark Erikson:** Okay, so, another sort of personal note, this is one I've been harping on literally for months. So, way back in like, March, I filed a pull request to modify React's build system to actually generate source maps for production build artifacts. And the PR kind of sat there for a number of months. +[40:10] **Mark Erikson:** Okay, so, another sort of personal note, this is one I've been harping on literally for months. So, way back in like, March, I filed a pull request to modify React's build system to actually generate source maps for production build artifacts. And the PR kind of sat there for a number of months. -[00:40:32] Uh, Dan briefly tried to review it, and we had gotten some back and forth about, you know, some of the nuances of behavior. I am very happy to report that as of a couple weeks ago, this has finally been merged, and it is actually shipping in React builds right now. And you can verify this if you were to go to, for example, unpkg, and look at React, uh, React or ReactDOM. +[40:32] Uh, Dan briefly tried to review it, and we had gotten some back and forth about, you know, some of the nuances of behavior. I am very happy to report that as of a couple weeks ago, this has finally been merged, and it is actually shipping in React builds right now. And you can verify this if you were to go to, for example, unpkg, and look at React, uh, React or ReactDOM. -[00:40:57] And if you were to select one of the experimental or the canary builds, uh, experimentals are generated pretty much daily, canaries kind of like every couple weeks or so, you would see that the source map files actually exist in published builds of React today. Now, of course, This brings up the question, when will the next stable build of React come out? +[40:57] And if you were to select one of the experimental or the canary builds, uh, experimentals are generated pretty much daily, canaries kind of like every couple weeks or so, you would see that the source map files actually exist in published builds of React today. Now, of course, This brings up the question, when will the next stable build of React come out? -[00:41:19] Who knows? I'm hearing rumors that they're working on, towards an actual React 19. This doesn't exist in a stable build yet, unfortunately. But when the next stable build comes out, it should actually have source maps. I'm very excited about this. It's not necessarily going to benefit everybody all the time, but it's a missing piece that fills in and anyone who's trying to peek inside React in production will hopefully have a better experience. +[41:19] Who knows? I'm hearing rumors that they're working on, towards an actual React 19. This doesn't exist in a stable build yet, unfortunately. But when the next stable build comes out, it should actually have source maps. I'm very excited about this. It's not necessarily going to benefit everybody all the time, but it's a missing piece that fills in and anyone who's trying to peek inside React in production will hopefully have a better experience. -## [00:41:47] Formatter performance bounty +## [41:47] Formatter performance bounty -[00:41:47] **Carl Vitullo:** There was a bounty put out for improving performance of code formatting. Uh, the Prettier organization put out a 10, 000 bounty that was then doubled by, I think by Guillermo Rauch. +[41:47] **Carl Vitullo:** There was a bounty put out for improving performance of code formatting. Uh, the Prettier organization put out a 10, 000 bounty that was then doubled by, I think by Guillermo Rauch. -[00:42:02] **Mark Erikson:** I think so, yeah. +[42:02] **Mark Erikson:** I think so, yeah. -[00:42:04] **Carl Vitullo:** I believe the specific criteria for the bounty was a Rust based formatter that passed like 95 percent of the test cases that Prettier has. +[42:04] **Carl Vitullo:** I believe the specific criteria for the bounty was a Rust based formatter that passed like 95 percent of the test cases that Prettier has. -[00:42:14] And. Yeah, it got claimed. The Biome organization, which is a fork of Rome after that project collapsed, came together and less than three weeks after the bounty was posted, they claimed it. So it was 10, 000 from Prettier, 10, 000 from Guillermo Rauch, and then I think another like 2, 500 or like 2, 250 from an unnamed anonymous donor as well. +[42:14] And. Yeah, it got claimed. The Biome organization, which is a fork of Rome after that project collapsed, came together and less than three weeks after the bounty was posted, they claimed it. So it was 10, 000 from Prettier, 10, 000 from Guillermo Rauch, and then I think another like 2, 500 or like 2, 250 from an unnamed anonymous donor as well. -[00:42:38] So yeah, cool. +[42:38] So yeah, cool. -[00:42:39] **Mark Erikson:** There was something in the Wasm ecosystem, I think. +[42:39] **Mark Erikson:** There was something in the Wasm ecosystem, I think. -[00:42:42] **Carl Vitullo:** Okay, something like that, yeah. Pretty interesting. I like the thought of open source bounties. I think that's an interesting monetization strategy. It's better than nothing, better than just putting a request out. So I appreciate that some companies were, or some people who had funding were willing to put their money where their mouth was on moving the, advancing the state of the ecosystem. +[42:42] **Carl Vitullo:** Okay, something like that, yeah. Pretty interesting. I like the thought of open source bounties. I think that's an interesting monetization strategy. It's better than nothing, better than just putting a request out. So I appreciate that some companies were, or some people who had funding were willing to put their money where their mouth was on moving the, advancing the state of the ecosystem. -[00:43:05] **Mark Erikson:** Yeah, there's a couple nice little extra points here. One is that Fabio Spampinato, I believe is his name, got nerd sniped into looking at the actual prettier source code and trying to find ways to speed it up. And sort of similar to how Marvin Hagemeister has been doing this whole series of blog posts, I'm like, I looked inside this JavaScript tool and it's doing stupidly inefficient things inside. And I made it run faster. +[43:05] **Mark Erikson:** Yeah, there's a couple nice little extra points here. One is that Fabio Spampinato, I believe is his name, got nerd sniped into looking at the actual prettier source code and trying to find ways to speed it up. And sort of similar to how Marvin Hagemeister has been doing this whole series of blog posts, I'm like, I looked inside this JavaScript tool and it's doing stupidly inefficient things inside. And I made it run faster. -[00:43:29] Uh, Fabio has been able to find a number of inefficiencies and PerfBottlenecks inside Prettier, and has some proof of concepts of making Prettier itself significantly faster, either through caching or improving cases where it was doing, like, file system lookups. +[43:29] Uh, Fabio has been able to find a number of inefficiencies and PerfBottlenecks inside Prettier, and has some proof of concepts of making Prettier itself significantly faster, either through caching or improving cases where it was doing, like, file system lookups. -[00:43:47] I think it even maybe inspired a PR to Node itself, where the fs. stat call was eagerly creating date objects for file times. And it turn like it turns out, you can just lazily instantiate the date object. Like it already knows the numeric times, but you can just l load the date object when it's actually accessed off the stat object. So like there's sort of a ripple effect of performance improvements going on here. +[43:47] I think it even maybe inspired a PR to Node itself, where the fs. stat call was eagerly creating date objects for file times. And it turn like it turns out, you can just lazily instantiate the date object. Like it already knows the numeric times, but you can just l load the date object when it's actually accessed off the stat object. So like there's sort of a ripple effect of performance improvements going on here. -[00:44:21] And then the other one was. Uh, Christopher Chedeaux, um, handle vjeux put up a comment on Hacker News describing why he decided to go the bounty route. And it had to do with, like, the best way to improve the ecosystem as a whole is to have multiple competing tools that are sort of egging each other on. +[44:21] And then the other one was. Uh, Christopher Chedeaux, um, handle vjeux put up a comment on Hacker News describing why he decided to go the bounty route. And it had to do with, like, the best way to improve the ecosystem as a whole is to have multiple competing tools that are sort of egging each other on. -[00:44:43] And so he wanted to get someone else working on it and then see that kind of ripple effect in let's, let's make all these tools better. And he feels that the money was very, very well spent in that way. +[44:43] And so he wanted to get someone else working on it and then see that kind of ripple effect in let's, let's make all these tools better. And he feels that the money was very, very well spent in that way. -[00:44:55] **Carl Vitullo:** Cool. Want to take us on? +[44:55] **Carl Vitullo:** Cool. Want to take us on? -## [00:44:56] Mark's self plug, Replay.io webinar +## [44:56] Mark's self plug, Replay.io webinar -[00:44:56] **Mark Erikson:** Yep, uh, so we're, we're almost out of time, uh, one more kind of self pluggish kind of a thing. +[44:56] **Mark Erikson:** Yep, uh, so we're, we're almost out of time, uh, one more kind of self pluggish kind of a thing. -[00:45:01] So as I said, my, my day job is working for Replay. io, which is a time traveling debugger for JavaScript. Uh, we've been doing a lot of work this year around not just debugging applications, but building features to help people debug flaky test suites. And so, uh, tomorrow, I'm actually gonna be holding a livestream slash webinar over in the Replay Discord. +[45:01] So as I said, my, my day job is working for Replay. io, which is a time traveling debugger for JavaScript. Uh, we've been doing a lot of work this year around not just debugging applications, but building features to help people debug flaky test suites. And so, uh, tomorrow, I'm actually gonna be holding a livestream slash webinar over in the Replay Discord. -[00:45:26] Uh, my teammate, Philip Crick, has done a lot of work over the years with Cypress and test stuff. And so we're gonna have a discussion tomorrow talking about, like, just debugging. This is actually one of my own personal hobby horses. Like, nobody teaches people how to debug. Conceptually, so we're going to spend some time talking about like, how do you think about the process of debugging? +[45:26] Uh, my teammate, Philip Crick, has done a lot of work over the years with Cypress and test stuff. And so we're gonna have a discussion tomorrow talking about, like, just debugging. This is actually one of my own personal hobby horses. Like, nobody teaches people how to debug. Conceptually, so we're going to spend some time talking about like, how do you think about the process of debugging? -[00:45:54] And then we'll look at, you know, replay the tool specifically and talk about some of the features and how you use it to actually dig into an application. So I'm excited. Should be fun. +[45:54] And then we'll look at, you know, replay the tool specifically and talk about some of the features and how you use it to actually dig into an application. So I'm excited. Should be fun. -[00:46:04] **Carl Vitullo:** Very nice. Always here for a, for a live event, a live chat. Yeah, Phillip reached out to me to talk through what that experience is like. So I hope it goes well. +[46:04] **Carl Vitullo:** Very nice. Always here for a, for a live event, a live chat. Yeah, Phillip reached out to me to talk through what that experience is like. So I hope it goes well. -[00:46:11] Cool. Okay. That was the last of our lightning round links. Uh, we had a couple of Bonus items, they're a little bit broader, uh, like for instance, +[46:11] Cool. Okay. That was the last of our lightning round links. Uh, we had a couple of Bonus items, they're a little bit broader, uh, like for instance, -[00:46:20] Angular has a, they're on version 17 and shipped a new doc site, so, cool, good for them, looks great. +[46:20] Angular has a, they're on version 17 and shipped a new doc site, so, cool, good for them, looks great. -[00:46:25] Docusaurus 3. 0 was released, which, now that Sebastien isn't here, I feel, I feel like we need to keep bringing in some of the, uh, Docusaurus. +[46:25] Docusaurus 3. 0 was released, which, now that Sebastien isn't here, I feel, I feel like we need to keep bringing in some of the, uh, Docusaurus. -[00:46:34] **Mark Erikson:** We owe it to him. +[46:34] **Mark Erikson:** We owe it to him. -[00:46:35] **Carl Vitullo:** We owe it to him, yeah, right, right, right, he's been such a great part of this show. +[46:35] **Carl Vitullo:** We owe it to him, yeah, right, right, right, he's been such a great part of this show. -[00:46:38] **Mark Erikson:** The biggest couple updates there are, it now uses React 18 and they've updated the MDX parsing library, so it uses the latest and greatest MDX syntax for intermingling, uh, markdown and react components. +[46:38] **Mark Erikson:** The biggest couple updates there are, it now uses React 18 and they've updated the MDX parsing library, so it uses the latest and greatest MDX syntax for intermingling, uh, markdown and react components. -[00:46:54] **Carl Vitullo:** I got two more. +[46:54] **Carl Vitullo:** I got two more. -[00:46:55] Google has officially released a set of react components for using the Google Maps API. Uh, so I, I think the. Projects like this have existed, but this is the first time one from Google, maintained by Google, has been released. +[46:55] Google has officially released a set of react components for using the Google Maps API. Uh, so I, I think the. Projects like this have existed, but this is the first time one from Google, maintained by Google, has been released. -[00:47:11] So that's cool. And my last one, this is just fun and silly, but somebody made a Windows 95 inspired UI toolkit for React. So, you know, I love, love a nostalgic style. +[47:11] So that's cool. And my last one, this is just fun and silly, but somebody made a Windows 95 inspired UI toolkit for React. So, you know, I love, love a nostalgic style. -[00:47:23] **Mark Erikson:** Yeah, I've, I've seen a bunch of, like, you know, Win95, 98, 2000 XP, like, CSS packages and, and online demos. As, as someone who grew up with that era, it's, it's always very interesting to see. +[47:23] **Mark Erikson:** Yeah, I've, I've seen a bunch of, like, you know, Win95, 98, 2000 XP, like, CSS packages and, and online demos. As, as someone who grew up with that era, it's, it's always very interesting to see. -[00:47:38] **Carl Vitullo:** It is now safe to turn off your computer. +[47:38] **Carl Vitullo:** It is now safe to turn off your computer. -[00:47:41] All right, that's all we got. Thank you so much for joining us. +[47:41] All right, that's all we got. Thank you so much for joining us. -[00:47:45] We'll be back next month on the last Wednesday here in the live stage of Reactiflux or back in your podcast feed as soon as we can, hopefully by the end of the month. If you see anything newsworthy in the meantime, definitely let us know in the Tech News and Reads channel. We do use that for sourcing new links. +[47:45] We'll be back next month on the last Wednesday here in the live stage of Reactiflux or back in your podcast feed as soon as we can, hopefully by the end of the month. If you see anything newsworthy in the meantime, definitely let us know in the Tech News and Reads channel. We do use that for sourcing new links. -[00:48:02] And yeah, you can discuss them with the community in the meantime. All right, thanks so much, everyone. +[48:02] And yeah, you can discuss them with the community in the meantime. All right, thanks so much, everyone. diff --git a/src/transcripts/tmir-october-2023.md b/src/transcripts/tmir-october-2023.md index 206645a..fc725ee 100644 --- a/src/transcripts/tmir-october-2023.md +++ b/src/transcripts/tmir-october-2023.md @@ -14,18 +14,18 @@ people: "[Carl Vitullo](https://twitter.com/vcarl_) and [Mark Erikson](https://t -- [00:00:00] Introduction by Carl Vitullo and Mark Erikson -- [00:01:04] React Forget and memoization ([00:02:00] Optimizing performance, [00:02:35] Used in production at Facebook) -- [00:03:52] React Server Actions in canary release ([00:04:09] Versioning policy) -- [00:05:40] TanStack Query v5 release ([00:06:02] New features, [00:06:13] Deferring changes for Redux Toolkit Query) -- [00:07:42] Barrel files and performance ([00:08:47] Avoid for build performance) -- [00:09:13] React useTransition for concurrent rendering -- [00:10:37] Photoshop on the web ([00:11:07] Collaboration between Chrome and Adobe) -- [00:12:42] Yarn v4 release ([00:13:31] Per-project installs, [00:14:38] Performance improvements) -- [00:15:19] HTTP QUERY verb proposal ([00:16:05] Standardization for query APIs) -- [00:17:01] TC39 group for standardizing source maps ([00:18:31] Improve debugging) -- [00:19:00] Parcel performance improvements ([00:20:16] Data structure optimizations) -- [00:21:04] Replay DevTools time travel talk by Mark at React Advanced ([00:22:17] Peeking inside React internals) +- [00:00] Introduction by Carl Vitullo and Mark Erikson +- [01:04] React Forget and memoization ([02:00] Optimizing performance, [02:35] Used in production at Facebook) +- [03:52] React Server Actions in canary release ([04:09] Versioning policy) +- [05:40] TanStack Query v5 release ([06:02] New features, [06:13] Deferring changes for Redux Toolkit Query) +- [07:42] Barrel files and performance ([08:47] Avoid for build performance) +- [09:13] React useTransition for concurrent rendering +- [10:37] Photoshop on the web ([11:07] Collaboration between Chrome and Adobe) +- [12:42] Yarn v4 release ([13:31] Per-project installs, [14:38] Performance improvements) +- [15:19] HTTP QUERY verb proposal ([16:05] Standardization for query APIs) +- [17:01] TC39 group for standardizing source maps ([18:31] Improve debugging) +- [19:00] Parcel performance improvements ([20:16] Data structure optimizations) +- [21:04] Replay DevTools time travel talk by Mark at React Advanced ([22:17] Peeking inside React internals) In summary, this month focused on performance optimizations like React Forget and query API standardization, as well as releases like TanStack Query v5 and Yarn v4. Mark also discussed his React DevTools talk diving into time travel and hacking React internals. @@ -58,322 +58,322 @@ In summary, this month focused on performance optimizations like React Forget an - [Neat SIMD/Rust function](https://twitter.com/devongovett/status/1712169225786446111) - Mark: [My React Advanced talk: Building Better React DeTools with Replay Time Travel](https://blog.isquaredsoftware.com/2023/10/presentations-react-devtools-replay/)\*\* -[00:00:00] **Carl Vitullo:** Everyone, thank you for joining us for October's This Month in React. We have a solid amount of news this month. Excited to talk through it with y'all. Some news before we get going. Sebastian Lorber, our past co host and author of the This Week in React newsletter, Is not going to be joining us as a regular co host anymore. +[00:00] **Carl Vitullo:** Everyone, thank you for joining us for October's This Month in React. We have a solid amount of news this month. Excited to talk through it with y'all. Some news before we get going. Sebastian Lorber, our past co host and author of the This Week in React newsletter, Is not going to be joining us as a regular co host anymore. -[00:00:19] He is he's a new father. He just had a kid, so he is taking some well deserved time to be a new dad. He's also gonna be taking a break from the newsletter and he'll show up now and again as a guest, but he's not gonna be showing up every month like Mark and I will be and community news. We the star helper committee is finishing up evaluation for Q three. +[00:19] He is he's a new father. He just had a kid, so he is taking some well deserved time to be a new dad. He's also gonna be taking a break from the newsletter and he'll show up now and again as a guest, but he's not gonna be showing up every month like Mark and I will be and community news. We the star helper committee is finishing up evaluation for Q three. -[00:00:42] So we should have some new star helpers. Ready to go in a couple of days here. Thank you so much for joining us for this month in react, where we recap and digest recent developments in the ever evolving react and web ecosystem. I'm Carl Vitullo. I'm a staff product developer and freelance community leader here at reactive flux, the discord for react professionals. +[00:42] So we should have some new star helpers. Ready to go in a couple of days here. Thank you so much for joining us for this month in react, where we recap and digest recent developments in the ever evolving react and web ecosystem. I'm Carl Vitullo. I'm a staff product developer and freelance community leader here at reactive flux, the discord for react professionals. -[00:01:00] And I'm sure everyone knows Mark, but Mark, can you introduce yourself? +[01:00] And I'm sure everyone knows Mark, but Mark, can you introduce yourself? -[00:01:04] **Mark Erikson:** Hi, I'm Mark Erickson. I maintain the Redux family of libraries. My day job is working at Replay. io, where we're building a true time traveling debugger for JavaScript applications. And I sort of stick my head in anywhere there's a text box on the internet. +[01:04] **Mark Erikson:** Hi, I'm Mark Erickson. I maintain the Redux family of libraries. My day job is working at Replay. io, where we're building a true time traveling debugger for JavaScript applications. And I sort of stick my head in anywhere there's a text box on the internet. -[00:01:20] **Carl Vitullo:** That is entirely too true. Cool, you want to take us off on our first link? +[01:20] **Carl Vitullo:** That is entirely too true. Cool, you want to take us off on our first link? -[00:01:25] **Mark Erikson:** Two years ago, at the online React conf, the React team announced an early work in progress React optimization compiler, codenamed React Forget, and they had a video demo, and the idea was that this compiler could automatically rewrite the logic in your React components. +[01:25] **Mark Erikson:** Two years ago, at the online React conf, the React team announced an early work in progress React optimization compiler, codenamed React Forget, and they had a video demo, and the idea was that this compiler could automatically rewrite the logic in your React components. -[00:01:48] To do a few different things. One was to replace the need to stick use memo and use callback everywhere. And another is that by actually memoizing the JSX elements that your component returns, it could actually optimize the rendering and performance behavior of the application, but they'd been kind of quiet about it. +[01:48] To do a few different things. One was to replace the need to stick use memo and use callback everywhere. And another is that by actually memoizing the JSX elements that your component returns, it could actually optimize the rendering and performance behavior of the application, but they'd been kind of quiet about it. -[00:02:10] And they gave a brief update back in a React Lab blog post back in March, where they said, you know, we're working on it, we're doing testing internally at Facebook, there's still a lot of work left to do. I've been keeping an eye on this, and kind of like stalking the folks who are working on this compiler anytime they pop up on Twitter and happen to say anything about it. +[02:10] And they gave a brief update back in a React Lab blog post back in March, where they said, you know, we're working on it, we're doing testing internally at Facebook, there's still a lot of work left to do. I've been keeping an eye on this, and kind of like stalking the folks who are working on this compiler anytime they pop up on Twitter and happen to say anything about it. -[00:02:35] The good news is, That the React Forget compiler team has popped up and actually given a couple conference talks in the last couple weeks. And they've given us a lot of updates and new information about the status of this compiler. So the first one is that Satya gave a talk at React India, where he kind of laid out what are, what are some of the problems? +[02:35] The good news is, That the React Forget compiler team has popped up and actually given a couple conference talks in the last couple weeks. And they've given us a lot of updates and new information about the status of this compiler. So the first one is that Satya gave a talk at React India, where he kind of laid out what are, what are some of the problems? -[00:02:59] What does the compiler try to do? Um, gave some examples of cases where really hard situations where maybe you reassign a variable to a different name. And then the compiler has to figure out that these two things are actually the same and how does it try to deal with that? And that was kind of a high level look at what the forget compiler does. +[02:59] What does the compiler try to do? Um, gave some examples of cases where really hard situations where maybe you reassign a variable to a different name. And then the compiler has to figure out that these two things are actually the same and how does it try to deal with that? And that was kind of a high level look at what the forget compiler does. -[00:03:20] But the one that I was really, really waiting for was actually just this week at react advanced. Uh, Joe Savona and Mo Fei Zhang gave a talk entitled, uh, Understanding Idiomatic React. And part of the idea here is that, if your components are correctly written, and follow the, the rules of React, In terms of being pure or not having side effects and that sort of thing, the compiler can make some good assumptions about how to actually rewrite the code inside of there. +[03:20] But the one that I was really, really waiting for was actually just this week at react advanced. Uh, Joe Savona and Mo Fei Zhang gave a talk entitled, uh, Understanding Idiomatic React. And part of the idea here is that, if your components are correctly written, and follow the, the rules of React, In terms of being pure or not having side effects and that sort of thing, the compiler can make some good assumptions about how to actually rewrite the code inside of there. -[00:03:52] They, they showed kind of a demo of a playground that they use internally where the compiler will rewrite the logic and it shows what the transform code looks like. And they also gave a status update. And some details. So they said that it's actually being used in production in two different applications. +[03:52] They, they showed kind of a demo of a playground that they use internally where the compiler will rewrite the logic and it shows what the transform code looks like. And they also gave a status update. And some details. So they said that it's actually being used in production in two different applications. -[00:04:12] One is the Quest VR goggle store for React Native. And the other is Instagram for web's profile page. And what they said is that in both cases they, they sort of expected that, you know, we're probably going to run into a lot of problems. And I think that in both cases, the code basically just worked and there were some modest performance increases out of the box in terms of initial mount time and re render time. +[04:12] One is the Quest VR goggle store for React Native. And the other is Instagram for web's profile page. And what they said is that in both cases they, they sort of expected that, you know, we're probably going to run into a lot of problems. And I think that in both cases, the code basically just worked and there were some modest performance increases out of the box in terms of initial mount time and re render time. -[00:04:45] So at the moment, it sounds as if the compiler handles, I think they said like. 95 percent of JavaScript syntax and they've tested it against thousands of different components internally at Facebook. So at this point, they're, they're pretty confident that what they've built works. There is a lot more polish left to do, aren't going to open source it until they are confident it's ready for public usage and they have the bandwidth to offer support for doing it. +[04:45] So at the moment, it sounds as if the compiler handles, I think they said like. 95 percent of JavaScript syntax and they've tested it against thousands of different components internally at Facebook. So at this point, they're, they're pretty confident that what they've built works. There is a lot more polish left to do, aren't going to open source it until they are confident it's ready for public usage and they have the bandwidth to offer support for doing it. -[00:05:20] But I, I've been very tentatively hopeful for like the last couple of years that this is an effort that would actually work out. And after hearing the talk and I actually was sitting next to Mophie at dinner at the conference on Wednesday and was asking her a lot of questions about like, how does this work? +[05:20] But I, I've been very tentatively hopeful for like the last couple of years that this is an effort that would actually work out. And after hearing the talk and I actually was sitting next to Mophie at dinner at the conference on Wednesday and was asking her a lot of questions about like, how does this work? -[00:05:37] What's the status? I am actually very, very excited about this. I honestly think this will have a bigger impact on the react ecosystem in a lot of ways, then react server components will, I mean, they, they solve different problems. They're both useful, but I think this will actually, this is actually a very, very big deal. +[05:37] What's the status? I am actually very, very excited about this. I honestly think this will have a bigger impact on the react ecosystem in a lot of ways, then react server components will, I mean, they, they solve different problems. They're both useful, but I think this will actually, this is actually a very, very big deal. -[00:05:58] And then finally, you're related to that. Uh, there were two different articles that came out, uh, kind of back to back with each other. They were actually kind of arguing about how often should you use. The use memo and use callback hooks and some discussion of are you using optimizations in the components? +[05:58] And then finally, you're related to that. Uh, there were two different articles that came out, uh, kind of back to back with each other. They were actually kind of arguing about how often should you use. The use memo and use callback hooks and some discussion of are you using optimizations in the components? -[00:06:19] Are you using them just in case a child component might worry about trying to optimize its rendering behavior? And there's a lot of very, very good points being made in both of these articles. But part of my takeaway here is that in a hypothetically perfect future world. The react for that compiler could eliminate the need for us as application developers to even have to worry about that sort of thing because it will all just magically happen and it's good. +[06:19] Are you using them just in case a child component might worry about trying to optimize its rendering behavior? And there's a lot of very, very good points being made in both of these articles. But part of my takeaway here is that in a hypothetically perfect future world. The react for that compiler could eliminate the need for us as application developers to even have to worry about that sort of thing because it will all just magically happen and it's good. -[00:06:51] **Carl Vitullo:** I do like that. One of these conference talks was talking about idiomatic react. I feel like that has always been, you know, through my career, I feel like in all of the different workplaces I've worked at, I felt that I have worked towards a better understanding of what is meant to be idiomatic, like not just What do I enjoy using? +[06:51] **Carl Vitullo:** I do like that. One of these conference talks was talking about idiomatic react. I feel like that has always been, you know, through my career, I feel like in all of the different workplaces I've worked at, I felt that I have worked towards a better understanding of what is meant to be idiomatic, like not just What do I enjoy using? -[00:07:10] What, you know, how do I understand it? But like, how did the original authors intend for this to be used? So seeing a talk about those idioms, about what, you know, how the tool is meant to be used in this context of this compiler that is supposed to make many of those ideas work better or more easily, I feel like it really ties together. +[07:10] What, you know, how do I understand it? But like, how did the original authors intend for this to be used? So seeing a talk about those idioms, about what, you know, how the tool is meant to be used in this context of this compiler that is supposed to make many of those ideas work better or more easily, I feel like it really ties together. -[00:07:32] Here's why we built it this way. And here's why we recommend these things that are not always Easy or convenient or, you know, transparently improvements. So, uh, I, I like that a lot. I have, I haven't watched this talk. Um, I'm not super familiar with react forget and it's, you know, development and capabilities, but, uh, just purely on, you know, the, the name of the talk. +[07:32] Here's why we built it this way. And here's why we recommend these things that are not always Easy or convenient or, you know, transparently improvements. So, uh, I, I like that a lot. I have, I haven't watched this talk. Um, I'm not super familiar with react forget and it's, you know, development and capabilities, but, uh, just purely on, you know, the, the name of the talk. -[00:07:57] I, I, I love that. I think that's a really good framing. +[07:57] I, I, I love that. I think that's a really good framing. -[00:08:00] **Mark Erikson:** Conceptually, what happens is that it's a compiler, it knows how to parse your own JavaScript source code and all the arbitrary JavaScript logic you have in your component. Declaring variables, mapping over arrays, conditional logic, use memo, use callback, whatever. +[08:00] **Mark Erikson:** Conceptually, what happens is that it's a compiler, it knows how to parse your own JavaScript source code and all the arbitrary JavaScript logic you have in your component. Declaring variables, mapping over arrays, conditional logic, use memo, use callback, whatever. -[00:08:18] It's a compiler. It automatically transforms patterns A, B, and C. Into patterns X, Y, and Z. And so it can do the automatically memoizing you're like automatically handling dependencies for use memo or something like that. But the, in terms of like the, the rendering performance wins, most of us have heard about the react. +[08:18] It's a compiler. It automatically transforms patterns A, B, and C. Into patterns X, Y, and Z. And so it can do the automatically memoizing you're like automatically handling dependencies for use memo or something like that. But the, in terms of like the, the rendering performance wins, most of us have heard about the react. -[00:08:42] memo API that you wrap around a component. to keep it from re rendering when the props haven't changed. But there is a little known built in React optimization where if your component keeps around a JSX element reference like, you know, the return of angle bracket div or angle bracket my component And it returns that same element object the next time it renders. +[08:42] memo API that you wrap around a component. to keep it from re rendering when the props haven't changed. But there is a little known built in React optimization where if your component keeps around a JSX element reference like, you know, the return of angle bracket div or angle bracket my component And it returns that same element object the next time it renders. -[00:09:11] React sees that and says, Oh, you're like, you're literally, literally asking for the same thing as last time. I'm just going to skip over that. And it's a little bit like the parent component controlling the memoization of that subtree rather than the child component needing to be wrapped in react. memo to control it. +[09:11] React sees that and says, Oh, you're like, you're literally, literally asking for the same thing as last time. I'm just going to skip over that. And it's a little bit like the parent component controlling the memoization of that subtree rather than the child component needing to be wrapped in react. memo to control it. -[00:09:31] And this has been in React for years, um, even like the first versions of React Redux relied on that optimization approach. And so, part of what the React Forget compiler can do is rewrite all the logic in your component so that it memoizes pieces of your JSX output so that those element objects only get recalculated when the data they need changes. +[09:31] And this has been in React for years, um, even like the first versions of React Redux relied on that optimization approach. And so, part of what the React Forget compiler can do is rewrite all the logic in your component so that it memoizes pieces of your JSX output so that those element objects only get recalculated when the data they need changes. -[00:09:56] And thus, the automatic rendering optimizations kick in. We can debate whether this is, you know, a, a better approach conceptually, then I don't know, signals and observables and, you know, the various other performance improvements that are being used in the ecosystem today. One nice thing is that this is a build step. +[09:56] And thus, the automatic rendering optimizations kick in. We can debate whether this is, you know, a, a better approach conceptually, then I don't know, signals and observables and, you know, the various other performance improvements that are being used in the ecosystem today. One nice thing is that this is a build step. -[00:10:16] So you don't actually have to change any of your code in theory to get the advancements. I don't have a good grasp on exactly how much it slows down the build step. I think Moffay said something like 3, 000 components was taking maybe like a couple minutes? Something like that? +[10:16] So you don't actually have to change any of your code in theory to get the advancements. I don't have a good grasp on exactly how much it slows down the build step. I think Moffay said something like 3, 000 components was taking maybe like a couple minutes? Something like that? -[00:10:35] **Carl Vitullo:** That's not short. That's interesting though. +[10:35] **Carl Vitullo:** That's not short. That's interesting though. -[00:10:37] I where I'm picturing this being beneficial. I can think of many, many times when I have written use memo, you know, use callback optimizations because I want to hint to react that like these are stable references. I know that, you know, by by doing this whole chain all the way up from like the inside of this hook to a component to the transformation being done on that data to where it's being passed in. +[10:37] I where I'm picturing this being beneficial. I can think of many, many times when I have written use memo, you know, use callback optimizations because I want to hint to react that like these are stable references. I know that, you know, by by doing this whole chain all the way up from like the inside of this hook to a component to the transformation being done on that data to where it's being passed in. -[00:11:04] Thank you. If I want the best possible performance, I need to be intentional about when those references change. And so it sounds like this compiler is trying to do that same kind of logic where I would do it manually, you know, take it in my head and then write it all out. Which often I have found myself backed into a corner where it's like, oh shit, if I want to fix this reference, I need to totally fix all of the other logic around this because I have conceptualized the problem incorrectly. +[11:04] Thank you. If I want the best possible performance, I need to be intentional about when those references change. And so it sounds like this compiler is trying to do that same kind of logic where I would do it manually, you know, take it in my head and then write it all out. Which often I have found myself backed into a corner where it's like, oh shit, if I want to fix this reference, I need to totally fix all of the other logic around this because I have conceptualized the problem incorrectly. -[00:11:32] So something I've said about hooks in the past is a lot of the time it has felt more like solving a puzzle. It's like, there is a right way to mod, there's a right way to model this problem. And I end up going down like three dead ends before it's like, ah, here's the one where all the references are stable and all the state is correctly modeled, which is difficult. +[11:32] So something I've said about hooks in the past is a lot of the time it has felt more like solving a puzzle. It's like, there is a right way to mod, there's a right way to model this problem. And I end up going down like three dead ends before it's like, ah, here's the one where all the references are stable and all the state is correctly modeled, which is difficult. -[00:11:56] It takes a lot of work. It takes a lot of time and takes a lot of thought. And then sometimes there's a new requirements like, oh, shit, I can't just casually add this because I spent all this time modeling to a different problem. And now the problem has changed. So that has been a recurring pain point of mine in developing with hooks. +[11:56] It takes a lot of work. It takes a lot of time and takes a lot of thought. And then sometimes there's a new requirements like, oh, shit, I can't just casually add this because I spent all this time modeling to a different problem. And now the problem has changed. So that has been a recurring pain point of mine in developing with hooks. -[00:12:14] So. A compiler that gets me 80 percent of the performance benefit of doing it perfectly without many reworks and, you know, deep problem solving. Sounds pretty great. +[12:14] So. A compiler that gets me 80 percent of the performance benefit of doing it perfectly without many reworks and, you know, deep problem solving. Sounds pretty great. -[00:12:27] **Mark Erikson:** Yeah, like it's not going to magically fix every single performance issue or problem with your react code, but if it offloads a lot of the mental overhead that we have trying to think through some of those issues, that alone is a really big deal. +[12:27] **Mark Erikson:** Yeah, like it's not going to magically fix every single performance issue or problem with your react code, but if it offloads a lot of the mental overhead that we have trying to think through some of those issues, that alone is a really big deal. -[00:12:42] Yeah, +[12:42] Yeah, -[00:12:42] **Carl Vitullo:** most definitely. Onto our next one, I'm very excited because this is, we've got a new canary out, server actions are now in canary. So this is, server actions came out in next recently. I think we talked about it last month or maybe a month before and yeah, now they're officially in the like react canary channel. +[12:42] **Carl Vitullo:** most definitely. Onto our next one, I'm very excited because this is, we've got a new canary out, server actions are now in canary. So this is, server actions came out in next recently. I think we talked about it last month or maybe a month before and yeah, now they're officially in the like react canary channel. -[00:13:04] More of what I wanted to discuss here is sort of the canary release process. Yeah, yeah. So in announcing this, they linked to their. versioning policy specifically saying, like, look, this is how you use canaries. Uh, and the big thing that it said is canaries must be pinned. So it says if you are using a canary channel, you need to use the, this exact version, not a, not a pseudo matcher. +[13:04] More of what I wanted to discuss here is sort of the canary release process. Yeah, yeah. So in announcing this, they linked to their. versioning policy specifically saying, like, look, this is how you use canaries. Uh, and the big thing that it said is canaries must be pinned. So it says if you are using a canary channel, you need to use the, this exact version, not a, not a pseudo matcher. -[00:13:31] They do not follow SemVer. If you don't want unpredictable breaks, you have to actually pin to an exact version. That seems great. I'm glad to get clarity. I'm glad that they have put out this versioning policy with explicit recommendations like that. This is not a new policy. I think it came out a couple months ago, +[13:31] They do not follow SemVer. If you don't want unpredictable breaks, you have to actually pin to an exact version. That seems great. I'm glad to get clarity. I'm glad that they have put out this versioning policy with explicit recommendations like that. This is not a new policy. I think it came out a couple months ago, -[00:13:49] **Mark Erikson:** came out back in March ish, but we're sort of just now starting to see the first working examples of it. +[13:49] **Mark Erikson:** came out back in March ish, but we're sort of just now starting to see the first working examples of it. -[00:13:55] **Carl Vitullo:** Yeah, so I guess, you know, March, they like got all these policies in place and then have been sort of working with next and doing development work. And it feels like now they've kind of turned back and are doing more messaging kind of stuff like this. You know, they announced a new feature and said, here's how to use it. +[13:55] **Carl Vitullo:** Yeah, so I guess, you know, March, they like got all these policies in place and then have been sort of working with next and doing development work. And it feels like now they've kind of turned back and are doing more messaging kind of stuff like this. You know, they announced a new feature and said, here's how to use it. -[00:14:09] Here's supporting documentation about how we think about it. I appreciate that. That's very helpful. Very +[14:09] Here's supporting documentation about how we think about it. I appreciate that. That's very helpful. Very -[00:14:15] **Mark Erikson:** clarifying. And this, this is unfortunately a topic I'm far too familiar with both as a, as a, as a library maintainer and then looking at react specifically. So I think most people are sort of used to the concept of libraries might put out an alpha release, a beta release, a release candidate, and then finally an actual stable release. +[14:15] **Mark Erikson:** clarifying. And this, this is unfortunately a topic I'm far too familiar with both as a, as a, as a library maintainer and then looking at react specifically. So I think most people are sort of used to the concept of libraries might put out an alpha release, a beta release, a release candidate, and then finally an actual stable release. -[00:14:38] And we've, we've seen that even before with react, you know, like react, 18 went through betas and release candidates before it went stable. And then they put out 18, one and 18, two with some fixes and react 18, two, the current stable release came out almost a year and a half ago. And meanwhile, next has been. +[14:38] And we've, we've seen that even before with react, you know, like react, 18 went through betas and release candidates before it went stable. And then they put out 18, one and 18, two with some fixes and react 18, two, the current stable release came out almost a year and a half ago. And meanwhile, next has been. -[00:15:00] Releasing new features. They've got some of the React core team members working over there, and there's been a lot of confusion over like, what is in the versions of React that Next is using? How can other frameworks actually use any of these things? For the last several years, React has had, uh, so there's both like the stable releases, and they also have an experimental channel, which is just automatically built like every day, every couple days. +[15:00] Releasing new features. They've got some of the React core team members working over there, and there's been a lot of confusion over like, what is in the versions of React that Next is using? How can other frameworks actually use any of these things? For the last several years, React has had, uh, so there's both like the stable releases, and they also have an experimental channel, which is just automatically built like every day, every couple days. -[00:15:29] So it's like straight off the tip of the main branch, whatever got merged in. And those experimental builds also have feature flags turned on so that like literally everything brand new that's in the React repo that isn't even like fully enabled yet is enabled in the experimental builds. But those could always change on a moment to moment basis. +[15:29] So it's like straight off the tip of the main branch, whatever got merged in. And those experimental builds also have feature flags turned on so that like literally everything brand new that's in the React repo that isn't even like fully enabled yet is enabled in the experimental builds. But those could always change on a moment to moment basis. -[00:15:50] So with next at the moment, you, I think you can actually end up with like three separate versions of react going because there's the production version. You probably specified in your own package, Jason. And I think that gets used with like the pages router. There's the canary version, which is a new semi react specific concept where it's like, this is semi stable. +[15:50] So with next at the moment, you, I think you can actually end up with like three separate versions of react going because there's the production version. You probably specified in your own package, Jason. And I think that gets used with like the pages router. There's the canary version, which is a new semi react specific concept where it's like, this is semi stable. -[00:16:14] It's maybe not like done, done. Maybe we're waiting on some other pieces, but we kind of think it's stable enough to use, and then there's the experimental version where, you know, there there's truly stuff that's, it's kind of wild. And so in next, I think if you use the app router. It's using a canary build. +[16:14] It's maybe not like done, done. Maybe we're waiting on some other pieces, but we kind of think it's stable enough to use, and then there's the experimental version where, you know, there there's truly stuff that's, it's kind of wild. And so in next, I think if you use the app router. It's using a canary build. -[00:16:32] I think a couple other experimental features you can opt into, in which case it uses an experimental build. And, you know, the idea of these canaries is that the React team maybe has some features that are in, that are in progress. At this point, they think they're stable enough that frameworks could use them because frameworks could add additional wrapping on top to kind of like hide the rough edges. +[16:32] I think a couple other experimental features you can opt into, in which case it uses an experimental build. And, you know, the idea of these canaries is that the React team maybe has some features that are in, that are in progress. At this point, they think they're stable enough that frameworks could use them because frameworks could add additional wrapping on top to kind of like hide the rough edges. -[00:16:59] There's maybe a couple pieces that are still like waiting to tie into those before they can declare them fully, fully done and ready for a stable release. And unfortunately, up until now, there hadn't been any indication of Here's what canary versions have been released, or here's what features are included in a given canary release. +[16:59] There's maybe a couple pieces that are still like waiting to tie into those before they can declare them fully, fully done and ready for a stable release. And unfortunately, up until now, there hadn't been any indication of Here's what canary versions have been released, or here's what features are included in a given canary release. -[00:17:20] And just within the last week, uh, one of the react dev rels, Matt Carroll actually added a change log for the canaries as a markdown file in the react repo. So that's a step in the right direction. +[17:20] And just within the last week, uh, one of the react dev rels, Matt Carroll actually added a change log for the canaries as a markdown file in the react repo. So that's a step in the right direction. -[00:17:34] **Carl Vitullo:** Yeah, I was, you know, I was just sort of thinking about, you know, versioning and releases and okay, so there's released versions of react. +[17:34] **Carl Vitullo:** Yeah, I was, you know, I was just sort of thinking about, you know, versioning and releases and okay, so there's released versions of react. -[00:17:42] There's canary and then there's experimental. So that's, you know, the MPM releases the release channels. But then there's also they have apis, right? They have the unstable underscore whatever apis. As well as some that are not even available because they're feature flagged out of the build out of the you know what the code that goes on NPM and I was just I'm just thinking about it's like wow wait so there's like six different ways of controlling how people what features are available and how people are able to make use of them and that's complicated like what a dance you have to do I +[17:42] There's canary and then there's experimental. So that's, you know, the MPM releases the release channels. But then there's also they have apis, right? They have the unstable underscore whatever apis. As well as some that are not even available because they're feature flagged out of the build out of the you know what the code that goes on NPM and I was just I'm just thinking about it's like wow wait so there's like six different ways of controlling how people what features are available and how people are able to make use of them and that's complicated like what a dance you have to do I -[00:18:20] **Mark Erikson:** have unfortunately messed with some of reacts build system for something else and I've seen The code that controls, like, here's the master list of all the packages that are in the mono repo. +[18:20] **Mark Erikson:** have unfortunately messed with some of reacts build system for something else and I've seen The code that controls, like, here's the master list of all the packages that are in the mono repo. -[00:18:31] Here's all the different kinds of build artifacts that need to get generated for each package. Here's some of the feature flags that control individual features. Like it is really complex. +[18:31] Here's all the different kinds of build artifacts that need to get generated for each package. Here's some of the feature flags that control individual features. Like it is really complex. -[00:18:43] **Carl Vitullo:** I had read a line in the Canary Diversion Policy that I was hoping to find so I could quote it exactly. They talked about how part of the reason they do this complicated dance is because they have multiple projects that are all interrelated. +[18:43] **Carl Vitullo:** I had read a line in the Canary Diversion Policy that I was hoping to find so I could quote it exactly. They talked about how part of the reason they do this complicated dance is because they have multiple projects that are all interrelated. -[00:19:00] And so, you know, people say like, Oh, well, why don't you just release this, this feature while you're working on that feature? And the answer is, well, we can't release that until we release both. And people want access to that before both of them are ready to be released. And so we do this complicated dance in order to facilitate that. +[19:00] And so, you know, people say like, Oh, well, why don't you just release this, this feature while you're working on that feature? And the answer is, well, we can't release that until we release both. And people want access to that before both of them are ready to be released. And so we do this complicated dance in order to facilitate that. -[00:19:18] And it's a lot of work that they put into. Structuring and communicating these releases, I knew all of these pieces, but I hadn't quite put them together into like, wait, this is a lot to manage to keep in your head. Mark, take +[19:18] And it's a lot of work that they put into. Structuring and communicating these releases, I knew all of these pieces, but I hadn't quite put them together into like, wait, this is a lot to manage to keep in your head. Mark, take -[00:19:34] **Mark Erikson:** us on our next link. The next item is that 10 stack query version five is out. +[19:34] **Mark Erikson:** us on our next link. The next item is that 10 stack query version five is out. -[00:19:40] Um, this of course includes the react adapters, like react query, as well as the adapters for the other frameworks. They've got some breaking changes. I know they changed things like removing callbacks from the mutation hooks. They've apparently altered some of the, the way you pass in options for the query hooks to try to make that more consistent. +[19:40] Um, this of course includes the react adapters, like react query, as well as the adapters for the other frameworks. They've got some breaking changes. I know they changed things like removing callbacks from the mutation hooks. They've apparently altered some of the, the way you pass in options for the query hooks to try to make that more consistent. -[00:20:02] Uh, there is a number of new features around, um, how you define optimistic updates. Uh, there is suspense support built in. They have a react server components, streaming adapter, and some infinite queries and dev tools. Uh, and it sounds like they even managed to shrink the bundle size. So that sounds like a very impressive release. +[20:02] Uh, there is a number of new features around, um, how you define optimistic updates. Uh, there is suspense support built in. They have a react server components, streaming adapter, and some infinite queries and dev tools. Uh, and it sounds like they even managed to shrink the bundle size. So that sounds like a very impressive release. -[00:20:23] Definitely worth checking out. And I will say that wearing my Redux maintainer hat, we're getting close to the release of art Redux toolkit 2. 0, I hope. And part of that was actually cutting scope so that we don't, we are not going to make any real changes to our, to our RTK query data fetching API for 2. +[20:23] Definitely worth checking out. And I will say that wearing my Redux maintainer hat, we're getting close to the release of art Redux toolkit 2. 0, I hope. And part of that was actually cutting scope so that we don't, we are not going to make any real changes to our, to our RTK query data fetching API for 2. -[00:20:41] 0. Because there's lots and lots of requests for changes. So we're going to defer any changes until RTK 2. 0 is out the door. And once we do, we will be looking very carefully at. React query and looking at some of their APIs and how they designed some of the use cases and frankly blatantly stealing from them, which is good because it means familiarity. +[20:41] 0. Because there's lots and lots of requests for changes. So we're going to defer any changes until RTK 2. 0 is out the door. And once we do, we will be looking very carefully at. React query and looking at some of their APIs and how they designed some of the use cases and frankly blatantly stealing from them, which is good because it means familiarity. -[00:21:04] And also they've had more time to think about some of these problems than we have. And also we're friends with the maintainers. So we, we cross inspire each other all the time. It's +[21:04] And also they've had more time to think about some of these problems than we have. And also we're friends with the maintainers. So we, we cross inspire each other all the time. It's -[00:21:13] **Carl Vitullo:** not stealing it's standing on the shoulders of giants. Taking +[21:13] **Carl Vitullo:** not stealing it's standing on the shoulders of giants. Taking -[00:21:16] **Mark Erikson:** inspiration from. +[21:16] **Mark Erikson:** inspiration from. -[00:21:19] **Carl Vitullo:** Look at you, taking inspiration from a release to talk about your upcoming release. +[21:19] **Carl Vitullo:** Look at you, taking inspiration from a release to talk about your upcoming release. -[00:21:25] That all sounds really great. I haven't, I still have not really extensively used React Query. I love all of the ideas of TanStack and whatever, but somehow I always... I'm stuck with Redux, so I don't know very much about the past experience or what this new release will change. I'll take us on to our next link. +[21:25] That all sounds really great. I haven't, I still have not really extensively used React Query. I love all of the ideas of TanStack and whatever, but somehow I always... I'm stuck with Redux, so I don't know very much about the past experience or what this new release will change. I'll take us on to our next link. -[00:21:42] There was some discussion of barrel files that I found really interesting. Berthel put out a blog post talking about how we optimized package imports in XJS. The term barrel file was new to me, though I... Have encountered the concept a great many times in many workplaces. It's it's the index. js file that imports and re exports modules or, you know, various exports from other modules and The problems that they talk about here are not ones that I had specifically observed through my career. +[21:42] There was some discussion of barrel files that I found really interesting. Berthel put out a blog post talking about how we optimized package imports in XJS. The term barrel file was new to me, though I... Have encountered the concept a great many times in many workplaces. It's it's the index. js file that imports and re exports modules or, you know, various exports from other modules and The problems that they talk about here are not ones that I had specifically observed through my career. -[00:22:16] So basically what they talk about is these barrel files essentially centralize import or, you know, the module tree, the tree of your modules and sort of act as choke points. So it's like, as soon as you import something from one of these barrel files, suddenly every single module is being pulled in. And I guess, you know, maybe a more familiar. +[22:16] So basically what they talk about is these barrel files essentially centralize import or, you know, the module tree, the tree of your modules and sort of act as choke points. So it's like, as soon as you import something from one of these barrel files, suddenly every single module is being pulled in. And I guess, you know, maybe a more familiar. -[00:22:39] statement of the same problem is low dash bundle size inflation. You know, I'm sure many of us, I have encountered this so many, on literally every project I've worked on, where somebody imports low dash, they do group by from low dash. Then, because tree shaking doesn't work reliably, the entire module gets pulled in. +[22:39] statement of the same problem is low dash bundle size inflation. You know, I'm sure many of us, I have encountered this so many, on literally every project I've worked on, where somebody imports low dash, they do group by from low dash. Then, because tree shaking doesn't work reliably, the entire module gets pulled in. -[00:23:00] And so, That's usually a bundle size problem, but what Vercel is talking about here is there's a second dimension to that, which is sprawling the module tree has a, you know, a noticeable cost to it. There, there is time spent creating and then navigating that tree of modules and barrel files by acting as these choke points mean that, especially on large projects, that time spent. +[23:00] And so, That's usually a bundle size problem, but what Vercel is talking about here is there's a second dimension to that, which is sprawling the module tree has a, you know, a noticeable cost to it. There, there is time spent creating and then navigating that tree of modules and barrel files by acting as these choke points mean that, especially on large projects, that time spent. -[00:23:29] Looking at the tree and figuring out where code is coming from can explode to like a substantial portion of your build time. So Vercel next talked about optimizations they're doing to correct that for you. They will inspect imports to determine whether they are barrel files and then undo that for you silently on the backend so that you don't pay that, uh, that. +[23:29] Looking at the tree and figuring out where code is coming from can explode to like a substantial portion of your build time. So Vercel next talked about optimizations they're doing to correct that for you. They will inspect imports to determine whether they are barrel files and then undo that for you silently on the backend so that you don't pay that, uh, that. -[00:23:55] Discovery cost of, uh, traversing the tree of modules. That's really interesting. This is a new dimension to a problem I had observed in the past. Another thing that is, this is not exactly the same problem, but a pet peeve of mine that I've seen in more than one workplace is barrel files that rename exports. +[23:55] Discovery cost of, uh, traversing the tree of modules. That's really interesting. This is a new dimension to a problem I had observed in the past. Another thing that is, this is not exactly the same problem, but a pet peeve of mine that I've seen in more than one workplace is barrel files that rename exports. -[00:24:14] So they'll import from one place and then re export it. Under a different name. So that's that sort of problem is why I had slanted on like, don't use these. Like there's just, if you're trying to find a particular bit of code in a large code base, barrel files do not help. They make it actively harder. So don't use them. +[24:14] So they'll import from one place and then re export it. Under a different name. So that's that sort of problem is why I had slanted on like, don't use these. Like there's just, if you're trying to find a particular bit of code in a large code base, barrel files do not help. They make it actively harder. So don't use them. -[00:24:34] It's a bad practice. But also learning about another dimension of performance problems that they introduce. I'm never going to use barrel files again. It's not great. +[24:34] It's a bad practice. But also learning about another dimension of performance problems that they introduce. I'm never going to use barrel files again. It's not great. -[00:24:42] **Mark Erikson:** I've never been a fan of the concept for a few different reasons. I mean, to back up a bit, I think the argument. For people who have used them is that it's a conceptual encapsulation thing. +[24:42] **Mark Erikson:** I've never been a fan of the concept for a few different reasons. I mean, to back up a bit, I think the argument. For people who have used them is that it's a conceptual encapsulation thing. -[00:24:55] So the idea is that if you have source slash features slash feature one, and you have many different files with different types of code inside of that folder, you can encapsulate the implementation details inside there by having source slash features slash feature one slash index such as it does the re exporting and other parts of the code base. +[24:55] So the idea is that if you have source slash features slash feature one, and you have many different files with different types of code inside of that folder, you can encapsulate the implementation details inside there by having source slash features slash feature one slash index such as it does the re exporting and other parts of the code base. -[00:25:19] Should not be allowed to import from the nested files directly. They're only allowed to import from the index file. So they aren't like conceptually poking into things that they shouldn't know about. I can understand the architectural thought involved, but as we noted, there's, there's runtime implications. +[25:19] Should not be allowed to import from the nested files directly. They're only allowed to import from the index file. So they aren't like conceptually poking into things that they shouldn't know about. I can understand the architectural thought involved, but as we noted, there's, there's runtime implications. -[00:25:40] You know, one is that if I right click a, you know, a component name or a function name, and I say, go to definition, it might end up jumping me to this barrel file instead because of how the compiler is trying to trace things. And then, yeah, like if you are bringing everything through one intermediate file. +[25:40] You know, one is that if I right click a, you know, a component name or a function name, and I say, go to definition, it might end up jumping me to this barrel file instead because of how the compiler is trying to trace things. And then, yeah, like if you are bringing everything through one intermediate file. -[00:26:02] The imports from a hundred other files, then just trying to import one thing is going to force that file to be parsed and loaded and go look at everything else and parse and load it. And, you know, maybe all those files do get used somewhere, but it also means extra processing time during the build step. +[26:02] The imports from a hundred other files, then just trying to import one thing is going to force that file to be parsed and loaded and go look at everything else and parse and load it. And, you know, maybe all those files do get used somewhere, but it also means extra processing time during the build step. -[00:26:22] Maybe even a little extra time as the application is running. And so Marvin Hagemeister has done a lot of work over the last year, year or so to investigate common tools in the JavaScript ecosystem. Yes, lint and, um, a whole bunch of others. And he's found that in a lot of cases, the internals of these tools are actually doing things very inefficiently. +[26:22] Maybe even a little extra time as the application is running. And so Marvin Hagemeister has done a lot of work over the last year, year or so to investigate common tools in the JavaScript ecosystem. Yes, lint and, um, a whole bunch of others. And he's found that in a lot of cases, the internals of these tools are actually doing things very inefficiently. -[00:26:47] So the post that he has here, it's, it's slightly more theoretical. He's not digging into real code in one specific tool, but he had seen real world code bases where having barrel files was leading to drastic slowdowns in build time, and he created a fake example. Which had like a bunch of nested build tools and then, or a bunch of nested barrel files. +[26:47] So the post that he has here, it's, it's slightly more theoretical. He's not digging into real code in one specific tool, but he had seen real world code bases where having barrel files was leading to drastic slowdowns in build time, and he created a fake example. Which had like a bunch of nested build tools and then, or a bunch of nested barrel files. -[00:27:13] And that example made the code base build time explode. And so, yeah, like general, I think generally speaking, the advice here is that in order to kind of help speed up build performance, don't use this pattern. Instead, just go ahead and directly import from source nested file. And it's okay. I +[27:13] And that example made the code base build time explode. And so, yeah, like general, I think generally speaking, the advice here is that in order to kind of help speed up build performance, don't use this pattern. Instead, just go ahead and directly import from source nested file. And it's okay. I -[00:27:37] **Carl Vitullo:** do empathize with the, the general impulse to do this. +[27:37] **Carl Vitullo:** do empathize with the, the general impulse to do this. -[00:27:42] It lets you treat your folders like internal modules, which is nice. It's convenience. It causes the pit of failure. It causes the foot gun where if you just do that indiscriminately without thought for how many files it is and without an understanding for like the downstream effects, because I think what really happens here is, okay, you do that once. +[27:42] It lets you treat your folders like internal modules, which is nice. It's convenience. It causes the pit of failure. It causes the foot gun where if you just do that indiscriminately without thought for how many files it is and without an understanding for like the downstream effects, because I think what really happens here is, okay, you do that once. -[00:28:03] And then you do it twice, and then you have a pat, you know, 15 models, modules that all do that. And so then anytime you import anything, it gets your entire code base. It has to navigate your entire code base for it. So, yeah, that makes sense. And going back to that, you know, speeding up the JavaScript ecosystem series of blog posts. +[28:03] And then you do it twice, and then you have a pat, you know, 15 models, modules that all do that. And so then anytime you import anything, it gets your entire code base. It has to navigate your entire code base for it. So, yeah, that makes sense. And going back to that, you know, speeding up the JavaScript ecosystem series of blog posts. -[00:28:25] I just saw, you know, another link that I'm not sure if I made the cut for this, but Parcel was talking about performance speedups. And like they changed their internal data structures, like that's it. Like they changed how they modeled it internally and got like a 5x beat up. So like there is clearly there are some low hanging fruits to make the JavaScript ecosystem faster. +[28:25] I just saw, you know, another link that I'm not sure if I made the cut for this, but Parcel was talking about performance speedups. And like they changed their internal data structures, like that's it. Like they changed how they modeled it internally and got like a 5x beat up. So like there is clearly there are some low hanging fruits to make the JavaScript ecosystem faster. -[00:28:47] So, uh, if this is one of them, then cool, let's, let's get rid of it. We don't +[28:47] So, uh, if this is one of them, then cool, let's, let's get rid of it. We don't -[00:28:51] **Mark Erikson:** have to just go and rewrite everything in Rust. Sometimes we can look for really stupid code patterns and fix those. Performance. +[28:51] **Mark Erikson:** have to just go and rewrite everything in Rust. Sometimes we can look for really stupid code patterns and fix those. Performance. -[00:28:59] **Carl Vitullo:** It's tough. All right. You want to take us on to our next one? +[28:59] **Carl Vitullo:** It's tough. All right. You want to take us on to our next one? -[00:29:03] **Mark Erikson:** Yeah. So on a, on a sort of related note, React 18 came out with some new hooks and I think most people probably don't know they exist. +[29:03] **Mark Erikson:** Yeah. So on a, on a sort of related note, React 18 came out with some new hooks and I think most people probably don't know they exist. -[00:29:13] And to be honest, I still haven't even tried to use most of these new hooks myself, but I have seen my teammate Brian Vaughn, who used to be part of the React core team, using them because he was part of their development process. You might've heard that, you know, React 18 was going to have a concurrent mode. +[29:13] And to be honest, I still haven't even tried to use most of these new hooks myself, but I have seen my teammate Brian Vaughn, who used to be part of the React core team, using them because he was part of their development process. You might've heard that, you know, React 18 was going to have a concurrent mode. -[00:29:34] And then they ditched that. It's not a whole standalone mode. Instead, it's concurrent features. So, there are specific React APIs that, when you use them, Make React handle the rendering process in a different way, being able to split a render into pieces or do some of that work in the background. And so two of the new hooks in particular are use transition and use deferred value. +[29:34] And then they ditched that. It's not a whole standalone mode. Instead, it's concurrent features. So, there are specific React APIs that, when you use them, Make React handle the rendering process in a different way, being able to split a render into pieces or do some of that work in the background. And so two of the new hooks in particular are use transition and use deferred value. -[00:30:03] Now, like I said, I have not actually used these in practice. Brian has attempted to explain them to me a couple of times and there's this very, very good. Excellent blog post by Nadia Makarevich, who's written a number of very good other articles about React behavior. And she goes into some detail about how these hooks work. +[30:03] Now, like I said, I have not actually used these in practice. Brian has attempted to explain them to me a couple of times and there's this very, very good. Excellent blog post by Nadia Makarevich, who's written a number of very good other articles about React behavior. And she goes into some detail about how these hooks work. -[00:30:22] If I can try to explain them, and I'm probably going to get this wrong, so please read the article in the official React docs. UseTransition gives you something akin to setState, but it accepts a callback. And the idea is you're supposed to run the callback, run the startTransition callback, And do your actual update work inside of the callback. +[30:22] If I can try to explain them, and I'm probably going to get this wrong, so please read the article in the official React docs. UseTransition gives you something akin to setState, but it accepts a callback. And the idea is you're supposed to run the callback, run the startTransition callback, And do your actual update work inside of the callback. -[00:30:45] And that's basically a signal to react that the work you're doing is relatively low priority and it should kind of be handled in the background compared to other potential renders. The other one is use deferred value. And I think the explanation that I sort of half understand is it's almost like a built in debounce. +[30:45] And that's basically a signal to react that the work you're doing is relatively low priority and it should kind of be handled in the background compared to other potential renders. The other one is use deferred value. And I think the explanation that I sort of half understand is it's almost like a built in debounce. -[00:31:08] In a sense. So maybe you're getting a value from some other source and you need to be able to render something now, but there's probably going to be like another version of the value coming later. So so you pass a value directly to use deferred value. And it returns what appears to be the same value. +[31:08] In a sense. So maybe you're getting a value from some other source and you need to be able to render something now, but there's probably going to be like another version of the value coming later. So so you pass a value directly to use deferred value. And it returns what appears to be the same value. -[00:31:33] Well, it's actually happening is it's starting one render right now and then it's like scheduling a second render for just a little bit later. So again, I don't have like the best understanding of them because I haven't used them in practice and also because I haven't used them. I don't I don't have a good feel for the mechanics. +[31:33] Well, it's actually happening is it's starting one render right now and then it's like scheduling a second render for just a little bit later. So again, I don't have like the best understanding of them because I haven't used them in practice and also because I haven't used them. I don't I don't have a good feel for the mechanics. -[00:31:50] But that's kind of the idea. It's about telling react that some of these pieces of data are lower priority. Let me do something now, schedule some lower priority work, and then rerender again, later when we've got all the pieces that we need. It's +[31:50] But that's kind of the idea. It's about telling react that some of these pieces of data are lower priority. Let me do something now, schedule some lower priority work, and then rerender again, later when we've got all the pieces that we need. It's -[00:32:05] **Carl Vitullo:** reminding me of a performance problem. I hit a couple of years ago when I was building a cryptocurrency exchange, because that's how my career has gone. +[32:05] **Carl Vitullo:** reminding me of a performance problem. I hit a couple of years ago when I was building a cryptocurrency exchange, because that's how my career has gone. -[00:32:13] And we had a detailed list of. Tokens and every token had its own sparkline. And so when there were 40 tokens on screen, that was 40 sparklines. 40 charts is a lot to render. And so performance. tanked, and it took like three seconds to render the page. And I solved that by introducing a wrapper component that would immediately return null and then re render with whatever it was. +[32:13] And we had a detailed list of. Tokens and every token had its own sparkline. And so when there were 40 tokens on screen, that was 40 sparklines. 40 charts is a lot to render. And so performance. tanked, and it took like three seconds to render the page. And I solved that by introducing a wrapper component that would immediately return null and then re render with whatever it was. -[00:32:40] And I called this, you know, poor man suspense back in the day. Just saying like, Do it later. I don't care. Render something. Render everything else first. And I wonder if this might have been a, if, I wonder if this use deferred value hook might have been an alternate solution to that where I could say, you know, could have fed that little chart data out of this deferred value and gotten the same benefit without adding a Another component to the, to the hierarchy. +[32:40] And I called this, you know, poor man suspense back in the day. Just saying like, Do it later. I don't care. Render something. Render everything else first. And I wonder if this might have been a, if, I wonder if this use deferred value hook might have been an alternate solution to that where I could say, you know, could have fed that little chart data out of this deferred value and gotten the same benefit without adding a Another component to the, to the hierarchy. -[00:33:10] That's interesting. Okay. Very cool. I use transition is also new to me. I was just sort of trying to read that, uh, blog post, but it's long. I can see why this is a, uh, a concept that you, you've had explained to you more than once, but yeah, that looks really interesting. Very curious to hear more about that. +[33:10] That's interesting. Okay. Very cool. I use transition is also new to me. I was just sort of trying to read that, uh, blog post, but it's long. I can see why this is a, uh, a concept that you, you've had explained to you more than once, but yeah, that looks really interesting. Very curious to hear more about that. -[00:33:28] Well, okay. That is all of the news items we have. Should we move on to the lightning round? My first Photoshop is now on the web. This is something that I, I remember reading like an early technical write up about two or more years ago, talking about all of the efforts being done to bring a true, proper, real version of Photoshop onto the web. +[33:28] Well, okay. That is all of the news items we have. Should we move on to the lightning round? My first Photoshop is now on the web. This is something that I, I remember reading like an early technical write up about two or more years ago, talking about all of the efforts being done to bring a true, proper, real version of Photoshop onto the web. -[00:33:50] And I know that there's lots of WebAssembly and WebGL and Canvas and just like, it was. It's truly an engineering effort that advanced the state of the web platform generally in a very real way that I think is quite rare, though, you know, I don't know that it has a ton of immediate actionable relevance for react and, you know, how we develop applications. +[33:50] And I know that there's lots of WebAssembly and WebGL and Canvas and just like, it was. It's truly an engineering effort that advanced the state of the web platform generally in a very real way that I think is quite rare, though, you know, I don't know that it has a ton of immediate actionable relevance for react and, you know, how we develop applications. -[00:34:15] The byline on this article is enabled by WebAssembly and Emscripten, Web Components and Lit, Service Workers and Workbox, and New Web APIs. Chrome and Adobe enjoyed collaborating on it. So this is, you know, a deep collaboration by presumably the Chrome team at Google and Adobe building Photoshop, getting the web platform into a state where it was a suitable host for a real version of Photoshop. +[34:15] The byline on this article is enabled by WebAssembly and Emscripten, Web Components and Lit, Service Workers and Workbox, and New Web APIs. Chrome and Adobe enjoyed collaborating on it. So this is, you know, a deep collaboration by presumably the Chrome team at Google and Adobe building Photoshop, getting the web platform into a state where it was a suitable host for a real version of Photoshop. -[00:34:42] As opposed to, you know, I think a lot of this type of application would tend towards doing the heavy lifting on the server. So, like, you know, if you were, you know, they've got a early screenshot in the blog post of generative fill. Uh, so, you know, like, I think, you know, the, the easy, the, the pragmatic. Just get it shipped approach would be just do that on the server, you know, so I think it's really interesting to see a project like this. +[34:42] As opposed to, you know, I think a lot of this type of application would tend towards doing the heavy lifting on the server. So, like, you know, if you were, you know, they've got a early screenshot in the blog post of generative fill. Uh, so, you know, like, I think, you know, the, the easy, the, the pragmatic. Just get it shipped approach would be just do that on the server, you know, so I think it's really interesting to see a project like this. -[00:35:12] I think that this is a once every couple of years level of investment in the platform. It's worth reading. It's worth learning more about just seeing how they did it and why they bothered to do all this effort. Cool. Mark. +[35:12] I think that this is a once every couple of years level of investment in the platform. It's worth reading. It's worth learning more about just seeing how they did it and why they bothered to do all this effort. Cool. Mark. -[00:35:27] **Mark Erikson:** Alright, so it looks like Yarn version 4 just came out, and I've been a fan of Yarn ever since it was first released, but the transition from Yarn 1 to Yarn 2 was kind of like the Python 2 to 3 transition, or, um, you know, kind of like the common JSTSM transition, in that there were such major changes in the way this product was designed and used, that it... +[35:27] **Mark Erikson:** Alright, so it looks like Yarn version 4 just came out, and I've been a fan of Yarn ever since it was first released, but the transition from Yarn 1 to Yarn 2 was kind of like the Python 2 to 3 transition, or, um, you know, kind of like the common JSTSM transition, in that there were such major changes in the way this product was designed and used, that it... -[00:35:55] You know, it caused a lot of frustrations and turned people off. Um, so there's a little bit of background. Yarn 1, like most other JavaScript tools, is installed globally on your whole machine. So, you know, npm i dash g yarn. Yarn 4 are supposed to be installed on a per project basis. So you're actually supposed to copy the, like a yarn, like release binary JS file into your repo and commit that. +[35:55] You know, it caused a lot of frustrations and turned people off. Um, so there's a little bit of background. Yarn 1, like most other JavaScript tools, is installed globally on your whole machine. So, you know, npm i dash g yarn. Yarn 4 are supposed to be installed on a per project basis. So you're actually supposed to copy the, like a yarn, like release binary JS file into your repo and commit that. -[00:36:30] And you have a config file. And when you run yarn inside your repo, yarn one from your system starts up. It sees the config file and sees, Oh, I'm actually supposed to run yarn three, two, one dot JS that's committed. And then it switches over and starts up the, the low, the local newer version of yarn instead. +[36:30] And you have a config file. And when you run yarn inside your repo, yarn one from your system starts up. It sees the config file and sees, Oh, I'm actually supposed to run yarn three, two, one dot JS that's committed. And then it switches over and starts up the, the low, the local newer version of yarn instead. -[00:36:53] And I think that concept has confused a number of people. The other big thing is that when Yarn 2 came out, they had this really radical idea about how it would manage the installation of the JavaScript packages. They called it plug and play. And the idea was that instead of extracting, you know, 50 or a hundred thousand files into your node modules folder, it would leave all tarballs. +[36:53] And I think that concept has confused a number of people. The other big thing is that when Yarn 2 came out, they had this really radical idea about how it would manage the installation of the JavaScript packages. They called it plug and play. And the idea was that instead of extracting, you know, 50 or a hundred thousand files into your node modules folder, it would leave all tarballs. -[00:37:20] So it's smaller on disk, and there's no time needed to extract everything, but in order to make that work, Yarn has to take over and act as an intermediary layer for any tool that needs to import a library or access anything. And there's so many tools in the ecosystem that expect that real files exist on disk in Node modules, because that's how everything works. +[37:20] So it's smaller on disk, and there's no time needed to extract everything, but in order to make that work, Yarn has to take over and act as an intermediary layer for any tool that needs to import a library or access anything. And there's so many tools in the ecosystem that expect that real files exist on disk in Node modules, because that's how everything works. -[00:37:46] So, my own experience has been that, you know, Yarn's plug in play mode is a nice concept, but in practice, every time I tried to use it, there were too many other tools that would just break in some way. But, especially with Yarn 3, they have a standard, let's just extract everything into node modules option, and I've actually found that works great. +[37:46] So, my own experience has been that, you know, Yarn's plug in play mode is a nice concept, but in practice, every time I tried to use it, there were too many other tools that would just break in some way. But, especially with Yarn 3, they have a standard, let's just extract everything into node modules option, and I've actually found that works great. -[00:38:07] We're using it in my day job at Replay, we're using it in all the Redux repositories. Um, so the, I've, I feel that works great. So with yarn version four, looking at the release notes, um, they've got a couple fairly fancy new options around validating packages that are installed. Um, being able to define constraints, which maybe makes things work more consistently in a monorepo. +[38:07] We're using it in my day job at Replay, we're using it in all the Redux repositories. Um, so the, I've, I feel that works great. So with yarn version four, looking at the release notes, um, they've got a couple fairly fancy new options around validating packages that are installed. Um, being able to define constraints, which maybe makes things work more consistently in a monorepo. -[00:38:31] Yarn three has a plugin model and they had some official plugins, but they weren't installed by default. And it looks like those plugins do now get auto included with yarn. So they're always available. Uh, they've, they've improved some of the UI output and it also looks like they've improved some of the installation performance as well. +[38:31] Yarn three has a plugin model and they had some official plugins, but they weren't installed by default. And it looks like those plugins do now get auto included with yarn. So they're always available. Uh, they've, they've improved some of the UI output and it also looks like they've improved some of the installation performance as well. -[00:38:51] So if you're using yarn two or three, it's probably worth upgrading to yarn four. And if you're using yarn one, it, it probably is still worth looking at the newer versions of yarn as well. Uh, there was a lot of debate in the hacker news thread. Um, you know, a lot of people are arguing about, you know, why do we need so many package managers or, you know, discussing the, the transition from yarn one to the later versions? +[38:51] So if you're using yarn two or three, it's probably worth upgrading to yarn four. And if you're using yarn one, it, it probably is still worth looking at the newer versions of yarn as well. Uh, there was a lot of debate in the hacker news thread. Um, you know, a lot of people are arguing about, you know, why do we need so many package managers or, you know, discussing the, the transition from yarn one to the later versions? -[00:39:17] Some interesting reading over there. +[39:17] Some interesting reading over there. -[00:39:19] **Carl Vitullo:** Yeah, as someone who has never moved beyond yarn one, I empathize with all of those. There is a discussion of. a query verb for HTTP requests. Uh, this would be in addition to like get, post, patch, put, delete, now query. This is really interesting. Uh, it seems to be a standardization of essentially like GraphQL. +[39:19] **Carl Vitullo:** Yeah, as someone who has never moved beyond yarn one, I empathize with all of those. There is a discussion of. a query verb for HTTP requests. Uh, this would be in addition to like get, post, patch, put, delete, now query. This is really interesting. Uh, it seems to be a standardization of essentially like GraphQL. -[00:39:41] GraphQL, I know, uses slash abuses post, which has some negative consequences just because Host is meant to be submitting information, not retrieving information. Um, so this looks like a recognition that the current verbs are not quite sufficient for modern use cases in so far as the get verb has no body. +[39:41] GraphQL, I know, uses slash abuses post, which has some negative consequences just because Host is meant to be submitting information, not retrieving information. Um, so this looks like a recognition that the current verbs are not quite sufficient for modern use cases in so far as the get verb has no body. -[00:40:05] You can't say you can't give any information along with that request that URL. So, you know, you can do query variables, but like at a certain point, the URL is like. You know, if you have kilobytes of data that you're trying to send back using in the URL has some trade off that's not ideal. Um, and post is not idempotent. +[40:05] You can't say you can't give any information along with that request that URL. So, you know, you can do query variables, but like at a certain point, the URL is like. You know, if you have kilobytes of data that you're trying to send back using in the URL has some trade off that's not ideal. Um, and post is not idempotent. -[00:40:28] You know, it is not understood by the spec. It is not safe to retry post requests. That's not a safe assumption. So, you know, you can write an API where it is safe. But if I'm writing. A fetch library, a fetch wrapper, then I, you know, I can't say I, because it is a post request, I can't reliably retry it. I can't, I cannot write code that does that because it might not. +[40:28] You know, it is not understood by the spec. It is not safe to retry post requests. That's not a safe assumption. So, you know, you can write an API where it is safe. But if I'm writing. A fetch library, a fetch wrapper, then I, you know, I can't say I, because it is a post request, I can't reliably retry it. I can't, I cannot write code that does that because it might not. -[00:40:53] Um, so this is now essentially it. I think my summary would be this is get with a body, uh, with the recognition that it's going to be used to query data. Very cool. I think that's, you know, big platform +[40:53] Um, so this is now essentially it. I think my summary would be this is get with a body, uh, with the recognition that it's going to be used to query data. Very cool. I think that's, you know, big platform -[00:41:07] **Mark Erikson:** iteration. Okay, next up, um, so TC39 is the standards body that deals with the JavaScript language. And they've announced a new working group that is going to try to improve the specification for source maps. +[41:07] **Mark Erikson:** iteration. Okay, next up, um, so TC39 is the standards body that deals with the JavaScript language. And they've announced a new working group that is going to try to improve the specification for source maps. -[00:41:24] Now, if I had to guess, probably two thirds of the people here have no idea what a source map is because you've never had to worry about it. Source maps contain data. They contain all the original code, like your code, as it looked like on your machine, before you hit the build button, and then they tell debuggers and other tools, here's how you map, you know, to do list item. +[41:24] Now, if I had to guess, probably two thirds of the people here have no idea what a source map is because you've never had to worry about it. Source maps contain data. They contain all the original code, like your code, as it looked like on your machine, before you hit the build button, and then they tell debuggers and other tools, here's how you map, you know, to do list item. -[00:41:48] ts line 37 into these 30, these 25 characters in the middle of your application bundle. And so this is how JavaScript debuggers like the Chrome DevTools or my own day job at replay are actually able to show you your original code so that you can step through it, see variables, and do all that stuff while debugging. +[41:48] ts line 37 into these 30, these 25 characters in the middle of your application bundle. And so this is how JavaScript debuggers like the Chrome DevTools or my own day job at replay are actually able to show you your original code so that you can step through it, see variables, and do all that stuff while debugging. -[00:42:12] Source maps are really stupidly complicated. I'm not an expert on them, but I've learned a lot about them over the last couple of years. And there is a current spec for what information source maps can contain, but there's a lot more cases where they could be useful. And like Brian handle more cases. So this working group is trying to expand the specification for source maps and add more information that can handle specific cases so that in the future, once the spec is defined and build tools, output this information and debuggers know how to use this information, they can more faithfully represent what your original code was doing as you're trying to debug it. +[42:12] Source maps are really stupidly complicated. I'm not an expert on them, but I've learned a lot about them over the last couple of years. And there is a current spec for what information source maps can contain, but there's a lot more cases where they could be useful. And like Brian handle more cases. So this working group is trying to expand the specification for source maps and add more information that can handle specific cases so that in the future, once the spec is defined and build tools, output this information and debuggers know how to use this information, they can more faithfully represent what your original code was doing as you're trying to debug it. -[00:43:01] And so one of my, one of my coworkers, Holger Bentel. Is actually part of this working group. And he even has submitted a proposal that, um, to try to capture information about scopes. An example of this from the, from the proposal is that if you have like three nested function calls, the compiler might, you know, or a minifier might collapse all of those and just say, well, the last function just returns a value. +[43:01] And so one of my, one of my coworkers, Holger Bentel. Is actually part of this working group. And he even has submitted a proposal that, um, to try to capture information about scopes. An example of this from the, from the proposal is that if you have like three nested function calls, the compiler might, you know, or a minifier might collapse all of those and just say, well, the last function just returns a value. -[00:43:30] I can just get rid of those first two functions entirely and return this value at like in the production code. That means that the source map might not capture the fact that when you wrote it, There were two or three other functions in the middle. And so when you try to debug it, it sort of ends up looking like you skipped from like above the function into the middle function and never paused anywhere in between. +[43:30] I can just get rid of those first two functions entirely and return this value at like in the production code. That means that the source map might not capture the fact that when you wrote it, There were two or three other functions in the middle. And so when you try to debug it, it sort of ends up looking like you skipped from like above the function into the middle function and never paused anywhere in between. -[00:43:55] So by capturing more information about scopes. It could do a better job of representing the way you wrote the code. And I'll also put in a self plug for one of my own things. Uh, react has never shipped source maps for its production builds, which is why you, when you see a react error, uh, in production, the stack traces are all gobbledygook and earlier this year, I put up a PR to actually add source maps to react build pipeline. +[43:55] So by capturing more information about scopes. It could do a better job of representing the way you wrote the code. And I'll also put in a self plug for one of my own things. Uh, react has never shipped source maps for its production builds, which is why you, when you see a react error, uh, in production, the stack traces are all gobbledygook and earlier this year, I put up a PR to actually add source maps to react build pipeline. -[00:44:28] That PR has been sitting there for the last five months. Um, I actually had a conversation with a react team member just this last week at a conference. And I'm, I have tentative hope that maybe that'll get merged sometime soon. I hope, but the problem is even once it's merged, that will only be helpful for future releases of react. +[44:28] That PR has been sitting there for the last five months. Um, I actually had a conversation with a react team member just this last week at a conference. And I'm, I have tentative hope that maybe that'll get merged sometime soon. I hope, but the problem is even once it's merged, that will only be helpful for future releases of react. -[00:44:52] That actually include the source maps during the build step. So I've actually done the work to backport my react build pipeline changes. And I generated the source maps that would have existed or react 18 to 18, one and 17. And I worked with someone from the century tool. Who then proceeded to put together build plugins for Webpack, Vite, and Rollup, I believe, so that you can install this package in your app, add it to your build pipeline, and it will automatically use the quote unquote original React source map in your application bundle. +[44:52] That actually include the source maps during the build step. So I've actually done the work to backport my react build pipeline changes. And I generated the source maps that would have existed or react 18 to 18, one and 17. And I worked with someone from the century tool. Who then proceeded to put together build plugins for Webpack, Vite, and Rollup, I believe, so that you can install this package in your app, add it to your build pipeline, and it will automatically use the quote unquote original React source map in your application bundle. -[00:45:34] Is this going to radically improve your debugging experience? Maybe not, but it hopefully can help in situations like, you know, being able to see error messages and some other things like that. +[45:34] Is this going to radically improve your debugging experience? Maybe not, but it hopefully can help in situations like, you know, being able to see error messages and some other things like that. -[00:45:45] **Carl Vitullo:** Yeah, my kingdom for React source maps. Cool. Uh, I'm going to make a game time decision. I was going to talk about, uh, Astro 3. +[45:45] **Carl Vitullo:** Yeah, my kingdom for React source maps. Cool. Uh, I'm going to make a game time decision. I was going to talk about, uh, Astro 3. -[00:45:54] 2, which has view, uh, transition improvements, but I don't really know that much about view transition improvements, so I'm going to switch it up and talk about Parcel performance improvements instead. Uh, I touched on this briefly earlier, um, The, the, the gist is they're claiming, uh, seven times faster rebuilds on large projects, uh, and lots of other performance improvements, um, no rust rewrite, no, you know, massive core, whatever, replacement. +[45:54] 2, which has view, uh, transition improvements, but I don't really know that much about view transition improvements, so I'm going to switch it up and talk about Parcel performance improvements instead. Uh, I touched on this briefly earlier, um, The, the, the gist is they're claiming, uh, seven times faster rebuilds on large projects, uh, and lots of other performance improvements, um, no rust rewrite, no, you know, massive core, whatever, replacement. -[00:46:25] Um, but they talked about, they said 50 percent of the time in bundling was spent looking up values in different maps. So that, you know, they have maps and sets that, uh, determine which bundle routes, uh, each module is reachable from. So, you know, basically like, if you're here, then you can get over here. +[46:25] Um, but they talked about, they said 50 percent of the time in bundling was spent looking up values in different maps. So that, you know, they have maps and sets that, uh, determine which bundle routes, uh, each module is reachable from. So, you know, basically like, if you're here, then you can get over here. -[00:46:44] And they switched out those maps and sets into, uh, bitsets. Which is, I guess, more like, I'm trying to... Retreating +[46:44] And they switched out those maps and sets into, uh, bitsets. Which is, I guess, more like, I'm trying to... Retreating -[00:46:54] **Mark Erikson:** and treating the individual ones and zeros in an integer as if they were bullions. +[46:54] **Mark Erikson:** and treating the individual ones and zeros in an integer as if they were bullions. -[00:47:01] **Carl Vitullo:** Yes, there we go. We have one value that represents multiple flags, multiple multiple different, you know, things. +[47:01] **Carl Vitullo:** Yes, there we go. We have one value that represents multiple flags, multiple multiple different, you know, things. -[00:47:10] So, you know, by they say that purely by switching from storing all of this data in maps and sets. You know, the, the, the JavaScript, you know, concept of a map or a set new set new map, uh, into this bit set where it's working on a binary level rather than a like string level, I guess, uh, they've been able to get a five X improvement in bundling speed in some situations. +[47:10] So, you know, by they say that purely by switching from storing all of this data in maps and sets. You know, the, the, the JavaScript, you know, concept of a map or a set new set new map, uh, into this bit set where it's working on a binary level rather than a like string level, I guess, uh, they've been able to get a five X improvement in bundling speed in some situations. -[00:47:40] So. It just goes to show you that, you know, sometimes you're going to, sometimes rewriting in Rust is right, but also, like, if you're rewriting in Rust, you're basically doing this logic, like, Rust operates on, you know, it's a low level language, whereas JavaScript is, by default, a high level language, you're, you know, in JavaScript, if you're just going to write code the most intuitive way, you're probably writing strings, objects, arrays, JavaScript. +[47:40] So. It just goes to show you that, you know, sometimes you're going to, sometimes rewriting in Rust is right, but also, like, if you're rewriting in Rust, you're basically doing this logic, like, Rust operates on, you know, it's a low level language, whereas JavaScript is, by default, a high level language, you're, you know, in JavaScript, if you're just going to write code the most intuitive way, you're probably writing strings, objects, arrays, JavaScript. -[00:48:05] But there's nothing stopping you from writing code as if writing JavaScript as if you were writing Rust or C. Um, you can use buffers. I guess not in, not in the browser. You have to use typed arrays. You and data arrays. Right. But, you know, you, it is perfectly feasible to write JavaScript that does all, all of those low level manipulations. +[48:05] But there's nothing stopping you from writing code as if writing JavaScript as if you were writing Rust or C. Um, you can use buffers. I guess not in, not in the browser. You have to use typed arrays. You and data arrays. Right. But, you know, you, it is perfectly feasible to write JavaScript that does all, all of those low level manipulations. -[00:48:25] And it, yeah, if you're thinking, if, if you ever find yourself thinking like, man, I wish I could just rewrite this in Rust, like. Take that same thinking that you would approach writing it in Rust with and try writing in JavaScript. I bet you'll get halfway there on the +[48:25] And it, yeah, if you're thinking, if, if you ever find yourself thinking like, man, I wish I could just rewrite this in Rust, like. Take that same thinking that you would approach writing it in Rust with and try writing in JavaScript. I bet you'll get halfway there on the -[00:48:39] **Mark Erikson:** performance. The, the funny thing was though, I don't, I don't know if you caught this. +[48:39] **Mark Erikson:** performance. The, the funny thing was though, I don't, I don't know if you caught this. -[00:48:43] So, there was one little bit that they couldn't do from JavaScript. There's apparently a... an advanced CPU SIMD instruction that they wanted to use specifically for some of the comparisons to make them faster. And you can't access specific CPU instructions from JavaScript. It just, it's just not possible. +[48:43] So, there was one little bit that they couldn't do from JavaScript. There's apparently a... an advanced CPU SIMD instruction that they wanted to use specifically for some of the comparisons to make them faster. And you can't access specific CPU instructions from JavaScript. It just, it's just not possible. -[00:49:05] So what they did was they wrote that one tiny, tiny little bit in Rust and compiled it to WASM. And exposed it to JavaScript. So, because they could, they could use that SIMD instruction in Rust. And so by doing that, it's like they made one little function, which is like, you know, fast bit compare or something like that, and expose that to JavaScript from Watson, that's impressive. +[49:05] So what they did was they wrote that one tiny, tiny little bit in Rust and compiled it to WASM. And exposed it to JavaScript. So, because they could, they could use that SIMD instruction in Rust. And so by doing that, it's like they made one little function, which is like, you know, fast bit compare or something like that, and expose that to JavaScript from Watson, that's impressive. -[00:49:32] Yeah, +[49:32] Yeah, -[00:49:32] **Carl Vitullo:** that is really cool. I love the idea of SIMD. If folks in the audience aren't familiar, uh, S I M D, Single Instruction Multiple Data. Uh, it's what powers, it's the core concept behind like graphics cards and like all the AI and the mining and whatever. Uh, you take 600 values that all need the same thing done to it. +[49:32] **Carl Vitullo:** that is really cool. I love the idea of SIMD. If folks in the audience aren't familiar, uh, S I M D, Single Instruction Multiple Data. Uh, it's what powers, it's the core concept behind like graphics cards and like all the AI and the mining and whatever. Uh, you take 600 values that all need the same thing done to it. -[00:49:53] Modern processors will let you pass in That data and an instruction and we'll just do all of that at once instead of one, you know, instead of doing like tick, tick, tick, tick down a list 600 times it'll just go and do 600 units of work all at once. So, yeah, very cool. I didn't, I, I had missed that. They did use rust for a little bit of that. +[49:53] Modern processors will let you pass in That data and an instruction and we'll just do all of that at once instead of one, you know, instead of doing like tick, tick, tick, tick down a list 600 times it'll just go and do 600 units of work all at once. So, yeah, very cool. I didn't, I, I had missed that. They did use rust for a little bit of that. -[00:50:16] That's very cool. +[50:16] That's very cool. -[00:50:17] **Mark Erikson:** Okay, we're about out of time, and fortunately this is the last item on the list. So, self plug. Last week I spoke at the React Advanced Conference in London, which was a wonderful time. Uh, that's also where the React for Git talk was. Uh, the live streams are up on YouTube, um, and the, the individual talks will be available on the, the Git Nation, uh, conference organizers site within the next couple weeks. +[50:17] **Mark Erikson:** Okay, we're about out of time, and fortunately this is the last item on the list. So, self plug. Last week I spoke at the React Advanced Conference in London, which was a wonderful time. Uh, that's also where the React for Git talk was. Uh, the live streams are up on YouTube, um, and the, the individual talks will be available on the, the Git Nation, uh, conference organizers site within the next couple weeks. -[00:50:43] My talk specifically was titled Building Better React Dev Tools with Replay Time Travel. Most of the last year building some very advanced features for replays, time traveling debugger that rely on poking inside the internals of the react library and the react dev tools in replay. We have the react dev tools integrated so that as you jump to different points in time, you can see what the react component tree looked like at that point in time in order to gather that data. +[50:43] My talk specifically was titled Building Better React Dev Tools with Replay Time Travel. Most of the last year building some very advanced features for replays, time traveling debugger that rely on poking inside the internals of the react library and the react dev tools in replay. We have the react dev tools integrated so that as you jump to different points in time, you can see what the react component tree looked like at that point in time in order to gather that data. -[00:51:19] I actually had to go make changes to our recording version of Chrome to say here's every time react rendered and then there's a back a server side back end post processing step opens up the recording goes to each point in time injects the react dev tools bundle code and then extracts the component tree data and then it's even able to take some steps further like if you made a recording of a production application it can use source maps to figure out well and Okay. +[51:19] I actually had to go make changes to our recording version of Chrome to say here's every time react rendered and then there's a back a server side back end post processing step opens up the recording goes to each point in time injects the react dev tools bundle code and then extracts the component tree data and then it's even able to take some steps further like if you made a recording of a production application it can use source maps to figure out well and Okay. -[00:51:51] This components name in production was QZ, but that's actually to do list item from your original code. So let's use the original name of to do list item for the component tree instead. And so I talked about, here's how the react dev tools actually saves and transmits that information. And then I talked about the steps needed to actually do this time travel analysis and replay. +[51:51] This components name in production was QZ, but that's actually to do list item from your original code. So let's use the original name of to do list item for the component tree instead. And so I talked about, here's how the react dev tools actually saves and transmits that information. And then I talked about the steps needed to actually do this time travel analysis and replay. -[00:52:17] Um, and I've semi open sourced the actual code. Uh, the, the code is technically speaking in our proprietary backend repo, but I've copy pasted it to an examples repo. It won't run, it won't compile, but if you want to see... 2500 wines of Mark doing stupid, weird, crazy, mad scientist things. It's available. Heck +[52:17] Um, and I've semi open sourced the actual code. Uh, the, the code is technically speaking in our proprietary backend repo, but I've copy pasted it to an examples repo. It won't run, it won't compile, but if you want to see... 2500 wines of Mark doing stupid, weird, crazy, mad scientist things. It's available. Heck -[00:52:39] **Carl Vitullo:** yes. +[52:39] **Carl Vitullo:** yes. -[00:52:40] Thank you so much, Mark, for talking through the news with me. Thank you so much, everyone in the audience for sticking with us. Uh, well, I hope everyone has a good Halloween. Uh, spooky season is almost only or almost over. Um, yeah, cool. See you guys next month. +[52:40] Thank you so much, Mark, for talking through the news with me. Thank you so much, everyone in the audience for sticking with us. Uh, well, I hope everyone has a good Halloween. Uh, spooky season is almost only or almost over. Um, yeah, cool. See you guys next month. diff --git a/src/transcripts/tmir-september-2023.md b/src/transcripts/tmir-september-2023.md index 6de05ed..0e1d866 100644 --- a/src/transcripts/tmir-september-2023.md +++ b/src/transcripts/tmir-september-2023.md @@ -54,52 +54,52 @@ Links used: - [Web Developers, CSS-in-JS is Ruining Your Product](https://cord.com/blog/migrating-from-css-in-js-to-vanilla-extract) - [Dan Abramov joins Bluesky](https://twitter.com/dan_abramov/status/1695566446007386214) -[00:00:00] **Carl Vitullo:** Hello everyone. Thanks for joining us again for September's This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. I'm Carl. I'm a staff product engineer and freelance community leader at Reactiflux, the Discord for React Professionals, where you are! Joined today by Jacob Paris and Sebastian Lorber. +[00:00] **Carl Vitullo:** Hello everyone. Thanks for joining us again for September's This Month in React, where we recap and digest recent developments in the ever evolving React and web ecosystem. I'm Carl. I'm a staff product engineer and freelance community leader at Reactiflux, the Discord for React Professionals, where you are! Joined today by Jacob Paris and Sebastian Lorber. -[00:00:22] Jacob, do you want to introduce yourself? +[00:22] Jacob, do you want to introduce yourself? -[00:00:24] **Jacob Paris:** Yeah, sure. Thanks, Carl. So I'm, working in DevRel at the moment. I've been a React dev since, not quite the start, I was one of the later later laggards to drop off of Angular, way, way back then. And on the side I'm an egghead instructor. +[00:24] **Jacob Paris:** Yeah, sure. Thanks, Carl. So I'm, working in DevRel at the moment. I've been a React dev since, not quite the start, I was one of the later later laggards to drop off of Angular, way, way back then. And on the side I'm an egghead instructor. -[00:00:38] So I've been producing a lot of content primarily for the Remix ecosystem. And yeah, just trying to share and teach as much as I can. +[00:38] So I've been producing a lot of content primarily for the Remix ecosystem. And yeah, just trying to share and teach as much as I can. -[00:00:46] **Carl Vitullo:** Well, also you send out a monthly Remix newsletter yourself, don't you? +[00:46] **Carl Vitullo:** Well, also you send out a monthly Remix newsletter yourself, don't you? -[00:00:49] **Jacob Paris:** Yeah, yeah, I do. So that, that one's called Moulton. I took over as a writer of that. Pretty recently and pretty similar to the this week in react, but it's specifically focused on the Remix ecosystem. So, the, all the cool libraries and articles and courses and updates from the team and everything cool that's happening with Remix. +[00:49] **Jacob Paris:** Yeah, yeah, I do. So that, that one's called Moulton. I took over as a writer of that. Pretty recently and pretty similar to the this week in react, but it's specifically focused on the Remix ecosystem. So, the, all the cool libraries and articles and courses and updates from the team and everything cool that's happening with Remix. -[00:01:08] **Carl Vitullo:** Nice. Yeah. A lot going on there. Yeah. And Sebastian? +[01:08] **Carl Vitullo:** Nice. Yeah. A lot going on there. Yeah. And Sebastian? -[00:01:12] **Sebastien Lorber:** Yeah. So I'm Sebastien Lorber, and you probably know me for the this week in React newsletter, and I'm also the, the maintainer of Docusaurus, which is now, the version three is in beta. So you can give it a try if you want and, give me some feedback. +[01:12] **Sebastien Lorber:** Yeah. So I'm Sebastien Lorber, and you probably know me for the this week in React newsletter, and I'm also the, the maintainer of Docusaurus, which is now, the version three is in beta. So you can give it a try if you want and, give me some feedback. -[00:01:28] **Carl Vitullo:** Cool. All right, let's jump into it. +[01:28] **Carl Vitullo:** Cool. All right, let's jump into it. ## Node 20.6 - [Node 20.6 - Built-in .env file support](https://nodejs.org/en/blog/release/v20.6.0) - [Node.js 16 End-of-Life](https://nodejs.org/en/blog/announcements/nodejs16-eol) -[00:01:30] **Carl Vitullo:** I guess my first link here is new. It's not actually react or react related directly, but it will affect the ecosystem. New Node version 20.6. Really, my big highlight here is they're pulling in dotenv support to the runtime properly. So no more dotenv. We don't need to install a package, we can just use dotenv files. +[01:30] **Carl Vitullo:** I guess my first link here is new. It's not actually react or react related directly, but it will affect the ecosystem. New Node version 20.6. Really, my big highlight here is they're pulling in dotenv support to the runtime properly. So no more dotenv. We don't need to install a package, we can just use dotenv files. -[00:01:55] Yeah, a lot of the other changelogs look pretty deep and wonkish. There's one that looks like it might be really interesting or might have really interesting echoes throughout the ecosystem, but I'm not really sure exactly what it is about. +[01:55] Yeah, a lot of the other changelogs look pretty deep and wonkish. There's one that looks like it might be really interesting or might have really interesting echoes throughout the ecosystem, but I'm not really sure exactly what it is about. -[00:02:09] It's something about registering module hooks Module customization hooks. They have a call out in the change log saying that those module customization hooks can now handle both ES modules and common JS sources. I don't know exactly what those are for. The reading about them in these release notes was the first time they'd ever crossed my radar. And there's not really a lot of information about what they're for in here. +[02:09] It's something about registering module hooks Module customization hooks. They have a call out in the change log saying that those module customization hooks can now handle both ES modules and common JS sources. I don't know exactly what those are for. The reading about them in these release notes was the first time they'd ever crossed my radar. And there's not really a lot of information about what they're for in here. -[00:02:32] But anything that starts talking about cross-compatibility between ES Modules and CommonJS is like, very interesting to me because that has been such a pain point for like. tears at this point. So that caught my eye too, but it looks like most of these other changes were relatively minor and you know, classic LTS cycle, now node 16 is end of life though. +[02:32] But anything that starts talking about cross-compatibility between ES Modules and CommonJS is like, very interesting to me because that has been such a pain point for like. tears at this point. So that caught my eye too, but it looks like most of these other changes were relatively minor and you know, classic LTS cycle, now node 16 is end of life though. -[00:02:55] We were using those for reactibot. So if you're using node 16. Stop it. Time to update. Yeah, Jacob, Sebastian, anything you want to chime in on there? Not a lot to discuss there. +[02:55] We were using those for reactibot. So if you're using node 16. Stop it. Time to update. Yeah, Jacob, Sebastian, anything you want to chime in on there? Not a lot to discuss there. -[00:03:06] **Jacob Paris:** Yeah, the CJS ESM incompatibilities have been largely a nightmare for my entire history of being a developer. To be honest, I don't know how new devs really Understand the stuff when they pick up. +[03:06] **Jacob Paris:** Yeah, the CJS ESM incompatibilities have been largely a nightmare for my entire history of being a developer. To be honest, I don't know how new devs really Understand the stuff when they pick up. -[00:03:21] It's like, you know, which import format do you use? You've got configurations that are automatically generated by different different packages, ESLint, Prettier, and sometimes they work and sometimes they don't. And I, I don't know how anyone makes sense of it. I am all on board for the ecosystem moving toward ESM here in the future, where maybe there's only one thing to do. +[03:21] It's like, you know, which import format do you use? You've got configurations that are automatically generated by different different packages, ESLint, Prettier, and sometimes they work and sometimes they don't. And I, I don't know how anyone makes sense of it. I am all on board for the ecosystem moving toward ESM here in the future, where maybe there's only one thing to do. -[00:03:41] Or we can go with Bun's approach where everything just works together and it's up to library authors to sort things out between ourselves. I'm, I think that's okay as well. +[03:41] Or we can go with Bun's approach where everything just works together and it's up to library authors to sort things out between ourselves. I'm, I think that's okay as well. -[00:03:51] **Carl Vitullo:** Yeah. On your note about people learning web development right now something that has bitten me a number of times is, like, Sindre Sorhus has, all of his packages now are ESM only. +[03:51] **Carl Vitullo:** Yeah. On your note about people learning web development right now something that has bitten me a number of times is, like, Sindre Sorhus has, all of his packages now are ESM only. -[00:04:04] And if you want CommonJS, you've got to decrement the major version. And that has bitten me so many times where something is inexplicably broken and I just need to, like, remember which are his packages and decrement them. So it's, yeah, hopefully, I have a lot of fingers crossed here that this is going to make that better, but, you know, we'll, we'll see what it does. +[04:04] And if you want CommonJS, you've got to decrement the major version. And that has bitten me so many times where something is inexplicably broken and I just need to, like, remember which are his packages and decrement them. So it's, yeah, hopefully, I have a lot of fingers crossed here that this is going to make that better, but, you know, we'll, we'll see what it does. -[00:04:24] It does say, "this should simplify the customization of the Node.js module loading process as package authors can customize more of Node.js without relying on deprecated APIs such as `require.extensions`." So hopefully, we'll see. +[04:24] It does say, "this should simplify the customization of the Node.js module loading process as package authors can customize more of Node.js without relying on deprecated APIs such as `require.extensions`." So hopefully, we'll see. -[00:04:37] Jacob, you want to take us off on our next link? +[04:37] Jacob, you want to take us off on our next link? ## Remix v2, major release feature flagging @@ -107,178 +107,178 @@ Links used: - [Upgrade guide](https://remix.run/docs/en/main/start/v2) - [SemVer philosophy](https://remix.run/blog/future-flags) -[00:04:38] **Jacob Paris:** Yeah. Yeah. So I guess the biggest thing from the Remix ecosystem at the moment there is that they just launched the V2. +[04:38] **Jacob Paris:** Yeah. Yeah. So I guess the biggest thing from the Remix ecosystem at the moment there is that they just launched the V2. -[00:04:45] It was quite an underwhelming release, every new feature that came out, everything has already been in place for weeks or months now via feature flag in the previous versions. So anyone who's already running that you know in, in production or in any of their apps they've already been able to opt in to the FeatureFlag, upgrade things and move on. +[04:45] It was quite an underwhelming release, every new feature that came out, everything has already been in place for weeks or months now via feature flag in the previous versions. So anyone who's already running that you know in, in production or in any of their apps they've already been able to opt in to the FeatureFlag, upgrade things and move on. -[00:05:05] And, you know, if that didn't happen by now, I guess now's your chance to do that before you increment the major version. So in theory, that should make it a really smooth transition for pretty much everyone to upgrade. But then on the same note of ESM versus CJS issues, one new thing that happened is that, with Remix V2, it now has first class support for ESM, which just wasn't a thing before. +[05:05] And, you know, if that didn't happen by now, I guess now's your chance to do that before you increment the major version. So in theory, that should make it a really smooth transition for pretty much everyone to upgrade. But then on the same note of ESM versus CJS issues, one new thing that happened is that, with Remix V2, it now has first class support for ESM, which just wasn't a thing before. -[00:05:28] So now in your dev server, you can run full ESM applications. And, in that process of releasing the new version, they've also changed the default from CJS to ESM. So, um, there's been a lot of people kind of struggling with incompatibility issues because, you know, previously their new applications were being made in CommonJS. +[05:28] So now in your dev server, you can run full ESM applications. And, in that process of releasing the new version, they've also changed the default from CJS to ESM. So, um, there's been a lot of people kind of struggling with incompatibility issues because, you know, previously their new applications were being made in CommonJS. -[00:05:49] And now they're, now they're being made to support ESM and some config files that they've been trying to copy over from other files or from examples that they've copied online old repositories. Now, they just need to be tweaked a little bit, and it's usually not that much work. +[05:49] And now they're, now they're being made to support ESM and some config files that they've been trying to copy over from other files or from examples that they've copied online old repositories. Now, they just need to be tweaked a little bit, and it's usually not that much work. -[00:06:05] But there's small changes that need to be done, and you need to know what you're doing to do that. That said, Remix still supports CommonJS, but since they changed the default, there is now this friction and this, this transition period that people are having to go through. +[06:05] But there's small changes that need to be done, and you need to know what you're doing to do that. That said, Remix still supports CommonJS, but since they changed the default, there is now this friction and this, this transition period that people are having to go through. -[00:06:18] **Carl Vitullo:** That's awesome though. Maybe I can stop decrementing my Sindre Sorhus modules. +[06:18] **Carl Vitullo:** That's awesome though. Maybe I can stop decrementing my Sindre Sorhus modules. -[00:06:23] **Jacob Paris:** (laughs) In general even if you're going all in on ESM, you should still be able to run CJS packages by running them through a Bundler beforehand. So they have to be Bundled rather than running natively but just because you're moving toward ESM doesn't mean you no longer have the capacity to use CommonJS modules. +[06:23] **Jacob Paris:** (laughs) In general even if you're going all in on ESM, you should still be able to run CJS packages by running them through a Bundler beforehand. So they have to be Bundled rather than running natively but just because you're moving toward ESM doesn't mean you no longer have the capacity to use CommonJS modules. -[00:06:42] It's just a little more work to get them running in the same runtime. +[06:42] It's just a little more work to get them running in the same runtime. -[00:06:45] **Carl Vitullo:** Okay, very cool. Very nice. Yeah, I was reading a little bit about, you know, in there, in the V2 announcement post, they talked, way more than any, you know, new releases, new features they talked much more about their update, upgrade philosophy, which I thought was really interesting, like the, you know, vertical space associated with advertising what they were releasing versus advertising how they released it. +[06:45] **Carl Vitullo:** Okay, very cool. Very nice. Yeah, I was reading a little bit about, you know, in there, in the V2 announcement post, they talked, way more than any, you know, new releases, new features they talked much more about their update, upgrade philosophy, which I thought was really interesting, like the, you know, vertical space associated with advertising what they were releasing versus advertising how they released it. -[00:07:10] I thought it was an interesting choice, but I really loved the philosophy that they described. I just put a link and link to it in chat. But they, I pulled out a couple of quotes because I thought they were really clever and just useful, kind of useful to hear. +[07:10] I thought it was an interesting choice, but I really loved the philosophy that they described. I just put a link and link to it in chat. But they, I pulled out a couple of quotes because I thought they were really clever and just useful, kind of useful to hear. -[00:07:24] For anyone in the ecosystem who's going to be consuming libraries, and maybe also for library maintainers. But if they talked about Semver, "Semver gives us a way to communicate when breaking changes exist, we do not have a similar agreed upon process of how to introduce breaking changes in our frameworks and communicate them to application developers." +[07:24] For anyone in the ecosystem who's going to be consuming libraries, and maybe also for library maintainers. But if they talked about Semver, "Semver gives us a way to communicate when breaking changes exist, we do not have a similar agreed upon process of how to introduce breaking changes in our frameworks and communicate them to application developers." -[00:07:42] and they talked a lot about like the long running feature branch development for upgrades, which is a pain I have felt a number of times in my career. I have been that developer maintaining a feature branch for a month, two months, three months, constantly merging back in, rebasing off master, repairing merge conflicts, doing all that. +[07:42] and they talked a lot about like the long running feature branch development for upgrades, which is a pain I have felt a number of times in my career. I have been that developer maintaining a feature branch for a month, two months, three months, constantly merging back in, rebasing off master, repairing merge conflicts, doing all that. -[00:08:03] So seeing them talk about the efforts they've gone through to avoid those problems was like, Oh, this is really interesting. I didn't realize that it was like technically feasible to really do this. +[08:03] So seeing them talk about the efforts they've gone through to avoid those problems was like, Oh, this is really interesting. I didn't realize that it was like technically feasible to really do this. -[00:08:16] So yeah, I thought that was really cool. +[08:16] So yeah, I thought that was really cool. -[00:08:17] **Sebastien Lorber:** Yeah, I agree. But I have something that I don't really understand is there are some things that are really hard to ship with a future flag, you know, for example in Docusaurus, we upgraded recently to MDX two and it's. Completely different from MDX one on the inside, the AST is completely different, the packages were migrated to CommonJS to ESM and there are many things like that. +[08:17] **Sebastien Lorber:** Yeah, I agree. But I have something that I don't really understand is there are some things that are really hard to ship with a future flag, you know, for example in Docusaurus, we upgraded recently to MDX two and it's. Completely different from MDX one on the inside, the AST is completely different, the packages were migrated to CommonJS to ESM and there are many things like that. -[00:08:43] And I think like if you wanted to. To bring support to MDX2 with a future flag, you would have to vendor the MDX library and all, many dependencies to be able to support the two versions at the same time, and we would have to maintain two copies of the code somehow. I don't know, but For example, I was wondering if Remix version 2 will have support for server components as a future flag, or if it will come only with version 3 at the release time, because it looks like a complex thing to ship as a future flag somehow. +[08:43] And I think like if you wanted to. To bring support to MDX2 with a future flag, you would have to vendor the MDX library and all, many dependencies to be able to support the two versions at the same time, and we would have to maintain two copies of the code somehow. I don't know, but For example, I was wondering if Remix version 2 will have support for server components as a future flag, or if it will come only with version 3 at the release time, because it looks like a complex thing to ship as a future flag somehow. -[00:09:24] **Jacob Paris:** Yeah, yeah, it's, it's definitely challenging and you sort of have to pick and choose which features which features you go with. I'm not 100 percent sure when the RFCs for how Remix is going to handle Server Components are coming out. But, you know, that's something Ryan Florence is working on at the moment. So we'll have a little more information when that comes. +[09:24] **Jacob Paris:** Yeah, yeah, it's, it's definitely challenging and you sort of have to pick and choose which features which features you go with. I'm not 100 percent sure when the RFCs for how Remix is going to handle Server Components are coming out. But, you know, that's something Ryan Florence is working on at the moment. So we'll have a little more information when that comes. -[00:09:45] But for example, yeah the... You know, updating big major dependencies, like you couldn't feature flag having support for example, React 17 versus React 18 at the same time. So that was one of the big things that Remix did update in the v2. +[09:45] But for example, yeah the... You know, updating big major dependencies, like you couldn't feature flag having support for example, React 17 versus React 18 at the same time. So that was one of the big things that Remix did update in the v2. -[00:10:04] So you can run v1 with all the feature flags enabled on React 17, but at the time you update to v2 officially, it does drop support for versions of React prior to 2018. And it was the same with the, with the CJS ESM thing. That's just, it's not practical to try and, you know, run those side by side in, in everything. +[10:04] So you can run v1 with all the feature flags enabled on React 17, but at the time you update to v2 officially, it does drop support for versions of React prior to 2018. And it was the same with the, with the CJS ESM thing. That's just, it's not practical to try and, you know, run those side by side in, in everything. -[00:10:23] So the official first class ESM support, was also sort of a, an add on that came in with the with the new version rather than trying to feature plague that. So I definitely see a lot of value in them as a tool where, you know, as long as you can choose not to break things for your developers, and to give them an incremental path to adoption, you should do that. +[10:23] So the official first class ESM support, was also sort of a, an add on that came in with the with the new version rather than trying to feature plague that. So I definitely see a lot of value in them as a tool where, you know, as long as you can choose not to break things for your developers, and to give them an incremental path to adoption, you should do that. -[00:10:47] But you know, as you've said, sometimes with bigger dependencies, sometimes it just can't be done. Yeah, it makes sense. I guess, I guess another, another thing I'm so happy that Remix is going down this road is because developers are just terrified of major version releases. Um, like if you look what happened with Angular, moving from Angular 1 to Angular 2, you know, with React going from React class components to React hooks. +[10:47] But you know, as you've said, sometimes with bigger dependencies, sometimes it just can't be done. Yeah, it makes sense. I guess, I guess another, another thing I'm so happy that Remix is going down this road is because developers are just terrified of major version releases. Um, like if you look what happened with Angular, moving from Angular 1 to Angular 2, you know, with React going from React class components to React hooks. -[00:11:11] You've got Vue 2 to Vue 3, and now, like, all the dialogue I'm hearing with Remix, you know, despite how loud they are taking up the entire announcement post to talk about it. The way this major version release process is working, you're still getting people asking, "well, is this stable yet? should I wait a little later? I don't want to start a project now if I'm going to have to refactor and change everything later." +[11:11] You've got Vue 2 to Vue 3, and now, like, all the dialogue I'm hearing with Remix, you know, despite how loud they are taking up the entire announcement post to talk about it. The way this major version release process is working, you're still getting people asking, "well, is this stable yet? should I wait a little later? I don't want to start a project now if I'm going to have to refactor and change everything later." -[00:11:35] There's just such this ingrained culture where major version updates are, are, are terrifying and not something you want to put a project through if you don't have to. People would rather wait and delay things than Adopting and having to go through that transition period. +[11:35] There's just such this ingrained culture where major version updates are, are, are terrifying and not something you want to put a project through if you don't have to. People would rather wait and delay things than Adopting and having to go through that transition period. -[00:11:50] So if, if what Remix is doing here can really catch on and start to make this a little less painful for upgrades, then yeah, I, I am all for that. +[11:50] So if, if what Remix is doing here can really catch on and start to make this a little less painful for upgrades, then yeah, I, I am all for that. -[00:11:58] **Carl Vitullo:** Yeah, agreed. Definitely true that there's a lot of fear around major version upgrades. And, you know, I, I maybe actually, maybe it's less fear and more just like trauma because so many of the you know, it's not unbased. +[11:58] **Carl Vitullo:** Yeah, agreed. Definitely true that there's a lot of fear around major version upgrades. And, you know, I, I maybe actually, maybe it's less fear and more just like trauma because so many of the you know, it's not unbased. -[00:12:11] It's not like, you know, you've heard stories to keep you up at night. It's just like so many people have had lived experiences of, "major version upgrades are super painful." So I hopefully this is a trend. I love this direction. I have to imagine that feature flagging things is this aggressively in a framework is, technically challenging, technically complicating. So yeah, hopefully we'll see it more. Hopefully it's not so complicating that it's difficult for other people to copy, because I love this. I hope this becomes a trend. +[12:11] It's not like, you know, you've heard stories to keep you up at night. It's just like so many people have had lived experiences of, "major version upgrades are super painful." So I hopefully this is a trend. I love this direction. I have to imagine that feature flagging things is this aggressively in a framework is, technically challenging, technically complicating. So yeah, hopefully we'll see it more. Hopefully it's not so complicating that it's difficult for other people to copy, because I love this. I hope this becomes a trend. -[00:12:42] Sebastien, you want to take us off on our next link? +[12:42] Sebastien, you want to take us off on our next link? ## Docusaurus v3.0 - [Docusaurus v3 beta](https://github.com/facebook/docusaurus/discussions/9312) - [Upgrading frontend dependencies with confidence](https://docusaurus.io/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing) -[00:12:45] **Sebastien Lorber:** Yeah, so I thought that as we were speaking about being afraid of upgrading dependencies, actually I posted an article last week about the subject. And it's related to the Docusaurus version 3. So I was working for, on the version three for a very long time. Now it's a, it's an upgrade of the infrastructure, including React 18 and, and MDX 2. +[12:45] **Sebastien Lorber:** Yeah, so I thought that as we were speaking about being afraid of upgrading dependencies, actually I posted an article last week about the subject. And it's related to the Docusaurus version 3. So I was working for, on the version three for a very long time. Now it's a, it's an upgrade of the infrastructure, including React 18 and, and MDX 2. -[00:13:11] And, this changes, not, MDX two can have a lot of, weird side effects. For example, you add. MDX content and it rendered nicely previously. And now if you, if you upgrade to version two it eventually fails to compile now. So you have to reflect all the content of it. And also it can render differently, even if it's compiled. +[13:11] And, this changes, not, MDX two can have a lot of, weird side effects. For example, you add. MDX content and it rendered nicely previously. And now if you, if you upgrade to version two it eventually fails to compile now. So you have to reflect all the content of it. And also it can render differently, even if it's compiled. -[00:13:33] So. you are not very confident that actually the, the upgrade is safe unless you took, you take a look at all the pages of your documentation or your blog or whatever it is and, take a look at all of them and be sure that it renders exactly like before. So, um, what I did for Docusaurus and this is now, um, A solution that, we recommend to our users is to adopt a workflow of visual regression testing. +[13:33] So. you are not very confident that actually the, the upgrade is safe unless you took, you take a look at all the pages of your documentation or your blog or whatever it is and, take a look at all of them and be sure that it renders exactly like before. So, um, what I did for Docusaurus and this is now, um, A solution that, we recommend to our users is to adopt a workflow of visual regression testing. -[00:14:03] So, the idea is that you take a screenshot of all the pages of your documentation website. And, you do this on the main branch and on the pull request branch, and then you use a tool that can be, something self hosted or external, and this tool permits you to tell you which are the differences between your upgrade branch and your, and the main branch. +[14:03] So, the idea is that you take a screenshot of all the pages of your documentation website. And, you do this on the main branch and on the pull request branch, and then you use a tool that can be, something self hosted or external, and this tool permits you to tell you which are the differences between your upgrade branch and your, and the main branch. -[00:14:28] So, if you have visual regressions that you don't expect, the tool is able to report it as a GitHub commit status. And so, I wrote a blog post about the setup that I used. It's based on GitHub Actions, Playwright, and Argos, which is an external tool to handle the screenshots. And I thought it was quite interesting. +[14:28] So, if you have visual regressions that you don't expect, the tool is able to report it as a GitHub commit status. And so, I wrote a blog post about the setup that I used. It's based on GitHub Actions, Playwright, and Argos, which is an external tool to handle the screenshots. And I thought it was quite interesting. -[00:14:50] I used it in the context of Docusaurus upgrades. For example, while upgrading the React Native website last week, we... catched a few bugs, in the process thanks to this workflow. And I think it can be easily, adapted to work on other sites. What I did to get the, all the pages of the site is to read the sit map point, the XML file, and iterate on, on the list of path. +[14:50] I used it in the context of Docusaurus upgrades. For example, while upgrading the React Native website last week, we... catched a few bugs, in the process thanks to this workflow. And I think it can be easily, adapted to work on other sites. What I did to get the, all the pages of the site is to read the sit map point, the XML file, and iterate on, on the list of path. -[00:15:18] So as long as you're able to take screenshots and are able to get a list of page of your site I think you can try to adopt this workflow and if you want to do a dependency upgrade, then you can do and compare and see if there is a visual difference being reported by the tool that you use. +[15:18] So as long as you're able to take screenshots and are able to get a list of page of your site I think you can try to adopt this workflow and if you want to do a dependency upgrade, then you can do and compare and see if there is a visual difference being reported by the tool that you use. -[00:15:37] **Carl Vitullo:** Yeah, very nice. +[15:37] **Carl Vitullo:** Yeah, very nice. -[00:15:38] I've heard about this kind of visual regression testing. I feel like I've heard about it four or five times over my career. And every single time it hasn't really worked out. Or, you know, I've tried it and it, you know, the the experience doesn't quite work out. But I'm reading about I'm reading your blog post. +[15:38] I've heard about this kind of visual regression testing. I feel like I've heard about it four or five times over my career. And every single time it hasn't really worked out. Or, you know, I've tried it and it, you know, the the experience doesn't quite work out. But I'm reading about I'm reading your blog post. -[00:15:57] And I love the idea of I feel like maybe the technology now has developed to the point where it will actually work now, because like Playwright, I've heard only phenomenal things about. Everyone I've talked to who has used it has said that like, yes, this is great. This is what integration and end-to-end testing should be. +[15:57] And I love the idea of I feel like maybe the technology now has developed to the point where it will actually work now, because like Playwright, I've heard only phenomenal things about. Everyone I've talked to who has used it has said that like, yes, this is great. This is what integration and end-to-end testing should be. -[00:16:16] And GitHub Actions is finally like a great task runner for services like that. whereas, you know, I remember trying to set up this sort of tool in like Jenkins, like eight years ago, and it was like, Oh, I don't, this doesn't work. So yeah, this seems really cool. +[16:16] And GitHub Actions is finally like a great task runner for services like that. whereas, you know, I remember trying to set up this sort of tool in like Jenkins, like eight years ago, and it was like, Oh, I don't, this doesn't work. So yeah, this seems really cool. -[00:16:34] Cool. Well, +[16:34] Cool. Well, -[00:16:35] I can take us on to our next one then we are going to get to Bun 1. 0, but I want to, I'll say we're going to save that for the end. +[16:35] I can take us on to our next one then we are going to get to Bun 1. 0, but I want to, I'll say we're going to save that for the end. ## Astro 3.0 - [Astro 3.0](https://astro.build/blog/astro-3/) -[00:16:43] **Carl Vitullo:** So right now, I want to talk about Astro 3.0, I actually have not yet used Astro very, very extensively, but I have heard only really great things about it and it's a, it's definitely something I want to check out. I think I've heard about it being like very good for like personal sites, portfolios, like relatively smaller marketing sites. +[16:43] **Carl Vitullo:** So right now, I want to talk about Astro 3.0, I actually have not yet used Astro very, very extensively, but I have heard only really great things about it and it's a, it's definitely something I want to check out. I think I've heard about it being like very good for like personal sites, portfolios, like relatively smaller marketing sites. -[00:17:06] So, you know, as I'm looking at making a personal, professional blog or revamping the Reactiflux website. Very interested to give that a shot, give it a real chance of and see how it works out. But yeah, Astro 3.0, new, new release. I don't know. Have either of you used Astro at all, very much? +[17:06] So, you know, as I'm looking at making a personal, professional blog or revamping the Reactiflux website. Very interested to give that a shot, give it a real chance of and see how it works out. But yeah, Astro 3.0, new, new release. I don't know. Have either of you used Astro at all, very much? -[00:17:25] **Sebastien Lorber:** no. But I think it's interesting because, you know, the view transitions make it more, looking like, single page applications. And now that they are able to persist the state between, page transitions, that's becoming a really interesting solution. What I'm afraid, for example, for now, is that if you use third party widgets like intercom, chat, and things like that, If you navigate from one page to another, you would like this kind of widget to persist the state because it's really annoying, you know, to have the chat that resets itself. +[17:25] **Sebastien Lorber:** no. But I think it's interesting because, you know, the view transitions make it more, looking like, single page applications. And now that they are able to persist the state between, page transitions, that's becoming a really interesting solution. What I'm afraid, for example, for now, is that if you use third party widgets like intercom, chat, and things like that, If you navigate from one page to another, you would like this kind of widget to persist the state because it's really annoying, you know, to have the chat that resets itself. -[00:18:00] You are in the middle of a conversation with the support team or something and you click on the link and then, everything is lost. So if they can solve this program, I think it's it's really great for us too. And for multi page applications in general. +[18:00] You are in the middle of a conversation with the support team or something and you click on the link and then, everything is lost. So if they can solve this program, I think it's it's really great for us too. And for multi page applications in general. -[00:18:13] **Carl Vitullo:** Nice. Sadly, I can't speak very, much more deeply than I already have on this, but yeah, definitely excited to give it a shot. And I love when new versions come out before I have fully learned them. So then I only have to learn one thing instead of two. +[18:13] **Carl Vitullo:** Nice. Sadly, I can't speak very, much more deeply than I already have on this, but yeah, definitely excited to give it a shot. And I love when new versions come out before I have fully learned them. So then I only have to learn one thing instead of two. -[00:18:28] Jacob, you want to take us on to our next one? +[18:28] Jacob, you want to take us on to our next one? ## Josh Comeau's Making Sense of React Server Components - [Making Sense of React Server Components](https://www.joshwcomeau.com/react/server-components/) -[00:18:29] **Jacob Paris:** Yeah, sure. So, Josh Comeau put out this great article about, React Server Components. So I, I've kind of been sleeping on React Server Components for a long time, because They've always really confused me. +[18:29] **Jacob Paris:** Yeah, sure. So, Josh Comeau put out this great article about, React Server Components. So I, I've kind of been sleeping on React Server Components for a long time, because They've always really confused me. -[00:18:45] So when the information was first coming out, there was, there were so many different ideas about how these are going to work. And then you start seeing examples and some of the examples are coming from the React team and some of them are coming from the Vercel team and then people from React move over to Vercel and then you get you know, examples from the from the code bases of either moving back and forth. +[18:45] So when the information was first coming out, there was, there were so many different ideas about how these are going to work. And then you start seeing examples and some of the examples are coming from the React team and some of them are coming from the Vercel team and then people from React move over to Vercel and then you get you know, examples from the from the code bases of either moving back and forth. -[00:19:06] It was just, it was always so unclear, which, you know, in any example you see, which parts were React and which parts were Next. And so, so for me as a, as a Remix developer, I'm wondering, you know, which parts are going to stay in React that then Remix can build on top of and which parts are belonging to Next that, you know, Remix may either have to, may either have to clone or continue to build on top of. +[19:06] It was just, it was always so unclear, which, you know, in any example you see, which parts were React and which parts were Next. And so, so for me as a, as a Remix developer, I'm wondering, you know, which parts are going to stay in React that then Remix can build on top of and which parts are belonging to Next that, you know, Remix may either have to, may either have to clone or continue to build on top of. -[00:19:32] For a long time, I just, you know, I kept seeing these server components, and I just really didn't know much about what they were. which is why, yeah really glad Josh has put out this article, because reading through, everything makes quite a lot more sense now. The server components are basically a new model here, where every React component we've dealt with in the past has now been renamed to a React Client component, and these React Server Components render only on the server, and they only render once, and it's a Almost like server side rendering, but instead of executing once and then being all the HTML to the browser is they can render and then send all the information React needs to hydrate a React component to the browser in fact, in practicality, what this means is we can have async data fetching happen right in our components, which is fantastic, And any time you include a client component in there, everything that component imports just works exactly like, components we've had before. +[19:32] For a long time, I just, you know, I kept seeing these server components, and I just really didn't know much about what they were. which is why, yeah really glad Josh has put out this article, because reading through, everything makes quite a lot more sense now. The server components are basically a new model here, where every React component we've dealt with in the past has now been renamed to a React Client component, and these React Server Components render only on the server, and they only render once, and it's a Almost like server side rendering, but instead of executing once and then being all the HTML to the browser is they can render and then send all the information React needs to hydrate a React component to the browser in fact, in practicality, what this means is we can have async data fetching happen right in our components, which is fantastic, And any time you include a client component in there, everything that component imports just works exactly like, components we've had before. -[00:20:39] It unlocks a lot of abilities that we primarily couldn't do before in terms of composition, for example, in say, in Remix and in Next.JS before this, you can have a, a loader or your get server side props that fetches data, and then it passes it to a server side rendered components. +[20:39] It unlocks a lot of abilities that we primarily couldn't do before in terms of composition, for example, in say, in Remix and in Next.JS before this, you can have a, a loader or your get server side props that fetches data, and then it passes it to a server side rendered components. -[00:20:58] But there was never any way to do that at the component level that always had to do, had to happen at the route level where you would have a, you know, each route would become an end point and you can. You know, you generate your components based on the data that endpoint returns. So there are the server components, um, you could almost model it, you're getting, you know, individual little endpoints for every single, every single component you have, and they can, they can be composed together just in the same way we're already currently using, React, which I, which I think is fantastic. +[20:58] But there was never any way to do that at the component level that always had to do, had to happen at the route level where you would have a, you know, each route would become an end point and you can. You know, you generate your components based on the data that endpoint returns. So there are the server components, um, you could almost model it, you're getting, you know, individual little endpoints for every single, every single component you have, and they can, they can be composed together just in the same way we're already currently using, React, which I, which I think is fantastic. -[00:21:33] There are some issues with it still, that, that I don't I'm still not 100 percent sure how they solve or how they're going to solve, for example, data serialization. If you're sending data from the server to the client, say you have a date or a map or a set, the client is going to receive that as just just a string or, you know, a stringified array. +[21:33] There are some issues with it still, that, that I don't I'm still not 100 percent sure how they solve or how they're going to solve, for example, data serialization. If you're sending data from the server to the client, say you have a date or a map or a set, the client is going to receive that as just just a string or, you know, a stringified array. -[00:21:55] And... When you're dealing with a very visible network boundary, like you've got a loader and a react components or you've got your server side props and then your react bit it's pretty easy to see where that boundary is, but now with the server components, you can create that network boundary simply by passing data to a prop in a client component, and I just think that's really, really subtle at the moment, so I'm not 100 percent for you know, if that's actually going to cause problems in practicality, you go inside that component, and now your types are just a little different than they were. +[21:55] And... When you're dealing with a very visible network boundary, like you've got a loader and a react components or you've got your server side props and then your react bit it's pretty easy to see where that boundary is, but now with the server components, you can create that network boundary simply by passing data to a prop in a client component, and I just think that's really, really subtle at the moment, so I'm not 100 percent for you know, if that's actually going to cause problems in practicality, you go inside that component, and now your types are just a little different than they were. -[00:22:30] In the server components it seems like that's going to be space for people to get confused. +[22:30] In the server components it seems like that's going to be space for people to get confused. -[00:22:36] But all in all the components that these enable are, I think, I think, fantastic. Like, we're looking at, you can imagine a component that render, or that syntax highlights code for you. So you just pack text and it's got all the syntax highlighting built in without needing to ship megabytes upon megabytes of, libraries to the browser to make it understand every programming language it could support. +[22:36] But all in all the components that these enable are, I think, I think, fantastic. Like, we're looking at, you can imagine a component that render, or that syntax highlights code for you. So you just pack text and it's got all the syntax highlighting built in without needing to ship megabytes upon megabytes of, libraries to the browser to make it understand every programming language it could support. -[00:22:59] you could imagine a, say an image component that automatically. You know, pre process the image based on its, you know, widths and heights and any resolutions you set. Next already has a sort of proprietary version of that, but it only works on Vercel hardware. Because they are, if they're in charge of the deploy process, they can then transform your code to make that work. +[22:59] you could imagine a, say an image component that automatically. You know, pre process the image based on its, you know, widths and heights and any resolutions you set. Next already has a sort of proprietary version of that, but it only works on Vercel hardware. Because they are, if they're in charge of the deploy process, they can then transform your code to make that work. -[00:23:22] But this will now enable that to work on any hardware that supports React Server Components. So yeah, I'm super excited about it. The ability to do that and then you can publish these full stack components in libraries as well. And then users can just import them and things will work full stack, which is you know, it's just, it's, it's, it's unlocking new abilities that we just couldn't do before. +[23:22] But this will now enable that to work on any hardware that supports React Server Components. So yeah, I'm super excited about it. The ability to do that and then you can publish these full stack components in libraries as well. And then users can just import them and things will work full stack, which is you know, it's just, it's, it's, it's unlocking new abilities that we just couldn't do before. -[00:23:45] **Carl Vitullo:** Yeah, unlocking new abilities really does seem like the big thing here. I feel like I, I too have kind of skimmed past this, despite talking about it with some frequency on this event. But it just, I, I can sense that it's going to be a very wide and deep subject, and I just don't feel like... Like, okay, I can write a toy project and get a little bit of experience of what it's like using it. +[23:45] **Carl Vitullo:** Yeah, unlocking new abilities really does seem like the big thing here. I feel like I, I too have kind of skimmed past this, despite talking about it with some frequency on this event. But it just, I, I can sense that it's going to be a very wide and deep subject, and I just don't feel like... Like, okay, I can write a toy project and get a little bit of experience of what it's like using it. -[00:24:08] But, you know, that won't really tell me everything I need to know about what are the performance characteristics for like 99th percentile users or, you know, there's just like such a long tail of things to learn about how it will affect development and performance and user experience and all of those things. +[24:08] But, you know, that won't really tell me everything I need to know about what are the performance characteristics for like 99th percentile users or, you know, there's just like such a long tail of things to learn about how it will affect development and performance and user experience and all of those things. -[00:24:28] And so I feel like I'm going to keep saying, "I don't think I really understand this" for a very long time because the implications are going to take a long time to really shake out. +[24:28] And so I feel like I'm going to keep saying, "I don't think I really understand this" for a very long time because the implications are going to take a long time to really shake out. -[00:24:38] **Jacob Paris:** Yeah, and there's there's some new sort of, foot guns coming in that people will have to watch out for like, for example, you know, it's super common. +[24:38] **Jacob Paris:** Yeah, and there's there's some new sort of, foot guns coming in that people will have to watch out for like, for example, you know, it's super common. -[00:24:45] You have an array of data and you, you, you, you map through it. And on each iteration of the map, you're, you're creating a component, but they have a list mapping through and creating a list item in each one. The, the data you pass to that list is going to be. Individually serialized for every item in that list, if you happen to pass any large document React Server Components are not going to de duplicate that for you. +[24:45] You have an array of data and you, you, you, you map through it. And on each iteration of the map, you're, you're creating a component, but they have a list mapping through and creating a list item in each one. The, the data you pass to that list is going to be. Individually serialized for every item in that list, if you happen to pass any large document React Server Components are not going to de duplicate that for you. -[00:25:10] So you, you can end up with tons and tons of data. Ryan Florence was saying there was something similar in in a Shopify Hydrogen application that functioned in, in largely the same way. And yeah, it's, we're, we're introducing a whole new set of you know, things that people are going to have to watch out for if they want to have performant code. +[25:10] So you, you can end up with tons and tons of data. Ryan Florence was saying there was something similar in in a Shopify Hydrogen application that functioned in, in largely the same way. And yeah, it's, we're, we're introducing a whole new set of you know, things that people are going to have to watch out for if they want to have performant code. -[00:25:30] I'm really hoping that when this kind of hits mainstream, there's either going to be enough messaging or maybe lint rules or something, you know, maybe some just physical boundaries put into the framework to stop people from making mistakes like this. Because it just, at the moment, it seems really, really easy to make a lot of mistakes. +[25:30] I'm really hoping that when this kind of hits mainstream, there's either going to be enough messaging or maybe lint rules or something, you know, maybe some just physical boundaries put into the framework to stop people from making mistakes like this. Because it just, at the moment, it seems really, really easy to make a lot of mistakes. -[00:25:49] **Sebastien Lorber:** Yeah, I wanted to mention another use case that you maybe didn't think of is you, you know, maybe you used Gatsby before with the GraphQL layer to inject data in, in pages, I think actually, um, React Server Components could be a very good alternative to that, and this is what I'd like to explore in Docusaurus actually, because, you know, the server components do not really need to run on the server. +[25:49] **Sebastien Lorber:** Yeah, I wanted to mention another use case that you maybe didn't think of is you, you know, maybe you used Gatsby before with the GraphQL layer to inject data in, in pages, I think actually, um, React Server Components could be a very good alternative to that, and this is what I'd like to explore in Docusaurus actually, because, you know, the server components do not really need to run on the server. -[00:26:13] You can actually run them at build time, as part of your build process, so a static side generator like Docusaurus is able to also use server components at build time. And this can give the ability to have a very flexible data layer. So instead of using static GraphQL queries in pages and things like that, you would be able to actually use Node. js code inside Interleaved with the client side React code and be able to inject the right data at the right place without actually the need for creating a complex GraphQL query and things like that. So somehow From my Docusaurus perspective, what I just have to do is to expose the data structure and let the user pick the right, data structure from it from right of a component and inject it in a subcomponents. +[26:13] You can actually run them at build time, as part of your build process, so a static side generator like Docusaurus is able to also use server components at build time. And this can give the ability to have a very flexible data layer. So instead of using static GraphQL queries in pages and things like that, you would be able to actually use Node. js code inside Interleaved with the client side React code and be able to inject the right data at the right place without actually the need for creating a complex GraphQL query and things like that. So somehow From my Docusaurus perspective, what I just have to do is to expose the data structure and let the user pick the right, data structure from it from right of a component and inject it in a subcomponents. -[00:27:08] So, you don't need actually to have something more advanced. You can just use a JavaScript to get the right data at the right place. And you can do it both at the runtime or at build time. +[27:08] So, you don't need actually to have something more advanced. You can just use a JavaScript to get the right data at the right place. And you can do it both at the runtime or at build time. -[00:27:21] **Jacob Paris:** Okay, I, I like that a lot actually. So, so you'd be able to have all of your, um, all of the components in Docusaurus that you're using. +[27:21] **Jacob Paris:** Okay, I, I like that a lot actually. So, so you'd be able to have all of your, um, all of the components in Docusaurus that you're using. -[00:27:30] Each component can have its own GraphQL queries to fetch the data it needs to do. And then you're sort of... Flattening all of that at a compile time, they just fetch the data, it turns into static content. +[27:30] Each component can have its own GraphQL queries to fetch the data it needs to do. And then you're sort of... Flattening all of that at a compile time, they just fetch the data, it turns into static content. -[00:27:42] **Sebastien Lorber:** Actually, the goal is, the goal is to actually not use GraphQL because this is what Gatsby does, and I think the community didn't really like it. it was a bit too complex. So, um, and one of the shortcomings of Docusaurus is that we are, we use a plugin architecture. So we have a blog plugin and a docs plugin, and they don't see each other. And the problem is that, for example, if you want To display the free, the last three blog posts on your docs. It's impossible because the docs doesn't have access to the blog. So, using server components make it possible for you to override, the docs components and from there read the data structure provided by another plugin and somehow this provides a lot of flexibility thanks to being able to do this, some part of the code, running in the Node. js side. +[27:42] **Sebastien Lorber:** Actually, the goal is, the goal is to actually not use GraphQL because this is what Gatsby does, and I think the community didn't really like it. it was a bit too complex. So, um, and one of the shortcomings of Docusaurus is that we are, we use a plugin architecture. So we have a blog plugin and a docs plugin, and they don't see each other. And the problem is that, for example, if you want To display the free, the last three blog posts on your docs. It's impossible because the docs doesn't have access to the blog. So, using server components make it possible for you to override, the docs components and from there read the data structure provided by another plugin and somehow this provides a lot of flexibility thanks to being able to do this, some part of the code, running in the Node. js side. -[00:28:35] **Jacob Paris:** Oh, cool. Cool. Yeah. I like that a lot. That's that is super cool. +[28:35] **Jacob Paris:** Oh, cool. Cool. Yeah. I like that a lot. That's that is super cool. -[00:28:39] **Sebastien Lorber:** Yeah. We'll see if it works out. I don't know yet, but I think it will. +[28:39] **Sebastien Lorber:** Yeah. We'll see if it works out. I don't know yet, but I think it will. -[00:28:45] **Carl Vitullo:** Nice. Interesting. Yeah. The data fetching side and the actual experience of developing and using that is like what I most specifically would like to check out. And I just, I, I don't have an app that I'm working on right now that has those needs, so I, I don't really know how to get that kind of experience that I'm really hoping, hoping to learn. +[28:45] **Carl Vitullo:** Nice. Interesting. Yeah. The data fetching side and the actual experience of developing and using that is like what I most specifically would like to check out. And I just, I, I don't have an app that I'm working on right now that has those needs, so I, I don't really know how to get that kind of experience that I'm really hoping, hoping to learn. -[00:29:04] But yeah, on the, on the subject of foot guns, there's a, there's a quote that I love from the guy who made C++, and it's about C and C++, but I think it applies here a little bit, you know, like these server components are like really powerful new tools, but the quote is like. +[29:04] But yeah, on the, on the subject of foot guns, there's a, there's a quote that I love from the guy who made C++, and it's about C and C++, but I think it applies here a little bit, you know, like these server components are like really powerful new tools, but the quote is like. -[00:29:21] C++ has fewer foot guns, but when you hit one, you blow your whole leg off. And that feels a little bit like where we're at. It's like, you know, we have this powerful new tool and we're still figuring out what, you know, what, what's just like a little injury and what's like a major wound. So, you know, we're gonna, we're gonna, we're gonna, we'll take some time to settle. +[29:21] C++ has fewer foot guns, but when you hit one, you blow your whole leg off. And that feels a little bit like where we're at. It's like, you know, we have this powerful new tool and we're still figuring out what, you know, what, what's just like a little injury and what's like a major wound. So, you know, we're gonna, we're gonna, we're gonna, we'll take some time to settle. -[00:29:42] **Jacob Paris:** Yeah, I think Ryan Florence had a similar quote talking about the server components. He said, you know, this is a very sharp knife, and I like that, but it doesn't have a handle. I would really like a handle. +[29:42] **Jacob Paris:** Yeah, I think Ryan Florence had a similar quote talking about the server components. He said, you know, this is a very sharp knife, and I like that, but it doesn't have a handle. I would really like a handle. -[00:29:52] **Carl Vitullo:** Haha. That's actually, I love that metaphor. That's really good. Because that's, yeah that, I feel like that touches on a lot of the complaints that I've heard about this, server components rollout over the last couple of months. I hadn't seen that quote. That's a really good one. +[29:52] **Carl Vitullo:** Haha. That's actually, I love that metaphor. That's really good. Because that's, yeah that, I feel like that touches on a lot of the complaints that I've heard about this, server components rollout over the last couple of months. I hadn't seen that quote. That's a really good one. -[00:30:05] Nice. Okay. Well, I'll, I'll move us on to our next subject. +[30:05] Nice. Okay. Well, I'll, I'll move us on to our next subject. ## Bun 1.0 @@ -286,228 +286,228 @@ Links used: - [My Thoughts on Bun](https://adventures.nodeland.dev/archive/my-thoughts-on-bun/) - [Announcing Biome](https://biomejs.dev/blog/annoucing-biome) -[00:30:08] **Carl Vitullo:** Um, Bun 1. 0 is officially released. There's so much to talk about there, I think. Bun is so many things, but I don't even know where to start. +[30:08] **Carl Vitullo:** Um, Bun 1. 0 is officially released. There's so much to talk about there, I think. Bun is so many things, but I don't even know where to start. -[00:30:21] it's an all in one toolkit they're describing themselves as. there's a huge focus on performance, which is really interesting. They have, I, my favorite performance stats that they quote is they're 40 percent faster at running like 200 and something unit tests than Jest is at printing its own version number. So not even running tests, just like startup and print version number exit. Bun runs all the tests 40 percent faster than that. Um, so hilarious stat. +[30:21] it's an all in one toolkit they're describing themselves as. there's a huge focus on performance, which is really interesting. They have, I, my favorite performance stats that they quote is they're 40 percent faster at running like 200 and something unit tests than Jest is at printing its own version number. So not even running tests, just like startup and print version number exit. Bun runs all the tests 40 percent faster than that. Um, so hilarious stat. -[00:30:52] They are claiming to replace a huge list of tools. I'm just going to read this off node, npx, dotenv, although now node has gotten rid of dotenv as well, so that's, there's one bullet point off the marketing that the marketing list they also replaced nodemon, the WS package for web sockets, node fetch, cause fetch is built in, TSC cause it's a compiler Babel, TS node, TSX, esbuild, webpack, parcel, rollup. NPM, Yarn, PMPM, Lerna, Jest, Vitest. So like that's, that's quite a claim. +[30:52] They are claiming to replace a huge list of tools. I'm just going to read this off node, npx, dotenv, although now node has gotten rid of dotenv as well, so that's, there's one bullet point off the marketing that the marketing list they also replaced nodemon, the WS package for web sockets, node fetch, cause fetch is built in, TSC cause it's a compiler Babel, TS node, TSX, esbuild, webpack, parcel, rollup. NPM, Yarn, PMPM, Lerna, Jest, Vitest. So like that's, that's quite a claim. -[00:31:29] it reminds me a lot of the original promise and claims of Rome as a project, which is unfortunately well, Rome is no longer a thing, now Biome is a, an open source fork. But, so I'm keeping an eye on that too. But. Bun is claiming to be a drop in replacement for Node, where any existing Node application just works in Bun. +[31:29] it reminds me a lot of the original promise and claims of Rome as a project, which is unfortunately well, Rome is no longer a thing, now Biome is a, an open source fork. But, so I'm keeping an eye on that too. But. Bun is claiming to be a drop in replacement for Node, where any existing Node application just works in Bun. -[00:31:53] I know that they also have introduced a number of non standard behaviors. One of my favorites is that they allow you to read input from the console as an iterable, so you can do like `for (input in console)`, and then within the for loop, like boom, there's your REPL, three lines of code. So like, there's a lot of really interesting things that are phenomenal developer conveniences for some specific use cases, but it's non standard. +[31:53] I know that they also have introduced a number of non standard behaviors. One of my favorites is that they allow you to read input from the console as an iterable, so you can do like `for (input in console)`, and then within the for loop, like boom, there's your REPL, three lines of code. So like, there's a lot of really interesting things that are phenomenal developer conveniences for some specific use cases, but it's non standard. -[00:32:21] So if you write Bun code. You can't then port it, you know, just run it in a different runtime because that's non standard. It's not specified anywhere. So that seems a little fragmenting to me, but also a lot of these, a lot of the non standard improvements seem really cool. So maybe they'll get standardized. Maybe it'll be a CoffeeScript kind of situation again. Yeah, I, let me, let me hand it back to the floor. Anyone else have thoughts on Bun. +[32:21] So if you write Bun code. You can't then port it, you know, just run it in a different runtime because that's non standard. It's not specified anywhere. So that seems a little fragmenting to me, but also a lot of these, a lot of the non standard improvements seem really cool. So maybe they'll get standardized. Maybe it'll be a CoffeeScript kind of situation again. Yeah, I, let me, let me hand it back to the floor. Anyone else have thoughts on Bun. -[00:32:45] **Jacob Paris:** Yeah, yeah, I'm always a little torn on when it comes to non standard features like this. I think it's super cool that Bun can do, that Bun can do all of that. +[32:45] **Jacob Paris:** Yeah, yeah, I'm always a little torn on when it comes to non standard features like this. I think it's super cool that Bun can do, that Bun can do all of that. -[00:32:55] They've also got their ESM and CJS interop, so you can have CommonJS imports, with the require syntax, and ESM imports with the import syntax, all in the same file. And you know that that's fantastic for developers who no longer need to worry about this. But then you look at a larger ecosystem, yeah, any, any libraries built on this they're only going to work with Bun. +[32:55] They've also got their ESM and CJS interop, so you can have CommonJS imports, with the require syntax, and ESM imports with the import syntax, all in the same file. And you know that that's fantastic for developers who no longer need to worry about this. But then you look at a larger ecosystem, yeah, any, any libraries built on this they're only going to work with Bun. -[00:33:17] They won't work on Node and everything else. And that's, that's, it's been a quite a contentious point in the, sort of library ecosystem. Like, it's, you know, it's nice to have these for developers, but is this going to really fragment the ecosystem? Are we going to end up with a bunch of Bun only libraries? +[33:17] They won't work on Node and everything else. And that's, that's, it's been a quite a contentious point in the, sort of library ecosystem. Like, it's, you know, it's nice to have these for developers, but is this going to really fragment the ecosystem? Are we going to end up with a bunch of Bun only libraries? -[00:33:35] **Carl Vitullo:** Yeah, sure. I, I also, I, I read a a, a blog post from one of the node core team members. Just his thoughts on Bun. I thought it was really interesting. This was just sort of a, it was a very grounded take in comparing node versus Bun, and like it has, why is Bun faster than Node.js? And the first item on it is Node. js has no budget and a tiny team maintains NPM. +[33:35] **Carl Vitullo:** Yeah, sure. I, I also, I, I read a a, a blog post from one of the node core team members. Just his thoughts on Bun. I thought it was really interesting. This was just sort of a, it was a very grounded take in comparing node versus Bun, and like it has, why is Bun faster than Node.js? And the first item on it is Node. js has no budget and a tiny team maintains NPM. -[00:33:59] So it's like, they're just talking about very much about the practicalities, not just the code reasons. And yeah, I mean, like, so Buns, Bun 1. 0 announces it as like a drop in replacement for Node. js. This you know, other blog post from a core, a Node core member says Bun does not currently support Fastify. +[33:59] So it's like, they're just talking about very much about the practicalities, not just the code reasons. And yeah, I mean, like, so Buns, Bun 1. 0 announces it as like a drop in replacement for Node. js. This you know, other blog post from a core, a Node core member says Bun does not currently support Fastify. -[00:34:20] Which is a reasonably popular competitor to express. So like, yeah, I mean, if you're not supporting like one of the top five HTTP servers, then like advertising it as a drop in replacement seems maybe a little bit overstating it. so I don't know, there's still, still a little bit of, a little bit more improvements that I'm going to be keeping an eye on. +[34:20] Which is a reasonably popular competitor to express. So like, yeah, I mean, if you're not supporting like one of the top five HTTP servers, then like advertising it as a drop in replacement seems maybe a little bit overstating it. so I don't know, there's still, still a little bit of, a little bit more improvements that I'm going to be keeping an eye on. -[00:34:40] But honestly, one of the most exciting things for me about Bun is, or rather, something about Bund that fixes a problem I've heard about for so many years now at this point is Node. js slow startup time. You know, like exactly, I mentioned before that it talks about running tests faster than Jest prints its own version. +[34:40] But honestly, one of the most exciting things for me about Bun is, or rather, something about Bund that fixes a problem I've heard about for so many years now at this point is Node. js slow startup time. You know, like exactly, I mentioned before that it talks about running tests faster than Jest prints its own version. -[00:35:01] A lot of that is, it's runtime overhead. You know, it's like the, because of how modules are parsed and, you know, executed. there's a very long startup time. So seeing that improve substantially, I think is going to be, you know, maybe that's not going to be like world changing, but I think it will be a pretty significant difference for people who are authoring CLI tools with JavaScript. +[35:01] A lot of that is, it's runtime overhead. You know, it's like the, because of how modules are parsed and, you know, executed. there's a very long startup time. So seeing that improve substantially, I think is going to be, you know, maybe that's not going to be like world changing, but I think it will be a pretty significant difference for people who are authoring CLI tools with JavaScript. -[00:35:25] So, you know, hopefully, I'm excited to see what happens with that. Now that somebody has thrown on the gauntlet of like, this is how fast it can be. I'm interested to see where it goes. +[35:25] So, you know, hopefully, I'm excited to see what happens with that. Now that somebody has thrown on the gauntlet of like, this is how fast it can be. I'm interested to see where it goes. -[00:35:34] **Jacob Paris:** Yeah, yeah, I'm super excited about that as well, and especially since, um, you know, there's some comments in here saying, you know, Node isn't going away, Node isn't going away everywhere, maybe, maybe that's just the key to this, Node isn't going away, library authors are still going to have to support Node and maybe that's why the ecosystem won't fragment, developers can move on to Bun and Node Library authors are still going to have to produce compatible code in either ESM or CJS, just because some developers. +[35:34] **Jacob Paris:** Yeah, yeah, I'm super excited about that as well, and especially since, um, you know, there's some comments in here saying, you know, Node isn't going away, Node isn't going away everywhere, maybe, maybe that's just the key to this, Node isn't going away, library authors are still going to have to support Node and maybe that's why the ecosystem won't fragment, developers can move on to Bun and Node Library authors are still going to have to produce compatible code in either ESM or CJS, just because some developers. -[00:36:05] The big companies and so on are still going to be using node for at least the foreseeable future. Maybe that's the best of both worlds. +[36:05] The big companies and so on are still going to be using node for at least the foreseeable future. Maybe that's the best of both worlds. -[00:36:13] **Sebastien Lorber:** And I think, if you want to try it now, maybe the good idea is to start by, using it in consumer code. So not, in, libraries, but just, for example, if you want you locally to run tests. Instead of using Node. js plus Jest, you can, you can try Bun, for example. There's not a lot of risk doing so. Eventually, you can ship it to your GitHub Actions or something like that. I don't know if it runs in, in GitHub Actions, but I assume it does. But yeah, yeah, maybe shipping it to production is a bit risky today, but, for example, running, a Bun install or something like that is not super risky. +[36:13] **Sebastien Lorber:** And I think, if you want to try it now, maybe the good idea is to start by, using it in consumer code. So not, in, libraries, but just, for example, if you want you locally to run tests. Instead of using Node. js plus Jest, you can, you can try Bun, for example. There's not a lot of risk doing so. Eventually, you can ship it to your GitHub Actions or something like that. I don't know if it runs in, in GitHub Actions, but I assume it does. But yeah, yeah, maybe shipping it to production is a bit risky today, but, for example, running, a Bun install or something like that is not super risky. -[00:36:52] So maybe we should start by doing this and see how stable it is. And yeah, I don't remember what I wanted to say. So. +[36:52] So maybe we should start by doing this and see how stable it is. And yeah, I don't remember what I wanted to say. So. -[00:37:00] **Carl Vitullo:** That's okay. Sometimes we trail off. +[37:00] **Carl Vitullo:** That's okay. Sometimes we trail off. -[00:37:03] **Jacob Paris:** Maybe part of the issue here when it comes to, you know, Can we use Bun in production is just, since Bun is so many different things what does it actually mean to use it in production? +[37:03] **Jacob Paris:** Maybe part of the issue here when it comes to, you know, Can we use Bun in production is just, since Bun is so many different things what does it actually mean to use it in production? -[00:37:13] I mean, yeah, you can use it for your tests, you can use it as a package manager, you can use it as a, as a host to actually run your app as a server. Um, maybe that one is the most risky one that we shouldn't be doing, but, you know, if, if it's just installs by so much, um, maybe, maybe that's okay. Maybe that can be the entry point here where we, where we start using this. +[37:13] I mean, yeah, you can use it for your tests, you can use it as a package manager, you can use it as a, as a host to actually run your app as a server. Um, maybe that one is the most risky one that we shouldn't be doing, but, you know, if, if it's just installs by so much, um, maybe, maybe that's okay. Maybe that can be the entry point here where we, where we start using this. -[00:37:35] **Sebastien Lorber:** The problem is that there is not a good Windows support, so if you start using Bun to do this kind of things, the thing is if you have someone on Windows in your team, then it becomes a problem for them because, you know, if you use Bun and it works for you, and they use YARN and it doesn't work because the log file is not the same, then this becomes somehow a big mess. +[37:35] **Sebastien Lorber:** The problem is that there is not a good Windows support, so if you start using Bun to do this kind of things, the thing is if you have someone on Windows in your team, then it becomes a problem for them because, you know, if you use Bun and it works for you, and they use YARN and it doesn't work because the log file is not the same, then this becomes somehow a big mess. -[00:38:00] ' cause you don't have the same dependencies. So, I don't know, on, on my side. I think for example, as Docusaurus is a static side generator, I'm not afraid, for example, to recommend to use Bun to eventually, build the site with, with Bun. Because once it's built in the CI you just have static files. So it's not really risky once you have succeeded, building the site. But, yeah, for several run time, I, I would wait a bit before deploying that to, to any cloud. +[38:00] ' cause you don't have the same dependencies. So, I don't know, on, on my side. I think for example, as Docusaurus is a static side generator, I'm not afraid, for example, to recommend to use Bun to eventually, build the site with, with Bun. Because once it's built in the CI you just have static files. So it's not really risky once you have succeeded, building the site. But, yeah, for several run time, I, I would wait a bit before deploying that to, to any cloud. -[00:38:30] **Carl Vitullo:** Yeah, yeah. One other thing I wanted to bring into the conversation is Bun is a VC funded company, which I was just talking about this last night a little bit with some other React ecosystem buddies and it was brought up, you know, like the runtime companies have not historically done very well. You know, you, you, you think about who maintains JavaScript runtimes. And it's like, you know, five years ago, that was Google, Apple and Microsoft. And now it's just Google and Apple. So trying to start a brand new startup on the basis of, here's a runtime, it's a challenge. +[38:30] **Carl Vitullo:** Yeah, yeah. One other thing I wanted to bring into the conversation is Bun is a VC funded company, which I was just talking about this last night a little bit with some other React ecosystem buddies and it was brought up, you know, like the runtime companies have not historically done very well. You know, you, you, you think about who maintains JavaScript runtimes. And it's like, you know, five years ago, that was Google, Apple and Microsoft. And now it's just Google and Apple. So trying to start a brand new startup on the basis of, here's a runtime, it's a challenge. -[00:39:09] as far as I understand, Bunn is coming at it the same way Vercel is as a hosting platform. They're saying, here's our cloud offering, use it. But I, I'm not sure that that is a strong enough differentiator because like, what's it's an open source project. Like what's the stop every other hosting provider from using that, you know, just offering it as a runtime. +[39:09] as far as I understand, Bunn is coming at it the same way Vercel is as a hosting platform. They're saying, here's our cloud offering, use it. But I, I'm not sure that that is a strong enough differentiator because like, what's it's an open source project. Like what's the stop every other hosting provider from using that, you know, just offering it as a runtime. -[00:39:29] So I don't know. I don't know exactly what that means. Um, I think that Bun as a runtime is really interesting. I'm not sure that Bun as a cloud platform distinct from Vercel, AWS, GCP, all of those. But yeah, we'll see. We'll see how that all shakes out. if nothing else, we've got a really cool project putting pressure on everyone to improve. +[39:29] So I don't know. I don't know exactly what that means. Um, I think that Bun as a runtime is really interesting. I'm not sure that Bun as a cloud platform distinct from Vercel, AWS, GCP, all of those. But yeah, we'll see. We'll see how that all shakes out. if nothing else, we've got a really cool project putting pressure on everyone to improve. -[00:39:55] **Jacob Paris:** Yeah, it's, it's sort of a catch 22 situation here. Like either, either all the web hosts as they exist right now, they start to support Bun, and then you can use Bun in all your applications everywhere and Bun goes popular, and if that happens, now there's all this competition for Bun as a hosting platform or, or it just doesn't happen. +[39:55] **Jacob Paris:** Yeah, it's, it's sort of a catch 22 situation here. Like either, either all the web hosts as they exist right now, they start to support Bun, and then you can use Bun in all your applications everywhere and Bun goes popular, and if that happens, now there's all this competition for Bun as a hosting platform or, or it just doesn't happen. -[00:40:15] You, your Bun app can't actually run anywhere, and then not enough people are using Bun to justify having it as a, as its own hosting platform. So, I'm a little, little iffy on the business model there, but I, I often, in these situations, I just assume that the people who have, Given, you know, sort of devoted their livelihoods to building these companies no more than I do after reading a bunch of tweets and articles about it. +[40:15] You, your Bun app can't actually run anywhere, and then not enough people are using Bun to justify having it as a, as its own hosting platform. So, I'm a little, little iffy on the business model there, but I, I often, in these situations, I just assume that the people who have, Given, you know, sort of devoted their livelihoods to building these companies no more than I do after reading a bunch of tweets and articles about it. -[00:40:41] **Carl Vitullo:** At the very least they've thought about it a lot more than I have. So, well, interested to see what they come up with. And, man, what an oversight, I meant to talk about Deno as well I don't want to, we're trying to wrap it up so I'm not going to bring it up too much, but between like Bun, Deno, Biome, there's a lot of really interesting like all-in-one type, runtimes and packages and all that kind of stuff, really interesting. +[40:41] **Carl Vitullo:** At the very least they've thought about it a lot more than I have. So, well, interested to see what they come up with. And, man, what an oversight, I meant to talk about Deno as well I don't want to, we're trying to wrap it up so I'm not going to bring it up too much, but between like Bun, Deno, Biome, there's a lot of really interesting like all-in-one type, runtimes and packages and all that kind of stuff, really interesting. -[00:41:07] But yeah Jacob, you want to take us on to our, our next link? +[41:07] But yeah Jacob, you want to take us on to our, our next link? ## Next.js Forms and Mututations - [Next.js App Router - Forms and Mutations docs](https://nextjs.org/docs/app/building-your-application/data-fetching/forms-and-mutations) -[00:41:10] **Jacob Paris:** Yeah, yeah. So the next one for me is, um, sort of the announcement of the next, you know, the next stage of the next JS app router with their forms and mutations. So they just pushed out all the new, all the new docs on that and, Lee put out this excellent video running through you know, sort of the concepts of how these, how these server actions actually work. +[41:10] **Jacob Paris:** Yeah, yeah. So the next one for me is, um, sort of the announcement of the next, you know, the next stage of the next JS app router with their forms and mutations. So they just pushed out all the new, all the new docs on that and, Lee put out this excellent video running through you know, sort of the concepts of how these, how these server actions actually work. -[00:41:33] Which has been again, similar to Josh's article from before. I think it answers a lot of questions that people had. So, yeah, it starts off covering you know, the, the traditional way that we're submitting forms in a React app. Where you, you, you have a form, and then in your on submit callback, you prevent default to stop it from automatically reloading the page. +[41:33] Which has been again, similar to Josh's article from before. I think it answers a lot of questions that people had. So, yeah, it starts off covering you know, the, the traditional way that we're submitting forms in a React app. Where you, you, you have a form, and then in your on submit callback, you prevent default to stop it from automatically reloading the page. -[00:41:55] You send your data to an API route, and then whatever data comes back, you have to deal with yourself in that callback. And, you know, whether that's writing it to state or performing some other actions, and, you know, for a long time, if you're working with a separate backend server, that would mean going to another repository. +[41:55] You send your data to an API route, and then whatever data comes back, you have to deal with yourself in that callback. And, you know, whether that's writing it to state or performing some other actions, and, you know, for a long time, if you're working with a separate backend server, that would mean going to another repository. -[00:42:13] You you need to build a new endpoint there. You, if you're dealing with, say, TypeScript at all, you don't have to manage that in two separate repositories, and then you end up with two separate repositories. Pull requests and, those have to be merged and deployed all at the same time, which makes testing a nightmare. +[42:13] You you need to build a new endpoint there. You, if you're dealing with, say, TypeScript at all, you don't have to manage that in two separate repositories, and then you end up with two separate repositories. Pull requests and, those have to be merged and deployed all at the same time, which makes testing a nightmare. -[00:42:30] You know, I'm sort of glad we moved away that with Next.Js. You just define the API routes in your react app, in another file and the on submit callback use fetch to send data to that. So that, that's kind of the state of where everything was. was right now. +[42:30] You know, I'm sort of glad we moved away that with Next.Js. You just define the API routes in your react app, in another file and the on submit callback use fetch to send data to that. So that, that's kind of the state of where everything was. was right now. -[00:42:45] I, I do think Remix took that a little step further. So rather than having the API route in a separate file, it then, it moves into the same file. It's just an action in the same file. And rather than having to write this whole on submit thing Remix's form components will do that, all of that for you, which I think is, you know, one step up from where, where Next was. +[42:45] I, I do think Remix took that a little step further. So rather than having the API route in a separate file, it then, it moves into the same file. It's just an action in the same file. And rather than having to write this whole on submit thing Remix's form components will do that, all of that for you, which I think is, you know, one step up from where, where Next was. -[00:43:03] But now, like Next has taken a huge step forward with these server actions. We have this whole progression, I guess, that the, that the ecosystem has gone through where it's less and less code every single time so rather than having, you know, two repositories, now we're down to one, and then now it's all into the same file, and we're, we're sort of co locating all the code together, so you get this really concentrated sort of, sort of concerns here, and the React server actions are the next step in this process. +[43:03] But now, like Next has taken a huge step forward with these server actions. We have this whole progression, I guess, that the, that the ecosystem has gone through where it's less and less code every single time so rather than having, you know, two repositories, now we're down to one, and then now it's all into the same file, and we're, we're sort of co locating all the code together, so you get this really concentrated sort of, sort of concerns here, and the React server actions are the next step in this process. -[00:43:33] Rather than having all your data fetching being co located to a particular route is that now we can move them into a single component for the form element that has the traditionally would have an action that links to a particular endpoint, you can just pass a function to it now with the next server actions and Next will do all the work of triggering that like a remote procedure call returning the data to a form action and form data hooks to deal with the, to deal with the results of it. +[43:33] Rather than having all your data fetching being co located to a particular route is that now we can move them into a single component for the form element that has the traditionally would have an action that links to a particular endpoint, you can just pass a function to it now with the next server actions and Next will do all the work of triggering that like a remote procedure call returning the data to a form action and form data hooks to deal with the, to deal with the results of it. -[00:44:02] It's, it's really, it's the other half of the client components that I was talking about earlier for, for data fetching. now finally for the first time in next existence, they have a proper data mutation story. They're acknowledging that they're, you know, in an application you're going to need to, you know, modify data on the database, you're going to need to save things and deal with the results of that. +[44:02] It's, it's really, it's the other half of the client components that I was talking about earlier for, for data fetching. now finally for the first time in next existence, they have a proper data mutation story. They're acknowledging that they're, you know, in an application you're going to need to, you know, modify data on the database, you're going to need to save things and deal with the results of that. -[00:44:26] So rather than using something like, say, React Query or tRPC, which are sort of, you know, historical solutions there, is that these server actions are really, really good. Yeah, so you declare the functions on your server, you mark them as "use server", and... the browser will just call them automatically. +[44:26] So rather than using something like, say, React Query or tRPC, which are sort of, you know, historical solutions there, is that these server actions are really, really good. Yeah, so you declare the functions on your server, you mark them as "use server", and... the browser will just call them automatically. -[00:44:43] They still, they automatically degrade to browser form submissions if you're trying to submit them without JavaScript being enabled. so you get the full progressive enhancement. Yeah, I'm, I'm, I'm a big fan of this. It's it's, it's been super, super cool. +[44:43] They still, they automatically degrade to browser form submissions if you're trying to submit them without JavaScript being enabled. so you get the full progressive enhancement. Yeah, I'm, I'm, I'm a big fan of this. It's it's, it's been super, super cool. -[00:44:58] **Carl Vitullo:** Definitely reminds me a lot of how Remix implemented the same thing. Although I guess Remix does it as an export from the file, whereas this is just a function within the component or as a separate file, but yeah, one thing that's catching my eye in the, in these docs, the, I do not like the use server, use client directives. +[44:58] **Carl Vitullo:** Definitely reminds me a lot of how Remix implemented the same thing. Although I guess Remix does it as an export from the file, whereas this is just a function within the component or as a separate file, but yeah, one thing that's catching my eye in the, in these docs, the, I do not like the use server, use client directives. -[00:45:20] I know that like the idea of introducing more directives, you know, so like directives came from the ES6 transition, use strict. So that's what they're basing these off, you know, like you opt into a new mode for the runtime. And, you know, I, I followed like TC39 JavaScript standard discussions loosely through my career. +[45:20] I know that like the idea of introducing more directives, you know, so like directives came from the ES6 transition, use strict. So that's what they're basing these off, you know, like you opt into a new mode for the runtime. And, you know, I, I followed like TC39 JavaScript standard discussions loosely through my career. -[00:45:43] And I've seen a fair number of new directives suggested, brought up by people saying like, Hey, like, it would be really great if we could have this new mode for things to happen in and the message that has been so consistently said from the people who maintain the spec and said, like, "no, we, we are never doing another directive. That was a one time thing because we needed to break, you know, we needed to have a seam where we introduce new behavior and it was not possible to do in any other way without introducing breaking changes." +[45:43] And I've seen a fair number of new directives suggested, brought up by people saying like, Hey, like, it would be really great if we could have this new mode for things to happen in and the message that has been so consistently said from the people who maintain the spec and said, like, "no, we, we are never doing another directive. That was a one time thing because we needed to break, you know, we needed to have a seam where we introduce new behavior and it was not possible to do in any other way without introducing breaking changes." -[00:46:14] And so to see it go from one ever to, oh, here's two new ones. I don't, I don't, I don't like it. I don't know. It seems like a really big break from the norms that have been set by the people who introduced that pattern. and, and, and. here it is not the first, you know, statement in a file, but the first statement in a function. So it's a new behavior on something that had been, you know, introduced 10 years ago as a, you know, a necessary evil. +[46:14] And so to see it go from one ever to, oh, here's two new ones. I don't, I don't, I don't like it. I don't know. It seems like a really big break from the norms that have been set by the people who introduced that pattern. and, and, and. here it is not the first, you know, statement in a file, but the first statement in a function. So it's a new behavior on something that had been, you know, introduced 10 years ago as a, you know, a necessary evil. -[00:46:46] And I know it gets stripped out. I know that it's just kind of to inform the compiler or whatever, but I don't know. Feels weird to me. I don't like it as much as the way Remix just does an export. That seems very simple to me and I like it. I guess that's what I'm saying. +[46:46] And I know it gets stripped out. I know that it's just kind of to inform the compiler or whatever, but I don't know. Feels weird to me. I don't like it as much as the way Remix just does an export. That seems very simple to me and I like it. I guess that's what I'm saying. -[00:47:02] **Jacob Paris:** Yeah, yeah. We certainly need some way of communicating to the, um, you know, to the runtime, what sort of mode it should be in while it's processing this function. +[47:02] **Jacob Paris:** Yeah, yeah. We certainly need some way of communicating to the, um, you know, to the runtime, what sort of mode it should be in while it's processing this function. -[00:47:11] Remix handles that with just, just the naming convention. So there's certain functions that behave differently. You got your actions, your loaders, meta, headers, functions, and they're all just exported from the route. Whereas with Next, you're now using these directives to mark different behavior in, in the functions. +[47:11] Remix handles that with just, just the naming convention. So there's certain functions that behave differently. You got your actions, your loaders, meta, headers, functions, and they're all just exported from the route. Whereas with Next, you're now using these directives to mark different behavior in, in the functions. -[00:47:29] I don't know what the better way to do that would be. A lot of that kind of is up, above my head. one, one that I don't like is that since you're declaring these... You know, if you declare these server actions in line, anything you close over in there. So it, it looks like if it were a normal function, that you can access variables from the scope above it. +[47:29] I don't know what the better way to do that would be. A lot of that kind of is up, above my head. one, one that I don't like is that since you're declaring these... You know, if you declare these server actions in line, anything you close over in there. So it, it looks like if it were a normal function, that you can access variables from the scope above it. -[00:47:49] Um, so you define a variable and then you include it. And then now that's going to be included. Um, like it's, it's really confusing how that happens with the server bundle. If you have a client component in there, you could very easily end up introducing a bunch of, say private keys. If it is So you have a, like an API key in the upper scope and you're referencing something from, from that class or object within your action, because it looks like you can, that can really easily end up in the, in, in the client. yeah, it's, it's, it's, it's another foot gun where we're having more and more foot guns to worry about with all of this. +[47:49] Um, so you define a variable and then you include it. And then now that's going to be included. Um, like it's, it's really confusing how that happens with the server bundle. If you have a client component in there, you could very easily end up introducing a bunch of, say private keys. If it is So you have a, like an API key in the upper scope and you're referencing something from, from that class or object within your action, because it looks like you can, that can really easily end up in the, in, in the client. yeah, it's, it's, it's, it's another foot gun where we're having more and more foot guns to worry about with all of this. -[00:48:25] **Carl Vitullo:** So Sebastian, you want to take us off for our next link? +[48:25] **Carl Vitullo:** So Sebastian, you want to take us off for our next link? -[00:48:28] **Sebastien Lorber:** Actually, it's only my second link, I think. And yeah, it's a big one, so I should have started by, by this one, I think. Haha. +[48:28] **Sebastien Lorber:** Actually, it's only my second link, I think. And yeah, it's a big one, so I should have started by, by this one, I think. Haha. -[00:48:37] **Carl Vitullo:** A lot of news this month. +[48:37] **Carl Vitullo:** A lot of news this month. -[00:48:38] **Sebastien Lorber:** Yeah, exactly. +[48:38] **Sebastien Lorber:** Yeah, exactly. ## Expo API Routes - [Expo Router RFC - API Routes](https://blog.expo.dev/rfc-api-routes-cce5a3b9f25d) -[00:48:40] **Sebastien Lorber:** Even this summer was quite busy, I think. So it's about, Expo API routes, RFC. So I think it's very interesting because, I think it's the first time that Expo is, going, on the server side. So this is, somehow not a very complicated feature. It's just about deploying API routes creating a convention to deploy API routes to a server, or creating a server runtime that you get, can deploy yourself or eventually on, on hosts like Vercel, Netlify, and maybe soon, the Expo APIs. +[48:40] **Sebastien Lorber:** Even this summer was quite busy, I think. So it's about, Expo API routes, RFC. So I think it's very interesting because, I think it's the first time that Expo is, going, on the server side. So this is, somehow not a very complicated feature. It's just about deploying API routes creating a convention to deploy API routes to a server, or creating a server runtime that you get, can deploy yourself or eventually on, on hosts like Vercel, Netlify, and maybe soon, the Expo APIs. -[00:49:16] But what is very interesting, I think is because, you know, it's the very first step toward becoming a full stack framework where you can actually have a universal support for, the web and mobile using server side rendering on the web, so no compromise compared to the other frameworks. And also to support React Server Components in a cross platform way. +[49:16] But what is very interesting, I think is because, you know, it's the very first step toward becoming a full stack framework where you can actually have a universal support for, the web and mobile using server side rendering on the web, so no compromise compared to the other frameworks. And also to support React Server Components in a cross platform way. -[00:49:41] So you will be able to use the exact same code to render UI on mobile and on the web. And somehow, I think this is very exciting because, you know, currently if you want to build a web application, you don't think you will use Expo because the support of Expo web works, but it's not good enough to be able to bet on Expo just to ship a mobile app. +[49:41] So you will be able to use the exact same code to render UI on mobile and on the web. And somehow, I think this is very exciting because, you know, currently if you want to build a web application, you don't think you will use Expo because the support of Expo web works, but it's not good enough to be able to bet on Expo just to ship a mobile app. -[00:50:05] Maybe in the future, if they implement this well, you could even. Decide to use Expo, even if you don't target mobile, I think. So this, this could be very exciting to to have Expo being, becoming a real competitor to other frameworks on the web. +[50:05] Maybe in the future, if they implement this well, you could even. Decide to use Expo, even if you don't target mobile, I think. So this, this could be very exciting to to have Expo being, becoming a real competitor to other frameworks on the web. -[00:50:23] **Carl Vitullo:** Yeah. Oh, that's interesting, this builds so well off what we were just talking about with the server actions. So +[50:23] **Carl Vitullo:** Yeah. Oh, that's interesting, this builds so well off what we were just talking about with the server actions. So -[00:50:28] that works out really great, great flow into a great transition. Yeah, oh, that's really interesting. So I know that Expo has been broadly moving towards not being as tightly coupled to React Native, but I didn't realize that they were. Even interested in doing some kind of server route like this. +[50:28] that works out really great, great flow into a great transition. Yeah, oh, that's really interesting. So I know that Expo has been broadly moving towards not being as tightly coupled to React Native, but I didn't realize that they were. Even interested in doing some kind of server route like this. -[00:50:50] This is, yeah, this is really cool. This definitely unlocks a lot of possibilities. +[50:50] This is, yeah, this is really cool. This definitely unlocks a lot of possibilities. -[00:50:55] **Jacob Paris:** Yeah, I'm, I, I'm super like, I'm all for it. Any time where we can take the separate backends and frontends and move them into a single repository so that they can share you know, share types and you can develop, you know, push code a single, a single pull request to implement entire features all at once. +[50:55] **Jacob Paris:** Yeah, I'm, I, I'm super like, I'm all for it. Any time where we can take the separate backends and frontends and move them into a single repository so that they can share you know, share types and you can develop, you know, push code a single, a single pull request to implement entire features all at once. -[00:51:13] I, I'm all for that. So. It's, it seems here that Expo is now kind of going the way of Next or Remix, where you, where you can kind of, it just becomes a full stack framework all on its own. And as far as I know, up until now, that, that just wasn't possible in the React Native ecosystem. You always needed a separate backend server somewhere in order to handle that. +[51:13] I, I'm all for that. So. It's, it seems here that Expo is now kind of going the way of Next or Remix, where you, where you can kind of, it just becomes a full stack framework all on its own. And as far as I know, up until now, that, that just wasn't possible in the React Native ecosystem. You always needed a separate backend server somewhere in order to handle that. -[00:51:33] **Carl Vitullo:** Yeah, I'm definitely a little unsure because like Next and Remix, I understand, you know, you put it on a server and boom, there's your server. I don't really know what the deployment story for Expo is going to look like for these server actions. I'm scanning the blog post here, trying to find that, not seeing it immediately. +[51:33] **Carl Vitullo:** Yeah, I'm definitely a little unsure because like Next and Remix, I understand, you know, you put it on a server and boom, there's your server. I don't really know what the deployment story for Expo is going to look like for these server actions. I'm scanning the blog post here, trying to find that, not seeing it immediately. -[00:51:55] **Sebastien Lorber:** It's not server actions, they are not really, shipping, something advanced. So for now, it's just API routes like you have in Next. js too. So you just create an API endpoint that you can call on mobile. And I think the, the idea that we, they want to implement is first to enable you to self host the backend. +[51:55] **Sebastien Lorber:** It's not server actions, they are not really, shipping, something advanced. So for now, it's just API routes like you have in Next. js too. So you just create an API endpoint that you can call on mobile. And I think the, the idea that we, they want to implement is first to enable you to self host the backend. -[00:52:16] And then eventually the idea is that you just push to Expo cloud and then have the thing being served from their cloud like like if it was their server or Netlify so and you know for example they could be systems like we don't deploy we don't push the mobile update until the backend is deployed or things like that you have to synchronize things because uh mobile is long lived session, so you have to make sure that, the, the API that you deploy is compatible with the mobile side. And I think Explore has an opportunity to build something, that handles that well. +[52:16] And then eventually the idea is that you just push to Expo cloud and then have the thing being served from their cloud like like if it was their server or Netlify so and you know for example they could be systems like we don't deploy we don't push the mobile update until the backend is deployed or things like that you have to synchronize things because uh mobile is long lived session, so you have to make sure that, the, the API that you deploy is compatible with the mobile side. And I think Explore has an opportunity to build something, that handles that well. -[00:52:54] Vercel actually, built something similar, that they called Skew Protections. So, somehow if you, you know, if you have a trading application and you deploy a new version, The, the traders that use the, the former application still they don't want to refresh the browser to, to be able to keep using the app. +[52:54] Vercel actually, built something similar, that they called Skew Protections. So, somehow if you, you know, if you have a trading application and you deploy a new version, The, the traders that use the, the former application still they don't want to refresh the browser to, to be able to keep using the app. -[00:53:14] They want to just keep their long running session and keep interacting with the API. So it's important that the API doesn't break when you deploy new software and, for mobile, it's even more important. And I think, Expo Cloud has a card to play there. +[53:14] They want to just keep their long running session and keep interacting with the API. So it's important that the API doesn't break when you deploy new software and, for mobile, it's even more important. And I think, Expo Cloud has a card to play there. -[00:53:27] **Carl Vitullo:** Yeah, interesting. Yeah, my first thought was like, Oh, another cloud provider, but that's actually interesting because there are genuinely different constraints for mobile versus web, because that's honestly one of the biggest differences I've noticed in my career between it is the experience of shipping new changes. +[53:27] **Carl Vitullo:** Yeah, interesting. Yeah, my first thought was like, Oh, another cloud provider, but that's actually interesting because there are genuinely different constraints for mobile versus web, because that's honestly one of the biggest differences I've noticed in my career between it is the experience of shipping new changes. -[00:53:47] Like on a website, you know, I, I push out, I do CICD, boom, done, it's live unless there's a cache, unless I have set up a cache with, you know, a TTL that's long enough to introduce problems for that. I know that as soon as I hit that deploy button, my code is running for everyone. Maybe the service I'm working with has like a red green deployment. And so there's a gradual rollout where they're both going to be happening. +[53:47] Like on a website, you know, I, I push out, I do CICD, boom, done, it's live unless there's a cache, unless I have set up a cache with, you know, a TTL that's long enough to introduce problems for that. I know that as soon as I hit that deploy button, my code is running for everyone. Maybe the service I'm working with has like a red green deployment. And so there's a gradual rollout where they're both going to be happening. -[00:54:12] But like at the end of that, the code that everyone is hitting is. The code that was just deployed, whereas on mobile, you don't control that at all. People update the app whenever they want to, and maybe they don't for two years. +[54:12] But like at the end of that, the code that everyone is hitting is. The code that was just deployed, whereas on mobile, you don't control that at all. People update the app whenever they want to, and maybe they don't for two years. -[00:54:24] So that actually is really interesting. If I could co locate app specific API calls, have them deployed through some kind of managed service, and then. Had that cloud provider do the version management for me to make sure that they, you know, APIs from this version of the app are served by a compatible route handler. +[54:24] So that actually is really interesting. If I could co locate app specific API calls, have them deployed through some kind of managed service, and then. Had that cloud provider do the version management for me to make sure that they, you know, APIs from this version of the app are served by a compatible route handler. -[00:54:50] Like, that's actually really interesting. That's pretty slick. That's pretty cool. So I think that they're introducing a new package, Expo Server, which you then need to deploy yourself. It looks like right now. I think that's what you were just saying. So, yeah, that's really interesting though. +[54:50] Like, that's actually really interesting. That's pretty slick. That's pretty cool. So I think that they're introducing a new package, Expo Server, which you then need to deploy yourself. It looks like right now. I think that's what you were just saying. So, yeah, that's really interesting though. -[00:55:03] Okay, should we move on to lightning round? All right. +[55:03] Okay, should we move on to lightning round? All right. ## ⚡️ React Native on Apple Vision Pro - [React-Native running natively on Apple Vision Pro simulator demo](https://twitter.com/o_kwasniewski/status/1701626162521190688) -[00:55:06] **Carl Vitullo:** I guess first lightning round, I'll pull up, I'll just keep the React Native theme going React Native running natively on Apple Vision Pro simulator demo. That's cool. I don't have much else to say about that, but you know, AR VR with React in a 3d environment is like, that's pretty cool. +[55:06] **Carl Vitullo:** I guess first lightning round, I'll pull up, I'll just keep the React Native theme going React Native running natively on Apple Vision Pro simulator demo. That's cool. I don't have much else to say about that, but you know, AR VR with React in a 3d environment is like, that's pretty cool. -[00:55:25] I like it. Jacob, you got a lightning round you like? +[55:25] I like it. Jacob, you got a lightning round you like? ## ⚡️ Are Big Projects Ditching TypeScript? (no) - [Are Big Projects Ditching TypeScript?](https://www.totaltypescript.com/are-big-projects-ditching-typescript) -[00:55:28] **Jacob Paris:** Yeah, yeah, we got this once. "Are Big Projects Ditching TypeScript?" was, written up by Matt Pocock after DHH did his little let's remove all the types from Turbo thing. the consensus is no, most of them aren't. Svelte has switched to JSDoc, um, a few others in that line but no, TypeScript is here to stay. +[55:28] **Jacob Paris:** Yeah, yeah, we got this once. "Are Big Projects Ditching TypeScript?" was, written up by Matt Pocock after DHH did his little let's remove all the types from Turbo thing. the consensus is no, most of them aren't. Svelte has switched to JSDoc, um, a few others in that line but no, TypeScript is here to stay. -[00:55:47] **Carl Vitullo:** Yeah, ugh, I'm glad to see that was the outcome. DHH has, I've soured on him a little bit. Sorry, this is lightning round. We're not doing a full discussion. +[55:47] **Carl Vitullo:** Yeah, ugh, I'm glad to see that was the outcome. DHH has, I've soured on him a little bit. Sorry, this is lightning round. We're not doing a full discussion. ## ⚡️ Rust Server Components - [Rust Server Components](https://anto.pt/articles/rust-server-components) -[00:55:56] **Carl Vitullo:** Oh yeah, I saw an interesting Rust server components post. Which is just interesting. The crossover between web and Rust is fascinating to me a little bit. And so now seeing somebody trying to do Server components, a like very fraught and complicated technology in rust. Interesting. +[55:56] **Carl Vitullo:** Oh yeah, I saw an interesting Rust server components post. Which is just interesting. The crossover between web and Rust is fascinating to me a little bit. And so now seeing somebody trying to do Server components, a like very fraught and complicated technology in rust. Interesting. -[00:56:17] **Sebastien Lorber:** I wanted to mention something about the post rust server components. So this is more about using a rust backend with HTMX. +[56:17] **Sebastien Lorber:** I wanted to mention something about the post rust server components. So this is more about using a rust backend with HTMX. -[00:56:26] But there was recently an , an article from someone from the ReasonML community that I found super interesting because, they implemented React server side rendering in OCaml, in ReasonML, I think, or OCaml. +[56:26] But there was recently an , an article from someone from the ReasonML community that I found super interesting because, they implemented React server side rendering in OCaml, in ReasonML, I think, or OCaml. -[00:56:41] This led to very improved, performance in the benchmark. And I think now, the guy working on this is is now implementing server components in OCaml. So somehow, instead of running JavaScript in the... In the server runtime, they're running, a native language and, apparently it's really much faster. +[56:41] This led to very improved, performance in the benchmark. And I think now, the guy working on this is is now implementing server components in OCaml. So somehow, instead of running JavaScript in the... In the server runtime, they're running, a native language and, apparently it's really much faster. -[00:57:04] And I find this quite interesting because maybe some day, there will be a faster runtime. maybe we can compile server components to native code on the server and, and run them much faster. But, I found this idea quite interesting to use something else than JavaScript to run, the React server side code. +[57:04] And I find this quite interesting because maybe some day, there will be a faster runtime. maybe we can compile server components to native code on the server and, and run them much faster. But, I found this idea quite interesting to use something else than JavaScript to run, the React server side code. -[00:57:26] **Jacob Paris:** Oh, interesting. +[57:26] **Jacob Paris:** Oh, interesting. ## ⚡️ CSS-in-JS is Ruining Your Product - [Web Developers, CSS-in-JS is Ruining Your Product](https://cord.com/blog/migrating-from-css-in-js-to-vanilla-extract) -[00:57:27] **Jacob Paris:** Here's a link from from, from Cords and, web developers, CS and JS for your product. Was that, was it was a neat a little article and sums up a lot of my, my thoughts here as well basically CSS and JS, so you can't generate the styles until your whole application has been rendered. +[57:27] **Jacob Paris:** Here's a link from from, from Cords and, web developers, CS and JS for your product. Was that, was it was a neat a little article and sums up a lot of my, my thoughts here as well basically CSS and JS, so you can't generate the styles until your whole application has been rendered. -[00:57:44] So you miss out on anything like React streaming. It has to render the whole thing. Styles and then inject them back into the app. There are some, you know, some solutions that are trying to fix issues like that'll extract using compile time extraction. +[57:44] So you miss out on anything like React streaming. It has to render the whole thing. Styles and then inject them back into the app. There are some, you know, some solutions that are trying to fix issues like that'll extract using compile time extraction. -[00:57:58] But in general, CSS and JS has kind of fallen out of fashion. And it seems like industry is sort of moving off and away from that. +[57:58] But in general, CSS and JS has kind of fallen out of fashion. And it seems like industry is sort of moving off and away from that. -[00:58:05] **Carl Vitullo:** Yeah, interesting. We're 10 minutes over. We should probably, we could probably keep doing links forever. I, there's one more thing that I want to pop out then maybe we should call it after that. +[58:05] **Carl Vitullo:** Yeah, interesting. We're 10 minutes over. We should probably, we could probably keep doing links forever. I, there's one more thing that I want to pop out then maybe we should call it after that. ## ⚡️ Dan Abramov joins BlueSky - [Dan Abramov joins Bluesky](https://twitter.com/dan_abramov/status/1695566446007386214) -[00:58:14] **Carl Vitullo:** But Dan Abramov is now a product engineer, no longer purely library maintainer on the backs, you know, behind the curtain of web development. He's joined BlueSky as a, as a software engineer. And I think that's going to be really interesting because as far as I know, he's still going to be on the core team. So I think specifically Dan Abramov, you know, working on a product and using React as a consumer. It's going to be really interesting. +[58:14] **Carl Vitullo:** But Dan Abramov is now a product engineer, no longer purely library maintainer on the backs, you know, behind the curtain of web development. He's joined BlueSky as a, as a software engineer. And I think that's going to be really interesting because as far as I know, he's still going to be on the core team. So I think specifically Dan Abramov, you know, working on a product and using React as a consumer. It's going to be really interesting. -[00:58:45] I've been seeing some tweets from him coming out talking about points of friction on using React Native and all sorts of things like that. So just having seen all the different times that he has introduced something because he felt a pain point and then invented a new category of tool. +[58:45] I've been seeing some tweets from him coming out talking about points of friction on using React Native and all sorts of things like that. So just having seen all the different times that he has introduced something because he felt a pain point and then invented a new category of tool. -[00:59:04] I can think of redux and create react app that were both just like his brain children that he felt the pain. He made something that fixed it. And then everyone else went, I didn't know you could do that. So I'm interested to see what happens now that he's being exposed to more points of friction with more regularity. +[59:04] I can think of redux and create react app that were both just like his brain children that he felt the pain. He made something that fixed it. And then everyone else went, I didn't know you could do that. So I'm interested to see what happens now that he's being exposed to more points of friction with more regularity. -[00:59:20] **Jacob Paris:** Yeah, and especially a shift toward React Native rather than, I guess, primarily React web which was a lot of his work before. It'll be interesting to see what that does for the native ecosystem. +[59:20] **Jacob Paris:** Yeah, and especially a shift toward React Native rather than, I guess, primarily React web which was a lot of his work before. It'll be interesting to see what that does for the native ecosystem. -[00:59:30] **Sebastien Lorber:** Yeah. Maybe Expo, won a great, developer advocate for free. +[59:30] **Sebastien Lorber:** Yeah. Maybe Expo, won a great, developer advocate for free. -[00:59:35] **Jacob Paris:** Ha ha. +[59:35] **Jacob Paris:** Ha ha. -[00:59:36] **Carl Vitullo:** All right, thank you so much Sebastian and Jacob. Jacob, thank you for subbing in for Mark this week. You killed it. You did great. Thanks so much. +[59:36] **Carl Vitullo:** All right, thank you so much Sebastian and Jacob. Jacob, thank you for subbing in for Mark this week. You killed it. You did great. Thanks so much. -[00:59:43] **Jacob Paris:** Absolutely. Thanks for having me. +[59:43] **Jacob Paris:** Absolutely. Thanks for having me. -[00:59:44] **Carl Vitullo:** Definitely. Awesome. Thanks so much everyone in the audience for joining us and see you next month. +[59:44] **Carl Vitullo:** Definitely. Awesome. Thanks so much everyone in the audience for joining us and see you next month. -[00:59:50] **Sebastien Lorber:** Thank you. Bye. +[59:50] **Sebastien Lorber:** Thank you. Bye. diff --git a/src/transcripts/wix-team.md b/src/transcripts/wix-team.md index e9991ca..9a801b9 100644 --- a/src/transcripts/wix-team.md +++ b/src/transcripts/wix-team.md @@ -11,354 +11,354 @@ people: "[Tom Raviv](https://twitter.com/RavivTom), [Omer Kenet](https://github. -**Carl Vitullo:** Welcome to our latest episode of Reactiflux Office Hours! I'm joined today by three team members from Wix, talking about the evolution of web development, the golden age of frontend that we're in right now and talking about their experiences navigating the tech industry. [00:00:17] +**Carl Vitullo:** Welcome to our latest episode of Reactiflux Office Hours! I'm joined today by three team members from Wix, talking about the evolution of web development, the golden age of frontend that we're in right now and talking about their experiences navigating the tech industry. [00:17] -The three of them each have very different entrances into the tech industry. I thought it'd be fun to have everyone compare and contrast, talk about their journeys. [00:00:26] +The three of them each have very different entrances into the tech industry. I thought it'd be fun to have everyone compare and contrast, talk about their journeys. [00:26] -Joining me is Tom Raviv the head of developer relations and Team lead for stylable.io. [00:00:30] +Joining me is Tom Raviv the head of developer relations and Team lead for stylable.io. [00:30] -Omar Kenet, head of product for Codux. [00:00:32] +Omar Kenet, head of product for Codux. [00:32] -Peter Shershov, the engineering team lead. [00:00:35] +Peter Shershov, the engineering team lead. [00:35] -And in the #q-and-a channel, we've got Joshua, one of the developer relations people [00:00:40] +And in the #q-and-a channel, we've got Joshua, one of the developer relations people [00:40] -**Wix Team:** Hey guys. Hey guys. How's it going? [00:00:43] +**Wix Team:** Hey guys. Hey guys. How's it going? [00:43] -**Carl Vitullo:** yeah. The joining us partly in celebration of the recent beta release they have for Codux. But before we get into it Tom, do you want to start us off and introduce yourself? [00:00:55] +**Carl Vitullo:** yeah. The joining us partly in celebration of the recent beta release they have for Codux. But before we get into it Tom, do you want to start us off and introduce yourself? [00:55] -**Wix Team:** Oh, for sure thing. Sure thing. My pleasure. So my name is Tom Raviv. I originally started my career doing technical trainings for telecom companies and all sorts of legacy systems. From there I transitioned to Wix where I've been for the. Almost close to 10 years now. I started off as a script kiddy programming position, working on some applications for our internal frameworks and some very old systems at Wix at this point. [00:01:20] +**Wix Team:** Oh, for sure thing. Sure thing. My pleasure. So my name is Tom Raviv. I originally started my career doing technical trainings for telecom companies and all sorts of legacy systems. From there I transitioned to Wix where I've been for the. Almost close to 10 years now. I started off as a script kiddy programming position, working on some applications for our internal frameworks and some very old systems at Wix at this point. [01:20] -Then got my bearings there. Learned a lot about programming, about working in a company, working in a team, working with other developers and other stakeholders. Then I did a bit of a switch went and helped to found the Wix Academy, which is an internal group within Wix that does. [00:01:37] +Then got my bearings there. Learned a lot about programming, about working in a company, working in a team, working with other developers and other stakeholders. Then I did a bit of a switch went and helped to found the Wix Academy, which is an internal group within Wix that does. [01:37] -Developer onboarding trainings, boot camps progression courses and tracks for their developers later in their careers, as well as all sorts of activities that relate to community and engineering branding. So we organized the conference called you Gotta Love Frontend for a number of years as well as some meetups and all sorts of community activities. [00:01:58] +Developer onboarding trainings, boot camps progression courses and tracks for their developers later in their careers, as well as all sorts of activities that relate to community and engineering branding. So we organized the conference called you Gotta Love Frontend for a number of years as well as some meetups and all sorts of community activities. [01:58] -Did that for about two years at Wix and for the last six or so I've been with the group that I am now the group working on Codux and on Stylable. Started as a developer on Stylable, turned into a team lead and very recently took up the reins on developer relations for the group. [00:02:15] +Did that for about two years at Wix and for the last six or so I've been with the group that I am now the group working on Codux and on Stylable. Started as a developer on Stylable, turned into a team lead and very recently took up the reins on developer relations for the group. [02:15] -**Carl Vitullo:** Very nice. Wow, that is, that's a long resume. [00:02:17] +**Carl Vitullo:** Very nice. Wow, that is, that's a long resume. [02:17] -**Wix Team:** It's been a really interesting ride at Wix. Yeah, and I think that's about me. Omer, you wanna take take next. [00:02:23] +**Wix Team:** It's been a really interesting ride at Wix. Yeah, and I think that's about me. Omer, you wanna take take next. [02:23] -Yes, I will. Hi. Hi, everyone. I'm Omer Kenet. I lead the product of Codux so it's a super fun time for me, obviously. Yeah, so I've joined Ws four years ago, so not as much as Tom, but quite a lot as well. [00:02:35] +Yes, I will. Hi. Hi, everyone. I'm Omer Kenet. I lead the product of Codux so it's a super fun time for me, obviously. Yeah, so I've joined Ws four years ago, so not as much as Tom, but quite a lot as well. [02:35] -I've joined after founding my own startup in very similar areas. We've been working on frontend toolings and code editing visually in several ways in my startup translating design files to code as well. A lot of connection between what I did before and what I'm doing now in my team, in in Wix. [00:02:55] +I've joined after founding my own startup in very similar areas. We've been working on frontend toolings and code editing visually in several ways in my startup translating design files to code as well. A lot of connection between what I did before and what I'm doing now in my team, in in Wix. [02:55] -Yeah, it's a really great ride been going on for a lot of time now in this environment, yeah it's me. Peter yes. Hi. Hi I'm Peter. I'm also for four years already at Ws team lead of engineering. I started as designer 10 years ago actually on ads and I call it web apps as well at mainly on like ads and stuff like that. [00:03:17] +Yeah, it's a really great ride been going on for a lot of time now in this environment, yeah it's me. Peter yes. Hi. Hi I'm Peter. I'm also for four years already at Ws team lead of engineering. I started as designer 10 years ago actually on ads and I call it web apps as well at mainly on like ads and stuff like that. [03:17] -And after that add into coding html, js and actually angular at first after that react and type script as of now. And that's about it. Yeah, that's about me. [00:03:30] +And after that add into coding html, js and actually angular at first after that react and type script as of now. And that's about it. Yeah, that's about me. [03:30] -**Carl Vitullo:** Very nice. Yeah. I'm curious to talk more about how you transitioned from design to software engineering. But yeah, before we get too deep into it Tom, I do you want to kick us off here talking about Wix and how they. Some of their origins and how they've evolved through the years. [00:03:47] +**Carl Vitullo:** Very nice. Yeah. I'm curious to talk more about how you transitioned from design to software engineering. But yeah, before we get too deep into it Tom, I do you want to kick us off here talking about Wix and how they. Some of their origins and how they've evolved through the years. [03:47] -I know that they're one of the early sort of d do-it-yourself website builders. Does that, is that still how Wix thinks about itself? [00:03:54] +I know that they're one of the early sort of d do-it-yourself website builders. Does that, is that still how Wix thinks about itself? [03:54] -**Wix Team:** It's changed and it's progressed and it's definitely grown in scope over the years. Wix got its start back in the flash days. It's first, it's very first visual editor for website creations was based entirely on flash. And you could do all sorts of crazy things. You could have bats flying across your applications and you could do all sorts of timeline connected, interactive experiences. [00:04:16] +**Wix Team:** It's changed and it's progressed and it's definitely grown in scope over the years. Wix got its start back in the flash days. It's first, it's very first visual editor for website creations was based entirely on flash. And you could do all sorts of crazy things. You could have bats flying across your applications and you could do all sorts of timeline connected, interactive experiences. [04:16] -But flash went away and we had to find things to work with in its place. HTML five was definitely the way to go, the way the industry and the web were was moving to. So Ws did that and then, still stuck to that early idea of do it yourself, create your website for your event or for your small business or for your own personal use. [00:04:37] +But flash went away and we had to find things to work with in its place. HTML five was definitely the way to go, the way the industry and the web were was moving to. So Ws did that and then, still stuck to that early idea of do it yourself, create your website for your event or for your small business or for your own personal use. [04:37] -But as time progressed and as Wix grew both in user count, but also in employee count the range of audiences and the breadth of capabilities that we were looking to offer really grew. When I joined Wix, I was like, employee number 500 or something. I think right now it's about 6,000 or 7,000. [00:04:59] +But as time progressed and as Wix grew both in user count, but also in employee count the range of audiences and the breadth of capabilities that we were looking to offer really grew. When I joined Wix, I was like, employee number 500 or something. I think right now it's about 6,000 or 7,000. [04:59] -So that posed a lot of really interesting challenges in how do you scale that much but also how can you take a product like Wix and find. New audiences for it, find new use cases for it. And for Wix, that was developers and designers, and finding offerings that can fit in this entire spectrum of very simple, no nonsense kind of users that are only looking to do something visually. [00:05:25] +So that posed a lot of really interesting challenges in how do you scale that much but also how can you take a product like Wix and find. New audiences for it, find new use cases for it. And for Wix, that was developers and designers, and finding offerings that can fit in this entire spectrum of very simple, no nonsense kind of users that are only looking to do something visually. [05:25] -But on the other side of that, to something that's more complex and can really support larger businesses, larger needs more complex cases. [00:05:33] +But on the other side of that, to something that's more complex and can really support larger businesses, larger needs more complex cases. [05:33] -**Carl Vitullo:** Sure. Wow. So you said earlier that you've been working at Wix for 10 years, but you were still employee number 500 you said. [00:05:41] +**Carl Vitullo:** Sure. Wow. So you said earlier that you've been working at Wix for 10 years, but you were still employee number 500 you said. [05:41] -**Wix Team:** Yeah. Yeah, thereabouts. I think Wix was founded around 2008 maybe. So something like that, give or take a year. I joined around 2013. [00:05:50] +**Wix Team:** Yeah. Yeah, thereabouts. I think Wix was founded around 2008 maybe. So something like that, give or take a year. I joined around 2013. [05:50] -**Carl Vitullo:** Yeah. Wow. So it's already a mature business and you know here now al it is almost three times older is when you had joined. That's that's incredible. [00:06:01] +**Carl Vitullo:** Yeah. Wow. So it's already a mature business and you know here now al it is almost three times older is when you had joined. That's that's incredible. [06:01] -**Wix Team:** Yeah, but it's still, despite the growth and the increase of headcount and capacity, it's still very much kept. It's roots and it's startup spirit. And this sort of can-do attitude where everyone can really find their niche, find their spot, and take ownership of what they want. [00:06:19] +**Wix Team:** Yeah, but it's still, despite the growth and the increase of headcount and capacity, it's still very much kept. It's roots and it's startup spirit. And this sort of can-do attitude where everyone can really find their niche, find their spot, and take ownership of what they want. [06:19] -**Carl Vitullo:** Nice. Very cool. Yeah. So, And you said you. Came at this sort of, from a script kiddy background. What's been your experience from that hacker ethos into a large company and staying with Alar one large company for such a long period of time in your career? Yeah, I think that's pretty uncommon in the industry. [00:06:38] +**Carl Vitullo:** Nice. Very cool. Yeah. So, And you said you. Came at this sort of, from a script kiddy background. What's been your experience from that hacker ethos into a large company and staying with Alar one large company for such a long period of time in your career? Yeah, I think that's pretty uncommon in the industry. [06:38] -How has that experience been? [00:06:39] +How has that experience been? [06:39] -**Wix Team:** I've it's funny, I've listened to several of your previous episodes and it seems like there's a somewhat of a recurring theme where I got my first kind of chops in programming through gaming. Back when I was a kid all sorts of games would let you expand, program, add script, do all sorts of things. [00:06:55] +**Wix Team:** I've it's funny, I've listened to several of your previous episodes and it seems like there's a somewhat of a recurring theme where I got my first kind of chops in programming through gaming. Back when I was a kid all sorts of games would let you expand, program, add script, do all sorts of things. [06:55] -The communities were on IRC or other sort of networking environments of that sort. And it's where I started to dabble and try out different things. Only when I got to Wix, it actually transitioned into this real thing, a job where you actually learn and are expected, to perform and to deliver. [00:07:15] +The communities were on IRC or other sort of networking environments of that sort. And it's where I started to dabble and try out different things. Only when I got to Wix, it actually transitioned into this real thing, a job where you actually learn and are expected, to perform and to deliver. [07:15] -But really I had amazing mentors and amazing people who I could draw both knowledge and inspiration from in terms of where I want to take my career and where I want to take, where, what I wanna do in the future. And I think that's really part of the reason why I've been with Wix for so long. [00:07:32] +But really I had amazing mentors and amazing people who I could draw both knowledge and inspiration from in terms of where I want to take my career and where I want to take, where, what I wanna do in the future. And I think that's really part of the reason why I've been with Wix for so long. [07:32] -It feels like I've found home [00:07:34] +It feels like I've found home [07:34] -**Carl Vitullo:** That's fun. That's really nice. That's a good feeling to have. Yeah. And if you've been there 10 years, I would, I'd hope it still feels, hope it still feels good. [00:07:43] +**Carl Vitullo:** That's fun. That's really nice. That's a good feeling to have. Yeah. And if you've been there 10 years, I would, I'd hope it still feels, hope it still feels good. [07:43] -**Wix Team:** Definitely. Definitely. [00:07:45] +**Wix Team:** Definitely. Definitely. [07:45] -**Carl Vitullo:** yeah. I'd love to hear some more about what, how long has Wix been using React? [00:07:50] +**Carl Vitullo:** yeah. I'd love to hear some more about what, how long has Wix been using React? [07:50] -**Wix Team:** And as I mentioned we started off with the Flash, then we transitioned to the HTML five. That was not React, re React was not around at that time yet. I think it was more based on MO tools and an internal framework that, that we had created at the time. But then around 2015, was it, right? [00:08:08] +**Wix Team:** And as I mentioned we started off with the Flash, then we transitioned to the HTML five. That was not React, re React was not around at that time yet. I think it was more based on MO tools and an internal framework that, that we had created at the time. But then around 2015, was it, right? [08:08] -Yeah. Yeah. So 2015 Wix started to explore new frameworks, new avenues, new tools that we can utilize. The web was, has started to pick up the speed and how things were being released. What capabilities were available to developers. And we went fully on board with that. React has served us very well over these last past years. [00:08:31] +Yeah. Yeah. So 2015 Wix started to explore new frameworks, new avenues, new tools that we can utilize. The web was, has started to pick up the speed and how things were being released. What capabilities were available to developers. And we went fully on board with that. React has served us very well over these last past years. [08:31] -And I think that's part of the reason why we've also based Codux around it. True, yes. Totally agree. [00:08:39] +And I think that's part of the reason why we've also based Codux around it. True, yes. Totally agree. [08:39] -**Carl Vitullo:** Nice. Yeah. And Peter, you said that you had. Work with Angular as well. Is there, I see a question in the chat. Is there a professional reason or personal preference? [00:08:48] +**Carl Vitullo:** Nice. Yeah. And Peter, you said that you had. Work with Angular as well. Is there, I see a question in the chat. Is there a professional reason or personal preference? [08:48] -**Wix Team:** Hello. I was working in startup company that actually used it in the product like ler Gs actually first one. And yeah, had to learn it, was tough and also interesting that as like a starter project to me still. Yeah. I think that's what's up. I think back when it first came out, angular, it was really quite a breath of fresh air. [00:09:14] +**Wix Team:** Hello. I was working in startup company that actually used it in the product like ler Gs actually first one. And yeah, had to learn it, was tough and also interesting that as like a starter project to me still. Yeah. I think that's what's up. I think back when it first came out, angular, it was really quite a breath of fresh air. [09:14] -It was trying to do something that, not necessarily anything. Similar to it has done the binding. The binding. Yeah. The, yeah. Two-way binding was like, oh my God, it changed everything. But also a framework that kind of covered you from end to end and really tried to provide a localization yeah. [00:09:35] +It was trying to do something that, not necessarily anything. Similar to it has done the binding. The binding. Yeah. The, yeah. Two-way binding was like, oh my God, it changed everything. But also a framework that kind of covered you from end to end and really tried to provide a localization yeah. [09:35] -Routing as well. The whole thing.. Yeah. I loved it. And at first, and then I realized how how to say, huge it is. And maybe you don't need all the parts. Exactly. Yeah. The binding is it's amazing, but also, perhaps not worth it. Yeah. maybe. Maybe. [00:09:53] +Routing as well. The whole thing.. Yeah. I loved it. And at first, and then I realized how how to say, huge it is. And maybe you don't need all the parts. Exactly. Yeah. The binding is it's amazing, but also, perhaps not worth it. Yeah. maybe. Maybe. [09:53] -**Carl Vitullo:** Yeah, for sure. Yeah, definitely Angular one, and I guess, react was competing with Angular one back in the day too. But I think that it came from a different era of the web where, maybe a little bit more framework focused, things like Laravee or Rubian rails that really did try to do everything all in one. [00:10:11] +**Carl Vitullo:** Yeah, for sure. Yeah, definitely Angular one, and I guess, react was competing with Angular one back in the day too. But I think that it came from a different era of the web where, maybe a little bit more framework focused, things like Laravee or Rubian rails that really did try to do everything all in one. [10:11] -And I think React was really a step in a different direction of saying and now it's that the reacts vision of being a low level platform upon which other things are built. I feel like that's, coming true now with tools like Remix or next, but yeah, I guess the, maybe that's a direction of poke. [00:10:27] +And I think React was really a step in a different direction of saying and now it's that the reacts vision of being a low level platform upon which other things are built. I feel like that's, coming true now with tools like Remix or next, but yeah, I guess the, maybe that's a direction of poke. [10:27] -What's how are you thinking about things, products like Wix or like Codux in this, in the current, reality for the web ecosystem? [00:10:35] +What's how are you thinking about things, products like Wix or like Codux in this, in the current, reality for the web ecosystem? [10:35] -**Wix Team:** Next.js You mean and Remix frameworks, like how we approach that? [00:10:42] +**Wix Team:** Next.js You mean and Remix frameworks, like how we approach that? [10:42] -I think it's, first of all, it's, at the end of the day, it's what gets the job done, right? If you have a tool that covers your needs and is easy to use, will performs well in whatever metrics you care about, whether it's like things like actual performance in loading or if it's features or device support, or like new APIs. [00:11:03] +I think it's, first of all, it's, at the end of the day, it's what gets the job done, right? If you have a tool that covers your needs and is easy to use, will performs well in whatever metrics you care about, whether it's like things like actual performance in loading or if it's features or device support, or like new APIs. [11:03] -If you have something that kind of covers all of the bases you need, I'm all for it. If it's ring mix or if it's Next or if it's Wix it's okay. Use the thing that. Having said that, supporting things like Next and Remix and things that really bring a lot of tooling with them, a lot of integrations, a lot of thought and perhaps opinions on how things should be done poses a somewhat of a challenge for us. [00:11:26] +If you have something that kind of covers all of the bases you need, I'm all for it. If it's ring mix or if it's Next or if it's Wix it's okay. Use the thing that. Having said that, supporting things like Next and Remix and things that really bring a lot of tooling with them, a lot of integrations, a lot of thought and perhaps opinions on how things should be done poses a somewhat of a challenge for us. [11:26] -On the other side to, to create a system that's agnostic to, like all of these opinions and needs components are components in the end. If it has span other components in it we'll render it in the end. Regardless of routing assets and stuff like that. Yeah. [00:11:43] +On the other side to, to create a system that's agnostic to, like all of these opinions and needs components are components in the end. If it has span other components in it we'll render it in the end. Regardless of routing assets and stuff like that. Yeah. [11:43] -**Carl Vitullo:** Yeah, for sure. Yeah. And I see that we've had a lot of new people join in the last couple of minutes. So let me just reintroduce I'm here with three team members from Wix. They are, they're celebrating a beta release of their new product, Codux. But we're also just here talking about the tech industry, how we've, how we got our starts. [00:12:00] +**Carl Vitullo:** Yeah, for sure. Yeah. And I see that we've had a lot of new people join in the last couple of minutes. So let me just reintroduce I'm here with three team members from Wix. They are, they're celebrating a beta release of their new product, Codux. But we're also just here talking about the tech industry, how we've, how we got our starts. [12:00] -And just talking about the web. But yeah, I'm here with Tom Riviv, the head of developer relations and a team lead for their open source project stylable. Omar Kenet, head of product for Codux's recent beta release. And Peter Shershov, the engineering team lead. And we've got Josh, username, Alphonse helping out in the #q-and-a chat. [00:12:18] +And just talking about the web. But yeah, I'm here with Tom Riviv, the head of developer relations and a team lead for their open source project stylable. Omar Kenet, head of product for Codux's recent beta release. And Peter Shershov, the engineering team lead. And we've got Josh, username, Alphonse helping out in the #q-and-a chat. [12:18] -One of the topics we had queued up here was the golden age of frontend development. Do you think that's now, do you think that was a different time? [00:12:26] +One of the topics we had queued up here was the golden age of frontend development. Do you think that's now, do you think that was a different time? [12:26] -**Wix Team:** Oh, I think it's very much now, I think it started about. For luckily for me, about a decade ago there was some time where I feel like the web was in stagnation. There are all sorts of stories about ECMAScript for and how that got stuck in the pipeline. And there are all sorts of tales from like the CSS working group on how hard it was to create new capabilities like flex or grid and actually ship those to, to users. [00:12:55] +**Wix Team:** Oh, I think it's very much now, I think it started about. For luckily for me, about a decade ago there was some time where I feel like the web was in stagnation. There are all sorts of stories about ECMAScript for and how that got stuck in the pipeline. And there are all sorts of tales from like the CSS working group on how hard it was to create new capabilities like flex or grid and actually ship those to, to users. [12:55] -But things have changed and really the speed at which things, but, and by things APIs, tools, browser capabilities, all of those, even the language itself, if we're talking about Equi script six and everything that has come since it's. It's mad, it's great, it's wonderful. It does and can cause some fatigue because it's hard to keep up with the pace of everything that's going on. [00:13:21] +But things have changed and really the speed at which things, but, and by things APIs, tools, browser capabilities, all of those, even the language itself, if we're talking about Equi script six and everything that has come since it's. It's mad, it's great, it's wonderful. It does and can cause some fatigue because it's hard to keep up with the pace of everything that's going on. [13:21] -And you're almo like almost always in this situation where you're thinking, am I using the right tool? Maybe there's a new shinier one. Maybe there's a faster one. And running after that all the time is a bit tiresome. FOBO, and lots of people have talked about that issue and have offered various ways of dealing with it. [00:13:40] +And you're almo like almost always in this situation where you're thinking, am I using the right tool? Maybe there's a new shinier one. Maybe there's a faster one. And running after that all the time is a bit tiresome. FOBO, and lots of people have talked about that issue and have offered various ways of dealing with it. [13:40] -But I think at the end of the day the proliferation of tools and capabilities on the web is fantastic and really helps drive forward everything that, that we can do as developers and the things that we can offer to our users no matter in, in what, like domain or area. And I guess like the fatigue is always better than not having enough options, oh, definitely [00:14:02] +But I think at the end of the day the proliferation of tools and capabilities on the web is fantastic and really helps drive forward everything that, that we can do as developers and the things that we can offer to our users no matter in, in what, like domain or area. And I guess like the fatigue is always better than not having enough options, oh, definitely [14:02] -Yeah. [00:14:03] +Yeah. [14:03] -**Carl Vitullo:** for sure. Definitely a lot to keep on top of, but it's a, it's evidence of the boom times we're in that we have so much to stay on top of. [00:14:10] +**Carl Vitullo:** for sure. Definitely a lot to keep on top of, but it's a, it's evidence of the boom times we're in that we have so much to stay on top of. [14:10] -**Wix Team:** And I think that like there, there's also been. Beyond just more things being added. There's been a lot of change in the mindset of how you approach things. If you look at it from like the 10,000 mile view we've moved from document-based development to component oriented development. [00:14:29] +**Wix Team:** And I think that like there, there's also been. Beyond just more things being added. There's been a lot of change in the mindset of how you approach things. If you look at it from like the 10,000 mile view we've moved from document-based development to component oriented development. [14:29] -And that's a very different experience. I think it really lends itself to scale, to growth, to even just for onboarding purposes, for learning pur purposes, getting people into very complex systems or very complex apps is, in my experience, a lot easier when you're talking about components than when you're talking about very dom oriented kind of development [00:14:57] +And that's a very different experience. I think it really lends itself to scale, to growth, to even just for onboarding purposes, for learning pur purposes, getting people into very complex systems or very complex apps is, in my experience, a lot easier when you're talking about components than when you're talking about very dom oriented kind of development [14:57] -**Carl Vitullo:** Sure. Yeah. Yeah. And I think you know the audience here, react developers will be intuitively familiar with component-based development, but I'm not sure I have a clear picture in my mind when you say document-based development. Yeah. Could you, can you go into that? Can you dig deeper? What is document-based development? [00:15:15] +**Carl Vitullo:** Sure. Yeah. Yeah. And I think you know the audience here, react developers will be intuitively familiar with component-based development, but I'm not sure I have a clear picture in my mind when you say document-based development. Yeah. Could you, can you go into that? Can you dig deeper? What is document-based development? [15:15] -**Wix Team:** By document, of course, like the window document, in the browser. The dom. Yeah, the dom. And things like JQuery, where, a decade, 15 years ago, you had to use it because browsers were so out sync with each other. APIs were so lacking in what you could do, and third party libraries stepped up and tried to provide like the best that they could. [00:15:36] +**Wix Team:** By document, of course, like the window document, in the browser. The dom. Yeah, the dom. And things like JQuery, where, a decade, 15 years ago, you had to use it because browsers were so out sync with each other. APIs were so lacking in what you could do, and third party libraries stepped up and tried to provide like the best that they could. [15:36] -And it was awesome. And really helped push the web forward. But at the end of at some point the browsers cut up, a lot of the functionalities moved in, and then the third parties could. Transition over to doing things that are like more about architecture and more about how you actually structure a complex thing. [00:15:55] +And it was awesome. And really helped push the web forward. But at the end of at some point the browsers cut up, a lot of the functionalities moved in, and then the third parties could. Transition over to doing things that are like more about architecture and more about how you actually structure a complex thing. [15:55] -From like the beginning of the tool that you're using or the beginning of the language that you're using or components and your right. We saw it in in inquiry in the j query, the head UI as well, components. So it's like changing into other aspects as well. Yeah. [00:16:12] +From like the beginning of the tool that you're using or the beginning of the language that you're using or components and your right. We saw it in in inquiry in the j query, the head UI as well, components. So it's like changing into other aspects as well. Yeah. [16:12] -**Carl Vitullo:** Yeah, definitely. I think one of the big challenges that I remember from the document-based era of development was everything applied everywhere, so it was, you had, you just had to be so careful about what class names you used, what selectors you used. And that's, that is still a concern now. But we do have a lot more tools that help us keep scope narrow, [00:16:34] +**Carl Vitullo:** Yeah, definitely. I think one of the big challenges that I remember from the document-based era of development was everything applied everywhere, so it was, you had, you just had to be so careful about what class names you used, what selectors you used. And that's, that is still a concern now. But we do have a lot more tools that help us keep scope narrow, [16:34] -**Wix Team:** Oh, definitely, even Stylable tries to keep you safe in whatever way it can, it will name, space, everything in CSS that could possibly collide. Whether you're talking about classes, variables container queries, layers you gotta namespace things these days because the browser is a big place and global scope is dangerous. [00:16:53] +**Wix Team:** Oh, definitely, even Stylable tries to keep you safe in whatever way it can, it will name, space, everything in CSS that could possibly collide. Whether you're talking about classes, variables container queries, layers you gotta namespace things these days because the browser is a big place and global scope is dangerous. [16:53] -**Carl Vitullo:** Yeah, global scope gets messy quickly, for sure. Yeah. So all three of you have been working on on Codux or in a similar, problem space for a number of years now. What does it, how does it feel being a developer serving other developers? [00:17:09] +**Carl Vitullo:** Yeah, global scope gets messy quickly, for sure. Yeah. So all three of you have been working on on Codux or in a similar, problem space for a number of years now. What does it, how does it feel being a developer serving other developers? [17:09] -Big question. [00:17:10] +Big question. [17:10] -**Wix Team:** It's a great question. One that, I don't know, you could probably write a thesis about, I think like the first thing is that, You're both the developer and the user. So that means that on the one hand you have a lot of inherent knowledge about the domain. [00:17:26] +**Wix Team:** It's a great question. One that, I don't know, you could probably write a thesis about, I think like the first thing is that, You're both the developer and the user. So that means that on the one hand you have a lot of inherent knowledge about the domain. [17:26] -If, for example, you're a developer working for a medical company or for, I dunno, car insurance or something like that, you learn the domain in to, to, to a certain aspect or the things that you need, but you'll never be like as knowledgeable as a doctor or a surgeon or whatever. With developers, when you're writing for developers, especially if they're the users are using the same stacks the same technology stack and tools that we do then we do know a lot of what they know. [00:17:53] +If, for example, you're a developer working for a medical company or for, I dunno, car insurance or something like that, you learn the domain in to, to, to a certain aspect or the things that you need, but you'll never be like as knowledgeable as a doctor or a surgeon or whatever. With developers, when you're writing for developers, especially if they're the users are using the same stacks the same technology stack and tools that we do then we do know a lot of what they know. [17:53] -And we do share a lot of their pain points or their successes or their approaches. But on the other hand, we also bring our biases. So if we have oh man, I don't like angular, I don't jQuery, I don't like from my own personal taste, then that will all of a sudden be reflected in that as well. [00:18:13] +And we do share a lot of their pain points or their successes or their approaches. But on the other hand, we also bring our biases. So if we have oh man, I don't like angular, I don't jQuery, I don't like from my own personal taste, then that will all of a sudden be reflected in that as well. [18:13] -And it's hard to balance that app. Yeah, I guess from my perspective as a product, working with the developers, building tools for developers, I get a bit of both, like the upside and downside. Like you have all of this knowledge right in front of you and people who are very deep into those concepts that you can learn from and shape the product based on what these people think and know and do. [00:18:37] +And it's hard to balance that app. Yeah, I guess from my perspective as a product, working with the developers, building tools for developers, I get a bit of both, like the upside and downside. Like you have all of this knowledge right in front of you and people who are very deep into those concepts that you can learn from and shape the product based on what these people think and know and do. [18:37] -And yet, as you said, the bias part is always a challenge. People like what they like and many times really don't like what they don't like. And you need to play around with it and make sure that that you're getting what you need to get and put your filters on what are people's personal preferences and not like what's a common ground or what should be like the right approach I guess. [00:18:58] +And yet, as you said, the bias part is always a challenge. People like what they like and many times really don't like what they don't like. And you need to play around with it and make sure that that you're getting what you need to get and put your filters on what are people's personal preferences and not like what's a common ground or what should be like the right approach I guess. [18:58] -So that's a lot of challenge for me. Really cool though. I think we're, at the end of the day, all of us are very passionate about what we do. And that can sometimes also be translated to like high energy interactions college athlete. We're, Al might come with a suggestion for a feature or a change to, to some aspect of the product. [00:19:21] +So that's a lot of challenge for me. Really cool though. I think we're, at the end of the day, all of us are very passionate about what we do. And that can sometimes also be translated to like high energy interactions college athlete. We're, Al might come with a suggestion for a feature or a change to, to some aspect of the product. [19:21] -And we'll be looking at that and thinking and saying, no, this is terrible. You don't know what you're doing. But he does know what he's doing. Like he's been looking at the range of developers as an audience, as a group. And that's something that while we occasionally think about, it's not something that we necessarily have that much of a grasp on compared to him. [00:19:43] +And we'll be looking at that and thinking and saying, no, this is terrible. You don't know what you're doing. But he does know what he's doing. Like he's been looking at the range of developers as an audience, as a group. And that's something that while we occasionally think about, it's not something that we necessarily have that much of a grasp on compared to him. [19:43] -**Carl Vitullo:** Yeah, it's easy to think I'm a developer. I'm our target customer. I intuitively know what other developers will want, that is still at the end of the day, anecdotal, it's your own preferences. And yeah, definitely easy to let that get in the way of, just as over time, you, if you don't continually update your perspective of, developers, not just what you want as a developer, you risk becoming increasingly out of touch, I think that's maybe a restatement of what you're saying. [00:20:13] +**Carl Vitullo:** Yeah, it's easy to think I'm a developer. I'm our target customer. I intuitively know what other developers will want, that is still at the end of the day, anecdotal, it's your own preferences. And yeah, definitely easy to let that get in the way of, just as over time, you, if you don't continually update your perspective of, developers, not just what you want as a developer, you risk becoming increasingly out of touch, I think that's maybe a restatement of what you're saying. [20:13] -**Wix Team:** Yeah. Yeah. It is though a lot of fun, I have to say, because we work together in very early stages of shaping the changes and the product. Like it's not just talking about implementation. It's also like from day one. Discussions about what should we do, how should we do it? [00:20:29] +**Wix Team:** Yeah. Yeah. It is though a lot of fun, I have to say, because we work together in very early stages of shaping the changes and the product. Like it's not just talking about implementation. It's also like from day one. Discussions about what should we do, how should we do it? [20:29] -Like I'm talking both with the people who will implement the product and yet people who are so deep into the pain that we're trying to solve. The whole planning and figuring out what would be a right solution or Right. Even what should we solve? So it's all very early stage done together and that's a real good fun I think for all of us working together. [00:20:49] +Like I'm talking both with the people who will implement the product and yet people who are so deep into the pain that we're trying to solve. The whole planning and figuring out what would be a right solution or Right. Even what should we solve? So it's all very early stage done together and that's a real good fun I think for all of us working together. [20:49] -Oh, definitely. Yeah. I agree. If you hear the product manager on the team lead of the engineering, we have our conflicts and our disagreements still in the end of it. It's our product is interesting a lot. And yeah, it's true. I think like an, another interesting aspect of that would be that, Codux as a product like it's very much. Primarily targeted for developers. And we're using Codux to build Codux. [00:21:13] +Oh, definitely. Yeah. I agree. If you hear the product manager on the team lead of the engineering, we have our conflicts and our disagreements still in the end of it. It's our product is interesting a lot. And yeah, it's true. I think like an, another interesting aspect of that would be that, Codux as a product like it's very much. Primarily targeted for developers. And we're using Codux to build Codux. [21:13] -So even in that place when we're just developing the thing itself, we're both the users and the creators of it. And to a certain ex as extent, the same thing could be said about our designers as well and about the product managers as well. The they're building it, they're creating the specs. [00:21:30] +So even in that place when we're just developing the thing itself, we're both the users and the creators of it. And to a certain ex as extent, the same thing could be said about our designers as well and about the product managers as well. The they're building it, they're creating the specs. [21:30] -They're planning out the product, they're doing the research that's required, but then they also use it so they get this k you get this kind of immediate loop of dog fooding your own product. And I think it teaches you so much about what you can do, what you should. [00:21:43] +They're planning out the product, they're doing the research that's required, but then they also use it so they get this k you get this kind of immediate loop of dog fooding your own product. And I think it teaches you so much about what you can do, what you should. [21:43] -**Carl Vitullo:** Yeah, definitely. I know you actually using your own product is, it's the core of every product businesses, anytime someone gives advice to a product-based business, number one on that list tends to be actually use your product, understand how it works. So yeah, that's really, it's really cool that you have bootstrapped this, bootstrapped Codux into a place where you can use Codux to develop Codux. [00:22:09] +**Carl Vitullo:** Yeah, definitely. I know you actually using your own product is, it's the core of every product businesses, anytime someone gives advice to a product-based business, number one on that list tends to be actually use your product, understand how it works. So yeah, that's really, it's really cool that you have bootstrapped this, bootstrapped Codux into a place where you can use Codux to develop Codux. [22:09] -That's [00:22:09] +That's [22:09] -**Wix Team:** it's a testament of its capabilities. Like we're saying that you can use this to create complex apps, complex component, complex sites or whatever you want. And if you couldn't build Codux using it, then we've probably missed a Mark [00:22:26] +**Wix Team:** it's a testament of its capabilities. Like we're saying that you can use this to create complex apps, complex component, complex sites or whatever you want. And if you couldn't build Codux using it, then we've probably missed a Mark [22:26] -**Carl Vitullo:** Yeah, makes a lot of sense. [00:22:28] +**Carl Vitullo:** Yeah, makes a lot of sense. [22:28] -**Wix Team:** No, I was just trying to say like it is like someone who would look at it from the side would be confused. many times. Like you could see us editing this visual thing, like this panel or something, and yet using the same panel to edit the next version of that panel. So you could look at it from the side and be like, wait, what am I seeing here? [00:22:48] +**Wix Team:** No, I was just trying to say like it is like someone who would look at it from the side would be confused. many times. Like you could see us editing this visual thing, like this panel or something, and yet using the same panel to edit the next version of that panel. So you could look at it from the side and be like, wait, what am I seeing here? [22:48] -So for us it's like really an interesting approach and I did have the same experience with my previous startup. So it's so cool to, to see people like, figure out that this is what we're doing. It's oh my God, this is mind blowing and yet so confusing at the same time. definitely a bit trippy. [00:23:04] +So for us it's like really an interesting approach and I did have the same experience with my previous startup. So it's so cool to, to see people like, figure out that this is what we're doing. It's oh my God, this is mind blowing and yet so confusing at the same time. definitely a bit trippy. [23:04] -**Carl Vitullo:** Very neat. Yeah. Yeah. Oer. So you said that you were, before you started working at Wix, you were building your own startup in the same problem domain. Is that right? [00:23:17] +**Carl Vitullo:** Very neat. Yeah. Yeah. Oer. So you said that you were, before you started working at Wix, you were building your own startup in the same problem domain. Is that right? [23:17] -**Wix Team:** Yep. Yeah. It was very similar in many ways. Very different in other ways. But yeah, it was like on the same problem space. We know that we're dealing with a problem that like the entire industry could feel every day, probably. So the startup had a different approach of how should we tackle frontend and collaboration and kind of heat up the process, improve our workflows. [00:23:40] +**Wix Team:** Yep. Yeah. It was very similar in many ways. Very different in other ways. But yeah, it was like on the same problem space. We know that we're dealing with a problem that like the entire industry could feel every day, probably. So the startup had a different approach of how should we tackle frontend and collaboration and kind of heat up the process, improve our workflows. [23:40] -We were focused on translating design files into code. We had full on editor to create whatever you wanted to do with your website once it was converted from the design file, either Figma sketch, Photoshop those were days that were still used for ui. And yeah obviously sharing the same kind of vision towards How the future of web should look and how the future of frontend should look. [00:24:02] +We were focused on translating design files into code. We had full on editor to create whatever you wanted to do with your website once it was converted from the design file, either Figma sketch, Photoshop those were days that were still used for ui. And yeah obviously sharing the same kind of vision towards How the future of web should look and how the future of frontend should look. [24:02] -That's what got us to Wix, I believe. [00:24:09] +That's what got us to Wix, I believe. [24:09] -sorry. We've also talked about like the range of users that, that a complete like Wix might expect to, to support or want to support from the very basic beginner level all the way to the most pro of pros the experts that do everything right down on, on the metal itself close to the core of the system. [00:24:27] +sorry. We've also talked about like the range of users that, that a complete like Wix might expect to, to support or want to support from the very basic beginner level all the way to the most pro of pros the experts that do everything right down on, on the metal itself close to the core of the system. [24:27] -But even if you look like at the group of developers as an audience, even that's not a single thing, right? You have developers that are at the beginning of their career and you have developers that are much later and much more experienced, and those types of users really expect a different sort of experience. [00:24:45] +But even if you look like at the group of developers as an audience, even that's not a single thing, right? You have developers that are at the beginning of their career and you have developers that are much later and much more experienced, and those types of users really expect a different sort of experience. [24:45] -The beginners would need more handholding. They'll need things to be more verbose, whether we're talking about actual text in, in the product, in tutorials, in documentation and so on. But also like in how the product itself is shaped. Beginner use, like beginner level users might need buttons that are label labeled a certain way or certain actions that are exposed in a clear way. [00:25:10] +The beginners would need more handholding. They'll need things to be more verbose, whether we're talking about actual text in, in the product, in tutorials, in documentation and so on. But also like in how the product itself is shaped. Beginner use, like beginner level users might need buttons that are label labeled a certain way or certain actions that are exposed in a clear way. [25:10] -But this might come at the expense of being professional that works with a thousand keyboard shortcuts and can zoom all over the place and do things with 17 heat strokes and they're done. So there's a tug of war of balancing those two groups and finding where you can provide the optimal experience for both audiences and how they can fit it or adapt it or configure it to their needs. [00:25:33] +But this might come at the expense of being professional that works with a thousand keyboard shortcuts and can zoom all over the place and do things with 17 heat strokes and they're done. So there's a tug of war of balancing those two groups and finding where you can provide the optimal experience for both audiences and how they can fit it or adapt it or configure it to their needs. [25:33] -**Carl Vitullo:** Yeah. Very neat. Yeah. So Omar, how long had you been building that startup before you joined Wix? [00:25:39] +**Carl Vitullo:** Yeah. Very neat. Yeah. So Omar, how long had you been building that startup before you joined Wix? [25:39] -**Wix Team:** So I guess it depends on how you would look at it. We had a previous round to that startup, the same founding team and team members working on something completely different from our last startup called Rapid ui. started with something called Gono Go. It's really not in the industry, but it taught us a lot about the pain and drove us to, to the place where we wanted to solve it. [00:26:01] +**Wix Team:** So I guess it depends on how you would look at it. We had a previous round to that startup, the same founding team and team members working on something completely different from our last startup called Rapid ui. started with something called Gono Go. It's really not in the industry, but it taught us a lot about the pain and drove us to, to the place where we wanted to solve it. [26:01] -We realized that there's a much bigger pain here that we can deal with such a bigger. Issue that we want to put our focus in. And we're so motivated to try and solve all of those things that we could feel on our own. And we did a complete pivot. We changed everything. We, even though we were doing pretty well, I have to say especially in terms of like early stage startup we just realized that it's a much bigger thing to, to handle and we completely transitioned to Rapid ui. [00:26:29] +We realized that there's a much bigger pain here that we can deal with such a bigger. Issue that we want to put our focus in. And we're so motivated to try and solve all of those things that we could feel on our own. And we did a complete pivot. We changed everything. We, even though we were doing pretty well, I have to say especially in terms of like early stage startup we just realized that it's a much bigger thing to, to handle and we completely transitioned to Rapid ui. [26:29] -Working on Rapid ui, I guess it was like around four years almost. We had users paying money for the product, getting value out of it. Obviously because of that we were got funded so we're doing pretty well a long time about that. So got very deep into the, those problems based, I think the first times we met like that when your company and our company met it was very. [00:26:53] +Working on Rapid ui, I guess it was like around four years almost. We had users paying money for the product, getting value out of it. Obviously because of that we were got funded so we're doing pretty well a long time about that. So got very deep into the, those problems based, I think the first times we met like that when your company and our company met it was very. [26:53] -Immediately evident that there's a common language there. We were looking at the developer groups and developer experiences in much the same way and trying to solve a lot of the same issues, but in slightly different ways. Yeah, I and it was true both on professional aspect and like the personal aspect at the same time. [00:27:11] +Immediately evident that there's a common language there. We were looking at the developer groups and developer experiences in much the same way and trying to solve a lot of the same issues, but in slightly different ways. Yeah, I and it was true both on professional aspect and like the personal aspect at the same time. [27:11] -Like we had a click from day one, I believe. All of us could feel it. And yeah, like the professional aspect we're working on such similar problems like technical problems editing code in, in many ways. And yet providing a way to write code freely. So there's always this kinda mix between the freedom that you want to give and both the startup and Codux give ultimate freedom. [00:27:35] +Like we had a click from day one, I believe. All of us could feel it. And yeah, like the professional aspect we're working on such similar problems like technical problems editing code in, in many ways. And yet providing a way to write code freely. So there's always this kinda mix between the freedom that you want to give and both the startup and Codux give ultimate freedom. [27:35] -Like you're not, you were not, and you're still not limited in any way. And yet at the same time comes back to what Tom said earlier. How do you wrap these things with great experience? How do you make sure that you can cater different kinds of users and yet still allow the ultimate freedom? [00:27:51] +Like you're not, you were not, and you're still not limited in any way. And yet at the same time comes back to what Tom said earlier. How do you wrap these things with great experience? How do you make sure that you can cater different kinds of users and yet still allow the ultimate freedom? [27:51] -So both products had these similar problems and I think that both sides could really feel the value of being deep in those problems. Like we joined the company and it didn't take long or took very little time before we could start actually doing things, make changes, improve, I hope [00:28:08] +So both products had these similar problems and I think that both sides could really feel the value of being deep in those problems. Like we joined the company and it didn't take long or took very little time before we could start actually doing things, make changes, improve, I hope [28:08] -Yeah, it taught us a lot and we started so fast in weeks in our team because it was just like so aligned. Oh yeah. We like, had a common language immediately. It was just like jumping straight into the water and getting stuff done. [00:28:21] +Yeah, it taught us a lot and we started so fast in weeks in our team because it was just like so aligned. Oh yeah. We like, had a common language immediately. It was just like jumping straight into the water and getting stuff done. [28:21] -**Carl Vitullo:** Very neat. Okay, so it sounds, so you worked at, worked on rapid. For about four years before you joined the Wix team, and you've been now been working at Wix for eight, four years as well, you said? [00:28:34] +**Carl Vitullo:** Very neat. Okay, so it sounds, so you worked at, worked on rapid. For about four years before you joined the Wix team, and you've been now been working at Wix for eight, four years as well, you said? [28:34] -**Wix Team:** That's true. [00:28:36] +**Wix Team:** That's true. [28:36] -**Carl Vitullo:** Yeah. Very cool. Wow. So eight years working in the same problem space. That's incredible. [00:28:41] +**Carl Vitullo:** Yeah. Very cool. Wow. So eight years working in the same problem space. That's incredible. [28:41] -**Wix Team:** Yeah. Yeah. When you have the passion for that thing, doesn't feel like eight, like it feels from one hand, 80 and yet from the other it's like I can do it a lot longer. Every day there's a new challenge and usually challenges that I like tackling. So yeah, we like editors, what's up? [00:29:00] +**Wix Team:** Yeah. Yeah. When you have the passion for that thing, doesn't feel like eight, like it feels from one hand, 80 and yet from the other it's like I can do it a lot longer. Every day there's a new challenge and usually challenges that I like tackling. So yeah, we like editors, what's up? [29:00] -Oh yeah. The, The UI experiences. [00:29:02] +Oh yeah. The, The UI experiences. [29:02] -**Carl Vitullo:** Very nice. Yeah. There you go. I'm trying to imagine what it might have been like to go from a small startup that, or I'm assuming small, but a startup that you're running yourself to being, it sounds like a acquired and joining, so like an aquire situation. What was that experience of going from, totally self-directed startup you founded to someone who works for a thousand, multiple thousands person company? [00:29:29] +**Carl Vitullo:** Very nice. Yeah. There you go. I'm trying to imagine what it might have been like to go from a small startup that, or I'm assuming small, but a startup that you're running yourself to being, it sounds like a acquired and joining, so like an aquire situation. What was that experience of going from, totally self-directed startup you founded to someone who works for a thousand, multiple thousands person company? [29:29] -**Wix Team:** Oh, wow. That was a big big day. a big change. Obviously it's, in one hand it's very different. Yeah, it was a small startup. You said it right? We were like seven people or eight. When maybe a bit more by that time, but very small. And I was like one of the founding members it was like, it was my thing. [00:29:47] +**Wix Team:** Oh, wow. That was a big big day. a big change. Obviously it's, in one hand it's very different. Yeah, it was a small startup. You said it right? We were like seven people or eight. When maybe a bit more by that time, but very small. And I was like one of the founding members it was like, it was my thing. [29:47] -I joined a very special team. The company. Even though I guess regardless to the team, Wix is a very special company in general. We touched it a bit, but I know that throughout the entire organization people feel like they're part of this big thing and they can contribute to that big thing even though they're like thousands employees that, that do it. [00:30:06] +I joined a very special team. The company. Even though I guess regardless to the team, Wix is a very special company in general. We touched it a bit, but I know that throughout the entire organization people feel like they're part of this big thing and they can contribute to that big thing even though they're like thousands employees that, that do it. [30:06] -And especially in our team I would say that we are working as if we're a startup, right? We're working on new things, trying to find new technologies to solve problems for people. So we are very oriented to think as a startup. So it wasn't as extreme as we thought it would be very different in many ways, like day to day and all of that different organization, how it manages throughout the day to day. [00:30:31] +And especially in our team I would say that we are working as if we're a startup, right? We're working on new things, trying to find new technologies to solve problems for people. So we are very oriented to think as a startup. So it wasn't as extreme as we thought it would be very different in many ways, like day to day and all of that different organization, how it manages throughout the day to day. [30:31] -And yet at the same time, whips is such a great company to work for in so many ways. That just gives you the feeling that you're a lead role in this big thing. And I know that almost everyone in the company feel that way. So yeah you're not just a cog in the machine. You make an impact. [00:30:50] +And yet at the same time, whips is such a great company to work for in so many ways. That just gives you the feeling that you're a lead role in this big thing. And I know that almost everyone in the company feel that way. So yeah you're not just a cog in the machine. You make an impact. [30:50] -If you want to, if you wanna take the responsibility and step up and do the things that you wanna do, then that's the doors are open. And I think I'll add something, just a small thing to what almost said, and that's the, yeah. Our group is somewhat unique at Wix and that we're very much focused on developers and on only developers for this point at time. [00:31:12] +If you want to, if you wanna take the responsibility and step up and do the things that you wanna do, then that's the doors are open. And I think I'll add something, just a small thing to what almost said, and that's the, yeah. Our group is somewhat unique at Wix and that we're very much focused on developers and on only developers for this point at time. [31:12] -And. This group is led by Nada Ajami, who is one of the co-founders of Wix. So it definitely has its place and definitely has its vision. And we're all along for the ride. [00:31:25] +And. This group is led by Nada Ajami, who is one of the co-founders of Wix. So it definitely has its place and definitely has its vision. And we're all along for the ride. [31:25] -**Carl Vitullo:** Nice. Yeah. That everything you've said about the culture at Wix sounds pretty rare actually. I've worked at, so I've, it sounds like I've been working about the same length of time as you have. I got my first job in 2012, but I have in that time rather than working at one company I've worked at I think nine. [00:31:43] +**Carl Vitullo:** Nice. Yeah. That everything you've said about the culture at Wix sounds pretty rare actually. I've worked at, so I've, it sounds like I've been working about the same length of time as you have. I got my first job in 2012, but I have in that time rather than working at one company I've worked at I think nine. [31:43] -So yeah. My experience, my, my personal anecdotal experience is that the kind of culture you're describing is pretty rare in the industry.. That's pretty cool. [00:31:51] +So yeah. My experience, my, my personal anecdotal experience is that the kind of culture you're describing is pretty rare in the industry.. That's pretty cool. [31:51] -**Wix Team:** you should drop a visit. Definitely [00:31:53] +**Wix Team:** you should drop a visit. Definitely [31:53] -**Carl Vitullo:** ha. [00:31:54] +**Carl Vitullo:** ha. [31:54] -**Wix Team:** Come see what's up. But you're very right though. Like I have to say I think it's one of the company's main pillars. Like we're gonna keep that vibe, we're gonna keep the atmosphere, we're gonna grow as a company, we're gonna grow as a product, but we're not gonna lose touch with the origin, and that, that's one of the most beautiful things in this company. So yeah. You should definitely stop by. [00:32:13] +**Wix Team:** Come see what's up. But you're very right though. Like I have to say I think it's one of the company's main pillars. Like we're gonna keep that vibe, we're gonna keep the atmosphere, we're gonna grow as a company, we're gonna grow as a product, but we're not gonna lose touch with the origin, and that, that's one of the most beautiful things in this company. So yeah. You should definitely stop by. [32:13] -**Carl Vitullo:** We have a good, sorry. have a good [00:32:15] +**Carl Vitullo:** We have a good, sorry. have a good [32:15] -question from chat coming in. [00:32:18] +question from chat coming in. [32:18] -Fransen is asking how does the actual conversion of visually creative components take place to convert it into legitimate clean, react and CSS code? Yeah. So I guess asking about the process of taking the visual design and turning it into code that you can use yourself. [00:32:36] +Fransen is asking how does the actual conversion of visually creative components take place to convert it into legitimate clean, react and CSS code? Yeah. So I guess asking about the process of taking the visual design and turning it into code that you can use yourself. [32:36] -**Wix Team:** So it's important to mention translating code design to code is not what Codux is about. That was my startup Rapid UI was about. Coded X's approach is very different. You are creating your components visually. You're not starting from a design tool or translating something into code. [00:32:54] +**Wix Team:** So it's important to mention translating code design to code is not what Codux is about. That was my startup Rapid UI was about. Coded X's approach is very different. You are creating your components visually. You're not starting from a design tool or translating something into code. [32:54] -You're working with code since the beginning. It's always working with React and with TypeScript and with the styling solution that you choose. There's no translations at all actually. So we, you just worked with React. You may start your design off in in, with a mock or with a design tool or with something like that kind of lets you play around and explore the space of the problem and see what might work and what might not. [00:33:18] +You're working with code since the beginning. It's always working with React and with TypeScript and with the styling solution that you choose. There's no translations at all actually. So we, you just worked with React. You may start your design off in in, with a mock or with a design tool or with something like that kind of lets you play around and explore the space of the problem and see what might work and what might not. [33:18] -But at a certain point you want to get to the real thing, and that's where Codux enters the picture and really provides. An experience that is code oriented, meaning your code is the source of truth, the files on your hearts, on, on your file system the code in your component. But wrapping that in an experience that's visual and that can actually do some things in a much nicer, leaner, more streamlined sort of way. [00:33:45] +But at a certain point you want to get to the real thing, and that's where Codux enters the picture and really provides. An experience that is code oriented, meaning your code is the source of truth, the files on your hearts, on, on your file system the code in your component. But wrapping that in an experience that's visual and that can actually do some things in a much nicer, leaner, more streamlined sort of way. [33:45] -Not sometimes writing code by hand, character by character is not necessarily the best way to describe a visual thing. And if you've ever created a very complex background in CSS that has like multiple layers and things like that, you might know what I'm talking about. Through the ui, you can do that very easily. [00:34:04] +Not sometimes writing code by hand, character by character is not necessarily the best way to describe a visual thing. And if you've ever created a very complex background in CSS that has like multiple layers and things like that, you might know what I'm talking about. Through the ui, you can do that very easily. [34:04] -But in hand it, like we've all used all sorts of builders on the web for shadows, for backgrounds, for corners, for all sorts of stuff like that. Because they work and they make our lives easier. So why not bring them closer to the table, closer to the code, and closer to our development experience? [00:34:21] +But in hand it, like we've all used all sorts of builders on the web for shadows, for backgrounds, for corners, for all sorts of stuff like that. Because they work and they make our lives easier. So why not bring them closer to the table, closer to the code, and closer to our development experience? [34:21] -**Carl Vitullo:** Yeah, that makes a lot of sense. Little follow up from Roberto. Does Kod Oaks work with Tailwind? [00:34:27] +**Carl Vitullo:** Yeah, that makes a lot of sense. Little follow up from Roberto. Does Kod Oaks work with Tailwind? [34:27] -**Wix Team:** Oh, we've been, we launched our beta on December 5th, so just over a month ago. And I think that's gotta be our highest like the most requested feature, right? Yeah. Top of the list, that's for sure. We are working on supporting Tailwind as we speak. We as Tom said, we just launched a beta like not that long ago. [00:34:46] +**Wix Team:** Oh, we've been, we launched our beta on December 5th, so just over a month ago. And I think that's gotta be our highest like the most requested feature, right? Yeah. Top of the list, that's for sure. We are working on supporting Tailwind as we speak. We as Tom said, we just launched a beta like not that long ago. [34:46] -We didn't support Tailwind. We launched. Launch. But we got so many requests for tailing and we actually believe that it can be a really good experience the way, like the Codux approach of editing and how tailing works. So we are working on figuring out the best solution and the best experience of using tailing within Kodak. [00:35:04] +We didn't support Tailwind. We launched. Launch. But we got so many requests for tailing and we actually believe that it can be a really good experience the way, like the Codux approach of editing and how tailing works. So we are working on figuring out the best solution and the best experience of using tailing within Kodak. [35:04] -So it's not gonna be too long before you'll sit in the product. It's gonna be very close, actually. [00:35:10] +So it's not gonna be too long before you'll sit in the product. It's gonna be very close, actually. [35:10] -**Carl Vitullo:** Very neat. Yeah. I can see how it might not be a sort of a natural extension. If you're already working on code, interacting with code from a visual perspective, then you know that you, that doesn't obviously backport, into working with Tailwind. So you'd, you to work with Tailwind, you would need to then operate on Tailwind Primitives rather than code, I guess is what I'm trying to say. [00:35:35] +**Carl Vitullo:** Very neat. Yeah. I can see how it might not be a sort of a natural extension. If you're already working on code, interacting with code from a visual perspective, then you know that you, that doesn't obviously backport, into working with Tailwind. So you'd, you to work with Tailwind, you would need to then operate on Tailwind Primitives rather than code, I guess is what I'm trying to say. [35:35] -**Wix Team:** Yeah. And it's a bit different from like the editing class names and like selectors and it's slightly a different approach. It's very similar in many ways, but the editing experience I'm using those classes in a lot of them on each of my elements usually to style them. Slightly different approach. [00:35:53] +**Wix Team:** Yeah. And it's a bit different from like the editing class names and like selectors and it's slightly a different approach. It's very similar in many ways, but the editing experience I'm using those classes in a lot of them on each of my elements usually to style them. Slightly different approach. [35:53] -Nothing that is too too different or too complex. We just want to give a really good experience when using tailwind. It's all so visual. And this is what we're working on right now. And I think in general, like if you're working with a design system, whether that's end or something of your own th those are places that Codux could really shine because you've already have a lot of the building blocks. [00:36:15] +Nothing that is too too different or too complex. We just want to give a really good experience when using tailwind. It's all so visual. And this is what we're working on right now. And I think in general, like if you're working with a design system, whether that's end or something of your own th those are places that Codux could really shine because you've already have a lot of the building blocks. [36:15] -Like you have the Lego pieces, and now it's just a question of how you wanna put them together and play with them and see them in various states and situations and really explore how you can create it and what you're trying to do. We currently have already scalable support also. S, css, and yeah, sass, sas, css and Stylable. [00:36:35] +Like you have the Lego pieces, and now it's just a question of how you wanna put them together and play with them and see them in various states and situations and really explore how you can create it and what you're trying to do. We currently have already scalable support also. S, css, and yeah, sass, sas, css and Stylable. [36:35] -All those come supported out of the box including the, like the modules version of CSS and SaaS. Sticking to that component oriented design kind of philosophy. So yeah it's really a question of what tools you prefer to use and what tools fit the problem space. [00:36:50] +All those come supported out of the box including the, like the modules version of CSS and SaaS. Sticking to that component oriented design kind of philosophy. So yeah it's really a question of what tools you prefer to use and what tools fit the problem space. [36:50] -And as time goes on, we'll be looking to add more and more support for new tools and new frameworks and new languages. Even like React is just where we're starting off. We'll be exploring web components, ve solid angular. I don't know. It's, it'll be a question of what the community wants from us. [00:37:09] +And as time goes on, we'll be looking to add more and more support for new tools and new frameworks and new languages. Even like React is just where we're starting off. We'll be exploring web components, ve solid angular. I don't know. It's, it'll be a question of what the community wants from us. [37:09] -It'll be a question of how technically feasible it is. Although Codex is designed from the ground up to, to support and facilitate this. So yeah it's all about choice and en enabling the choice for our users. And obviously you have to start somewhere, right? You have to make those hard decisions of where do I cut it? [00:37:25] +It'll be a question of how technically feasible it is. Although Codex is designed from the ground up to, to support and facilitate this. So yeah it's all about choice and en enabling the choice for our users. And obviously you have to start somewhere, right? You have to make those hard decisions of where do I cut it? [37:25] -Where do I say, okay, this is what I'll start with. And we'll get to all of those technologies and will support more and more. But you have to start somewhere. And we've decided. Like a while ago. This is where we're gonna cut the cut and we want to put it out there. And we wanna listen to the community. [00:37:39] +Where do I say, okay, this is what I'll start with. And we'll get to all of those technologies and will support more and more. But you have to start somewhere. And we've decided. Like a while ago. This is where we're gonna cut the cut and we want to put it out there. And we wanna listen to the community. [37:39] -We want to get people's requests. And it took so little time to start getting requests, especially for Tailwind. I think that we're all happy to just make sure to put it out there as fast as we can and start getting feedback. This is where we are all about today. And I think if anyone had a chance to take a look at the very recent state of JS that just came out for 2022 react is still King of the Hill. [00:38:03] +We want to get people's requests. And it took so little time to start getting requests, especially for Tailwind. I think that we're all happy to just make sure to put it out there as fast as we can and start getting feedback. This is where we are all about today. And I think if anyone had a chance to take a look at the very recent state of JS that just came out for 2022 react is still King of the Hill. [38:03] -That's what most people use, that's the most common solution out there. And it makes a lot of sense for us to start there. Even all, like all of the development at Wix is done using React. So it's really our breaded. [00:38:16] +That's what most people use, that's the most common solution out there. And it makes a lot of sense for us to start there. Even all, like all of the development at Wix is done using React. So it's really our breaded. [38:16] -**Carl Vitullo:** Very nice. Yeah. Should we pick up talking about sort of our different journeys through the tech industry? We were talking with, Omar was speaking before, but yeah, I'd love to hear some of the, peter, some of your story of transitioning from a designer to a developer. [00:38:33] +**Carl Vitullo:** Very nice. Yeah. Should we pick up talking about sort of our different journeys through the tech industry? We were talking with, Omar was speaking before, but yeah, I'd love to hear some of the, peter, some of your story of transitioning from a designer to a developer. [38:33] -**Wix Team:** Yeah, it's tough. It's interesting, right? It's not the craft is how to say separate. Like it's not the same. But it's interesting. I actually applying it everything on, so coding and in interactive experiences. The, I like styling in css, right? It's same kind. Stylability is also thing of mind. [00:38:57] +**Wix Team:** Yeah, it's tough. It's interesting, right? It's not the craft is how to say separate. Like it's not the same. But it's interesting. I actually applying it everything on, so coding and in interactive experiences. The, I like styling in css, right? It's same kind. Stylability is also thing of mind. [38:57] -But yeah, it's it's interesting. [00:38:58] +But yeah, it's it's interesting. [38:58] -I think it's like speaking as a longtime friend of Peter I don't know a lot of people who has, who have that level of passion for interactive experiences. It's we get a an opportunity to create complex things. And with that comes the challenge of making them accessible. [00:39:15] +I think it's like speaking as a longtime friend of Peter I don't know a lot of people who has, who have that level of passion for interactive experiences. It's we get a an opportunity to create complex things. And with that comes the challenge of making them accessible. [39:15] -Yeah. Yeah. It's true. It's true. And accurate, I guess from my point of view, like seeing it from the outside. But all a lot of our people like are great, but once you have that passion for interaction, for the styling aspect of things I can feel that like really is affected from your background. [00:39:34] +Yeah. Yeah. It's true. It's true. And accurate, I guess from my point of view, like seeing it from the outside. But all a lot of our people like are great, but once you have that passion for interaction, for the styling aspect of things I can feel that like really is affected from your background. [39:34] -I, I believe, thanks guys. I love. Yeah. Also if you think about your interactions with our designs, with our UX people Yeah. I have stakes on like sides, like the. In UX and in our other development teams. So I have my opinions over there and also there, which is interesting. Yeah. But yeah, it's true. It's sometimes hard to keep those up, Yeah. to to remember that you're the developer and in this conversation, I know it's speaking in the name of our designers, it's probably hard for them as well. [00:40:04] +I, I believe, thanks guys. I love. Yeah. Also if you think about your interactions with our designs, with our UX people Yeah. I have stakes on like sides, like the. In UX and in our other development teams. So I have my opinions over there and also there, which is interesting. Yeah. But yeah, it's true. It's sometimes hard to keep those up, Yeah. to to remember that you're the developer and in this conversation, I know it's speaking in the name of our designers, it's probably hard for them as well. [40:04] -It's true. It's true. But it probably provides value. Yeah, for sure. It's it's like you're talking to people who know their stuff and that always makes it Yeah. A nicer experience. [00:40:16] +It's true. It's true. But it probably provides value. Yeah, for sure. It's it's like you're talking to people who know their stuff and that always makes it Yeah. A nicer experience. [40:16] -**Carl Vitullo:** Yeah. I guess it's, I guess having. Crossed a barrier like that for teams like, a lot of the time design and development is very siloed. It just because it's very different domains, it's very different problem spaces with very different language that's been built up and, the jargon, terminology and tools. [00:40:33] +**Carl Vitullo:** Yeah. I guess it's, I guess having. Crossed a barrier like that for teams like, a lot of the time design and development is very siloed. It just because it's very different domains, it's very different problem spaces with very different language that's been built up and, the jargon, terminology and tools. [40:33] -So I guess having started in one and progressed into a different division there, that can be, that can leave you in a position where you are able to speak to both teams very effectively. So I could see how that could be a very valuable spot to be in. [00:40:48] +So I guess having started in one and progressed into a different division there, that can be, that can leave you in a position where you are able to speak to both teams very effectively. So I could see how that could be a very valuable spot to be in. [40:48] -**Wix Team:** I agree. Trade off as well. It's I have opinions on styling and stuff like that. Also on coding and algorithms and Yeah. [00:40:58] +**Wix Team:** I agree. Trade off as well. It's I have opinions on styling and stuff like that. Also on coding and algorithms and Yeah. [40:58] -Everybody against me in [00:40:59] +Everybody against me in [40:59] -**Carl Vitullo:** remember which hat you're wearing. [00:41:00] +**Carl Vitullo:** remember which hat you're wearing. [41:00] -**Wix Team:** Yeah, I know. Even though like I'm a developer in the end of the day. [00:41:05] +**Wix Team:** Yeah, I know. Even though like I'm a developer in the end of the day. [41:05] -**Carl Vitullo:** Sure. [00:41:05] +**Carl Vitullo:** Sure. [41:05] -**Wix Team:** But in this era of kinda trying to bridge you said like you talked about different silos or something like that, like separated mindsets for design and development. [00:41:16] +**Wix Team:** But in this era of kinda trying to bridge you said like you talked about different silos or something like that, like separated mindsets for design and development. [41:16] -I that's all changing, like these two are getting closer together. The tools try to bring them closer together, not just Codux obviously of the industries is full with these changes like design tools or prototyping tools are all of it is more oriented to be like more similar to how the implementation works. [00:41:34] +I that's all changing, like these two are getting closer together. The tools try to bring them closer together, not just Codux obviously of the industries is full with these changes like design tools or prototyping tools are all of it is more oriented to be like more similar to how the implementation works. [41:34] -It's all trying to bridge and connect better to, to one another. I can feel it for many years, obviously with my experience, but you can see it throughout the entire industry. It is a big advantage. I think like it also it's a con, it's a continuation of the conversation we had earlier about like the massive growth of capabilities and features in, in The web and that problem space. [00:41:58] +It's all trying to bridge and connect better to, to one another. I can feel it for many years, obviously with my experience, but you can see it throughout the entire industry. It is a big advantage. I think like it also it's a con, it's a continuation of the conversation we had earlier about like the massive growth of capabilities and features in, in The web and that problem space. [41:58] -But the thing is that progression has happened in separate silos. Designers used to work with Photoshop to create websites, and you would create, you, you were able to create all of these possible designs that you would never be able to implement because the capabilities just weren't there. [00:42:12] +But the thing is that progression has happened in separate silos. Designers used to work with Photoshop to create websites, and you would create, you, you were able to create all of these possible designs that you would never be able to implement because the capabilities just weren't there. [42:12] -So then you had either illustrator or stuff like that, and then Sketch came along and now Figma is the hot stuff. And all of those things are trying to of bring designers closer to the real thing. And similar things have happened with perhaps product managers and their mock prototyping tools or with QA engineers or automation engineers and the environments that they have to test and validate and make sure that things work. [00:42:38] +So then you had either illustrator or stuff like that, and then Sketch came along and now Figma is the hot stuff. And all of those things are trying to of bring designers closer to the real thing. And similar things have happened with perhaps product managers and their mock prototyping tools or with QA engineers or automation engineers and the environments that they have to test and validate and make sure that things work. [42:38] -All of that. Exploded. All of those users or audiences have gotten new tools with new things that they can do, but they didn't go back and interlink. And that's where our industry finds itself now, trying to find ways of reducing. Barriers between stakeholders. So there's no reason I'm sure many people can relate to the experience of ping I call it ping ponging with a designer where you get a design and you implement it, and then you get it, give it back to the designer, and he looks at it and he is oh, yeah, that's great, but three pixels here are off, and that color of that background isn't exactly right and all of those things. [00:43:20] +All of that. Exploded. All of those users or audiences have gotten new tools with new things that they can do, but they didn't go back and interlink. And that's where our industry finds itself now, trying to find ways of reducing. Barriers between stakeholders. So there's no reason I'm sure many people can relate to the experience of ping I call it ping ponging with a designer where you get a design and you implement it, and then you get it, give it back to the designer, and he looks at it and he is oh, yeah, that's great, but three pixels here are off, and that color of that background isn't exactly right and all of those things. [43:20] -So he sends it back to you and you fix that, and then you send it back to him. And now he's okay, that's great, but we've gotten a change in the spec and now we need to do something slightly different here. And you just keep going over and over, even for things that are like small or mundane and if only that person could do it themselves, right? [00:43:36] +So he sends it back to you and you fix that, and then you send it back to him. And now he's okay, that's great, but we've gotten a change in the spec and now we need to do something slightly different here. And you just keep going over and over, even for things that are like small or mundane and if only that person could do it themselves, right? [43:36] -So the industry is looking for new ways of onboarding stakeholders from different domains, providing them with tools that are familiar to them, that solve the problems that they need. Without compromising the experience of any of the other users, [00:43:52] +So the industry is looking for new ways of onboarding stakeholders from different domains, providing them with tools that are familiar to them, that solve the problems that they need. Without compromising the experience of any of the other users, [43:52] -**Carl Vitullo:** Yeah. I really like what you said about getting stakeholders CL closer to. Closer to each other. I think that's a, I think that's a really powerful thought and a really good way of framing tools like this. [00:44:03] +**Carl Vitullo:** Yeah. I really like what you said about getting stakeholders CL closer to. Closer to each other. I think that's a, I think that's a really powerful thought and a really good way of framing tools like this. [44:03] -**Wix Team:** We can proudly say that our ux designers work on codes in codes. Like they can jump into the product they can jump into the product and change whatever they want. Like they wanna realign, recolor, change, fonting, chase font, spacing. It doesn't really matter. It's all css at the end of the day, or Stylable at the end of the day in our case. [00:44:24] +**Wix Team:** We can proudly say that our ux designers work on codes in codes. Like they can jump into the product they can jump into the product and change whatever they want. Like they wanna realign, recolor, change, fonting, chase font, spacing. It doesn't really matter. It's all css at the end of the day, or Stylable at the end of the day in our case. [44:24] -But yeah, just give them, empower them, let them be in, in your part of the neighborhood and let them play. And I guess look at the same source. That's one of the biggest upsides of this whole thing. It's not just like the power to do on my own. It's like there are no separated sources that are created along this whole like, complex situation that you've described just now. [00:44:47] +But yeah, just give them, empower them, let them be in, in your part of the neighborhood and let them play. And I guess look at the same source. That's one of the biggest upsides of this whole thing. It's not just like the power to do on my own. It's like there are no separated sources that are created along this whole like, complex situation that you've described just now. [44:47] -A lot of sources of truth are created and that can cause chaos in many cases. So putting them all together in that one place just that can eliminate so much troubles and like process pain, yeah. Yeah. Just, having a new feature kind of request come out and then needing to update your prototype and then update your design, and then update the actual implementation and making sure that all of your QA and automation things are supporting this new feature. [00:45:13] +A lot of sources of truth are created and that can cause chaos in many cases. So putting them all together in that one place just that can eliminate so much troubles and like process pain, yeah. Yeah. Just, having a new feature kind of request come out and then needing to update your prototype and then update your design, and then update the actual implementation and making sure that all of your QA and automation things are supporting this new feature. [45:13] -That's massive amounts of work. That could probably be streamlined in various ways. [00:45:18] +That's massive amounts of work. That could probably be streamlined in various ways. [45:18] -**Carl Vitullo:** Yeah. Makes a lot of sense. All right, we are, we're coming up on 7:00 PM here. We had budgeted about an hour for this. Anything you, any, anything else you guys would like to talk about before we get off here? [00:45:31] +**Carl Vitullo:** Yeah. Makes a lot of sense. All right, we are, we're coming up on 7:00 PM here. We had budgeted about an hour for this. Anything you, any, anything else you guys would like to talk about before we get off here? [45:31] -**Wix Team:** Wow. I dunno, I think we've covered like a lot of our bases. We've definitely spoken about like the various aspects that we're interested in the relationships between stakeholders and the project. How do web got its shape shaped? Its path throughout the last decade and where we feel it's going. [00:45:49] +**Wix Team:** Wow. I dunno, I think we've covered like a lot of our bases. We've definitely spoken about like the various aspects that we're interested in the relationships between stakeholders and the project. How do web got its shape shaped? Its path throughout the last decade and where we feel it's going. [45:49] I can talk about Stylable or Codux or any of that for hours on end, but that's probably for another time. So yeah. Yeah. I think we've covered a lot of things. From 086ea074e3af3b28498ec982802e75d9d4539f2e Mon Sep 17 00:00:00 2001 From: Carl Vitullo Date: Sun, 9 Nov 2025 21:32:47 -0500 Subject: [PATCH 3/3] Fix /transcripts rendering --- src/pages/transcripts.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pages/transcripts.tsx b/src/pages/transcripts.tsx index 4bc7da2..f1e84ab 100644 --- a/src/pages/transcripts.tsx +++ b/src/pages/transcripts.tsx @@ -38,7 +38,10 @@ export default function Transcripts({

    Transcript from {date}

    -
    +
    )} @@ -68,7 +71,7 @@ export async function getStaticProps() { title: latest.title, description: latest.description, date: latest.date, - html: processMd(latest.content).html, + html: processMd(latest.content, { wrapFirstList: true }).html, }, }, };