VueJS Amsterdam 2026

Daniel Roe - State of Nuxt 2026

32:57 · 12 Mar 2026 – 13 Mar 2026 · YouTube

About this talk

In this talk, Daniel Roe discusses the state of Nuxt, a popular framework built on Vue that offers full-stack capabilities through its server builder, Nitro. He highlights the various tools and technologies that contribute to Nuxt's extensibility, such as Vite, PostCSS, and Babel, and emphasizes the importance of community contributions, boasting over a thousand contributors. Furthermore, Daniel announces the release of Nuxt 4.4, which includes new features like typed routes for layouts and a factory function for data fetching, aimed at enhancing developer experience. He advocates that Nuxt prioritizes the people who contribute to it, fostering an open and inclusive ecosystem, and mentions ongoing improvements such as better error logs and built-in support for content security policies. Daniel underscores the project's commitment to iterating and experimenting with new ideas while maintaining a strong focus on serving the community.

Full transcript

Well, hello. It is a pleasure to be here um and to get a chance to see and talk to so many people, I hope, over the next few days. So far, I have done zero seeing and talking to people because I have been desperately finishing my slides and we'll see if they in fact are finished as we go through the talk. >> [clears throat] >> My name

is Daniel Roe. I'm a full-time open source maintainer, which is honestly the best job in the world. Uh as Alex said, I lead the the team building Nuxt. I also also recently started another project called npmx, which you should check out. Uh it's an alternative front end for the npm registry, so you can replace npmjs.com with npmx and it should work and I hope you really like

it. Uh and there are a few other projects I'm involved in as well, like uh Nitro. Um I've built a few websites like Page Speed or First Commit or other things that you might want to check out, too. And every day I play Pangrum, which is a game that I built. Um you might play that, too. Uh and yes, I'm a a GDE and MVP and GitHub

star and I'm employed by Vercel to work full-time on open source. I live in Scotland uh and I was just uh last week just this weekend, actually, I was up on Arthur's Seat, which is our mountain. It's uh it is I think I'm in the right country to be saying it's a mountain. So, I don't I don't think anyone else anywhere in Europe, you know, anywhere within

sight of the Alps, for example, would admit that it's a mountain, but it's a beautiful place to be. I can see that some people have already discovered the fact that if you go to that QR code, you can send emojis during Uh please >> [laughter] >> With great power comes great responsibility. Uh I live in Scotland with with my family, my two cats. I've got a 6-year-old

kid called Ned. Uh and one of the things that I particularly love to do uh is boulder. Um so, yesterday a few folk uh were bouldering in the local area in Beast uh Hat Lab, which is great. Amazing. Uh which is why I I obviously picked a meta-framework that's all about mountains. Probably. Um I want to talk a little bit about Nuxt. So, the the the title

of the talk is the state of Nuxt. So, what is Nuxt? Um I think one way you could look at Nuxt is what it is built up of because there are so many building blocks, goodness me. Uh so many building blocks to Nuxt. Obviously, it's built on Vue. We use that for the the front end and for the rendering layer. Um we use all kinds of other

things from PostCSS to Autoprefixer to CSS Nano. Um we obviously use Vite as our main bundler, uh which itself uh up to now has used Rollup uh but will soon be using uh Roll Down and then we use Unplugin to uh support other bundlers as well. So, we support Webpack and we support RS Pack. And then we have Nitro as our server uh builder because Nuxt isn't

just a front-end framework, even though you can totally use it to build just an SPA. Uh but Nitro adds full-stack capabilities and KV and database and caching and deployment to any number of different providers um with zero config. Uh and then under the hood, it uses H3, which is a super performant HTTP framework. Uh and in fact, there are too many logos uh for me to put

in of all the different packages in the unjs ecosystem that we built as part of building Nuxt, but which we want to be used and which are used by lots of other frameworks and even on their own uh by developers to build great and performant websites. And Nuxt is so many different things and it's not only that, Nitro itself uses Rollup and soon Roll Down uh and

soon even Vite uh because Nitro is becoming a Vite plugin. We also use uh Babel uh and we also use OXC and I could keep on going with all the different things that make up Nuxt, but I don't think that would be a fair description of what Nuxt is. It's true. Maybe I could point at Nuxt modules. There are loads of different modules that make up Nuxt,

