[{"data":1,"prerenderedAt":1690},["ShallowReactive",2],{"navigation":3,"\u002Fblog":445,"$tlG36M_1V7":462},[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":431,"body":447,"description":5,"extension":457,"meta":458,"navigation":459,"path":432,"seo":460,"stem":436,"__hash__":461},"content\u002F9.blog\u002Findex.md",{"type":448,"value":449,"toc":454,"icon":437},"minimark",[450],[451,452,453],"p",{},"Nitro blog posts.",{"title":5,"searchDepth":455,"depth":455,"links":456},2,[],"md",{"icon":437},{"icon":437},{"title":431,"description":5},"HAUjglpg2Z-BF1cW65KtOrFgjOiZnudO2iL7l76T1P0",[463],{"id":464,"title":439,"body":465,"description":1679,"extension":457,"meta":1680,"navigation":1687,"path":440,"seo":1688,"stem":441,"__hash__":1689},"content\u002F9.blog\u002F1.v3-beta.md",{"type":448,"value":466,"toc":1657,"icon":437},[467,472,483,498,537,545,549,573,576,591,597,601,609,697,704,734,750,754,757,779,793,799,812,819,880,887,891,898,996,1000,1038,1041,1126,1129,1206,1209,1224,1228,1235,1252,1256,1265,1325,1328,1332,1335,1402,1404,1407,1415,1472,1474,1478,1484,1497,1500,1504,1507,1510,1512,1516,1523,1531,1540,1544,1548,1552,1559,1563,1566,1623,1629,1632,1635,1653],[468,469,471],"h2",{"id":470},"a-brief-history","A Brief History",[451,473,474,475,482],{},"Nitro started as the server engine for ",[476,477,481],"a",{"href":478,"rel":479},"https:\u002F\u002Fnuxt.com",[480],"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.",[451,484,485,486,491,492,497],{},"With Nitro v3, we took the opportunity to rethink the fundamentals. leaner APIs, Web standards, first-class ",[476,487,490],{"href":488,"rel":489},"https:\u002F\u002Frolldown.rs\u002F",[480],"Rolldown"," and ",[476,493,496],{"href":494,"rel":495},"https:\u002F\u002Fvite.dev\u002F",[480],"Vite v8"," integration, and a better experience for both humans and agents (more on that later!)",[451,499,500,501,506,507,512,513,518,519,524,525,530,531,536],{},"Since we quietly announced v3 ",[476,502,505],{"href":503,"rel":504},"https:\u002F\u002Fgithub.com\u002Fnitrojs\u002Fnitro\u002Freleases\u002Ftag\u002Fv3.0.1-alpha.0",[480],"alpha.0"," (11 Oct 2025) at the first ",[476,508,511],{"href":509,"rel":510},"https:\u002F\u002Fviteconf.amsterdam\u002F",[480],"Vite Conf",", Nitro v3 has been adopted by many users (",[476,514,517],{"href":515,"rel":516},"https:\u002F\u002Fnpmtrends.com\u002Fnitro-vs-nitro-nightly",[480],"~280k"," weekly downloads!) and refined through amazing contributions and feedback. including ",[476,520,523],{"href":521,"rel":522},"https:\u002F\u002Ftanstack.com\u002Fstart\u002Flatest\u002Fdocs\u002Fframework\u002Freact\u002Fguide\u002Fhosting#nitro",[480],"Tanstack Start",", ",[476,526,529],{"href":527,"rel":528},"https:\u002F\u002Fuseworkflow.dev\u002Fdocs\u002Fgetting-started",[480],"Vercel Workflows",", and production apps like ",[476,532,535],{"href":533,"rel":534},"https:\u002F\u002Ft3.chat\u002F",[480],"T3Chat",".",[451,538,539,540,544],{},"A huge thanks to the VoidZero (Vite and Rolldown), Nuxt (",[476,541,543],{"href":542},"#nuxt-v5","v5 is coming!",") and TanStack Start teams and every contributor who helped bring Nitro v3 to this milestone. ❤️",[468,546,548],{"id":547},"why-build-servers","Why Build Servers?",[451,550,551,552,556,557,560,561,564,565,568,569,572],{},"We don't ship raw source files to the browser. We use build tools because they solve real problems: ",[553,554,555],"strong",{},"HMR"," for instant feedback, ",[553,558,559],{},"code splitting"," to load only what a route needs, ",[553,562,563],{},"tree shaking"," to eliminate dead code, and ",[553,566,567],{},"minification"," for smaller payloads. Tools like Webpack and then ",[476,570,88],{"href":494,"rel":571},[480]," transformed frontend development from painful to productive.",[451,574,575],{},"But frontend apps don't exist in isolation, they need APIs, databases, authentication, real-time data. They need a server.",[451,577,578,579,582,583,586,587,590],{},"With the rise of serverless and edge computing, the server side now faces the same constraints the frontend solved years ago. ",[553,580,581],{},"Cold starts"," mean every millisecond of startup matters. ",[553,584,585],{},"Memory limits"," are strict — bloated dependencies can push you over. ",[553,588,589],{},"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.",[451,592,593,594],{},"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. ",[553,595,596],{},"One codebase, any runtime, any platform.",[468,598,600],{"id":599},"first-class-vite-integration","⚡ First-Class Vite Integration",[451,602,603,604,608],{},"Nitro now has a native ",[476,605,88],{"href":606,"rel":607},"https:\u002F\u002Fvite.dev",[480]," plugin to build full stack apps.",[610,611,616],"pre",{"className":612,"code":613,"filename":614,"language":615,"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",[617,618,619,642,656,663,679,691],"code",{"__ignoreMap":5},[620,621,624,628,632,635,639],"span",{"class":622,"line":623},"line",1,[620,625,627],{"class":626},"so5gQ","import",[620,629,631],{"class":630},"slsVL"," { defineConfig } ",[620,633,634],{"class":626},"from",[620,636,638],{"class":637},"sfrk1"," \"vite\"",[620,640,641],{"class":630},";\n",[620,643,644,646,649,651,654],{"class":622,"line":455},[620,645,627],{"class":626},[620,647,648],{"class":630}," { nitro } ",[620,650,634],{"class":626},[620,652,653],{"class":637}," \"nitro\u002Fvite\"",[620,655,641],{"class":630},[620,657,659],{"class":622,"line":658},3,[620,660,662],{"emptyLinePlaceholder":661},true,"\n",[620,664,666,669,672,676],{"class":622,"line":665},4,[620,667,668],{"class":626},"export",[620,670,671],{"class":626}," default",[620,673,675],{"class":674},"shcOC"," defineConfig",[620,677,678],{"class":630},"({\n",[620,680,682,685,688],{"class":622,"line":681},5,[620,683,684],{"class":630},"  plugins: [",[620,686,687],{"class":674},"nitro",[620,689,690],{"class":630},"()],\n",[620,692,694],{"class":622,"line":693},6,[620,695,696],{"class":630},"});\n",[451,698,699,700,703],{},"Adding ",[617,701,702],{},"nitro()"," to your Vite apps gives you:",[705,706,707,714,720],"ul",{},[708,709,710,713],"li",{},[553,711,712],{},"API routes"," via filesystem routing",[708,715,716,719],{},[553,717,718],{},"Server-side rendering"," integrated with your frontend build",[708,721,722,725,726,729,730,733],{},[553,723,724],{},"A production server"," — a single ",[617,727,728],{},"vite build"," produces an optimized ",[617,731,732],{},".output\u002F"," folder with both frontend and backend, ready to deploy",[451,735,736,737,740,741,524,744,491,747,536],{},"This means you can add a full backend to any Vite project — See ",[476,738,739],{"href":268},"examples"," with ",[476,742,743],{"href":400},"React",[476,745,746],{"href":418},"Vue",[476,748,749],{"href":404},"Solid.js",[468,751,753],{"id":752},"performance-by-default-zero-bloat","🚀 Performance by Default, Zero Bloat",[451,755,756],{},"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.",[451,758,759,760,763,764,767,768,773,774,536],{},"Minimal server bundle built with the ",[617,761,762],{},"standard"," preset is less than ",[617,765,766],{},"10kB",", can be served with ",[476,769,772],{"href":770,"rel":771},"https:\u002F\u002Fsrvx.h3.dev\u002F",[480],"srvx"," at close to native speeds, and includes all the good features from ",[476,775,778],{"href":776,"rel":777},"https:\u002F\u002Fh3.dev\u002F",[480],"H3",[451,780,781,782,787,788,536],{},"We have also significantly reduced the number of dependencies, down to ",[476,783,786],{"href":784,"rel":785},"https:\u002F\u002Fnpmgraph.js.org\u002F?q=nitro-nightly",[480],"less than 20"," from ",[476,789,792],{"href":790,"rel":791},"https:\u002F\u002Fnpmgraph.js.org\u002F?q=nitropack",[480],"321 dependencies",[468,794,796,797],{"id":795},"️-new-identity-nitro","🖌️ New Identity: ",[617,798,687],{},[451,800,801,802,808,809,536],{},"Nitro v3 ships under a new NPM package: ",[476,803,806],{"href":804,"rel":805},"https:\u002F\u002Fnpmx.dev\u002Fpackage\u002Fnitro",[480],[617,807,687],{},", replacing the legacy ",[617,810,811],{},"nitropack",[451,813,814,815,818],{},"All imports now use clean ",[617,816,817],{},"nitro\u002F*"," subpaths:",[610,820,822],{"className":612,"code":821,"language":615,"meta":5,"style":5},"import { defineNitroConfig } from \"nitro\u002Fconfig\";\nimport { defineHandler } from \"nitro\";\nimport { useStorage } from \"nitro\u002Fstorage\";\nimport { useDatabase } from \"nitro\u002Fdatabase\";\n",[617,823,824,838,852,866],{"__ignoreMap":5},[620,825,826,828,831,833,836],{"class":622,"line":623},[620,827,627],{"class":626},[620,829,830],{"class":630}," { defineNitroConfig } ",[620,832,634],{"class":626},[620,834,835],{"class":637}," \"nitro\u002Fconfig\"",[620,837,641],{"class":630},[620,839,840,842,845,847,850],{"class":622,"line":455},[620,841,627],{"class":626},[620,843,844],{"class":630}," { defineHandler } ",[620,846,634],{"class":626},[620,848,849],{"class":637}," \"nitro\"",[620,851,641],{"class":630},[620,853,854,856,859,861,864],{"class":622,"line":658},[620,855,627],{"class":626},[620,857,858],{"class":630}," { useStorage } ",[620,860,634],{"class":626},[620,862,863],{"class":637}," \"nitro\u002Fstorage\"",[620,865,641],{"class":630},[620,867,868,870,873,875,878],{"class":622,"line":665},[620,869,627],{"class":626},[620,871,872],{"class":630}," { useDatabase } ",[620,874,634],{"class":626},[620,876,877],{"class":637}," \"nitro\u002Fdatabase\"",[620,879,641],{"class":630},[451,881,882,883,886],{},"No more deep ",[617,884,885],{},"nitropack\u002Fruntime\u002F*"," paths, plus, you can import nitro subpaths outside of builder useful for unit testing.",[468,888,890],{"id":889},"bring-your-own-framework","🔧 Bring Your Own Framework",[451,892,893,894,897],{},"Nitro v3 is not opinionated about your HTTP layer. You can use the built-in filesystem routing, or take full control with a ",[617,895,896],{},"server.ts"," entry file and bring any framework you prefer:",[610,899,901],{"className":612,"code":900,"filename":896,"language":615,"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",[617,902,903,917,921,942,983,987],{"__ignoreMap":5},[620,904,905,907,910,912,915],{"class":622,"line":623},[620,906,627],{"class":626},[620,908,909],{"class":630}," { Hono } ",[620,911,634],{"class":626},[620,913,914],{"class":637}," \"hono\"",[620,916,641],{"class":630},[620,918,919],{"class":622,"line":455},[620,920,662],{"emptyLinePlaceholder":661},[620,922,923,926,930,933,936,939],{"class":622,"line":658},[620,924,925],{"class":626},"const",[620,927,929],{"class":928},"suiK_"," app",[620,931,932],{"class":626}," =",[620,934,935],{"class":626}," new",[620,937,938],{"class":674}," Hono",[620,940,941],{"class":630},"();\n",[620,943,944,947,950,953,956,959,963,966,969,972,975,977,980],{"class":622,"line":665},[620,945,946],{"class":630},"app.",[620,948,949],{"class":674},"get",[620,951,952],{"class":630},"(",[620,954,955],{"class":637},"\"\u002F\"",[620,957,958],{"class":630},", (",[620,960,962],{"class":961},"sQHwn","c",[620,964,965],{"class":630},") ",[620,967,968],{"class":626},"=>",[620,970,971],{"class":630}," c.",[620,973,974],{"class":674},"text",[620,976,952],{"class":630},[620,978,979],{"class":637},"\"Hello from Hono!\"",[620,981,982],{"class":630},"));\n",[620,984,985],{"class":622,"line":681},[620,986,662],{"emptyLinePlaceholder":661},[620,988,989,991,993],{"class":622,"line":693},[620,990,668],{"class":626},[620,992,671],{"class":626},[620,994,995],{"class":630}," app;\n",[468,997,999],{"id":998},"h3-v2-with-web-standards","🌐 H3 (v2) with Web Standards",[451,1001,1002,1003,1008,1009,524,1016,524,1023,1030,1031,536],{},"Nitro v3 upgrades to ",[476,1004,1007],{"href":1005,"rel":1006},"https:\u002F\u002Fh3.dev",[480],"H3 v2",", which has been fully rewritten around web standard primitives — ",[476,1010,1013],{"href":1011,"rel":1012},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FRequest",[480],[617,1014,1015],{},"Request",[476,1017,1020],{"href":1018,"rel":1019},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FResponse",[480],[617,1021,1022],{},"Response",[476,1024,1027],{"href":1025,"rel":1026},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FHeaders",[480],[617,1028,1029],{},"Headers",", and ",[476,1032,1035],{"href":1033,"rel":1034},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FURL",[480],[617,1036,1037],{},"URL",[451,1039,1040],{},"The result is cleaner, more portable server code:",[610,1042,1045],{"className":612,"code":1043,"filename":1044,"language":615,"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",[617,1046,1047,1059,1063,1085,1108,1122],{"__ignoreMap":5},[620,1048,1049,1051,1053,1055,1057],{"class":622,"line":623},[620,1050,627],{"class":626},[620,1052,844],{"class":630},[620,1054,634],{"class":626},[620,1056,849],{"class":637},[620,1058,641],{"class":630},[620,1060,1061],{"class":622,"line":455},[620,1062,662],{"emptyLinePlaceholder":661},[620,1064,1065,1067,1069,1072,1075,1078,1080,1082],{"class":622,"line":658},[620,1066,668],{"class":626},[620,1068,671],{"class":626},[620,1070,1071],{"class":674}," defineHandler",[620,1073,1074],{"class":630},"((",[620,1076,1077],{"class":961},"event",[620,1079,965],{"class":630},[620,1081,968],{"class":626},[620,1083,1084],{"class":630}," {\n",[620,1086,1087,1090,1093,1095,1098,1100,1102,1105],{"class":622,"line":665},[620,1088,1089],{"class":626},"  const",[620,1091,1092],{"class":928}," ua",[620,1094,932],{"class":626},[620,1096,1097],{"class":630}," event.req.headers.",[620,1099,949],{"class":674},[620,1101,952],{"class":630},[620,1103,1104],{"class":637},"\"user-agent\"",[620,1106,1107],{"class":630},");\n",[620,1109,1110,1113,1116,1119],{"class":622,"line":681},[620,1111,1112],{"class":626},"  return",[620,1114,1115],{"class":630}," { message: ",[620,1117,1118],{"class":637},"\"Hello Nitro v3!\"",[620,1120,1121],{"class":630},", ua };\n",[620,1123,1124],{"class":622,"line":693},[620,1125,696],{"class":630},[451,1127,1128],{},"Reading request bodies uses native APIs:",[610,1130,1133],{"className":612,"code":1131,"filename":1132,"language":615,"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",[617,1134,1135,1147,1151,1175,1195,1202],{"__ignoreMap":5},[620,1136,1137,1139,1141,1143,1145],{"class":622,"line":623},[620,1138,627],{"class":626},[620,1140,844],{"class":630},[620,1142,634],{"class":626},[620,1144,849],{"class":637},[620,1146,641],{"class":630},[620,1148,1149],{"class":622,"line":455},[620,1150,662],{"emptyLinePlaceholder":661},[620,1152,1153,1155,1157,1159,1161,1164,1167,1169,1171,1173],{"class":622,"line":658},[620,1154,668],{"class":626},[620,1156,671],{"class":626},[620,1158,1071],{"class":674},[620,1160,952],{"class":630},[620,1162,1163],{"class":626},"async",[620,1165,1166],{"class":630}," (",[620,1168,1077],{"class":961},[620,1170,965],{"class":630},[620,1172,968],{"class":626},[620,1174,1084],{"class":630},[620,1176,1177,1179,1182,1184,1187,1190,1193],{"class":622,"line":665},[620,1178,1089],{"class":626},[620,1180,1181],{"class":928}," body",[620,1183,932],{"class":626},[620,1185,1186],{"class":626}," await",[620,1188,1189],{"class":630}," event.req.",[620,1191,1192],{"class":674},"json",[620,1194,941],{"class":630},[620,1196,1197,1199],{"class":622,"line":681},[620,1198,1112],{"class":626},[620,1200,1201],{"class":630}," { received: body };\n",[620,1203,1204],{"class":622,"line":693},[620,1205,696],{"class":630},[451,1207,1208],{},"No wrappers, no abstractions for things the platform already provides. If you know the Web API, you know H3 v2.",[451,1210,1211,524,1215,524,1219,1223],{},[476,1212,298],{"href":1213,"rel":1214},"https:\u002F\u002Felysiajs.com\u002F",[480],[476,1216,1218],{"href":1005,"rel":1217},[480],"h3",[476,1220,318],{"href":1221,"rel":1222},"https:\u002F\u002Fhono.dev",[480]," — anything that speaks web standards works with Nitro.",[468,1225,1227],{"id":1226},"️-built-in-primitives","🗄️ Built-in Primitives",[451,1229,1230,1231,1234],{},"Nitro ships with powerful but small and ",[553,1232,1233],{},"fully opt-in"," agnostic server primitives that work across every runtime.",[1236,1237,1238],"note",{},[451,1239,1240,1241,491,1246,1251],{},"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 ",[476,1242,1245],{"href":1243,"rel":1244},"https:\u002F\u002Fgithub.com\u002Funjs\u002Fenv-runner",[480],"env-runner",[476,1247,1250],{"href":1248,"rel":1249},"https:\u002F\u002Fgithub.com\u002Fnitrojs\u002Fnitro\u002Fpull\u002F4088",[480],"nitrojs\u002Fnitro#4088"," for more details.",[1218,1253,1255],{"id":1254},"storage","Storage",[451,1257,1258,1259,1264],{},"A runtime-agnostic key-value layer with 20+ drivers — FS, Redis, S3, Cloudflare KV, Vercel Blob and ",[476,1260,1263],{"href":1261,"rel":1262},"https:\u002F\u002Funstorage.unjs.io\u002Fdrivers",[480],"more",". Attach drivers to namespaces and swap them without changing your application code.",[610,1266,1268],{"className":612,"code":1267,"language":615,"meta":5,"style":5},"import { useStorage } from \"nitro\u002Fstorage\";\n\nconst storage = useStorage();\nawait storage.setItem(\"user:1\", { name: \"Nitro\" });\n",[617,1269,1270,1282,1286,1300],{"__ignoreMap":5},[620,1271,1272,1274,1276,1278,1280],{"class":622,"line":623},[620,1273,627],{"class":626},[620,1275,858],{"class":630},[620,1277,634],{"class":626},[620,1279,863],{"class":637},[620,1281,641],{"class":630},[620,1283,1284],{"class":622,"line":455},[620,1285,662],{"emptyLinePlaceholder":661},[620,1287,1288,1290,1293,1295,1298],{"class":622,"line":658},[620,1289,925],{"class":626},[620,1291,1292],{"class":928}," storage",[620,1294,932],{"class":626},[620,1296,1297],{"class":674}," useStorage",[620,1299,941],{"class":630},[620,1301,1302,1305,1308,1311,1313,1316,1319,1322],{"class":622,"line":665},[620,1303,1304],{"class":626},"await",[620,1306,1307],{"class":630}," storage.",[620,1309,1310],{"class":674},"setItem",[620,1312,952],{"class":630},[620,1314,1315],{"class":637},"\"user:1\"",[620,1317,1318],{"class":630},", { name: ",[620,1320,1321],{"class":637},"\"Nitro\"",[620,1323,1324],{"class":630}," });\n",[1326,1327],"read-more",{"to":109},[1218,1329,1331],{"id":1330},"caching","Caching",[451,1333,1334],{},"Cache server routes and functions, backed by the storage layer. Supports stale-while-revalidate, TTL, and custom cache keys out of the box.",[610,1336,1338],{"className":612,"code":1337,"language":615,"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",[617,1339,1340,1354,1358,1377,1386],{"__ignoreMap":5},[620,1341,1342,1344,1347,1349,1352],{"class":622,"line":623},[620,1343,627],{"class":626},[620,1345,1346],{"class":630}," { defineCachedHandler } ",[620,1348,634],{"class":626},[620,1350,1351],{"class":637}," \"nitro\u002Fcache\"",[620,1353,641],{"class":630},[620,1355,1356],{"class":622,"line":455},[620,1357,662],{"emptyLinePlaceholder":661},[620,1359,1360,1362,1364,1367,1369,1371,1373,1375],{"class":622,"line":658},[620,1361,668],{"class":626},[620,1363,671],{"class":626},[620,1365,1366],{"class":674}," defineCachedHandler",[620,1368,1074],{"class":630},[620,1370,1077],{"class":961},[620,1372,965],{"class":630},[620,1374,968],{"class":626},[620,1376,1084],{"class":630},[620,1378,1379,1381,1384],{"class":622,"line":665},[620,1380,1112],{"class":626},[620,1382,1383],{"class":637}," \"I am cached for an hour\"",[620,1385,641],{"class":630},[620,1387,1388,1391,1394,1397,1400],{"class":622,"line":681},[620,1389,1390],{"class":630},"}, { maxAge: ",[620,1392,1393],{"class":928},"60",[620,1395,1396],{"class":626}," *",[620,1398,1399],{"class":928}," 60",[620,1401,1324],{"class":630},[1326,1403],{"to":104},[1218,1405,38],{"id":1406},"database",[451,1408,1409,1410,1414],{},"A built-in SQL database that defaults to SQLite for development and can connect to Postgres, MySQL, and ",[476,1411,1263],{"href":1412,"rel":1413},"https:\u002F\u002Fdb0.unjs.io\u002Fconnectors",[480]," using the same API.",[610,1416,1418],{"className":612,"code":1417,"language":615,"meta":5,"style":5},"import { useDatabase } from \"nitro\u002Fdatabase\";\n\nconst db = useDatabase();\nconst users = await db.sql`SELECT * FROM users`;\n",[617,1419,1420,1432,1436,1450],{"__ignoreMap":5},[620,1421,1422,1424,1426,1428,1430],{"class":622,"line":623},[620,1423,627],{"class":626},[620,1425,872],{"class":630},[620,1427,634],{"class":626},[620,1429,877],{"class":637},[620,1431,641],{"class":630},[620,1433,1434],{"class":622,"line":455},[620,1435,662],{"emptyLinePlaceholder":661},[620,1437,1438,1440,1443,1445,1448],{"class":622,"line":658},[620,1439,925],{"class":626},[620,1441,1442],{"class":928}," db",[620,1444,932],{"class":626},[620,1446,1447],{"class":674}," useDatabase",[620,1449,941],{"class":630},[620,1451,1452,1454,1457,1459,1461,1464,1467,1470],{"class":622,"line":665},[620,1453,925],{"class":626},[620,1455,1456],{"class":928}," users",[620,1458,932],{"class":626},[620,1460,1186],{"class":626},[620,1462,1463],{"class":630}," db.",[620,1465,1466],{"class":674},"sql",[620,1468,1469],{"class":637},"`SELECT * FROM users`",[620,1471,641],{"class":630},[1326,1473],{"to":39},[468,1475,1477],{"id":1476},"deploy-anywhere","🌍 Deploy Anywhere",[451,1479,1480,1481,1483],{},"Build your server into an optimized ",[617,1482,732],{}," folder compatible with:",[705,1485,1486,1491],{},[708,1487,1488,1490],{},[553,1489,131],{},": Node.js, Bun, Deno",[708,1492,1493,1496],{},[553,1494,1495],{},"Platforms",": Cloudflare Workers, Netlify, Vercel, AWS Lambda, Azure, Firebase, Deno Deploy, and more",[451,1498,1499],{},"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.",[468,1501,1503],{"id":1502},"server-side-rendering","🎨 Server-Side Rendering",[451,1505,1506],{},"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.",[451,1508,1509],{},"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.",[1326,1511],{"to":19},[468,1513,1515],{"id":1514},"nuxt-v5","🟢 Nuxt v5",[451,1517,1518,1519,536],{},"Nitro v3 will power the next major version of ",[476,1520,1522],{"href":478,"rel":1521},[480],"Nuxt",[451,1524,1525,1530],{},[476,1526,1529],{"href":1527,"rel":1528},"https:\u002F\u002Fnuxt.com\u002Fblog\u002Froadmap-v4",[480],"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.",[451,1532,1533,1534,1539],{},"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 ",[476,1535,1538],{"href":1536,"rel":1537},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fdiscussions\u002F34504",[480],"follow progress"," on adopting Nitro v3 in Nuxt",[468,1541,1543],{"id":1542},"getting-started","🏁 Getting Started",[1218,1545,1547],{"id":1546},"create-a-new-project","Create a New Project",[1549,1550],"pm-x",{"command":1551},"create-nitro-app",[451,1553,1554,1555,1558],{},"See the ",[476,1556,1557],{"href":14},"quick start guide"," for a full step-by-step walkthrough.",[468,1560,1562],{"id":1561},"migrating-from-v2","🔄 Migrating from v2",[451,1564,1565],{},"Nitro v3 introduces intentional breaking changes to set a cleaner foundation. Here are the key ones:",[705,1567,1568,1576,1583,1592,1600,1607,1613],{},[708,1569,1570,1572,1573,1575],{},[617,1571,811],{}," → ",[617,1574,687],{}," (package rename)",[708,1577,1578,1572,1580,1582],{},[617,1579,885],{},[617,1581,817],{}," (clean subpath imports)",[708,1584,1585,1572,1588,1591],{},[617,1586,1587],{},"eventHandler",[617,1589,1590],{},"defineHandler"," (H3 v2)",[708,1593,1594,1572,1597,1591],{},[617,1595,1596],{},"createError",[617,1598,1599],{},"HTTPError",[708,1601,1602,1603,1606],{},"Web standard ",[617,1604,1605],{},"event.req"," headers and body APIs",[708,1608,1609,1610],{},"Node.js minimum version: ",[553,1611,1612],{},"20",[708,1614,1615,1616,1572,1619,1622],{},"Preset renames and consolidation (e.g., ",[617,1617,1618],{},"cloudflare",[617,1620,1621],{},"cloudflare_module",")",[451,1624,1625,1626,536],{},"For a complete list, see the ",[476,1627,1628],{"href":114},"migration guide",[1630,1631],"hr",{},[451,1633,1634],{},"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! ❤️",[705,1636,1637,1645],{},[708,1638,1639,1644],{},[476,1640,1643],{"href":1641,"rel":1642},"https:\u002F\u002Fgithub.com\u002Fnitrojs\u002Fnitro",[480],"GitHub"," — Issues and discussions",[708,1646,1647,1652],{},[476,1648,1651],{"href":1649,"rel":1650},"https:\u002F\u002Fdiscord.nitro.build",[480],"Discord"," — Chat with the community",[1654,1655,1656],"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":455,"depth":455,"links":1658},[1659,1660,1661,1662,1663,1665,1666,1667,1672,1673,1674,1675,1678],{"id":470,"depth":455,"text":471},{"id":547,"depth":455,"text":548},{"id":599,"depth":455,"text":600},{"id":752,"depth":455,"text":753},{"id":795,"depth":455,"text":1664},"🖌️ New Identity: nitro",{"id":889,"depth":455,"text":890},{"id":998,"depth":455,"text":999},{"id":1226,"depth":455,"text":1227,"children":1668},[1669,1670,1671],{"id":1254,"depth":658,"text":1255},{"id":1330,"depth":658,"text":1331},{"id":1406,"depth":658,"text":38},{"id":1476,"depth":455,"text":1477},{"id":1502,"depth":455,"text":1503},{"id":1514,"depth":455,"text":1515},{"id":1542,"depth":455,"text":1543,"children":1676},[1677],{"id":1546,"depth":658,"text":1547},{"id":1561,"depth":455,"text":1562},"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.",{"date":1681,"category":1682,"authors":1683,"icon":437},"2026-03-11","release",[1684],{"name":1685,"github":1686},"Pooya Parsa","pi0",{"icon":437},{"title":439,"description":1679},"Hb62Zadr-PaU06SzG7J4BDpm3lmOnHwUwKY8MosspyU",1784019064255]