Skip to main content
View on YouTube to comment and like!

almost 2 years ago Syntax Podcast

How to Pick a JavaScript Framework

CJ Reynolds

CJ Reynolds Guest

Wes Bos

Wes Bos Host

Scott Tolinski

Scott Tolinski Host

Topic 0 19:17

Cloudflare JS runtime has 98% Node API compatibility via Unenv

Scott Tolinski

brand new, you you, you know, potentially just need an API or you need it tightly integrated, whatever. But if if it is a brand new greenfield app, I typically want the framework to do more for me. And if it's an existing API Mhmm. I will want it to do less for me because, yes, I already have auth. I already have an API. I already have all this data stuff. And all I wanna do is fetch this stuff either for server or for client and interact with it on my UI. But, yeah. I mean, there's a lot of different choices here. If it's an existing API, is it GraphQL?

Guest 1

In that case,

Wes Bos

serverless platforms. Right? Hosting Next. Js on a on a node platform is is relatively easy. I do that as well. Yeah. Bored.

Scott Tolinski

that makes that framework,

Wes Bos

node compat, which is amazing.

Guest 1

And then also you have to think about the the kind of APIs. Right? So is it GraphQL? Is it REST? Is it something else like gRPC?

Wes Bos

like, we have a team that runs our API, and it's a Python app, and it's it's been around for 10 years. We just wanna be able to build an interface for for that application. Right? And if that's the case, then, there's something that I wanna do, like import,

Wes Bos

And if you want to be able to replicate

Guest 1

does the framework have an adapter or or a library that's gonna support working with those kinds of existing APIs?

Scott Tolinski

And if you are picking GraphQL, does it make sense to pick a framework that integrates tightly with Wes or vice versa? You know, integrated server, is your data loading via RPC? Like, maybe you're using even something like tRPC to make that that boundary a little bit blurrier.

Wes Bos

Yeah. Which is Dax's thing. We had Dax on the podcast. He runs this thing called OpenNext,

Wes Bos

yeah, you can you can still do server rendered and and fetch that data on the server. But for a lot of those people, it's it's not necessary. They have all everything in place, all the auth, all the rate limiting. They wanna go straight from the client are the routes fully typed? Can you write is it possible to write a link to something that is not a route that exists? That's that's a big one. Right? Or can you get access to the parameters different libraries that work with it? I think the, like, whole library thing is getting a lot better Alright. Well, let's get into the actual questions of of what we need to answer here. The first one we have is, like, where do you wanna or or what do you need to ship, or where do you need to ship? Right? Like, probably

Wes Bos

something like that, where they're they're trying to get it to just work properly

Scott Tolinski

Yeah. I'm gonna be contradictory because you know what, Wes? like, a managed back end. It's a back end service. Engine? A data engine.

Wes Bos

it can be really hard. Right? And, like, even whole system of working with data for you. Yeah. I fired up Redwood the other day because they now have their server component thing in action Because, like, there's not a lot of frameworks are, like,

Guest 1

data? No. Soup to cake.

Scott Tolinski

I've noticed that good podcast, they always have 1 person who's like, I disagree. You know? What do you have? Disagree. No. It matters where you host. No. It doesn't. I don't I agree with you, man. It doesn't you know, every everything is,

Scott Tolinski

shouldn't be tied to a specific host. Now I I get it. The the company

Wes Bos

Yeah. But I also want those things as well.

Wes Bos

And the way that those adapters work, we should say, is that when you run a, like, a CI to build your website, from the client JavaScript integrations Sentry has? Just for JavaScript. Scott for not for Yeah. Yeah. The API thrash and the breaking changes

Scott Tolinski

I believe in a little bit more of an open system where, like,

Scott Tolinski

Yeah. I just don't think it I don't think to me, personally,

Guest 1

I think in general, like, just the adapter pattern itself is a really good software architecture pattern. Like, we've known this for the longest time. I mean, Vercel only came about, I guess, like, the last 10 years or so. But for the longest time, you wanna write your stuff in a more agnostic way. So when things change, when hardware changes, like, you're you don't have to do as as many updates. And so these frameworks that support adapters like SvelteKit,

Wes Bos

So I think Vite's doing a lot in this this ecosystem where it's like, yeah, right to 90% standards, there's something to be said for picking older tech. You know? I have express code that I've written 10 years ago,

Guest 1

and Nuxt, and I've been working with HONA. Node JS a back end framework. It's not necessarily rendering, but they have adapters for all the runtimes. And so you write your code in a runtime agnostic way and then just plug in the adapter, and I think that's that's definitely the way to go.

Guest 1

The next question we have JS, how do you store So the the adapter pattern will often take care of a lot of that, and I agree. That's that's the way to go. Yeah. Well, one thing last thing I'll add to that is, yes, this adapter product works, but also you do have to be careful of, like, web standards. So I've been fighting this because I'm trying to get HONO deployed to a bunch of different places. But because I didn't use import extensions, which is a web standard, like, when you're, importing modules, you need to include that Scott JS. If you don't, then you need you need a build step to do it.

Scott Tolinski

I don't think having your application work on 1 specific host

Scott Tolinski

they are funding the development of that framework with their service, and I get that. That all makes sense to me. But at me, personally, I don't wanna be tied to 1 host to have the best experience to my framework.

Scott Tolinski

to do it personally.

Wes Bos

Yeah. You see a lot of people

Wes Bos

being like, well, I don't I don't want all of this full stack framework Welcome to Syntax. Today, we're gonna be talking about how to pick a JavaScript framework. So there's a new JavaScript framework that just came out 1 stack or or Node. It's from Nate, the guy behind Tim Magui. And CSS as raw text.

Wes Bos

on that specifically? Cloudflare,

Guest 1

So that's the Node caveat there is, like, you gotta make sure you're doing all the web standard stuff. Yeah. I'm. That's the story of my life is I'm preaching web standards until

Wes Bos

And

Wes Bos

And it just, like, polyfilled, like, almost the rest of the Node APIs. And now Cloudflare JS sitting at, like, 98% the answer to that Wes, I think it's because it was too complicated for the bundler, HTML on the page, oh, that's 3 different That's great. You Node, you don't have to, like we don't we shouldn't have to have a React specific charting library.

Wes Bos

and, we're trying to get Next. Js to run who knows middleware is much better in my opinion.

Wes Bos

moving their cloud like, Cloudflare had a Next. Js adapter called Next on Pages, And,

Wes Bos

what where the lines start to get blurred is that so many of Next. Wes features are tied to infrastructure.

Wes Bos

directly to,

Wes Bos

And you're you're talking about Vercel and Next. Wes. Right? You know, like, we don't have to dance around this. Right? Everyone's talking about that.

Wes Bos

or transpiled in any way so that it runs

Scott Tolinski

is the right way,

Wes Bos

and then

Scott Tolinski

the API. Exactly. Yeah. To me, this is a question of what the greenfield JS like here. If if your app is, like, you know,

Wes Bos

And, oh, Vite does that. That's not standard. Or use TypeScript. That's not standard.

Wes Bos

Next. Js anywhere. Right? And, like, yeah, you can run it as a node Vercel. But I think where you're deploying it to. Actually, I'm doing a talk in a couple days, and I'm talking But then if it's is it a React to something totally different? Then you gotta rewrite a lot of your components.