lots of different integrations for different providers, different uh services, CMSs and this was definitely meant to be like refreshing. Uh we have over 300 and uh over 300 modules. Um 18 million downloads of of of them, lots of contributors and maintainers in lots of different categories. And I think that is one of the things that makes Nuxt unique because it is extensible in a way that no

other meta-framework is extensible and I can say that with zero, I think, doubt that that is is the case. Um and that maybe makes Nuxt what it is. It's it's open, it's tinkerable, it's it's configurable. But also, I think that misses the mark. I don't think that's what Nuxt really is or at least it's not the core vision which drives Nuxt. I think, and this is what

I will say, and this is also not just what I I plan to say now Nuxt is about, but I also plan to be doing some things over the next year to make even more clear. Uh from updating our website um to some interesting new initiatives that I'm going to talk about. I think Nuxt is about its contributors because we have over a thousand contributors. Just our

uh latest release of 4.4, which I'll talk about in a moment, which is not out yet. Um but it will bring the total to over I think 1,005 contributors as of GitHub count last. Um you might see your face there. Actually, I don't know. GitHub actually doesn't give us all the the list of contributors. It caps it at a certain amount. So, we have too many contributors

to actually get the full list and show all the photos. This is the history of Nuxt. Each of those is a person touching a file building out Nuxt. Started with the first commit from uh Sébastien Chopin. You might be able to spot some early OGs from the Nuxt uh history. People have come and gone, made huge impacts, and then maybe moved to a different point in their

careers. We're up to November 2022. May, June '23. You can see the explosion of activity around Nuxt 3. Nuxt 4. And here we are. Just a year ago. And now, March 2026. It was hard to collapse that into 1 minute, which it was. But one thing that I hope that you see is that Nuxt is about the people. This is not the project of one visionary mind.

Uh it's not um a a small dedicated core team who do everything themselves. And it's definitely not shaped by a company's direction and strategy. Nuxt is the product of all of us who use it and contribute to it, whether that's opening issues, coming up with new ideas, or actually uh changing the code, writing documentation, producing a video or an article or whatever it is. I have a

spicy take when it comes to open source projects. And the one that I will absolutely defend. And in fact, it's it's most of my spicy takes people will tell me aren't that spicy, so maybe I just have a, you know, lower spice level. Don't know. I think contributors.md wins any day over agents.md. >> [applause] >> And I can tell you why in lots of in lots of

ways and reasons. So, reason one is that people are more important than Um people are fun to work with. I mean, yeah, agents are fun in the same way that, you know, candy is fun. You know, it's it gives you gives you a maybe a sense of um empowerment and freedom and you're doing something is so cool and hype hype hype and you get addicted and yeah,

that's great. It's it's it's fun. But you know what gives meaning to life? It's not that momentary rush of serotonin, it's the relationships you build with people that last far more than just your current project or current bit of code. And if if you're thinking about open source projects and open source communities, I I will say that it's not actually at the end of the day fundamentally

about the code. I feel a bit nervous saying this. Nuxt is a good framework. >> Okay. The code is good, too. I I I hope. But that's actually not what it's about, and that doesn't matter nearly as much as the fact that the whole group of people who built Nuxt, it's fun to do it together. Nuxt is not the project of one person in an ivory tower

building something cool. And I wonder sometimes if it gives the wrong impression for me to be up here giving a state of Nuxt talk because there should be a lot more faces. Like this Nuxt isn't a one thing. And certainly for open source, the like the joy of it. So, why do you open source anything? Why put it up on GitHub? Why not just keep it yourself?

Why not just build a product on it and I It's so much more fun to do it with people. Right? It is better. And also, I will say there is this other thing, this other point, and that if you write good documentation and help people contribute to your code base, then of course if people are using agents that will help them, too. But I think it's really

important to make the priorities right in the beginning. So, I think the core value of Nuxt is that people come first. And the and and that flows out to almost everything else that is about Nuxt. So, one, it makes us intuitive. We we've talked about ourselves on our website before. Nuxt is the intuitive framework. We really prize developer experience, and a lot of that is about intuition,

what feels right. And it matters because convention over configuration is a big part of what Nuxt is. Stuff should work. You should be able to sort of set it up and do things in in a way which makes sense to you, and then that should scale to teams, it should scale to enterprises, but getting that feeling of intuition and what is what is right matters a huge

