How'd you like to listen to dot NetRocks with no ads? Easy? Become a patron for just five dollars a month. You get access to a private RSS feed where all the shows have no ads. Twenty dollars a month. We'll get you that and a special dot net Rocks patron mug. Sign up now at Patreon dot dot NetRocks dot com. Hey, guess what. It's dot net Rocks the Portuguese edition. I'm Carl Franklin, I'm Richard Campbell.
Yes, we are in Porto. This is day two of the conference, and I just realized, you know, this morning that this episode is going to come out the week that dot net eight drops right at dot com during dot net comf and also Ignite for whatever reason they decided to do those in the same week. Yeah, yeah, so anyway, it's a it's a momentous week for dot developers. Yeah yeah, well we've already got the show from Jeff Fritz about dot net comp came out a couple of weeks before.
Yeah, so now this is the days you should be watching the stream and yeah, and here it comes this show too, and here comes better no Framework and guess what it's all about all right, man, tell me all about it. So, Jeff Fritz and I have been doing this Blazer puzzle, right, and he was able to finagle it so that we could do a Blazer puzzle during dot net comp. That's cool. Now, of course we're recording this October nineteenth, right, it's like fully a month before.
Clearly yea months and I have I have, No, we haven't done it. You haven't, Retten obviously, because you've done a couple of Blazer puzzles with him now, oh several yeah them. Yeah, okay, So if you remember the puzzler on Car Talk, right, basically they do these things
people calling with their car cars making this noise. Yeah. Well the puzzler was sometimes automotive, and it was sometimes not you know, sometimes it was just a brain teaser, you know about maybe people and their relations and whatever. It could be. Whire Man whole covers round exactly. Yeah, so is the puzzler and they would have the answer to last week's puzzler a winner, and then the new puzzler for next week, right, and it was
great fun. Yeah yeah, And so that's what it is. It's basically, we give you a Blazer problem to be solved, and we asked that you don't post the answer on social media. We have an email alias Blazer Puzzle at afvnex dot com. You send your answer and if you get the right answer, you go in to pool. We pick a winner randomly, and then that person gets a Blazer Puzzle mug, which is the only way you can get one, and a Blazer Puzzle t shirt. Cool. So
that's it the ten minutes long. Yeah. Yeah, they're tasty little nuggets. Tasty little nuggets and you learn something to so. So all I know is that by now the Blazer Puzzle dot net COOMF version should be available at the dot net comf website. Right, so go check it out. You'll have done it by the time you can hear this show. I will have. Yes. Cool, that's what I got. Who's talking to us, Richard, I'm speaking of Jeff Fritz. We didn't plan this, No,
we didn't plan this. I pulled a comment from show seventeen to twenty five, the one we did with Jeff Fritz. I'm talking about Blazer static web apps. Yeah, and this comments from Rod Gardner who says I've been teaching Blazer and it's so much easier than the previous ways of building dot net websites. It's actually fun to get rid of things I need to teach the student
to be able to produce a product. So we can have one course that teaches all C sharp dot Net Blazer web development, and then another course that teaches react or node and then the student can mix and match the technologies very cool at their leisure and complete both. So now each course is focused in
a wonderful way. Yeah. So, and it's just an important part of it is recognizing that as much as Blazer is all the C sharp stuff, there's lots of room for react type absolutely that kind of thing involved in as well. And that doesn't change in dot net eight by the way, No, yeah no, but we're going to talk about reactor server components. Yeah, and that might be different. So Rob, thank you so much for your comment, and a copy of music Coba is on its way to you.
And if you'd like a copy of Musico buy I write a comment on the website at dot net rocks dot com or on the facebooks. We publish every show there, and if you comment there and I reading the show, we'll send you a copy of music Koba and you can follow us on Twitter if you like. But the real cool kids are over on Masdon. I'm at Carl Franklin at tech Hub dot Social, and I'm Rich Campbell at Masterdon do Rudy t toot? You get smarter all the time? I get it.
I know, actually the opposite is true. Okay, let's bring on our guests who's been sitting here patiently waiting to talk. Aurora Welberg is a full stack cloud developer from Norway. She has skilled in multiple technologies and domains such as React, Angular, dot net, and Azure. Anne has recently gained a great interest in web development specifically. She holds a bachelor degree in Robotics and Intelligence Systems with knowledge of engineering, mathematics, robotics, algorithms,
data structures, and computer architecture. After working for a couple of years at a financial technology startup, she continues developing as a consultant at In Meta, Did I say that right? I would say in Meta in Meta, yeah, but then people will think you work for Meta, so I don't recommend that. In Meta yes, yes, emphasis on the Facebook changes their name and ruins. We had it first. We had it like year two thousand that was our name. It was Grace to be in Feta. That's good.
Okay, it's not good. That's really all that at that. I apologize. Reacts server components. I've never heard of this. What is this? So this is basically normal React components. You code them like normal, but their only run server side. This lets you just pre render everything there and then when you open your browser, you don't have to wait for them
to load. They're just prered So they're actually prerenders sitting on the server and you're just downloading the finished the brows So but it's just rendered you I. Yes, uh, there's a lot to it, but that's what you can think of it when you're cotting with it. Yes, so yeah, my first instinct is an e commerce guy was making that landing page as fast as possible. Yeah, it's it's essentially that. But the thing is you would already have this with for example, service side rendering in like next JS.
But what's different here is that you don't have to add any JavaScript to these because you know that they're not going to be ever like rendered on the client, so you can keep them static, which is why they're different from and you can access your sensitive resources directly without worrying about exposing them exactly. Yeah,
that's basically it. And what what makes them good is that you can, you know, work normally with your React but then optimize it React front end developer, this is very attractive to Yes, can you connect with your front end React components as well? And yeah, obviously you can weave them together and mostly it's like straightforward, but there are some things that you can't do, like, since this is like client versus server side, you can't
pass functions I see. Yeah, since you know you're communicating across the network here, that's essentially the most important limitation. And then to optimize your page you have to do some some new patterns to for example, make sure if you have a server component inside like a normal component, that it doesn't get rendered on the client side. Right, So you have some new patterns that you have to follow. Okay, So let's say I have a server component
that has a page with a button. The button is going to render on the client and then there's some React stuff behind that button that connects back to the server and does a round trip kind of thing. Yeah, there's many ways to do that. So since you would be here communicating back to the server, you have to Well, if it's a function you want to pass something, you can make an endpoint back to the server, which from my
impression is that that's very common for the pages router. But one of the very exciting things about next JS thirteen and React server components is that you have these server actions. I don't know if you want to jump into this yet or I think yeah, I think yes, I think our audience is following,
right, Okay, yea good. So basically what you can do is you can have next GAS make this hidden NPA API end point for you that just lets you seamlessly just communicate with the server like actions without doing anything fancy. Just make a function and then just call it from anywhere like a client component. Yeah. So, I mean I've just been grabbing links for like React server components, and then there's the next jas yep, but those are
really reacts over components. Anyway. The thing is, it's it's very kind of complicated because you have the reserver components, but then you have next gs but it's two different things. But Rector components are built like together with the next years thirteen, so they verseill and reacted or like collaborating here to build this because it's really hard to get the proper setup for rc without this whole like Bungler routing set up that next year to get along to make this work.
So they've been community communicating and collaborating to make this work in next years thirteen because next yas has been about server rendering stuff for quite a while, right, Yeah, RCS is new. Yeah, Okay, that's because next year is old. Like it's r s C. Yeah r I'm going to say that because it's faster, because you say it a lot, So yeah, don't you Sean Weldermeath g RP g P r C R. Well, I was just doing some space stuff. So RCS is Reaction Control Source Systems.
So yeah, it's r s C okay. And then r c's like rector A components. Oh no, the plurals please. So there are multiple ways to go about doing a web app now with r SC. Thank you. So I guess you would call these rendering strategies. Yes, it's a very When I was doing my talk here at NDC Portal, I was like going through the typical rendering strategies first, because it's very hard to wrap your head around this if you don't have some kind of background knowledge of the rendering
strategies of the web. Okay, but aren't the choices client or server? Yes? Yeah, well in RC or reacts next day is thirteen, you're going to pick between client server, right, and can you a little mix and match, Like I've got some static stuff I can pre render on the server and send it down and then you've got islands of dynamic there. Yeah, you can fetch from services to render on the client. Yeah, that's correct. Okay, And I don't know because you're saying islands, what does
that? Would you say that something inside of us div tag? Okay? Interesting because there's this other framework that has this, this has the rendering strategy. Okay, So this is not how next Chafts would do it. It's a bit different because an island you kind of think of as Okay, here there's some JavaScript code like inside this tank inside this toge a call. Yeah, but you can also weave more server stuff inside here, so it's not
just like an island of client. It's also server components inside if you would want that, right, So you can pre render like multiple components and then put them inside the tree then programmatically on the client decide where you're going to stick them. Yep. Okay, that's a sing So that's difference based. I love this. I had a server component to a client component that U
is a server component yep, yeah, it's inception. Y yeah. I figured by the fourth or fifth duration of this, you must be getting slower some Russian doll stuff going on. I mean, I'm trying to relate this to you know, how Blazer eight works, right, because Blazer eight, you've got a client model, you've got a server model, and then you got this hybrid model that starts off on the server and ends up on the client. Yeah, you know that that's kind of where the complexity ends.
I think, well, I could have said zambal clients islands. That would have made everybody said, so I'm going to say that. Yeah, but
you know, I was definitely thinking in terms of there's a tag. But you also, you know have post processing code renders, so you know, page finishes rendering, and then on the on finish, some code kicks off and that wants to do some populating in places, and maybe there's some sposh behavior based on the Yeah, there's some spoish behavior as well, but this will be for those components that are client side, right, you don't need
anything else. I'm really happy that we all have the same glossary there that we like. We agree, well, it's a part of my glossary. Now, Yeah, things can be sposh. You know, an interactive part of the code is going to fetch data in a non rendered state and rendered
on the clients. Yeah, but most of the time you would want your data to be fetched on the server, so you don't need to fetch your data thems where I think when I think about a spot, it's really you know, you're going you're making trips to go get data and then de side what you want to do. But I guess that's the interesting part about this is you you don't want to be purely static that limits what you can do, but you want dynamic with this little work happening on the client. So
you literally I mean I always teasing about the whole. Hey, the client called the server components, But that's how you avoid the compute that is already rendered on the server. You're going to if the user goes down this path and clicks on this part where they're going to need this list. Well, now go get that server computed piece. That is the list. What are some of the use cases? Where are s c You can say React components, it's okay, shine where they really do their best. It's like,
since this is like new React, it's kind of built for anything. So typically if you have like a page that has a lot of static data, that's great, or you need to fetch a bunch of data on the server, and but then you can also weave in the client kind of freely. There's not many limitations to how you can weave these kind of components in. But you can even just have this shell of Servey components and have like full spa spyish behavior inside if you want, and it doesn't really limit you in
any way. That's that's okay. So it's great for maybe low power mobile devices because it's fast to get down and there is a lot of overhead and you can there is there a big with React anywhere? Is there a big download for jobscript download with React? Well, you do need the like the main React bundle like you would in a SPA. So you could say that, okay, you're downloading a bunch of React code anyway. But then once you have it, you can you know, limit the extra job that is
I don't remember in the numbers, I don't know either. And it reacts reducts is like a meg a meg but that's react reducts, which is not what we're doing. But you just you need like the base react and next and then after that you're going to be able to limit how much Okay, yeah, okay, so there's an argument, Okay, you're doing this, but you're you're downloading it all this anyway, but it's not once you have it a lot, no, and you end up cashing it pretty quickly.
I mean, actually, I feel like a lot of what we're talking about is another kind of caching strategy. Right You've you've pre reindered chunks of data. You're just really kind of building out of cash on that. Like, yeah, you're building your cash when you have this. I jump through a lot of hoops to make landing pages on e commerce sites fast, where we would literally sprite the images as data in the page so that you wouldn't go trip and get the image, like anything we could do to just make this
one page go wham, We're here. Thanks Point Rocks page, for example, uses a streaming to get the first twenty episodes or whatever right, and then it's good the time you're down to the last one and the other You can do this also with we have other components like pick what parts are more important, like your twenty episodes, and then stream the rest. The question with any cash is when do you expire? How often do I refresh that? But I feel like on a server side, that's not that scary that
you know when to refresh that you have events that can occur. Yeah, you can trigger so these serve actions you can you can tell them to refresh your cash basically. Yeah, I mean my my battered old soul in scaling, so in scaling websites over the years, like just just refresh at interval. It's like your desperate urge to do logical refresh just causes you more grief than Hey, this doesn't change more than once a day? How much refreshing
you every day? That's fine if the content is you know, if it's only going to change once a day, Yeah, react often do you get? You have a new episodes once a right, like what you write on it, like a once a week. It's a pretty safe bet. Yeah. Do React server components maintain state for each user? What do you mean by that? Okay, so do I know things about the user that and I can keep variables and lists and things just for them in between ground trips.
I mean, if it's like saved to the user, what do you mean? All right? So scoped to the user. So let's say I've got some variables on the server that are like, you know, your name, your address or whatever. I mean, those are dumb examples, but your email address, and I want to keep those around between calls, you know, so I can build up some state, right, maybe it's a list of things that are in my shopping cart for example, or whatever.
I mean. Okay, so this RC they can they're render on the server, so you will you can do like user specific stuff there and then you get this it's not HTML, but you can think of it as like this tree. Then this will be cashed on the next request. So you have this cashed and this is like per user in the server. All right, So you do have a place where you can stash things per user. That's
good. Yeah, yeah, So the shopping scenario is a good one, but I guess the cart's really living on the server and you're justaring a token to having access to it. Yeah uh yeah, well sorry, Like I'm just trying to figure out if I'm filling in a shopping cart in this model. As I add an item, I have an identifier for the session, right, probably a user cookie of some kind, and that's how I'm tying it to previous interactions to build up a shopping cart. What is the question?
It's just like, am I thinking that's the right way? Like, how do I know that I'm putting? Maybe these are the wrong questions? Yeah, I mean in the end, you're generating UI, you're generating static HTML right right, you can think of it that way. Yeah, But obviously you have your cookies and everything in the service. So this usual mechanism mechanisms normally a rettis cash or and something else some other place. Yea.
All that is server side, service side goop. So what about integrating server components into an existing React application, an existing like next g s Yeah yeah, existing next game okay, yeah, so an existing next day as that would typically be like pages router. And it's kind of hard because this is like a new cutting pattern and if you're using lots of state or like state
management, like context. You can't use it the same way. But what you can do is you can use the app router alongside the pages router and then move some routes, for example, to this new router well without messing up all the code that you have. And do you have to be on next JS thirteen? You do that? Yeah, so you want to make sure you're there. Yeah, but when you make new next apps, now
it's going to be thirteen and you can pick like pages or apps. So if you have an older one, yeah, I think I think you would be able to upgrade just next thirteen, keep the pages, don't do anything, and nothing changes, and then integrate your app router, sure with the parts that will benefit the most from it. Sure. Yeah, it's always a question of how much trouble it is to upgrade to the latest. Oh yeah. But since it's like a separate folder, it's like a pages folder
on app folder, you don't have to mix them. You can just pick. Okay, for example, this page is like all static, I'll just put this, or this is like benefiting from RC, I'll just put this in the new way of doing it, because it doesn't really they don't mix. Yeah, you don't need to mix either. You use the old page as long as your feet in the same back end, so they can get the data. You can render differently on the new pans. So do you
have any real world stories you can share about? Yeah, I took kind of not a risk, but I decided to use h r C in my project at my consultancy or my in my consultancy project, and there were some things that I had to figure out like I was like I was when I was researching this. So, for example, since this is very new, things like testing and internationalization and custom libraries they don't have support for. There's
not that much support yet or resources about it. So, for example, in my project, we have this component library part of the design system of the customer and it's obviously not built for RC, so it doesn't have this use client directive that you need to define that something is client side, so to tell next days that this is in fact containing state for example, you have to make a wrapper component around it that just tells next years, Okay,
this is going to be containing client side logic. So that's like some extra work that you have to do. Yeah, it works really well, but you have to you know, still do it. You have to think about that and think about it. And also, if you're going to be rendering something service side inside these components from the library, you have to make a wrapper so that you can slot these other server components inside, because that's
what you have to do. If you want to have server code inside client code, you need to pass it down as a React prop because that's when it becomes this reference that the client component can say, oh, I have
some kind of thing here, I don't know it is. Make sure is it actually gonna be pre rendered on the server to be fetched or is the call for it then going to render it on the server, and just a reference so it has this already, it's gonna it's gonna get it, but it's already rendered for you, right, So it's just oh, I have some code here, I don't know what it is. Let me just request
it requested by reference and then place it on the sitch. Yeah, okay, and something else for example testing, So React testing library doesn't have a built in method to test acin components, okay, and this is something that came with React Server components acin components, which is what you need to add to await data inside a component. And as for now, you have to
kind of make this work around to await when you're testing. And I've seen a couple of different workarounds and some of them work, some of them don't. It's kind of you have to be like paying attention to the thread on GitHub. Okay, what can I do? Is this better now? You know? So so when you put your future glasses on, do you think that this will get it easier? And it's version kind of thing. Oh yeah, for sure this people are already working on fixes for this, and
it's there's workarounds. You can just have this workaround for now, but be aware that Okay, if you're going to have testing, maybe you have to mix more grounds until it's new new it's new, yeah yeah, and especially things like testing. It's it comes later. And all the people who make example they don't add testing that yeah thing. Is it easy to manage dependencies?
Well, it depends. For example, if you're using like any library that like I was saying, like you contain state you have to it has to be made like implemented for r C. So if you're using like material U, I okay, it didn't have support for this until of couple. I don't remember when, maybe a month ago, some weeks ago. Yeah, depends on what else you mean by managed dependencies. Yeah, this still feels like this is something you're gonna search each time. It's like, how
are where are you at? With material? Oh? Support? That's great? Okay, but it's good now so you can use it. I wonder how they did that because material surely uses love. It's complicated. I don't know. I need to research that more. Yeah, but yeah, different libry is going to come into play. Do you use standard JavaScript? Are handling techniques on the server? Or I would say, like stand it for next JS? I'm for next JS? Yeah, yeah you can. You
can ever handle there and send it back to the client. Yep, all right, in a row. I'm gonna interrupt for one moment for this very important message, or two or two messages you never know, maybe even three, and we're back. It's done at Rocks. I'm Richard Campbell, Let's Carl Franklin, and we're talking to Aroa Wahlberg here in at NDC Porto with our view of Gaya on the cross the river. A bit about reactor server
components. Are SEC you notice how the sun only shines when we're here recording in and they go outside it rains on OI come inside side was bucketing to get here this morning. It's really something. I mean, it's just this feels like early days for r C. Yes, but I think a lot of people are just scared to try it because it's more complicated. Sure, but it's also turning. It's pushing against this whole static websites. Like there's
a reason these features are emerging because they are efficient when done properly. But it's always a trade. I'm going to add complexity right speed ultimately yep, So you got to balance those two things exactly. But I would say if you kind of get through the complexity, then after you know it, you
know it. So yeah, okay, you were learning to react and you it was complex to you know, learn everything like effects in that in the beginning, but then you know it and it's good and then everyone knows it and okay, this is the way we do things now. So when you learn the patterns for RC, I would say it's pretty efficient to just code that way instead. Yeah, and you do get a bunch of bet offs like that. A lot the net behavior for the server and the client are
going to be pretty good. And actually a lot of things are easier. For example, I fetching data, you just fetch it and then it's there. You don't have to worry about it at all, So things are easier as well. Yeah, there's a lot that's just happening under the hood. As a server component, you don't have to think about I've written that code like that's no fun. So yeah, great that it takes care of it.
But what are you looking at for what comes next for RC? Well, I'm using it, and I'm obviously hoping that my testing is going to be easier. I just want to see more like bigger products with it because I'm always looking for reference code and there are some. But again, it's not like a production app. It's just somebody's project that they're trying out things
of people experimenting with a lot of people experimenting. But you, like you said, material UI seems to have put some effort into making it work properly. Yes, but it took them a really long time. So there was this this discussion about that next US should have let library authors start this before they were like, okay, this is stable now because then they're saying it's stable, but then there's no support for the things that people want to use,
right, so it's kind of it's crippled too. I think you were saying a long time in web terms, which is not that long a time. Do you have like a conversion web to dog. They've seen we have web time and the physical time. It hasn't been that long. But yeah, it's interesting that they would hold back, like discourage people from starting to adapt it while they were making the initial version. And I think that has also contributed to people being hesitant because Okay, it doesn't work with material.
I guess there's probably more things you can't do this. Yeah, yeah, so and then you can like catch up. Okay, I don't know what's compatible and what's not, so I'll just wait until I see that somebody else is ye it. Right, But if nobody uses it, there's not a lot of incentive to put the effort into making all these other libraries work with
it. But I think, I mean, this is react eighteen has a lot of features that is really only usable or efficient in next jays, right, So you're gonna it's gonna get there for sure, Like for example, this concurrency mode which is in React eighteen, which lets you like define non blocking actions or state updates. There's this used transition. You can like wrap it around for example server server call and then do other things while it's or
interrupted while you're while it's like calling. Right, So there's a lot of things that you're going to want that's with React that you need to use server or recserver components to get the most out of. But next JAS always plays a big role in this, Yeah, because they've been they've been developing this together because it's kind of you need this framework. You can't just use them
on your own. It's too complicated. But I mean, it's just realizing like other times we've talked about React here, we've gone more like the React and reducts approach, which seems very different from what you're describing. Yeah, because now you have all your data on the server, right. Yeah. So apparently MUCKs dot com has upgraded to use adopted React server components. It involved transitioning fifty thousand lines of code to incorporate the use of our sc indicating
a substantial adoption. They have about five thousand customers. I wonder why they decided to do that because from what I'm like, it doesn't look it doesn't seem like you would want to migrate your app directly. No, they migrated their domains MUCKs dot com and doc dot MUCKs dot com to utilize React server components. So it wasn't migration. Yeah, that's a lot of work. I don't think that. I don't think you should be considering Okay, I'm
going to migrate all my apps. Now, that's a lot of work because it's like a complete different pattern. You have to think about these limitations. You can't just call your server from anywhere, right, So that seems like something not anyone would want to do. Yeah, I'm surprised he did it. And this is the video online organization must Yeah, so they apparently they wanted performance improvements architecture. That's fair. I'm looking for some metrics right now.
But if I find something out that, you know, it's just yeah, you know, that's always interesting. It's like, hey, if we just re engineered the whole site, it'll go faster, which to me reads like, hey, leave us alone for four months. Yeah, because we've got to re engineer this thing that was your migration. Did you just update your side. Uh. Carl rewrote this, the old SPA site into a laser site, right, right? Is it is? It? Can I use your site? Sure rocks dot com? I'm kidding? Could it be
a server? Could it be your React server component site? Probably not not if you want me to write it, you wouldn't want that. But I do plan on moving it to Blazer eight. It's probably already there by now, but Blazer eight in automode, that's what it's going to be. Yeah, so you have the choice. It's client and server side renders, it is. It is interesting the amount of convergence that's going on with these different
web technologies around the mixing of client execution and server execution. Like just we're all trying to do this now, like it's the it's is it just a hip solution or is it really that powerful? All right? So this is good? Let me answer before you answer. I asked chat GPT was this migration a success? And it says this is great. The documentation about mux's migration of rc RSC does not provide specific metrics or explicitly state whether the migration
was success. However, the art this is great. However, the article mentions that moving to React server components was quote probably worth it only probably probably worth it. Oh that's great. So I don't know. I'm not recommending migrating, by the way, I'm just recommending new projects, new projects. Yeah, projects, Yeah, I just wanted to find out if there was somebody who went ahead and did it. Yeah, well it's it's interesting.
And then they did the hard thing. They took existing working code and threw it into a new model. It's a good way to make code that used to work not work. I mean really, yeah, probably worth it. At the same time, like if you've heavily optimized a site, especially talk about something like a video streaming site like max, Like that's not a trivial problem. No, you're looking for like, what's the performance game that lets
you want to take that? Bet? I wonder the reasoning, Yeah, what's the game you're looking Well, if I could into it what they mean by probably worth it is right now? Nah, you know, but in the future as things, yeah get better and we get to version two or three, if they if they're like I don't know, maybe they're like planning for the future kind of they want to do it now so that when they
add things it's not going to make the sides slower. Yeah. Yeah, unless r s C r CS pulls an angular, right better being an r SC no plete. Yeah, complete the complete rewrite from one point one to two. Yeah. If they pull an angular, these guys are screwed. Do it again, do it again. Let's go back to the old one. It'll be fine. Or have we actually found a case where it's like, hey, we got we got to wait to work on something and be
left alone for a few months, so we reached the whole site. As for this, you said it was like trendy, this like server client. Mm hmm. I think it's just everybody's just trying to find a solution because they're tired of pages not being interactive. Right. Well, the great old spat the SPA bunk, well not only the SPA page, and it's just sort of sitting there for a while. Yep, you got a lot of spinners. Yeah. And then also you click a button and doesn't more spinners
and running around. It's like, you know, there's a all you from a system in perspective, When you want to see spas really happy, you just shut the DNS servers off and watch them go. Ye, and the problem is that the page has no way to cope with that, so suddenly it doesn't know where it's going, and so it's just spinning like that's the problem. The thing that makes people angry about spas is when it fails. It fails opaquely. You just don't know what didn't render in that box or
why it didn't render. It's hard to make it feel like you know what's going on. But then again, it is a good signal to the client that, oh, maybe my internet went down the yeah, maybe my WiFi router is rebooting, or but my browsers still open. Everything should be fine. Yeah, modal dialogue pops up. You're screwed. Something bad has happened. Okay, okay, I mean it's bad enough. You have to agree that it's bad. I'm not going to do anything until you agree with me
that it's bad. There's never a not okay. You know it's not okay. Almost every okaybody would be better if it said not okay. It's just thumbs down. But I'm sorry. What we were talking about. We were talking about something about our You're going to get it one of these days, for sure. Yeah. I just want to hear about some more gotchas that you think will be evened out over time, anything that we missed? What
do you mean? Sorry? Gotchas? In other words, you know things that people who are going to get started might fall into a trap or work around. Oh yeah, for example, this how your new cloning pattern? Did you have to think about? Okay, if I want the server code inside this client code, if I just put a component there, it's going to turn into client code and then I'm just back at my normal starting visit.
No, is it me? Or is it kind of a mind you know what to have to figure out a server with a client, a server with the two clients, and one of those clients as a server. Does it really get that complicated? You could say, But it's not complicated once you kind of once you have this idea in your in your head or like a mental model as they say, it's it just kind of goes naturally you know what to do. It doesn't. You don't have to have this entire
tree in your head. You just kind of so like once you get to a point where you need some interaction, you say, okay, well that's a client, that's a component, and it becomes very organized because since all your code is like separated this way, it's very easy to kind of follow through. Like if you're looking at code, okay, you can just click this. It's a component. It's on the client. You know what type
of logic it's going to contain. The guardrails are in there, Like, there's no way that can write client code that tries to, you know, use a database connection string to go out and do something. I mean, it's not going to be a client component, yes, unless you tell it to so, and if you have the if you try to do that, I mean, it doesn't exist there. There's no connection string on the client.
Sure, so it's going to be hard, but it's still possible for me, as if I'm a dumb computer programmer, to put secrets on the client. Nobody's keeping me from doing that. You mean, you can hard to put it in there, but that's very well done. If you're able to hard specifically into a client component, you're gonna get a call. The boss wants to see you. Now, what have you done? What did you do? Okay? So, yes, it's complex, but it's no
more complex than anything that you would do in next JS. In fact, it sounds like it's simplifying next year, and for me it's it's been really good, Like, okay, it was it was, you know, reading about in the beginning, Okay, this is how it works, and then you get into it and then you kind of unlock this new world and it's very natural to use it just kind of code and it works the way you
expected to. In my opinion, would you recommend that people look at it now as a solution they can use in production or would you wait, I would maybe. I mean, I'm doing so, but I have yet to see kind of the results of this, so I would want to just have some more It's probably worth it. It's probably worth it. Well, clearly the MUCKs people think that, I don't know, I would have to have
some more experience and some more data points. So it's more like, you know, if you're a React client programmer and you want to you want to keep your skills sharp, check it out for sure, But then also like, why would you go back and use the pages router if you have this? Yes, okay, that's kind of what my justification was. Why would I pick the old one when there's this new one that's simplifying things? And
less clunky to use. Yeah, yeah, yeah, I'm wondering about folks that are they're down the React path, they're running some performance and things like this, and they're thinking about jumping to another server tech for sure. Definitely, we already know how to do React and our and RC seems to be able to help us. So I'm not saying we go whole hog yet, but this sounds like a spike, like, yes, pick up problem page. It's fixing problems for sure, build another version of just that page.
Yeah, you know they want to still be there, but let's try this one and see if it makes a difference. And also if you're like considering this for your production apps or whatever, it could be good to do some research and maybe if you have a specific specific requirements that you know you need, like mine was like internationalization and component library, you know, try it out in like a prototype first, see if you can solve it. How much work is it? You know, how much battle did we do to
get that? And then bench them together, like there's a lot you could do just spiking on a page like that. You just check it out, see how it works. If you have something that's you know, nonstandard and If it's not it, you may bump into features you aren't ready yet, or you may have dependencies that are problematic. If you don't beautiful, if you do, work around or shelve it for a couple of months and look at it again as more of the library start to or call Aurora dot com.
Yes right, yeah, I put something about testing there on my blog. Okay, that's that's my experience with testing. We're going the sales pipeline for in meta. So how can people get a hold of you Twitter? Twitter is good, it's Aurora underscore Wahlburg. You can con me there. And I have a lot like I have. I don't have any much public code, but anything that people want to talk about about RC I really want to know available for consulting when somebody wants to Oh yes, I don't want
to go that far. All right, So what's next for you? What's in your inbox? Like, uh like talks or all of those things. Anything. I'm well, I'm here. It's very exciting, and I'm going to Norwegian conference next week. Actually it's it's yeah Monday. I'm going to talk about Astro. Those islands you were mentioning by accident, they have this island architecture that they call it, so I'm going to be talking about that
there. It's another web framework, very interesting also, well you're all the web framework then, and then you know, I have to catch up some hours now that I've been here in Portrait of Portugal. Yeah, you've been having too much fun. Now I have to work for my project again. It's a billion hours done. Well, thank you very much. This has been an eye opener for me. Like like I said, I don't really know much about reacting, and I certainly don't really know about jobscript on this
server all that much. But it's been it's been really interesting. I'm going to keep watching this good and we are. We'd like to have you back, you know, when it hits version three. Great, I'll be there, I mean wednesday, all right, thanks a lot, thank you. Then we'll see you next time on dot net rocks. Dot net Rocks is brought to you by Franklin's Net and produced by Pop Studios, a full service audio, video and post production facility located physically in New London, Connecticut,
and of course in the cloud online at pwop dot com. Visit our website at d O T N e t R O c k s dot com for RSS feeds, downloads, mobile apps, comments, and access to the full archives going back to show number one, recorded in September two thousand and two. And make sure you check out our sponsors. They keep us in business. Now go write some code, see you next time. You got tred metal vans and then of taxes redin ball