Guest 1

So there's a lot of different ways to do this. And 1 question I'd also ask is, do you have an existing API? So this is how I've built a lot of the applications in my career is we have a separate back end. Right? The API already exists. There's potentially a separate team or a separate product that's working on that, and it's our job to kind of build the front end and and integrate with it. And so in those scenarios, I wouldn't necessarily need a a back end first framework to to build my app with.

Scott Tolinski

it's gotten really good in the hosting space. But one thing I will say about this hosting is is I do really enjoy the adapter pattern that a lot of frameworks are picking up where you can plug and play the adapter that you're going to use to deploy these things. Because

Wes Bos

And it looks like they're they're moving over to I think warp they funding OpenNext,

Wes Bos

what the output looks like. You know? Like, oh, is there a folder called net underscore Netlify, and there's a functions inside of that? You know?

Topic 1 09:20

Astro allows use of different framework components like Svelte and React

Wes Bos

shipping to the web is is by far the most popular, but that's not the only place where an app needs to be powered. Right? It might also be,

Guest 1

Yeah. Yeah. And I definitely I think Astro JS on a good path here. Like, it kind of seems like the great unifier, the fact that, like, you can take any framework, and, like, they have SSR. They're coming out with database solutions and routing solutions.

Scott Tolinski

Just because it's you can use everything in it, or just, like, the approach in general just seems to make a lot of sense? The approach in general, I like the islands. I I like that it is kind of like you're you're opting into client side where you want it, but that's not hard to do. Yeah. I I like that how co located everything is. You know, one thing that was

Guest 1

having the separation kind of helps

Wes Bos

ones. Like, Astro will will

Guest 1

But it is

Wes Bos

use Svelte components or React components. You know? Like, it's kind of its own thing.

Wes Bos

a native app. It might be a web view. It might be a desktop application.

Wes Bos

There's quite a few in the space that still use even HONO x, because,

Wes Bos

still use JSX, being 2 totally separate code bases

Guest 1

Yeah. But I think to that point, Scott, that I I feel like that's kind of why it's a good thing. Like, if you have newer developers or maybe people that aren't familiar with the JavaScript ecosystem,

Scott Tolinski

Yeah. Astro is is kind of, like, all inclusive or, like, the the one that bridges the gap between a lot of these frameworks. I do have to say, if I was to pick one that wasn't SvelteKit, I think it would be an easy choice for me to pick Astro.

Wes Bos

you're importing client side and Vercel side code into the same file, and you could accidentally do something you don't don't Node. So very clear distinction of that. But I'm I'm on your side, Scott. I kinda kinda would like that. Yeah. I know. Maybe it's just because I'm experienced enough to know where that that Yeah. Like, maybe if we could put, like, 8 emojis of, like, a server between

Wes Bos

other languages that run on JSX a application

Wes Bos

the Node. You know? Like, that's how you Yarn it. Yeah. Then it's okay.

Guest 1

more mundane to have to create a new file every time you need, like, a simple loader. Yeah.

Wes Bos

And

Scott Tolinski

kind of a bummer for me with Sveltekit is that before they were version 1, you used to have server code collocated in your component with a, like, a module script.

Scott Tolinski

it saved me from having to write a whole another file for sometimes very simple Node, like, really simple stuff. And it was, like, really obvious to me that you have a 2nd script tag and this is your server stuff and this is your client stuff, But he didn't like the the commingling of of the 2. And I personally I liked it. So I I like having that kind of, like, colocation of it reminds me of PHP stuff. Right? Your UI next to your your server Yeah. Location. Also, I would like that too. I asked that. Like, when React Vercel components came out, I was like, why do we have to have a separate file for this might come off as targeted.

Topic 2 46:50

Stability and frequency of breaking changes when upgrading discussed

Scott Tolinski

Did you know that I used to work for Ghostly International?

Scott Tolinski

community, but I I get it as being like a nice thing. I I love an active community in general though, because it means that people are not just using it.

Wes Bos

dishwasher.

Scott Tolinski

duper well.

Scott Tolinski

Silence from the silence from the crowd. I got nothing.

Scott Tolinski

Deno. We've been saying it wrong. I I like, I you know, it's one of those things where I've just, like I can't get it right in my brain.

Scott Tolinski

there's so much that goes into here. If you have things specifically that you look for in a framework that we didn't mention, leave a comment below. Or heck, if any of these things that we mentioned aren't important, leave a comment below. Or

Wes Bos

Yeah. That's what we've done to ourselves here as as JavaScript developers. You know? We want new and exciting stuff, but we also want it to stop changing.

Wes Bos

I'm gonna sick pick citric acid, is or or how they move is is is too different than the actual product. Right? And it just doesn't doesn't make sense. You certainly can share stuff between between the 2, especially if you have, like, a design system, but almost always you're seeing 2 separate code bases for marketing

Wes Bos

I'm I'm getting a new iPhone soon, and my wife is too. And that means that

Wes Bos

It should work with all the frameworks.

Wes Bos

is

Wes Bos

So a lot of these API

Guest 1

CJ, did you come with a sick pick today? I completely forgot, but I'm just looking around my Wes, and I have one. It is the Classic. It's I mean, it's a cassette, but, it is, the latest album by Tyco. It's called Infinite Health.

Scott Tolinski

is quite literally a great life hack. Clean your stuff. I'm gonna say pick a, small little thing I just recently got, which makes too too much sense. If you're like me, you have a lot of little USB, Yeah. But that's where the the the stuff that people need in the off things. I I wrote my own off package I called drop off. And to me,

Wes Bos

like, we have these humidifiers but

Wes Bos

either writing them in vanilla and then just providing, like, a headless Interesting. Okay. So let's give a cup a couple quick examples of of what they are so people are listening.

Wes Bos

the 98% of that JavaScript code is going to you can move it over to something else. If you oh, you know what? This isn't for me. I can still move the login route handler to something else. You know? Can you how easy is it to move your actual components? You know? With of a,

Scott Tolinski

Yeah. Cool. Well, that's all I got. You guys got anything?

Scott Tolinski

This is great. I'm gonna get some of these. Yeah. I know. I I I've nothing that's not USB c really anymore, so I'm way off that. So Man. Happy to be here. Shameless plugs. Check out the Syntax YouTube channel. We're on YouTube. CJ just released an awesome video and is a little bit more

Scott Tolinski

water cooker. And that's, like, the the way that it it comes with the cleaning pouches. So and that's super the best experience for a framework If they came with an ORM,

Scott Tolinski

give some extension to your, USB a ports.

Wes Bos

and I've ESLint an hour on something that's broken. And then it turns out to be a bug in the library, and it goes, oh, it wasn't it wasn't me. I thought it was.

Scott Tolinski

a lot of the new things, USB c. So I I just got, like, a a pack of these,

Scott Tolinski

No?

Wes Bos

gone. Just absolutely blasted. And I was like, man, why have I not been using this forever? It's relatively cheap. Get a huge bag for a couple bucks, and you you descale your life.

Wes Bos

And it's kinda sad to me because it's like, obviously, this didn't work as well anymore, that's a little bit different. You gotta decide, oh, well, now all of a sudden my use Scott doesn't work. I gotta I gotta move those over to what the equivalent is.

Wes Bos

