[{"data":1,"prerenderedAt":820},["ShallowReactive",2],{"navigation":3,"-docs-migration":224,"-docs-migration-surround":815},[4,83,208,214,221],{"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],{"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},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":209,"path":210,"stem":211,"children":212,"icon":36},"Config","/config","3.config/0.index",[213],{"title":209,"path":210,"stem":211,"icon":36},{"title":215,"path":216,"stem":217,"children":218,"icon":220},"Examples","/examples","4.examples/0.index",[219],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-folder-code",{"title":5,"path":222,"stem":223},"/","index",{"id":225,"title":73,"body":226,"description":5,"extension":810,"meta":811,"navigation":812,"path":74,"seo":813,"stem":75,"__hash__":814},"content/1.docs/99.migration.md",{"type":227,"value":228,"toc":799,"icon":76},"minimark",[229,236,239,251,266,283,367,372,387,391,398,413,417,426,435,439,456,460,466,471,486,490,500,503,507,514,518,521,524,712,716,719,751,757,761,780,784,795],[230,231,232],"note",{},[233,234,235],"p",{},"\nThis is a living document for migrating from Nitro 2 to 3. Please check it regularly while using the beta version.",[233,237,238],{},"Nitro v3 introduces intentional backward-incompatible changes. This guide helps you migrate from Nitro v2.",[240,241,243,247,248],"h2",{"id":242},"nitropack-is-renamed-to-nitro",[244,245,246],"code",{},"nitropack"," is renamed to ",[244,249,250],{},"nitro",[233,252,253,254,260,261,265],{},"The NPM package ",[255,256,246],"a",{"href":257,"rel":258},"https://www.npmjs.com/package/nitropack",[259],"nofollow"," (v2) has been renamed to ",[255,262,250],{"href":263,"rel":264},"https://www.npmjs.com/package/nitro",[259]," (v3).",[233,267,268,272,273,275,276,278,279,282],{},[269,270,271],"strong",{},"Migration:"," Update the ",[244,274,246],{}," dependency to ",[244,277,250],{}," in ",[244,280,281],{},"package.json",":",[284,285,286,336],"CodeGroup",{},[287,288,293],"pre",{"className":289,"code":290,"filename":291,"language":292,"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",[244,294,295,304,310,317,324,330],{"__ignoreMap":5},[296,297,300],"span",{"class":298,"line":299},"line",1,[296,301,303],{"class":302},"slsVL","{\n",[296,305,307],{"class":298,"line":306},2,[296,308,309],{"class":302},"  \"dependencies\": {\n",[296,311,313],{"class":298,"line":312},3,[296,314,316],{"class":315},"sLpD_","--    \"nitropack\": \"latest\"\n",[296,318,320],{"class":298,"line":319},4,[296,321,323],{"class":322},"sByVh","++    \"nitro\": \"latest\"\n",[296,325,327],{"class":298,"line":326},5,[296,328,329],{"class":302},"  }\n",[296,331,333],{"class":298,"line":332},6,[296,334,335],{"class":302},"}\n",[287,337,340],{"className":289,"code":338,"filename":339,"language":292,"meta":5,"style":5},"{\n  \"dependencies\": {\n--    \"nitropack\": \"latest\"\n++    \"nitro\": \"npm:nitro-nightly\"\n  }\n}\n","nightly channel",[244,341,342,346,350,354,359,363],{"__ignoreMap":5},[296,343,344],{"class":298,"line":299},[296,345,303],{"class":302},[296,347,348],{"class":298,"line":306},[296,349,309],{"class":302},[296,351,352],{"class":298,"line":312},[296,353,316],{"class":315},[296,355,356],{"class":298,"line":319},[296,357,358],{"class":322},"++    \"nitro\": \"npm:nitro-nightly\"\n",[296,360,361],{"class":298,"line":326},[296,362,329],{"class":302},[296,364,365],{"class":298,"line":332},[296,366,335],{"class":302},[233,368,369,371],{},[269,370,271],{}," Search your codebase and rename all instances of nitropack to nitro:",[287,373,375],{"className":289,"code":374,"language":292,"meta":5,"style":5},"-- import { defineNitroConfig } from \"nitropack/config\"\n++ import { defineNitroConfig } from \"nitro/config\"\n",[244,376,377,382],{"__ignoreMap":5},[296,378,379],{"class":298,"line":299},[296,380,381],{"class":315},"-- import { defineNitroConfig } from \"nitropack/config\"\n",[296,383,384],{"class":298,"line":306},[296,385,386],{"class":322},"++ import { defineNitroConfig } from \"nitro/config\"\n",[240,388,390],{"id":389},"nitroruntime","nitro/runtime",[233,392,393,394,397],{},"Runtime utils had been moved to individual ",[244,395,396],{},"nitro/*"," subpath exports. Refer to docs for usage.",[287,399,401],{"className":289,"code":400,"language":292,"meta":5,"style":5},"-- import { useStorage } from \"nitropack/runtime/storage\"\n++ import { useStorage } from \"nitro/storage\"\n",[244,402,403,408],{"__ignoreMap":5},[296,404,405],{"class":298,"line":299},[296,406,407],{"class":315},"-- import { useStorage } from \"nitropack/runtime/storage\"\n",[296,409,410],{"class":298,"line":306},[296,411,412],{"class":322},"++ import { useStorage } from \"nitro/storage\"\n",[240,414,416],{"id":415},"minimum-supported-nodejs-version-20","Minimum Supported Node.js Version: 20",[233,418,419,420,425],{},"Nitro now requires a minimum Node.js version of 20, as Node.js 18 reaches end-of-life in ",[255,421,424],{"href":422,"rel":423},"https://nodejs.org/en/about/previous-releases",[259],"April 2025",".",[233,427,428,429,434],{},"Please upgrade to the ",[255,430,433],{"href":431,"rel":432},"https://nodejs.org/en/download",[259],"latest LTS"," version (>= 20).",[233,436,437],{},[269,438,271],{},[440,441,442,450,453],"ul",{},[443,444,445,446,449],"li",{},"Check your local Node.js version using ",[244,447,448],{},"node --version"," and update if necessary.",[443,451,452],{},"If you use a CI/CD system for deployment, ensure that your pipeline is running Node.js 20 or higher.",[443,454,455],{},"If your hosting provider manages the Node.js runtime, make sure it’s set to version 20, 22, or later.",[240,457,459],{"id":458},"type-imports","Type Imports",[233,461,462,463,425],{},"Nitro types are now only exported from ",[244,464,465],{},"nitro/types",[233,467,468,470],{},[269,469,271],{}," Import types from nitro/types instead of nitro:",[287,472,474],{"className":289,"code":473,"language":292,"meta":5,"style":5},"-- import { NitroRuntimeConfig } from \"nitropack\"\n++ import { NitroRuntimeConfig } from \"nitro/types\"\n",[244,475,476,481],{"__ignoreMap":5},[296,477,478],{"class":298,"line":299},[296,479,480],{"class":315},"-- import { NitroRuntimeConfig } from \"nitropack\"\n",[296,482,483],{"class":298,"line":306},[296,484,485],{"class":322},"++ import { NitroRuntimeConfig } from \"nitro/types\"\n",[240,487,489],{"id":488},"app-config-support-removed","App Config Support Removed",[233,491,492,493,496,497,425],{},"Nitro v2 supported a bundled app config that allowed defining configurations in ",[244,494,495],{},"app.config.ts"," and accessing them at runtime via ",[244,498,499],{},"useAppConfig()",[233,501,502],{},"This feature had been removed.",[233,504,505],{},[269,506,271],{},[233,508,509,510,513],{},"Use a regular ",[244,511,512],{},".ts"," file in your server directory and import it directly.",[240,515,517],{"id":516},"preset-updates","Preset updates",[233,519,520],{},"Nitro presets have been updated for the latest compatibility.",[233,522,523],{},"Some (legacy) presets have been removed or renamed.",[525,526,527,540],"table",{},[528,529,530],"thead",{},[531,532,533,537],"tr",{},[534,535,536],"th",{},"Old Preset",[534,538,539],{},"New Preset",[541,542,543,561,580,593,609,622,637,649,661,673,683,693,703],"tbody",{},[531,544,545,551],{},[546,547,548],"td",{},[244,549,550],{},"node",[546,552,553,556,557,560],{},[244,554,555],{},"node-middleware"," (export changed to ",[244,558,559],{},"middleware",")",[531,562,563,575],{},[546,564,565,568,569,568,572],{},[244,566,567],{},"cloudflare",", ",[244,570,571],{},"cloudflare_worker",[244,573,574],{},"cloudflare_module_legacy",[546,576,577],{},[244,578,579],{},"cloudflare_module",[531,581,582,587],{},[546,583,584],{},[244,585,586],{},"deno-server-legacy",[546,588,589,592],{},[244,590,591],{},"deno_server"," with Deno v2",[531,594,595,600],{},[546,596,597],{},[244,598,599],{},"netlify-builder",[546,601,602,605,606],{},[244,603,604],{},"netlify_functions"," or ",[244,607,608],{},"netlify_edge",[531,610,611,616],{},[546,612,613],{},[244,614,615],{},"vercel-edge",[546,617,618,621],{},[244,619,620],{},"vercel"," with Fluid compute enabled",[531,623,624,632],{},[546,625,626,568,629],{},[244,627,628],{},"azure",[244,630,631],{},"azure_functions",[546,633,634],{},[244,635,636],{},"azure_swa",[531,638,639,644],{},[546,640,641],{},[244,642,643],{},"firebase",[546,645,646],{},[244,647,648],{},"firebase-functions",[531,650,651,656],{},[546,652,653],{},[244,654,655],{},"iis",[546,657,658],{},[244,659,660],{},"iis-handler",[531,662,663,668],{},[546,664,665],{},[244,666,667],{},"deno",[546,669,670],{},[244,671,672],{},"deno-deploy",[531,674,675,680],{},[546,676,677],{},[244,678,679],{},"edgio",[546,681,682],{},"Discontinued",[531,684,685,690],{},[546,686,687],{},[244,688,689],{},"cli",[546,691,692],{},"Removed due to lack of use",[531,694,695,700],{},[546,696,697],{},[244,698,699],{},"service_worker",[546,701,702],{},"Removed due to instability",[531,704,705,709],{},[546,706,707],{},[244,708,643],{},[546,710,711],{},"Use new firebase app hosting",[240,713,715],{"id":714},"changed-nitro-subpath-imports","Changed nitro subpath imports",[233,717,718],{},"Nitro v2 introduced multiple subpath exports, some of which have been removed or updated:",[440,720,721,733,740,746],{},[443,722,723,568,726,729,730,560],{},[244,724,725],{},"nitro/rollup",[244,727,728],{},"nitropack/core"," (use ",[244,731,732],{},"nitro/builder",[443,734,735,729,738,560],{},[244,736,737],{},"nitropack/runtime/*",[244,739,396],{},[443,741,742,745],{},[244,743,744],{},"nitropack/kit"," (removed)",[443,747,748,745],{},[244,749,750],{},"nitropack/presets",[233,752,753,754,756],{},"An experimental ",[244,755,744],{}," was introduced but has now been removed. A standalone Nitro Kit package may be introduced in the future with clearer objectives.",[233,758,759],{},[269,760,271],{},[440,762,763,777],{},[443,764,765,766,769,770,772,773,776],{},"Use ",[244,767,768],{},"NitroModule"," from ",[244,771,465],{}," instead of ",[244,774,775],{},"defineNitroModule"," from the kit.",[443,778,779],{},"Prefer built-in Nitro presets (external presets are only for evaluation purposes).",[240,781,783],{"id":782},"optional-hooks","Optional Hooks",[233,785,786,787,790,791,794],{},"If you were using ",[244,788,789],{},"useNitroApp().hooks"," outside of Nitro plugins before, it might be undefined. Use new ",[244,792,793],{},"useNitroHooks()"," to guarantee having an instance.",[796,797,798],"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":306,"depth":306,"links":800},[801,803,804,805,806,807,808,809],{"id":242,"depth":306,"text":802},"nitropack is renamed to nitro",{"id":389,"depth":306,"text":390},{"id":415,"depth":306,"text":416},{"id":458,"depth":306,"text":459},{"id":488,"depth":306,"text":489},{"id":516,"depth":306,"text":517},{"id":714,"depth":306,"text":715},{"id":782,"depth":306,"text":783},"md",{"icon":76},{"icon":76},{"title":73,"description":5},"9Uv4c1fily1z5Qco6JkFvEdDQvpHP1FdhR5mKMhWfcs",[816,818],{"title":68,"path":69,"stem":70,"description":817,"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":819,"icon":81,"children":-1},"Nitro has a nightly release channel that automatically releases for every commit to main branch to try latest changes.",1771523838707]