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