Nuxt: Looking forward
A lot of things have happened for Nuxt over the last year. Sébastien and Daniel share their thoughts on what we've achieved, and where we're going next.
A Review of 2023 - Sébastien
In January 2023, Daniel set out Nuxt: A vision for 2023. We achieved most of the goals we set out to accomplish. Some of them are missing and we will tackle them this year!
It was a productive year and the team shipped 9 minor releases: from v3.1 to v3.9.
In the first 365 days, Nuxt 3 reached new milestones:
- 49,5K stars on GitHub (add yours 😊)
- 27M downloads on npm
- 612 contributors on the nuxt repository
- 184 modules created by 142 maintainers
- 2,423 closed issues
- 1,728 merged pull request
- 26,300 members on Discord
End of October, Nuxt 3 downloads surpassed Nuxt 2 downloads 🚀.
The same month, we released Nuxt Image 1.0 with Nuxt 3 support and new features to make sure your website stays performant when using Images. Nuxt now auto-installs it as soon as you start using the <NuxtImg>
or <NuxtPicture>
component.
We shipped Nuxt DevTools, leveling up the Developer Experience we can expect from a Web framework. I am happy to see that we inspired other frameworks to adopt a similar approach: Vue DevTools, Next DevTools, Remix DevTools, Vite Plugin DevTools, Astro Dev Toolbar and more.
After many months of building our UI library internally, Benjamin Canac open sourced Nuxt UI to let you create websites at a faster pace with highly customizable components built with TailwindCSS.
Nuxt Content has had 10 minor releases with various improvements: from performance to the MDC syntax. We have some ongoing work to better support edge rendering in the future. At the same time, the NuxtLabs team is working on Nuxt Studio to let users edit Markdown files with a Notion-like editor while keeping your content inside your git repository.
Looking forward into 2024 - Daniel
We are well into 2024, and this update is definitely overdue!
Here are a few thoughts on the direction that I'll be seeking to lead Nuxt in over the next year.
Continued development and reimagination
I would love to see us continuing to adapt our best practices to the changing needs of the ecosystem, expand the boundaries of what good DX could be, and improve Nuxt.
I am really pleased at what we currently offer in Nuxt. But I would never want to rest on our laurels. We need to keep pursuing new possibilities that appear as the web platform develops. We've committed to Baseline Compatibility going forward (and are included in conversations about it with the W3C WebDX Community Group).
We have some strategies to enable us to do this while also prioritising stability for our existing users, and recognising the scope of the Nuxt ecosystem.
- In general we follow a pattern of introducing a module or experimental feature that can be disabled in testing while we gather feedback and confirm the direction and API of new features.
- We have adopted the ecosystem-ci pattern of validating that our code changes in Nuxt don't break downstream projects unintentionally. If you maintain a well-tested module or library that depends on Nuxt, I'd welcome a PR adding your project to nuxt/ecosystem-ci.
- We plan to release a pull-based test that will allow you to configure your CI to test itself against the latest nightly version of Nuxt to provide early feedback on new Nuxt releases, rather than facing an issue when upgrading.
- Finally, we have adopted a push-based approach to updating existing projects. When we identify breaking changes or improvements that can be rolled out to the ecosystem, we will proactively raise PRs to Nuxt modules (and, to a lesser extent, other open-source projects using Nuxt).
I hope this will allow us to continue to innovate and experiment with new features without sacrificing the stability and maintainability.
In particular, look for active development on the following:
- ✅ nuxt/fonts - working up to v1.0.0
- ✅ nuxt/eslint - working up to v1.0.0
- 🔥 nuxt/scripts - soon to be released
- 🚧 nuxt/a11y - coming soon!
- 🚧 nuxt/auth - coming soon!
- 🚧 nuxt/hints - coming soon!
Sustainable open source
I want Nuxt to continue to be an independent, community-driven framework for the long term.
I'm really delighted to see successful businesses founded on Nuxt, and initiatives springing up around Nuxt that become sponsors or otherwise giving back to the core framework, enabling ongoing Nuxt development.
Obviously, NuxtLabs is the preeminent example of that. Pooya Parsa, Anthony Fu and I are all able to work full-time on open source thanks to their paid services around Nuxt: Nuxt UI Pro, Nuxt Experts, Nuxt Studio and NuxtHub (soon). They also sponsor community members from Vue, Vite, UnJS, and Nuxt.
For me, keeping Nuxt independent and sustainable for the future requires an active and growing team and community. In the weeks ahead, I'll be announcing a broader 'Nuxt team' alongside the core team. This is about recognising the tireless work of the many people whose contributions are already making Nuxt what it is.
I would also love to see more of those team members or the wider community sponsored to work in the Nuxt ecosystem in the years ahead. If your company has benefited from Nuxt, please do consider sponsoring some of the developers working on Nuxt, whether they are team or wider community members.
Friendly collaboration
From the beginning of our work on Nuxt 3, we have sought to extract out utilities, libraries and even frameworks that we benefit from so they can also benefit a much broader audience.
That's the origin of UnJS, of course, and it continues to thrive under the leadership of Pooya Parsa (who is also a key member of the Nuxt core team).
We'd like to continue that attitude of friendly collaboration. Although building things ourselves or keeping them to ourselves might to be 'success', I don't have any time for zero-sum games. We will go further, both as a framework and as a web community, if we build together.
Equally, one of our core values is platform-independence (alongside deep platform integration). We support 90+ providers across deployment, testing, stories, KV and cache, databases, image CDNs and font hosts. That breadth of ecosystem is one that bears rich rewards and frees people up to make choices about which providers they use based on the value they bring. But it also means we are dependent on our community who use these different providers to help us keep these integrations up-to-date.
Nuxt isn't going anywhere, but we hope that the work we do collaboratively will last long beyond us.
A welcoming community
Although it is easy to focus on technical excellence or the quality of developer experience, I am more encouraged to see the continued growth of the Nuxt ecosystem as a welcoming and friendly community.
I am incredibly grateful for the kind tone that prevails across our community Discord, on Twitter, and on GitHub.
What about Nuxt 4?
The JavaScript space is known for producing a new framework every week, which means there is a natural hype cycle.
But we are not aiming for hype with the continued development of Nuxt, which is part of why we have committed to regular release cycles:
- major framework releases every year
- minor releases every month or so
- patch releases every week or so
You can expect to see breaking changes shipped in major releases, with features shipped in our minor releases. That means we aren't holding features back for Nuxt 4; we'll ship those as regularly as we can in our 6-weekly minor release cycle.
Our aim is that Nuxt 4 is an opportunity for thoughtful breaking changes with either a straightforward migration path (ideally with automated processes) or the ability to opt-in to previous behaviour.
There are definitely lessons we as a team have learned form the transition from Nuxt 2 to 3, and I see Nuxt 4 as an opportunity for us to prove that major releases can be a good experience for users.
You can preview the changes we have in mind by browsing our roadmap or checking through the issues we've tagged for v4. Feedback and wishes are very welcome as always!
Timetable
Our roadmap for Nuxt 4 is a little complex as we are also planning on major releases across the UnJS ecosystem.
Roughly speaking, we are aiming to have one more minor release for Nuxt v3 and Nitro v2, before beginning a raft of major releases across the UnJS ecosystem of packages - culminating in Nuxt v4.
We are aiming to release Nuxt v4 on or before June 14 (though obviously this is dependent on having enough time after Nitro's major release to be properly tested in the community, so be aware that this is not an exact date).
Ongoing Support
After the release of Nuxt v4, we will be providing six months of ongoing support and bug-fixes for Nuxt v3, which we expect will be more than ample to upgrade to v4 given our aim of a gentle upgrade path.
We hope you are as excited as we are about the pending release of Nuxt v4! 🎉
Finally, thank you so much for all your trust and support as we've been building Nuxt. I know I speak for the whole team when I say that it's such a privilege to be doing this alongside everyone in the Nuxt community! ❤️
Daniel (on behalf of the whole Nuxt team)