[{"data":1,"prerenderedAt":824},["ShallowReactive",2],{"navigation":3,"-docs-migration":228,"-docs-migration-surround":819},[4,83,212,218,225],{"title":5,"path":6,"stem":7,"children":8,"icon":82},"","/docs","1.docs/1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","/docs/quick-start","1.docs/2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","/docs/renderer","1.docs/4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/docs/routing","1.docs/5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","/docs/assets","1.docs/50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","/docs/configuration","1.docs/50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","/docs/database","1.docs/50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","/docs/lifecycle","1.docs/50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"Plugins","/docs/plugins","1.docs/50.plugins","ri:plug-line",{"title":53,"path":54,"stem":55,"icon":56},"Tasks","/docs/tasks","1.docs/50.tasks","codicon:run-all",{"title":58,"path":59,"stem":60,"icon":61},"Server Entry","/docs/server-entry","1.docs/6.server-entry","ri:server-line",{"title":63,"path":64,"stem":65,"icon":66},"Cache","/docs/cache","1.docs/7.cache","ri:speed-line",{"title":68,"path":69,"stem":70,"icon":71},"KV Storage","/docs/storage","1.docs/8.storage","carbon:datastore",{"title":73,"path":74,"stem":75,"icon":76},"Migration Guide","/docs/migration","1.docs/99.migration","ri:arrow-right-up-line",{"title":78,"path":79,"stem":80,"icon":81},"Nightly Channel","/docs/nightly","1.docs/99.nightly","ri:moon-fill","i-lucide-book-open",{"title":84,"path":85,"stem":86,"children":87,"icon":89},"Deploy","/deploy","2.deploy/0.index",[88,90,111],{"title":84,"path":85,"stem":86,"icon":89},"ri:upload-cloud-2-line",{"title":91,"path":92,"stem":93,"children":94,"page":110},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[95,100,105],{"title":96,"path":97,"stem":98,"icon":99},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":101,"path":102,"stem":103,"icon":104},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":106,"path":107,"stem":108,"icon":109},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":112,"path":113,"stem":114,"children":115,"page":110},"Providers","/deploy/providers","2.deploy/20.providers",[116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208],{"title":117,"path":118,"stem":119},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":121,"path":122,"stem":123},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":125,"path":126,"stem":127},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":129,"path":130,"stem":131},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":133,"path":134,"stem":135},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":137,"path":138,"stem":139},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":141,"path":142,"stem":143},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":145,"path":146,"stem":147},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":149,"path":150,"stem":151},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":153,"path":154,"stem":155},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":157,"path":158,"stem":159},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":161,"path":162,"stem":163},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":165,"path":166,"stem":167},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":169,"path":170,"stem":171},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":173,"path":174,"stem":175},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":177,"path":178,"stem":179},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":181,"path":182,"stem":183},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":185,"path":186,"stem":187},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":189,"path":190,"stem":191},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":193,"path":194,"stem":195},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":197,"path":198,"stem":199},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":201,"path":202,"stem":203},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":205,"path":206,"stem":207},"Zephyr Cloud","/deploy/providers/zephyr","2.deploy/20.providers/zephyr",{"title":209,"path":210,"stem":211},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":213,"path":214,"stem":215,"children":216,"icon":36},"Config","/config","3.config/0.index",[217],{"title":213,"path":214,"stem":215,"icon":36},{"title":219,"path":220,"stem":221,"children":222,"icon":224},"Examples","/examples","4.examples/0.index",[223],{"title":219,"path":220,"stem":221,"icon":224},"i-lucide-folder-code",{"title":5,"path":226,"stem":227},"/","index",{"id":229,"title":73,"body":230,"description":5,"extension":814,"meta":815,"navigation":816,"path":74,"seo":817,"stem":75,"__hash__":818},"content/1.docs/99.migration.md",{"type":231,"value":232,"toc":803,"icon":76},"minimark",[233,240,243,255,270,287,371,376,391,395,402,417,421,430,439,443,460,464,470,475,490,494,504,507,511,518,522,525,528,716,720,723,755,761,765,784,788,799],[234,235,236],"note",{},[237,238,239],"p",{},"\nThis is a living document for migrating from Nitro 2 to 3. Please check it regularly while using the beta version.",[237,241,242],{},"Nitro v3 introduces intentional backward-incompatible changes. This guide helps you migrate from Nitro v2.",[244,245,247,251,252],"h2",{"id":246},"nitropack-is-renamed-to-nitro",[248,249,250],"code",{},"nitropack"," is renamed to ",[248,253,254],{},"nitro",[237,256,257,258,264,265,269],{},"The NPM package ",[259,260,250],"a",{"href":261,"rel":262},"https://www.npmjs.com/package/nitropack",[263],"nofollow"," (v2) has been renamed to ",[259,266,254],{"href":267,"rel":268},"https://www.npmjs.com/package/nitro",[263]," (v3).",[237,271,272,276,277,279,280,282,283,286],{},[273,274,275],"strong",{},"Migration:"," Update the ",[248,278,250],{}," dependency to ",[248,281,254],{}," in ",[248,284,285],{},"package.json",":",[288,289,290,340],"CodeGroup",{},[291,292,297],"pre",{"className":293,"code":294,"filename":295,"language":296,"meta":5,"style":5},"language-diff shiki shiki-themes github-light github-dark github-dark","{\n  \"dependencies\": {\n--    \"nitropack\": \"latest\"\n++    \"nitro\": \"latest\"\n  }\n}\n","release channel","diff",[248,298,299,308,314,321,328,334],{"__ignoreMap":5},[300,301,304],"span",{"class":302,"line":303},"line",1,[300,305,307],{"class":306},"slsVL","{\n",[300,309,311],{"class":302,"line":310},2,[300,312,313],{"class":306},"  \"dependencies\": {\n",[300,315,317],{"class":302,"line":316},3,[300,318,320],{"class":319},"sLpD_","--    \"nitropack\": \"latest\"\n",[300,322,324],{"class":302,"line":323},4,[300,325,327],{"class":326},"sByVh","++    \"nitro\": \"latest\"\n",[300,329,331],{"class":302,"line":330},5,[300,332,333],{"class":306},"  }\n",[300,335,337],{"class":302,"line":336},6,[300,338,339],{"class":306},"}\n",[291,341,344],{"className":293,"code":342,"filename":343,"language":296,"meta":5,"style":5},"{\n  \"dependencies\": {\n--    \"nitropack\": \"latest\"\n++    \"nitro\": \"npm:nitro-nightly\"\n  }\n}\n","nightly channel",[248,345,346,350,354,358,363,367],{"__ignoreMap":5},[300,347,348],{"class":302,"line":303},[300,349,307],{"class":306},[300,351,352],{"class":302,"line":310},[300,353,313],{"class":306},[300,355,356],{"class":302,"line":316},[300,357,320],{"class":319},[300,359,360],{"class":302,"line":323},[300,361,362],{"class":326},"++    \"nitro\": \"npm:nitro-nightly\"\n",[300,364,365],{"class":302,"line":330},[300,366,333],{"class":306},[300,368,369],{"class":302,"line":336},[300,370,339],{"class":306},[237,372,373,375],{},[273,374,275],{}," Search your codebase and rename all instances of nitropack to nitro:",[291,377,379],{"className":293,"code":378,"language":296,"meta":5,"style":5},"-- import { defineNitroConfig } from \"nitropack/config\"\n++ import { defineNitroConfig } from \"nitro/config\"\n",[248,380,381,386],{"__ignoreMap":5},[300,382,383],{"class":302,"line":303},[300,384,385],{"class":319},"-- import { defineNitroConfig } from \"nitropack/config\"\n",[300,387,388],{"class":302,"line":310},[300,389,390],{"class":326},"++ import { defineNitroConfig } from \"nitro/config\"\n",[244,392,394],{"id":393},"nitroruntime","nitro/runtime",[237,396,397,398,401],{},"Runtime utils had been moved to individual ",[248,399,400],{},"nitro/*"," subpath exports. Refer to docs for usage.",[291,403,405],{"className":293,"code":404,"language":296,"meta":5,"style":5},"-- import { useStorage } from \"nitropack/runtime/storage\"\n++ import { useStorage } from \"nitro/storage\"\n",[248,406,407,412],{"__ignoreMap":5},[300,408,409],{"class":302,"line":303},[300,410,411],{"class":319},"-- import { useStorage } from \"nitropack/runtime/storage\"\n",[300,413,414],{"class":302,"line":310},[300,415,416],{"class":326},"++ import { useStorage } from \"nitro/storage\"\n",[244,418,420],{"id":419},"minimum-supported-nodejs-version-20","Minimum Supported Node.js Version: 20",[237,422,423,424,429],{},"Nitro now requires a minimum Node.js version of 20, as Node.js 18 reaches end-of-life in ",[259,425,428],{"href":426,"rel":427},"https://nodejs.org/en/about/previous-releases",[263],"April 2025",".",[237,431,432,433,438],{},"Please upgrade to the ",[259,434,437],{"href":435,"rel":436},"https://nodejs.org/en/download",[263],"latest LTS"," version (>= 20).",[237,440,441],{},[273,442,275],{},[444,445,446,454,457],"ul",{},[447,448,449,450,453],"li",{},"Check your local Node.js version using ",[248,451,452],{},"node --version"," and update if necessary.",[447,455,456],{},"If you use a CI/CD system for deployment, ensure that your pipeline is running Node.js 20 or higher.",[447,458,459],{},"If your hosting provider manages the Node.js runtime, make sure it’s set to version 20, 22, or later.",[244,461,463],{"id":462},"type-imports","Type Imports",[237,465,466,467,429],{},"Nitro types are now only exported from ",[248,468,469],{},"nitro/types",[237,471,472,474],{},[273,473,275],{}," Import types from nitro/types instead of nitro:",[291,476,478],{"className":293,"code":477,"language":296,"meta":5,"style":5},"-- import { NitroRuntimeConfig } from \"nitropack\"\n++ import { NitroRuntimeConfig } from \"nitro/types\"\n",[248,479,480,485],{"__ignoreMap":5},[300,481,482],{"class":302,"line":303},[300,483,484],{"class":319},"-- import { NitroRuntimeConfig } from \"nitropack\"\n",[300,486,487],{"class":302,"line":310},[300,488,489],{"class":326},"++ import { NitroRuntimeConfig } from \"nitro/types\"\n",[244,491,493],{"id":492},"app-config-support-removed","App Config Support Removed",[237,495,496,497,500,501,429],{},"Nitro v2 supported a bundled app config that allowed defining configurations in ",[248,498,499],{},"app.config.ts"," and accessing them at runtime via ",[248,502,503],{},"useAppConfig()",[237,505,506],{},"This feature had been removed.",[237,508,509],{},[273,510,275],{},[237,512,513,514,517],{},"Use a regular ",[248,515,516],{},".ts"," file in your server directory and import it directly.",[244,519,521],{"id":520},"preset-updates","Preset updates",[237,523,524],{},"Nitro presets have been updated for the latest compatibility.",[237,526,527],{},"Some (legacy) presets have been removed or renamed.",[529,530,531,544],"table",{},[532,533,534],"thead",{},[535,536,537,541],"tr",{},[538,539,540],"th",{},"Old Preset",[538,542,543],{},"New Preset",[545,546,547,565,584,597,613,626,641,653,665,677,687,697,707],"tbody",{},[535,548,549,555],{},[550,551,552],"td",{},[248,553,554],{},"node",[550,556,557,560,561,564],{},[248,558,559],{},"node-middleware"," (export changed to ",[248,562,563],{},"middleware",")",[535,566,567,579],{},[550,568,569,572,573,572,576],{},[248,570,571],{},"cloudflare",", ",[248,574,575],{},"cloudflare_worker",[248,577,578],{},"cloudflare_module_legacy",[550,580,581],{},[248,582,583],{},"cloudflare_module",[535,585,586,591],{},[550,587,588],{},[248,589,590],{},"deno-server-legacy",[550,592,593,596],{},[248,594,595],{},"deno_server"," with Deno v2",[535,598,599,604],{},[550,600,601],{},[248,602,603],{},"netlify-builder",[550,605,606,609,610],{},[248,607,608],{},"netlify_functions"," or ",[248,611,612],{},"netlify_edge",[535,614,615,620],{},[550,616,617],{},[248,618,619],{},"vercel-edge",[550,621,622,625],{},[248,623,624],{},"vercel"," with Fluid compute enabled",[535,627,628,636],{},[550,629,630,572,633],{},[248,631,632],{},"azure",[248,634,635],{},"azure_functions",[550,637,638],{},[248,639,640],{},"azure_swa",[535,642,643,648],{},[550,644,645],{},[248,646,647],{},"firebase",[550,649,650],{},[248,651,652],{},"firebase-functions",[535,654,655,660],{},[550,656,657],{},[248,658,659],{},"iis",[550,661,662],{},[248,663,664],{},"iis-handler",[535,666,667,672],{},[550,668,669],{},[248,670,671],{},"deno",[550,673,674],{},[248,675,676],{},"deno-deploy",[535,678,679,684],{},[550,680,681],{},[248,682,683],{},"edgio",[550,685,686],{},"Discontinued",[535,688,689,694],{},[550,690,691],{},[248,692,693],{},"cli",[550,695,696],{},"Removed due to lack of use",[535,698,699,704],{},[550,700,701],{},[248,702,703],{},"service_worker",[550,705,706],{},"Removed due to instability",[535,708,709,713],{},[550,710,711],{},[248,712,647],{},[550,714,715],{},"Use new firebase app hosting",[244,717,719],{"id":718},"changed-nitro-subpath-imports","Changed nitro subpath imports",[237,721,722],{},"Nitro v2 introduced multiple subpath exports, some of which have been removed or updated:",[444,724,725,737,744,750],{},[447,726,727,572,730,733,734,564],{},[248,728,729],{},"nitro/rollup",[248,731,732],{},"nitropack/core"," (use ",[248,735,736],{},"nitro/builder",[447,738,739,733,742,564],{},[248,740,741],{},"nitropack/runtime/*",[248,743,400],{},[447,745,746,749],{},[248,747,748],{},"nitropack/kit"," (removed)",[447,751,752,749],{},[248,753,754],{},"nitropack/presets",[237,756,757,758,760],{},"An experimental ",[248,759,748],{}," was introduced but has now been removed. A standalone Nitro Kit package may be introduced in the future with clearer objectives.",[237,762,763],{},[273,764,275],{},[444,766,767,781],{},[447,768,769,770,773,774,776,777,780],{},"Use ",[248,771,772],{},"NitroModule"," from ",[248,775,469],{}," instead of ",[248,778,779],{},"defineNitroModule"," from the kit.",[447,782,783],{},"Prefer built-in Nitro presets (external presets are only for evaluation purposes).",[244,785,787],{"id":786},"optional-hooks","Optional Hooks",[237,789,790,791,794,795,798],{},"If you were using ",[248,792,793],{},"useNitroApp().hooks"," outside of Nitro plugins before, it might be undefined. Use new ",[248,796,797],{},"useNitroHooks()"," to guarantee having an instance.",[800,801,802],"style",{},"html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sLpD_, html code.shiki .sLpD_{--shiki-light:#B31D28;--shiki-default:#FDAEB7;--shiki-dark:#FDAEB7}html pre.shiki code .sByVh, html code.shiki .sByVh{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#85E89D}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);}",{"title":5,"searchDepth":310,"depth":310,"links":804},[805,807,808,809,810,811,812,813],{"id":246,"depth":310,"text":806},"nitropack is renamed to nitro",{"id":393,"depth":310,"text":394},{"id":419,"depth":310,"text":420},{"id":462,"depth":310,"text":463},{"id":492,"depth":310,"text":493},{"id":520,"depth":310,"text":521},{"id":718,"depth":310,"text":719},{"id":786,"depth":310,"text":787},"md",{"icon":76},{"icon":76},{"title":73,"description":5},"9Uv4c1fily1z5Qco6JkFvEdDQvpHP1FdhR5mKMhWfcs",[820,822],{"title":68,"path":69,"stem":70,"description":821,"icon":71,"children":-1},"Nitro provides a built-in storage layer that can abstract filesystem or database or any other data source.",{"title":78,"path":79,"stem":80,"description":823,"icon":81,"children":-1},"Nitro has a nightly release channel that automatically releases for every commit to main branch to try latest changes.",1773176187336]