[{"data":1,"prerenderedAt":1639},["ShallowReactive",2],{"navigation":3,"-blog-v3-beta":407},[4,93,226,232,392,404],{"title":5,"path":6,"stem":7,"children":8,"icon":92},"","\u002Fdocs","1.docs\u002F1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77,82,87],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","\u002Fdocs\u002Fquick-start","1.docs\u002F2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","\u002Fdocs\u002Frenderer","1.docs\u002F4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","\u002Fdocs\u002Frouting","1.docs\u002F5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","\u002Fdocs\u002Fassets","1.docs\u002F50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","\u002Fdocs\u002Fconfiguration","1.docs\u002F50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","\u002Fdocs\u002Fdatabase","1.docs\u002F50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","\u002Fdocs\u002Flifecycle","1.docs\u002F50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"OpenAPI","\u002Fdocs\u002Fopenapi","1.docs\u002F50.openapi","ri:contract-line",{"title":53,"path":54,"stem":55,"icon":56},"Plugins","\u002Fdocs\u002Fplugins","1.docs\u002F50.plugins","ri:plug-line",{"title":58,"path":59,"stem":60,"icon":61},"Tasks","\u002Fdocs\u002Ftasks","1.docs\u002F50.tasks","codicon:run-all",{"title":63,"path":64,"stem":65,"icon":66},"WebSocket","\u002Fdocs\u002Fwebsocket","1.docs\u002F50.websocket","ri:broadcast-fill",{"title":68,"path":69,"stem":70,"icon":71},"Server Entry","\u002Fdocs\u002Fserver-entry","1.docs\u002F6.server-entry","ri:server-line",{"title":73,"path":74,"stem":75,"icon":76},"Cache","\u002Fdocs\u002Fcache","1.docs\u002F7.cache","ri:speed-line",{"title":78,"path":79,"stem":80,"icon":81},"KV Storage","\u002Fdocs\u002Fstorage","1.docs\u002F8.storage","carbon:datastore",{"title":83,"path":84,"stem":85,"icon":86},"Migration Guide","\u002Fdocs\u002Fmigration","1.docs\u002F99.migration","ri:arrow-right-up-line",{"title":88,"path":89,"stem":90,"icon":91},"Nightly Channel","\u002Fdocs\u002Fnightly","1.docs\u002F99.nightly","ri:moon-fill","i-lucide-book-open",{"title":94,"path":95,"stem":96,"children":97,"icon":99},"Deploy","\u002Fdeploy","2.deploy\u002F0.index",[98,100,121],{"title":94,"path":95,"stem":96,"icon":99},"ri:upload-cloud-2-line",{"title":101,"path":102,"stem":103,"children":104,"page":120},"Runtimes","\u002Fdeploy\u002Fruntimes","2.deploy\u002F10.runtimes",[105,110,115],{"title":106,"path":107,"stem":108,"icon":109},"Node.js","\u002Fdeploy\u002Fruntimes\u002Fnode","2.deploy\u002F10.runtimes\u002F1.node","akar-icons:node-fill",{"title":111,"path":112,"stem":113,"icon":114},"Bun","\u002Fdeploy\u002Fruntimes\u002Fbun","2.deploy\u002F10.runtimes\u002Fbun","simple-icons:bun",{"title":116,"path":117,"stem":118,"icon":119},"Deno","\u002Fdeploy\u002Fruntimes\u002Fdeno","2.deploy\u002F10.runtimes\u002Fdeno","simple-icons:deno",false,{"title":122,"path":123,"stem":124,"children":125,"page":120},"Providers","\u002Fdeploy\u002Fproviders","2.deploy\u002F20.providers",[126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222],{"title":127,"path":128,"stem":129},"Alwaysdata","\u002Fdeploy\u002Fproviders\u002Falwaysdata","2.deploy\u002F20.providers\u002Falwaysdata",{"title":131,"path":132,"stem":133},"AWS Lambda","\u002Fdeploy\u002Fproviders\u002Faws","2.deploy\u002F20.providers\u002Faws",{"title":135,"path":136,"stem":137},"AWS Amplify","\u002Fdeploy\u002Fproviders\u002Faws-amplify","2.deploy\u002F20.providers\u002Faws-amplify",{"title":139,"path":140,"stem":141},"Azure","\u002Fdeploy\u002Fproviders\u002Fazure","2.deploy\u002F20.providers\u002Fazure",{"title":143,"path":144,"stem":145},"Cleavr","\u002Fdeploy\u002Fproviders\u002Fcleavr","2.deploy\u002F20.providers\u002Fcleavr",{"title":147,"path":148,"stem":149},"Cloudflare","\u002Fdeploy\u002Fproviders\u002Fcloudflare","2.deploy\u002F20.providers\u002Fcloudflare",{"title":151,"path":152,"stem":153},"Deno Deploy","\u002Fdeploy\u002Fproviders\u002Fdeno-deploy","2.deploy\u002F20.providers\u002Fdeno-deploy",{"title":155,"path":156,"stem":157},"DigitalOcean","\u002Fdeploy\u002Fproviders\u002Fdigitalocean","2.deploy\u002F20.providers\u002Fdigitalocean",{"title":159,"path":160,"stem":161},"EdgeOne Pages","\u002Fdeploy\u002Fproviders\u002Fedgeone","2.deploy\u002F20.providers\u002Fedgeone",{"title":163,"path":164,"stem":165},"Firebase","\u002Fdeploy\u002Fproviders\u002Ffirebase","2.deploy\u002F20.providers\u002Ffirebase",{"title":167,"path":168,"stem":169},"Flightcontrol","\u002Fdeploy\u002Fproviders\u002Fflightcontrol","2.deploy\u002F20.providers\u002Fflightcontrol",{"title":171,"path":172,"stem":173},"Genezio","\u002Fdeploy\u002Fproviders\u002Fgenezio","2.deploy\u002F20.providers\u002Fgenezio",{"title":175,"path":176,"stem":177},"GitHub Pages","\u002Fdeploy\u002Fproviders\u002Fgithub-pages","2.deploy\u002F20.providers\u002Fgithub-pages",{"title":179,"path":180,"stem":181},"GitLab Pages","\u002Fdeploy\u002Fproviders\u002Fgitlab-pages","2.deploy\u002F20.providers\u002Fgitlab-pages",{"title":183,"path":184,"stem":185},"Heroku","\u002Fdeploy\u002Fproviders\u002Fheroku","2.deploy\u002F20.providers\u002Fheroku",{"title":187,"path":188,"stem":189},"IIS","\u002Fdeploy\u002Fproviders\u002Fiis","2.deploy\u002F20.providers\u002Fiis",{"title":191,"path":192,"stem":193},"Koyeb","\u002Fdeploy\u002Fproviders\u002Fkoyeb","2.deploy\u002F20.providers\u002Fkoyeb",{"title":195,"path":196,"stem":197},"Netlify","\u002Fdeploy\u002Fproviders\u002Fnetlify","2.deploy\u002F20.providers\u002Fnetlify",{"title":199,"path":200,"stem":201},"Platform.sh","\u002Fdeploy\u002Fproviders\u002Fplatform-sh","2.deploy\u002F20.providers\u002Fplatform-sh",{"title":203,"path":204,"stem":205},"Render.com","\u002Fdeploy\u002Fproviders\u002Frender","2.deploy\u002F20.providers\u002Frender",{"title":207,"path":208,"stem":209},"StormKit","\u002Fdeploy\u002Fproviders\u002Fstormkit","2.deploy\u002F20.providers\u002Fstormkit",{"title":211,"path":212,"stem":213},"Vercel","\u002Fdeploy\u002Fproviders\u002Fvercel","2.deploy\u002F20.providers\u002Fvercel",{"title":215,"path":216,"stem":217},"Zeabur","\u002Fdeploy\u002Fproviders\u002Fzeabur","2.deploy\u002F20.providers\u002Fzeabur",{"title":219,"path":220,"stem":221},"Zephyr Cloud","\u002Fdeploy\u002Fproviders\u002Fzephyr","2.deploy\u002F20.providers\u002Fzephyr",{"title":223,"path":224,"stem":225},"Zerops","\u002Fdeploy\u002Fproviders\u002Fzerops","2.deploy\u002F20.providers\u002Fzerops",{"title":227,"path":228,"stem":229,"children":230,"icon":36},"Config","\u002Fconfig","3.config\u002F0.index",[231],{"title":227,"path":228,"stem":229,"icon":36},{"title":233,"path":234,"stem":235,"children":236,"icon":238},"Examples","\u002Fexamples","4.examples\u002F0.index",[237,239,244,249,254,259,263,268,273,278,283,288,293,297,302,306,310,315,320,325,330,335,340,345,350,355,360,364,369,374,378,383,388],{"title":233,"path":234,"stem":235,"icon":238},"i-lucide-folder-code",{"title":240,"path":241,"stem":242,"icon":243},"API Routes","\u002Fexamples\u002Fapi-routes","4.examples\u002Fapi-routes","i-lucide-route",{"title":245,"path":246,"stem":247,"icon":248},"Auto Imports","\u002Fexamples\u002Fauto-imports","4.examples\u002Fauto-imports","i-lucide-import",{"title":250,"path":251,"stem":252,"icon":253},"Cached Handler","\u002Fexamples\u002Fcached-handler","4.examples\u002Fcached-handler","i-lucide-clock",{"title":255,"path":256,"stem":257,"icon":258},"Custom Error Handler","\u002Fexamples\u002Fcustom-error-handler","4.examples\u002Fcustom-error-handler","i-lucide-alert-circle",{"title":38,"path":260,"stem":261,"icon":262},"\u002Fexamples\u002Fdatabase","4.examples\u002Fdatabase","i-lucide-database",{"title":264,"path":265,"stem":266,"icon":267},"Elysia","\u002Fexamples\u002Felysia","4.examples\u002Felysia","i-skill-icons-elysia-dark",{"title":269,"path":270,"stem":271,"icon":272},"Express","\u002Fexamples\u002Fexpress","4.examples\u002Fexpress","i-simple-icons-express",{"title":274,"path":275,"stem":276,"icon":277},"Fastify","\u002Fexamples\u002Ffastify","4.examples\u002Ffastify","i-simple-icons-fastify",{"title":279,"path":280,"stem":281,"icon":282},"Hello World","\u002Fexamples\u002Fhello-world","4.examples\u002Fhello-world","i-lucide-sparkles",{"title":284,"path":285,"stem":286,"icon":287},"Hono","\u002Fexamples\u002Fhono","4.examples\u002Fhono","i-logos-hono",{"title":289,"path":290,"stem":291,"icon":292},"Import Alias","\u002Fexamples\u002Fimport-alias","4.examples\u002Fimport-alias","i-lucide-at-sign",{"title":294,"path":295,"stem":296,"icon":46},"Middleware","\u002Fexamples\u002Fmiddleware","4.examples\u002Fmiddleware",{"title":298,"path":299,"stem":300,"icon":301},"Mono JSX","\u002Fexamples\u002Fmono-jsx","4.examples\u002Fmono-jsx","i-lucide-brackets",{"title":303,"path":304,"stem":305,"icon":301},"Nano JSX","\u002Fexamples\u002Fnano-jsx","4.examples\u002Fnano-jsx",{"title":53,"path":307,"stem":308,"icon":309},"\u002Fexamples\u002Fplugins","4.examples\u002Fplugins","i-lucide-plug",{"title":311,"path":312,"stem":313,"icon":314},"Custom Renderer","\u002Fexamples\u002Frenderer","4.examples\u002Frenderer","i-lucide-code",{"title":316,"path":317,"stem":318,"icon":319},"Runtime Config","\u002Fexamples\u002Fruntime-config","4.examples\u002Fruntime-config","i-lucide-settings",{"title":321,"path":322,"stem":323,"icon":324},"Server Fetch","\u002Fexamples\u002Fserver-fetch","4.examples\u002Fserver-fetch","i-lucide-arrow-right-left",{"title":326,"path":327,"stem":328,"icon":329},"Shiki","\u002Fexamples\u002Fshiki","4.examples\u002Fshiki","i-lucide-highlighter",{"title":331,"path":332,"stem":333,"icon":334},"Takumi","\u002Fexamples\u002Ftakumi","4.examples\u002Ftakumi","i-lucide-image",{"title":336,"path":337,"stem":338,"icon":339},"Virtual Routes","\u002Fexamples\u002Fvirtual-routes","4.examples\u002Fvirtual-routes","i-lucide-box",{"title":341,"path":342,"stem":343,"icon":344},"Vite Nitro Plugin","\u002Fexamples\u002Fvite-nitro-plugin","4.examples\u002Fvite-nitro-plugin","i-logos-vitejs",{"title":346,"path":347,"stem":348,"icon":349},"Vite RSC","\u002Fexamples\u002Fvite-rsc","4.examples\u002Fvite-rsc","i-logos-react",{"title":351,"path":352,"stem":353,"icon":354},"Vite SSR HTML","\u002Fexamples\u002Fvite-ssr-html","4.examples\u002Fvite-ssr-html","i-logos-html-5",{"title":356,"path":357,"stem":358,"icon":359},"SSR with Preact","\u002Fexamples\u002Fvite-ssr-preact","4.examples\u002Fvite-ssr-preact","i-logos-preact",{"title":361,"path":362,"stem":363,"icon":349},"SSR with React","\u002Fexamples\u002Fvite-ssr-react","4.examples\u002Fvite-ssr-react",{"title":365,"path":366,"stem":367,"icon":368},"SSR with SolidJS","\u002Fexamples\u002Fvite-ssr-solid","4.examples\u002Fvite-ssr-solid","i-logos-solidjs-icon",{"title":370,"path":371,"stem":372,"icon":373},"SSR with TanStack Router","\u002Fexamples\u002Fvite-ssr-tsr-react","4.examples\u002Fvite-ssr-tsr-react","i-simple-icons-tanstack",{"title":375,"path":376,"stem":377,"icon":373},"SSR with TanStack Start","\u002Fexamples\u002Fvite-ssr-tss-react","4.examples\u002Fvite-ssr-tss-react",{"title":379,"path":380,"stem":381,"icon":382},"SSR with Vue Router","\u002Fexamples\u002Fvite-ssr-vue-router","4.examples\u002Fvite-ssr-vue-router","i-logos-vue",{"title":384,"path":385,"stem":386,"icon":387},"Vite + tRPC","\u002Fexamples\u002Fvite-trpc","4.examples\u002Fvite-trpc","i-simple-icons-trpc",{"title":63,"path":389,"stem":390,"icon":391},"\u002Fexamples\u002Fwebsocket","4.examples\u002Fwebsocket","i-lucide-radio",{"title":393,"path":394,"stem":395,"children":396},"Blog","\u002Fblog","9.blog",[397,400],{"title":393,"path":394,"stem":398,"icon":399},"9.blog\u002Findex","i-lucide-file-text",{"title":401,"path":402,"stem":403,"icon":399},"Nitro v3 Beta is here!","\u002Fblog\u002Fv3-beta","9.blog\u002F1.v3-beta",{"title":5,"path":405,"stem":406},"\u002F","index",{"id":408,"title":401,"body":409,"description":1627,"extension":1628,"meta":1629,"navigation":1636,"path":402,"seo":1637,"stem":403,"__hash__":1638},"content\u002F9.blog\u002F1.v3-beta.md",{"type":410,"value":411,"toc":1605,"icon":399},"minimark",[412,417,429,444,483,491,495,520,523,538,544,548,556,645,652,682,698,702,705,727,741,747,760,767,828,835,839,846,944,948,986,989,1074,1077,1154,1157,1172,1176,1183,1200,1204,1213,1273,1276,1280,1283,1350,1352,1355,1363,1420,1422,1426,1432,1445,1448,1452,1455,1458,1460,1464,1471,1479,1488,1492,1496,1500,1507,1511,1514,1571,1577,1580,1583,1601],[413,414,416],"h2",{"id":415},"a-brief-history","A Brief History",[418,419,420,421,428],"p",{},"Nitro started as the server engine for ",[422,423,427],"a",{"href":424,"rel":425},"https:\u002F\u002Fnuxt.com",[426],"nofollow","Nuxt 3",", designed to solve a specific problem: deployment-agnostic servers.\nOver time, Nitro grew beyond Nuxt. It became the foundation for many meta-frameworks and a toolkit for building standalone servers.",[418,430,431,432,437,438,443],{},"With Nitro v3, we took the opportunity to rethink the fundamentals. leaner APIs, Web standards, first-class ",[422,433,436],{"href":434,"rel":435},"https:\u002F\u002Frolldown.rs\u002F",[426],"Rolldown"," and ",[422,439,442],{"href":440,"rel":441},"https:\u002F\u002Fvite.dev\u002F",[426],"Vite v8"," integration, and a better experience for both humans and agents (more on that later!)",[418,445,446,447,452,453,458,459,464,465,470,471,476,477,482],{},"Since we quietly announced v3 ",[422,448,451],{"href":449,"rel":450},"https:\u002F\u002Fgithub.com\u002Fnitrojs\u002Fnitro\u002Freleases\u002Ftag\u002Fv3.0.1-alpha.0",[426],"alpha.0"," (11 Oct 2025) at the first ",[422,454,457],{"href":455,"rel":456},"https:\u002F\u002Fviteconf.amsterdam\u002F",[426],"Vite Conf",", Nitro v3 has been adopted by many users (",[422,460,463],{"href":461,"rel":462},"https:\u002F\u002Fnpmtrends.com\u002Fnitro-vs-nitro-nightly",[426],"~280k"," weekly downloads!) and refined through amazing contributions and feedback. including ",[422,466,469],{"href":467,"rel":468},"https:\u002F\u002Ftanstack.com\u002Fstart\u002Flatest\u002Fdocs\u002Fframework\u002Freact\u002Fguide\u002Fhosting#nitro",[426],"Tanstack Start",", ",[422,472,475],{"href":473,"rel":474},"https:\u002F\u002Fuseworkflow.dev\u002Fdocs\u002Fgetting-started",[426],"Vercel Workflows",", and production apps like ",[422,478,481],{"href":479,"rel":480},"https:\u002F\u002Ft3.chat\u002F",[426],"T3Chat",".",[418,484,485,486,490],{},"A huge thanks to the VoidZero (Vite and Rolldown), Nuxt (",[422,487,489],{"href":488},"#nuxt-v5","v5 is coming!",") and TanStack Start teams and every contributor who helped bring Nitro v3 to this milestone. ❤️",[413,492,494],{"id":493},"why-build-servers","Why Build Servers?",[418,496,497,498,502,503,506,507,510,511,514,515,519],{},"We don't ship raw source files to the browser. We use build tools because they solve real problems: ",[499,500,501],"strong",{},"HMR"," for instant feedback, ",[499,504,505],{},"code splitting"," to load only what a route needs, ",[499,508,509],{},"tree shaking"," to eliminate dead code, and ",[499,512,513],{},"minification"," for smaller payloads. Tools like Webpack and then ",[422,516,518],{"href":440,"rel":517},[426],"Vite"," transformed frontend development from painful to productive.",[418,521,522],{},"But frontend apps don't exist in isolation, they need APIs, databases, authentication, real-time data. They need a server.",[418,524,525,526,529,530,533,534,537],{},"With the rise of serverless and edge computing, the server side now faces the same constraints the frontend solved years ago. ",[499,527,528],{},"Cold starts"," mean every millisecond of startup matters. ",[499,531,532],{},"Memory limits"," are strict — bloated dependencies can push you over. ",[499,535,536],{},"Bundle size"," directly impacts deploy speed and boot time. And your code needs to run everywhere: Node.js, Deno, Bun, Cloudflare Workers, Vercel, etc. Yet most server frameworks still ship unoptimized, unbundled code, assuming a long-running process where none of this matters.",[418,539,540,541],{},"Nitro brings the build-tool philosophy to the backend. The same great DX you expect from frontend tooling: HMR for fast iteration and optimized builds powered by Rolldown with tree-shaken production output that performs as close to bare-metal as possible. ",[499,542,543],{},"One codebase, any runtime, any platform.",[413,545,547],{"id":546},"first-class-vite-integration","⚡ First-Class Vite Integration",[418,549,550,551,555],{},"Nitro now has a native ",[422,552,518],{"href":553,"rel":554},"https:\u002F\u002Fvite.dev",[426]," plugin to build full stack apps.",[557,558,563],"pre",{"className":559,"code":560,"filename":561,"language":562,"meta":5,"style":5},"language-ts shiki shiki-themes github-light github-dark github-dark","import { defineConfig } from \"vite\";\nimport { nitro } from \"nitro\u002Fvite\";\n\nexport default defineConfig({\n  plugins: [nitro()],\n});\n","vite.config.ts","ts",[564,565,566,589,604,611,627,639],"code",{"__ignoreMap":5},[567,568,571,575,579,582,586],"span",{"class":569,"line":570},"line",1,[567,572,574],{"class":573},"so5gQ","import",[567,576,578],{"class":577},"slsVL"," { defineConfig } ",[567,580,581],{"class":573},"from",[567,583,585],{"class":584},"sfrk1"," \"vite\"",[567,587,588],{"class":577},";\n",[567,590,592,594,597,599,602],{"class":569,"line":591},2,[567,593,574],{"class":573},[567,595,596],{"class":577}," { nitro } ",[567,598,581],{"class":573},[567,600,601],{"class":584}," \"nitro\u002Fvite\"",[567,603,588],{"class":577},[567,605,607],{"class":569,"line":606},3,[567,608,610],{"emptyLinePlaceholder":609},true,"\n",[567,612,614,617,620,624],{"class":569,"line":613},4,[567,615,616],{"class":573},"export",[567,618,619],{"class":573}," default",[567,621,623],{"class":622},"shcOC"," defineConfig",[567,625,626],{"class":577},"({\n",[567,628,630,633,636],{"class":569,"line":629},5,[567,631,632],{"class":577},"  plugins: [",[567,634,635],{"class":622},"nitro",[567,637,638],{"class":577},"()],\n",[567,640,642],{"class":569,"line":641},6,[567,643,644],{"class":577},"});\n",[418,646,647,648,651],{},"Adding ",[564,649,650],{},"nitro()"," to your Vite apps gives you:",[653,654,655,662,668],"ul",{},[656,657,658,661],"li",{},[499,659,660],{},"API routes"," via filesystem routing",[656,663,664,667],{},[499,665,666],{},"Server-side rendering"," integrated with your frontend build",[656,669,670,673,674,677,678,681],{},[499,671,672],{},"A production server"," — a single ",[564,675,676],{},"vite build"," produces an optimized ",[564,679,680],{},".output\u002F"," folder with both frontend and backend, ready to deploy",[418,683,684,685,688,689,470,692,437,695,482],{},"This means you can add a full backend to any Vite project — See ",[422,686,687],{"href":234},"examples"," with ",[422,690,691],{"href":362},"React",[422,693,694],{"href":380},"Vue",[422,696,697],{"href":366},"Solid.js",[413,699,701],{"id":700},"performance-by-default-zero-bloat","🚀 Performance by Default, Zero Bloat",[418,703,704],{},"Nitro compiles your routes at build time. There is no runtime router — each route loads on demand. Only the code needed to handle a specific request is loaded and executed.",[418,706,707,708,711,712,715,716,721,722,482],{},"Minimal server bundle built with the ",[564,709,710],{},"standard"," preset is less than ",[564,713,714],{},"10kB",", can be served with ",[422,717,720],{"href":718,"rel":719},"https:\u002F\u002Fsrvx.h3.dev\u002F",[426],"srvx"," at close to native speeds, and includes all the good features from ",[422,723,726],{"href":724,"rel":725},"https:\u002F\u002Fh3.dev\u002F",[426],"H3",[418,728,729,730,735,736,482],{},"We have also significantly reduced the number of dependencies, down to ",[422,731,734],{"href":732,"rel":733},"https:\u002F\u002Fnpmgraph.js.org\u002F?q=nitro-nightly",[426],"less than 20"," from ",[422,737,740],{"href":738,"rel":739},"https:\u002F\u002Fnpmgraph.js.org\u002F?q=nitropack",[426],"321 dependencies",[413,742,744,745],{"id":743},"️-new-identity-nitro","🖌️ New Identity: ",[564,746,635],{},[418,748,749,750,756,757,482],{},"Nitro v3 ships under a new NPM package: ",[422,751,754],{"href":752,"rel":753},"https:\u002F\u002Fnpmx.dev\u002Fpackage\u002Fnitro",[426],[564,755,635],{},", replacing the legacy ",[564,758,759],{},"nitropack",[418,761,762,763,766],{},"All imports now use clean ",[564,764,765],{},"nitro\u002F*"," subpaths:",[557,768,770],{"className":559,"code":769,"language":562,"meta":5,"style":5},"import { defineNitroConfig } from \"nitro\u002Fconfig\";\nimport { defineHandler } from \"nitro\";\nimport { useStorage } from \"nitro\u002Fstorage\";\nimport { useDatabase } from \"nitro\u002Fdatabase\";\n",[564,771,772,786,800,814],{"__ignoreMap":5},[567,773,774,776,779,781,784],{"class":569,"line":570},[567,775,574],{"class":573},[567,777,778],{"class":577}," { defineNitroConfig } ",[567,780,581],{"class":573},[567,782,783],{"class":584}," \"nitro\u002Fconfig\"",[567,785,588],{"class":577},[567,787,788,790,793,795,798],{"class":569,"line":591},[567,789,574],{"class":573},[567,791,792],{"class":577}," { defineHandler } ",[567,794,581],{"class":573},[567,796,797],{"class":584}," \"nitro\"",[567,799,588],{"class":577},[567,801,802,804,807,809,812],{"class":569,"line":606},[567,803,574],{"class":573},[567,805,806],{"class":577}," { useStorage } ",[567,808,581],{"class":573},[567,810,811],{"class":584}," \"nitro\u002Fstorage\"",[567,813,588],{"class":577},[567,815,816,818,821,823,826],{"class":569,"line":613},[567,817,574],{"class":573},[567,819,820],{"class":577}," { useDatabase } ",[567,822,581],{"class":573},[567,824,825],{"class":584}," \"nitro\u002Fdatabase\"",[567,827,588],{"class":577},[418,829,830,831,834],{},"No more deep ",[564,832,833],{},"nitropack\u002Fruntime\u002F*"," paths, plus, you can import nitro subpaths outside of builder useful for unit testing.",[413,836,838],{"id":837},"bring-your-own-framework","🔧 Bring Your Own Framework",[418,840,841,842,845],{},"Nitro v3 is not opinionated about your HTTP layer. You can use the built-in filesystem routing, or take full control with a ",[564,843,844],{},"server.ts"," entry file and bring any framework you prefer:",[557,847,849],{"className":559,"code":848,"filename":844,"language":562,"meta":5,"style":5},"import { Hono } from \"hono\";\n\nconst app = new Hono();\napp.get(\"\u002F\", (c) => c.text(\"Hello from Hono!\"));\n\nexport default app;\n",[564,850,851,865,869,890,931,935],{"__ignoreMap":5},[567,852,853,855,858,860,863],{"class":569,"line":570},[567,854,574],{"class":573},[567,856,857],{"class":577}," { Hono } ",[567,859,581],{"class":573},[567,861,862],{"class":584}," \"hono\"",[567,864,588],{"class":577},[567,866,867],{"class":569,"line":591},[567,868,610],{"emptyLinePlaceholder":609},[567,870,871,874,878,881,884,887],{"class":569,"line":606},[567,872,873],{"class":573},"const",[567,875,877],{"class":876},"suiK_"," app",[567,879,880],{"class":573}," =",[567,882,883],{"class":573}," new",[567,885,886],{"class":622}," Hono",[567,888,889],{"class":577},"();\n",[567,891,892,895,898,901,904,907,911,914,917,920,923,925,928],{"class":569,"line":613},[567,893,894],{"class":577},"app.",[567,896,897],{"class":622},"get",[567,899,900],{"class":577},"(",[567,902,903],{"class":584},"\"\u002F\"",[567,905,906],{"class":577},", (",[567,908,910],{"class":909},"sQHwn","c",[567,912,913],{"class":577},") ",[567,915,916],{"class":573},"=>",[567,918,919],{"class":577}," c.",[567,921,922],{"class":622},"text",[567,924,900],{"class":577},[567,926,927],{"class":584},"\"Hello from Hono!\"",[567,929,930],{"class":577},"));\n",[567,932,933],{"class":569,"line":629},[567,934,610],{"emptyLinePlaceholder":609},[567,936,937,939,941],{"class":569,"line":641},[567,938,616],{"class":573},[567,940,619],{"class":573},[567,942,943],{"class":577}," app;\n",[413,945,947],{"id":946},"h3-v2-with-web-standards","🌐 H3 (v2) with Web Standards",[418,949,950,951,956,957,470,964,470,971,978,979,482],{},"Nitro v3 upgrades to ",[422,952,955],{"href":953,"rel":954},"https:\u002F\u002Fh3.dev",[426],"H3 v2",", which has been fully rewritten around web standard primitives — ",[422,958,961],{"href":959,"rel":960},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FRequest",[426],[564,962,963],{},"Request",[422,965,968],{"href":966,"rel":967},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FResponse",[426],[564,969,970],{},"Response",[422,972,975],{"href":973,"rel":974},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FHeaders",[426],[564,976,977],{},"Headers",", and ",[422,980,983],{"href":981,"rel":982},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FURL",[426],[564,984,985],{},"URL",[418,987,988],{},"The result is cleaner, more portable server code:",[557,990,993],{"className":559,"code":991,"filename":992,"language":562,"meta":5,"style":5},"import { defineHandler } from \"nitro\";\n\nexport default defineHandler((event) => {\n  const ua = event.req.headers.get(\"user-agent\");\n  return { message: \"Hello Nitro v3!\", ua };\n});\n","routes\u002Fhello.ts",[564,994,995,1007,1011,1033,1056,1070],{"__ignoreMap":5},[567,996,997,999,1001,1003,1005],{"class":569,"line":570},[567,998,574],{"class":573},[567,1000,792],{"class":577},[567,1002,581],{"class":573},[567,1004,797],{"class":584},[567,1006,588],{"class":577},[567,1008,1009],{"class":569,"line":591},[567,1010,610],{"emptyLinePlaceholder":609},[567,1012,1013,1015,1017,1020,1023,1026,1028,1030],{"class":569,"line":606},[567,1014,616],{"class":573},[567,1016,619],{"class":573},[567,1018,1019],{"class":622}," defineHandler",[567,1021,1022],{"class":577},"((",[567,1024,1025],{"class":909},"event",[567,1027,913],{"class":577},[567,1029,916],{"class":573},[567,1031,1032],{"class":577}," {\n",[567,1034,1035,1038,1041,1043,1046,1048,1050,1053],{"class":569,"line":613},[567,1036,1037],{"class":573},"  const",[567,1039,1040],{"class":876}," ua",[567,1042,880],{"class":573},[567,1044,1045],{"class":577}," event.req.headers.",[567,1047,897],{"class":622},[567,1049,900],{"class":577},[567,1051,1052],{"class":584},"\"user-agent\"",[567,1054,1055],{"class":577},");\n",[567,1057,1058,1061,1064,1067],{"class":569,"line":629},[567,1059,1060],{"class":573},"  return",[567,1062,1063],{"class":577}," { message: ",[567,1065,1066],{"class":584},"\"Hello Nitro v3!\"",[567,1068,1069],{"class":577},", ua };\n",[567,1071,1072],{"class":569,"line":641},[567,1073,644],{"class":577},[418,1075,1076],{},"Reading request bodies uses native APIs:",[557,1078,1081],{"className":559,"code":1079,"filename":1080,"language":562,"meta":5,"style":5},"import { defineHandler } from \"nitro\";\n\nexport default defineHandler(async (event) => {\n  const body = await event.req.json();\n  return { received: body };\n});\n","routes\u002Fsubmit.ts",[564,1082,1083,1095,1099,1123,1143,1150],{"__ignoreMap":5},[567,1084,1085,1087,1089,1091,1093],{"class":569,"line":570},[567,1086,574],{"class":573},[567,1088,792],{"class":577},[567,1090,581],{"class":573},[567,1092,797],{"class":584},[567,1094,588],{"class":577},[567,1096,1097],{"class":569,"line":591},[567,1098,610],{"emptyLinePlaceholder":609},[567,1100,1101,1103,1105,1107,1109,1112,1115,1117,1119,1121],{"class":569,"line":606},[567,1102,616],{"class":573},[567,1104,619],{"class":573},[567,1106,1019],{"class":622},[567,1108,900],{"class":577},[567,1110,1111],{"class":573},"async",[567,1113,1114],{"class":577}," (",[567,1116,1025],{"class":909},[567,1118,913],{"class":577},[567,1120,916],{"class":573},[567,1122,1032],{"class":577},[567,1124,1125,1127,1130,1132,1135,1138,1141],{"class":569,"line":613},[567,1126,1037],{"class":573},[567,1128,1129],{"class":876}," body",[567,1131,880],{"class":573},[567,1133,1134],{"class":573}," await",[567,1136,1137],{"class":577}," event.req.",[567,1139,1140],{"class":622},"json",[567,1142,889],{"class":577},[567,1144,1145,1147],{"class":569,"line":629},[567,1146,1060],{"class":573},[567,1148,1149],{"class":577}," { received: body };\n",[567,1151,1152],{"class":569,"line":641},[567,1153,644],{"class":577},[418,1155,1156],{},"No wrappers, no abstractions for things the platform already provides. If you know the Web API, you know H3 v2.",[418,1158,1159,470,1163,470,1167,1171],{},[422,1160,264],{"href":1161,"rel":1162},"https:\u002F\u002Felysiajs.com\u002F",[426],[422,1164,1166],{"href":953,"rel":1165},[426],"h3",[422,1168,284],{"href":1169,"rel":1170},"https:\u002F\u002Fhono.dev",[426]," — anything that speaks web standards works with Nitro.",[413,1173,1175],{"id":1174},"️-built-in-primitives","🗄️ Built-in Primitives",[418,1177,1178,1179,1182],{},"Nitro ships with powerful but small and ",[499,1180,1181],{},"fully opt-in"," agnostic server primitives that work across every runtime.",[1184,1185,1186],"note",{},[418,1187,1188,1189,437,1194,1199],{},"When not used, nothing extra will be added to the server bundle. You can still use native platform primitives alongside Nitro's built-in ones.\nWe are also bringing first class emulation for platform-specific primitives for dev See ",[422,1190,1193],{"href":1191,"rel":1192},"https:\u002F\u002Fgithub.com\u002Funjs\u002Fenv-runner",[426],"env-runner",[422,1195,1198],{"href":1196,"rel":1197},"https:\u002F\u002Fgithub.com\u002Fnitrojs\u002Fnitro\u002Fpull\u002F4088",[426],"nitrojs\u002Fnitro#4088"," for more details.",[1166,1201,1203],{"id":1202},"storage","Storage",[418,1205,1206,1207,1212],{},"A runtime-agnostic key-value layer with 20+ drivers — FS, Redis, S3, Cloudflare KV, Vercel Blob and ",[422,1208,1211],{"href":1209,"rel":1210},"https:\u002F\u002Funstorage.unjs.io\u002Fdrivers",[426],"more",". Attach drivers to namespaces and swap them without changing your application code.",[557,1214,1216],{"className":559,"code":1215,"language":562,"meta":5,"style":5},"import { useStorage } from \"nitro\u002Fstorage\";\n\nconst storage = useStorage();\nawait storage.setItem(\"user:1\", { name: \"Nitro\" });\n",[564,1217,1218,1230,1234,1248],{"__ignoreMap":5},[567,1219,1220,1222,1224,1226,1228],{"class":569,"line":570},[567,1221,574],{"class":573},[567,1223,806],{"class":577},[567,1225,581],{"class":573},[567,1227,811],{"class":584},[567,1229,588],{"class":577},[567,1231,1232],{"class":569,"line":591},[567,1233,610],{"emptyLinePlaceholder":609},[567,1235,1236,1238,1241,1243,1246],{"class":569,"line":606},[567,1237,873],{"class":573},[567,1239,1240],{"class":876}," storage",[567,1242,880],{"class":573},[567,1244,1245],{"class":622}," useStorage",[567,1247,889],{"class":577},[567,1249,1250,1253,1256,1259,1261,1264,1267,1270],{"class":569,"line":613},[567,1251,1252],{"class":573},"await",[567,1254,1255],{"class":577}," storage.",[567,1257,1258],{"class":622},"setItem",[567,1260,900],{"class":577},[567,1262,1263],{"class":584},"\"user:1\"",[567,1265,1266],{"class":577},", { name: ",[567,1268,1269],{"class":584},"\"Nitro\"",[567,1271,1272],{"class":577}," });\n",[1274,1275],"read-more",{"to":79},[1166,1277,1279],{"id":1278},"caching","Caching",[418,1281,1282],{},"Cache server routes and functions, backed by the storage layer. Supports stale-while-revalidate, TTL, and custom cache keys out of the box.",[557,1284,1286],{"className":559,"code":1285,"language":562,"meta":5,"style":5},"import { defineCachedHandler } from \"nitro\u002Fcache\";\n\nexport default defineCachedHandler((event) => {\n  return \"I am cached for an hour\";\n}, { maxAge: 60 * 60 });\n",[564,1287,1288,1302,1306,1325,1334],{"__ignoreMap":5},[567,1289,1290,1292,1295,1297,1300],{"class":569,"line":570},[567,1291,574],{"class":573},[567,1293,1294],{"class":577}," { defineCachedHandler } ",[567,1296,581],{"class":573},[567,1298,1299],{"class":584}," \"nitro\u002Fcache\"",[567,1301,588],{"class":577},[567,1303,1304],{"class":569,"line":591},[567,1305,610],{"emptyLinePlaceholder":609},[567,1307,1308,1310,1312,1315,1317,1319,1321,1323],{"class":569,"line":606},[567,1309,616],{"class":573},[567,1311,619],{"class":573},[567,1313,1314],{"class":622}," defineCachedHandler",[567,1316,1022],{"class":577},[567,1318,1025],{"class":909},[567,1320,913],{"class":577},[567,1322,916],{"class":573},[567,1324,1032],{"class":577},[567,1326,1327,1329,1332],{"class":569,"line":613},[567,1328,1060],{"class":573},[567,1330,1331],{"class":584}," \"I am cached for an hour\"",[567,1333,588],{"class":577},[567,1335,1336,1339,1342,1345,1348],{"class":569,"line":629},[567,1337,1338],{"class":577},"}, { maxAge: ",[567,1340,1341],{"class":876},"60",[567,1343,1344],{"class":573}," *",[567,1346,1347],{"class":876}," 60",[567,1349,1272],{"class":577},[1274,1351],{"to":74},[1166,1353,38],{"id":1354},"database",[418,1356,1357,1358,1362],{},"A built-in SQL database that defaults to SQLite for development and can connect to Postgres, MySQL, and ",[422,1359,1211],{"href":1360,"rel":1361},"https:\u002F\u002Fdb0.unjs.io\u002Fconnectors",[426]," using the same API.",[557,1364,1366],{"className":559,"code":1365,"language":562,"meta":5,"style":5},"import { useDatabase } from \"nitro\u002Fdatabase\";\n\nconst db = useDatabase();\nconst users = await db.sql`SELECT * FROM users`;\n",[564,1367,1368,1380,1384,1398],{"__ignoreMap":5},[567,1369,1370,1372,1374,1376,1378],{"class":569,"line":570},[567,1371,574],{"class":573},[567,1373,820],{"class":577},[567,1375,581],{"class":573},[567,1377,825],{"class":584},[567,1379,588],{"class":577},[567,1381,1382],{"class":569,"line":591},[567,1383,610],{"emptyLinePlaceholder":609},[567,1385,1386,1388,1391,1393,1396],{"class":569,"line":606},[567,1387,873],{"class":573},[567,1389,1390],{"class":876}," db",[567,1392,880],{"class":573},[567,1394,1395],{"class":622}," useDatabase",[567,1397,889],{"class":577},[567,1399,1400,1402,1405,1407,1409,1412,1415,1418],{"class":569,"line":613},[567,1401,873],{"class":573},[567,1403,1404],{"class":876}," users",[567,1406,880],{"class":573},[567,1408,1134],{"class":573},[567,1410,1411],{"class":577}," db.",[567,1413,1414],{"class":622},"sql",[567,1416,1417],{"class":584},"`SELECT * FROM users`",[567,1419,588],{"class":577},[1274,1421],{"to":39},[413,1423,1425],{"id":1424},"deploy-anywhere","🌍 Deploy Anywhere",[418,1427,1428,1429,1431],{},"Build your server into an optimized ",[564,1430,680],{}," folder compatible with:",[653,1433,1434,1439],{},[656,1435,1436,1438],{},[499,1437,101],{},": Node.js, Bun, Deno",[656,1440,1441,1444],{},[499,1442,1443],{},"Platforms",": Cloudflare Workers, Netlify, Vercel, AWS Lambda, Azure, Firebase, Deno Deploy, and more",[418,1446,1447],{},"No configuration needed — Nitro auto-detects your deployment target. Take advantage of platform features like ISR, SWR, and edge rendering without changing a single line of code.",[413,1449,1451],{"id":1450},"server-side-rendering","🎨 Server-Side Rendering",[418,1453,1454],{},"Render HTML with your favorite templating engine, or use component libraries like React, Vue, or Svelte directly on the server. Go full universal rendering with client-side hydration.",[418,1456,1457],{},"Nitro provides the foundation and a progressive approach — start with API routes, add rendering when you need it, and scale to full SSR at your own pace.",[1274,1459],{"to":19},[413,1461,1463],{"id":1462},"nuxt-v5","🟢 Nuxt v5",[418,1465,1466,1467,482],{},"Nitro v3 will power the next major version of ",[422,1468,1470],{"href":424,"rel":1469},[426],"Nuxt",[418,1472,1473,1478],{},[422,1474,1477],{"href":1475,"rel":1476},"https:\u002F\u002Fnuxt.com\u002Fblog\u002Froadmap-v4",[426],"Nuxt v5"," will ship with Nitro v3 and H3 v2 at its core, bringing web-standard request handling, Rolldown-powered builds, and the Vite Environment API to the Nuxt ecosystem.",[418,1480,1481,1482,1487],{},"If you're a Nuxt user, you can already start preparing by familiarizing yourself with  Nitro v3's new APIs, which will carry directly into Nuxt 5, and you can ",[422,1483,1486],{"href":1484,"rel":1485},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fdiscussions\u002F34504",[426],"follow progress"," on adopting Nitro v3 in Nuxt",[413,1489,1491],{"id":1490},"getting-started","🏁 Getting Started",[1166,1493,1495],{"id":1494},"create-a-new-project","Create a New Project",[1497,1498],"pm-x",{"command":1499},"create-nitro-app",[418,1501,1502,1503,1506],{},"See the ",[422,1504,1505],{"href":14},"quick start guide"," for a full step-by-step walkthrough.",[413,1508,1510],{"id":1509},"migrating-from-v2","🔄 Migrating from v2",[418,1512,1513],{},"Nitro v3 introduces intentional breaking changes to set a cleaner foundation. Here are the key ones:",[653,1515,1516,1524,1531,1540,1548,1555,1561],{},[656,1517,1518,1520,1521,1523],{},[564,1519,759],{}," → ",[564,1522,635],{}," (package rename)",[656,1525,1526,1520,1528,1530],{},[564,1527,833],{},[564,1529,765],{}," (clean subpath imports)",[656,1532,1533,1520,1536,1539],{},[564,1534,1535],{},"eventHandler",[564,1537,1538],{},"defineHandler"," (H3 v2)",[656,1541,1542,1520,1545,1539],{},[564,1543,1544],{},"createError",[564,1546,1547],{},"HTTPError",[656,1549,1550,1551,1554],{},"Web standard ",[564,1552,1553],{},"event.req"," headers and body APIs",[656,1556,1557,1558],{},"Node.js minimum version: ",[499,1559,1560],{},"20",[656,1562,1563,1564,1520,1567,1570],{},"Preset renames and consolidation (e.g., ",[564,1565,1566],{},"cloudflare",[564,1568,1569],{},"cloudflare_module",")",[418,1572,1573,1574,482],{},"For a complete list, see the ",[422,1575,1576],{"href":84},"migration guide",[1578,1579],"hr",{},[418,1581,1582],{},"Thank you to everyone who has contributed to Nitro over the years. We can't wait to see what you build with the new Nitro! ❤️",[653,1584,1585,1593],{},[656,1586,1587,1592],{},[422,1588,1591],{"href":1589,"rel":1590},"https:\u002F\u002Fgithub.com\u002Fnitrojs\u002Fnitro",[426],"GitHub"," — Issues and discussions",[656,1594,1595,1600],{},[422,1596,1599],{"href":1597,"rel":1598},"https:\u002F\u002Fdiscord.nitro.build",[426],"Discord"," — Chat with the community",[1602,1603,1604],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}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 .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}",{"title":5,"searchDepth":591,"depth":591,"links":1606},[1607,1608,1609,1610,1611,1613,1614,1615,1620,1621,1622,1623,1626],{"id":415,"depth":591,"text":416},{"id":493,"depth":591,"text":494},{"id":546,"depth":591,"text":547},{"id":700,"depth":591,"text":701},{"id":743,"depth":591,"text":1612},"🖌️ New Identity: nitro",{"id":837,"depth":591,"text":838},{"id":946,"depth":591,"text":947},{"id":1174,"depth":591,"text":1175,"children":1616},[1617,1618,1619],{"id":1202,"depth":606,"text":1203},{"id":1278,"depth":606,"text":1279},{"id":1354,"depth":606,"text":38},{"id":1424,"depth":591,"text":1425},{"id":1450,"depth":591,"text":1451},{"id":1462,"depth":591,"text":1463},{"id":1490,"depth":591,"text":1491,"children":1624},[1625],{"id":1494,"depth":606,"text":1495},{"id":1509,"depth":591,"text":1510},"Nitro v3 is now available as a public beta — a ground-up evolution of the server framework, built around web standards, Rolldown, Vite v8, and the same deploy-anywhere promise.","md",{"date":1630,"category":1631,"authors":1632,"icon":399},"2026-03-11","release",[1633],{"name":1634,"github":1635},"Pooya Parsa","pi0",{"icon":399},{"title":401,"description":1627},"Hb62Zadr-PaU06SzG7J4BDpm3lmOnHwUwKY8MosspyU",1784141540244]