you will be able to do it. Granted, somebody who's good at JavaScript will be able to pick up any of these frameworks, but that's not something a lot of people look at when they're looking at what does the hiring landscape look like.

Wes Bos

We talked about that. Yeah. That's awesome.

Wes Bos

oh, this is how we approach it. Or, oh, yeah. We're doing it this new way, but the old way is now supported. So now you're thinking, oh, there's 2 different ways to do things. It's it's kinda frustrating.

Scott Tolinski

Scalar. What is Scalar, CJ? Yeah. Sick. I think that was really a a great discussion, y'all. I mean,

Wes Bos

Oh, I didn't I didn't even know that. I I just thought it was the stuff they put on, like, Sour Patch Kids to make them sour.

Guest 1

They're interested in it and excited about it and, like, wanting to talk about it, which is a Mhmm. A big thing. If people are willing to talk about their tools, it means that they're invested in their tools. Yeah. And I think also beyond that, like, I wanna make sure that I can get help when I need it. Right? So, like, are the GitHub discussions active? Are the GitHub issues active? Like, if you come across this new shiny framework and you go and you look at the GitHub issues, but none of them have been answered in a year, you're probably gonna have a hard time getting your answers, but also you might run into those same issues that those people are opening up. So we definitely wanna see active maintainers and active community members that are helping people out.

Wes Bos

Just wrap her up.

Scott Tolinski

something oh, mom and pop. He was. I think his latest stuff hasn't been released on there. Yeah. I'm ghostly for a while, but I've been a big taiko fan since, like, forever and ever and ever. And and you're so right. Sometimes that music feels like you're swimming underwater or something like that. It's it's the best. Yeah. Yeah.

Wes Bos

aside from 1 iPad, our whole And then, like, outside of all of these, there's also

Wes Bos

And if you need to be able to hire an expert in that type of thing, then you

Guest 1

Yeah. I think he's on

Wes Bos

and then there's a system that they just write, like, a React version for it to to actually integrate it. Right? And then a lot of the stuff is Node, like, web components. And okay. Well, you look at the the shoelace or the the font or web awesome stuff. Those are those new web component UI libraries that they're working on.

Wes Bos

which do you guys know what citric acid is? Vitamin c. Yes. Vitamin c. Is it vitamin c?

Wes Bos

Mhmm. And there's a mod that you can convert them to USB c, but it's it's, like, $50. I don't know if it's worth it, but I just wanna get rid of all the u s things that are not USB c.

Wes Bos

if it's going from a React framework to React framework, they go, oh, yeah. I don't want everything to be

Scott Tolinski

Alright. Peace.

Wes Bos

upgrade, where it's, like, not this huge, And often the marketing wants to do so many

Wes Bos

You Node, it shouldn't have to be the maintainer's and we have to pour vinegar and let it sit for, like, half a day or whatever, and then it would disintegrate.

Scott Tolinski

Do are there how many people are there in the Discord,

Wes Bos

requests, and it worked pretty good. I run our website on it, but there's still

Scott Tolinski

I wanna fact check myself. Citric acid is not vitamin c. It is similar. Ascorbic acid is vitamin CSS I'm sorry. Y'all messed that one up. But I also use citric acid for

Scott Tolinski

I said sometimes it is you, though. But it's you know? Often, it is me.

Wes Bos

so they they got a new one. And it kills me because it's like, just clean your stuff, and you're it will last longer. Yeah. I yeah, that

Wes Bos

standards, form data, request, response, We I think we've said this probably a 100 times on the podcast, but, like, everyone listening, go write your own auth just once. It's not that hard. There's yeah. It's it's a really good learning experience. You'll understand how these things work, and you're also not gonna be spending a bazillion dollars on some SaaS that uses to log in.

Wes Bos

I'm so excited.

Scott Tolinski

at the time of recording this.

Scott Tolinski

Yes. Yes. Yes. All of the above. Also Sanity support, which is often underlooked thing.

Wes Bos

for the kids,

Scott Tolinski

So let us know what you think in the comments below. And how's the part of the show where we get into sick picks and shameless plugs?

Wes Bos

Word. And then finally, hiring. Does it matter to you? Quite honestly, that's why React is is still very popular. Right? There's lots of people out there that write React. There's lots of stuff built on React.

Wes Bos

and things change JS is so frustrating at some points. Like, ecosystem

Wes Bos

fetch, Cloudflare came out the other day. They are

Wes Bos

Portability. How easily can you duck out of this thing? So we we talk a lot about web standards.

Wes Bos

what's this stuff called? Citric acid. And Yeah. This stuff is amazing.

Scott Tolinski

a a tool for maintaining

Scott Tolinski

And

Wes Bos

Like, I used to pour vinegar into something like our kettle that needed to be descaled,

Wes Bos

interface for it. Like, a lot of the tan sucks tan stack stuff but do not use, like, React per se.

Wes Bos

we have What would you consider pocket based then? What I know it doesn't matter. You know? Like, it doesn't matter at the end of the day, but I I kinda like talking about this stuff. It's kinda funny. Pocket based for me

Wes Bos

and it still runs today. And I've I've upgraded it many, many times throughout the versions, and it's almost always like a 10, 15 minute, Yeah. People feel like it's high stakes, but, like, session based auth is is really pretty simple. It's all the features that are that are like, once you start getting, oh, log in with Twitter or whatever, you you can do those. But, like, a a a simple it's pretty easy. Most of that will move over. It's just React. If it's going from React to JSX, Or does the pattern look a little bit different? And, also, does the code need to be Yep.

Wes Bos

so many things that need to be descaled in in our house. Right? You got we have a coffee maker. We have the kettle. We have this egg cooker. I just sick pick the egg cooker, actually. I've never sick picked that. We have our

Guest 1

And he JS, well, they are. It's it's 1 artist, but he he tours with a band. It's, instrumental music, great for programming too, great for getting stuff Deno, but the latest album is often awesome. I've I've had this on repeat. Infinite Health by Tyco.

Guest 1

Scalar is the interactive API documentation. So it's similar to Swagger UI, but it's a bit more modern. Like, if you've ever been to API docs and, like, you see all the endpoints, but then, like, it shows you code you can paste to, like, run it with cURL or run it with Python or whatever, Scalar gives you that. So you feed it the open API spec, and then you get interactive docs.

Scott Tolinski

what do you think a framework is? That's, like, the best question here. I think when we kick this off, I think everybody has a very different idea of a framework. Is React a library? Is a hot dog a sandwich? Any of that same old discussion.

Scott Tolinski

Yeah. Tycho is on Ghostly. I don't know if he still JS. They were.

Wes Bos

But I bought a huge bag of it because

Scott Tolinski

cleaning my Zojirushi

Scott Tolinski

USB 8, a little USB C adapters. I put them all, like, in my car USBs. Yeah. It's just itty bitty ones like that. And and they're so cheap. You can buy them a whole bunch. Oh, mine are even way smaller than that. Are they? Yeah. They're just like they're almost like they barely even stick out at all. I wish I had 1 sitting here. But they're just itty bitty. Oh, yeah. Yeah. And I like I said, I put them in my Yarn, all my car USB ports. I put them in my kitchen and, yeah, everywhere. So these things just I saw the maintainer announced end of life, which to me, I don't necessarily

Scott Tolinski

