Nuxt Kept Rising Because Vue Teams Wanted the Next.js Level of Leverage Without Pretending They Were Going to Switch Stacks Just Because Twitter Got Loud Again
Nuxt sits at about 60,296 GitHub stars and remains one of the strongest Vue frameworks on the internet. This guide explains what Nuxt is for, how to build a full-stack Vue app fast, and how to deploy it as static or server-rendered output.
The slightly mean version is still true: Nuxt got big because Vue teams wanted routing, SSR, data fetching, server APIs, and sane deployment without reinventing the stack every sprint.
GitHub shows Nuxt at roughly 60,296 stars, which is a strong reminder that Vue never disappeared and that serious teams still want an opinionated framework that turns components into a product platform.
What Nuxt is for
Nuxt is a full-stack Vue framework that is great for:
- SSR apps
- static sites
- content sites
- dashboards
- full-stack Vue products with server routes
Its modern server engine, Nitro, is one of the big reasons the framework feels stronger than “just Vue with pages.”
Start a Nuxt app
npx nuxi@latest init my-nuxt-app
cd my-nuxt-app
npm install
npm run devCreate a page:
<template>
<main>
<h1>Nuxt is running</h1>
<p>Vue with routing and server power built in.</p>
</main>
</template>Add an API endpoint:
// server/api/health.get.ts
export default defineEventHandler(() => {
return { ok: true, framework: "nuxt" };
});That is why Nuxt matters: frontend and server behavior sit in one coherent framework.
Why Vue teams keep choosing it
Nuxt removes painful glue work:
- page routing
- server rendering
- API endpoints
- static or dynamic deployment flexibility
- Vue ecosystem integration
It gives Vue teams a full-stack answer without forcing them into React’s worldview.
How to deploy it
Static output
npm run generateThat produces static output suitable for static hosts.
Server deployment
npm run build
npm run previewFor production, run the Nitro server output according to your platform.
Docker
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["node", ".output/server/index.mjs"]Then:
docker build -t my-nuxt-app .
docker run -p 3000:3000 my-nuxt-appWhat it changed
Nuxt helped kill the idea that Vue apps had to choose between lightweight developer happiness and serious production architecture. Once Nitro matured, Nuxt stopped feeling like a nice Vue convenience layer and started feeling like a real deployment framework.