amount. But it comes from people. I mean, it has side effects. It's also useful for AI because if something is intuitive, then it is predictable, right? But people also mean that we're open. So, Nuxt is about deployment anywhere. It's about any provider. So, you know, Sebastian and I are in a sort of Sebastian's building Nuxt DB. It's a super cool project. It's It's It's really amazing. It's

going to mean that you have full stack capability in terms of migrations and ORM and everything just out of the box in Nuxt. You're going to love it when it comes. Do you know why it's not out? Because I'm really annoying. >> And I've I've said, Sebastian, we cannot release this with only one ORM. Like it has to be open. Even if we only ship one implementation,

we have to build it so that you could pick any ORM. Like you build your own implementation, that has to be possible. You can't just ship with one thing. Nuxt is open, and it's open because we are about people, and one thing about we are diverse. We have different needs. That's a good thing. A framework built for people should be up for being customized and changed and

deployed wherever people want to deploy it and using whatever providers they want. It also means that Nuxt is extensible. If you think about the modules ecosystem, that is because we're not a monolithic thing. We have to allow people to build on top of Nuxt. That is at our core what we are. And iterative. I really, and this is also why I don't like major releases. I I

don't I really want to make sure that we, as we release stuff from Nuxt, we don't give the idea that this is perfection at any point. We iterate to get to the goal. We release experimental features, we test them out, eventually you migrate them to stable. We We ship cool features in minor releases. We improve what we're doing based on experts in the community, and we we

get better and better and better. And that is something I hope that you can see and feel over the releases of Nuxt. But at the core, people come first, and we're going to be doing some things on the Nuxt website, and also in the Nuxt framework itself, that I think are going to be cool ways of making that a reality in the next few months. But what

about AI? And by the way, the reason I I'm spending so much time talking about the fact that people come is partly because there seems to be a tide pulling everything away from And I want to put a flag in the ground and put down an anchor so that you can you can uh you can complain to me if if I start getting more excited about AI

than I am about people. Because that would be a a terrible tragedy. Now, we do we do, by the way, ship a lot of stuff that is AI-related. Um we've shipped uh Nuxt evals. We have MCP servers built into your documentation. Um like Nuxt itself has There is a lot that we're doing on on AI. all of that has to be in service to Preserving human agency,

deciding what we are doing and where we're going, and then you can use whatever tools you want to achieve that aim. They have to be evidence-based, so uh we have Again, Sebastian's working on a very interesting um built-in integration to detect if you're using agents and then automatically directing those agents to uh the Nuxt docs and publishing for a while But we haven't shipped it yet because

we're still testing to see if it makes a difference and how much difference it makes. Because let's be honest, there's a lot of hype out there, uh but what we want very much is to be based on on evidence. Uh and we want to experiment. Uh this is a a venue when it comes to AI where things are changing fast. So, you need to experiment. Skills, MCP.

What is it going to be in 6 months' time? We have to be able to try it all, see what works, and see what doesn't. But today, moving on, it gives me very great pleasure to announce the release of Nuxt 4.4. Some things that I hope will bring you uh joy, I will tell you in just a few minutes. But first, I want to know from what

feature are you most looking forward to I'm hoping if you go to that URL, you'll to uh enter them in. A word, a phrase, anything. What on earth? There are emojis here that I did not know existed. >> I may have said it before, but when I was first building the um the websocket integration with my slides, I I posted on Blue Sky about it, and uh

someone rickrolled me. I had my slides up. I was editing the component, and literally, cuz I wasn't validating the number of emojis at the time. So, and there's basically an emoji for every letter. So, somebody basically put every line of, you know, never going to give you up as emojis. It came into the screen and scrolled up. And so, I was just there unable to look at

the slides as uh wonderful lyrics appeared. Let's see. Micro front ends. Uh there's a lot of micro front end support. Imports better. Yeah, I should probably do something with a word cloud. Uh >> It's going to be better in future. That's the we're working on the better piece of the of it. Memory. Typed routes, I guess. Um Vapor. Oh, yes. Vite. Something or other, maybe Vite 8.

Console multi-app support. This is less useful than I thought it would be. Here are some of the things we're announcing in Nuxt 4.4. First, we're shipping a factory function for your own use fetch and use async data. Um so, instead of having to define everything every time you use it, uh or wrap it, the problem you previously weren't able to wrap it in your own function because