Zojirushi,

Scott Tolinski

Hono, Zod, Drizzle, OpenAPI, Svelte with this?

Topic 3 27:35

Most frameworks now allow calling server functions from client

Wes Bos

so even if it's not a React server components, it's some way to call server code from the client and pass data back and forth. And the benefit to that is that you don't have to set up a whole endpoint and I was like, what's in this stuff that it's so expensive? And it turns out, like, you can use vinegar to descale your coffee machine and whatnot, but it's actually not great for it, especially when, like, we have a nice really nice coffee maker. I don't wanna goof it up. So I was like, I'm gonna start. I'm just gonna buy a big bag of, Yeah. Anything that makes water hot will get mineral buildup over time. And and the sad thing like, I go to a lot of thrift stores, and I look at all these things people have donated.

Wes Bos

I I can't stop thinking about when we had Tanner on the other day, and he thinks he said, like, like, why do you even need API endpoints? Can your route just return JSON? And a lot of people came out and said, on the server. Do it all on server. You can cache it really easily and then simply just

Scott Tolinski

The problem with that is we're just in this world where there is no

Scott Tolinski

WebView app. The server is not running on that device Is it is it a Wes Bos, system? Do you need a GraphQL based system and have it run on your own server? Or do you need to have a separate one? There's all these choices,

Wes Bos

I would say, most of these frameworks are starting to implement some sort of from your camera, and then it would just chop up and make a 1000000 different versions of your image for you. And then there's also, like Next. Js image component has some pretty good to tip yeah. I think it's tip to tail. We I usually goof these up, so let's let's look it up. Tip to tail method of adding vectors and crews drawing the 1st vector on a graph. No.

Wes Bos

code highlighting library. You have to download every like, if you have CSS, JavaScript,

Wes Bos

Like, isn't that what an endpoint is? And I I it can either return a component or it can return JSON. I thought, oh, that's that's actually, that's a good point. I guess the the other thing you need to think about there is, like, it does have middleware, you know, and and what does the middleware story look like? That's my my biggest beef with Next. Js JS the middleware story

Scott Tolinski

complete solution

Wes Bos

The 10 stack start stuff is looking really cool. They have that pretty much, like, what does that look like? So Astro now has that. It just rolled out just under a month ago, which is pretty cool.

Scott Tolinski

I don't know.

Scott Tolinski

on, like, let's say, a native app. Like, I have, like, a a Tori,

Scott Tolinski

naming conventions, all that stuff. You don't wanna worry about multiple languages or whatever, one code base,

Guest 1

the JavaScript ecosystem and JavaScript developers potentially get a lot of flack from people outside the ecosystem. Like, why are you building your back end in JS?

Scott Tolinski

Yeah. I know JavaScript haters don't understand just how nice it is to have that kind of interop between your your server and your client and just have it be so well connected types,

Guest 1

with the RPC, and later on, we're gonna talk about, like, type safety, like, And so, like, they have the reasons around it, but it is definitely a little bit more cumbersome when you're trying to get access to those kinds of things. But one thing I wanted to add that Scott talked about in terms of, like, Greenfield, I think draw those lines between front end and back end.

Wes Bos

it was not great to work with. I asked some of the authors of either programmatically,

Scott Tolinski

I usually say soup to nuts. Soup to nuts. Yeah. I don't I don't understand that one.

Wes Bos

snout

Scott Tolinski

cookie.

Wes Bos

soup to nuts is an American English idiom that conveys the meaning of from beginning to end to drive from the description of a full course dinner.

Wes Bos

together. It's it I think it is a little bit more tricky when you are using route based,

Wes Bos

stack them

Wes Bos

the middleware of of why they did it that way, and they said they initially built it the way that we're talking. Like, I want every route to have its own middleware, but they said that it was hard to

Guest 1

Yeah. So sorry. Go go ahead. No. It's okay. But, I mean, on that point, like, that's another kind of, like, gripe I had with Next. Js. I think I'm getting used to it, but the idea that you can't even get access to the request inside of a server component. Like, they have helpers to get headers or to get cookies, but, like, every other framework I've ever used JS, like, okay. You get the context. Right? This is this is request based. There's an an a a HTTP request came into my app in order for me to for me to be able to render this thing, but I can't access it.

Wes Bos

highlighters that has to that go ahead and then download. And then it has to do the parsing of it. You know? You could just put all of that

Guest 1

But I think that's one of the beautiful things is this idea of

Scott Tolinski

sync endpoints And then you're

Scott Tolinski

itself

Scott Tolinski

Because, you know, a lot of frameworks, you might not even have that server side component. Or for me even, like, I have an app that is my habit tracker. It's a client side rendered app. And you might think you do not need endpoints for a client side rendered app. But you know what? I also run or even better, like, how active are the discussions and forums like that? I I'm kind of over Discord as a sync calls to a server that exists that's in the same code base and actually the same app that I'm deploying to the web version of the app. So, like, can you write your API

Wes Bos

and be able to alright. What parameters is it gonna gonna run and whatever? You simply just define your function in 1 file, and then you can call that function in another file. All the types flow all the way through. SvelteKit does a beautiful job at this type of stuff to to a point where it's like, if you need to code a quick feature into the website in ESLint syntax, it's, like, so easy because it's like, oh, yeah. I just make a folder. I got my I got my Svelte component here, and then I have a server JS thing here where I can implement my endpoints, and and they can just call each other. Yeah. And I even to go along with that, Wes, is can you write endpoints Auth, do you need authentication? This is an odd one that is I'm surprised it's not in a lot of the framework. So we have Redwood JS has auth built in.

Wes Bos

something like the express middleware or Node, like, polyfilled

Wes Bos

Nuts. JS nuts the last thing you have in a meal?

Scott Tolinski

even Node process, whatever. It's it's it is such a good experience, and that's why I choose to to write JavaScript on the server personally.

Wes Bos

heavy. They have to download the whole, a baby Brezza, which is this, like, Keurig for formula for babies. Like, there's so many things in our life that we need to descale. And I was buying this, like, really expensive descaler,

Scott Tolinski

within your application and not have it be directly tied to the application itself? Lucia was a good option, but recently,

Guest 1

being able to call the code with just a just a function call. Because

Scott Tolinski

Soup to cake. There you go.

Scott Tolinski

even Node, like, no context switching, I don't think,

Guest 1

literally, you're the the dev experience is super fast. Right? You can literally write a function and then just call it directly in your client side Node. And then when it all gets deployed and everything, it's in a nice and secure way. It's living as an API function. It's potentially living as client side code. And so that's one of the things you really can't get if you do build things completely separate. You're gonna have some sort of way that you have to share types or copy pasting of code. And Wes you decide to use one of these, like, full stack meta frameworks, that's one of the biggest benefits. It's like the dev experience of working with both the client and the server in such a a tight tightly coupled way. That's so good. And, like, if you have a dependency that's, like, huge or you're like, I don't want to do this on the ESLint, like, I want highlighting code is is a great example. Yeah. Code highlighters in on the client are super

Scott Tolinski

tip to tail. Is tip to tail how they say that was? You would know. Right? Yeah. Tip tip to tail or

Guest 1

Yeah. I had that same experience with Next. Js for like, literally, you can only have 1 middleware file. And so if you wanna do custom things based on route, like, the code gets really messy, and,

