Library / SDK
nuxt/nuxt avatar
nuxt/nuxt

Nuxt: a full-stack Vue framework that decides your rendering mode for you

Nuxt is a free, open-source full-stack Vue framework offering server-side rendering, static generation and hybrid modes with auto imports and zero-config TypeScript.

60,902 stars5,801 forksTypeScriptMIT

At a glance

What is it?
Nuxt wraps Vue with file-based routing, auto imports and a server directory, and lets you pick per-route whether pages render on the server, at build time or at the edge. The trade-off is that a large part of your build is now the framework's business, not yours.
Who is it for?
Adopt Nuxt when you already write Vue and want server rendering, file-based routing and a server directory without assembling that stack yourself; its last push was on 2026-08-05 and it ships under MIT. Skip it if your application is a client-only dashboard behind a login, where SSR buys you nothing and the framework's build conventions only add surface area.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem Nuxt solves: Vue alone leaves the rest of the application to you

Vue is a component library. It renders a component tree into a DOM node and stops there. Routing, data fetching, the HTTP server that produces HTML for crawlers, meta tag management, code splitting and TypeScript wiring are all separate decisions that a team has to make and maintain. Nuxt is the opinionated assembly of those decisions: file-based routing with code splitting and pre-fetching, data fetching and state management, SEO and meta tag definitions, auto imports of components, composables and utils, and TypeScript with zero configuration. The README also lists server-side rendering, static site generation, hybrid rendering and edge-side rendering as first-class modes. The audience is Vue developers building something that has to be indexed, shared as a link with a real title and description, or served from more than one rendering strategy at once. A purely client-side Vue app behind a login is the case where most of this is dead weight.

How the rendering modes and the server directory fit together

The mechanism is a build-time and request-time split. Nuxt compiles your pages into routes and, depending on the mode, either renders them to HTML during the build, renders them per request on a Node server, or defers that decision per route. The README calls this hybrid rendering, which is the interesting part: you are not choosing one mode for the whole site. A marketing page can be generated at build time while a personalized account page renders per request. The server/ directory is where the full-stack half lives. Adding files there gives you request handlers that ship with the same build as your Vue code, which is why the README describes going full-stack with it rather than bolting on a separate API process. The repository layout reflects that ambition: packages/ holds the framework packages, playground/ is the local app used for development, examples/ holds runnable samples, and test/ plus playwright.config.ts and vitest.config.ts cover the test surface. The root package.json is a private pnpm workspace, so the monorepo itself is not something you install as a dependency; you install the nuxt package.

Installing Nuxt and rendering a first page

The README gives one command for a new project. It creates a starter with the necessary files and dependencies, so you do not hand-write a build config.

bash
npm create nuxt@latest my-project

After the scaffold finishes, the project has an app.vue. The README's example for that file puts SEO metadata and the page outlet in the same component, which is the pattern worth understanding early: useSeoMeta sets the title and description that end up in the rendered HTML, and NuxtPage is where your routed pages appear.

vue
<script setup lang="ts">
useSeoMeta({
  title: 'Meet Nuxt',
  description: 'The Intuitive Vue Framework.',
})
</script>

<template>
  <div id="app">
    <AppHeader />
    <NuxtPage />
    <AppFooter />
  </div>
</template>

AppHeader and AppFooter are referenced without an import statement, which is the auto-import behavior the README lists. If you are working through this in an editor, the search data shows people pair Nuxt with VS Code; the README does not document an editor extension, so treat the framework documentation as the source for setup rather than assuming tooling ships with the package. For a project you want to try without a local install, the README points at nuxt.new, which opens a starter on CodeSandbox, StackBlitz or locally.

Where Nuxt is the wrong tool

The framework's value is concentrated in the rendering pipeline. If nothing consumes your HTML except a browser that already has a session, server rendering adds a server, a build step and a class of hydration bugs without a corresponding benefit. The same applies to a small internal tool: auto imports and file-based routing save typing, but they also mean that a route exists because a file exists, and that a component resolves because of a naming convention rather than an import line. Debugging a resolution failure means learning the framework's conventions first. There is a second, quieter cost visible in the repository itself. The root manifest is a pnpm workspace with build, lint, test, test:fixtures, test:runtime, test:types and test:bundle scripts, and the local development path in the README sends contributors to a separate environment setup guide. That is the shape of a framework with a large internal surface. When you adopt Nuxt you inherit upgrade work across major versions, and the release list already shows parallel lines maintained at once: v4.5.2 and v3.21.11 were both published on 2026-08-05. The README does not document a rollback procedure for a failed upgrade, so plan your own.

