[{"data":1,"prerenderedAt":929},["ShallowReactive",2],{"blog-what-is-nuxt":3},{"id":4,"title":5,"articleType":6,"author":7,"authorSlug":8,"body":9,"date":902,"description":903,"extension":904,"faq":905,"featured":916,"image":917,"meta":918,"navigation":919,"path":920,"readTime":921,"seo":922,"seoTitle":923,"stem":924,"tags":925,"__hash__":928},"blog\u002Fblog\u002Fwhat-is-nuxt.md","What Is Nuxt? The Vue Framework Explained","TechArticle","Pavel Mironov","pavel-mironov",{"type":10,"value":11,"toc":868},"minimark",[12,16,21,24,27,35,39,48,55,58,62,65,80,83,87,95,100,103,114,253,256,260,295,299,312,400,413,417,424,431,435,450,458,461,490,493,497,500,504,512,516,524,528,531,535,542,545,549,561,565,571,575,582,607,611,679,682,689,692,696,699,770,773,777,780,793,797,801,804,808,816,820,823,827,833,837,845,849,852,856,859,864],[13,14,15],"p",{},"What is Nuxt, and why do so many Vue teams reach for it? Vue renders your interface, but a production app needs more: routing, server rendering, data loading, an API layer and a deployment story. Nuxt is the framework that supplies all of that on top of Vue. This guide explains how it works, what teams build with it, and what changed between Nuxt 2, 3 and 4.",[17,18,20],"h2",{"id":19},"what-is-nuxtjs","What Is Nuxt.js?",[13,22,23],{},"Nuxt.js is an open-source framework built on Vue.js for creating full-stack web applications and websites. It adds server-side rendering, static generation, file-based routing, auto-imports and a built-in server engine called Nitro, so a Vue project is ready for production without assembling those pieces yourself.",[13,25,26],{},"That's the short answer to \"what is Nuxt js\". The longer answer is that Nuxt makes decisions you would otherwise make by hand. A plain Vue app needs Vue Router, a build tool, a way to fetch data, a plan for SEO and a server if you want pages rendered before they reach the browser. Nuxt picks sensible defaults for each of those and wires them together.",[13,28,29,30,34],{},"The project started in October 2016 and was originally written as \"Nuxt.js\". The official name today is just Nuxt, but both spellings refer to the same framework. Nuxt is MIT-licensed, has more than 61,000 stars on GitHub, and the ",[31,32,33],"code",{},"nuxt"," package was downloaded about 3.3 million times in the last week of October 2026. The current major version is Nuxt 4.",[17,36,38],{"id":37},"is-nuxt-based-on-vue","Is Nuxt Based on Vue?",[13,40,41,42,47],{},"Yes, Nuxt is based on Vue. It isn't a fork or a separate language. Every page, layout and component in a Nuxt app is a Vue single-file component, written with the same templates, props and Composition API you would use in any Vue project. If you're new to Vue itself, start with our guide ",[43,44,46],"a",{"href":45},"\u002Fblog\u002Fwhat-is-vue-js","What is Vue.js",", then come back here.",[13,49,50,51,54],{},"The relationship is similar to the one between a library and the framework built around it. Vue handles reactivity and rendering components to the DOM. Nuxt decides when and where that rendering happens (on the server, at build time or in the browser) and adds everything around it. It generates Vue Router routes from your files, so there's no hand-written routes array. Vite comes configured, with code splitting per page. Composables such as ",[31,52,53],{},"useFetch"," load data on the server and hand it to the browser, and API endpoints live in the same project, running on Nitro.",[13,56,57],{},"Because Nuxt is Vue underneath, the Vue ecosystem works inside it. Pinia, VueUse, component libraries like PrimeVue and Nuxt UI, and the Vue DevTools all work in Nuxt projects. Moving an existing Vue codebase to Nuxt is mostly about restructuring files and routes, not rewriting components.",[17,59,61],{"id":60},"is-nuxt-a-frontend-framework","Is Nuxt a Frontend Framework?",[13,63,64],{},"If you're asking whether Nuxt is a frontend framework, the honest answer is: mostly, but not only. Nuxt started as a frontend framework for server-rendering Vue apps, and the part most developers touch every day is still the frontend: pages, components and layouts.",[13,66,67,68,71,72,75,76,79],{},"Since Nuxt 3, though, every Nuxt app also ships with a server. That server runs on Nitro, an engine built by the Nuxt team, and it does two jobs. First, it renders your Vue pages to HTML on request. Second, it runs any API routes you add under the ",[31,69,70],{},"server\u002F"," directory. A file like ",[31,73,74],{},"server\u002Fapi\u002Fproducts.get.ts"," becomes a ",[31,77,78],{},"GET \u002Fapi\u002Fproducts"," endpoint, with no Express setup or separate backend repo needed.",[13,81,82],{},"That makes Nuxt a full-stack framework. You can use it as a pure frontend that talks to an existing backend, or as a full-stack app that reads from a database directly. Nitro deploys the same code to Node.js servers, serverless platforms like Vercel and Netlify, or edge runtimes like Cloudflare Workers, using deployment presets.",[17,84,86],{"id":85},"how-nuxtjs-works","How Nuxt.js Works",[13,88,89,90,94],{},"Nuxt js works by taking your Vue files, a config file and a few naming conventions, and building an app that can render on the server, in the browser or at build time. Four pieces do most of the work. If rendering terms are new to you, our article on ",[43,91,93],{"href":92},"\u002Fblog\u002Fvue-js-seo-rendering","SSR, SSG and CSR in Vue"," explains them in depth.",[96,97,99],"h3",{"id":98},"rendering-modes-ssr-ssg-spa-and-hybrid","Rendering Modes: SSR, SSG, SPA and Hybrid",[13,101,102],{},"By default, Nuxt uses universal rendering (SSR): the server runs your Vue components, sends full HTML to the browser, and then Vue \"hydrates\" that HTML so it becomes interactive. Visitors see content immediately, and crawlers get a complete page.",[13,104,105,106,109,110,113],{},"You can change that globally or per route. For static site generation (SSG), ",[31,107,108],{},"nuxt generate"," prerenders every page to HTML at build time. This site, epicmax.co, is a Nuxt 4 app deployed exactly that way. Set ",[31,111,112],{},"ssr: false"," and Nuxt behaves like a classic single-page app (SPA). And with hybrid rendering, route rules give each section of the site its own mode:",[115,116,121],"pre",{"className":117,"code":118,"language":119,"meta":120,"style":120},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  routeRules: {\n    '\u002F': { prerender: true },\n    '\u002Fproducts\u002F**': { swr: 3600 },\n    '\u002Fadmin\u002F**': { ssr: false },\n  },\n})\n","ts","",[31,122,123,147,160,189,214,238,244],{"__ignoreMap":120},[124,125,128,132,135,139,143],"span",{"class":126,"line":127},"line",1,[124,129,131],{"class":130},"s7zQu","export",[124,133,134],{"class":130}," default",[124,136,138],{"class":137},"s2Zo4"," defineNuxtConfig",[124,140,142],{"class":141},"sTEyZ","(",[124,144,146],{"class":145},"sMK4o","{\n",[124,148,150,154,157],{"class":126,"line":149},2,[124,151,153],{"class":152},"swJcz","  routeRules",[124,155,156],{"class":145},":",[124,158,159],{"class":145}," {\n",[124,161,163,166,169,172,174,177,180,182,186],{"class":126,"line":162},3,[124,164,165],{"class":145},"    '",[124,167,168],{"class":152},"\u002F",[124,170,171],{"class":145},"'",[124,173,156],{"class":145},[124,175,176],{"class":145}," {",[124,178,179],{"class":152}," prerender",[124,181,156],{"class":145},[124,183,185],{"class":184},"sfNiH"," true",[124,187,188],{"class":145}," },\n",[124,190,192,194,197,199,201,203,206,208,212],{"class":126,"line":191},4,[124,193,165],{"class":145},[124,195,196],{"class":152},"\u002Fproducts\u002F**",[124,198,171],{"class":145},[124,200,156],{"class":145},[124,202,176],{"class":145},[124,204,205],{"class":152}," swr",[124,207,156],{"class":145},[124,209,211],{"class":210},"sbssI"," 3600",[124,213,188],{"class":145},[124,215,217,219,222,224,226,228,231,233,236],{"class":126,"line":216},5,[124,218,165],{"class":145},[124,220,221],{"class":152},"\u002Fadmin\u002F**",[124,223,171],{"class":145},[124,225,156],{"class":145},[124,227,176],{"class":145},[124,229,230],{"class":152}," ssr",[124,232,156],{"class":145},[124,234,235],{"class":184}," false",[124,237,188],{"class":145},[124,239,241],{"class":126,"line":240},6,[124,242,243],{"class":145},"  },\n",[124,245,247,250],{"class":126,"line":246},7,[124,248,249],{"class":145},"}",[124,251,252],{"class":141},")\n",[13,254,255],{},"Here the homepage is built once, product pages are rendered on demand and cached for an hour, and the admin area renders only in the browser.",[96,257,259],{"id":258},"file-based-routing-and-auto-imports","File-Based Routing and Auto-Imports",[13,261,262,263,266,267,270,271,274,275,278,279,282,283,286,287,290,291,294],{},"Every ",[31,264,265],{},".vue"," file in ",[31,268,269],{},"app\u002Fpages\u002F"," becomes a route. ",[31,272,273],{},"pages\u002Fabout.vue"," is ",[31,276,277],{},"\u002Fabout",", and ",[31,280,281],{},"pages\u002Fblog\u002F[slug].vue"," matches any blog post URL. You don't write a router config. Nuxt also auto-imports components, composables and Vue APIs, so ",[31,284,285],{},"ref",", ",[31,288,289],{},"computed"," and your own ",[31,292,293],{},"useCart()"," are available without import lines, and fully typed.",[96,296,298],{"id":297},"data-fetching","Data Fetching",[13,300,301,303,304,307,308,311],{},[31,302,53],{}," and ",[31,305,306],{},"useAsyncData"," load data during server rendering and send the result to the browser in the page payload, so the request isn't repeated on hydration. ",[31,309,310],{},"$fetch"," handles calls triggered by user actions, such as submitting a form.",[115,313,317],{"className":314,"code":315,"language":316,"meta":120,"style":120},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { data: products, status } = await useFetch('\u002Fapi\u002Fproducts')\n\u003C\u002Fscript>\n","vue",[31,318,319,348,391],{"__ignoreMap":120},[124,320,321,324,327,331,334,337,340,343,345],{"class":126,"line":127},[124,322,323],{"class":145},"\u003C",[124,325,326],{"class":152},"script",[124,328,330],{"class":329},"spNyl"," setup",[124,332,333],{"class":329}," lang",[124,335,336],{"class":145},"=",[124,338,339],{"class":145},"\"",[124,341,119],{"class":342},"sfazB",[124,344,339],{"class":145},[124,346,347],{"class":145},">\n",[124,349,350,353,355,358,360,363,366,369,371,374,377,380,382,384,387,389],{"class":126,"line":149},[124,351,352],{"class":329},"const",[124,354,176],{"class":145},[124,356,357],{"class":152}," data",[124,359,156],{"class":145},[124,361,362],{"class":141}," products",[124,364,365],{"class":145},",",[124,367,368],{"class":141}," status ",[124,370,249],{"class":145},[124,372,373],{"class":145}," =",[124,375,376],{"class":130}," await",[124,378,379],{"class":137}," useFetch",[124,381,142],{"class":141},[124,383,171],{"class":145},[124,385,386],{"class":342},"\u002Fapi\u002Fproducts",[124,388,171],{"class":145},[124,390,252],{"class":141},[124,392,393,396,398],{"class":126,"line":162},[124,394,395],{"class":145},"\u003C\u002F",[124,397,326],{"class":152},[124,399,347],{"class":145},[13,401,402,403,286,406,303,409,412],{},"The composables return reactive ",[31,404,405],{},"data",[31,407,408],{},"status",[31,410,411],{},"error"," refs, and they refetch when a reactive parameter changes. In Nuxt 4, calls that use the same key share one copy of the data, so two components asking for the same product list don't trigger two requests.",[96,414,416],{"id":415},"nitro-server-engine-and-server-routes","Nitro Server Engine and Server Routes",[13,418,419,420,423],{},"Nitro powers both server rendering and your API. Besides the ",[31,421,422],{},"server\u002Fapi"," routes, it provides server middleware, storage drivers and caching. When you build, Nitro outputs a small, self-contained server bundle for the platform you target.",[13,425,426,427,430],{},"Because pages and API routes live in one Nuxt.js project, the types flow between them: when a page calls ",[31,428,429],{},"useFetch('\u002Fapi\u002Fproducts')",", Nuxt knows the shape of the response from the server route. That's one of the reasons teams pick Nuxt.js for full-stack work instead of pairing Vue with a separate Node.js API.",[17,432,434],{"id":433},"key-features-of-the-nuxt-framework","Key Features of the Nuxt Framework",[13,436,437,438,441,442,445,446,449],{},"Developers who ask what is the Nuxt framework really adding on top of Vue usually mean the features beyond rendering. The biggest one is modules. The Nuxt module directory lists more than 300 community and official modules, and most install with one line in ",[31,439,440],{},"nuxt.config.ts",": Nuxt Content for Markdown sites, Nuxt Image for optimized images, Nuxt UI for components, ",[31,443,444],{},"@nuxtjs\u002Fi18n"," for translations, ",[31,447,448],{},"@nuxtjs\u002Fseo"," for sitemaps and structured data.",[13,451,452,453,457],{},"Layers go a step further. A Nuxt app can extend another Nuxt project and inherit its components, pages and config, so teams use ",[43,454,456],{"href":455},"\u002Fblog\u002Fnuxt-layers","Nuxt layers"," to share a design system or a base app across several products.",[13,459,460],{},"The rest you get without asking:",[462,463,464,468,477,484,487],"ul",{},[465,466,467],"li",{},"Generated TypeScript types for routes, auto-imports, API responses and config",[465,469,470,303,473,476],{},[31,471,472],{},"useSeoMeta",[31,474,475],{},"useHead"," for titles, descriptions and Open Graph tags, rendered on the server",[465,478,479,480,483],{},"Code splitting per route, lazy components with the ",[31,481,482],{},"Lazy"," prefix, and payload extraction",[465,485,486],{},"A Vite dev server with hot module replacement, plus Nuxt DevTools for inspecting pages, modules and server routes",[465,488,489],{},"Deployment presets that ship the same code to Node.js, serverless, edge or static hosting",[13,491,492],{},"Is Nuxt a framework in the strict sense? Yes. It controls the app's structure and lifecycle, and you plug your code into its conventions. That's the trade: you give up some freedom in how files are organized, and in return you skip weeks of setup and get a structure every Nuxt developer already knows.",[17,494,496],{"id":495},"what-is-nuxt-used-for","What Is Nuxt Used For?",[13,498,499],{},"So what is Nuxt used for in practice? Mostly for projects where Vue alone would leave you building infrastructure: pages that must rank in search, apps that need fast first loads, and products with both public and private areas. Four kinds of projects come up again and again.",[96,501,503],{"id":502},"e-commerce-storefronts","E-commerce Storefronts",[13,505,506,507,511],{},"Online stores need product pages that load fast and get indexed, plus a cart and checkout that behave like an app. Nuxt does both: server-rendered or cached product pages for search, and client-side interactivity after hydration. It pairs well with headless commerce backends. We walked through building an ",[43,508,510],{"href":509},"\u002Fblog\u002Fhow-to-create-medusa-js-with-nuxt-4","e-commerce store with Medusa and Nuxt 4",", from setup to product management.",[96,513,515],{"id":514},"saas-products-and-dashboards","SaaS Products and Dashboards",[13,517,518,519,523],{},"A typical SaaS product has a public marketing site and a logged-in app. With route rules, one Nuxt project can prerender the marketing pages and render the dashboard client-side only. Server routes handle auth callbacks, webhooks and API proxies without another service. For apps with real-time features, Nuxt works alongside WebSockets and streaming. Our ",[43,520,522],{"href":521},"\u002Fcase-studies\u002Fsocial-network","social network built on Vue and Nuxt"," is one example: a TikTok-inspired platform with video streaming and live messaging.",[96,525,527],{"id":526},"content-sites-blogs-and-docs","Content Sites, Blogs and Docs",[13,529,530],{},"Nuxt Content turns Markdown and YAML files into typed collections you can query from components. Combined with static generation, that gives you a fast site with no database. Documentation sites, company blogs and knowledge bases fit this model well. This blog is one: each article is a Markdown file in the repo, rendered by Nuxt at build time.",[96,532,534],{"id":533},"marketing-sites-and-landing-pages","Marketing Sites and Landing Pages",[13,536,537,538,541],{},"Marketing pages need good Core Web Vitals, clean meta tags and quick changes. Nuxt prerenders them to static HTML, manages SEO tags per page, and with Nuxt Image serves resized, modern image formats. Developers can add new landing pages by dropping a file into ",[31,539,540],{},"pages\u002F"," or a content folder.",[13,543,544],{},"Marketing sites also tend to grow into something bigger: a pricing calculator, a sign-up flow, a customer portal. With Nuxt.js, those features land in the same project instead of a second app, and the static pages stay static while the new parts render on demand.",[17,546,548],{"id":547},"nuxt-2-nuxt-3-and-nuxt-4","Nuxt 2, Nuxt 3 and Nuxt 4",[13,550,551,552,303,556,560],{},"Nuxt has had three major lines in active use. Nuxt 2 was built on Vue 2 and webpack and reached end of life on June 30, 2024. If you still run a Nuxt 2 app, our ",[43,553,555],{"href":554},"\u002Fblog\u002Fnuxt4-migration","Nuxt 4 migration guide",[43,557,559],{"href":558},"\u002Fservices\u002Fnuxt-migration","Nuxt migration services"," cover the upgrade path.",[96,562,564],{"id":563},"what-is-nuxt-3","What Is Nuxt 3?",[13,566,567,568,570],{},"What is Nuxt 3? It was a full rewrite, released on November 16, 2022. It moved Nuxt to Vue 3, the Composition API, Vite and TypeScript, and introduced the Nitro server engine, hybrid rendering and ",[31,569,53],{},". Almost everything modern Nuxt does started in Nuxt 3. Nuxt 3 reached end of life on July 31, 2026, so it no longer gets bug fixes or security patches.",[96,572,574],{"id":573},"what-changed-in-nuxt-4","What Changed in Nuxt 4",[13,576,577,578,581],{},"Nuxt 4 came out on July 15, 2025. After the Nuxt 3 rewrite, this one is deliberately boring, which is a compliment. Nuxt 3 projects could try most of it early by setting ",[31,579,580],{},"compatibilityVersion: 4",", and the old folder layout still works.",[13,583,584,585,588,589,591,592,286,594,597,598,303,600,602,603,606],{},"The visible change is the new ",[31,586,587],{},"app\u002F"," directory. App code moves into ",[31,590,587],{},", separate from ",[31,593,70],{},[31,595,596],{},"content\u002F"," and config, though projects with the old layout keep working. Data fetching got smarter: ",[31,599,53],{},[31,601,306],{}," calls with the same key now share data, clean up when no component uses them, and return a ",[31,604,605],{},"shallowRef"," for better performance. TypeScript now runs as separate projects for app, server and shared code, so types are more accurate, and the CLI starts faster.",[17,608,610],{"id":609},"nuxt-pros-and-cons","Nuxt Pros and Cons",[612,613,614,627],"table",{},[615,616,617],"thead",{},[618,619,620,624],"tr",{},[621,622,623],"th",{},"Pros",[621,625,626],{},"Cons",[628,629,630,639,647,655,663,671],"tbody",{},[618,631,632,636],{},[633,634,635],"td",{},"SSR, SSG and hybrid rendering built in",[633,637,638],{},"More concepts to learn than plain Vue",[618,640,641,644],{},[633,642,643],{},"File-based routing and auto-imports remove boilerplate",[633,645,646],{},"Conventions limit how you structure files",[618,648,649,652],{},[633,650,651],{},"Full-stack: API routes in the same project",[633,653,654],{},"SSR means thinking about server vs browser code",[618,656,657,660],{},[633,658,659],{},"Strong SEO defaults and meta helpers",[633,661,662],{},"Server rendering needs hosting that can run Node.js or serverless functions",[618,664,665,668],{},[633,666,667],{},"Large module ecosystem and Nuxt layers",[633,669,670],{},"Major upgrades take planning on big codebases",[618,672,673,676],{},[633,674,675],{},"Deploys to Node.js, serverless, edge or static hosting",[633,677,678],{},"Smaller hiring pool than Next.js and React",[13,680,681],{},"The pros matter most for public-facing apps. If search traffic, first-load speed or sharing links on social media matter to your product, Nuxt gives you server rendering without building your own SSR setup, and that alone can save weeks.",[13,683,684,685,688],{},"The cons are real but manageable. SSR adds a category of bugs that pure client apps don't have: code that touches ",[31,686,687],{},"window"," during server rendering, or hydration mismatches when the server and browser render different HTML. Teams new to Nuxt hit these early, then learn the patterns. Auto-imports can also make it less obvious where a function comes from, though the generated types and IDE support close most of that gap.",[13,690,691],{},"For an internal tool behind a login with no SEO needs, plain Vue with Vite is often simpler, and Nuxt's extra concepts don't pay off. For anything public, Nuxt is usually the better starting point.",[17,693,695],{"id":694},"how-to-get-started-with-nuxt","How to Get Started With Nuxt",[13,697,698],{},"You can have a Nuxt app running in a few minutes:",[700,701,702,705,712,725,735,746,760],"ol",{},[465,703,704],{},"Install a current LTS version of Node.js.",[465,706,707,708,711],{},"Run ",[31,709,710],{},"npm create nuxt@latest my-app"," and follow the prompts to pick a package manager and optional modules.",[465,713,707,714,303,717,720,721,724],{},[31,715,716],{},"cd my-app",[31,718,719],{},"npm run dev",". The app opens at ",[31,722,723],{},"http:\u002F\u002Flocalhost:3000",".",[465,726,727,728,731,732,734],{},"Create ",[31,729,730],{},"app\u002Fpages\u002Fabout.vue"," with a template. The ",[31,733,277],{}," route exists as soon as you save.",[465,736,737,738,741,742,745],{},"Add ",[31,739,740],{},"server\u002Fapi\u002Fhello.ts"," that returns JSON, then call ",[31,743,744],{},"const { data } = await useFetch('\u002Fapi\u002Fhello')"," in a page.",[465,747,748,749,752,753,286,756,759],{},"Install official modules with ",[31,750,751],{},"npx nuxt module add image"," (or ",[31,754,755],{},"content",[31,757,758],{},"ui",").",[465,761,707,762,765,766,769],{},[31,763,764],{},"npm run build"," for a server build or ",[31,767,768],{},"npm run generate"," for a static site, then deploy to your host.",[13,771,772],{},"That's the whole loop. The official docs at nuxt.com go deeper on each step, and Nuxt DevTools shows you what Nuxt generated behind the scenes.",[17,774,776],{"id":775},"conclusion","Conclusion",[13,778,779],{},"Nuxt is the framework that turns Vue into a complete way to build and ship web apps. It adds server rendering, routing, data fetching and a backend layer, and it lets each route pick the rendering mode that suits it. For public sites, storefronts and SaaS products, that usually means faster pages, better SEO and less setup.",[13,781,782,783,787,788,792],{},"At Epicmax, we have built client projects with Nuxt since 2017, and we are an ",[43,784,786],{"href":785},"\u002Fblog\u002Fepicmax-official-nuxt-partner","official Nuxt partner",". If you're planning a new app or an upgrade, our ",[43,789,791],{"href":790},"\u002Fservices\u002Fnuxt-development","Nuxt development services"," can help.",[17,794,796],{"id":795},"faqs","FAQs",[96,798,800],{"id":799},"is-nuxt-a-framework-or-a-library","Is Nuxt a framework or a library?",[13,802,803],{},"Nuxt is a framework. Vue is the library that renders components, and Nuxt is the framework around it that decides how the app is structured, rendered, routed and deployed. You write Vue components, and Nuxt calls them at the right time.",[96,805,807],{"id":806},"is-nuxt-the-same-as-nextjs","Is Nuxt the same as Next.js?",[13,809,810,811,815],{},"No. Next.js is a React framework maintained by Vercel, and Nuxt is a Vue framework maintained by its own open-source team. They solve the same problems (server rendering, routing, full-stack features), but you write React with Next.js and Vue with Nuxt. Our ",[43,812,814],{"href":813},"\u002Fblog\u002Fvue-js-vs-next-js","Nuxt vs Next.js comparison"," covers the differences in detail.",[96,817,819],{"id":818},"do-i-need-to-know-vue-to-use-nuxt","Do I need to know Vue to use Nuxt?",[13,821,822],{},"Yes, at least the basics. Every page and component in a Nuxt app is a Vue single-file component, so you need templates, props and the Composition API. You don't need Vue Router or a separate build setup first, because Nuxt handles those for you.",[96,824,826],{"id":825},"can-nuxt-be-used-as-a-backend","Can Nuxt be used as a backend?",[13,828,829,830,832],{},"For many apps, yes. Files in the ",[31,831,70],{}," directory become API endpoints that run on the Nitro server engine, so you can read a database, call third-party APIs and handle forms without a separate service. Large systems with heavy business logic usually still keep a dedicated backend and use Nuxt as the frontend and API layer in front of it.",[96,834,836],{"id":835},"is-nuxt-good-for-seo","Is Nuxt good for SEO?",[13,838,839,840,303,842,844],{},"Yes. With server-side rendering or prerendering, search engines and AI crawlers get full HTML on the first request instead of an empty page that needs JavaScript. Nuxt also ships ",[31,841,472],{},[31,843,475],{}," for titles, descriptions and Open Graph tags, and official modules add sitemaps and structured data.",[96,846,848],{"id":847},"is-nuxt-free-and-open-source","Is Nuxt free and open source?",[13,850,851],{},"Yes. Nuxt is released under the MIT license, so you can use it in commercial projects for free. The source code lives on GitHub in the nuxt\u002Fnuxt repository, which has more than 61,000 stars.",[96,853,855],{"id":854},"who-maintains-nuxt","Who maintains Nuxt?",[13,857,858],{},"Nuxt is maintained by an open-source core team led by Daniel Roe, with more than 400 contributors on GitHub. NuxtLabs, the company founded by Nuxt co-creator Sébastien Chopin, joined Vercel in July 2025, and Nuxt stayed open source under the MIT license.",[860,861],"blog-button",{"label":862,"to":863},"Talk to a Nuxt expert","https:\u002F\u002Fcalendar.app.google\u002FXwRzASZitZRSVLxq6",[865,866,867],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":120,"searchDepth":162,"depth":162,"links":869},[870,871,872,873,879,880,886,890,891,892,893],{"id":19,"depth":149,"text":20},{"id":37,"depth":149,"text":38},{"id":60,"depth":149,"text":61},{"id":85,"depth":149,"text":86,"children":874},[875,876,877,878],{"id":98,"depth":162,"text":99},{"id":258,"depth":162,"text":259},{"id":297,"depth":162,"text":298},{"id":415,"depth":162,"text":416},{"id":433,"depth":149,"text":434},{"id":495,"depth":149,"text":496,"children":881},[882,883,884,885],{"id":502,"depth":162,"text":503},{"id":514,"depth":162,"text":515},{"id":526,"depth":162,"text":527},{"id":533,"depth":162,"text":534},{"id":547,"depth":149,"text":548,"children":887},[888,889],{"id":563,"depth":162,"text":564},{"id":573,"depth":162,"text":574},{"id":609,"depth":149,"text":610},{"id":694,"depth":149,"text":695},{"id":775,"depth":149,"text":776},{"id":795,"depth":149,"text":796,"children":894},[895,896,897,898,899,900,901],{"id":799,"depth":162,"text":800},{"id":806,"depth":162,"text":807},{"id":818,"depth":162,"text":819},{"id":825,"depth":162,"text":826},{"id":835,"depth":162,"text":836},{"id":847,"depth":162,"text":848},{"id":854,"depth":162,"text":855},"2026-10-30","Is Nuxt based on Vue? Yes. Learn how the Nuxt framework works, what Nuxt is used for, its pros and cons, and what changed in Nuxt 3 and 4.","md",[906,907,909,910,912,914,915],{"question":800,"answer":803},{"question":807,"answer":908},"No. Next.js is a React framework maintained by Vercel, and Nuxt is a Vue framework maintained by its own open-source team. They solve the same problems (server rendering, routing, full-stack features), but you write React with Next.js and Vue with Nuxt. Our Nuxt vs Next.js comparison covers the differences in detail.",{"question":819,"answer":822},{"question":826,"answer":911},"For many apps, yes. Files in the server\u002F directory become API endpoints that run on the Nitro server engine, so you can read a database, call third-party APIs and handle forms without a separate service. Large systems with heavy business logic usually still keep a dedicated backend and use Nuxt as the frontend and API layer in front of it.",{"question":836,"answer":913},"Yes. With server-side rendering or prerendering, search engines and AI crawlers get full HTML on the first request instead of an empty page that needs JavaScript. Nuxt also ships useSeoMeta and useHead for titles, descriptions and Open Graph tags, and official modules add sitemaps and structured data.",{"question":848,"answer":851},{"question":855,"answer":858},false,"\u002Fimages\u002Fblog\u002Fwhat-is-nuxt\u002Fcard.png",{},true,"\u002Fblog\u002Fwhat-is-nuxt","12 min read",{"title":5,"description":903},"What Is Nuxt.js? A Guide to the Nuxt Framework","blog\u002Fwhat-is-nuxt",[926,927],"Nuxt","Vue.js","l9K1lRBnDSY1YK6C7KjZrPP1iXabDicckDqp-lxlmOg",1793582587345]