Scott Tolinski

in this framework? So let's let's get into it. Oh, wait. Before that, head on over to century.ioforward/

Scott Tolinski

soup to at all, but it is still making

Wes Bos

just deliver HTML with some classes on it.

Guest 1

Maybe that's what people used to do at, like, super fancy meals or something. I don't know. Yeah. Yeah. I'm soup to,

Scott Tolinski

from that app for my my data service. And even if my app is only running client side, I was like,

Wes Bos

Soup to nuts may refer to soup to nuts film, Deno will take care of the the rest of the the funky stuff. Yeah.

Topic 4 42:55

Most frameworks now support TypeScript with full typing

Wes Bos

there's a lot of good stories there. But just basically, like, do I have to now write this whole thing myself vanilla JavaScript,

Scott Tolinski

can they handle automatically uploading images and throwing them into a folder or a bucket for you and having that all configured? So what does it do about static files, images, uploads, those types of things? Like, Yeah. Creating, like, a source set. That was the Gatsby was, like, one of the first in that space where you simply just uploaded a 18 megabyte ecosystems like in Rails or Laravel. It it seems like Nuxt is definitely trying to be that as well. Yeah. And then Svelte, same thing. I mean, there are other ways to write Svelte. You can just use it, but it's it's pretty much SvelteKit or Bos at this point, which, again, I think from the view in Svelte angles of that, it feels Node, you know, that there isn't a 1,000,000,000 options. And for Angular, there is analog JS, which I actually I don't know how

Wes Bos

are those fully typed, or do you have to are are you just assuming they're there? You have to check if they're there. That's kind of annoying as well. So deep integration and I would just let it sit. Or,

Guest 1

So for instance, like, in SvelteKit or even in, like, Nuxt or Vue, they have Scott styles by default. So you define styles in your component, and they're only scoped to that component.

Scott Tolinski

Or does there some kind of process? Or even better, like, These are the fields. These are the auth methods, whatever.

Wes Bos

documentation on how to use stuff that's not the Vercel image. So if you wanna use, like, your own hand rolled thing or you wanna use Cloudinary, I pour citric acid and hot water into the kettle, and, like, 3 minutes later, it was, like,

Wes Bos

a URL route that or via a form submit? but who's having Soup to, 98%

Guest 1

Word. And then also, what's how do we work with CSS? So we know there's a 1,000,001 ways to to work with CSS in the JavaScript ecosystem.

Scott Tolinski

with TypeScript is a major benefit to me. How does it handle images? Does it handle images? Do you just left to drop it in static, you're not gonna wanna hang on. I I did this with React. I did this 800 times with React, and I'm I'm tired of it. So I would like some stability, please.

Wes Bos

which is is what I use on a lot of my websites, and because it's it's also a little bit risky in terms of oh, yeah. You're just

Wes Bos

I think almost all of them now allow you to simply just write TypeScript in it. It just runs, which is beautiful. Previously, you had to, like, run some sort of weird compile step on a lot of them. But,

Topic 5 13:02

First consideration is where the app needs to be deployed - web, mobile, desktop etc.

Scott Tolinski

write once, deploy everywhere,

Scott Tolinski

a lot of data that we would love to be indexed, a lot of data that we would love to exist in the HTML. That makes perfect sense to be server side rendering. And sometimes you have, what, like a product where the application

Wes Bos

React Native Wes where I can

Wes Bos

I can reuse it? Like, a lot of the the Twitter code, a lot of Blue Sky is simply just a single code base that deploys to React Native and the web. Yeah. I mean, in in some of these things play nicer than others. Right?

Scott Tolinski

man, if something makes it easier for me to write

Scott Tolinski

to determine what is static and what's not within your app.

Scott Tolinski

of UI things showing you your errors. Does that need to be server side rendered? Probably not. No. There there's not a whole lot of reasons why you would need that to be server side rendered. Sometimes you you'd go server side rendering for performance. But a lot of the times, it was really just, you know, so that you're not just shipping a blank HTML page. And I I do think, like, we went a little hard on the on the server side rendering story when a lot of these applications, especially ones that very well may run inside of a WebView app or something like that, they just don't need server side rendering and all of the challenges that come along with it. Now granted if you're building a site like Syntax, Syntax is an interactive site. There's a player. There's all this great navigation stuff going on, but there's also a lot of data,

Scott Tolinski

I think, actually, you know, part of this discussion, you know, got kicked off because of the one,

Scott Tolinski

besides the data story

Scott Tolinski

1 stack Scott dev.

Wes Bos

So specifically for people who are looking at, like, React Native,

Scott Tolinski

Next one is how do you render it? Now there's a whole bunch of these different distinctions and the boundaries are kind of blurred here. But, you know, client side rendering, server side rendering, do you need it to be static? Do you need a combination of all 3? And largely, what these depend on is what you're shipping. Right?

Scott Tolinski

and not just like a Wes view. Now granted, web view apps can be fine, but, like,

Wes Bos

can I reuse in my React Native application, or can I simply just write it in such a way with something like or the server bits? You know? And there's all these rules around how it works.

Scott Tolinski

but also, like, deploy everywhere with a native solution

Wes Bos

that's a big question of how much

Scott Tolinski

Does an application like, you know, like Sanity, that's a dashboard

Scott Tolinski

is client side rendered, but the marketing pages, the about pages, the Wes, all those things are are even statically generated. So sometimes you need a combination of all these things. So something that might make it more flexible is is really nice. Like, for instance, in in SvelteKit,

Scott Tolinski

And to me, one of the most compelling things about OneStack but really mundane and and dumb things like hype that,

Scott Tolinski

in a in a route by route basis, you can say this is a prerendered static route, and that gives you the flexibility

Scott Tolinski

React Native or write once and deploy everywhere and actually have it work well natively on those systems. That's that's pretty compelling.

Topic 6 00:00

Transcript

Wes Bos

interesting episode Wes, like, let's let's rattle through that list of things

Scott Tolinski

I it's it's kind of wild. You could find literally anything and if century themselves hasn't made it, you know, there's Node within the community whether that is, you know, Rust, JavaScript. I mean, we're talking languages, but we're also talking frameworks. They have even like a SvelteKit wizard. You just run the dang wizard and it adds all the files for you and sets you up.

Scott Tolinski

So so Yeah. I I I was going to be we have Scott. Yeah. I was going to be in in Florida, which, by the time you're listening to this, hopefully, the hurricane fizzled out. But there is a large hurricane headed to Florida, so I had to cancel all my plans. And, yeah. And, we have a couple of really sad kids who Yarn aren't going to Disney right now. So That's a bummer. Huge bummer.

Guest 1

I consider a framework something that's all inclusive. Right?

Wes Bos

Kotlin or Elixir or Java Bar Go.

Wes Bos

And I thought that would be kind of an interesting

Scott Tolinski

does such an incredible job about having integrations like, the the old USB style thing sitting around, USB a, whatever.

Scott Tolinski

And you get all that cool stuff, all the amazing features from Sanity out of the box. So all you have to do is sign up, run the wizard, or, at worst, copy and paste a few things. And one of the cool things that Sentry does is they even include all of your correct IDs and stuff in the copy and paste bubble. So you don't even have to go hunt down IDs when you're going to do that. So check it out. It's You wanna you wanna take a guess at how many, email.

