Gil Fink - AUDIO EDIT === Noel: [00:00:00] Hello and welcome to Pod Rocket, a web development podcast brought to you by Log Rocket. I'm Noel, and today I am here with Gil Fink. ~Um, ~he's the Sparky, CEO. ~Uh, he's got a long, long history. Uh, Microsoft, been a Don doing a bunch of stuff.~ ~Um, but ~and we're here today to talk about making sense of web rendering patterns. How's it going, Gil? Gil: I am fine. Thank you. ~How are you? I heard that you were sick a little bit, uh, last week.~ Noel: ~Yeah. Yeah, I was out. Well, it's weird. I was like, I wasn't feeling great at the end of last week, but I was okay. And then earlier this week, like I, I, I thought I was gonna, you know, fully recover and then like I dove again and I, now I'm all congested and coughing. I dunno if it's like been two separate things or one with a weird pattern.~ ~But~ Gil: ~Yeah,~ Noel: ~Yeah.~ Gil: ~the.~ Noel: ~I know, I know. And I've got a, I've got a, like a 17 month old and it's just a disease vector. It's like constant, constant stuff. But, um, anyway, um, let's talk about web rendering pattern.~ So ~this, ~this was ~a, ~a talk you gave at,~ uh,~ IJS London, or is that correct? Gil: ~It's a, ~it's a talk. I gave an an,~ uh,~ international JavaScript conference in Munich as a keynote, and,~ uh,~ I'm going to deliver the same,~ uh,~ keynote also in,~ uh,~ IGS International JavaScript Conference in London in,~ uh,~ two months, I think, or three months,~ uh,~ from now. ~So, uh.~ Noel: ~Gotcha. That makes more sense.~ ~Perfect. Cool. Um, ~ Gil: ~from, ~from my history,~ uh,~ it's,~ uh,~ related to ~I've, ~I've seen so many changes,~ uh,~ because,~ uh,~ as you said,~ uh, I'm,~ I working in the high tech industry for ~more, ~more than 20 years. So I've seen a lot of changes in web development. Across all those years and,~ uh, uh, ~it's interesting to see that,~ uh,~ old patterns are coming back and,~ uh,~ new patterns emerge and things [00:01:00] like that. And then the wheels start to spin again, and you see the old patterns coming back again in different ways ~or different, uh, kind of, uh, things.~ Noel: Yeah. Yeah, it kinda, it ~kind of ~seems like, you know, concerns shifted a little bit. For a long time it was all ~kind of ~about, we thought user experience and developer productivity, and it was like, well, let's push everything to the front end Stuff's pretty quick. And I think things got pretty good there. We hit ~like, you know, ~a local maxima ~on that, ~on that curve, and now it's kinda like, okay, ~well ~what else can we do? ~It's like, well, we can increase performance by taking on some of these old things, but I do think it is. Led us to a state where it's, um,~ Gil: ~It's interesting.~ Noel: ~It's a lot.~ Gil: It's very interesting topic because ~the, the, ~the thing is you are~ are doing that, choose taking that, uh, you know, ~pick the, one of the patterns at the beginning of the,~ uh,~ application creation, and then you are like stuck with it. Some sort of way, or from sometimes the framework that you are choosing is, ~you know, ~hiding all the details and does for you ~the, ~the patterns that,~ uh,~ we're going to talk about in this talk. ~So, uh, it's like, uh, uh, ~this is ~the, ~the starting point and I think that,~ uh,~ if. People aren't aware of that. ~Uh, the, this, uh,~ this stock is,~ uh,~ covering things like,~ uh,~ server side rendering or SSR or CSR or client side rendering, static rendering, what it's,~ uh,~ all [00:02:00] about. And,~ uh,~ even islands and consumability, which are, then ~I want new kids, ~new kids on the block. But these are ~the, the, ~the buzz things right now ~in the, ~in the industry. ~Uh, ~and we see some frameworks that emerged lately that deliver those architecture or those things. ~Uh, so, uh, ~if you are newcomer to web development, uh, of all, you need to, ~you know, un ~understand what is the problem that we're trying to solve. Noel: ~Mm-hmm. ~ Gil: So when, so we're trying to solve ~the, ~the. Way to ship content or meaningful content to the client. ~That's, ~that's the idea of rendering patterns and they are ~very, very, very, uh,~ variety of,~ uh,~ ways to do that. And,~ uh,~ let's,~ uh,~ drill down into them. Noel: Yeah. Yeah. ~I think, ~I think you mentioned it here and I want to, I wanna touch on it briefly that. ~like, ~framework is a very large decision here where ~it, ~it feels like the way that this decision actually manifests for most developers is what framework you're gonna be using or framework. A framework ~kind of ~with what flags [00:03:00] enabled, ~you know, ~like ~how, ~how are you going to use a given framework as something like. Next can kind of be done several ways or ~like, you know, um, ~s felt like you can, you could use spelt kitten a few different ways, but ~like, ~I think that this manifests largely in like, what framework are you choosing to use and what does it support and ~kind of what are, its, you know, the, the,~ what's the first class citizen there? Gil: Out of the box,~ uh,~ you said next, or, I'm working,~ uh,~ a lot with next and,~ uh,~ lately. ~Uh, and, uh, they, ~they are coming with SSR in mind. They started as a server side rendering,~ uh,~ framework. And now they're also giving you opportunity to,~ uh,~ do static rendering with flags or with ways of ~implementation~ implementing pages. ~Uh, ~but you need to know that they do that and you need to know that at first they came out as a SSR framework. If you're talking about,~ uh,~ for example, astro. Which is,~ uh,~ islands framework then what is islands? If you are like taking this technology,~ uh,~ understand what you're trying to solve with ~the, the, ~the island architecture.[00:04:00] If you are going to quick,~ uh,~ quick is a resumable framework. So if you picked quick, you're going to do resum ability in your,~ uh,~ implementation,~ um,~ and ~uh, ~et cetera, et cetera. ~So, uh, ~there is no silver bullet to all of the solutions. Each framework comes with the. It's a trade off of,~ uh,~ practices and,~ uh,~ it's,~ uh,~ it's up to you ~at the, ~at the beginning of the project to pick,~ uh,~ the framework that,~ uh,~ you want. ~Um, ~or I don't know if you want, but your managers want Noel: ~Yeah, yeah, ~yeah. There's the balance of ~the, ~the one you want and optimal performance and, ~you know, uh, ~capacity to make changes and ~all these, ~all these things. It's always the balance, right? Gil: Yeah, but un understanding what are the impacts on performance are good knowledge at the beginning of the project. 'cause if you're like,~ uh,~ going the SSL way, then ~the, ~the performance is like you are going to. Create all ~the, the, ~pages on the server side and then ship them to the client [00:05:00] baked, and the client is ~like, uh, you know, uh, ~getting it and rendering it. So the time to the first bite of the content is going to be ~very, very long. Not very long, but~ long,~ uh,~ because of the choice that you did. And if you are like having,~ uh,~ infrastructure in the cloud, then you are going to pay a lot of. Money to your cloud provider because you are going to spin a lot of,~ uh,~ CPU to generate each and every page for each and every user that comes to your location. So ~this is, ~this is a trade off, but ~uh, ~if you are in the CSL way, the client side rendering way,~ uh,~ for example,~ uh,~ I don't know if you used tent stack start. They,~ uh,~ shipped ~ax, shipped a new, not not new, but~ a framework that gives you ~the, ~the ability they are more CSR directed. ~Um, ~so if you are going that way, then you are like shipping the to the client that the page and it's like rendering,~ uh,~ I won't say very fast 'cause you are waiting too old. The. Hydration. [00:06:00] If you are using React or Angular or any other framework that uses hydration underneath, you are like wasting a lot of time with hydration to render the page in the client side. So you are going to put spinners or loaders or all those, ~uh. ~For, to say bad practice things,~ uh,~ in order to say to the user, Hey, we're waiting for everything to, ~you know, ~load. ~Wait, wait, wait, wait, ~wait. And even though, even after that, the page is like loading. You have ~a ~a waiting time up until all the event handlers are wired in the application. So you are like with hydrations stall, the interactivity of your page. That's,~ uh, not a, ~not a good way of,~ uh, you know, ~for user experience. So you are like paying ~in, ~in, in one way or the user experience, but you give another user experience,~ like, um, ~like showing the page,~ uh,~ super fast or the first byte is loading very [00:07:00] fast. So ~ uh,~ those are ~the, ~the things that then we need to remember the trade off each and every pattern gives you a, ~you know, ~a good way of,~ uh, uh, ~implementing some stuff, but takes some other stuff like, for example, performance,~ uh,~ or things like,~ uh, uh, ~interactivity and et cetera, or fast interactivity, should I say. Noel: Right, right. Yeah, I, I think ~I, I feel that most people, ~most developers at least, that are spending ~any, ~any significant time in this space kind of have an intuition on. If a given app, ~you know, um, ~is reasonable to have it be like almost fully static. It's like a, okay, there's like very little meaningful interactivity here. Maybe there's like a couple things on a couple pages, but we can serve it static. There's not enough trade off for it to really matter. And then ~I think devs also. Kind of, at least may, maybe this is anecdotal, but~ I suspect that devs also know, like, ~this is, you know, or they have an intuition around this, is,~ this app is like a dashboard that people are leaving open for a long time or they're at all day. And it's like, we could probably leave this client side and not, ~you know, take, like, have, ~have too much of a performance hit because it's all gonna be data in and data out at the end of the day Anyway, I [00:08:00] think ~that ~that discussion is a little more nuanced. ~Um, ~but ~do, ~do you think that. ~I guess, do you think that ~that is right, like a correct impulse or~ is there like, should, ~should those devs be ~kind of, you know, ~in inspecting that decision a little more and looking at something ~like, ~like partial server side rendering or the islands architecture? Gil: Again, as you said, it depends on what you're building and what are your users if you are building. A blog or a news,~ uh,~ website, then most of the content that you are going to serve is static. ~So, uh, ~so why not go in the static rendering way? ~Um, ~and then add a little bit of interactivity if you need,~ uh,~ some inter interactivity buttons or something like that. If you are creating a full blown application that is gated by some,~ uh, uh, you know, uh, ~logging,~ uh,~ and et cetera, probably you are going to go to the client side rendering way. But,~ uh,~ in most of the frameworks today, for example, in,~ uh,~ next in,~ uh, in, ~in other frameworks,~ uh, that, ~that ~I, ~I used, you have, you can [00:09:00] combine,~ um,~ some of the patterns together or create,~ um, um, how should I say it, uh, um, ~progressive enhancement of your,~ uh,~ entire application. Meaning you are going to ship~ some, uh, you know, uh, the, the, the, the layout,~ the main layout as a static,~ uh,~ rendered,~ uh,~ HTML and then,~ uh,~ add the content or things like that with the client side, the. Fetch or,~ uh,~ with the hydration or things like,~ uh,~ that,~ and,~ and this is I think where ~the, ~the we're heading. ~Uh, ~but saying,~ uh,~ I'm going to do only CSR or I'm going to do only SSR. It's like you are crippling a little bit. ~Your, uh, your, this, your,~ your hands or what you are doing. Because,~ um,~ today the variety of ways to implement stuff is like enormous. ~Uh, ~so ~this is, ~this is why,~ uh,~ I think that understanding each and every pattern and the trade offs ~we, uh,~ for each pattern, how it is being used or what is the effect on performance,~ uh,~ on your users or performance,~ uh,~ [00:10:00] on the browser or things like that. This is where,~ uh, you, ~you have to understand that the, these topics very well. ~Uh, ~even though you are probably going to pick some framework at the beginning of ~the, ~the application,~ uh,~ building,~ um,~ do it,~ uh,~ wisely and do it with a framework that might have more than one way of implementing rendering. Noel: ~Yeah,~ ~yeah, ~yeah. Is there,~ like,~ again,~ I, I, I feel, ~I feel the decision. It's pretty easy on when to go static, like fully again, whatever, like you said, blogs or some kind of marketing website with ~minimal, minimal, ~minimal interactivity, stuff like that. But again, I think that the decision becomes more nuanced and it's trickier to parse and we're in this ~like, ~do I want. SSR with some kind of hydration. Do I wanna try to use the islands architecture? ~Like, you know, ~is this, is, this are, is my typical u typical user here frequently enough where it's like fine to just go fully client side and ~like ~send it all down the wire once and then from then on it's like fast enough. ~Is there, like,~ are there good signals that you've found that are ~kind of your, you know, like~ your touch points, your cornerstones on ~how to, ~how to make that decision? Gil: It's [00:11:00] a very,~ uh,~ trial of trial and error. You're trying to analyze ~the, the, ~the current page and what you're building, and through that you will understand,~ uh,~ how to implement it. Okay. It's ~like, uh, ~I won't say page by page because the, there are application with thousand pages. ~Uh, but uh, ~but ~uh, ~mostly a lot of,~ uh,~ things in the application are repeating themselves. So if,~ uh,~ we have a ~very, ~very,~ uh,~ interactive application or page, you will probably want to do CSR in that page. ~Um, ~because. ~Uh, ~you need all the JavaScript,~ uh,~ ready for usage in your client side, and,~ uh,~ you need the ~interaction~ interactivity very fast. And,~ uh,~ you want to book good INP, the,~ uh,~ web, uh,~ uh, uh, ~co vital,~ uh, uh, ~measurement. ~Um, ~on the other hand, if you have,~ uh,~ a page, which is like. ~Uh, ~I don't know. Fees, prices,~ uh,~ something that isn't changing o occasionally you can make it static and [00:12:00] then cash it in a CDN or something like that. And then it's going to be ~very, ~very,~ uh,~ fast loading and,~ uh,~ rendered. And if it's not changing over time, then you gain ~a lot of, uh,~ a lot of,~ uh,~ less cash ~expenses.~ Expenses or things like that. If you have lower interactivity, I will probably go with server side running. I will server side, render ~the, the, the, the, the, ~the page. Or if it's a personalized page with low interactivity, then I will go to server side, the,~ uh,~ rendering and render most of the content in the server. And only the interactivity will be loaded later on. So it's like the, there is,~ uh, the, ~the hunch is how in how much interactivity you want. For example, island, islands Island, a architecture in a ~very, ~very massive interactive page. This is,~ uh,~ something that,~ uh, you know, you, ~you don't gain anything from the island architecture. So the, this is,~ uh,~ this [00:13:00] is ~where, ~where its not shining at all. ~ uh,~ but if you, uh,~ uh,~ want a lot, a lot of interactivity go the CSL,~ the, the several, uh,~ the client side, the rendering way, ~that's the, ~that's the, it's not the rule of thumb, but this is the, ~you know, ~the guts feeling for each and every implementation for a different page in the application. And if the framework that you're using gives you all the opportunities or all the patterns. ~Uh, ~like a lot of ~the, ~the current frameworks we have, then,~ uh,~ you need to understand those things beforehand, before implementing the page, and then just implement it in the right pattern. Noel: Yeah. Yeah. So ~you, ~you brought up there for SSR in particular, and ~I think, ~I think this is ~a good, ~a good,~ um,~ thought that ~like is not, ~is not often considered ~that, ~that, like the, I think the strongest use cases here are often like a personalized content that is not changing for a given user. It's ~like, this is, ~this is what they're gonna see, but they're not gonna have to like. Mutate it or mess with it in any way. And I think that those are very [00:14:00] clean candidates for SSR. Can we talk a little bit then about like in those instances, is SSR always the correct choice or does the island's architecture have some advantages like for given flavors, for given types of apps? Gil: The island architecture, because it's shipping HTML, it's supposed to load faster than SSR because in SSR you are spending a lot of, not a lot, but some sort of time in the server to render the page, the personalized page. ~Um, ~and then you ship it and islands you are shipping the HTML very fast. And then all the islands that the places of interactivity in the, in, in interactivity in near page are like,~ ~ render hydrated later on. ~Uh, so, uh, ~so ~it's a, ~it's a trade off,~ uh,~ again,~ uh,~ how much interactivity there is in the page if there is no interactivity at all. Just one or [00:15:00] two buttons. I don't see a gain,~ uh,~ on,~ uh,~ islands usage or in SSR usage. ~Uh, ~probably they will ~like ~give you plus minus the same,~ not,~ not the same, but,~ uh,~ probably islands will run faster a little bit. But,~ uh,~ SSR will give you. Good enough,~ uh,~ performance,~ uh,~ in terms of,~ uh, the, ~the time of the page rendering. Noel: Yeah. Yeah. Is there,~ um,~ do you think just ~kind of ~in, in your experience, is there significant overhead to trying to utilize the islands architecture versus like a framework that's more SSR outta the box? Gil: ~Um, ~no, I don't think that,~ uh,~ there, there is,~ uh,~ something like that. ~Um, uh, ~it's, it depends on,~ uh,~ your knowledge about the framework and that's it. Okay. Because if you are not coming from, if you have never used Astro,~ uh,~ or Marco,~ uh, the, ~the main,~ uh,~ from the island that gives your islands,~ uh,~ architecture, then it's, it depends on,~ uh, uh, you know, ~[00:16:00] the learning curve of you learning ~the, ~the how to use the framework. And then ~the, it's, uh,~ it's like. Just,~ uh,~ utilize it and that's it. ~Um, and, uh,~ and,~ uh,~ if you're talking about,~ uh,~ frameworks like Remic or Next or whatever,~ uh, um, ~or,~ uh,~ SSR, then ~uh, ~it's,~ uh,~ it's like,~ uh,~ again, you need to know the, how the framework works in order to generate the pages and sometimes, ~uh. Uh, ~the decision is ~like, uh, ~something that,~ uh,~ you'll do and maybe you will regret the decision later on because you use the Island Islands with the islands framework and,~ uh, uh, it's not, uh,~ you have a very interactive pages,~ uh,~ in your application and that. Breaking up all ~the, ~the islands idea. ~Um, ~and,~ uh,~ sometimes they will,~ uh,~ create,~ uh,~ some,~ uh, you know, uh, uh, ~CSR application. I see it a lot,~ uh,~ people running and creating a React application for something which is very static. And, ~uh. Very, you know, you, ~you don't need to hydrate everything in the [00:17:00] client side and wait for it. It's like you could have created it with server side rendering or static rendering and get more or boost your performance. So again, it's understanding what you are going to solve or what is the application you are building. And then,~ uh,~ use ~the, the. I would say~ the right tool ~to, ~to build it. ~Uh, ~that's it. Noel: Yeah. Yeah. ~You, you mentioned, ~you mentioned ~kind of trying to, ~trying to, ~I don't know, uh, not, ~not be surprised by like, ~oh, like, you know,~ you end up actually ~trying, ~trying to do islands architecture and then finding that almost everything needs to be interactive and not being able to utilize it very well. ~Um, is like, have you found that using any of these patterns in real projects. Um, have, ~have you found there to be ~kind of a particular methodology, um, or maybe~ a given framework that is kinda least surprising in your capacity to utilize rendering patterns for the sake of performance? Gil: I would say no. It's ~like, uh. ~I'm mostly coming,~ uh, to, ~to co to companies as a consultant,~ um, uh, um, technical, technical consultant, uh,~ helping them to do the right,~ uh,~ pick at the beginning of the project if this is a project, or sometimes come to clean up all the [00:18:00] mess that,~ uh, uh, ~they did. ~Uh, uh, ~after they picked,~ uh,~ Noel: Yeah. Yeah. Gil: ~the, the, the, ~the application and,~ uh,~ created it,~ um,~ my,~ uh, you know, ~forte is like a performance tuning, so I will ~like.~ Go and understand ~the, what,~ what was ~the, ~the framework that,~ uh,~ is currently being used and how I need to improve the performance of ~the, ~the application or the website that was built. ~So, uh, you know, ~profiling the entire application, understanding what ~the, the, the, ~the customer did and then,~ uh,~ try to solve for them. ~'cause it's not like, uh, I'm just profiling and saying, uh, you solve it. I'm literally solving the, the problems like, you know, uh, uh. loading that they name, they never used, uh, to, to, to, to lazy load models and, uh, ards and things like that. Uh, and, uh, uh, decrease the bundle size of the application or decrease the amount of JavaScript, uh, down downloading, uh, to the client to make the application run faster or.~ ~Uh, or things like that.~ So it's not like utilizing a framework for me, it's like more understanding what is the main issues in performance and trying to adjust the application that they,~ um, they are currently, they, meaning~ the customers are currently building in order to make them move faster,~ uh,~ perform better, and,~ uh,~ maybe impose,~ uh,~ other,~ uh, other, uh,~ patterns. ~For example, it's uh, much more easier to come to a next framework, uh, application or next built application and try to move things around with the, the implementation of, uh, ISR inside of, uh, next or the static rendering that, uh, of, uh, component that next, uh, allows you to, to create. And it's, uh, things like that.~ ~So again, it's. What is my customer is doing and how can I improve what they did?~ Noel: ~Yeah. Yeah. I mean, do you, do you find that, say you're, say you're like, you know, approaching one of these customers. Is there ever, is there ever any, like, ~you've brought up next, a couple times here. Is there, like, are you kind of relieved when you see that they're using next? Do you find any frameworks to be [00:19:00] kind easier ~to, ~to fix and like air quoting or like clean up ~the, ~the worst parts ~is, are there, ~are there some. Where like there's more options available or it's easier to tune given routes,~ like, is, is there, are there some that are particularly problematic when they're used for the~ Gil: ~I would say, I would say something different. Instead, ~when I come and I see next and I understand ~what the, ~what ~the, the, ~the customer try to build, most of the time they. Don't need next to build Noel: ~Hmm. ~Yeah. Gil: ~Uh, ~for example, a customer that,~ uh,~ builds some very massive forms application with next,~ uh, in s Sr, uh,~ without any SSR or static rendering modes. It's like you created a pure CSR application with Next, and you didn't gain anything from the framework itself. Noel: Yeah. Gil: So this is where I like suggest to,~ uh,~ move, not move from next, but,~ uh, to, ~to try and change how things are implemented. ~Um, you, ~you said the next, that this is where, for example, Uck [00:20:00] start could have,~ uh,~ been a better choice,~ uh, to the, to the user.~ ~To the user that,~ to the developers,~ um, or, ~or framework like,~ uh,~ I don't know, quick or even not astro because it's too interactive. ~Okay. But, uh, uh, so it depends on the framework. Not, not the framework, but the, ~me coming to the, to my customers and seeing the framework like next.~ It's not, uh.~ It's not, uh, something that, uh, makes me happy ~or makes me, uh, uh, uh, uh,~ because I will need to understand what's the purpose of the framework. ~You,~ as I said, in one company they used, ~uh,~ next, and they didn't have to use it in another company they used next, but they created an implementation of. Angular models with React. Noel: Mm-hmm. Gil: So it's, it was like, what are you doing? ~A, a company, uh, the, the developer there~ that technically there ~was, uh,~ came from a angular background. ~Uh, they said that the, ~the manager said You need to create something in React. So we created,~ uh,~ angular models and,~ uh,~ angular concepts inside React, and it was like [00:21:00] mind blowing how you can, ~you know, ~wreck an application from the start. Noel: Yeah. Yeah. Gil: ~it's, ~it's not only ~the, ~the framework that you're using. It's what you are building and how you build it. Noel: ~Right, right. Do, do you feel, ~do you feel ~all ~all of these, all kind of four of these major rendering patterns will still be common in ~five,~ five years? Gil: I think that,~ uh,~ we are like currently building ~hybrid pattern or~ hybrid rendering,~ uh,~ apps, and this is going to be how we are going to. Build the application in three to five years from now. ~Um, I, it's, it's~ if a framework will give you the option to use S-S-R-C-S-R and static rendering and you will create with the framework all the options for each page according to what the page needs, then you will gain a lot. So the combination of all these patterns inside one framework. ~Might be very, ~might be very helpful whether there is a framework that,~ uh,~ is doing [00:22:00] this,~ uh,~ currently,~ um,~ there are frameworks that aim to do most of it. ~Uh, ~but,~ uh, uh, ~I don't know about any framework that gives you all the opportunities and, ~you know, ~by a flag euro like this is, this page is like static. This page is ~like. Uh, ~SSR, these pages, CSR, and et cetera, et cetera. Noel: ~Yeah. Are there any, are there any frameworks that you're kind of particularly. Optimistic about kind of on, on that front, like that, that feels like this, this may be the, I know you said there are no silver bullets, but those that will, will be the, like this is the, the case for most apps. If you're not doing X, y, z given thing, like we'll probably you'll probably wanna do this.~ Gil: ~Okay. I, I will be, I will take the consultant, uh, hat right now. Say, it depends. I don't have, uh, uh, the chosen framework or something like that. Uh, most of the time it depends on the, on my customers. I'm very happy to learn more about other frameworks as well. Uh, I had the opportunity to, to use astro in, uh, one, uh, uh, customer and the next, in another customer remix.~ ~Uh, and, uh, quick, uh, for, for some, some. Sometime and, uh, I, I don't have any favorite framework. Mostly today I'm like writing React code mostly. Uh, but uh, but uh, you can write, react inside the Uck start or in remix or in next or whatever. Whatever you you want. So with the, with the, the, the, the library and the, the frameworks are like, uh, the, the on come on top of the, the currently used library.~ Noel: ~Yeah. Yeah. But I, I, yeah, I, I think that that is fair. I'm just, I'm curious, again, given your perspective of using all of these frameworks, like I don't, ~I don't think most devs have an opportunity or the burden or the privilege, depending on your perspective of ~like having, ~interacting with all these frameworks with much frequency. ~Do you, do you feel, uh,~ is there any that ~you're kind of more. The~ seeing the direction that the current development is going, that you're ~kind of ~more like ~this, ~this looks like, ~you know, ~in the next few years, it may be the one that we end up using, like more often than not in a lot of apps because it solves most of the problems pretty well. ~Is like, do you have, ~do you have any of those that you're ~kind of ~a little bit more optimistic about or keeping a closer eye on? Gil: It's fair question. ~Uh, ~I think that,~ uh,~ currently we're like running forward ~the um, um, like ~seeing two, I think frameworks in the React. that will probably stay for a couple of more [00:23:00] years. It's like next JS and the start. I've already mentioned them. Noel: Yeah. Gil: ~And, ~and,~ uh,~ whether to go to each of one of them. It's ~like, uh, ~the decision of,~ uh, of~ you, the listeners of the podcast. Noel: Yeah. Gil: ~It's like, ~if you want CSR, then start is your friend. If you want SSR static rendering. ~Uh, ~then,~ uh,~ next is more like your friend and, ~uh. You, ~you do ~the, the, ~the picking of,~ uh, the, ~the framework that you're going to use. ~Uh, ~but these are the most,~ uh,~ I think,~ uh,~ useful frameworks to know today in the react,~ uh,~ world. ~Uh, ~and they will probably stay for a couple of more years,~ uh,~ in my opinion. Noel: Yeah, I think that makes sense. ~Um, ~if you had to, if you had to impart listeners with one rule about ~kind of ~thinking about rendering strategies ~and, ~and how to choose them for a given application or, ~you know, ~business ask, ~is there, ~is there ~any,~ anything you'd kinda suggest they think about or a perspective that they take? Gil: Learn what you want. [00:24:00] To doing the current page before you're implementing it. Okay. ~That, that's the, ~that's the rule before implementing design, how we want to implement it. If ~the, ~the page is super interactive, probably go the CSL way. If the page is like not interactive at all, static rendering, if it's. ~Uh, ~less interactive or not a lot of interactivity,~ uh,~ islands or,~ uh,~ SSR depends on,~ uh,~ whatever the, these are the main, ~you know, ~rule of thumbs that I'm using,~ uh,~ today. Noel: Nice. Nice. ~Well, I think, ~I think that's ~kind of ~a,~ as,~ as good a note as any to end on. ~Uh, ~Gil, is there anything else ~you wanted to, ~you wanted to mention or bring up before we wrap here? I. Gil: I think we covered everything. Noel: Perfect. Perfect. ~Well, ~thank you for,~ uh,~ coming on ~and, ~and chatting with me today. It's been a pleasure. ~Um, ~yeah. Hopefully we will, there'll be more development in this space and we'll ~have, uh,~ have more to talk about soon. Gil: Hopefully. Thank you for hosting me. Noel: ~of course, ~of course. Have a good one.