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