Wes Bos

anytime I'm like, one of these new frameworks comes out, I Scott, like, take a look at the docs and do a quick scan. And I I found myself being like, I'm starting to do this, like, little checklist of does it have x, y, and z? How does it approach these things? What is its its thoughts on these things? no Laravel for JavaScript? Not really. Adonis? What what are what are some of, like, those other basic things that would make a, username, password,

Wes Bos

Oh, that was pretty good. 28. Wow. Woah. Woah. Sorry. What were you gonna guess, CJ? I was gonna guess 50. I was off. Wow. Oh, yeah.

Guest 1

Hello.

Wes Bos

you you have to think about before you you dive into a framework. Because, certainly, I've been there before where you you go all in on something, and you realize, oh, crap. Like, they don't have this yet or at all, or they don't they don't like it, and I need it. So now Wes Scott a switch. So that's what we got for you today. My name is Wes. With me, as always, mister Scott Tolinski, and we got CJ on today as well. Hello, CJ.

Scott Tolinski

Howdy. I wasn't supposed to be here.

Scott Tolinski

you gotta make sure they have a Sanity integration. But let me tell you, I feel like that's hardly even a conversation considering Sentry

Scott Tolinski

Alright. Well, before we get into it, you know what, Wes? When you're picking a framework,

Wes Bos

Yeah. That's that's quite a few.

Wes Bos

specific

Wes Bos

that

Scott Tolinski

syntax, and I think it's 2 months free. By the way, when you do that, you do have to use the coupon code tasty treat, all lowercase, all one word. We had some folks saying that it was only giving you 14 days. It says on the page you gotta use tasty treat, but that's easy to miss. So, use Node coupon code tasty treat, and you'll get those 2 months for free. Alright. Let's get on into I thought, like, let's start off talking about what is what is a framework. Right? Like, we're we're only talking today about, like, JavaScript frameworks. But in that realm, what is a JavaScript framework, and and what is a library? CJ, what do you think?

Scott Tolinski

for everything.

Topic 7 34:38

RedwoodJS and AdonisJS have built-in auth

Guest 1

And so,

Scott Tolinski

wrapped up in there without having to, like, support a 1000000000 adapters for a 1000000000 different things. Yeah.

Scott Tolinski

would who didn't accept that just totally, you know, left it or moved away or whatever. But if they would have at some point been able to write an adapter that worked for, you know, Postgres

Scott Tolinski

because if you if you lock on to something like meteor died because they built so tightly into MongoDB.

Scott Tolinski

really exists and that you have like, he has a number of his own, like, little tools. Right?

Guest 1

adapt it to your own needs in your own database and and whatever Vercel. But that was my experience. I was like I I added it, and I was like, I could have just written this myself. But at the same time, I've done it before. Like, I know about,

Scott Tolinski

basis of a lot of these frameworks don't come with an ORM.

Scott Tolinski

creds set up within Meteor, it just output the email to the console. So when you were testing before you went live, you could just click and copy and paste from there, and it was a great experience. It it was just nice to have that baked in. Next one we have here is what does a TypeScript story look like?

Wes Bos

what choices has it made? Like, are are there any popular choices? Back end framework. Yeah. It's been around for a long time. It doesn't make any decisions on the client side. So it it is Laravel in that regard that it's all client rendered, and then you can use whatever or sorry. It's all server rendered. You can use whatever you want on the client. But but even Redwood JS, I've been kinda rooting for them to to pick up a bit more steam.

Scott Tolinski

and that that to me is still not even a CMS was that it is very focused on

Guest 1

Sveltekit app, and then I've also tried implementing it into, like, a Node app, and I think and also Next. Js. But every time, I was just like,

Guest 1

creating tokens or signing secrets and and stuff like that. So for people that don't, it's gonna be more of a jump to try and implement it themselves.

Scott Tolinski

but it's Lucy, then auth would be trivial to add because,

Scott Tolinski

Here's one that we don't talk about enough is does it include email? Like Adonis JS includes an email package, which granted, you know, I just think that's nice sometimes. One of the things I love about Pocket Bos is that when I make an account on Pocket Base, it automatically sends the email. All I have to do is put in my email credentials into their UI if I wanna use a third party, you know, mailer service, which you probably do.

Scott Tolinski

whether that is, you know, the frameworks of choice here and there,

Guest 1

you see the source. Like, it it it's source visible by design, like, even when you're publishing something to NPM.

Guest 1

to make those decisions? Because I think that's kind of what happened with Laravel and Taylor Otwell. Like, he made those decisions up front. People trust him, and now it's the way to go.

Guest 1

cause something to to not work or not not take on that way. And I think it comes down to just the sheer number of options.

Scott Tolinski

can I use

Wes Bos

confirm is not good, in my opinion. I much prefer

Scott Tolinski

the adapters portion is really super small, And the adapters portion is is just like, alright. You've done the comparison. Now all I need to do is save the data to the database. So the adapter portion is just saving that information to the database. The problem with tools like Lucia is that they wanted to be everything to everyone.

Scott Tolinski

As far as auth packages and things go, there's a number of things if you're in the the NextEcosystem

Scott Tolinski

the

Scott Tolinski

smaller bespoke tools instead of something that's more complete. But I just do think it's people like their tools and everything like that. Or here's the thing, just things have taken hold in the meta, ubiquitous that is in the Angular ecosystem, but it's definitely the one that I've heard of the most. Mhmm.

Scott Tolinski

Yeah. That was my experience with I say Lucia. I don't know if it's Lucia, but mine went to Lucia. Because it's it's based on the island, Saint Lucia, just where I went on my honeymoon. And my dog, Lucy, her name is spelled like Lucia,

Scott Tolinski

But, I I think the I think it JS, at the end of the day, is I want an opinionated JavaScript framework as long as it's my opinions at the moment. That's right. Yes. That's exactly right, Wes. That's exactly how I feel. One thing I I re one reason I think that people don't, or that, like, auth doesn't get built deeply into a lot of frameworks

Scott Tolinski

and some things haven't. And because those things haven't, the jobs aren't there, or the tutorials aren't there, or the hype isn't there for some specific reason. And therefore Mhmm. It just hasn't caught on. Sanity could be a number of, like, really inconsequential Wes, like, not inconsequential, Build a documented type safe API with honed did you say hono? Hono. Hono? Node? And when I tried to use Lucia, or from the client? You you might you know, fetching data from the client often looks like what you're using something like Supabase.

Scott Tolinski

then would have the ability to have, like, a a smooth auth experience.

Guest 1

And so with the, like, explosion of NPM and NPM packages, like, there's just so many choices, and everyone has another opinion, so they just fork a library and, like, write their own version.

Scott Tolinski

They built so tightly into MongoDB that people

Scott Tolinski

which I think is is more than enough for most people.

Scott Tolinski

flexible enough,

Guest 1

awesome. Yeah. That was my experience too. Like, when I so I implemented Lucia into

Scott Tolinski

after the island. It's beautiful island. Oh,

Wes Bos

Adonis JS has has auth built in. And we Wes were talking on Twitter the other day about Adonis JS just as as an aside. You know? Like, when we had the Taylor Atwell episode out, we asked, like, why is there product itself Yeah. Sometimes it's so frustrating when, like, I literally don't have anybody I can ask about this this this actual issue. And, like, the maintainer is super overwhelmed.

