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