diff --git a/src/transcripts/tmir-2025-01.md b/src/transcripts/tmir-2025-01.md index 9589e18..791ba29 100644 --- a/src/transcripts/tmir-2025-01.md +++ b/src/transcripts/tmir-2025-01.md @@ -52,7 +52,7 @@ html li p { **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] -I am Carl, I am a staff product developer and freelance community manager here at Reactaflux, 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: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] @@ -98,13 +98,13 @@ They are infinite. red. [00:04:04] ## [React query 5.63](https://bsky.app/profile/tkdodo.eu/post/3lfaeteulds2i) -**Carl:** But React Query put out 5. 63 looks like, you know, I mean, it's a 63 point release, like there's, it's gonna be some fine tune and revisions, but uh, looks like they added an ability to unsubscribe an observer from the cache which should help in React Native. So, yeah, PanStack, great, great resource. +**Carl:** But React Query put out 5.63 looks like, you know, I mean, it's a 63 point release, like there's, it's gonna be some fine tune and revisions, but uh, looks like they added an ability to unsubscribe an observer from the cache which should help in React Native. So, yeah, PanStack, great, great resource. ## [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 [00: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, +**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) @@ -126,7 +126,7 @@ 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 [00: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] @@ -134,23 +134,23 @@ And I actually happen to be squarely in the middle of that. So I'm going to be d 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] -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. [00:09:03] They were very slow, you know, dealing with the, the Webpack upgrade. [00:09:07] **Carl:** Right [00: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. +**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 V 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. [00: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. [00: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. [00: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. [00: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] @@ -158,17 +158,17 @@ And if it breaks, they don't know what their other options are. [00: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] -80 percent odd, you find create React app. [00:12:38] +80 percent odd, you find Create React App. [00: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] 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] -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 Train 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. [00: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. [00: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 V 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. [00: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] @@ -178,11 +178,11 @@ The good news is the immediate problem appears to be getting solved. Doesn't tou 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] -**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. [00: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. [00: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 And 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. [00: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] @@ -204,7 +204,7 @@ And a lot of the React team's decisions and statements over the last few years h 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 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. [00: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] @@ -212,7 +212,7 @@ Yeah [00: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] -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 r 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. [00: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] @@ -220,9 +220,9 @@ and you know, they had a good reason to make a change. You know, they were tryin 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] -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. [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 [00:25:05] -json 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. [00: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] @@ -264,17 +264,17 @@ And they, they talk about some of where and, and when to use it, but they don't **Carl:** Yeah. [00:31:24] -**Mark:** docs are wonderful. Dan Port is 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. [00: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] -Here's how you can start a project. And by the way, if you're like using Next or Vita 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. [00: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] 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] -Labels you know, the idea of using the TC 39 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. [00: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] @@ -326,7 +326,7 @@ But seems cool. I don't know if view transitions look great. And being able to e 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] -**Carl:** Yeah, and I used like React Motion Cheng Lu'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. [00: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] @@ -356,9 +356,9 @@ it a flag that says "we do this not because it is easy, but because we thou ## [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. [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 [00:43:31] -js's 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. [00: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] @@ -374,9 +374,9 @@ as I'm charting my year in January I have a couple projects booked for the next **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] -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. [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 [00:46:25] -ts 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. [00: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] @@ -394,7 +394,7 @@ All right, Mo, I know you need to drop off shortly. Any other points you want to ## [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, [00: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] @@ -406,7 +406,7 @@ And to make matters more confusing now, there's this use cache directive that th 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] -**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 Reactaflux 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. [00: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] @@ -427,13 +427,13 @@ And I quite like that as a concept. [00:51:27] **Mo:** So yeah, that was my little, my rant. [00:51:55] -**Carl:** . Cool. Yeah, +**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] -**Mark:** Yeah, I, I skimmed it a bit. So it's a, it's a post from Dedo who worked maintains Sten, created Jota and Tio 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. [00: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] @@ -451,7 +451,7 @@ So, being able to do it without crazy layout logic in JavaScript sounds great. M ## 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. [00: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] @@ -477,7 +477,7 @@ this month. [00:55:56] ## [A checklist for your `tsconfig.json`](https://2ality.com/2025/01/tsconfig-json.html) -**Mark:** Axel Rash Meyer 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. [00:56:27] pretty sure that Matt Pocock has done a similar post somewhere. @@ -511,7 +511,7 @@ Neat. Love it. I believe it's currently Chrome only, but yeah, I mean, hopefully **Carl:** And a small, extremely small update to something we discussed previously, the Deno organization's campaign to get Oracle to free the JavaScript trademark. [01:00:00] -Oracle has Declined to voluntarily withdraw the trademark. So Dino is doing legal things to advance the process. This is a legal drama. So this is probably going to be something we're still talking about in like 2026. And I would not surprise me if it's like 2030 before the trademark actually, like before this case settles, let's say. [01:00:23] +Oracle has Declined to voluntarily withdraw the trademark. So Deno is doing legal things to advance the process. This is a legal drama. So this is probably going to be something we're still talking about in like 2026. And I would not surprise me if it's like 2030 before the trademark actually, like before this case settles, let's say. [01:00:23] But yeah, neat. Maybe I'll stop giving updates, but Oh God, it would be so nice if Oracle did not own JavaScript. @@ -529,14 +529,14 @@ Cool. Okay. That's all of the links we have for you this month. Thank you for ou **Mo:** Lovely to be here with you all again every single month. it's always a pleasure. Thank you, Mark. Thank you, Carl Thank you to everyone who's listening in and see you all in February [01:01:59] -**Mark:** Yep, thank you, appreciate it. And if you want to stay up on the current drama that I am involved in in the React ecosystem, please follow me on BlueSky or watch for my upcoming blog post within the next few days. +**Mark:** Yep, thank you, appreciate it. And if you want to stay up on the current drama that I am involved in in the React ecosystem, please follow me on Bluesky or watch for my upcoming blog post within the next few days. ## [Follow us on Bluesky!](https://bsky.app/profile/tmir.reactiflux.com) -**Carl:** Oh yeah, we can follow, you can actually follow this podcast on BlueSky too. We are tmir. reactiveflex. com and I'm going to put a link in here. Cause you know what? I should do that. [01:02:23] +**Carl:** Oh yeah, we can follow, you can actually follow this podcast on BlueSky too. We are tmir.reactiflux.com and I'm going to put a link in here. Cause you know what? I should do that. [01:02:23] -We gather sources from thismonthinreact, bytes. dev, reactstatus, nextjsweekly, the reactjs subreddit, here in Reactaflux from the techreadsandnews channel, and sometimes even directly from people publishing content. [01:02:38] +We gather sources from thismonthinreact, bytes.dev, reactstatus, nextjsweekly, the reactjs subreddit, here in Reactiflux from the techreadsandnews channel, and sometimes even directly from people publishing content. [01:02:38] -If you see anything that would be useful for us to discuss or just that you want to share with the community. Definitely pop it in the Tech Reads the News channel, or if you like, you can send it to hello at reactiflux. com. I will read literally anything you send to that. So, yep, go ahead. If this is a show that you get value from and want to support, best way to do so is by submitting a review, wherever you listen, or tell people about it. [01:03:02] +If you see anything that would be useful for us to discuss or just that you want to share with the community. Definitely pop it in the Tech Reads the News channel, or if you like, you can send it to hello at reactiflux.com. I will read literally anything you send to that. So, yep, go ahead. If this is a show that you get value from and want to support, best way to do so is by submitting a review, wherever you listen, or tell people about it. [01:03:02] It's great. Help us grow. Woo!