Scott Tolinski

But it matters to me. I don't want to. And I have that choice. So, therefore, I'm gonna make myself suffer by using,

Guest 1

experience or who has opinions

Scott Tolinski

But, like, you just drop in those things and it automatically does all that stuff. You wanna update the templates, whatever. Meteor did that too. And in fact, if you didn't have your email And I'm like, I don't I I think a lot of the Svelte folks didn't like that. Like, Rich specifically said he he hated that because it was, like, collocating too much. But me, personally,

Scott Tolinski

there's too many things that I have to do personally here. It feels like I'm writing my own auth Wes I would prefer something that makes more decisions for me Which, like, I think I know that's, like, a ridiculous thing because we will just suck it up, use JSX, use React, whatever.

Guest 1

Like, one one thing about the JavaScript ecosystem is, like, because we're writing JavaScript, typically,

Scott Tolinski

Yeah. Is just and,

Guest 1

But, like, if you look at Adonis JS, like I mean, I'm not super familiar with it, but, I mean,

Wes Bos

Adonis JS is the move. You know? And and, like, Redwood is also kind of in that space. And then I I have the Wes is like,

Wes Bos

password reset link, that stuff, you could do that. Yeah. If you wanna see some examples,

Scott Tolinski

I think people just like their tools, and you look at something like Adonis or any of these things that make all these choices for you. Like, if I look at these things, I say, Sick. And the Scalar folks even commented on that video, so shout out to, Scalar.

Scott Tolinski

They wanted to to support how everyone did their auth instead of being opinionated.

Guest 1

like, that's that's kind of what we're up against. I mean, I think, like, there are I think it kind of, like, takes someone who has

Guest 1

understand. I can't figure out why. I think yeah. He actually touched on it, Scott. One of his biggest points was maintaining the database adapters was the biggest amount of time spent, and he didn't wanna spend that time anymore.

Scott Tolinski

on how I purchased, I did link to my hand rolled auth that I use, and it's just a really simple session based authentication,

Guest 1

that at least other people can get behind

Guest 1

you've basically showed me what I kinda just wanna write this code myself. I have to Yeah. Yeah. Yeah. To do all I mean, that but that might be the point that the maintainer JS trying to make is, like, we provide we will still continue to provide these kind of utilities and examples, but it's up to you so you can

Topic 8 05:00

Examples of JS frameworks given - NextJS, Remix, Vite React

Wes Bos

The yeah. Adonis is is a good example of Node. That that one's even probably if you write them with

Wes Bos

fits your criteria of it includes absolutely everything. You know? And then at a certain point, it yeah. At a certain point, it moves into, like, being, like, a almost a CMS. Right? is an example of 1. We have the 10 stack start is another example.

Wes Bos

Hey, San Francisco. We're gonna be in town for GitHub Universe on October 28th, and we're doing a syntax meetup. You don't have to be going to the GitHub Universe conference to meet up with us. But if you are in San Francisco, come hang out from 5 to 7 PM, October 28th. We're gonna be at the Bare Bottle beer garden in Salesforce Park. Admission is free. We're not gonna charge you, but come hang out, and you need to grab a ticket via Eventbrite. So we put the link in our socials, in the newsletter. We'll put it in the show notes as well. Come check it out. Come hang out. Scott's gonna be there. I'm gonna be there. The whole team's gonna be there. It's gonna be exciting. See you then.

Wes Bos

I guess, I think the 3rd one to implement it. It's still super early. Like, it's probably not even worth worth trying just yet, the base things, like like, I'm thinking, like, routing, look like? You Node, is there is there editor plug ins? Are there

Scott Tolinski

You know, it's almost like a a data framework Yeah. That's a lot. 28.

Scott Tolinski

without the UI, like a headless data framework.

Wes Bos

We have Remix.

Guest 1

Yeah. And, Redwood is another good one because that that also has opinions about, like, using GraphQL. So, like, they choose your

Wes Bos

Do Wes wanna go real quick into a couple examples of frameworks for Vue, Svelte, and Angular?

Scott Tolinski

Yeah. It's all a pick and choose out of all of these different categories that we're gonna discuss.

Wes Bos

just yet

Scott Tolinski

auth. It includes

Wes Bos

What else do we have in the space? There's the adapter will determine

Scott Tolinski

Right? But a CMS includes the UI.

Scott Tolinski

But yeah. I I that's a tough distinction. It's it's all,

Scott Tolinski

is that it does include is just a,

Guest 1

Yeah. Also, in the in the Vue ecosystem, there's Nuxt.

Wes Bos

In the React JS space, there is obviously, Next JS is

Scott Tolinski

There's next. Re I mean, even you could even say Vite react or

Scott Tolinski

and a framework there is that a framework to me includes the database and the ORM.

Scott Tolinski

I might be comfortable giving that to a client, but I'm not the same level of comfortable giving that to a client as I am with a Drupal, WordPress, Ghost, any of those things back ends that are, you know, definitive CMSs.

Wes Bos

rolling out support for React server components

Scott Tolinski

You know, the cool thing about Pocketbase

Scott Tolinski

That to me is where the line is drawn. Because if I look at even something like pocket Bos, which is just the back end, or MySQL or whatever, I think people would have stuck around a lot more to these things. So you need an ORM that's

Scott Tolinski

That to me is like admin interface.

Wes Bos

or at all. You Node? They're kinda like, I'm not sure about it. You know? That's kind of this weird spot right now. So Redwood JS is one of the,

Scott Tolinski

in my mind because I

Wes Bos

especially if you're gonna think about running in production, but I did get it up and running and and tested it out. Yeah. For me, Wes, the the distinction between a CMS some spots here and there that were were kind of frustrating.

Topic 9 03:32

CJ defines framework as all-inclusive, allowing much to be done without additional libraries

Scott Tolinski

Yeah. I mean, we're gonna hit a lot of these in this episode.

Guest 1

if I can get a lot of stuff done without having to reach for other packages, I would consider the thing I'm working in a framework.

Wes Bos

Yeah. Like, if you could sit down and build job to also do the support. They're not gonna get anything Deno. But you also want your your questions answered. How do I do this? I'm I'm hitting this specific issue. Is it my issue? Like, so many times I've used smaller things,

Wes Bos

with

Scott Tolinski

But if if if I wanna be I wanna be a little controversial here, I am going to take the stance that I don't believe a framework is a framework without

Wes Bos

is is another one.

Guest 1

Like, a lot of times, something might call itself a framework, but then you need to do one specific thing, and you gotta go install another library or another package. So,

Guest 1

for me,

Wes Bos

like, a router is is probably the biggest one. Like, maybe a Scott management why aren't they more popular, though? You know? Like, do you guys actually have any any thoughts on that?

Topic 10 44:43

CSS options mentioned - scoped styles, CSS modules, CSS-in-JS

Scott Tolinski

Yeah. One thing that I think I have a hard time with that other folks might in the JavaScript Node ORM. Right? I think that might be a better better thing to say here. Does it include an ORM?

Guest 1

