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