Nuxt versus plain Vue, and versus Next.js

The honest comparison against plain Vue is about who owns the wiring. With Vue and Vite you choose the router, the SSR plugin if any, the meta tag library and the server. Nuxt chooses for you and exposes configuration through nuxt.config.ts. The difference is not capability, it is the number of decisions you make and the number of conventions you accept in exchange. Against Next.js the difference is the component model and the ecosystem, not the feature list: both offer server rendering, static generation and a server-side directory. Nuxt's rendering choices map onto Vue's component and reactivity model, and its extension path is modules, with the README pointing at a list of 300+ modules and a hosting page. If your team already writes React, moving to Nuxt means moving to Vue as well, and that is a larger change than the framework comparison suggests. The search data shows people asking whether Nuxt is better than React; that question conflates a framework with a library, and the answer depends on which component model your team can maintain.

Licence, maintenance and the cost of staying current

Nuxt is MIT licensed, stated in the README and in the repository's LICENSE file, and the root package.json carries the same identifier. MIT is permissive: you can use it commercially and modify it, and the licence text must be preserved. That is a description of the terms, not legal advice for your situation. On maintenance, the last push to the default branch was on 2026-08-05, and the same date carries the v4.5.2 release, with v3.21.11 published minutes later. Two maintained lines mean two upgrade paths to track if you are on the older one. The upgrade cost itself is not documented in the README; what the repository shows is a Renovate configuration, a patches/ directory and a pnpm lockfile, which is the tooling a project uses to keep its own dependencies current. Your cost is the same exercise applied to your application: reading release notes for the line you are on and re-running your build, because a framework that owns routing, imports and rendering can move all three between majors.

What to check before you commit

Scaffold the project with npm create nuxt@latest and read the generated nuxt.config.ts before writing application code. That file is where rendering mode, modules and build behavior are declared, and it is the single artifact that tells you how much of the framework you are opting into. Then verify your deployment story against the hosting platforms the README links to, because edge-side rendering is only useful if your target supports it. Finally, decide which release line you are starting on. With v4.5.2 and v3.21.11 both published on 2026-08-05, starting on the older line means accepting a migration later; starting on the newer one means accepting that some modules in the 300+ list may not have caught up. Neither choice is documented as a recommendation in the README.

Editorial conclusion

Adopt Nuxt when you already write Vue and want server rendering, file-based routing and a server directory without assembling that stack yourself; its last push was on 2026-08-05 and it ships under MIT. Skip it if your application is a client-only dashboard behind a login, where SSR buys you nothing and the framework's build conventions only add surface area. Before committing, scaffold one route with npm create nuxt@latest and check two things in the generated project: whether the rendering mode you need is expressible in nuxt.config.ts, and whether your deployment target appears on the hosting page the README links to.

Frequently asked questions

What is Nuxt used for?

It is a full-stack framework for building web applications and websites with Vue.js. The README lists server-side rendering, static site generation, hybrid and edge-side rendering, automatic routing, data fetching, SEO and meta tags, and a server directory for full-stack code.

Is Nuxt free to use?

Yes. The README describes it as free and open-source, and both the README and the repository LICENSE file give the licence as MIT.

Is Nuxt better than React?

The comparison is mismatched, because React is a component library and Nuxt is a framework built on Vue. Nuxt supplies routing, rendering modes, auto imports and a server directory; adopting it also means adopting Vue.

Who created NuxtJS?

The original authors are not named in the README. The repository lives under the nuxt organization on GitHub, and the README points to Nuxt Experts and Nuxt Agencies Partners for professional support.

What is the difference between nuxt generate and nuxt build?

Neither command is documented in the README. The README lists static site generation and server-side rendering as separate supported modes, and the repository's own scripts include play:build and play:generate for the playground app.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/nuxt-nuxt.svg)](https://hysenlabs.com/projects/nuxt-nuxt)
Community notes

Community notes