And then also these days, a lot of people are are choosing to use something like Tailwind. So does it support Tailwind? And a lot of times, you need to make sure that, Word. Yeah. And a lot of these modern, meta frameworks, so like Next. Js, SvelteKit, they all have this Sanity even Astra have this idea of route by route route rendering. So any any route you can choose, this will be SSR. This will be CSR. I will say Wes I worked at a consultancy, like, this was kind of before the explosion of meta frameworks, and we essentially just had, like, 2 internal apps. So, like, if we needed

Guest 1

especially if you're doing server side rendering, there's there's some sort of mechanism there that's gonna allow Tailwind to to be included in those server rendered bundles. And then one of the things that I like to look out for because I write a lot less of my own CSS is

Guest 1

every single component that tries to bring 1 in in one of those components has to be marked as a client component because the library hasn't taken that into account yet. Yeah. Yeah. That's that's a huge pain in the butt. You gotta wrap it. Every single component you have to wrap. What a Yep. I mean, I think they're trying to fix it, but, yeah, it's super annoying.

Guest 1

is there good support for component libraries. If you're if you're not wanting to write all of your styles from scratch, you might wanna reach for something like,

Scott Tolinski

ecosystem JS, how long has this thing been around? Is it version pre one? If it's version pre one, I I'm like that that meme where I'm looking back at it like, oh, you Node? Like, a pre version 1, JavaScript framework?

Guest 1

Daisy UI or or Flowbite, these things that basically give you prebuilt components.

Scott Tolinski

My kind of thing. But, yeah, I I I do think that it matters. Like, how many times have they had to do small rewrites, API thrash, things like that. Even with this new Svelte five stuff. I love the way Svelte five works, but I'm not stoked to have to rewrite so many apps to it. Even though the version 4 code will continue to work when you upgrade to version 5, Auth JS.

Guest 1

But for other frameworks, especially React based, you need to use other things like CSS modules

Guest 1

or CSS and JS and all of those various solutions, like Stylex and Panda and styled components.

Guest 1

And if you're trying to integrate those with some frameworks, they might not have the best support. So, like, if you're trying to use there's Daisy UI React. And if you try to bring that into Next. Js,

Topic 11 15:54

Modern frameworks allow configuring rendering (SSR, CSR, static) on a per-route basis

Guest 1

So I will say, like, it doesn't have to include all this stuff, especially if you find a framework that maybe doesn't include the thing that you need for this one specific use case. I don't know. Build 2 apps posted on subdomains, something like that. Node often you see, like, the marketing website for a product and the actual

Wes Bos

obviously, Node. And then we have Node serverless, and then we have Node that will spin up and spin down as you need it. And then we have traditional,

Wes Bos

The next 1 we have here JS, where are you deploying it to? I think, like, this story has gotten really good lately because it almost doesn't matter usually has a little bit of weird things with their bindings, trying to be able to hook it up to the database.

Wes Bos

what you like, how you write your Node. Because if you're writing it in standard space JavaScript, or run on multiple

Wes Bos

it almost doesn't matter

Wes Bos

like, back when, Gatsby started getting Jamstack was really popular, like, we realized, oh, yeah. Prerendering a lot of the stuff is is a great idea.

Wes Bos

Yeah. That being able to, like, choose with the move to people writing There's Yes. It's almost always me. That's why I I default to that. Yes. Exactly.

Wes Bos

things here and there, but even Cloudflare announced the other day they're using this thing called Unenv

Wes Bos

And that

Wes Bos

about all of the different JavaScript runtimes. You Node, we've got BUN and Deno and Cloudflare Workers and, sorry, file based routing Vercel, like, a, like, a defined route in your code.

Guest 1

a marketing page or SSR, that would be like WordPress, but then the internal would just be built with, like, create React app and an API.

Wes Bos

Mhmm. Which is part of the, like, Un JS ecosystem.

Scott Tolinski

Yeah. A lot of times too, that's even like they need a CMS. They need different tools to publish, and they're not gonna wait for some developer to make a code for it or whatever. Yeah. Yeah.

Wes Bos

statically rendered. You know? And then the answer to that was, well, you just have to do it on the client. And and but then we're like, like, okay. Then I have to make an API, and then, this is starting to get annoying. You know? But, like, on on the same point, like, what does the as Node different

Wes Bos

But, eventually, we hit this point where those nice features, Seems like Astro's becoming really popular. Then there's Solid JS and Solid Scott JS another one in that space. There's Quick JS. So Solid uses JSX, so does Quick JS.

Wes Bos

pace at which they move our whole life will be USB c. And, like, I've been I've been waiting for this moment, like, my entire life. And, like, I even these headphones I'm wearing are micro USB.

Wes Bos

node running on on an actual server. Right? And I Wes thinking about, like, there's so many of these runtimes, just because the overlap that they have there is is very small.

Wes Bos

obviously, there's a couple little

Wes Bos

and the actual product.

Wes Bos

and,

Wes Bos

things. They wanna test stuff. They wanna try new things. They wanna do redesigns.

Wes Bos

It's nice to be able to just opt in to one of these rendering or even just, like, rehydrating on the client. That's what SvelteKit does. Right? You can render it all on the client, but then you pick it up on the sorry. You can render it on the server, but then you pick it up all on the on the ESLint.

Wes Bos

which one is server rendered, what's client rendered, which one is is prerendered. Static is is really nice because, Mhmm. Is is a big question because images are are a hard one.

Topic 12 04:14

Scott argues a framework must include auth and database to be considered a true framework

Scott Tolinski

or any of these things that do more of it for you.

Scott Tolinski

you know, 10 additional choices of your own. And to me, a framework is something more like Rails that, or Django

Scott Tolinski

a pre framework. It is a a tool to build things, you know, like, I wouldn't consider Next. JS or SvelteKit even a framework granted you can build websites. But, like, with those tools, you're always having to tack on,

Scott Tolinski

auth in the database or at least some sort of solution for that. For me, everything else is just kind of like To me, that's that's not that valid because the auth stuff an ORM, you know, connects

Topic 13 26:14

Storage options discussed - existing vs new API, GraphQL, REST, gRPC

Wes Bos

like Wes you click on a button, Yeah. Yeah. And people are gonna be saying, like, well, you can run

Wes Bos

form actions? They're called something in every single framework, but, essentially, what it is is

Scott Tolinski

You sign up. You create your database.

Scott Tolinski

basically to the database, and and that's really the big thing JS you need to adapt to whatever database the person wants to use. Or

Wes Bos

I was look that's one thing I looked up on. Node one is they don't have that at the moment.

Scott Tolinski

Do you need to fetch this data from your server that you need to make. And even as far as that, we we get ESLint, like, database.

Wes Bos

And then the last 1 we have, which is something I'd been checking on all of these new frameworks that come out, is does it have RPC or or server actions or server functions or

Wes Bos

can you call server code How come?

Scott Tolinski

Does your framework include a database? How many how many actual frameworks these days included a database Bos at least database adapters? And typically, that's just like

Scott Tolinski

doing subscriptions or calls from the client side for all of your data transactions.

Topic 14 08:28

Vue framework example is Nuxt, Svelte has SvelteKit

Guest 1

And, I guess what's nice about the the Vue ecosystem is that's kinda the the only one. We don't have a bunch of choices.

Guest 1

But it is nice. And they're working really hard to start to integrate things like databases and caching and some of the stuff that you would see in other,

Share

Empowering developers for over 286196416256 milliseconds!