we need a unique key for every use of any of these functions to um sync them up between server and client. So, you couldn't just wrap things, um which is part of the the challenge. But we've built a create use fetch where you can either put uh take an like a a function in that overrides user options, or you can just provide some some default values, and

you can use everywhere. It should be pretty straightforward. Um I hope you'll love that. Uh that's use fetch and use async data. View Router 5, which you've heard about from Eduardo earlier today, it ships in Nuxt 4.4. No need for a major release, and this is uh is a really great release. I'm really looking forward to it. I'm upgrading all my projects to it. Um it removes

unplugin-vue-router and it's really the next step is to unflag typed pages in Nuxt itself, which is a huge developer experience boost. I enable it in all of my projects and the only thing keeping us back up until now has been the fact that it was uh in unplugin-vue-router. I built a new library called unrouting, which uh aims to take uh file system routing and make it cross-framework

uh and and universal. And as part of that, we um we've extracted uh all of Nuxt's internal route generation and refactored and rebuilt how that works. it supports other frameworks and it uses a tree to uh to build those routes. So, previously stuff was order dependent and it was basically an array and uh and you had to build that array. Uh so, it meant that the order

you scanned the routes on a file system mattered and we had some subtle bugs coming in from that way. Whereas now we have this tree that allows you to insert a node at any point and have have it automatically recalculate how the how the tree works. Um so, you're able to to build build uh exactly the same kind of routes that you would expect um based on

based on the tree structure. and one of the main things that we're able to do is is ship incremental updates. So, previously, I don't know if you know this, but every time you change any file on disk, Nuxt rescans all of your routes. Uh which is a bit costly. Uh and now with the new uh mechanism, we actually have a regression. It's uh it's slower. Uh on

the cold start, it it it is if you have 200 pages in your app, it it slows you down by 3 milliseconds when you start your dev server. I know I know. I'm I'm ashamed to be here in front of you today. you can find me afterwards crying in the corner. Um but it is also faster. Uh and this matters a lot more because you're not adding

pages all the time. Most of the changes in your app are not adding pages. You're adding other things. And it is so much faster on this point. It's 28 times faster, in fact, if you haven't changed any of those files. Um and uh so, we we've tested on a lot of different situations. Number of files, that obviously makes a huge difference uh on number of files. Um

and it's even faster if you're adding new pages. Um the whole structure should be really nice, particularly for dev environment. I mean, it's a micro microbenchmark, but it's relative, That's not all. Um we've moved to having typed uh props for layouts. So, um previously you might have had to try and get your you have a layout. The layout um is being displayed on your admin pages, but

you you want there to be some some unique thing in the layout. I don't know, a title or or something like that. And previously there was no real way of doing it. Uh where maybe you could do a provide inject or or you you had to have your layout sort of aware of the pages. It's not necessary anymore. Now you can actually specify in your in your

page not just the layout, but the props it takes. And they're fully typed uh if you're using define props in your layout, it just works. Uh and you can do that uh both with the uh with define page meta and also set layout. We've also stolen a whole uh chunk of features. I say this cuz it's it's really we're all about sharing ideas and it's so important

to give credit. I just want to I'm give some credit to TanStack Start. We've had import protection in Nuxt for a long time, since I think before anybody else did. Um but they shipped this really lovely snippet of being able to show where stuff came from and to be able to give suggestions for how to make it better. Um so, we're shipping that. We um we put

pulled that into added those features to impound. So, you should now, if you've ever seen like a you can't import from this file in this other file, you might have been annoyed by that. Hopefully, you'll get a better error message now. We're shipping useAnnouncer, part of our accessibility roadmap. Um you might not need to use it. Uh there are there are um uh check the release post

for full full details on when you might want to use Um and we're shipping a profiler uh in Nuxt CLI uh and in Nuxt. Uh and so, you'll be able to see post builds, if you run with a profiler, exactly where memory usage is and where time is taking. This is primarily uh for for my own benefit. >> Cuz I I'm working on making Nuxt faster and

so, this is pretty quite cool for me. But I hope that this is maybe an opportunity, if you care about performance and want to get involved in making Nuxt faster, this would be a good thing to start with. Um it generates a CPU profile, it generates a a time trace that you can open in Chrome dev tools. Um there's a lot of and and then another JSON

