Welcome to DejaVue, the Vue podcast you didn't know you needed until now! Join Michael Thiessen and Alexander Lichter on a thrilling journey through the world of Vue and Nuxt.
Get ready for weekly episodes packed with insights, updates, and deep dives into everything Vue-related. From component libraries to best practices, and beyond, they've got you covered.
Welcome to Deja Vue.
Alexander Lichter:It's your favorite Vue podcast. And well, we here, Michael, my lovely cohost, I hope you're doing well today on this bright and sunny day.
Michael Thiessen:Yeah. Well, maybe bright and sunny for you. It's a little cloudy here,
Michael Thiessen:but we're we're we're in very different parts of the world. So
Alexander Lichter:Indeed. Indeed. Yeah. And Amsterdam, surprised to say, weather that also applies, hopefully, to a big part of Europe. Also our guest Yeah.
Alexander Lichter:From today's episode is in lovely Bordeaux. We welcome the CEO of Nuxt Labs and the creator of Nuxt JS, Sebastien Chopin. How are you doing? Ça va?
Sébastien Chopin:Hello. Ça va ét trés bien Merci. I'm very glad to to be invited and be a part of this podcast. And the weather is also surprising, beautiful today in Bordeaux.
Alexander Lichter:Glad to hear that.
Sébastien Chopin:That's great.
Alexander Lichter:I mean, not really surprised. Mean, come on, we can't miss you out on a podcast episode when it comes to the Vue.js ecosystem. There happened so much where you've been involved and I hope we'll get a good gist of some of it and some parts of that today. So yeah, glad that you could join.
Alexander Lichter:I hope listeners that they will enjoy the episode. And as usual, if you have any questions after doing the episode and drop them below, we'll also get set to take a look at them. If we can't answer them, let's also drop them in. Or in social media, of course. Yeah.
Alexander Lichter:And then let's start straight away with the the big elephant in the room, the creator of Nuxt.js. So maybe it's a it's a good start. We like to to start with the topic for a lot of people coming to the podcast. Before you created one of the most successful meta frameworks out there, how did you get into programming after?
Alexander Lichter:And how did you and the Vue way crossed paths?
Sébastien Chopin:That's a good question. I did my first website when I was, I think it was 12 years old. We had a basketball group doing a playground basketball, and I wanted to to have an own website. And I used the website builder back then, so they were there for a long time. At one point, I wanted to add a chat.
Sébastien Chopin:And for this, I had to learn PHP because it was this kind of script you could inject. And to learn PHP, I had to learn HTML, then CSS, JavaScript, and then PHP. For the smaller anecdotes in, at the end of the PHP tutorial, I was about 13, 14 years old. I cried because I was like, no, this can't be it. Like, I didn't finish learning PHP.
Sébastien Chopin:Like, I I that's it. And then Alex, my brother, gave me a challenge. I came back from school and I was like, we need to create a PHP game based on a TV show we were watching. And then, it was a very big challenge to me, like, okay, how can I create a game? I need to imagine the database.
Sébastien Chopin:So I went into escalate PHP. It was not functional programming, so it was pure declarative programming. It was amazing to discover what you can do, the infinite possibilities. Then I discovered Ajax, so I went more into the JavaScript. Few years later, I joined a startup after I was 90 years old.
Sébastien Chopin:I had the chance to learn Node.js 2011. It was also Socket.io Coming. It was not that popular in France, so I had the opportunity to work with Node.
Sébastien Chopin:Js, create some tutorials in French about Node.js, MongoDB, Elasticsearch, that's things more commonly used today. I had to create an admin interface and for this, I had the chance to work with Backbone.js. I had to use jQuery a lot from my PHP game with Ajax.
Sébastien Chopin:Backbone.js was a nice framework on top of jQuery. After a few years, we saw Angular, React and Vue. Backbone was declining. I had to choose another path.
Sébastien Chopin:So React seems to be the right choice from a Backbone.js background. But Alex told me, you should check out Vue. Js. And I was in hostel in Ireland when I discovered the vjs.org documentation. And I remember I read on my phone for three or four hours the whole documentation of Vue JS and just felt enough. Everything clicked. And I was like, this is so simple. When you used to do jQuery and Backbone.js, Vue.js was just a relief.
Sébastien Chopin:React was also powerful, but it didn't click the same way as Vue. Js. And that's how I got started. I didn't have a project to build back then with Vue.
Sébastien Chopin:So, I was basically answering all the questions on the old forum and Stack Overflow. So what then we, we all know Linus, took over on this, on the answering machine.
Alexander Lichter:True that. And, props to him.
Alexander Lichter:And so we had this e commerce website. One point I wanted to have this SPA experience and Vue two, came out. So I wanted to rewrite this, Node.js website with Vue.js and server side rendering.
Sébastien Chopin:And as I was watching Guillermo for a long time since he created Sock.io, I have seen the article about Next.js and it clicked like, okay, I'm using Vue.js with server side rendering. I'm a big fan of PHP.
Sébastien Chopin:This seems to be very similar. So I give myself the chance to do the same with Nuxt. I think it was one or two weeks later I had the first prototype. And kazupon, the maker of vue-i18, tweeted it, and then he starting to have some views and people starting creating issues. I was so happy for the first issue.
Alexander Lichter:Traction coming in. Yeah. Yeah. Yeah.
Sébastien Chopin:And then I think I I saw you quite early, Alex, helping me on the answering. So I'm glad that we're still around today and talking.
Alexander Lichter:Definitely. It's been a while. I remember I think I first got in touch 2017 or so with Nuxt.js. But also on your side, it's such a journey from like, okay, PHP and also like your brother.
Alexander Lichter:So like Alex also like making frequent appearances, like more challengers. So like, hey, let's work together and and like get things done. I remember also like when when Nuxt was in like the first just, like, the first stage and he was also interested, like, getting statics, high generation there. So Yeah.
Sébastien Chopin:I was just doing the Exo. I think it was the Hexo framework similar to Jekyll Yeah. So it was an alternative of Jekyll, for Node.js, which was called Hexo.
Sébastien Chopin:And, so he was doing a lot of static sites. So I remember when he asked me, but now you do service admin, can you generate a static site? And I was like, yeah, this should be very easy. You just pre render the pages. So this is his first pull request I believe.
Sébastien Chopin:I told him this is easy, take a look, this is how it started. And I remember at the Vue.js meetup organized by Eduardo, maker of Vue Router today, Evan You was at the first row because we had the dot js conference right after and we were presenting Nuxt and the Nuxt generates feature. And I think it was the first time it clicked in Evan to say, okay, you can also prevent your pages and have this static site generation with Vue. So great times.
Alexander Lichter:Oh yeah. And it's all being like, it's almost a decade ago, which is the craziest part, right? Like 2016, I think was like the
Sébastien Chopin:was more close than the ten years, not five years now.
Alexander Lichter:Yeah.
Michael Thiessen:It's kind of sad that I was late to the whole Nuxt party.
Michael Thiessen:The first few years I was using Vue with a Rails backend and so like I knew about Nuxt but I never had the opportunity to really test it out or try it out.
Alexander Lichter:But now you're there. That's what counts.
Alexander Lichter:Exactly,
Michael Thiessen:I'm here now.
Michael Thiessen:So
Alexander Lichter:And actually this this might be a very good segue. There might be some people out there who are in the same position as Michael was back then or join us like, Hey, Vue, amazing. That's great. But yeah, I heard about Nuxt.js maybe in a few podcast episodes here or read about it online or check out some comparison articles.
Alexander Lichter:So Sebastian, what do you say would be the elevator pitch for like using Nuxt JS and not just like plain Vue?
Sébastien Chopin:Right now we have many features. For me it was at first comparing plain Vue to Nuxt was the obstruction of the build step of Webpack. Because at the beginning you you needed a Webpack config understanding what this what the focus this file for.
Alexander Lichter:That was confusing.
Sébastien Chopin:Now we have the, Vite config, which is easier to understand. So first it was about abstracting this complexity and put it into a CLI. Then we had this convention over configuration. So the pages being able to generate. So same removing the Vue router configuration and think about pages similar to the to PHP while having this best practice in mind.
Sébastien Chopin:So code splitting, tree shaking. So obviously, you won't have to find the best practice and implement them manually. Now we have the ability also to choose between server side monitoring or single page application, static site generation as well. You can also benefit from the whole module ecosystem. So it's very pluggable so you can move faster.
Sébastien Chopin:I think it's good to test the Vue only part with Vite. You can also add plugins, but then you get a unifies experience with Nuxt. Maybe before it was true with Nuxt two that we add many features, so it was heavier. But today with Nuxt three, it's very lightweight. And if you try to have a minimal application with the head management and what we have, you'd get the same size.
Sébastien Chopin:If not, maybe bigger because we, after eight years of experience, we are very proud of having a minimal and progressive framework. So personally, I don't see a reason not to use Nuxt except if you have a backend framework already such as Laravel or Ruby and then it makes sense to mix Vue with your backend framework.
Alexander Lichter:So like something that already server renders your application, but like more traditionally for like, yeah, said like Django, Rails, and so on and so on.
Sébastien Chopin:Even though I would recommend to have an API and then use your Nuxt server, but both will work.
Michael Thiessen:I get this question asked quite a bit actually about Nuxt and like most technologies you have like, okay, there are pros and cons and like, okay, like should you use GraphQL? Well, in this situation you should use it, in other situations you shouldn't. But with Nuxt, people ask me, oh, when should you not use Nuxt? But because it is so progressive like that, where you can build just a single page app with no router, if you like just a single component and it won't ship anything so it's my answer is always like well you should just use Nuxt probably and it always feels like a cop out answer I'm always like trying to think well there's got to be like a good use case where it's not good, but I just haven't found that one yet other than like I was mentioning before, we already had a Rails app that we were migrating from jQuery to Vue and so then it's like, okay, well we don't need all the backend stuff.
Michael Thiessen:We just need the front end. So then we can switch it over that way.
Alexander Lichter:Yeah, like I was also sometimes thinking, but even the excuse of people saying, hey, I don't want to use Vite for whatever reason, but like I want to use rspack or because the whole company is using it if we have a certain pipeline or even like Webpack. Even that's not an excuse nowadays anymore because I think Nuxt is the only major framework that supports multiple build tools or bundlers in this case, which in a way also makes it quite unique, would say. So while a lot of frameworks opt into like, okay, we're just a Veed plugin or you can use it in that way, I think I haven't seen it anywhere else where you say like, there's an adapter for rspack for Webpack 5 and for Vite. And it's super interesting to see also like that the degree and the choice of freedom goes beyond what you use in terms of like libraries and if you use the Vue router or not, but even like for build tools. So that's cool.
Sébastien Chopin:Yeah, we try to make it as agnostic as possible. So, and we don't know how long Vite will stay, I hope as much as possible. But so far we didn't know Vite will came when a Webpack was leading the market. Opening the place to other competitors while being the ability to adapt, think makes Nuxt a future proof choice.
Michael Thiessen:How well does Nuxt scale to bigger enterprise applications and, like, really complex architectures? Because, I mean, I haven't had a chance to work on that that stuff myself with Nuxt. But, like, if it does break down or not work as well, like, that's probably where I would guess that it would have some challenges. But I'm sure there are people using it. I just don't know about it.
Sébastien Chopin:Yeah. I think Alex is doing also working on some big customers. I've been chatting with Back Market, who is not a we're still a startup, but they have a big e commerce website for refurnished phones, electronics. And they use the layers as a domain driven development or feature driven development. And so far it works very well.
Sébastien Chopin:I think after talking to Upwork, who is another I don't think you can call it a startup, an enterprise with a lot of codes for them. And where I think we can improve will be this kind of micro front end or the ability to ship a component without having to rebuild the whole application. This is a new complexity that is quite exciting to work on. But that's where we are in terms of high complexity for us. It's just about saving them much more time, but it's possible to work with, I think, hundreds of developers on the next code base.
Alexander Lichter:Probably even more. Also just to add on that, think that especially with Nuxt layers, it's really nice to have the option to add a feature slice or, for example, what Funda is doing, big Dutch company for real estate listings. So they also use layers but each of the layers, their own micro front end. Then they have, for example, also base layer where they have certain functionality that's shared. So it's very interesting to see what's happening there.
Alexander Lichter:And I'm also curious where this goes with multi app support at some point and so on and so on. Also if incremental builds sometimes would be possible, different pipelines that would be like, I think the icing on the cake where especially cutting down the times, not even like, of course, like modern tooling when we discussed it in previous episodes, like roll down will already cut like build times a lot. But if you don't even have to rebuild certain parts, that would be pretty sweet.
Sébastien Chopin:Yeah, would love the ability to rebuild like a header without having to redeploy the whole site or to rebuild the whole sites while keeping the client side navigation. And I think this is something to work hand in hand with the build tool. Absolutely.
Alexander Lichter:That's true. So I went briefly to NX summit and Elise from the Vue in Next Community was given talk about Next layers there. And a lot of people came and asked like, Hey, can you do independent builds? And can you reuse the builds artifacts and so on? So literally what you were just mentioning.
Alexander Lichter:And I think there, especially for enterprises with sometimes a lot of those artifacts that are depending on each other. It could be so interesting to see improvements there and get even more out for bigger applications in Nuxt.js.
Sébastien Chopin:I'm wondering what it could give to have the ability to pre build some layers, but stuff to explore. That's exciting. Yeah.
Alexander Lichter:And then beyond all the other performance improvements and things happening, I mean, 3.17 shipped super recently, 3.17.1 even today, I think. And they are with the refactoring of the data fetching layer and so on. So there are a lot of things coming that make things even more elegant in Nuxt.js I'd say.
Alexander Lichter:From that, I'm wondering now that as you said, okay, we're closer to ten years than to five years, quite closer for Next.
Alexander Lichter:What would you consider some lessons learned from building and being involved in Nuxt for that long? Anything that you could, I don't know, give other developers, library authors, open source for us on the way with like, hey, these are things that you should do, shouldn't do or just interesting experiences.
Sébastien Chopin:That's a tough one. I think being able to listen to people is very important. The ability to say no and also be true to what you believe is the right path. Being able also to admit that you were wrong. And but this is think it's it's applies in many way in life, not only in open source.
Alexander Lichter:Fair.
Sébastien Chopin:Yeah. For me, the ability to delegate and trust while giving the this range of of freedom and authority was important for me to be able to to motivate people because we had Pooya as a lead of the development of Nuxt two and Nuxt three and the creation of Nuxt three with the help of Daniel, and then Daniel took the lead for the Nuxt three. Giving them this because at the end, it's my baby I created at the beginning and saying, okay, I trust your vision and I count on you. And that's challenging being able to trust as much a person, but it also gives you a freedom to think and explore new ideas because then you invest in the day to day about the issue traging and helping people. I think this is, for me, the more challenging part.
Sébastien Chopin:Otherwise, if I need to give tips, documentation. Documentation. And sometimes I arrive in some pull request of Nuxt and I'm like, did you write the documentation for this new feature? This was one of the best practice I wanted to ensure is every new feature, every change should also be combined with the documentation change. Documentation is the the more important part of an open source project.
Sébastien Chopin:It's also the marketing. So if you want people to use your open source project, you want to help them use it and making sure they're excited for to use it. And I think that's why Vue was so popular because their documentation is incredible. And I know we have some work or some documentation.
Alexander Lichter:Yeah. No docs are perfect, of course. But yeah, as you said, I think giving people easier time to understand your project, like how easy is it to set it up, to get going, how intuitive are things so docs help there. Of course also like keeping the docs in mind while developing the whole thing and not compromising on that. So like user experience in this case because our users are developers, right?
Alexander Lichter:So, yeah, that's a good one there.
Sébastien Chopin:And also trying to explain the why we took some decisions. I think it's very important. Something we we main we didn't do, and I think Vue was doing very well, is the comparison about why Vue and the comparison about versus React. Without this silly comparison, we can find on other frameworks, but they take a specific charts and saying, okay, we are much faster. Yeah.
Sébastien Chopin:Not not mentioning someone except Astro.
Alexander Lichter:Just wanted to say. we we covered that, I think, at some point in the episode about that already once if that's yeah, CruX data that Astro used and where the chart was not starting at zero at first. So it looked like a huge difference and then it wasn't that significant after all, but still yeah.
Michael Thiessen:My least favorite thing.
Sébastien Chopin:Yeah. This is low, but I'm thinking about true comparison that gives the right things to choose between what framework to go with.
Alexander Lichter:What do you think from your perspective are things that frameworks should be compared of apples by apples and what people should decide on which framework to use? Because I think it's also a common question. There's a new project and then there are three people with three different opinions and probably more who maybe don't care whatsoever. Which framework should pick then? What should be used as a metric to compare?
Sébastien Chopin:That's tough one. I don't know if people have the time to test. For framework at that size it's harder and most of the time when it's about Next.js versus Nuxt it goes down to a Vue versus React until a Next support React or Next support Vue. I don't think this will happen.
Sébastien Chopin:We're more than happy to say use the Next or Remix or a TanStack Start if you're using React. But I think in terms of comparison of features, we are quite similar today. So I don't know if table comparison of features will help. I think it would be beneficial anyway to see that we have feature parity. So people would not be about some marketing that we forgot to add or vice versa, saying, they have the same features.
Sébastien Chopin:So what I can do on next, I can do it on next and vice versa. So it's more about teaching what frameworks can do at the end versus we are better because we have this feature for instance.
Michael Thiessen:I think it's kind of interesting that like my own opinion on this is that it's actually more of an emotional decision than like this data driven thing. So like for you, when you discovered Vue and you were sitting on your phone for four hours reading through all the docs and you're like, wow, this is, this just clicks for me. I think like that's really the thing. It's not like, Oh, this has this feature. This is, you know, twenty milliseconds faster.
Michael Thiessen:It's more like, you know, oh, I've, I really love the way that this works. Or even like, I've been hearing about this framework for so long. I really wanna try it out now. And like, that's the thing that's going to be interesting and motivating for me to like get my work done. It's more than like, oh, we we ran some tests and here are the numbers and this chart proves that this is the right way to go.
Michael Thiessen:And I'm not excited about it, but there it is.
Alexander Lichter:Very cold analysis.
Michael Thiessen:I think actually the way like frameworks are chosen in companies is like people decide I wanna use this and then they find all of the data points to convince their coworkers or their
Sébastien Chopin:That is for sure.
Michael Thiessen:Whatever. Yeah.
Sébastien Chopin:That's what when I was giving conferences and meetups, I was most of the time talking a little bit about the features or the choice of convention versus configuration. And at the end, was like 70% of the time I was just making a demo at the end.
Sébastien Chopin:They were seeing how it looks like to code with Nuxt. And I think that's the best way to showcase all the features is to see this is the experience you will have for making a website. Because our mission at the end is to give the best developer experience, to create the best user experience.
Alexander Lichter:That's a good one. I really think especially for bigger companies starting new projects, at least I've seen it in some scenarios as well. There are these like cold factual analysis as in, okay, what's the lowest risk for the project in terms of stability, ecosystem, job market is always something. Well, there are also opinion, a lot of opinions on that. But also I think in all of these, Vue is not doing that bad.
Alexander Lichter:I mean, sure, React is the dominant thing but we've said it on the podcast also multiple times, right? Like we are Even though all of us prefer Vue, if it would be like we all be desperate for a job probably we could write Angular Svelte or React as well. Like well JavaScript or like, we know how to use frameworks. We know how to use JavaScript and TypeScript.
Alexander Lichter:Then it comes down to personal preference as well.
Sébastien Chopin:Indeed. At the end, it's HTML, CSS, and JavaScript.
Alexander Lichter:And the concepts like components and like slicing them and how to interact. Like, sure. Maybe events up and props down as a thing in Vue in React, you might send more functions down or whatever, render props back in time and so on and so on. So there are different ways of doing it, but the concepts stay the same. Regarding React, though, and I mean, you you mentioned if people use React and prefer that, then they can use, like, TanStack Start, Next.js React Router, aka Remix, or there's also, Waku. And so there are a couple of things in React Universe, couple of meta frameworks, so to say. Have you ever thought about like Nuxt JS and React?
Sébastien Chopin:We thought about this because when we can select multiple build tools, you can choose between Webpack and Vite, You can choose between server side rendering or not. You can choose between having Vue router or not. Why not choosing between Vue or React? I have no expertise in React. And when I see the already the amount of issues, maybe because of lack of documentation or lack of comprehension, just with Vue supporting suspense, the way we work with async data, adding React, where in the community, they are already nice alternative and beautiful alternative, I would say.
Sébastien Chopin:It's been too long. I didn't try the next, but I believe they have sort of very good framework. I don't feel the urge or the need either from our community to add React. So, sometimes you have to say no. So that's on this part.
Sébastien Chopin:The only time I tweeted about this was for the first April. Classic.
Alexander Lichter:Yes. Though I mean technically, as you said, you could in theory fork Nuxt put React in there somewhere. Like I remember to talk from Daniel Roe who was also here in the podcast a couple of times. And he was I think at agent conferencing of showcasing Nitro and React to basically build your own little meta framework. And Nitro is the server engine of Nuxt that's possibly also possible to integrate.
Sébastien Chopin:And that lead to TanStack Start at the end. So that could be a good alternative. Then it's sort of about the convention you add for data fetching and stuff.
Alexander Lichter:As context there, maybe because Nitro is the server engine is also powering TanStack start, Solid start, analog and so on. Just for people not being aware of that, that's good to add there.
Michael Thiessen:Nice song.
Alexander Lichter:Yeah, exactly.
Sébastien Chopin:Don't have any more.
Alexander Lichter:That's that's it. Okay. Alright.
Sébastien Chopin:It was it was a perfect ending. Like, Nitro is is a the origin of Nuxt. And at the end, if you want to to use React, you can also use with pure Nitro and React. But honestly, there are good frameworks for React.
Alexander Lichter:And probably not that many React developers here, but don't try to put React to Nuxt then or do it as a fun project if you want to learn more about internals.
Sébastien Chopin:I use React in Nuxt Hub for the admin.
Alexander Lichter:No, really?
Sébastien Chopin:But it's for the Edge Results Studio, which is made in React.
Alexander Lichter:Okay, good. You had no choice there for point Yeah.
Sébastien Chopin:Mean, for point in React in a view component.
Alexander Lichter:I think was like React to Vue, I think from like Anthony Anthony Fu who'd like said, hey, you can use Vue in React, like composition API or something like that. It's not maintained anymore, but it's a fun project and it's incredible what's possible.
Michael Thiessen:Did some experiments many years ago with like embedding in between because we had like a bunch of teams. I was working on a component library in Vue and then we had another team that was like using React. I don't know why we chose two different frameworks that was like before I arrived, but then they were like, this team using React also use this component library and I was like, I don't know, maybe? So I spent a bit of time playing with that and it's kind of janky, but it can work.
Alexander Lichter:Web components, I heard. Oh, but that's we don't wanna open that can of worms or that topic. Instead, like, I think it's it's really interesting to see the same with like inclusion vapor, like the vapor mode for like React, Svelte and Vue, the project kazupon was already mentioned before. So like maybe there is some ways like true framework interoperability in a way and at some point we might not have to fight which framework to use but use what we're all happy with or at least most of us.
Michael Thiessen:Well, to give more context there, I think few episodes ago, I don't know how long ago this was. We'll link it to in the show notes, but we talked about how Vapor mode in Vue basically compiles down to just JavaScript. So then maybe that could become like sort of like an assembly language for front end frameworks. And then if you have all these different frameworks compile down to, you know, this vapor code, then
Sébastien Chopin:I take it.
Michael Thiessen:Then we can, yeah, run, just like the JVM and Java with byte code and stuff. Could be interesting.
Alexander Lichter:Interesting. I think, like, there was episode 44 with the predictions for 2025, and then Daniel mentioned before was predicting that 2025 will be the year of vapor. Let's see. At the end of the year where this got us, we're still waiting for
Michael Thiessen:We'll have to do a review.
Alexander Lichter:We have to react to the prediction. Here's what came true and whatnot.
Alexander Lichter:But another thing that came true on the end of Sebastian is that quite some years ago now, like five ish, four and a half years, probably even longer, you founded a company or rebranded the company. In this case, founded a company which is now known as Nax Labs. So how was that for you?
Alexander Lichter:How did you come Why did you found a company first of all? And how has it been the last years for you?
Sébastien Chopin:We created Orion, which was called back then with Alex in March 2017. So I think it was five months after creating Nuxt. I was already doing some freelancing for the e commerce website I had that I ported to Nuxt. So it was a way to bring some income to this company, same for Alex. And then with the rise of Nuxt, we had jobs back then.
Sébastien Chopin:So we were doing workshops, we were doing consulting. And our goal was, at one point, to be able to be independent and keep working on the framework full time. The sponsors was also growing as well on Open Collective. GitHub sponsors was not a thing back then. And about but we we were struggling because it takes a lot of time to maintain a framework.
Sébastien Chopin:It takes a lot of time to prepare workshop, to consulting session. And we had an opportunity in 2020, early, I think January 2020, to have a seed round. So we had a first meal capital who are from England. Was very excited about the open source. It was also the hype of the open source, which is now the hype of the AI, as you can see.
Sébastien Chopin:And we were like, yeah, we are open to give a share of our company if we can start working full time on open source and basically figure it out what we can do. Building the framework was the main priority. Being able to answer all the issues, grow a team. So at that point, we were able to contract Pooya, some core team member and also designer in order to develop the identity of Nuxt, trying to be consistent as possible, giving the assets so Nuxt module could be the same. It was also the time where we started building Nuxt content.
Sébastien Chopin:So we created a Nuxt image. So Ahad also joined the team. So we created modules that are all MIT licensed. So that was 2020. Then we tried different way to monetize.
Sébastien Chopin:We didn't want to monetize directly on top of Nuxt. So we decided to monetize on something we built for ourselves, which is the Volta that we actually keep using today, which is similar to linear, but completely synced with GitHub. So we manage our notification. It was also a good way for us to try Nuxt three. So at that time, between 2020 and 2022, we, we were building, Nuxt three.
Sébastien Chopin:So we, we worked on Volta. That's also how Nuxt UI got created. And in 2022, so we were showing good traction, but still not it was a proceed round. In 2022, we had a seed round led by Isai, a French venture. That's how we we were able to have more people working on open source.
Sébastien Chopin:So we contracted Anthony Fu as well as Daniel Roe. So we had the open source team growing. Basically, would say 60 to 70% of the team are working on open source full time. So we could have, to this Sentry, pledge, but it would have been, way higher. And I think it's similar if Vercel had joined the pledge.
Sébastien Chopin:It's there are so many people working on open source. At one point, you're like, we're like an open source company at the end. We want to build open source projects and want to find a nice way to be sustainable. So we are not aiming to
Sébastien Chopin:to to to
Sébastien Chopin:build a scale like crazy. It was a conservative seat round with a conservative valuation of the company. And the goal was to keep building the best developer experience to create the best user experience by keeping the community involved. So it's not we have a governance where basically the company doesn't say what the frameworks will do. What I want to do with the company is to create pro feature, pro offering, which is not required, but it's a nice plus to have in order to beat faster.
Sébastien Chopin:So what we've been building at the end is the Nuxt studio, which is on top, we take a module, next content and we offer a portfolio interface, which is aiming for non developer. So in that case, Nuxt Studio is for the marketing team to be able to edit your Nuxt content websites synced with GitHub. Then we develop Nuxt UI Pro that I think you already mentioned in the podcast, which are premium component library, which help you ship faster. And lastly, My Baby a Nuxt Hub which helps you develop full stack application on your Cloudflare account similar to Laravel Vapor. And I really liked how Laravel and how Taylor structured his company.
Sébastien Chopin:Laravel didn't change. It's open source built by the community, but he's trying to find product that makes business sense without denaturing the open source and being able to be sustainable. So that that's my my goal. And so far, we are getting closer and closer to the sustainability.
Michael Thiessen:Which one of these different products is the most popular right now? Because so I see a lot about Nuxt UI Pro and Nuxt Hub, but that's because I'm like more on the developer side of things and like Nuxt Studio, I don't really have any need for it because I'm just writing my stuff in markdown. Like from your side, what do you think are people most excited about and what do you think is the thing that like five years from now is going to be the biggest for Nuxt Labs?
Sébastien Chopin:It's really different. It's difficult to answer. I don't follow them, of course.
Sébastien Chopin:Nuxt UI Pro is the most popular for sure. And it also has these benefits of you buy it once and you own it. And as developer, think we all love this philosophy. You own this major version. And in in way, we also made the upgrade from version one to version three.
Sébastien Chopin:There was no version two, so we could align with Nuxt UI
Alexander Lichter:Nice.
Sébastien Chopin:For free. And what we want is to empower. And at the end, we don't want to make just profit. We want to really give you a great value. And Nuxt UI Pro, I think, the right spot in between.
Sébastien Chopin:And I think NuxtHub has a a very good potential. So far I've been building with the help of Rhihan and I had the base, which so far is quite similar to what Cloudflare can provide. But my next goal is to add this business layer such as authentication and CMS parts, all of the things that you don't need to set up. But for this, we need to take the right decision between what ORM we should build on, what authentication libraries. I've been working on the next stages, but we're taking the time to build this and take the right choice.
Sébastien Chopin:We're also bidding in the open. So the Nuxt Hub core module is open source as well. So yeah, I would say Nuxt UI Pro is very popular. Also since the V3, we opened it to Vue.
Sébastien Chopin:So any Laravel projects or Ruby project can use Nuxt UI Pro with the Vue version. So that's very, very good. And yeah, NuxtHub is growing in a nice space and as well as Nuxt Studio, but it's indeed more for agencies.
Alexander Lichter:So regarding Nuxt Hub especially, like when that was announced, I think last year's VGIS Amsterdam, could be. Yeah. Something like that. It was interesting to see a Nuxt Labs product being very focused on one provider. Well, of course, like Nuxt, you can deploy anywhere.
Alexander Lichter:So maybe just to elaborate, why did you decide to say, hey, we go all in on Cloudflare while there of course obviously like, hey, I can use the database from somewhere else and so on so on. But like, why was that Is that focus on Cloudflare that big for NuxtHub?
Sébastien Chopin:That's a good question. Nuxt UI is based on Tailwind CSS somehow. At one point, Nuxt was based on webpack. Focusing on one specific provider lets you move faster. And the advantage I've seen with Cloudflare is that they are very cheap.
Sébastien Chopin:They have great features. And it was quite easy to create the missing developer experience they have. And I really enjoyed using Cloudflare so far as they are basically you have server side rendering for free. And instead of having to pay a Node. Js server, I found it very appealing.
Sébastien Chopin:And you can have a database, you can have a KV. So all the tools needed to build a full stack application and also in the free tier. So for me, the choice was quite simple because I wanted to give the Nuxt developers the ability to create Nuxt application with the server side rendering on top of this on the edge, so close to other users worldwide as fast as possible. So that was my prototype. We still have in mind.
Sébastien Chopin:So that's the first step.
Sébastien Chopin:Well, of course, what I want to do is the ability to open the NuxtHub core module to be more agnostic so you can select your different database. And that's also why we're working with Puya and Nitro as we have the database migration automated in NuxtHub. We want to have the ability to have Nitro database and migration. But this way we can test things, see if they work and then make them agnostic on the UnJS and nitro side by collaborating with them.
Alexander Lichter:But that's basically not an afterthought. The agnostic part is something you keep in mind, but starting with a more designated provider.
Sébastien Chopin:Yeah. It's very hard to start agnostic, honestly. And already having something that work is also some work and later opening would be easier. But so far you can also deploy a Nuxtab application on Vercel with the remote storage so you can connect to your other Nuxtap application deployed in Cloudflare. So that's also things I'm exploring.
Sébastien Chopin:So how you can have the core so you can leverage the Cloudflare resources like D1, KV, but having your main application deployed elsewhere.
Alexander Lichter:Interesting. I see. I see. And while working closely with the platform and the offers CloudFare has, have you in contact with CloudFare themselves? Did you work together with some of the people to ensure I know that everything works as planned or when you maybe had some issues.
Alexander Lichter:How did that work if that happened?
Sébastien Chopin:Yeah. Well, of course, we collaborate with them weekly, at least. Some things are not available yet in development. As we don't support the Vite environment API to have worker d, we have to go through the platform proxy that emulates the features you can have in the workers but locally. So some of them are not yet available.
Sébastien Chopin:We also have some issues on the workers when they were updating their compatibility flags. But they are quite responsive, and I would like to really thanks Dario from Cloudflare, who is such a great help on all my questions at any time in the day.
Alexander Lichter:Big shout out there. So it is it is interesting to see you mentioned the the Vite environment API. That's basically because Nitro has no Vite environment API, like, integration yet and thus also not Nuxt. So when that comes in, I guess, Nitro v three, then we'll get a Nuxt also NuxtHub. Is that correct?
Sébastien Chopin:Yeah. I don't know if it would be directly the fit environment API or if it will be directly the ability to have presets, Nitro Presets locally. Which open a broader range because
Alexander Lichter:Like a dev preset or
Sébastien Chopin:Yeah.
Alexander Lichter:Okay.
Sébastien Chopin:Basically, if you specify a CloudFare CloudFare as a nitro preset and you start locally, you should be able to to use the the CloudFare WorkerD platform. Puja would be the best person to to talk about what he has in mind, but that's the vision we we discussed about last time.
Michael Thiessen:What is the environment API? Because I've heard about this, but I I'm a little fuzzy on what exactly it is.
Sébastien Chopin:Do you want to to go ahead?
Alexander Lichter:Can yeah. Sure. Sure. I can I can talk about that? Actually, to to refer to the episode with with Patak here as well, episode 51 where we talked about Vite in-depth.
Alexander Lichter:So the the point was to just, like, make a very quick overview. In Vite always had like two environments server side rendered and not server side rendered, client side. But the problem in a way is that this is not enough nowadays when you have, oh yeah, maybe one environment is your Cloudflare Workers which is not exactly node server side rendered. So it's a subset of that. There may be some different settings to be applied and so on and so on.
Alexander Lichter:And in a way there is the tool which is used on top of Nitro by other tools like it's called Vinxi. And Vinxi was basically allowing to have certain well not environments, it's the Vite environment API, but the same goal, like to split your application further into certain parts. And with Vite six, the environment API come out to say, Okay, look, you have the freedom to define these environments and switch between depending the parts of your application. While before the V Team was looking into a different API that was just not enough and especially the people from CloudFare was saying like, hey, we need a bit more than that. So it's something very specific and especially interesting for framework and platform teams and framework authors and also to send the library authors for sure.
Alexander Lichter:So ideally you would just consume it as a user and work fine. But it's definitely interesting to, as I before, rewatch the episode with Paul Tuck and also link in the description all around that and give feedback if you're interested in that as well because it's available. But, well, as usual, software is never done. So that's that might be a good idea to check out.
Sébastien Chopin:You can think of it, it's a great explanation you did.
Sébastien Chopin:The difference between JavaScript in the browser versus JavaScript in Node is that you don't have access to Window and in the browser you don't have access to the file system. But in the worker environment, it's another runtime where you don't have access to Windows and you don't have access to a file system. So it's more limited. You may not have some Node.js API.
Sébastien Chopin:So instead of having the surprise after building your application and running it in the worker that, hey, this Node. Js API is not available. The goal is to bring this runtime in development. It's actually possible if you run Wrangler dev, but with frameworks like Nuxt, we have the build process.
Sébastien Chopin:So what you don't want is to build every time to test locally because it would take too much time. So it's how you can bring this environment, this limited runtime directly to replace your Node. Js runtime when you server render your app or you call API routes.
Alexander Lichter:That's great to add. Yep. I think that simplifies it a lot as well. And I think use cases like Cloudflare Workers, I think also React server components could be very interesting. You're like, hey, that's another subset and so on and so on.
Alexander Lichter:So a lot of scenarios that might be framework agnostic but also that could be framework related. And in a way, I'm really glad to see that this is something that was like coming from the community and like all the different people like platforms, framework authors and so on saying, hey, we need something more expressive and then responding to that. But like, okay, let's let's figure something out that benefits everyone. And I remember like when the API was was drafted, that was like at at Devworld last year. So like in in February, like close close after Vue.js Amsterdam.
Alexander Lichter:It was so funny because, like, the all the people there from the the V Team who were out, like, were, like, all gathering around the table. I'm like, oh, there and this. And this was, like, where we're, like, real collaboration, like, also real life collaboration. It sparked so much energy. And then here we go.
Sébastien Chopin:Yeah. This is very exciting.
Alexander Lichter:Absolutely.
Alexander Lichter:I would be curious to once again zoom out a little bit because a lot of people of the community, of like the Vue and the Nuxt community, They think a lot of Nuxt and Nuxt Labs as one bigger entity. While you already established, that's not the case. So for example, when you got the seed round, they didn't get a part of Nuxt as the framework of the company Nuxt Labs. Maybe it might be a good idea to explain once again what the difference is in terms of you already mentioned a few parts like governance, but also in general between the the framework, like the projects, Nuxt, and the Nuxt Labs, the company behind it.
Sébastien Chopin:Yeah. So there is things that basically, I think it could be similar to Void Zero and Vid, the relationship between Void Zero and Vite. Even though Vite, the maintain the maintain like Patak is not working for Void Zero, doesn't change the fact that Void Zero may have the trademark of it, for instance, to protect the brand that avoiding other companies to leverage this as an open source framework under the MIT license. So basically what I've did with the next steps is to protect the migration by registering the trademark and the domains. So that's what we have.
Sébastien Chopin:And then it's open source under MIT, so it belongs to no one except the maintainers. I specifically gave the owner role on the GitHub organization. Like I said, it's all about trust. And but so far, it's all about the trademark and the usage of the commercial entities we can do around it. Then it's it's open source, it belongs to to no one.
Sébastien Chopin:Anyone can fork. It's all about the people we can trust. And I decided to trust the owners, the Nuxt core team, including you, Alex. And that's our decision at the end, whatever the company can do in term of development of the framework.
Alexander Lichter:I think that's a good overview in that sense. And you already mentioned in terms of governance, Nuxt Labs is not governing the direction of Nuxt itself. A bit like Void Zero is not governing the direction of Vite. Of course there are people working full time, part time, whatever on the project. But in the end, and there's also another similarity, both Veat and also Nuxt are multi company project, people from different companies, a lot of core team member have a day job.
Alexander Lichter:They don't do full time open source, but also quite some people are working either part time or almost full time sponsored through Nuxt Labs. So that's also something I think should be highlighted here to make that clear.
Sébastien Chopin:Yeah. It's all about the people working on Nuxt. So the core team, we had different core team in Nuxt and the project always stays. Whatever the people are working on, what I do at Nuxtab is making sure I give as much as possible time to people to work on Nuxt on the core team. So that's either by having a contract with them to work full time or having a sponsoring to give a little bit either give them time or just give them a thank you for the help.
Sébastien Chopin:And that's if I could, I would love to to have everyone working full time. That would be that would be my dream. That's so far, we can manage to have few people. And yeah. And then the so far, Daniel is the lead of the project, and we discussed every Friday on the on the call team meeting about the direction.
Sébastien Chopin:Even though I'm the CEO at NuxtLabs, that doesn't change. It's people deciding what's what's going on.
Alexander Lichter:Yep. That makes a lot of sense. And I think it's important to have this distinction as well and not basically the company influencing where the framework goes because I think also that wouldn't really work would lead to conflict at some point or like, I don't know, a fork or what. I mean, we've seen a lot of drama in terms of open source and like weird actions from, I don't know. I'm not just saying WordPress, right?
Alexander Lichter:Yeah.
Sébastien Chopin:No, I completely understand. I think there is lot of fear that are not well explained in my mind about a company dictating the framework. There is no advantage of the company of destroying a framework Because so far what we do is we benefit from Nuxt being chosen and what we want is the Nuxt being chosen by everybody. And then the ability to explain them, if you want, you can contribute back to the at the end, what does it mean to have this next independence? It's the ability to work full time on the open source and not worrying about paying your bills at the end of the month.
Sébastien Chopin:So for this and even better if the source of income doesn't depend of one company. That's even better. But so far, the ability for a company to be self sustainable and work on open source, I don't see this as something, bad personally. And I think that's what Laravel is doing very well. WordPress is another story versus their hosting, but so far they've been doing very well.
Sébastien Chopin:And I think it's also comforting for people when they need to decide about a framework that if there is a company behind that is sustainable, it's also reassuring. So and there was also an issue we had, I think, regarding Vue.js, about the fact that it was only maintained by by Evan at one point. And there is this best factor that what happens if something bad happens to to Evan, where you like if the company then they benefit from the open source to be sustainable. So they will need to find someone else to maintain the framework.
Sébastien Chopin:So they are tradeoffs. With the time, and I really hope people can see that there is no the company is not something bad depending, of course, of their owners and their but I think I've been proving so for eight years that you can have a company and trying to make it the best for the community and the open source. Agreed. I'm confident.
Alexander Lichter:Agreed. From this perspective, just real quick, because you said, okay, especially with you being an independent framework and not having Google or Meta behind a company. While this, of course, is like the appearance at first is just Evan, but especially in the last years, of course, it also changed a lot. Mean, there's the core team around it. You mentioned Eduardo already.
Alexander Lichter:There are so many other people involved. On the other end, people are saying, okay and
Alexander Lichter:I've heard it a couple of times and also had some interesting discussions around that, that Nuxt is a venture backed framework. So how far would you agree with that statement?
Sébastien Chopin:NuxtLabs is a venture backed and that is developing the like, the majority of the people at NuxtLabs help developing the Nuxt project so far. So that's depends what what's wrong with the venture backed also. I'm trying to figure it out. I think that we we have the idea of because you raise money, and I have a good example of Symphony with a PHP framework. They they were venture backed.
Sébastien Chopin:They raised funds, and they got one round. They they were able to develop the framework and a premium offering, and then they were self sustainable. So after a while, they decided to buy their shares back from the investors, and that's it. End of the story. That's it's not about what you do with the money.
Sébastien Chopin:For me, that's investing in the framework. Whatever NuxtLabs stays or not, I know the framework will pursue, and that's what matters. So I know I will have invested as much as I can in in the vision of the open source framework.
Alexander Lichter:I think that's a very good conclusion because, like, usually like, I also try to say the same. Like, okay. Nuxt is not venture capital backed. And if, God forbid, right, if Nuxt would not exist at one point, Nuxt would probably still be there in different ways, maybe with different capacities. But it's not like that the people will just vanish because there's some mesh that we're running out.
Sébastien Chopin:And it's same for VoidZero and Vite, I think.
Michael Thiessen:Yeah. I think people's concern is that when you get VC money, the investors, they're trying to look for like a good outcome financially. And so then they might pressure you to, you know, do things that prioritize profit, which might ruin the framework.
Michael Thiessen:But the way you set it up is like, you know, Daniel gets some sponsorship from you. And so that's just part of how you're trying to help like, promote the development of Nuxt.
Michael Thiessen:But he's not, like, taking orders from you and, like, you know, he's not gonna screw up the Nuxt framework just because, you know, it's gonna make you a bit more money. And so I think, like
Sébastien Chopin:Technically, we have a contract
Sébastien Chopin:With Daniel we have a contract for him to work full time. Like, we have a contract for him with, Pooya to work full time. Okay. Whatever we say to sponsor or not, I give, a lot of freedom to let him work on the open source. So that's, can be considered as sponsoring.
Sébastien Chopin:But for me, I want also to be sure that he can work as much as he can, freely. There is no, I don't give any
Michael Thiessen:Right.
Sébastien Chopin:I don't force him to to go to conferences. It's it's how I work in open source. He's that's and and regarding the investor, I think it's very important to to mention that, first, you you decide what investors, you work with, depending of how popular and how needed you you want. We I could say, we were lucky, but we're also choosing what investors will go with us. And, also, we did a proceed and a seed round.
Sébastien Chopin:So we're not at that stage where investors asking you to bring them back money. What they want is they're not going to work at your place. Basically, they invest in you because they believe that you could create a company that will grow. And of course, at one point, we bring them 10x or 100x. But I was very lucky to have Jean Patrice who also invested in Strapi, who helped them build this open source vision.
Sébastien Chopin:At the end, their question is, how can we help? Basically, what are your doubts? And you build with this. I'm confident about we didn't change the nature of Nuxt, and we built premium solution around it. We also have this Nuxt expert network where we collaborate with you, Alex, on trying to help some Nuxt community member collaborate directly with enterprise customers as freelancer.
Sébastien Chopin:And we try and we try and we see if it works. If it doesn't work, it's fine. We we move on. But I never imagined to have a Nuxt Pro version. And I think it would never happen.
Alexander Lichter:Like freemium basically or like open core or whatnot.
Sébastien Chopin:Like I said, I really found the Laravel nice as it's just stuff that you don't need. But if you use, you just save time. And that's basically what most people said at the end is saving time.
Michael Thiessen:Yeah. And like, like to your point about the whole like investment and everything like that, seeing how you and the Nuxt core team have operated over the last several years, Like I have no, I have no concerns about about any of this. And I'm like, you know, very much invested in the future of Nuxt. And I really hope that Nuxt labs gets to a place where you're more than just sustainable, but like able to do like fund even more and give people even more opportunity to work on open source. So I'm excited to see where everything goes here.
Alexander Lichter:Same here. Yeah. Just best of success. Maybe that's almost a good end, but there is one more thing I want to ask, a little sneak peek into the future. Sebastian, can you share anything with us that's coming soon to any of the Nuxt Labs projects maybe or anything people could be excited about?
Sébastien Chopin:We may revive Docus.
Alexander Lichter:No. But everybody not have ever heard about Docus. What is that?
Sébastien Chopin:It's a documentation generator similar to Vitepress but powered by Nuxt. We're using the Nuxt UI products templates, making it as a CLI so you can just focus on having more than five while keeping the extensibility. And then what we want, of course, is add i18n and all these nice features. But also, as we're working with Nuxt Hub and the AI part, we want to add this auto RAG feature. So your documentation website will also have the Ask AI feature by default.
Sébastien Chopin:So exploring. And so far, we we need to rewrite all of our documentation's website for the modules, with Nuxt UI v three, so it's it's a good way. So this will be open source, very soon. It will be Docus v two. On Nuxt UI, we have plenty of work, but you can see the road map on the UI website.
Sébastien Chopin:And on the Nuxt Hub, we want to add the environments because workers are great, but so far, you don't have the preview environment. So your pull request, you don't have the preview URL. So we want to make sure you can have the preview environments. We need to create a separate worker, but also the ability to create a new environment, let's say staging or preproduction, and you can have your own database KV that will be created automatically. So adding this and also fixing this as we added the GitHub action, now you have bit time environment variables and the runtime.
Sébastien Chopin:We want to put them so you don't need to specify on the GitHub action as well. Developer experience improvement mostly, and open source.
Alexander Lichter:Even better. Yeah. Looking forward to these changes. They're very exciting, especially what you've tweeted about also before and not even mentioned the whole part of Nuxt Hub, Cloudflare Pages, and now moving to Workers to get all the good features. So I think that's, like, what a lot of people kinda waited for.
Sébastien Chopin:Yeah. And I'm looking forward to have this authentication by default Oh, yeah. To help people push as much to deploy project as much as as fast as possible. So that's an exciting time.
Alexander Lichter:Sweet.
Alexander Lichter:Then Sebastian, I think we can only ask one more question here. Where can people follow you? Where can people find out more about all the things NuxtLabs is doing, you're doing? Share everything with us so people can subscribe, follow.
Alexander Lichter:You know the drill.
Sébastien Chopin:So I'm atinux on Blue Sky, Twitter, YouTube, LinkedIn, all the social media, actually, and nuxtlabs.com, nuxtlabs on Twitter, blue sky, LinkedIn. I think you should get everything. It's also nice to subscribe to the nuxt newsletter on nuxt.com at the bottom right, if I remember well. And, yeah, that's that's the end. Listen to DejaVue and you get the best news.
Alexander Lichter:Perfect. I don't have to say anything else, right? Sebastian, thank you so much for coming on. It was a pleasure talking to you about the history of Nuxt and Nuxt Labs and everything around the amazing products you and the team are building. Big shout out to all the folks working at Nuxt Labs, no matter if it's an open source or on everything around that.
Alexander Lichter:And well, hope to see you soon on again for some more content of course.
Sébastien Chopin:Thank you for having me. Talk to you soon.
Alexander Lichter:Yeah. See you all. Bye.