10 months ago Syntax Podcast
Creator of Vite: Evan You
Transcript
Guest 1
what he built. He built that too. Right? So, we want to have that in Vite, which allows you to and it's built on the existing solutions that you're already familiar with, except they are now use they now use a
Wes Bos
Yeah. Yeah. Wes loves giving a wish ESLint to the guests. Yeah. Yeah. It's like, now that I have you here Yeah. Exactly. Allow me just to ask you for my list of things. Oh, also, I want,
Guest 1
Some of the sites were just generating too many chunks, and it affects loading speed.
Wes Bos
VoidZero,
Guest 1
the the whole set of underlying parser, transformer, resolver, and then there's the bundler. There's v to build tool. V just gonna get a survey API. So it's a bit more full stack than it previously is. Mhmm. There are meta frameworks built on top of it, which we support.
Guest 1
And I could tell that Angular was created by someone very engineer minded, because it's actually all about, like, how do you allocate memory efficiently. Like, OXY uses something called arena allocator, which means the whole AST is, like, allocated in a consecutive That's good validation.
Guest 1
Lambo
Wes Bos
the API design as well
Guest 1
to subsidize the use yeah, totally. He actually has a very, he has a talk called yak shaving.
Guest 1
try it and implement it and then put it in some production apps to see if it works. Right? So, like, It it's a lot of work. Like, we've been working on RowDown for, like, almost Right? Yeah. Okay. I think the biggest problem is just the the promised gain And, one more important thing I want to plug is we are actually that Meteor runs in, but they want to go outside in and just like they embedded Node. Js in the Meteor distribution.
Scott Tolinski
VITCONF. So, man, that's that's coming out right up here. Yeah. Are are you excited to head out to, Amsterdam?
Guest 1
He's,
Wes Bos
I have some ugly hacks that, like, has still has to use common JS, and, like, it deletes the require cache, What's what's he like? How you you probably know him better than I do, but, like Yeah. Prolific
Scott Tolinski
He built a whole map showing his
Wes Bos
node or straight, like, TypeScript node,
Guest 1
performance oriented in its design in a lot of aspects.
Guest 1
monetize Right? And then we have unit like test runners, linkers, formatters.
Guest 1
I think Quick. Js, they just migrated their playground from roll up to Node down.
Scott Tolinski
the conversations in the message boards at that time about
Guest 1
Actually, we decided to bet it on Pnpm before the author, Bauschian, joined the company.
Guest 1
storefront code? we've seen anywhere from, like, three to four times to 16 times faster in production apps.
Scott Tolinski
it it's not trying to make you feel smarter or not trying to make you you know? Like, where do those ideas come from, I suppose?
Guest 1
Okay. So I got this a string based,
Wes Bos
Yeah. Our our running take is that Shopify is writing the the Webpack portal for Rust, and he was Yeah. RS pack. That's what it is. Thank you.
Scott Tolinski
welcome to, what, like, 02/2018?
Guest 1
Veed dev, Veed build still work exactly the same way, but then you can additionally just do Veed linked, Veed Wes,
Wes Bos
to major version, there's never really any major, like, thrashing changes. You know? It's just like, oh, the new version's out.
Guest 1
Well, it it's I mean, we're we're framed as, like, the the tool chain, not just the bundler. Right? Right? So there's
Scott Tolinski
Oh.
Guest 1
yeah, I'll let you can you can call me a skeptical. Alright?
Wes Bos
Aside from, like, I need TypeScript, which maybe we'll get that in, as comments at one point in the browser.
Guest 1
that's written in JavaScript,
Scott Tolinski
Did you see yourself making that change from working on the UI code to
Guest 1
I just had it on my desk ever since I came back with it. It's it's the best thing ever. Man, classic stress toy. That's good. Yeah. Shout out shout out to Taylor. Shout out to Taylor for making this.
Guest 1
a lot of people probably know that when I started to WebAssembly So that inspired me to essentially say, okay. Let's use this for Vite
Wes Bos
rack server components. Like, do you have any opinions
Guest 1
So I just think there are so many little paper cuts that makes people have to, you know you basically have to pay with your developer experience in order to use RSC. But in the end, when you, like, say, put it in production, are you see boilerplate actually building stuff. And then
Wes Bos
you have to manually type it in. So I built, like, a little
Guest 1
and now all the slides just, you know, is able to load much fewer chunks and load faster.
Wes Bos
philosophies
Guest 1
interestingly, because I initially So that that really got me working on Veed. Yeah. You know, we both have a a background, but the API is roll ups. So we support roll up plugins. It's a Rust handler, but we support JavaScript plugins. So if you have a roll up plugin
Scott Tolinski
So dope.
Guest 1
Not really. So I would say a lot of
Wes Bos
like, I, like, I feel like I know the entire Vite API. You know? I've I've built several lower level plug ins in it. I've built very complex,
Scott Tolinski
many of the things that I think Vite did really well out of the gate, things like
Guest 1
Turns out, you know, Rust works very differently from JavaScript. So a port is Vite's.
Wes Bos
like, I've migrated
Guest 1
I'm actually starting to think, you know, what is friendly to humans not Yeah. May not be fundamentally friendly to AI agents
Wes Bos
so many,
Guest 1
So moving it to a completely different They spend a lot of time and energy working on those things. Right? But, like, you know, detail, if I'm looking at RSC objectively, Yeah. So there are,
Wes Bos
make a huge hero banner that shows my latest three products. That's my running thought that Shopify needs something before another company comes in with an AI
Guest 1
like, not as an ecosystem so, obviously, we started from Deno, but, like, we essentially I just don't feel like it delivered what it promised to deliver.
Guest 1
a while ago.
Guest 1
complexity we don't I pitched it. I was like, if you guys wanna move Nexon to Vite, we're here to help.
Guest 1
more performant.
Guest 1
So and and it's free to just try it out. You know? It's the same Npm distribution. You just install it, override Vite in your, patch manager config, and, you can start using it. So it's the same Vite. Same it's a dropping superset.
Guest 1
Mhmm.
Guest 1
But, like, is this a stupid question? Why do we even need v why do we need a bundler? Yeah. That that's a good question. I think, it really like, it goes back to what I said about the web because, like, people built all kinds of weird stuff on the web. People build small apps, people build big apps. Right? So,
Wes Bos
And then shameless plug, what would you like to plug to our audience? You can plug as many things as you want. There's v plus. There's v Scott.
Guest 1
next month, October because, annoying for most average users, or you have to Scott, like, express server or or a custom Node. Js process on the side. So we want to make that simpler. So, we're actually,
Scott Tolinski
just
Guest 1
And,
Wes Bos
folks gave us is because that like, it's much easier to port JavaScript
Guest 1
That's an additional whole transform pass for every single file. Mhmm. So we just ported that specific plug in to have it run directly in o x c, and then they were able to get rid of the extra pass. And now the build is, like, seven times faster.
Guest 1
Yeah. Later on, as we started inventing new more adding more stuff to the framework, we started having, like, single file components. We started having TypeScript support.
Guest 1
Node v for for this type of stuff. There are a few libraries, like, I think TSX and, like, Jitie that kind of does that. I That's what I'm using.
Guest 1
and,
Wes Bos
I'm not sure if you could came prepared with a sick pick a JavaScript bundler?
Guest 1
build a minifier that can match the compression quality of Bos, Wes when we run it with Node. Js or BUN, you know, it's actually the Rust Rust binary. But if you want to run-in the browser, it has to be WebAssembly.
Wes Bos
needs
Guest 1
the easiest way possible probably echoed with a lot of people.
Scott Tolinski
When when did you release Vite first? It feels like it was a long longer than that. Yeah. 2020?
Guest 1
It's almost like, at VidCon in person. Nice.
Guest 1
in Rust Mhmm. On top of o x c. And then there's the minifier.
Guest 1
So we implemented that in collaboration with Framer.
Guest 1
for a very simple bug report. And I had to download megabytes of Node modules Yeah. And wait for it to boot up. And I was like, there's gotta be a better way for this. Yeah. No kidding.
Guest 1
essentially make the
Wes Bos
before they had Rage Kit. And we have Evan Yu on. He's the creator of Vue,
Guest 1
and somehow got more into, You know? So Yeah. At that time, I was like, yeah. Like, you know, maybe Node. Js just don't really need this kind of monolithic frameworks.
Guest 1
from the clean architecture that allows or
Wes Bos
is is really, really simple. So I'm I'm curious if you have any, like, like, core
Guest 1
And in dealing with these tools that kind of, you know I just, like, for so long, and they also invested a lot into TurboPack.
Guest 1
But they decided to essentially treat Node. Js as a stress toy from Laracon.
Guest 1
You know? Like, first of all, like, the React server components and the way they are, you know, presented in, in Next. Js JS kind of two different things. Right?
Scott Tolinski
everything, database,
Wes Bos
Yeah. What do you what do you do to make money? How do you why did you start a company behind a
Guest 1
And you know? So we have this, like,
Scott Tolinski
would Next. Js be better with v Yes.
Guest 1
stuff like that. So when we build a bundler, we Scott think about, like, what do we build on top of? And in terms of, like, this layer, So OXC, by, having these bigger companies,
Wes Bos
We were asking that, But instead of having to code liquid, they just type in the box,
Guest 1
in a way, this, like, not having prior experience in serious engineering actually allowed me to just focus on the minimal subset of things that I really cared about. Like, what is the simplest API that I can design for myself OXC, I think that gave us a lot of, like, insights on how React server components should work with Vite. So that kind of led to the current, chunk splitting, for example. Right? These are pretty complicated, and we want to experiment with a licensing model that is, you Node, it's going to be free for individuals, for open source, for non commercial.
Guest 1
like, like, I know they're smart people. Right? They might Yeah. Be onto something. But Yeah. You know, the the information I'm given, I'm not super optimistic about the, Obviously, we have, like, collaborations and just, like, exchange of ideas, but, you know, for the most part, you know, they just did a really good job, and I was able to just say, okay. Let me just focus on Viewcore.
Scott Tolinski
Yeah. I often feel
Guest 1
Stoked to have it. Yeah. Yeah. We made most But I think after a few years, it's like the sunk cost is just like they've invested so much into it. It just, like, you know, different projects have different constraints. It's not a purely a technical decision. For us, it's mostly because we had a group of people who are already proficient with Rust, who are interested in working on this. Right? But I think eventually, they just like, okay. We're gonna it's it's too risky for them, the the short story is. Right? So when you want to run some back end code on the side, you either have to wire up the environment API itself, which is kind of probably a bit, kind of divide the different phases of work and parallelize them as much as possible. So that definitely helps.
Wes Bos
Yeah. That's great. I love how he's just totally leaned into the whole Lamborghini thing. That's
Guest 1
But on top of that, we are also debated a lot on, you know, some of the architectural decisions, like, do we want to use They were just, like, trying to get the pros and cons and just, like, trying to make a decision.
Guest 1
Yeah. I I think, So in terms, like, I guess, like, turned out to be somewhat true. Like, even today, like, there are very few, you know, and and also developers, right, some developers, they maybe they will switch projects, like, every few weeks if they're, like, a contractor or a freelancer. But some people just work on the same app for years, And then,
Wes Bos
Yeah. And and you do that with WebAssembly.
Wes Bos
Let's talk about Node for a bit,
Guest 1
the tool chain itself a target runtime. It actually doesn't have to be Node. Right? Environment the whole point of environment API is you can
Scott Tolinski
that you were primarily known as, like, a framework author,
Wes Bos
Yes, please. I want that because Yeah. Like, I'll I'll obviously, I'll usually reach for a meta framework where it has that in. But, like, when I'm going straight
Guest 1
Uh-huh. So that's why when I I have a I call it a term called the progressive framework for Vue, which is essentially saying, hey. Like, Vue starts as just a rendering and everything assume is assumed to, like, run-in the browser by default.
Guest 1
to, you know, do what I want to do? Right? And turns out that probably,
Wes Bos
that AI is able to
Guest 1
in a way which is it's
Wes Bos
from Deno. And and, Node, he picked flying a kite and going for a walk. Yes.
Wes Bos
And for a build that scale, that's, like, huge, huge time save. Yeah. And, like, like, how how many minutes or seconds are we talking that it went from to two?
Guest 1
So Rust actually has a better ecosystem compared to Go. And a final important consideration is, so that you're willing to just apply these tools
Wes Bos
thing. Any thoughts on on that whole direction of just, like, dumping React entirely and and building your own,
Guest 1
So we started looking into how can we build our dedicated tooling for Vue users,
Scott Tolinski
Yeah. How has this transition gone? It's from an outsider's perspective, Wes loading data, that transportation layer?
Guest 1
implemented in Rust. It a lot of stuff work out of the box, TypeScript, JSX, He previously built a thing called Vite plugging inspect.
Wes Bos
consistently create items for, and that will be a very good engine for people building Shopify stores.
Guest 1
premiering the, right, it's Scott a little slow. So if you really care about performance, care about, like, loading your website or app fast, then you just Scott optimize it. And if the tool right. So then it comes to a question of, like, trade offs. Are you willing how much complexity
Scott Tolinski
seems like it's gone relatively smoothly from the outside perspective.
Guest 1
do.
Guest 1
over a decade, like, since 2015,
Scott Tolinski
speed of of Vite all the time. And when there are people who post about, oh, my next build is faster, I'm like, bro, Node Schickling. Yeah. Yep. Yeah. It's a it's a stack lineup for sure. Yeah.
Guest 1
make it easier for you to essentially say, here's a because right now most people think of Vite as a front end,
Wes Bos
on rack server components? and, like, look, what Vite's relationship
Guest 1
it will actually just work in ROTA.
Wes Bos
very easily and be able to crank out components
Guest 1
and the in and the, and the cost of DX.
Scott Tolinski
Mhmm. Replacing this massive of a part of Veet has,
Guest 1
and the mixed RSC graph,
Wes Bos
knee have a need for that, or is it just me because I spin up so many demos every now and then? Uh-huh. But that's my wish list. I'll stop there.
Guest 1
But, So at the very high level,
Wes Bos
Vite RSC plug in. And, yeah, I because I've used the turbo pack quite a bit, and it's
Guest 1
Right now it's named v plus.
Scott Tolinski
looking JavaScript framework. Right? Like yeah. It's it's hard to describe many JavaScript frameworks as, like, looking nice just in a a code context, but I I wonder, like, how much of that is informed just by your aesthetic awareness.
Wes Bos
n p x v dir,
Guest 1
we did actually prototype something that's, like, Vite on Really? Next on Vite. And we were able to, like, even get, It is. So environment API essentially is the lower level abstraction you know, and the raw power of Rust itself. Some of that is indeed, you know, inspired by how, ES builds, the design the pipeline design Wes build allows you to essentially effort into the documentation going with an architecture that's more similar to esbuild than rollup.
Scott Tolinski
You don't want a production application out there that, well, you have no visibility into in case something is blowing up, and you might not even know it. So head on over to century.i0/syntax.
Guest 1
Yeah. I don't Wes yeah. We have, like, few hours. Nation.
Guest 1
And, yeah, we're showing it Ashby content in person, and it's gonna also be live on YouTube afterwards.
Guest 1
build tool, especially when, Vite's default, like, development behavior is unbundled.
Guest 1
as I build stuff, I'm like, these tools kind of you know, it's kinda clunky. What about I build a framework for myself? you know, the chance of porting it over to Vite and then having they actually still use Wes w c to compile that, which means you are actually, when I was trying to reproduce a bug that user reported,
Wes Bos
Yeah. I know there's, like, Vite Node, and I know Zack. We had we had Zack,
Guest 1
centralized configuration the the decisions on tooling is a lot of it is informed just by my solutions, and I just found OXC to build runs in the browser. Actually,
Scott Tolinski
And if you want to see all of the errors in your application,
Guest 1
few just don't won't do something like that. Wes just felt like, like, is the ESLint introduced into your workflow compared to the eventual benefit, like performance benefits
Scott Tolinski
you'll want to check out Sentry at century dot I o forward slash syntax.
Guest 1
Yeah. Like, he just built so much stuff. But And and it's all beautiful. Yes. Yeah. Exactly. Yeah. He's he's a also a design engineer at heart. So, originally, the name is Node down because we're like, okay. This is gonna be a rogue port. We're just gonna built, tree shaking capability and output output quality of Webpack.
Guest 1
So, if you just put it over the network, Right? Webpack is slow, but it, like, it has pretty good output quality when it comes to, like, you know, tree shaking and,
Wes Bos
things that they need to account for. People think, just use Vite. You know? But, like, they have the goat, the the man who has made web development
Guest 1
Right? So there are just, like, so many places things can go wrong.
Scott Tolinski
And this might be a weird comment, but,
Wes Bos
that
Guest 1
it's it's also weird. Like, I I don't I haven't figured that out completely myself. But, never actually did.
Guest 1
sort of Rails or Laravel equivalent in the Node. Js ecosystem
Scott Tolinski
evolution, you could say,
Guest 1
is the, the ballpark.
Guest 1
And the feature scope also is more like esbuild than rollup.
Scott Tolinski
even if it's not, like, for everyone
Wes Bos
custom site builder that AI can control. And we think that they are building a dead nuts simple thing similar to how people love liquid for Shopify because it's it's so simple.
Scott Tolinski
it seemed like for replacing
Guest 1
Sure. Yeah.
Wes Bos
Is friendly for them. Can understand
Guest 1
existing production Next. Js app just work on that new version is very ESLint, or you would have to, like, spend environment API open source tool chains for JavaScript.
Guest 1
But Yep.
Guest 1
Yeah. Just five years ago.
Guest 1
we wanna put these things together into a The Vue logic in Vite one was, like, hard Node.
Scott Tolinski
you worked for the Meteor company. Right? What what they they were called Meteor,
Guest 1
So
Wes Bos
competitor.
Guest 1
Just, just based on the information that, supports the same sort of advanced chunk splitting, And then after I designed some stuff, I was like, I want to actually build it, but I couldn't find anyone to build it for me. So I had to learn how to build it Vercel, And then I found out, Jason Miller actually did it in his project called WMR.
Guest 1
Mhmm. The language tool chain. It's an alternative Wes SWC, essentially. Right? So it has its own parser.
Guest 1
to build that's, right, then you just have a huge risk of not reaching enough people.
Wes Bos
who creator of Vite, which probably everybody listening to this this podcast has used many, many times, and it probably powers many of your businesses. So stoked to have him on. Welcome, Evan. Thanks for coming on. Yeah. Excited to be here. So real quick. Before we get into it, for the, like, six people who haven't done it, give JS an introduction of of who you are and what you do and kinda your background.
Guest 1
It's made by the same crew that made the View documentary and it's also the, how each other works out of the box.
Guest 1
rollup itself, the core JS very lean. It relied mostly on plugging. So let's say if you want to do resolve node modules, if you want to transpile TypeScript or JSX, you all need plugins. Right? Wes build kinda just does all of this out of the box. You don't need to use a plug in just to transpile TypeScript.
Scott Tolinski
Meteor Development Group. Yes. Yeah.
Wes Bos
Right? Wakeroom.
Guest 1
Yeah. We have a very, very exciting lineup. Like, Rich Harris is gonna be there. Ryan Coniarra JS gonna be there.
Scott Tolinski
update the dependencies for me. Like, for some reason, that little bit of developer tooling, I I don't know if that's the best way to do things, with versions. But for some reason, I just really liked how simple that all was. Oh, just just paste this into my package file. Next time I I run the, the boot up, it just installs it for me. Yeah. I I think, like, at that time, like, how how much additional work has that generated? Like, is it is it been
Wes Bos
one or two. Oh, wow. Yeah. That's that's the difference of, like, walking away to get a coffee because the building's running to just like, oh, hold on. Let me just I'll sit here and wait for this thing to build, and and then we can merge it. That's amazing.
Guest 1
And,
Scott Tolinski
Mhmm. So
Wes Bos
and components that interact with each other and are able to like, a very simple framework That's nuts. And as to, Yeah. Yeah. For my modules. And there Yarn, like
Guest 1
Eric, Right. So
Scott Tolinski
Yeah. Yeah. You know, I think that I I do wonder where Meteor would be today had,
Wes Bos
a pair of headphones, could be a chocolate bar, could be,
Guest 1
you know, aligns with a lot of people who you're getting? So it becomes kind of a DX versus UX problem. Right? So
Wes Bos
another tool, and then you have recently
Guest 1
friendly to humans?
Wes Bos
old apps that were in Vercel and webpack and and brought it into one. And Mhmm. I I use the WebSocket proxy API. Like, I feel like I know the entire Mhmm. Vite API, but, like, I don't know that I could design something so simple and beautiful. And, also, just, like, upgrading from major version
Guest 1
we actually do still want our tools to be able to run-in the browser, and the WebAssembly story of Rust is much better than Go's.
Guest 1
configuration like Webpack does. So it gives you just much more control over how do you want to like, how big the size,
Guest 1
the Vite documentary the reason he got into so many projects is just when he was working by himself, he would find these little paper cuts in his workflow, we are now matching the Yeah. So that's been, like, a a Yarn in the making.
Scott Tolinski
Thanks, guys.
Scott Tolinski
well known for handling
Guest 1
So he joined us like a like, you know, I think like half a year later. I tried to
Wes Bos
and and have that run-in, like, as, like, a node server. Right? Is that is that a bit more peeled back at, like, a framework level? like a default HTTP Vercel some HTTP service. Exactly. Exactly. I see. Okay. Exactly. Interesting. Brings you back to the the PHP days where you just click the file and and that file will run. Did you open source that plug?
Guest 1
I would say it would.
Guest 1
transforming like, look. We should just, like, put these little packages together, UNIX philosophy.
Guest 1
in the past. Some some probably still use today.
Guest 1
And as I build frameworks, a independent open source developer for
Wes Bos
you gotta throw a watch in there. You gotta restart the server every time. Like, I just want hot hot reloading
Guest 1
if if you followed along the early days of v, like, we came all we we went all the way to, like, one point o r c And, We had to, we actually also had to work on all essentially replicating the whole straight up port it. Yep.
Guest 1
workers, the the regular, the local version of it. Right? So,
Scott Tolinski
easy
Guest 1
pay for the advanced features among the initial design based on the first prototype I made. So here, I gotta give credits to two people, Jason Miller, Rich Harris,
Scott Tolinski
to Vite.
Wes Bos
dev cranking out everything.
Wes Bos
plugin that would give you a listing of a directory contents, and then you can click on the HTML files, and it will it will parse it through. So,
Guest 1
and, people have worked on things like SWC But most of the gains comes They have built on top of Webpack
Scott Tolinski
It's it runs in the browser, and it made their playground three to four times faster. Wow. With with roll down, so since it JS a a port to an extent of rewrite or
Guest 1
auto automatically generate the binding so you can call the Rust code from JavaScript and vice versa.
Guest 1
so that they also understand Babel transforms yeah, now I'm mostly focusing on, It relies on something called, That's one possible outcome, but, you know, our
Wes Bos
Let's get let's go a little bit spicy. I know you're you're one to get a little bit spicy on Twitter, and and we can cut this out if if you're if you're not comfortable with it. But, Shopify
Scott Tolinski
actually what choices that you made
Wes Bos
So literally anything in your life where you're like, I love this.
Guest 1
Previously, there JS an API called, SSR load modules, but they essentially do the same thing. They essentially take the source code, process it with Vite's transform and result pipeline, and turns into something that just runs in It it definitely played a role because, I think I probably put more who made frameworks.
Guest 1
built into the tool chain.
Wes Bos
for people who need to, like, have have huge builds?
Guest 1
experimenting with something that allows you to run
Wes Bos
and it will it will fire up just a vite with you right there. But I, K. I will check for that to be built in. It is nice. I do find myself using it a lot, Wes. It it is really nice, but I also wonder, like like, I'm just a tutorial creator. Right? Like, are are people who are actually building, like, enterprise software,
Guest 1
work on Vue, I was working at Google, and we worked on some projects that used Angular.
Guest 1
like, Meteor kinda pushed me to do the opposite in the in the beginning, but it's a timing problem. I think Meteor was just, like, way ahead of its time. You know? And they came up with a whole, like, full stack JavaScript concept before Node. Js was even, like, a big thing. And that was, like, you know roll up actually both roll up and Wes build actually kind of they are kind of limited in terms of, like, chunk splitting. Like, Vite Node did not have a plugging system.
Guest 1
sort of managed solution.
Guest 1
landing in actual Next. Js, but,
Scott Tolinski
journey.
Guest 1
back background. Right? So,
Wes Bos
Why is everything so so polished and and so simple? And and even to extend it,
Scott Tolinski
they do a great job. They get a lot of have a conference.
Guest 1
that's a good thing.
Wes Bos
kind of associated
Guest 1
Uh-huh. So we don't need to do our own package manager. We don't need to Right. We actually media actually had to maintain their own, like, build farm for people to build Meteor plugins.
Wes Bos
it's edge cases all the way down because there's so many
Guest 1
Framer was previously using ESBuild to bundle on their customer sites.
Guest 1
basically do cross language calls. So Native API. Right? That's what n JS? Yeah. So nAPI JS is a project But then we added additional things like the single page application router. We added a build tool. We added Scott management, but these things were all optional. Like, you can use as much or as little you want from the framework. It's still a framework, but it's like you can incrementally adopt it take the same code and decide to run a node or in in And we helped them started to use Node Veed, which is still in the experimental status, but the first pass, their whole bill, they generate like 20 megabytes of JavaScript.
Scott Tolinski
Vue JS and all that stuff. I I I think that's something I've always appreciated about
Guest 1
I I'm actually, like, less familiar with this layer because it's mostly Martians domain.
Guest 1
maybe a server dot t s and the together.
Guest 1
if you Yarn, say, you're building, like, quick, small apps that really, like, you know, a few cut less than, like, a 100 modules, right, by all means, go with native ESM. It just works really well. But if you're gonna anything that loads more than a thousand modules over native ESM,
Wes Bos
without restarting your Vercel side process. And next visit, it actually is calling the updated handler. Yeah. That's exactly what I want. Yeah. Please make that happen. This is my, this is the only reason we're having you on today JS I'm asking you to make that. That's good validation.
Wes Bos
to Go because it they're literally just going function to by function, rewriting the entire thing. But you just said you just said it's not the same with Rust. So what's the why didn't you pick go for that?
Scott Tolinski
But, like, when you push something like this and give people the ability to use it, if they want to,
Guest 1
the distinction. So the row down if you want to more fine grainedly control how your app is split into different chunks of optimal sizes, the eventual, like, say, will it, like, be eventually become mainstream and be used by a lot of people? I'm a little bit doubtful, because mostly like view development, it's just me and a few like volunteers or part time contributors back then. It was mostly me, to be honest. So I had limited bandwidth. I was happy to see someone else just, like, pick up this, like, full stack view framework idea and just run with it. And Nuxt was you know, the Nuxt team, they built great things. So, Two years ago, I founded a company called Voice Deno, which is centered, you know, with the with the mission to, I Wes, Rich was the original author of Rollup, which a lot of the Vite's plugging API is based on top of. Mhmm. Mhmm.
Guest 1
experience as a framework author.
Guest 1
of the toolchain itself to individuals or open source of smaller companies.
Guest 1
smart people Lindsley,
Wes Bos
I guess, templating language? We'll see.
Guest 1
Michael and, Ryan has been has given us,
Scott Tolinski
And
Guest 1
Right? So, Essentially talks about how he, And I was evaluating the existing
Wes Bos
there's a new environment API, which I'm not quite sure. But, like, why
Guest 1
you know, it's gonna be we're not quite sure if we want to, like,
Wes Bos
why am I forgetting his Node? The author of,
Scott Tolinski
Oh, that's great. Cool. Well, I think we're we're,
Guest 1
a certain aspect of it. Right?
Wes Bos
Anthony Fu, we've been we wanna get him on the podcast as well, man. He's Yeah. He's prolific.
Guest 1
and vice versa.
Guest 1
and just works.
Guest 1
You know? So, yeah,
Wes Bos
probably kept people in the career,
Scott Tolinski
a a lot, or does it has it been relatively smooth?
Wes Bos
I built a plug in called Vite dir that does that because I have courses that have multiple can't I just type, like, viteapp.ts
Guest 1
and it came with a lot of concepts and, or marketing sites, right, loading speed is all you care about. But if you're building, like, an internal app, it's an SPA and, like, your users may be like, they're okay with waiting for, like, three seconds for it to Node, and they just keep the tab open for a whole day. Right? Yeah. So, like, these different constraints,
Wes Bos
Okay.
Guest 1
which actually fits perfectly when people, like, from the Laravel community picking it up. That's all they needed. They don't want anything else. Right?
Wes Bos
your company.
Guest 1
Like, we were trying to just validate the idea to see if it's possible.
Scott Tolinski
they listened to some of the things that you were saying. I I because I do feel like that was such a huge, huge reason. And then I I remember,
Guest 1
Yeah. I mean, the only downside is I've been to the city so many times.
Guest 1
I only remember the, like, the how many times it was faster. I can't remember the exact minutes, but, like, it was definitely, like, minutes,
Wes Bos
that's always one thing that I wish Vite would do by default.
Guest 1
In a way, I was happy that so when we Scott working on Node, we also, OXC mostly only have the parser and resolver.
Guest 1
port dynamic JavaScript code to Rust. Right? So we ended up actually, new, the next 15 app router demo to maybe 90% of features working.
Scott Tolinski
Again, we've been using this tool for a long time, and it totally rolls. Alright.
Guest 1
I never really planned it ahead of time. Like, before I started even doing jobs for development, I thought I was going to be a chunk of memory. So you have, like, less fragmentation,
Wes Bos
I I agree with that, but, like, if I were
Guest 1
Like, obviously, I I have you Node, when I talk about Next. Js or ISC or or these things, I always have the utmost respect to the people who work on those things. Right? These are hard problems.
Scott Tolinski
allowed that speed to take place? Is it just Rust? Or or can you can you go into some of that?
Guest 1
n a p I r s. So, Node. Js has this thing called n a p I that allows you to So I having him work on the for that time, that was, like, revolutionary.
Scott Tolinski
there's something about the aesthetic of not just, like, the visual aesthetic, but, like, the things that you make that makes it kind of obvious that you wanted to be a designer. Like, Vue is a beautiful,
Wes Bos
And the reason the TypeScript
Guest 1
library.
Guest 1
working on this full stack view framework, so I don't have to just, like, worry about it.
Guest 1
Meteor Development Group.
Guest 1
designer. Mhmm. I wanted to be a designer.
Guest 1
There are, a build caching, it kind of under delivered.
Guest 1
It didn't have the transformer part. So, that allows you to do something like that. So,
Wes Bos
I'm I'm curious. So That's a great question. Me too. I love talking to people about it because they've been teasing it for so long, and I've been in Michael's DMs for for months now. And he's coming on as soon as he's ready, but I'm curious to see what what comes out.
Guest 1
Yeah. He he just moved to Japan,
Wes Bos
What about
Guest 1
Yeah.
Wes Bos
like, little gotchas of, like, what happens if you use MDX version one with a common JS plug in that doesn't have a default export? You know? Like, there's all these little weird gotchas all the way down, and and and it's I do not envy anybody who has to build these type of things. Yeah. No kidding. That's why all the way down.
Guest 1
OXC is two years now. Yeah. And So that's Yep. So it's it's no longer technically a rewrite because,
Scott Tolinski
tool chain?
Wes Bos
VueVite
Guest 1
Just feed that, feed build, and it just, like, runs the two things in parallel. Yeah.
Guest 1
than the average developer
Wes Bos
or a shameless plug.
Guest 1
be very, very fundamentally
Wes Bos
to go off and and maybe create Vite,
Guest 1
They also mandated the database you can use. Like basically MongoDB was the only option.
Wes Bos
Wes something has changed. And I'm just like, I would just love
Guest 1
So Wes don't want to do it just because Wes acknowledge it. Beautiful.
Guest 1
in short, our first attempt will just be trying to, you know, sell v plus because there are going to be some additional things that's more enterprise oriented,
Wes Bos
Mhmm.
Guest 1
a ton of mental
Wes Bos
Mhmm.
Guest 1
like terminology
Scott Tolinski
with Meteor.
Guest 1
And they got the bill three point times faster on CI. And we're like, this JS, like, less than we expected. So we actually took a look at the code base. We found some bottlenecks. We tweaked the config a little bit. And then we we realized, like, they still had for a few years, which was built on top of, you know, Webpack, Babble, just all these, stuff we've used, I guess what we're doing here with Veed and all the additional tooling we're building is we're trying to I You know? like, things you need to just work.
Guest 1
you know, there's there are a few design decisions at this Vercel. For example, memory allocation True story. We actually, like, talked with Vercel, like, multiple times about, like Yeah. So it boils so first of all, it goes all the way down to, like, what parser do you use? Right? So, one decision we made very early on is we bet on OXC.
Guest 1
Matt Bealman,
Wes Bos
And
Guest 1
inspect, like, how a module is transformed.
Guest 1
Yeah. Yeah. To yeah. Yeah. Yeah.
Guest 1
sixteen ish.
Guest 1
monolithic and opinionated, and you can drop the whole thing altogether instead of being having to, like, more funny story, we made the biggest breaking change between v two one and v two because, if the Cult Repo crew, which JS previously the Honeypot crew that he made all those other tech documentaries.
Scott Tolinski
DX focused. And even going back to,
Guest 1
capability a few pretty practical reasons. Right? Because I don't so it supporting things other than Mongo and then Mhmm. Led to them focusing on things like Apollo and GraphQL, and that was kind of the beginning of the end right there. Mhmm. Yeah. And, also sorry. I just want to, like, follow-up No. No. No. Bos original question of, like, do do you wanna do I want to go in full stack? You have to, like, Feels so nice.
Guest 1
So this really like overly monolithic approach kind of really limited how, you know, the the eventual audience and media was able to reach.
Scott Tolinski
Wow. Wow. It's exciting. This has got me really excited for,
Guest 1
Vite.
Guest 1
whenever you can so that all the users get better UX, but much faster.
Guest 1
Right? So build tooling becomes kind of indispensable.
Guest 1
So How does that work?
Guest 1
it's gonna be slow. Right? Because browsers Node like, I I'm like, okay. Great. There's a group of smart people Second, the Rust ecosystem is already pretty mature for when it comes to, like, tooling for JS, there's there are a lot of crates, optimal parallelization, yeah. Surprisingly, we never built an API to allow you to just, like, Scott from the CLI, which is something I've wanted to do for a while, but just I think when Next. Js came out, like Sebastian, who's the author of Nuxt, created Nuxt a few days later. Right? I was like, yeah. Like, someone JS working on it already, so I'll I'll let them do their thing.
Guest 1
and that turned out in that turned into Vue CLI.
Scott Tolinski
I've I've been seeing a lot of the the blog posts and mentions about just how much faster it is in various regards. Can you talk a little bit about the speed that comes with moving to something like roll down in,
Guest 1
so we can have the same plug in system for the dev server and the production build. Right? we are actually thinking about something like that, actually. So, to me back then was like, why do I even need to know this when I just want to put some interactive stuff on the webpage?
Scott Tolinski
from the jump,
Guest 1
the the decisions of, like, what do I do next just kind of the right Node, the mainstream way of people to use RFC is really through Next. Js. So the use server, use client directives
Wes Bos
with ecosystem?
Guest 1
It it was around that time I started to think about, like, production build. We were using roll up, so we were using roll up plug ins. I was like, can we make the roll up plug ins work for the dev server too?
Wes Bos
you know, like, in the old PHP days, I'm I'm I'm gonna use all your time here for WishList. Yeah. The old PHP days where you just get a directory of files.
Guest 1
come into web development from other backgrounds too. Because, one thing I found interesting is web development is, you know, it it's a very big tent. There are people building different kind of things, people coming from different backgrounds. And I think, you know, the simplicity and just focus on doing something with Obviously, it was still kinda rough.
Guest 1
That's why TurboPact took so long.
Guest 1
what I experienced in Meteor was, it's it's very difficult to make that happen. But, Mhmm. Yeah.
Guest 1
years to make it work. So, It ended up did not, you know, React Vercel components working. We're able to get the,
Scott Tolinski
not having, you know, the effortless live reloading or, Like, if you just want I built yeah. Built them. Yeah. Yeah. Right? Yeah. So I I remember that whole process. But I I will say that there were some really great things about the Meteor package system. I, yeah, I actually really still miss
Guest 1
it's actually hot module replacement for Vercel side code. So you can actually have, like, you can update a handler,
Scott Tolinski
It's it's here to enhance our lives, and and I think it's done such a a good job of that. Thank you. Yeah. In regards to the developer I was wondering since
Guest 1
So yeah. So when it's speaking to some numbers, usually, you will see if it's just like a simple JavaScript bundle compared between, say, roll up versus Node down, it's, like, 20 to 30 times faster,
Scott Tolinski
your work in general JS that it all feels like it's here to make everybody's life easier
Wes Bos
Yeah. Let let's keep going on that because,
Scott Tolinski
where that speed shows up? And then
Guest 1
that like, ten minutes down to, like, simulator that is able to just run Rollup plug ins without actually running Rollup itself.
Guest 1
in Amsterdam.
Guest 1
build tool. Right? The entry point is the HTML, I just kind of dig dug deeper and deeper. Yeah. It's a wormhole.
Guest 1
I think it's a bit you Node? When they decided to just build something completely different from Webpack from the ground up, right, it's bound to be a very risky decision.
Wes Bos
to to Node. Because, like, if if someone wants to build this a Node app, right, you might wanna build it in TypeScript. Maybe you want, like, a little bit of TSX.
Scott Tolinski
prior
Guest 1
the, you know, the the DX cost
Wes Bos
like, it's obviously extremely complicated to to build that and to worry about performance and whatnot. And and we've had people on the podcast in the past that say, you don't need any of that. Just ship Wes s m straight to the browser.
Guest 1
if you if you build big apps, even if you build big apps, like, some apps care about loading speed. If you're building, like, e commerce I guess I was, like, really Npm, like, Node. Js build. I started, like, publishing my own packages on npm. I was like, bundle generation strategy or more AST generated? Probably some people use it. Some people know it. But, the bundle the bundle itself, there's, like, advanced tree shaking because, that's all from the same tool. Mhmm. Yep. So you just have less fewer surprises.
Scott Tolinski
Sweet. I'm excited for that. They do the best work, and just a really just lovely group of people over there at CultRebo. So, shout out that YouTube channel. We'll link it up in the notes as well. Awesome. Well, Evan, thank you so much for coming on. Appreciate all your time. This is great to finally have you on, and, we'll catch you later. Yeah. A hell Scott of fun. Thank you, guys.
Wes Bos
any thought we don't know what it is yet, but Remix three, I'm going to
Guest 1
when I build Vue, initially, Vue is also just a pure client side library. So you just pulled it from a CDN
Wes Bos
Daniel from Nuxt on. We're just like, look. Why is everything in this whole
Guest 1
you can have a mixed graph of, like, server components and client components. I think that just adds
Wes Bos
Let's talk about
Guest 1
Oh. Hey. Just, like, so squishy.
Guest 1
even with, like, HTTP two or even HTTP three, like, from what we tested, like, so in Node actually We're gonna talk about Node details of v plus at VidCon, which is happening Yeah. Before that, I created Vue, Mhmm. Yeah. But environment API,
Scott Tolinski
Wes it like the remote links and stuff like that?
Guest 1
every single file.
Scott Tolinski
giving you,
Guest 1
the thing is,
Wes Bos
Okay.
Guest 1
There's a component system you can use,
Wes Bos
one day you wake up and you're you're writing low level Rust to to solve all your problems.
Wes Bos
rewritten that tool?
Scott Tolinski
the full stack of things with Vue, considering Meteor
Wes Bos
when we had the entry points, multiple index or multiple HTML files that are entry points. Right? And if it's not called index.html, the builds that you encounter. Like, he was telling us about the builds at ByteDance that are just hours. You know? They're just gargantuan. You know? Because, like Yep. My our little websites, they build in in a minute or so. You know? And that's that's relatively fast. But, like, look, what do you what do you see when you talk to people who are running this stuff at scale? Like, how how big are they? Do you have any stories?
Scott Tolinski
was, like,
Guest 1
and OXC.
Guest 1
I think but my experience in media was like, okay, if, like, at that stage of the time, if you were build something that's overly fine grain management of the the memory. So So, yeah, a lot of,
Wes Bos
a JavaScript runtime.
Guest 1
a, because they were using style components. So, and his reaction is, can I build something to make this go away?
Wes Bos
Ryan,
Guest 1
I was actually a strong advocate back then at the company to say, let's distribute media as a set of Npm packages.
Guest 1
one or Cloudflare
Wes Bos
easier for the entire world,
Guest 1
these are, like, low level language toolchains that gives you, like, parsers and transformers,
Scott Tolinski
experience,
Guest 1
but I'll reserve that judgment until they reveal what it actually is.
Guest 1
unfortunately, the minimum size, the bit maximum size, do you want to put these libraries in a specific chunk, etcetera.
Guest 1
for the existing users, right, there Yarn so much, like, so much behavior that's just coupled to the way that things work inside Next. Js.
Guest 1
node module resolving, a GUI interface dev tool that kind of like I don't know if you've you you've seen Nuxt's dev tools. That's you know, I think
Wes Bos
Mhmm. Okay. And we had the TypeScript folks on, and so we're we have to ask this question of, like, why didn't you use Go versus Rust?
Guest 1
So stay tuned.
Guest 1
now kind of in a transition period, So, Node is essentially,
Scott Tolinski
just modifying a package file and having it just
Guest 1
let's say, when you use Viteast or you or you you Wes you use a Vite Bos full stack meta framework, like maybe 10 stack start or, like, SoundKit.
Guest 1
I think at one ESLint, Nexon actually also really thought about it.
Wes Bos
Let's talk a little bit about the whole roll up and and roll down, and how that works. So, like like, Vite is built on top of
Guest 1
like, for same big app. And all they do is just think about how do I optimize Right? And that is also one of the reasons why, And when you when you put it into a real world project,
Wes Bos
whether how the what the API design looks like.
Wes Bos
Yeah. Yeah. It's you can n p x v v
Guest 1
I don't know. Like, I I feel I would say And that just ends up leading to all these different things he built. Oh, I love his Yac map. Oh, man. Yeah.
Scott Tolinski
do you ever have the urge to get into
Guest 1
He he did this, like, Rollup plugging
Wes Bos
kind of running out of time here because I gotta take the well, at least I am. West, you you can Yeah. Certainly keep going. Bed. Scott's gotta go drop his kids off. I'm in the regular time zone here. I talk forever. Yeah. Right. Yeah. But, yeah, let's let's wrap this up. The last thing we have here is sick picks and shameless plugs.
Scott Tolinski
as an end result. Yeah. It does feel like it's all very,
Wes Bos
You just kept solving your the problems that you had until you're,
Guest 1
short term, so my personal hope is we can, see, you know, make money on remote caching.
Wes Bos
just so that I don't have to restart my server,
Guest 1
I had to rewrite the whole thing, and that became Vite two. So we never actually shipped to Vite one.
Guest 1
Yeah. So that probably helped with the definitely helped with the initial adoption of Vue.
Scott Tolinski
What informed those decisions that you make? Is it just your own work? Do many of those ideas for, like, what needs to be out of the box DX?
Guest 1
So we actually helped them migrate over to RowDown with a new chunk spinning behavior,
Wes Bos
JS part of that a, like, a shared build cache as well for
Scott Tolinski
Yeah.
Guest 1
Yeah. Like, we are actually working with Linear,
Scott Tolinski
Yeah. It's a great place for conferences, though. They they,
Guest 1
but we're actually, the network overhead is a real thing that you just cannot avoid when you have too many modules.
Wes Bos
like, just designing stuff in general, whether it's what it looks like or
Guest 1
a project called, essentially that's aim the aim is to make it easier for you to write some Rust code it's a bit challenged with today's Vite. So that's also one thing we kinda wanted to address. So, convince him to join join earlier, but, he was like, I need to think about this. But he eventually joined. So,
Wes Bos
And, like, I don't I don't necessarily wanna talk about that, but I just love hearing the stories of
Guest 1
So we actually maintained VueCLI and, like, they gave me this whole VueCLI much smaller to make it transparent and negligible from Stackblitz.
Guest 1
Yeah. I I honestly, I know I don't think I know enough about it to make a judgment at this moment. Right? Yeah.
Wes Bos
I did not. Sick pick. Okay. Yeah. So a sick pick is you pick something that you absolutely love in your life. It could be,
Guest 1
they just have to double down. Mhmm.
Guest 1
I see. But Yeah. Would it be equally like you can you can never straightforwardly So,
Scott Tolinski
Did
Wes Bos
some sort of
Guest 1
And environment API also gives you a bit more,
Wes Bos
the conference next next,
Guest 1
I but, GUI dev tools for Vite as well. So there's gonna be to make it worse, they they actually don't behave the same way. Like, there are some things you can use on the ESLint, but not on the server. And when you have the mixed tree, you have to, like, bail out on the context altogether.
Wes Bos
unbelievable.
Guest 1
So there are probably simple simpler ways for you to use RFC.
Guest 1
But because the the design and implementation of RFC is just so tightly coupled with Next. Js, So are you saying it's more geared towards, like, AI auto generating got into web development from a nonengineering to fit different use cases.
Wes Bos
Yeah. Interesting. Yeah. I never thought about that, but yet it needs to run-in the Webpack Rust. Why am I blanking on his name? Zack.
Guest 1
Remote caching will most likely be implemented, had been I guess, like, having it built into Vite, the nice thing is you know that the same code Bos is processed by the same set of tools. Right? So it's the same resolution logic, the same transformation logic nice layer of, like, abstraction where we just focus on different layers of things.
Wes Bos
I think they're trying to build an API
Guest 1
Yeah. Yeah. They they leverage I would say, interestingly,
Scott Tolinski
Voice Deno and the feed side of things. Yeah. So I think that one of the, interesting things for me was
Wes Bos
Welcome to Syntax. Today, we have
Guest 1
So Oh, okay. Was actually using Veed, like, from the early beginning. They started using Veed in, like, Veed two beta.
Guest 1
I really haven't heard super convincing stories on how RSC has, like, say, fundamentally made something
Scott Tolinski
bad when I, I feel bad for Next. Js users that they don't get to experience the
Wes Bos
we had,
Guest 1
to any user trying to, like, reason about your application. Like, does this piece of code wrong on the server or wrong on the client? remembered all the little paper cuts in DX I have myself. So when I started working on video, it was literally out of frustration with my own experience, to help them land actually, they're already using RodelVeed.