file in addition to this kind of report. So, it's it's a it's a I hope it's a cool feature and will make uh Nuxt better for us all. This um particular uh performance graph is not Nuxt 4, it's Nuxt 5. So, yes, and we're working on on performance. I mentioned that 28 times faster route generation, but actually the one which really both embarrassed and pleased me was

another PR um which uh improved the passing of module IDs, um which may sound totally uh what what is that? But every time Nuxt does any kind of build transform, and we do lots of them and they will run on every single file like at any point in that pipe build pipeline. So, that's all of your code and all of the new modules. Like it's it runs

everywhere. You have to we have to pass the ID to say like, oh, are we going to make a change to this code or not? Um and we were doing it in a really costly way. This is the embarrassing bit. But now we're doing it 14,000 times faster. So, let's focus on the positive, right? So, uh that that's going to make a again a a really big

difference, I think, uh because and it will definitely scale because the more more transforms, the more this is being called. Uh so, yes, I hope you'll find Nuxt 4.4 is And there's a lot more. Um so, we're avoiding double SSR renders for ISR or SWR or cached payloads. Um useCookie can be refreshed without changing the value. You can uh reset uh use state calls back to the

default value rather than just back to undefined. Um view transition types, uh which allow you to really customize how the view transitions API behaves in your Nuxt app. Uh and lots more. And particularly, I want to shout out a few people who made their first contribution to Nuxt uh core. Some of them have been in the community for absolutely ages and I recognize their their uh I

recognize them and their faces and their avatars so much that I thought this cannot possibly be their first contribution to Nuxt. But my my script tells me it was. So, um wel- welcome to all these new contributors. Um you're part of the team. So, it only remains Looks good to me. Let's go. And we have one more thing to do. I have to tag it. So, I'll

do that. What? Oh, for goodness' sake. Who did that? I I did that. That's super annoying. You willing to wait while I disable rule sets and make make Nuxt super Bypass I mean, you know, security is all good and that, but sometimes you just want the power. Cool. That seems pretty good. >> Uh there are a few more things that we need to do. Um these are

on our our roadmap. Um so, streaming HTML and pay- They're not just on our roadmap, I have open PRs for them. Uh well, or branches on my desk. Um so, streaming HTML and payloads, this is waiting for the release of Unhead version 3. Um and it is super cool and really performant. Unified error logs for Nuxt. This uh basically takes every single log or warn message anywhere

in your Nuxt app, gives it a unique error code and a documentation page so you can see exactly what went wrong, get ideas of how to fix it. Um and I mean, that's probably going to be useful for agents as well, if they're debugging stuff, but more importantly, it'll be useful for people. Um Built-in CSP support. This is an initiative uh started by Jacob um and it's

going to land soon. And Nitro version 3. You're going to hear more about that from Pooya later, but in our main branch, I just yesterday merged Nitro version three beta. And it's now don't you go testing it But I will. I want to make sure it's a little bit more seamless, particularly with some Knox modules for testing it, but it's possible with just something like this. You

want to see what it looks like? There we go. We've got Knox version three version five with Nitro version three beta, V eight beta, and V 3.5, and oh I need to go to the Oh, for goodness Once a bad thing gets into your history, you can never get rid of it. Whenever I type localhost, it always assumes I want to go to the SSL version It's

terrible. Not sure what's going on here. Oh. Let's try a different port. There's a I have got something else running on that Uh 4,000. Did I type 4,000? I don't know what's going on, but that's not relevant. It works fine, by the way. It's building it. There you go. It is a super super fast build. If you want to have a look at the profiler there you

go. Or there you go. It's just extremely fast using Nitro with roll down and V with roll down. And this is only the beginning cuz we're going to move it to the environment API, which will mean we actually have only we we like reduce our builds and have a more consistent environment. But it is it is something I'm really excited about. Um well, that is all I

have time for today. I'm I'm overtime, but if you're interested in checking anything out, please do check the docs. Come join us on Blue Sky or Discord. Um and if you want to chat with me, if there's anything I can do to help you um make your first steps into open source or help you in any other way, particularly if if maybe you you feel like you're

the word you might not be welcome or you um maybe be coming from a different background for someone than maybe the rest of the folk on the team, um please reach out. You can go to row.dev/chat and book a a call with me anytime. I'm excited about the future because it is all about the people, and honestly you are all the best. Thank you so much for

having me.

From event

VueJS Amsterdam 2026

12 Mar 2026 – 13 Mar 2026

All event videos
Back to Watch