[{"data":1,"prerenderedAt":10206},["ShallowReactive",2],{"$fGCo9l1hMtNdUiA6QzdUX5X3kLqaWcC5t2kdz4LrvCvc":3,"versions":2842,"-docs-3-x-getting-started-upgrade":2847,"-docs-3-x-getting-started-upgrade-surround":10201},[4,1120,1940,2753],{"title":5,"titleTemplate":6,"icon":7,"path":8,"stem":9,"children":10,"page":108},"Docs",null,"i-lucide-book-marked","/docs/3.x","docs/3.x",[11,109,246,426,907,999,1036,1078],{"title":12,"titleTemplate":13,"icon":14,"path":15,"stem":16,"children":17,"page":108},"Get Started","%s · Get Started with Nuxt","i-lucide-rocket","/docs/3.x/getting-started","docs/3.x/1.getting-started",[18,23,28,33,38,43,48,53,58,63,68,73,78,83,88,93,98,103],{"title":19,"path":20,"stem":21,"titleTemplate":6,"icon":22},"Introduction","/docs/3.x/getting-started/introduction","docs/3.x/1.getting-started/01.introduction","i-lucide-info",{"title":24,"path":25,"stem":26,"titleTemplate":6,"icon":27},"Installation","/docs/3.x/getting-started/installation","docs/3.x/1.getting-started/02.installation","i-lucide-play",{"title":29,"path":30,"stem":31,"titleTemplate":6,"icon":32},"Configuration","/docs/3.x/getting-started/configuration","docs/3.x/1.getting-started/03.configuration","i-lucide-cog",{"title":34,"path":35,"stem":36,"titleTemplate":6,"icon":37},"Views","/docs/3.x/getting-started/views","docs/3.x/1.getting-started/04.views","i-lucide-panels-top-left",{"title":39,"path":40,"stem":41,"titleTemplate":6,"icon":42},"Assets","/docs/3.x/getting-started/assets","docs/3.x/1.getting-started/05.assets","i-lucide-image",{"title":44,"path":45,"stem":46,"titleTemplate":6,"icon":47},"Styling","/docs/3.x/getting-started/styling","docs/3.x/1.getting-started/06.styling","i-lucide-palette",{"title":49,"path":50,"stem":51,"titleTemplate":6,"icon":52},"Routing","/docs/3.x/getting-started/routing","docs/3.x/1.getting-started/07.routing","i-lucide-milestone",{"title":54,"path":55,"stem":56,"titleTemplate":6,"icon":57},"SEO and Meta","/docs/3.x/getting-started/seo-meta","docs/3.x/1.getting-started/08.seo-meta","i-lucide-file-search",{"title":59,"path":60,"stem":61,"titleTemplate":6,"icon":62},"Transitions","/docs/3.x/getting-started/transitions","docs/3.x/1.getting-started/09.transitions","i-lucide-toggle-right",{"title":64,"path":65,"stem":66,"titleTemplate":6,"icon":67},"Data Fetching","/docs/3.x/getting-started/data-fetching","docs/3.x/1.getting-started/10.data-fetching","i-lucide-cable",{"title":69,"path":70,"stem":71,"titleTemplate":6,"icon":72},"State Management","/docs/3.x/getting-started/state-management","docs/3.x/1.getting-started/11.state-management","i-lucide-database",{"title":74,"path":75,"stem":76,"titleTemplate":6,"icon":77},"Error Handling","/docs/3.x/getting-started/error-handling","docs/3.x/1.getting-started/12.error-handling","i-lucide-bug-off",{"title":79,"path":80,"stem":81,"titleTemplate":6,"icon":82},"Server","/docs/3.x/getting-started/server","docs/3.x/1.getting-started/13.server","i-lucide-pc-case",{"title":84,"path":85,"stem":86,"titleTemplate":6,"icon":87},"Layers","/docs/3.x/getting-started/layers","docs/3.x/1.getting-started/14.layers","i-lucide-layers",{"title":89,"path":90,"stem":91,"titleTemplate":6,"icon":92},"Prerendering","/docs/3.x/getting-started/prerendering","docs/3.x/1.getting-started/15.prerendering","i-lucide-file-code-2",{"title":94,"path":95,"stem":96,"titleTemplate":6,"icon":97},"Deployment","/docs/3.x/getting-started/deployment","docs/3.x/1.getting-started/16.deployment","i-lucide-cloud",{"title":99,"path":100,"stem":101,"titleTemplate":6,"icon":102},"Testing","/docs/3.x/getting-started/testing","docs/3.x/1.getting-started/17.testing","i-lucide-circle-check",{"title":104,"path":105,"stem":106,"titleTemplate":6,"icon":107},"Upgrade Guide","/docs/3.x/getting-started/upgrade","docs/3.x/1.getting-started/18.upgrade","i-lucide-circle-arrow-up",false,{"title":110,"titleTemplate":111,"icon":112,"path":113,"stem":114,"children":115,"page":108},"Directory Structure","%s · Nuxt Directory Structure","i-vscode-icons-default-folder","/docs/3.x/directory-structure","docs/3.x/2.directory-structure",[116,121,126,131,136,141,146,151,156,161,165,170,174,179,184,189,194,199,204,209,214,218,223,228,232,236,241],{"title":117,"path":118,"stem":119,"titleTemplate":6,"icon":120},".nuxt","/docs/3.x/directory-structure/nuxt","docs/3.x/2.directory-structure/0.nuxt","i-vscode-icons-folder-type-temp",{"title":122,"path":123,"stem":124,"titleTemplate":6,"icon":125},".output","/docs/3.x/directory-structure/output","docs/3.x/2.directory-structure/0.output","i-vscode-icons-folder-type-package",{"title":127,"path":128,"stem":129,"titleTemplate":6,"icon":130},"assets","/docs/3.x/directory-structure/assets","docs/3.x/2.directory-structure/1.assets","i-vscode-icons-folder-type-asset",{"title":132,"path":133,"stem":134,"titleTemplate":6,"icon":135},"components","/docs/3.x/directory-structure/components","docs/3.x/2.directory-structure/1.components","i-vscode-icons-folder-type-component",{"title":137,"path":138,"stem":139,"titleTemplate":6,"icon":140},"composables","/docs/3.x/directory-structure/composables","docs/3.x/2.directory-structure/1.composables","i-vscode-icons-folder-type-src",{"title":142,"path":143,"stem":144,"titleTemplate":6,"icon":145},"content","/docs/3.x/directory-structure/content","docs/3.x/2.directory-structure/1.content","i-vscode-icons-folder-type-log",{"title":147,"path":148,"stem":149,"titleTemplate":6,"icon":150},"layers","/docs/3.x/directory-structure/layers","docs/3.x/2.directory-structure/1.layers","i-vscode-icons-folder-type-nuxt",{"title":152,"path":153,"stem":154,"titleTemplate":6,"icon":155},"layouts","/docs/3.x/directory-structure/layouts","docs/3.x/2.directory-structure/1.layouts","i-vscode-icons-folder-type-view",{"title":157,"path":158,"stem":159,"titleTemplate":6,"icon":160},"middleware","/docs/3.x/directory-structure/middleware","docs/3.x/2.directory-structure/1.middleware","i-vscode-icons-folder-type-middleware",{"title":162,"path":163,"stem":164,"titleTemplate":6,"icon":150},"modules","/docs/3.x/directory-structure/modules","docs/3.x/2.directory-structure/1.modules",{"title":166,"path":167,"stem":168,"titleTemplate":6,"icon":169},"node_modules","/docs/3.x/directory-structure/node_modules","docs/3.x/2.directory-structure/1.node_modules","i-vscode-icons-folder-type-node",{"title":171,"path":172,"stem":173,"titleTemplate":6,"icon":155},"pages","/docs/3.x/directory-structure/pages","docs/3.x/2.directory-structure/1.pages",{"title":175,"path":176,"stem":177,"titleTemplate":6,"icon":178},"plugins","/docs/3.x/directory-structure/plugins","docs/3.x/2.directory-structure/1.plugins","i-vscode-icons-folder-type-plugin",{"title":180,"path":181,"stem":182,"titleTemplate":6,"icon":183},"public","/docs/3.x/directory-structure/public","docs/3.x/2.directory-structure/1.public","i-vscode-icons-folder-type-public",{"title":185,"path":186,"stem":187,"titleTemplate":6,"icon":188},"server","/docs/3.x/directory-structure/server","docs/3.x/2.directory-structure/1.server","i-vscode-icons-folder-type-server",{"title":190,"path":191,"stem":192,"titleTemplate":6,"icon":193},"shared","/docs/3.x/directory-structure/shared","docs/3.x/2.directory-structure/1.shared","i-vscode-icons-folder-type-shared",{"title":195,"path":196,"stem":197,"titleTemplate":6,"icon":198},"utils","/docs/3.x/directory-structure/utils","docs/3.x/2.directory-structure/1.utils","i-vscode-icons-folder-type-tools",{"title":200,"path":201,"stem":202,"titleTemplate":6,"icon":203},".env","/docs/3.x/directory-structure/env","docs/3.x/2.directory-structure/2.env","i-vscode-icons-file-type-dotenv",{"title":205,"path":206,"stem":207,"titleTemplate":6,"icon":208},".gitignore","/docs/3.x/directory-structure/gitignore","docs/3.x/2.directory-structure/2.gitignore","i-vscode-icons-file-type-git",{"title":210,"path":211,"stem":212,"titleTemplate":6,"icon":213},".nuxtignore","/docs/3.x/directory-structure/nuxtignore","docs/3.x/2.directory-structure/2.nuxtignore","i-vscode-icons-file-type-nuxt",{"title":215,"path":216,"stem":217,"titleTemplate":6,"icon":213},".nuxtrc","/docs/3.x/directory-structure/nuxtrc","docs/3.x/2.directory-structure/2.nuxtrc",{"title":219,"path":220,"stem":221,"titleTemplate":6,"icon":222},"app.vue","/docs/3.x/directory-structure/app","docs/3.x/2.directory-structure/3.app","i-vscode-icons-file-type-vue",{"title":224,"path":225,"stem":226,"titleTemplate":6,"icon":227},"app.config.ts","/docs/3.x/directory-structure/app-config","docs/3.x/2.directory-structure/3.app-config","i-vscode-icons-file-type-light-config",{"title":229,"path":230,"stem":231,"titleTemplate":6,"icon":222},"error.vue","/docs/3.x/directory-structure/error","docs/3.x/2.directory-structure/3.error",{"title":233,"path":234,"stem":235,"titleTemplate":6,"icon":213},"nuxt.config.ts","/docs/3.x/directory-structure/nuxt-config","docs/3.x/2.directory-structure/3.nuxt-config",{"title":237,"path":238,"stem":239,"titleTemplate":6,"icon":240},"package.json","/docs/3.x/directory-structure/package","docs/3.x/2.directory-structure/3.package","i-vscode-icons-file-type-npm",{"title":242,"path":243,"stem":244,"titleTemplate":6,"icon":245},"tsconfig.json","/docs/3.x/directory-structure/tsconfig","docs/3.x/2.directory-structure/3.tsconfig","i-vscode-icons-file-type-tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":249,"stem":250,"children":251,"page":108},"Guide","i-lucide-book-open","/docs/3.x/guide","docs/3.x/3.guide",[252,287,306,321,356,379],{"title":253,"titleTemplate":254,"icon":255,"path":256,"stem":257,"children":258,"page":108},"Key Concepts","%s · Nuxt Concepts","i-lucide-medal","/docs/3.x/guide/concepts","docs/3.x/3.guide/1.concepts",[259,263,267,271,275,279,283],{"title":260,"path":261,"stem":262,"titleTemplate":6},"Rendering Modes","/docs/3.x/guide/concepts/rendering","docs/3.x/3.guide/1.concepts/1.rendering",{"title":264,"path":265,"stem":266,"titleTemplate":6},"Nuxt Lifecycle","/docs/3.x/guide/concepts/nuxt-lifecycle","docs/3.x/3.guide/1.concepts/2.nuxt-lifecycle",{"title":268,"path":269,"stem":270,"titleTemplate":6},"Auto-imports","/docs/3.x/guide/concepts/auto-imports","docs/3.x/3.guide/1.concepts/3.auto-imports",{"title":272,"path":273,"stem":274,"titleTemplate":6},"Server Engine","/docs/3.x/guide/concepts/server-engine","docs/3.x/3.guide/1.concepts/4.server-engine",{"title":276,"path":277,"stem":278,"titleTemplate":6},"Modules","/docs/3.x/guide/concepts/modules","docs/3.x/3.guide/1.concepts/5.modules",{"title":280,"path":281,"stem":282,"titleTemplate":6},"TypeScript","/docs/3.x/guide/concepts/typescript","docs/3.x/3.guide/1.concepts/8.typescript",{"title":284,"path":285,"stem":286,"titleTemplate":6},"Code Style","/docs/3.x/guide/concepts/code-style","docs/3.x/3.guide/1.concepts/9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":291,"stem":292,"children":293,"page":108},"Best Practices","%s · Best Practices","i-lucide-square-check","/docs/3.x/guide/best-practices","docs/3.x/3.guide/2.best-practices",[294,298,302],{"title":295,"path":296,"stem":297,"titleTemplate":6},"Nuxt and hydration","/docs/3.x/guide/best-practices/hydration","docs/3.x/3.guide/2.best-practices/hydration",{"title":299,"path":300,"stem":301,"titleTemplate":6},"Nuxt Performance","/docs/3.x/guide/best-practices/performance","docs/3.x/3.guide/2.best-practices/performance",{"title":303,"path":304,"stem":305,"titleTemplate":6},"Nuxt Plugins","/docs/3.x/guide/best-practices/plugins","docs/3.x/3.guide/2.best-practices/plugins",{"title":307,"titleTemplate":308,"icon":309,"path":310,"stem":311,"children":312,"page":108},"Working with AI","Working with AI: %s","i-lucide-bot","/docs/3.x/guide/ai","docs/3.x/3.guide/3.ai",[313,317],{"title":314,"path":315,"stem":316,"titleTemplate":6},"MCP Server","/docs/3.x/guide/ai/mcp","docs/3.x/3.guide/3.ai/1.mcp",{"title":318,"path":319,"stem":320,"titleTemplate":6},"LLMs.txt","/docs/3.x/guide/ai/llms-txt","docs/3.x/3.guide/3.ai/2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":325,"stem":326,"children":327,"page":108},"Module Author Guide","%s · Nuxt Modules Author Guide","i-lucide-box","/docs/3.x/guide/modules","docs/3.x/3.guide/4.modules",[328,332,336,340,344,348,352],{"title":329,"path":330,"stem":331,"titleTemplate":6},"Create Your First Module","/docs/3.x/guide/modules/getting-started","docs/3.x/3.guide/4.modules/1.getting-started",{"title":333,"path":334,"stem":335,"titleTemplate":6},"Understand Module Structure","/docs/3.x/guide/modules/module-anatomy","docs/3.x/3.guide/4.modules/2.module-anatomy",{"title":337,"path":338,"stem":339,"titleTemplate":6},"Add Plugins, Components & More","/docs/3.x/guide/modules/recipes-basics","docs/3.x/3.guide/4.modules/3.recipes-basics",{"title":341,"path":342,"stem":343,"titleTemplate":6},"Use Hooks & Extend Types","/docs/3.x/guide/modules/recipes-advanced","docs/3.x/3.guide/4.modules/4.recipes-advanced",{"title":345,"path":346,"stem":347,"titleTemplate":6},"Test Your Module","/docs/3.x/guide/modules/testing","docs/3.x/3.guide/4.modules/5.testing",{"title":349,"path":350,"stem":351,"titleTemplate":6},"Follow Best Practices","/docs/3.x/guide/modules/best-practices","docs/3.x/3.guide/4.modules/6.best-practices",{"title":353,"path":354,"stem":355,"titleTemplate":6},"Publish & Share Your Module","/docs/3.x/guide/modules/ecosystem","docs/3.x/3.guide/4.modules/7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":360,"stem":361,"children":362,"page":108},"Recipes","%s · Recipes","i-lucide-cooking-pot","/docs/3.x/guide/recipes","docs/3.x/3.guide/5.recipes",[363,367,371,375],{"title":364,"path":365,"stem":366,"titleTemplate":6},"Custom Routing","/docs/3.x/guide/recipes/custom-routing","docs/3.x/3.guide/5.recipes/1.custom-routing",{"title":368,"path":369,"stem":370,"titleTemplate":6},"Vite Plugins","/docs/3.x/guide/recipes/vite-plugin","docs/3.x/3.guide/5.recipes/2.vite-plugin",{"title":372,"path":373,"stem":374,"titleTemplate":6},"Custom useFetch","/docs/3.x/guide/recipes/custom-usefetch","docs/3.x/3.guide/5.recipes/3.custom-usefetch",{"title":376,"path":377,"stem":378,"titleTemplate":6},"Sessions and Authentication","/docs/3.x/guide/recipes/sessions-and-authentication","docs/3.x/3.guide/5.recipes/4.sessions-and-authentication",{"title":380,"titleTemplate":381,"icon":382,"path":383,"stem":384,"children":385,"page":108},"Going Further","%s · Nuxt Advanced","i-lucide-star","/docs/3.x/guide/going-further","docs/3.x/3.guide/6.going-further",[386,390,394,398,402,406,410,414,418,422],{"title":387,"path":388,"stem":389,"titleTemplate":6},"Custom Events","/docs/3.x/guide/going-further/events","docs/3.x/3.guide/6.going-further/1.events",{"title":391,"path":392,"stem":393,"titleTemplate":6},"Experimental Features","/docs/3.x/guide/going-further/experimental-features","docs/3.x/3.guide/6.going-further/1.experimental-features",{"title":395,"path":396,"stem":397,"titleTemplate":6},"Features","/docs/3.x/guide/going-further/features","docs/3.x/3.guide/6.going-further/1.features",{"title":399,"path":400,"stem":401,"titleTemplate":6},"Runtime Config","/docs/3.x/guide/going-further/runtime-config","docs/3.x/3.guide/6.going-further/10.runtime-config",{"title":403,"path":404,"stem":405,"titleTemplate":6},"Nightly Release Channel","/docs/3.x/guide/going-further/nightly-release-channel","docs/3.x/3.guide/6.going-further/11.nightly-release-channel",{"title":407,"path":408,"stem":409,"titleTemplate":6},"Lifecycle Hooks","/docs/3.x/guide/going-further/hooks","docs/3.x/3.guide/6.going-further/2.hooks",{"title":411,"path":412,"stem":413,"titleTemplate":6},"Nuxt Kit","/docs/3.x/guide/going-further/kit","docs/3.x/3.guide/6.going-further/4.kit",{"title":415,"path":416,"stem":417,"titleTemplate":6},"NuxtApp","/docs/3.x/guide/going-further/nuxt-app","docs/3.x/3.guide/6.going-further/6.nuxt-app",{"title":419,"path":420,"stem":421,"titleTemplate":6},"Authoring Nuxt Layers","/docs/3.x/guide/going-further/layers","docs/3.x/3.guide/6.going-further/7.layers",{"title":423,"path":424,"stem":425,"titleTemplate":6},"Debugging","/docs/3.x/guide/going-further/debugging","docs/3.x/3.guide/6.going-further/9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":430,"stem":431,"children":432,"page":108},"API","%s · Nuxt API","i-lucide-code-xml","/docs/3.x/api","docs/3.x/4.api",[433,499,622,745,816,889,902],{"title":434,"titleTemplate":435,"icon":324,"path":436,"stem":437,"children":438,"page":108},"Components","%s · Nuxt Components","/docs/3.x/api/components","docs/3.x/4.api/1.components",[439,443,447,451,455,459,463,467,471,475,479,483,487,491,495],{"title":440,"path":441,"stem":442,"titleTemplate":6},"\u003CClientOnly>","/docs/3.x/api/components/client-only","docs/3.x/4.api/1.components/1.client-only",{"title":444,"path":445,"stem":446,"titleTemplate":6},"\u003CDevOnly>","/docs/3.x/api/components/dev-only","docs/3.x/4.api/1.components/1.dev-only",{"title":448,"path":449,"stem":450,"titleTemplate":6},"\u003CNuxtClientFallback>","/docs/3.x/api/components/nuxt-client-fallback","docs/3.x/4.api/1.components/1.nuxt-client-fallback",{"title":452,"path":453,"stem":454,"titleTemplate":6},"\u003CNuxtPicture>","/docs/3.x/api/components/nuxt-picture","docs/3.x/4.api/1.components/10.nuxt-picture",{"title":456,"path":457,"stem":458,"titleTemplate":6},"\u003CTeleport>","/docs/3.x/api/components/teleports","docs/3.x/4.api/1.components/11.teleports",{"title":460,"path":461,"stem":462,"titleTemplate":6},"\u003CNuxtRouteAnnouncer>","/docs/3.x/api/components/nuxt-route-announcer","docs/3.x/4.api/1.components/12.nuxt-route-announcer",{"title":464,"path":465,"stem":466,"titleTemplate":6},"\u003CNuxtTime>","/docs/3.x/api/components/nuxt-time","docs/3.x/4.api/1.components/13.nuxt-time",{"title":468,"path":469,"stem":470,"titleTemplate":6},"\u003CNuxtPage>","/docs/3.x/api/components/nuxt-page","docs/3.x/4.api/1.components/2.nuxt-page",{"title":472,"path":473,"stem":474,"titleTemplate":6},"\u003CNuxtLayout>","/docs/3.x/api/components/nuxt-layout","docs/3.x/4.api/1.components/3.nuxt-layout",{"title":476,"path":477,"stem":478,"titleTemplate":6},"\u003CNuxtLink>","/docs/3.x/api/components/nuxt-link","docs/3.x/4.api/1.components/4.nuxt-link",{"title":480,"path":481,"stem":482,"titleTemplate":6},"\u003CNuxtLoadingIndicator>","/docs/3.x/api/components/nuxt-loading-indicator","docs/3.x/4.api/1.components/5.nuxt-loading-indicator",{"title":484,"path":485,"stem":486,"titleTemplate":6},"\u003CNuxtErrorBoundary>","/docs/3.x/api/components/nuxt-error-boundary","docs/3.x/4.api/1.components/6.nuxt-error-boundary",{"title":488,"path":489,"stem":490,"titleTemplate":6},"\u003CNuxtWelcome>","/docs/3.x/api/components/nuxt-welcome","docs/3.x/4.api/1.components/7.nuxt-welcome",{"title":492,"path":493,"stem":494,"titleTemplate":6},"\u003CNuxtIsland>","/docs/3.x/api/components/nuxt-island","docs/3.x/4.api/1.components/8.nuxt-island",{"title":496,"path":497,"stem":498,"titleTemplate":6},"\u003CNuxtImg>","/docs/3.x/api/components/nuxt-img","docs/3.x/4.api/1.components/9.nuxt-img",{"title":500,"titleTemplate":501,"icon":502,"path":503,"stem":504,"children":505,"page":108},"Composables","%s · Nuxt Composables","i-lucide-arrow-left-right","/docs/3.x/api/composables","docs/3.x/4.api/2.composables",[506,510,514,518,522,526,530,534,538,542,546,550,554,558,562,566,570,574,578,582,586,590,594,598,602,606,610,614,618],{"title":507,"path":508,"stem":509,"titleTemplate":6},"onPrehydrate","/docs/3.x/api/composables/on-prehydrate","docs/3.x/4.api/2.composables/on-prehydrate",{"title":511,"path":512,"stem":513,"titleTemplate":6},"useAppConfig","/docs/3.x/api/composables/use-app-config","docs/3.x/4.api/2.composables/use-app-config",{"title":515,"path":516,"stem":517,"titleTemplate":6},"useAsyncData","/docs/3.x/api/composables/use-async-data","docs/3.x/4.api/2.composables/use-async-data",{"title":519,"path":520,"stem":521,"titleTemplate":6},"useCookie","/docs/3.x/api/composables/use-cookie","docs/3.x/4.api/2.composables/use-cookie",{"title":523,"path":524,"stem":525,"titleTemplate":6},"useError","/docs/3.x/api/composables/use-error","docs/3.x/4.api/2.composables/use-error",{"title":527,"path":528,"stem":529,"titleTemplate":6},"useFetch","/docs/3.x/api/composables/use-fetch","docs/3.x/4.api/2.composables/use-fetch",{"title":531,"path":532,"stem":533,"titleTemplate":6},"useHead","/docs/3.x/api/composables/use-head","docs/3.x/4.api/2.composables/use-head",{"title":535,"path":536,"stem":537,"titleTemplate":6},"useHeadSafe","/docs/3.x/api/composables/use-head-safe","docs/3.x/4.api/2.composables/use-head-safe",{"title":539,"path":540,"stem":541,"titleTemplate":6},"useHydration","/docs/3.x/api/composables/use-hydration","docs/3.x/4.api/2.composables/use-hydration",{"title":543,"path":544,"stem":545,"titleTemplate":6},"useLazyAsyncData","/docs/3.x/api/composables/use-lazy-async-data","docs/3.x/4.api/2.composables/use-lazy-async-data",{"title":547,"path":548,"stem":549,"titleTemplate":6},"useLazyFetch","/docs/3.x/api/composables/use-lazy-fetch","docs/3.x/4.api/2.composables/use-lazy-fetch",{"title":551,"path":552,"stem":553,"titleTemplate":6},"useLoadingIndicator","/docs/3.x/api/composables/use-loading-indicator","docs/3.x/4.api/2.composables/use-loading-indicator",{"title":555,"path":556,"stem":557,"titleTemplate":6},"useNuxtApp","/docs/3.x/api/composables/use-nuxt-app","docs/3.x/4.api/2.composables/use-nuxt-app",{"title":559,"path":560,"stem":561,"titleTemplate":6},"useNuxtData","/docs/3.x/api/composables/use-nuxt-data","docs/3.x/4.api/2.composables/use-nuxt-data",{"title":563,"path":564,"stem":565,"titleTemplate":6},"usePreviewMode","/docs/3.x/api/composables/use-preview-mode","docs/3.x/4.api/2.composables/use-preview-mode",{"title":567,"path":568,"stem":569,"titleTemplate":6},"useRequestEvent","/docs/3.x/api/composables/use-request-event","docs/3.x/4.api/2.composables/use-request-event",{"title":571,"path":572,"stem":573,"titleTemplate":6},"useRequestFetch","/docs/3.x/api/composables/use-request-fetch","docs/3.x/4.api/2.composables/use-request-fetch",{"title":575,"path":576,"stem":577,"titleTemplate":6},"useRequestHeader","/docs/3.x/api/composables/use-request-header","docs/3.x/4.api/2.composables/use-request-header",{"title":579,"path":580,"stem":581,"titleTemplate":6},"useRequestHeaders","/docs/3.x/api/composables/use-request-headers","docs/3.x/4.api/2.composables/use-request-headers",{"title":583,"path":584,"stem":585,"titleTemplate":6},"useRequestURL","/docs/3.x/api/composables/use-request-url","docs/3.x/4.api/2.composables/use-request-url",{"title":587,"path":588,"stem":589,"titleTemplate":6},"useResponseHeader","/docs/3.x/api/composables/use-response-header","docs/3.x/4.api/2.composables/use-response-header",{"title":591,"path":592,"stem":593,"titleTemplate":6},"useRoute","/docs/3.x/api/composables/use-route","docs/3.x/4.api/2.composables/use-route",{"title":595,"path":596,"stem":597,"titleTemplate":6},"useRouteAnnouncer","/docs/3.x/api/composables/use-route-announcer","docs/3.x/4.api/2.composables/use-route-announcer",{"title":599,"path":600,"stem":601,"titleTemplate":6},"useRouter","/docs/3.x/api/composables/use-router","docs/3.x/4.api/2.composables/use-router",{"title":603,"path":604,"stem":605,"titleTemplate":6},"useRuntimeConfig","/docs/3.x/api/composables/use-runtime-config","docs/3.x/4.api/2.composables/use-runtime-config",{"title":607,"path":608,"stem":609,"titleTemplate":6},"useRuntimeHook","/docs/3.x/api/composables/use-runtime-hook","docs/3.x/4.api/2.composables/use-runtime-hook",{"title":611,"path":612,"stem":613,"titleTemplate":6},"useSeoMeta","/docs/3.x/api/composables/use-seo-meta","docs/3.x/4.api/2.composables/use-seo-meta",{"title":615,"path":616,"stem":617,"titleTemplate":6},"useServerSeoMeta","/docs/3.x/api/composables/use-server-seo-meta","docs/3.x/4.api/2.composables/use-server-seo-meta",{"title":619,"path":620,"stem":621,"titleTemplate":6},"useState","/docs/3.x/api/composables/use-state","docs/3.x/4.api/2.composables/use-state",{"title":623,"titleTemplate":624,"icon":625,"path":626,"stem":627,"children":628,"page":108},"Utils","%s · Nuxt Utils","i-lucide-square-function","/docs/3.x/api/utils","docs/3.x/4.api/3.utils",[629,633,637,641,645,649,653,657,661,665,669,673,677,681,685,689,693,697,701,705,709,713,717,721,725,729,733,737,741],{"title":630,"path":631,"stem":632,"titleTemplate":6},"$fetch","/docs/3.x/api/utils/dollarfetch","docs/3.x/4.api/3.utils/$fetch",{"title":634,"path":635,"stem":636,"titleTemplate":6},"abortNavigation","/docs/3.x/api/utils/abort-navigation","docs/3.x/4.api/3.utils/abort-navigation",{"title":638,"path":639,"stem":640,"titleTemplate":6},"addRouteMiddleware","/docs/3.x/api/utils/add-route-middleware","docs/3.x/4.api/3.utils/add-route-middleware",{"title":642,"path":643,"stem":644,"titleTemplate":6},"callOnce","/docs/3.x/api/utils/call-once","docs/3.x/4.api/3.utils/call-once",{"title":646,"path":647,"stem":648,"titleTemplate":6},"clearError","/docs/3.x/api/utils/clear-error","docs/3.x/4.api/3.utils/clear-error",{"title":650,"path":651,"stem":652,"titleTemplate":6},"clearNuxtData","/docs/3.x/api/utils/clear-nuxt-data","docs/3.x/4.api/3.utils/clear-nuxt-data",{"title":654,"path":655,"stem":656,"titleTemplate":6},"clearNuxtState","/docs/3.x/api/utils/clear-nuxt-state","docs/3.x/4.api/3.utils/clear-nuxt-state",{"title":658,"path":659,"stem":660,"titleTemplate":6},"createError","/docs/3.x/api/utils/create-error","docs/3.x/4.api/3.utils/create-error",{"title":662,"path":663,"stem":664,"titleTemplate":6},"defineLazyHydrationComponent","/docs/3.x/api/utils/define-lazy-hydration-component","docs/3.x/4.api/3.utils/define-lazy-hydration-component",{"title":666,"path":667,"stem":668,"titleTemplate":6},"defineNuxtComponent","/docs/3.x/api/utils/define-nuxt-component","docs/3.x/4.api/3.utils/define-nuxt-component",{"title":670,"path":671,"stem":672,"titleTemplate":6},"defineNuxtPlugin","/docs/3.x/api/utils/define-nuxt-plugin","docs/3.x/4.api/3.utils/define-nuxt-plugin",{"title":674,"path":675,"stem":676,"titleTemplate":6},"defineNuxtRouteMiddleware","/docs/3.x/api/utils/define-nuxt-route-middleware","docs/3.x/4.api/3.utils/define-nuxt-route-middleware",{"title":678,"path":679,"stem":680,"titleTemplate":6},"definePageMeta","/docs/3.x/api/utils/define-page-meta","docs/3.x/4.api/3.utils/define-page-meta",{"title":682,"path":683,"stem":684,"titleTemplate":6},"defineRouteRules","/docs/3.x/api/utils/define-route-rules","docs/3.x/4.api/3.utils/define-route-rules",{"title":686,"path":687,"stem":688,"titleTemplate":6},"navigateTo","/docs/3.x/api/utils/navigate-to","docs/3.x/4.api/3.utils/navigate-to",{"title":690,"path":691,"stem":692,"titleTemplate":6},"onBeforeRouteLeave","/docs/3.x/api/utils/on-before-route-leave","docs/3.x/4.api/3.utils/on-before-route-leave",{"title":694,"path":695,"stem":696,"titleTemplate":6},"onBeforeRouteUpdate","/docs/3.x/api/utils/on-before-route-update","docs/3.x/4.api/3.utils/on-before-route-update",{"title":698,"path":699,"stem":700,"titleTemplate":6},"onNuxtReady","/docs/3.x/api/utils/on-nuxt-ready","docs/3.x/4.api/3.utils/on-nuxt-ready",{"title":702,"path":703,"stem":704,"titleTemplate":6},"prefetchComponents","/docs/3.x/api/utils/prefetch-components","docs/3.x/4.api/3.utils/prefetch-components",{"title":706,"path":707,"stem":708,"titleTemplate":6},"preloadComponents","/docs/3.x/api/utils/preload-components","docs/3.x/4.api/3.utils/preload-components",{"title":710,"path":711,"stem":712,"titleTemplate":6},"preloadRouteComponents","/docs/3.x/api/utils/preload-route-components","docs/3.x/4.api/3.utils/preload-route-components",{"title":714,"path":715,"stem":716,"titleTemplate":6},"prerenderRoutes","/docs/3.x/api/utils/prerender-routes","docs/3.x/4.api/3.utils/prerender-routes",{"title":718,"path":719,"stem":720,"titleTemplate":6},"refreshCookie","/docs/3.x/api/utils/refresh-cookie","docs/3.x/4.api/3.utils/refresh-cookie",{"title":722,"path":723,"stem":724,"titleTemplate":6},"refreshNuxtData","/docs/3.x/api/utils/refresh-nuxt-data","docs/3.x/4.api/3.utils/refresh-nuxt-data",{"title":726,"path":727,"stem":728,"titleTemplate":6},"reloadNuxtApp","/docs/3.x/api/utils/reload-nuxt-app","docs/3.x/4.api/3.utils/reload-nuxt-app",{"title":730,"path":731,"stem":732,"titleTemplate":6},"setPageLayout","/docs/3.x/api/utils/set-page-layout","docs/3.x/4.api/3.utils/set-page-layout",{"title":734,"path":735,"stem":736,"titleTemplate":6},"setResponseStatus","/docs/3.x/api/utils/set-response-status","docs/3.x/4.api/3.utils/set-response-status",{"title":738,"path":739,"stem":740,"titleTemplate":6},"showError","/docs/3.x/api/utils/show-error","docs/3.x/4.api/3.utils/show-error",{"title":742,"path":743,"stem":744,"titleTemplate":6},"updateAppConfig","/docs/3.x/api/utils/update-app-config","docs/3.x/4.api/3.utils/update-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":749,"stem":750,"children":751,"page":108},"Commands","%s · Nuxt Commands","i-lucide-square-terminal","/docs/3.x/api/commands","docs/3.x/4.api/4.commands",[752,756,760,764,768,772,776,780,784,788,792,796,800,804,808,812],{"title":753,"path":754,"stem":755,"titleTemplate":6},"nuxt add","/docs/3.x/api/commands/add","docs/3.x/4.api/4.commands/add",{"title":757,"path":758,"stem":759,"titleTemplate":6},"nuxt analyze","/docs/3.x/api/commands/analyze","docs/3.x/4.api/4.commands/analyze",{"title":761,"path":762,"stem":763,"titleTemplate":6},"nuxt build","/docs/3.x/api/commands/build","docs/3.x/4.api/4.commands/build",{"title":765,"path":766,"stem":767,"titleTemplate":6},"nuxt build-module","/docs/3.x/api/commands/build-module","docs/3.x/4.api/4.commands/build-module",{"title":769,"path":770,"stem":771,"titleTemplate":6},"nuxt cleanup","/docs/3.x/api/commands/cleanup","docs/3.x/4.api/4.commands/cleanup",{"title":773,"path":774,"stem":775,"titleTemplate":6},"nuxt dev","/docs/3.x/api/commands/dev","docs/3.x/4.api/4.commands/dev",{"title":777,"path":778,"stem":779,"titleTemplate":6},"nuxt devtools","/docs/3.x/api/commands/devtools","docs/3.x/4.api/4.commands/devtools",{"title":781,"path":782,"stem":783,"titleTemplate":6},"nuxt generate","/docs/3.x/api/commands/generate","docs/3.x/4.api/4.commands/generate",{"title":785,"path":786,"stem":787,"titleTemplate":6},"nuxt info","/docs/3.x/api/commands/info","docs/3.x/4.api/4.commands/info",{"title":789,"path":790,"stem":791,"titleTemplate":6},"create nuxt","/docs/3.x/api/commands/init","docs/3.x/4.api/4.commands/init",{"title":793,"path":794,"stem":795,"titleTemplate":6},"nuxt module","/docs/3.x/api/commands/module","docs/3.x/4.api/4.commands/module",{"title":797,"path":798,"stem":799,"titleTemplate":6},"nuxt prepare","/docs/3.x/api/commands/prepare","docs/3.x/4.api/4.commands/prepare",{"title":801,"path":802,"stem":803,"titleTemplate":6},"nuxt preview","/docs/3.x/api/commands/preview","docs/3.x/4.api/4.commands/preview",{"title":805,"path":806,"stem":807,"titleTemplate":6},"nuxt test","/docs/3.x/api/commands/test","docs/3.x/4.api/4.commands/test",{"title":809,"path":810,"stem":811,"titleTemplate":6},"nuxt typecheck","/docs/3.x/api/commands/typecheck","docs/3.x/4.api/4.commands/typecheck",{"title":813,"path":814,"stem":815,"titleTemplate":6},"nuxt upgrade","/docs/3.x/api/commands/upgrade","docs/3.x/4.api/4.commands/upgrade",{"title":411,"titleTemplate":817,"icon":818,"path":819,"stem":820,"children":821,"page":108},"%s · Nuxt Kit","i-lucide-package","/docs/3.x/api/kit","docs/3.x/4.api/5.kit",[822,825,828,832,836,840,844,848,852,855,859,863,866,869,873,877,881,885],{"title":276,"path":823,"stem":824,"titleTemplate":6},"/docs/3.x/api/kit/modules","docs/3.x/4.api/5.kit/1.modules",{"title":399,"path":826,"stem":827,"titleTemplate":6},"/docs/3.x/api/kit/runtime-config","docs/3.x/4.api/5.kit/10.runtime-config",{"title":829,"path":830,"stem":831,"titleTemplate":6},"Templates","/docs/3.x/api/kit/templates","docs/3.x/4.api/5.kit/10.templates",{"title":833,"path":834,"stem":835,"titleTemplate":6},"Nitro","/docs/3.x/api/kit/nitro","docs/3.x/4.api/5.kit/11.nitro",{"title":837,"path":838,"stem":839,"titleTemplate":6},"Resolving","/docs/3.x/api/kit/resolving","docs/3.x/4.api/5.kit/12.resolving",{"title":841,"path":842,"stem":843,"titleTemplate":6},"Logging","/docs/3.x/api/kit/logging","docs/3.x/4.api/5.kit/13.logging",{"title":845,"path":846,"stem":847,"titleTemplate":6},"Builder","/docs/3.x/api/kit/builder","docs/3.x/4.api/5.kit/14.builder",{"title":849,"path":850,"stem":851,"titleTemplate":6},"Examples","/docs/3.x/api/kit/examples","docs/3.x/4.api/5.kit/15.examples",{"title":84,"path":853,"stem":854,"titleTemplate":6},"/docs/3.x/api/kit/layers","docs/3.x/4.api/5.kit/16.layers",{"title":856,"path":857,"stem":858,"titleTemplate":6},"Programmatic Usage","/docs/3.x/api/kit/programmatic","docs/3.x/4.api/5.kit/2.programmatic",{"title":860,"path":861,"stem":862,"titleTemplate":6},"Compatibility","/docs/3.x/api/kit/compatibility","docs/3.x/4.api/5.kit/3.compatibility",{"title":268,"path":864,"stem":865,"titleTemplate":6},"/docs/3.x/api/kit/autoimports","docs/3.x/4.api/5.kit/4.autoimports",{"title":434,"path":867,"stem":868,"titleTemplate":6},"/docs/3.x/api/kit/components","docs/3.x/4.api/5.kit/5.components",{"title":870,"path":871,"stem":872,"titleTemplate":6},"Context","/docs/3.x/api/kit/context","docs/3.x/4.api/5.kit/6.context",{"title":874,"path":875,"stem":876,"titleTemplate":6},"Pages","/docs/3.x/api/kit/pages","docs/3.x/4.api/5.kit/7.pages",{"title":878,"path":879,"stem":880,"titleTemplate":6},"Layout","/docs/3.x/api/kit/layout","docs/3.x/4.api/5.kit/8.layout",{"title":882,"path":883,"stem":884,"titleTemplate":6},"Head","/docs/3.x/api/kit/head","docs/3.x/4.api/5.kit/9.head",{"title":886,"path":887,"stem":888,"titleTemplate":6},"Plugins","/docs/3.x/api/kit/plugins","docs/3.x/4.api/5.kit/9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":892,"stem":893,"children":894,"page":108},"Advanced","i-lucide-brain","/docs/3.x/api/advanced","docs/3.x/4.api/6.advanced",[895,898],{"title":407,"path":896,"stem":897,"titleTemplate":6},"/docs/3.x/api/advanced/hooks","docs/3.x/4.api/6.advanced/1.hooks",{"title":899,"path":900,"stem":901,"titleTemplate":6},"Import meta","/docs/3.x/api/advanced/import-meta","docs/3.x/4.api/6.advanced/2.import-meta",{"title":903,"path":904,"stem":905,"titleTemplate":906,"icon":32},"Nuxt Configuration","/docs/3.x/api/nuxt-config","docs/3.x/4.api/6.nuxt-config","%s",{"title":849,"titleTemplate":908,"icon":909,"path":910,"stem":911,"children":912,"page":108},"%s · Nuxt Examples","i-lucide-app-window-mac","/docs/3.x/examples","docs/3.x/4.examples",[913,917,939,954,990],{"title":914,"path":915,"stem":916,"titleTemplate":6},"Hello World","/docs/3.x/examples/hello-world","docs/3.x/4.examples/0.hello-world",{"title":395,"path":918,"stem":919,"children":920,"page":108},"/docs/3.x/examples/features","docs/3.x/4.examples/1.features",[921,925,928,931,935],{"title":922,"path":923,"stem":924,"titleTemplate":6},"Auto Imports","/docs/3.x/examples/features/auto-imports","docs/3.x/4.examples/1.features/1.auto-imports",{"title":64,"path":926,"stem":927,"titleTemplate":6},"/docs/3.x/examples/features/data-fetching","docs/3.x/4.examples/1.features/2.data-fetching",{"title":69,"path":929,"stem":930,"titleTemplate":6},"/docs/3.x/examples/features/state-management","docs/3.x/4.examples/1.features/3.state-management",{"title":932,"path":933,"stem":934,"titleTemplate":6},"Meta Tags","/docs/3.x/examples/features/meta-tags","docs/3.x/4.examples/1.features/4.meta-tags",{"title":936,"path":937,"stem":938,"titleTemplate":6},"Layouts","/docs/3.x/examples/features/layouts","docs/3.x/4.examples/1.features/5.layouts",{"title":49,"path":940,"stem":941,"children":942,"page":108},"/docs/3.x/examples/routing","docs/3.x/4.examples/2.routing",[943,947,950],{"title":944,"path":945,"stem":946,"titleTemplate":6},"Middleware","/docs/3.x/examples/routing/middleware","docs/3.x/4.examples/2.routing/middleware",{"title":874,"path":948,"stem":949,"titleTemplate":6},"/docs/3.x/examples/routing/pages","docs/3.x/4.examples/2.routing/pages",{"title":951,"path":952,"stem":953,"titleTemplate":6},"Universal Router","/docs/3.x/examples/routing/universal-router","docs/3.x/4.examples/2.routing/universal-router",{"title":890,"path":955,"stem":956,"children":957,"page":108},"/docs/3.x/examples/advanced","docs/3.x/4.examples/4.advanced",[958,961,964,968,972,976,980,983,986],{"title":84,"path":959,"stem":960,"titleTemplate":6},"/docs/3.x/examples/advanced/config-extends","docs/3.x/4.examples/4.advanced/config-extends",{"title":74,"path":962,"stem":963,"titleTemplate":6},"/docs/3.x/examples/advanced/error-handling","docs/3.x/4.examples/4.advanced/error-handling",{"title":965,"path":966,"stem":967,"titleTemplate":6},"JSX / TSX","/docs/3.x/examples/advanced/jsx","docs/3.x/4.examples/4.advanced/jsx",{"title":969,"path":970,"stem":971,"titleTemplate":6},"Locale","/docs/3.x/examples/advanced/locale","docs/3.x/4.examples/4.advanced/locale",{"title":973,"path":974,"stem":975,"titleTemplate":6},"Module Extend Pages","/docs/3.x/examples/advanced/module-extend-pages","docs/3.x/4.examples/4.advanced/module-extend-pages",{"title":977,"path":978,"stem":979,"titleTemplate":6},"Teleport","/docs/3.x/examples/advanced/teleport","docs/3.x/4.examples/4.advanced/teleport",{"title":99,"path":981,"stem":982,"titleTemplate":6},"/docs/3.x/examples/advanced/testing","docs/3.x/4.examples/4.advanced/testing",{"title":519,"path":984,"stem":985,"titleTemplate":6},"/docs/3.x/examples/advanced/use-cookie","docs/3.x/4.examples/4.advanced/use-cookie",{"title":987,"path":988,"stem":989,"titleTemplate":6},"Use Custom Fetch Composable","/docs/3.x/examples/advanced/use-custom-fetch-composable","docs/3.x/4.examples/4.advanced/use-custom-fetch-composable",{"title":991,"path":992,"stem":993,"children":994,"page":108},"Experimental","/docs/3.x/examples/experimental","docs/3.x/4.examples/7.experimental",[995],{"title":996,"path":997,"stem":998,"titleTemplate":6},"WASM","/docs/3.x/examples/experimental/wasm","docs/3.x/4.examples/7.experimental/wasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":1003,"stem":1004,"children":1005,"page":108},"Community","%s · Nuxt Community","i-lucide-messages-square","/docs/3.x/community","docs/3.x/5.community",[1006,1011,1016,1021,1026,1031],{"title":1007,"path":1008,"stem":1009,"titleTemplate":6,"icon":1010},"Getting Help","/docs/3.x/community/getting-help","docs/3.x/5.community/2.getting-help","i-lucide-life-buoy",{"title":1012,"path":1013,"stem":1014,"titleTemplate":6,"icon":1015},"Reporting Bugs","/docs/3.x/community/reporting-bugs","docs/3.x/5.community/3.reporting-bugs","i-lucide-bug",{"title":1017,"path":1018,"stem":1019,"titleTemplate":6,"icon":1020},"Contribution","/docs/3.x/community/contribution","docs/3.x/5.community/4.contribution","i-lucide-git-pull-request",{"title":1022,"path":1023,"stem":1024,"titleTemplate":6,"icon":1025},"Framework","/docs/3.x/community/framework-contribution","docs/3.x/5.community/5.framework-contribution","i-lucide-github",{"title":1027,"path":1028,"stem":1029,"titleTemplate":6,"icon":1030},"Roadmap","/docs/3.x/community/roadmap","docs/3.x/5.community/6.roadmap","i-lucide-map",{"title":1032,"path":1033,"stem":1034,"titleTemplate":6,"icon":1035},"Releases","/docs/3.x/community/changelog","docs/3.x/5.community/7.changelog","i-lucide-bell-dot",{"title":1037,"titleTemplate":1038,"icon":1039,"path":1040,"stem":1041,"children":1042,"page":108},"Migrate to Nuxt Bridge","Migrate to Nuxt Bridge: %s","i-lucide-ship","/docs/3.x/bridge","docs/3.x/6.bridge",[1043,1047,1050,1053,1057,1061,1065,1068,1071,1074],{"title":1044,"path":1045,"stem":1046,"titleTemplate":6},"Overview","/docs/3.x/bridge/overview","docs/3.x/6.bridge/1.overview",{"title":29,"path":1048,"stem":1049,"titleTemplate":6},"/docs/3.x/bridge/configuration","docs/3.x/6.bridge/10.configuration",{"title":280,"path":1051,"stem":1052,"titleTemplate":6},"/docs/3.x/bridge/typescript","docs/3.x/6.bridge/2.typescript",{"title":1054,"path":1055,"stem":1056,"titleTemplate":6},"Legacy Composition API","/docs/3.x/bridge/bridge-composition-api","docs/3.x/6.bridge/3.bridge-composition-api",{"title":1058,"path":1059,"stem":1060,"titleTemplate":6},"Plugins and Middleware","/docs/3.x/bridge/plugins-and-middleware","docs/3.x/6.bridge/4.plugins-and-middleware",{"title":1062,"path":1063,"stem":1064,"titleTemplate":6},"New Composition API","/docs/3.x/bridge/nuxt3-compatible-api","docs/3.x/6.bridge/5.nuxt3-compatible-api",{"title":932,"path":1066,"stem":1067,"titleTemplate":6},"/docs/3.x/bridge/meta","docs/3.x/6.bridge/6.meta",{"title":399,"path":1069,"stem":1070,"titleTemplate":6},"/docs/3.x/bridge/runtime-config","docs/3.x/6.bridge/7.runtime-config",{"title":833,"path":1072,"stem":1073,"titleTemplate":6},"/docs/3.x/bridge/nitro","docs/3.x/6.bridge/8.nitro",{"title":1075,"path":1076,"stem":1077,"titleTemplate":6},"Vite","/docs/3.x/bridge/vite","docs/3.x/6.bridge/9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":1081,"stem":1082,"children":1083,"page":108},"Migrate to Nuxt 3","Migrate to Nuxt 3: %s","/docs/3.x/migration","docs/3.x/7.migration",[1084,1087,1091,1094,1097,1100,1103,1106,1109,1113,1117],{"title":1044,"path":1085,"stem":1086,"titleTemplate":6},"/docs/3.x/migration/overview","docs/3.x/7.migration/1.overview",{"title":1088,"path":1089,"stem":1090,"titleTemplate":6},"Build Tooling","/docs/3.x/migration/bundling","docs/3.x/7.migration/10.bundling",{"title":79,"path":1092,"stem":1093,"titleTemplate":6},"/docs/3.x/migration/server","docs/3.x/7.migration/11.server",{"title":29,"path":1095,"stem":1096,"titleTemplate":6},"/docs/3.x/migration/configuration","docs/3.x/7.migration/2.configuration",{"title":276,"path":1098,"stem":1099,"titleTemplate":6},"/docs/3.x/migration/module-authors","docs/3.x/7.migration/20.module-authors",{"title":922,"path":1101,"stem":1102,"titleTemplate":6},"/docs/3.x/migration/auto-imports","docs/3.x/7.migration/3.auto-imports",{"title":932,"path":1104,"stem":1105,"titleTemplate":6},"/docs/3.x/migration/meta","docs/3.x/7.migration/4.meta",{"title":1058,"path":1107,"stem":1108,"titleTemplate":6},"/docs/3.x/migration/plugins-and-middleware","docs/3.x/7.migration/5.plugins-and-middleware",{"title":1110,"path":1111,"stem":1112,"titleTemplate":6},"Pages and Layouts","/docs/3.x/migration/pages-and-layouts","docs/3.x/7.migration/6.pages-and-layouts",{"title":1114,"path":1115,"stem":1116,"titleTemplate":6},"Component Options","/docs/3.x/migration/component-options","docs/3.x/7.migration/7.component-options",{"title":399,"path":1118,"stem":1119,"titleTemplate":6},"/docs/3.x/migration/runtime-config","docs/3.x/7.migration/8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1121,"stem":1122,"children":1123,"page":108},"/docs/4.x","docs/4.x",[1124,1182,1276,1404,1770,1847,1869,1903],{"title":12,"titleTemplate":13,"icon":14,"path":1125,"stem":1126,"children":1127,"page":108},"/docs/4.x/getting-started","docs/4.x/1.getting-started",[1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179],{"title":19,"path":1129,"stem":1130,"titleTemplate":6,"icon":22},"/docs/4.x/getting-started/introduction","docs/4.x/1.getting-started/01.introduction",{"title":24,"path":1132,"stem":1133,"titleTemplate":6,"icon":27},"/docs/4.x/getting-started/installation","docs/4.x/1.getting-started/02.installation",{"title":29,"path":1135,"stem":1136,"titleTemplate":6,"icon":32},"/docs/4.x/getting-started/configuration","docs/4.x/1.getting-started/03.configuration",{"title":34,"path":1138,"stem":1139,"titleTemplate":6,"icon":37},"/docs/4.x/getting-started/views","docs/4.x/1.getting-started/04.views",{"title":39,"path":1141,"stem":1142,"titleTemplate":6,"icon":42},"/docs/4.x/getting-started/assets","docs/4.x/1.getting-started/05.assets",{"title":44,"path":1144,"stem":1145,"titleTemplate":6,"icon":47},"/docs/4.x/getting-started/styling","docs/4.x/1.getting-started/06.styling",{"title":49,"path":1147,"stem":1148,"titleTemplate":6,"icon":52},"/docs/4.x/getting-started/routing","docs/4.x/1.getting-started/07.routing",{"title":54,"path":1150,"stem":1151,"titleTemplate":6,"icon":57},"/docs/4.x/getting-started/seo-meta","docs/4.x/1.getting-started/08.seo-meta",{"title":59,"path":1153,"stem":1154,"titleTemplate":6,"icon":62},"/docs/4.x/getting-started/transitions","docs/4.x/1.getting-started/09.transitions",{"title":64,"path":1156,"stem":1157,"titleTemplate":6,"icon":67},"/docs/4.x/getting-started/data-fetching","docs/4.x/1.getting-started/10.data-fetching",{"title":69,"path":1159,"stem":1160,"titleTemplate":6,"icon":72},"/docs/4.x/getting-started/state-management","docs/4.x/1.getting-started/11.state-management",{"title":74,"path":1162,"stem":1163,"titleTemplate":6,"icon":77},"/docs/4.x/getting-started/error-handling","docs/4.x/1.getting-started/12.error-handling",{"title":79,"path":1165,"stem":1166,"titleTemplate":6,"icon":82},"/docs/4.x/getting-started/server","docs/4.x/1.getting-started/13.server",{"title":84,"path":1168,"stem":1169,"titleTemplate":6,"icon":87},"/docs/4.x/getting-started/layers","docs/4.x/1.getting-started/14.layers",{"title":89,"path":1171,"stem":1172,"titleTemplate":6,"icon":92},"/docs/4.x/getting-started/prerendering","docs/4.x/1.getting-started/15.prerendering",{"title":94,"path":1174,"stem":1175,"titleTemplate":6,"icon":97},"/docs/4.x/getting-started/deployment","docs/4.x/1.getting-started/16.deployment",{"title":99,"path":1177,"stem":1178,"titleTemplate":6,"icon":102},"/docs/4.x/getting-started/testing","docs/4.x/1.getting-started/17.testing",{"title":104,"path":1180,"stem":1181,"titleTemplate":6,"icon":107},"/docs/4.x/getting-started/upgrade","docs/4.x/1.getting-started/18.upgrade",{"title":110,"titleTemplate":111,"icon":112,"path":1183,"stem":1184,"children":1185,"page":108},"/docs/4.x/directory-structure","docs/4.x/2.directory-structure",[1186,1189,1192,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273],{"title":117,"path":1187,"stem":1188,"titleTemplate":6,"icon":120},"/docs/4.x/directory-structure/nuxt","docs/4.x/2.directory-structure/0.nuxt",{"title":122,"path":1190,"stem":1191,"titleTemplate":6,"icon":125},"/docs/4.x/directory-structure/output","docs/4.x/2.directory-structure/0.output",{"title":1193,"titleTemplate":111,"head":1194,"defaultOpen":1196,"icon":1197,"path":1198,"stem":1199,"children":1200,"page":108},"app",{"title":1195},"app/",true,"i-vscode-icons-folder-type-app","/docs/4.x/directory-structure/app","docs/4.x/2.directory-structure/1.app",[1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231],{"title":127,"path":1202,"stem":1203,"titleTemplate":6,"icon":130},"/docs/4.x/directory-structure/app/assets","docs/4.x/2.directory-structure/1.app/1.assets",{"title":132,"path":1205,"stem":1206,"titleTemplate":6,"icon":135},"/docs/4.x/directory-structure/app/components","docs/4.x/2.directory-structure/1.app/1.components",{"title":137,"path":1208,"stem":1209,"titleTemplate":6,"icon":140},"/docs/4.x/directory-structure/app/composables","docs/4.x/2.directory-structure/1.app/1.composables",{"title":152,"path":1211,"stem":1212,"titleTemplate":6,"icon":155},"/docs/4.x/directory-structure/app/layouts","docs/4.x/2.directory-structure/1.app/1.layouts",{"title":157,"path":1214,"stem":1215,"titleTemplate":6,"icon":160},"/docs/4.x/directory-structure/app/middleware","docs/4.x/2.directory-structure/1.app/1.middleware",{"title":171,"path":1217,"stem":1218,"titleTemplate":6,"icon":155},"/docs/4.x/directory-structure/app/pages","docs/4.x/2.directory-structure/1.app/1.pages",{"title":175,"path":1220,"stem":1221,"titleTemplate":6,"icon":178},"/docs/4.x/directory-structure/app/plugins","docs/4.x/2.directory-structure/1.app/1.plugins",{"title":195,"path":1223,"stem":1224,"titleTemplate":6,"icon":198},"/docs/4.x/directory-structure/app/utils","docs/4.x/2.directory-structure/1.app/1.utils",{"title":219,"path":1226,"stem":1227,"titleTemplate":6,"icon":222},"/docs/4.x/directory-structure/app/app","docs/4.x/2.directory-structure/1.app/3.app",{"title":224,"path":1229,"stem":1230,"titleTemplate":6,"icon":227},"/docs/4.x/directory-structure/app/app-config","docs/4.x/2.directory-structure/1.app/3.app-config",{"title":229,"path":1232,"stem":1233,"titleTemplate":6,"icon":222},"/docs/4.x/directory-structure/app/error","docs/4.x/2.directory-structure/1.app/3.error",{"title":142,"path":1235,"stem":1236,"titleTemplate":6,"icon":145},"/docs/4.x/directory-structure/content","docs/4.x/2.directory-structure/1.content",{"title":147,"path":1238,"stem":1239,"titleTemplate":6,"icon":150},"/docs/4.x/directory-structure/layers","docs/4.x/2.directory-structure/1.layers",{"title":162,"path":1241,"stem":1242,"titleTemplate":6,"icon":150},"/docs/4.x/directory-structure/modules","docs/4.x/2.directory-structure/1.modules",{"title":166,"path":1244,"stem":1245,"titleTemplate":6,"icon":169},"/docs/4.x/directory-structure/node_modules","docs/4.x/2.directory-structure/1.node_modules",{"title":180,"path":1247,"stem":1248,"titleTemplate":6,"icon":183},"/docs/4.x/directory-structure/public","docs/4.x/2.directory-structure/1.public",{"title":185,"path":1250,"stem":1251,"titleTemplate":6,"icon":188},"/docs/4.x/directory-structure/server","docs/4.x/2.directory-structure/1.server",{"title":190,"path":1253,"stem":1254,"titleTemplate":6,"icon":193},"/docs/4.x/directory-structure/shared","docs/4.x/2.directory-structure/1.shared",{"title":200,"path":1256,"stem":1257,"titleTemplate":6,"icon":203},"/docs/4.x/directory-structure/env","docs/4.x/2.directory-structure/2.env",{"title":205,"path":1259,"stem":1260,"titleTemplate":6,"icon":208},"/docs/4.x/directory-structure/gitignore","docs/4.x/2.directory-structure/2.gitignore",{"title":210,"path":1262,"stem":1263,"titleTemplate":6,"icon":213},"/docs/4.x/directory-structure/nuxtignore","docs/4.x/2.directory-structure/2.nuxtignore",{"title":215,"path":1265,"stem":1266,"titleTemplate":6,"icon":213},"/docs/4.x/directory-structure/nuxtrc","docs/4.x/2.directory-structure/2.nuxtrc",{"title":233,"path":1268,"stem":1269,"titleTemplate":6,"icon":213},"/docs/4.x/directory-structure/nuxt-config","docs/4.x/2.directory-structure/3.nuxt-config",{"title":237,"path":1271,"stem":1272,"titleTemplate":6,"icon":240},"/docs/4.x/directory-structure/package","docs/4.x/2.directory-structure/3.package",{"title":242,"path":1274,"stem":1275,"titleTemplate":6,"icon":245},"/docs/4.x/directory-structure/tsconfig","docs/4.x/2.directory-structure/3.tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":1277,"stem":1278,"children":1279,"page":108},"/docs/4.x/guide","docs/4.x/3.guide",[1280,1305,1319,1329,1354,1370],{"title":253,"titleTemplate":254,"icon":255,"path":1281,"stem":1282,"children":1283,"page":108},"/docs/4.x/guide/concepts","docs/4.x/3.guide/1.concepts",[1284,1287,1290,1293,1296,1299,1302],{"title":260,"path":1285,"stem":1286,"titleTemplate":6},"/docs/4.x/guide/concepts/rendering","docs/4.x/3.guide/1.concepts/1.rendering",{"title":264,"path":1288,"stem":1289,"titleTemplate":6},"/docs/4.x/guide/concepts/nuxt-lifecycle","docs/4.x/3.guide/1.concepts/2.nuxt-lifecycle",{"title":268,"path":1291,"stem":1292,"titleTemplate":6},"/docs/4.x/guide/concepts/auto-imports","docs/4.x/3.guide/1.concepts/3.auto-imports",{"title":272,"path":1294,"stem":1295,"titleTemplate":6},"/docs/4.x/guide/concepts/server-engine","docs/4.x/3.guide/1.concepts/4.server-engine",{"title":276,"path":1297,"stem":1298,"titleTemplate":6},"/docs/4.x/guide/concepts/modules","docs/4.x/3.guide/1.concepts/5.modules",{"title":280,"path":1300,"stem":1301,"titleTemplate":6},"/docs/4.x/guide/concepts/typescript","docs/4.x/3.guide/1.concepts/8.typescript",{"title":284,"path":1303,"stem":1304,"titleTemplate":6},"/docs/4.x/guide/concepts/code-style","docs/4.x/3.guide/1.concepts/9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":1306,"stem":1307,"children":1308,"page":108},"/docs/4.x/guide/best-practices","docs/4.x/3.guide/2.best-practices",[1309,1313,1316],{"title":1310,"path":1311,"stem":1312,"titleTemplate":6},"Nuxt and Hydration","/docs/4.x/guide/best-practices/hydration","docs/4.x/3.guide/2.best-practices/hydration",{"title":299,"path":1314,"stem":1315,"titleTemplate":6},"/docs/4.x/guide/best-practices/performance","docs/4.x/3.guide/2.best-practices/performance",{"title":303,"path":1317,"stem":1318,"titleTemplate":6},"/docs/4.x/guide/best-practices/plugins","docs/4.x/3.guide/2.best-practices/plugins",{"title":307,"titleTemplate":308,"icon":309,"path":1320,"stem":1321,"children":1322,"page":108},"/docs/4.x/guide/ai","docs/4.x/3.guide/3.ai",[1323,1326],{"title":314,"path":1324,"stem":1325,"titleTemplate":6},"/docs/4.x/guide/ai/mcp","docs/4.x/3.guide/3.ai/1.mcp",{"title":318,"path":1327,"stem":1328,"titleTemplate":6},"/docs/4.x/guide/ai/llms-txt","docs/4.x/3.guide/3.ai/2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":1330,"stem":1331,"children":1332,"page":108},"/docs/4.x/guide/modules","docs/4.x/3.guide/4.modules",[1333,1336,1339,1342,1345,1348,1351],{"title":329,"path":1334,"stem":1335,"titleTemplate":6},"/docs/4.x/guide/modules/getting-started","docs/4.x/3.guide/4.modules/1.getting-started",{"title":333,"path":1337,"stem":1338,"titleTemplate":6},"/docs/4.x/guide/modules/module-anatomy","docs/4.x/3.guide/4.modules/2.module-anatomy",{"title":337,"path":1340,"stem":1341,"titleTemplate":6},"/docs/4.x/guide/modules/recipes-basics","docs/4.x/3.guide/4.modules/3.recipes-basics",{"title":341,"path":1343,"stem":1344,"titleTemplate":6},"/docs/4.x/guide/modules/recipes-advanced","docs/4.x/3.guide/4.modules/4.recipes-advanced",{"title":345,"path":1346,"stem":1347,"titleTemplate":6},"/docs/4.x/guide/modules/testing","docs/4.x/3.guide/4.modules/5.testing",{"title":349,"path":1349,"stem":1350,"titleTemplate":6},"/docs/4.x/guide/modules/best-practices","docs/4.x/3.guide/4.modules/6.best-practices",{"title":353,"path":1352,"stem":1353,"titleTemplate":6},"/docs/4.x/guide/modules/ecosystem","docs/4.x/3.guide/4.modules/7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":1355,"stem":1356,"children":1357,"page":108},"/docs/4.x/guide/recipes","docs/4.x/3.guide/5.recipes",[1358,1361,1364,1367],{"title":364,"path":1359,"stem":1360,"titleTemplate":6},"/docs/4.x/guide/recipes/custom-routing","docs/4.x/3.guide/5.recipes/1.custom-routing",{"title":368,"path":1362,"stem":1363,"titleTemplate":6},"/docs/4.x/guide/recipes/vite-plugin","docs/4.x/3.guide/5.recipes/2.vite-plugin",{"title":372,"path":1365,"stem":1366,"titleTemplate":6},"/docs/4.x/guide/recipes/custom-usefetch","docs/4.x/3.guide/5.recipes/3.custom-usefetch",{"title":376,"path":1368,"stem":1369,"titleTemplate":6},"/docs/4.x/guide/recipes/sessions-and-authentication","docs/4.x/3.guide/5.recipes/4.sessions-and-authentication",{"title":380,"titleTemplate":381,"icon":382,"path":1371,"stem":1372,"children":1373,"page":108},"/docs/4.x/guide/going-further","docs/4.x/3.guide/6.going-further",[1374,1377,1380,1383,1386,1389,1392,1395,1398,1401],{"title":387,"path":1375,"stem":1376,"titleTemplate":6},"/docs/4.x/guide/going-further/events","docs/4.x/3.guide/6.going-further/1.events",{"title":391,"path":1378,"stem":1379,"titleTemplate":6},"/docs/4.x/guide/going-further/experimental-features","docs/4.x/3.guide/6.going-further/1.experimental-features",{"title":395,"path":1381,"stem":1382,"titleTemplate":6},"/docs/4.x/guide/going-further/features","docs/4.x/3.guide/6.going-further/1.features",{"title":399,"path":1384,"stem":1385,"titleTemplate":6},"/docs/4.x/guide/going-further/runtime-config","docs/4.x/3.guide/6.going-further/10.runtime-config",{"title":403,"path":1387,"stem":1388,"titleTemplate":6},"/docs/4.x/guide/going-further/nightly-release-channel","docs/4.x/3.guide/6.going-further/11.nightly-release-channel",{"title":407,"path":1390,"stem":1391,"titleTemplate":6},"/docs/4.x/guide/going-further/hooks","docs/4.x/3.guide/6.going-further/2.hooks",{"title":411,"path":1393,"stem":1394,"titleTemplate":6},"/docs/4.x/guide/going-further/kit","docs/4.x/3.guide/6.going-further/4.kit",{"title":415,"path":1396,"stem":1397,"titleTemplate":6},"/docs/4.x/guide/going-further/nuxt-app","docs/4.x/3.guide/6.going-further/6.nuxt-app",{"title":419,"path":1399,"stem":1400,"titleTemplate":6},"/docs/4.x/guide/going-further/layers","docs/4.x/3.guide/6.going-further/7.layers",{"title":423,"path":1402,"stem":1403,"titleTemplate":6},"/docs/4.x/guide/going-further/debugging","docs/4.x/3.guide/6.going-further/9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":1405,"stem":1406,"children":1407,"page":108},"/docs/4.x/api","docs/4.x/4.api",[1408,1461,1556,1647,1699,1757,1767],{"title":434,"titleTemplate":435,"icon":324,"path":1409,"stem":1410,"children":1411,"page":108},"/docs/4.x/api/components","docs/4.x/4.api/1.components",[1412,1415,1418,1421,1424,1427,1430,1433,1437,1440,1443,1446,1449,1452,1455,1458],{"title":440,"path":1413,"stem":1414,"titleTemplate":6},"/docs/4.x/api/components/client-only","docs/4.x/4.api/1.components/1.client-only",{"title":444,"path":1416,"stem":1417,"titleTemplate":6},"/docs/4.x/api/components/dev-only","docs/4.x/4.api/1.components/1.dev-only",{"title":448,"path":1419,"stem":1420,"titleTemplate":6},"/docs/4.x/api/components/nuxt-client-fallback","docs/4.x/4.api/1.components/1.nuxt-client-fallback",{"title":452,"path":1422,"stem":1423,"titleTemplate":6},"/docs/4.x/api/components/nuxt-picture","docs/4.x/4.api/1.components/10.nuxt-picture",{"title":456,"path":1425,"stem":1426,"titleTemplate":6},"/docs/4.x/api/components/teleports","docs/4.x/4.api/1.components/11.teleports",{"title":460,"path":1428,"stem":1429,"titleTemplate":6},"/docs/4.x/api/components/nuxt-route-announcer","docs/4.x/4.api/1.components/12.nuxt-route-announcer",{"title":464,"path":1431,"stem":1432,"titleTemplate":6},"/docs/4.x/api/components/nuxt-time","docs/4.x/4.api/1.components/13.nuxt-time",{"title":1434,"path":1435,"stem":1436,"titleTemplate":6},"\u003CNuxtAnnouncer>","/docs/4.x/api/components/nuxt-announcer","docs/4.x/4.api/1.components/14.nuxt-announcer",{"title":468,"path":1438,"stem":1439,"titleTemplate":6},"/docs/4.x/api/components/nuxt-page","docs/4.x/4.api/1.components/2.nuxt-page",{"title":472,"path":1441,"stem":1442,"titleTemplate":6},"/docs/4.x/api/components/nuxt-layout","docs/4.x/4.api/1.components/3.nuxt-layout",{"title":476,"path":1444,"stem":1445,"titleTemplate":6},"/docs/4.x/api/components/nuxt-link","docs/4.x/4.api/1.components/4.nuxt-link",{"title":480,"path":1447,"stem":1448,"titleTemplate":6},"/docs/4.x/api/components/nuxt-loading-indicator","docs/4.x/4.api/1.components/5.nuxt-loading-indicator",{"title":484,"path":1450,"stem":1451,"titleTemplate":6},"/docs/4.x/api/components/nuxt-error-boundary","docs/4.x/4.api/1.components/6.nuxt-error-boundary",{"title":488,"path":1453,"stem":1454,"titleTemplate":6},"/docs/4.x/api/components/nuxt-welcome","docs/4.x/4.api/1.components/7.nuxt-welcome",{"title":492,"path":1456,"stem":1457,"titleTemplate":6},"/docs/4.x/api/components/nuxt-island","docs/4.x/4.api/1.components/8.nuxt-island",{"title":496,"path":1459,"stem":1460,"titleTemplate":6},"/docs/4.x/api/components/nuxt-img","docs/4.x/4.api/1.components/9.nuxt-img",{"title":500,"titleTemplate":501,"icon":502,"path":1462,"stem":1463,"children":1464,"page":108},"/docs/4.x/api/composables","docs/4.x/4.api/2.composables",[1465,1468,1472,1475,1478,1481,1484,1487,1490,1493,1496,1499,1502,1505,1508,1511,1514,1517,1520,1523,1526,1529,1532,1535,1538,1541,1544,1547,1550,1553],{"title":507,"path":1466,"stem":1467,"titleTemplate":6},"/docs/4.x/api/composables/on-prehydrate","docs/4.x/4.api/2.composables/on-prehydrate",{"title":1469,"path":1470,"stem":1471,"titleTemplate":6},"useAnnouncer","/docs/4.x/api/composables/use-announcer","docs/4.x/4.api/2.composables/use-announcer",{"title":511,"path":1473,"stem":1474,"titleTemplate":6},"/docs/4.x/api/composables/use-app-config","docs/4.x/4.api/2.composables/use-app-config",{"title":515,"path":1476,"stem":1477,"titleTemplate":6},"/docs/4.x/api/composables/use-async-data","docs/4.x/4.api/2.composables/use-async-data",{"title":519,"path":1479,"stem":1480,"titleTemplate":6},"/docs/4.x/api/composables/use-cookie","docs/4.x/4.api/2.composables/use-cookie",{"title":523,"path":1482,"stem":1483,"titleTemplate":6},"/docs/4.x/api/composables/use-error","docs/4.x/4.api/2.composables/use-error",{"title":527,"path":1485,"stem":1486,"titleTemplate":6},"/docs/4.x/api/composables/use-fetch","docs/4.x/4.api/2.composables/use-fetch",{"title":531,"path":1488,"stem":1489,"titleTemplate":6},"/docs/4.x/api/composables/use-head","docs/4.x/4.api/2.composables/use-head",{"title":535,"path":1491,"stem":1492,"titleTemplate":6},"/docs/4.x/api/composables/use-head-safe","docs/4.x/4.api/2.composables/use-head-safe",{"title":539,"path":1494,"stem":1495,"titleTemplate":6},"/docs/4.x/api/composables/use-hydration","docs/4.x/4.api/2.composables/use-hydration",{"title":543,"path":1497,"stem":1498,"titleTemplate":6},"/docs/4.x/api/composables/use-lazy-async-data","docs/4.x/4.api/2.composables/use-lazy-async-data",{"title":547,"path":1500,"stem":1501,"titleTemplate":6},"/docs/4.x/api/composables/use-lazy-fetch","docs/4.x/4.api/2.composables/use-lazy-fetch",{"title":551,"path":1503,"stem":1504,"titleTemplate":6},"/docs/4.x/api/composables/use-loading-indicator","docs/4.x/4.api/2.composables/use-loading-indicator",{"title":555,"path":1506,"stem":1507,"titleTemplate":6},"/docs/4.x/api/composables/use-nuxt-app","docs/4.x/4.api/2.composables/use-nuxt-app",{"title":559,"path":1509,"stem":1510,"titleTemplate":6},"/docs/4.x/api/composables/use-nuxt-data","docs/4.x/4.api/2.composables/use-nuxt-data",{"title":563,"path":1512,"stem":1513,"titleTemplate":6},"/docs/4.x/api/composables/use-preview-mode","docs/4.x/4.api/2.composables/use-preview-mode",{"title":567,"path":1515,"stem":1516,"titleTemplate":6},"/docs/4.x/api/composables/use-request-event","docs/4.x/4.api/2.composables/use-request-event",{"title":571,"path":1518,"stem":1519,"titleTemplate":6},"/docs/4.x/api/composables/use-request-fetch","docs/4.x/4.api/2.composables/use-request-fetch",{"title":575,"path":1521,"stem":1522,"titleTemplate":6},"/docs/4.x/api/composables/use-request-header","docs/4.x/4.api/2.composables/use-request-header",{"title":579,"path":1524,"stem":1525,"titleTemplate":6},"/docs/4.x/api/composables/use-request-headers","docs/4.x/4.api/2.composables/use-request-headers",{"title":583,"path":1527,"stem":1528,"titleTemplate":6},"/docs/4.x/api/composables/use-request-url","docs/4.x/4.api/2.composables/use-request-url",{"title":587,"path":1530,"stem":1531,"titleTemplate":6},"/docs/4.x/api/composables/use-response-header","docs/4.x/4.api/2.composables/use-response-header",{"title":591,"path":1533,"stem":1534,"titleTemplate":6},"/docs/4.x/api/composables/use-route","docs/4.x/4.api/2.composables/use-route",{"title":595,"path":1536,"stem":1537,"titleTemplate":6},"/docs/4.x/api/composables/use-route-announcer","docs/4.x/4.api/2.composables/use-route-announcer",{"title":599,"path":1539,"stem":1540,"titleTemplate":6},"/docs/4.x/api/composables/use-router","docs/4.x/4.api/2.composables/use-router",{"title":603,"path":1542,"stem":1543,"titleTemplate":6},"/docs/4.x/api/composables/use-runtime-config","docs/4.x/4.api/2.composables/use-runtime-config",{"title":607,"path":1545,"stem":1546,"titleTemplate":6},"/docs/4.x/api/composables/use-runtime-hook","docs/4.x/4.api/2.composables/use-runtime-hook",{"title":611,"path":1548,"stem":1549,"titleTemplate":6},"/docs/4.x/api/composables/use-seo-meta","docs/4.x/4.api/2.composables/use-seo-meta",{"title":615,"path":1551,"stem":1552,"titleTemplate":6},"/docs/4.x/api/composables/use-server-seo-meta","docs/4.x/4.api/2.composables/use-server-seo-meta",{"title":619,"path":1554,"stem":1555,"titleTemplate":6},"/docs/4.x/api/composables/use-state","docs/4.x/4.api/2.composables/use-state",{"title":623,"titleTemplate":624,"icon":625,"path":1557,"stem":1558,"children":1559,"page":108},"/docs/4.x/api/utils","docs/4.x/4.api/3.utils",[1560,1563,1566,1569,1572,1575,1578,1581,1584,1587,1590,1593,1596,1599,1602,1605,1608,1611,1614,1617,1620,1623,1626,1629,1632,1635,1638,1641,1644],{"title":630,"path":1561,"stem":1562,"titleTemplate":6},"/docs/4.x/api/utils/dollarfetch","docs/4.x/4.api/3.utils/$fetch",{"title":634,"path":1564,"stem":1565,"titleTemplate":6},"/docs/4.x/api/utils/abort-navigation","docs/4.x/4.api/3.utils/abort-navigation",{"title":638,"path":1567,"stem":1568,"titleTemplate":6},"/docs/4.x/api/utils/add-route-middleware","docs/4.x/4.api/3.utils/add-route-middleware",{"title":642,"path":1570,"stem":1571,"titleTemplate":6},"/docs/4.x/api/utils/call-once","docs/4.x/4.api/3.utils/call-once",{"title":646,"path":1573,"stem":1574,"titleTemplate":6},"/docs/4.x/api/utils/clear-error","docs/4.x/4.api/3.utils/clear-error",{"title":650,"path":1576,"stem":1577,"titleTemplate":6},"/docs/4.x/api/utils/clear-nuxt-data","docs/4.x/4.api/3.utils/clear-nuxt-data",{"title":654,"path":1579,"stem":1580,"titleTemplate":6},"/docs/4.x/api/utils/clear-nuxt-state","docs/4.x/4.api/3.utils/clear-nuxt-state",{"title":658,"path":1582,"stem":1583,"titleTemplate":6},"/docs/4.x/api/utils/create-error","docs/4.x/4.api/3.utils/create-error",{"title":662,"path":1585,"stem":1586,"titleTemplate":6},"/docs/4.x/api/utils/define-lazy-hydration-component","docs/4.x/4.api/3.utils/define-lazy-hydration-component",{"title":666,"path":1588,"stem":1589,"titleTemplate":6},"/docs/4.x/api/utils/define-nuxt-component","docs/4.x/4.api/3.utils/define-nuxt-component",{"title":670,"path":1591,"stem":1592,"titleTemplate":6},"/docs/4.x/api/utils/define-nuxt-plugin","docs/4.x/4.api/3.utils/define-nuxt-plugin",{"title":674,"path":1594,"stem":1595,"titleTemplate":6},"/docs/4.x/api/utils/define-nuxt-route-middleware","docs/4.x/4.api/3.utils/define-nuxt-route-middleware",{"title":678,"path":1597,"stem":1598,"titleTemplate":6},"/docs/4.x/api/utils/define-page-meta","docs/4.x/4.api/3.utils/define-page-meta",{"title":682,"path":1600,"stem":1601,"titleTemplate":6},"/docs/4.x/api/utils/define-route-rules","docs/4.x/4.api/3.utils/define-route-rules",{"title":686,"path":1603,"stem":1604,"titleTemplate":6},"/docs/4.x/api/utils/navigate-to","docs/4.x/4.api/3.utils/navigate-to",{"title":690,"path":1606,"stem":1607,"titleTemplate":6},"/docs/4.x/api/utils/on-before-route-leave","docs/4.x/4.api/3.utils/on-before-route-leave",{"title":694,"path":1609,"stem":1610,"titleTemplate":6},"/docs/4.x/api/utils/on-before-route-update","docs/4.x/4.api/3.utils/on-before-route-update",{"title":698,"path":1612,"stem":1613,"titleTemplate":6},"/docs/4.x/api/utils/on-nuxt-ready","docs/4.x/4.api/3.utils/on-nuxt-ready",{"title":702,"path":1615,"stem":1616,"titleTemplate":6},"/docs/4.x/api/utils/prefetch-components","docs/4.x/4.api/3.utils/prefetch-components",{"title":706,"path":1618,"stem":1619,"titleTemplate":6},"/docs/4.x/api/utils/preload-components","docs/4.x/4.api/3.utils/preload-components",{"title":710,"path":1621,"stem":1622,"titleTemplate":6},"/docs/4.x/api/utils/preload-route-components","docs/4.x/4.api/3.utils/preload-route-components",{"title":714,"path":1624,"stem":1625,"titleTemplate":6},"/docs/4.x/api/utils/prerender-routes","docs/4.x/4.api/3.utils/prerender-routes",{"title":718,"path":1627,"stem":1628,"titleTemplate":6},"/docs/4.x/api/utils/refresh-cookie","docs/4.x/4.api/3.utils/refresh-cookie",{"title":722,"path":1630,"stem":1631,"titleTemplate":6},"/docs/4.x/api/utils/refresh-nuxt-data","docs/4.x/4.api/3.utils/refresh-nuxt-data",{"title":726,"path":1633,"stem":1634,"titleTemplate":6},"/docs/4.x/api/utils/reload-nuxt-app","docs/4.x/4.api/3.utils/reload-nuxt-app",{"title":730,"path":1636,"stem":1637,"titleTemplate":6},"/docs/4.x/api/utils/set-page-layout","docs/4.x/4.api/3.utils/set-page-layout",{"title":734,"path":1639,"stem":1640,"titleTemplate":6},"/docs/4.x/api/utils/set-response-status","docs/4.x/4.api/3.utils/set-response-status",{"title":738,"path":1642,"stem":1643,"titleTemplate":6},"/docs/4.x/api/utils/show-error","docs/4.x/4.api/3.utils/show-error",{"title":742,"path":1645,"stem":1646,"titleTemplate":6},"/docs/4.x/api/utils/update-app-config","docs/4.x/4.api/3.utils/update-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":1648,"stem":1649,"children":1650,"page":108},"/docs/4.x/api/commands","docs/4.x/4.api/4.commands",[1651,1654,1657,1660,1663,1666,1669,1672,1675,1678,1681,1684,1687,1690,1693,1696],{"title":753,"path":1652,"stem":1653,"titleTemplate":6},"/docs/4.x/api/commands/add","docs/4.x/4.api/4.commands/add",{"title":757,"path":1655,"stem":1656,"titleTemplate":6},"/docs/4.x/api/commands/analyze","docs/4.x/4.api/4.commands/analyze",{"title":761,"path":1658,"stem":1659,"titleTemplate":6},"/docs/4.x/api/commands/build","docs/4.x/4.api/4.commands/build",{"title":765,"path":1661,"stem":1662,"titleTemplate":6},"/docs/4.x/api/commands/build-module","docs/4.x/4.api/4.commands/build-module",{"title":769,"path":1664,"stem":1665,"titleTemplate":6},"/docs/4.x/api/commands/cleanup","docs/4.x/4.api/4.commands/cleanup",{"title":773,"path":1667,"stem":1668,"titleTemplate":6},"/docs/4.x/api/commands/dev","docs/4.x/4.api/4.commands/dev",{"title":777,"path":1670,"stem":1671,"titleTemplate":6},"/docs/4.x/api/commands/devtools","docs/4.x/4.api/4.commands/devtools",{"title":781,"path":1673,"stem":1674,"titleTemplate":6},"/docs/4.x/api/commands/generate","docs/4.x/4.api/4.commands/generate",{"title":785,"path":1676,"stem":1677,"titleTemplate":6},"/docs/4.x/api/commands/info","docs/4.x/4.api/4.commands/info",{"title":789,"path":1679,"stem":1680,"titleTemplate":6},"/docs/4.x/api/commands/init","docs/4.x/4.api/4.commands/init",{"title":793,"path":1682,"stem":1683,"titleTemplate":6},"/docs/4.x/api/commands/module","docs/4.x/4.api/4.commands/module",{"title":797,"path":1685,"stem":1686,"titleTemplate":6},"/docs/4.x/api/commands/prepare","docs/4.x/4.api/4.commands/prepare",{"title":801,"path":1688,"stem":1689,"titleTemplate":6},"/docs/4.x/api/commands/preview","docs/4.x/4.api/4.commands/preview",{"title":805,"path":1691,"stem":1692,"titleTemplate":6},"/docs/4.x/api/commands/test","docs/4.x/4.api/4.commands/test",{"title":809,"path":1694,"stem":1695,"titleTemplate":6},"/docs/4.x/api/commands/typecheck","docs/4.x/4.api/4.commands/typecheck",{"title":813,"path":1697,"stem":1698,"titleTemplate":6},"/docs/4.x/api/commands/upgrade","docs/4.x/4.api/4.commands/upgrade",{"title":411,"titleTemplate":817,"icon":818,"path":1700,"stem":1701,"children":1702,"page":108},"/docs/4.x/api/kit","docs/4.x/4.api/5.kit",[1703,1706,1709,1712,1715,1718,1721,1724,1727,1730,1733,1736,1739,1742,1745,1748,1751,1754],{"title":276,"path":1704,"stem":1705,"titleTemplate":6},"/docs/4.x/api/kit/modules","docs/4.x/4.api/5.kit/1.modules",{"title":399,"path":1707,"stem":1708,"titleTemplate":6},"/docs/4.x/api/kit/runtime-config","docs/4.x/4.api/5.kit/10.runtime-config",{"title":829,"path":1710,"stem":1711,"titleTemplate":6},"/docs/4.x/api/kit/templates","docs/4.x/4.api/5.kit/10.templates",{"title":833,"path":1713,"stem":1714,"titleTemplate":6},"/docs/4.x/api/kit/nitro","docs/4.x/4.api/5.kit/11.nitro",{"title":837,"path":1716,"stem":1717,"titleTemplate":6},"/docs/4.x/api/kit/resolving","docs/4.x/4.api/5.kit/12.resolving",{"title":841,"path":1719,"stem":1720,"titleTemplate":6},"/docs/4.x/api/kit/logging","docs/4.x/4.api/5.kit/13.logging",{"title":845,"path":1722,"stem":1723,"titleTemplate":6},"/docs/4.x/api/kit/builder","docs/4.x/4.api/5.kit/14.builder",{"title":849,"path":1725,"stem":1726,"titleTemplate":6},"/docs/4.x/api/kit/examples","docs/4.x/4.api/5.kit/15.examples",{"title":84,"path":1728,"stem":1729,"titleTemplate":6},"/docs/4.x/api/kit/layers","docs/4.x/4.api/5.kit/16.layers",{"title":856,"path":1731,"stem":1732,"titleTemplate":6},"/docs/4.x/api/kit/programmatic","docs/4.x/4.api/5.kit/2.programmatic",{"title":860,"path":1734,"stem":1735,"titleTemplate":6},"/docs/4.x/api/kit/compatibility","docs/4.x/4.api/5.kit/3.compatibility",{"title":268,"path":1737,"stem":1738,"titleTemplate":6},"/docs/4.x/api/kit/autoimports","docs/4.x/4.api/5.kit/4.autoimports",{"title":434,"path":1740,"stem":1741,"titleTemplate":6},"/docs/4.x/api/kit/components","docs/4.x/4.api/5.kit/5.components",{"title":870,"path":1743,"stem":1744,"titleTemplate":6},"/docs/4.x/api/kit/context","docs/4.x/4.api/5.kit/6.context",{"title":874,"path":1746,"stem":1747,"titleTemplate":6},"/docs/4.x/api/kit/pages","docs/4.x/4.api/5.kit/7.pages",{"title":878,"path":1749,"stem":1750,"titleTemplate":6},"/docs/4.x/api/kit/layout","docs/4.x/4.api/5.kit/8.layout",{"title":882,"path":1752,"stem":1753,"titleTemplate":6},"/docs/4.x/api/kit/head","docs/4.x/4.api/5.kit/9.head",{"title":886,"path":1755,"stem":1756,"titleTemplate":6},"/docs/4.x/api/kit/plugins","docs/4.x/4.api/5.kit/9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":1758,"stem":1759,"children":1760,"page":108},"/docs/4.x/api/advanced","docs/4.x/4.api/6.advanced",[1761,1764],{"title":407,"path":1762,"stem":1763,"titleTemplate":6},"/docs/4.x/api/advanced/hooks","docs/4.x/4.api/6.advanced/1.hooks",{"title":899,"path":1765,"stem":1766,"titleTemplate":6},"/docs/4.x/api/advanced/import-meta","docs/4.x/4.api/6.advanced/2.import-meta",{"title":903,"path":1768,"stem":1769,"titleTemplate":906,"icon":32},"/docs/4.x/api/nuxt-config","docs/4.x/4.api/6.nuxt-config",{"title":849,"titleTemplate":908,"icon":909,"path":1771,"stem":1772,"children":1773,"page":108},"/docs/4.x/examples","docs/4.x/4.examples",[1774,1777,1796,1809,1840],{"title":914,"path":1775,"stem":1776,"titleTemplate":6},"/docs/4.x/examples/hello-world","docs/4.x/4.examples/0.hello-world",{"title":395,"path":1778,"stem":1779,"children":1780,"page":108},"/docs/4.x/examples/features","docs/4.x/4.examples/1.features",[1781,1784,1787,1790,1793],{"title":922,"path":1782,"stem":1783,"titleTemplate":6},"/docs/4.x/examples/features/auto-imports","docs/4.x/4.examples/1.features/1.auto-imports",{"title":64,"path":1785,"stem":1786,"titleTemplate":6},"/docs/4.x/examples/features/data-fetching","docs/4.x/4.examples/1.features/2.data-fetching",{"title":69,"path":1788,"stem":1789,"titleTemplate":6},"/docs/4.x/examples/features/state-management","docs/4.x/4.examples/1.features/3.state-management",{"title":932,"path":1791,"stem":1792,"titleTemplate":6},"/docs/4.x/examples/features/meta-tags","docs/4.x/4.examples/1.features/4.meta-tags",{"title":936,"path":1794,"stem":1795,"titleTemplate":6},"/docs/4.x/examples/features/layouts","docs/4.x/4.examples/1.features/5.layouts",{"title":49,"path":1797,"stem":1798,"children":1799,"page":108},"/docs/4.x/examples/routing","docs/4.x/4.examples/2.routing",[1800,1803,1806],{"title":944,"path":1801,"stem":1802,"titleTemplate":6},"/docs/4.x/examples/routing/middleware","docs/4.x/4.examples/2.routing/middleware",{"title":874,"path":1804,"stem":1805,"titleTemplate":6},"/docs/4.x/examples/routing/pages","docs/4.x/4.examples/2.routing/pages",{"title":951,"path":1807,"stem":1808,"titleTemplate":6},"/docs/4.x/examples/routing/universal-router","docs/4.x/4.examples/2.routing/universal-router",{"title":890,"path":1810,"stem":1811,"children":1812,"page":108},"/docs/4.x/examples/advanced","docs/4.x/4.examples/4.advanced",[1813,1816,1819,1822,1825,1828,1831,1834,1837],{"title":84,"path":1814,"stem":1815,"titleTemplate":6},"/docs/4.x/examples/advanced/config-extends","docs/4.x/4.examples/4.advanced/config-extends",{"title":74,"path":1817,"stem":1818,"titleTemplate":6},"/docs/4.x/examples/advanced/error-handling","docs/4.x/4.examples/4.advanced/error-handling",{"title":965,"path":1820,"stem":1821,"titleTemplate":6},"/docs/4.x/examples/advanced/jsx","docs/4.x/4.examples/4.advanced/jsx",{"title":969,"path":1823,"stem":1824,"titleTemplate":6},"/docs/4.x/examples/advanced/locale","docs/4.x/4.examples/4.advanced/locale",{"title":973,"path":1826,"stem":1827,"titleTemplate":6},"/docs/4.x/examples/advanced/module-extend-pages","docs/4.x/4.examples/4.advanced/module-extend-pages",{"title":977,"path":1829,"stem":1830,"titleTemplate":6},"/docs/4.x/examples/advanced/teleport","docs/4.x/4.examples/4.advanced/teleport",{"title":99,"path":1832,"stem":1833,"titleTemplate":6},"/docs/4.x/examples/advanced/testing","docs/4.x/4.examples/4.advanced/testing",{"title":519,"path":1835,"stem":1836,"titleTemplate":6},"/docs/4.x/examples/advanced/use-cookie","docs/4.x/4.examples/4.advanced/use-cookie",{"title":987,"path":1838,"stem":1839,"titleTemplate":6},"/docs/4.x/examples/advanced/use-custom-fetch-composable","docs/4.x/4.examples/4.advanced/use-custom-fetch-composable",{"title":991,"path":1841,"stem":1842,"children":1843,"page":108},"/docs/4.x/examples/experimental","docs/4.x/4.examples/7.experimental",[1844],{"title":996,"path":1845,"stem":1846,"titleTemplate":6},"/docs/4.x/examples/experimental/wasm","docs/4.x/4.examples/7.experimental/wasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":1848,"stem":1849,"children":1850,"page":108},"/docs/4.x/community","docs/4.x/5.community",[1851,1854,1857,1860,1863,1866],{"title":1007,"path":1852,"stem":1853,"titleTemplate":6,"icon":1010},"/docs/4.x/community/getting-help","docs/4.x/5.community/2.getting-help",{"title":1012,"path":1855,"stem":1856,"titleTemplate":6,"icon":1015},"/docs/4.x/community/reporting-bugs","docs/4.x/5.community/3.reporting-bugs",{"title":1017,"path":1858,"stem":1859,"titleTemplate":6,"icon":1020},"/docs/4.x/community/contribution","docs/4.x/5.community/4.contribution",{"title":1022,"path":1861,"stem":1862,"titleTemplate":6,"icon":1025},"/docs/4.x/community/framework-contribution","docs/4.x/5.community/5.framework-contribution",{"title":1027,"path":1864,"stem":1865,"titleTemplate":6,"icon":1030},"/docs/4.x/community/roadmap","docs/4.x/5.community/6.roadmap",{"title":1032,"path":1867,"stem":1868,"titleTemplate":6,"icon":1035},"/docs/4.x/community/changelog","docs/4.x/5.community/7.changelog",{"title":1037,"titleTemplate":1038,"icon":1039,"path":1870,"stem":1871,"children":1872,"page":108},"/docs/4.x/bridge","docs/4.x/6.bridge",[1873,1876,1879,1882,1885,1888,1891,1894,1897,1900],{"title":1044,"path":1874,"stem":1875,"titleTemplate":6},"/docs/4.x/bridge/overview","docs/4.x/6.bridge/1.overview",{"title":29,"path":1877,"stem":1878,"titleTemplate":6},"/docs/4.x/bridge/configuration","docs/4.x/6.bridge/10.configuration",{"title":280,"path":1880,"stem":1881,"titleTemplate":6},"/docs/4.x/bridge/typescript","docs/4.x/6.bridge/2.typescript",{"title":1054,"path":1883,"stem":1884,"titleTemplate":6},"/docs/4.x/bridge/bridge-composition-api","docs/4.x/6.bridge/3.bridge-composition-api",{"title":1058,"path":1886,"stem":1887,"titleTemplate":6},"/docs/4.x/bridge/plugins-and-middleware","docs/4.x/6.bridge/4.plugins-and-middleware",{"title":1062,"path":1889,"stem":1890,"titleTemplate":6},"/docs/4.x/bridge/nuxt3-compatible-api","docs/4.x/6.bridge/5.nuxt3-compatible-api",{"title":932,"path":1892,"stem":1893,"titleTemplate":6},"/docs/4.x/bridge/meta","docs/4.x/6.bridge/6.meta",{"title":399,"path":1895,"stem":1896,"titleTemplate":6},"/docs/4.x/bridge/runtime-config","docs/4.x/6.bridge/7.runtime-config",{"title":833,"path":1898,"stem":1899,"titleTemplate":6},"/docs/4.x/bridge/nitro","docs/4.x/6.bridge/8.nitro",{"title":1075,"path":1901,"stem":1902,"titleTemplate":6},"/docs/4.x/bridge/vite","docs/4.x/6.bridge/9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":1904,"stem":1905,"children":1906,"page":108},"/docs/4.x/migration","docs/4.x/7.migration",[1907,1910,1913,1916,1919,1922,1925,1928,1931,1934,1937],{"title":1044,"path":1908,"stem":1909,"titleTemplate":6},"/docs/4.x/migration/overview","docs/4.x/7.migration/1.overview",{"title":1088,"path":1911,"stem":1912,"titleTemplate":6},"/docs/4.x/migration/bundling","docs/4.x/7.migration/10.bundling",{"title":79,"path":1914,"stem":1915,"titleTemplate":6},"/docs/4.x/migration/server","docs/4.x/7.migration/11.server",{"title":29,"path":1917,"stem":1918,"titleTemplate":6},"/docs/4.x/migration/configuration","docs/4.x/7.migration/2.configuration",{"title":276,"path":1920,"stem":1921,"titleTemplate":6},"/docs/4.x/migration/module-authors","docs/4.x/7.migration/20.module-authors",{"title":922,"path":1923,"stem":1924,"titleTemplate":6},"/docs/4.x/migration/auto-imports","docs/4.x/7.migration/3.auto-imports",{"title":932,"path":1926,"stem":1927,"titleTemplate":6},"/docs/4.x/migration/meta","docs/4.x/7.migration/4.meta",{"title":1058,"path":1929,"stem":1930,"titleTemplate":6},"/docs/4.x/migration/plugins-and-middleware","docs/4.x/7.migration/5.plugins-and-middleware",{"title":1110,"path":1932,"stem":1933,"titleTemplate":6},"/docs/4.x/migration/pages-and-layouts","docs/4.x/7.migration/6.pages-and-layouts",{"title":1114,"path":1935,"stem":1936,"titleTemplate":6},"/docs/4.x/migration/component-options","docs/4.x/7.migration/7.component-options",{"title":399,"path":1938,"stem":1939,"titleTemplate":6},"/docs/4.x/migration/runtime-config","docs/4.x/7.migration/8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1941,"stem":1942,"children":1943,"page":108},"/docs/5.x","docs/5.x",[1944,2002,2092,2219,2583,2660,2682,2716],{"title":12,"titleTemplate":13,"icon":14,"path":1945,"stem":1946,"children":1947,"page":108},"/docs/5.x/getting-started","docs/5.x/1.getting-started",[1948,1951,1954,1957,1960,1963,1966,1969,1972,1975,1978,1981,1984,1987,1990,1993,1996,1999],{"title":19,"path":1949,"stem":1950,"titleTemplate":6,"icon":22},"/docs/5.x/getting-started/introduction","docs/5.x/1.getting-started/01.introduction",{"title":24,"path":1952,"stem":1953,"titleTemplate":6,"icon":27},"/docs/5.x/getting-started/installation","docs/5.x/1.getting-started/02.installation",{"title":29,"path":1955,"stem":1956,"titleTemplate":6,"icon":32},"/docs/5.x/getting-started/configuration","docs/5.x/1.getting-started/03.configuration",{"title":34,"path":1958,"stem":1959,"titleTemplate":6,"icon":37},"/docs/5.x/getting-started/views","docs/5.x/1.getting-started/04.views",{"title":39,"path":1961,"stem":1962,"titleTemplate":6,"icon":42},"/docs/5.x/getting-started/assets","docs/5.x/1.getting-started/05.assets",{"title":44,"path":1964,"stem":1965,"titleTemplate":6,"icon":47},"/docs/5.x/getting-started/styling","docs/5.x/1.getting-started/06.styling",{"title":49,"path":1967,"stem":1968,"titleTemplate":6,"icon":52},"/docs/5.x/getting-started/routing","docs/5.x/1.getting-started/07.routing",{"title":54,"path":1970,"stem":1971,"titleTemplate":6,"icon":57},"/docs/5.x/getting-started/seo-meta","docs/5.x/1.getting-started/08.seo-meta",{"title":59,"path":1973,"stem":1974,"titleTemplate":6,"icon":62},"/docs/5.x/getting-started/transitions","docs/5.x/1.getting-started/09.transitions",{"title":64,"path":1976,"stem":1977,"titleTemplate":6,"icon":67},"/docs/5.x/getting-started/data-fetching","docs/5.x/1.getting-started/10.data-fetching",{"title":69,"path":1979,"stem":1980,"titleTemplate":6,"icon":72},"/docs/5.x/getting-started/state-management","docs/5.x/1.getting-started/11.state-management",{"title":74,"path":1982,"stem":1983,"titleTemplate":6,"icon":77},"/docs/5.x/getting-started/error-handling","docs/5.x/1.getting-started/12.error-handling",{"title":79,"path":1985,"stem":1986,"titleTemplate":6,"icon":82},"/docs/5.x/getting-started/server","docs/5.x/1.getting-started/13.server",{"title":84,"path":1988,"stem":1989,"titleTemplate":6,"icon":87},"/docs/5.x/getting-started/layers","docs/5.x/1.getting-started/14.layers",{"title":89,"path":1991,"stem":1992,"titleTemplate":6,"icon":92},"/docs/5.x/getting-started/prerendering","docs/5.x/1.getting-started/15.prerendering",{"title":94,"path":1994,"stem":1995,"titleTemplate":6,"icon":97},"/docs/5.x/getting-started/deployment","docs/5.x/1.getting-started/16.deployment",{"title":99,"path":1997,"stem":1998,"titleTemplate":6,"icon":102},"/docs/5.x/getting-started/testing","docs/5.x/1.getting-started/17.testing",{"title":104,"path":2000,"stem":2001,"titleTemplate":6,"icon":107},"/docs/5.x/getting-started/upgrade","docs/5.x/1.getting-started/18.upgrade",{"title":110,"titleTemplate":111,"icon":112,"path":2003,"stem":2004,"children":2005,"page":108},"/docs/5.x/directory-structure","docs/5.x/2.directory-structure",[2006,2009,2012,2050,2053,2056,2059,2062,2065,2068,2071,2074,2077,2080,2083,2086,2089],{"title":117,"path":2007,"stem":2008,"titleTemplate":6,"icon":120},"/docs/5.x/directory-structure/nuxt","docs/5.x/2.directory-structure/0.nuxt",{"title":122,"path":2010,"stem":2011,"titleTemplate":6,"icon":125},"/docs/5.x/directory-structure/output","docs/5.x/2.directory-structure/0.output",{"title":1193,"titleTemplate":111,"head":2013,"defaultOpen":1196,"icon":1197,"path":2014,"stem":2015,"children":2016,"page":108},{"title":1195},"/docs/5.x/directory-structure/app","docs/5.x/2.directory-structure/1.app",[2017,2020,2023,2026,2029,2032,2035,2038,2041,2044,2047],{"title":127,"path":2018,"stem":2019,"titleTemplate":6,"icon":130},"/docs/5.x/directory-structure/app/assets","docs/5.x/2.directory-structure/1.app/1.assets",{"title":132,"path":2021,"stem":2022,"titleTemplate":6,"icon":135},"/docs/5.x/directory-structure/app/components","docs/5.x/2.directory-structure/1.app/1.components",{"title":137,"path":2024,"stem":2025,"titleTemplate":6,"icon":140},"/docs/5.x/directory-structure/app/composables","docs/5.x/2.directory-structure/1.app/1.composables",{"title":152,"path":2027,"stem":2028,"titleTemplate":6,"icon":155},"/docs/5.x/directory-structure/app/layouts","docs/5.x/2.directory-structure/1.app/1.layouts",{"title":157,"path":2030,"stem":2031,"titleTemplate":6,"icon":160},"/docs/5.x/directory-structure/app/middleware","docs/5.x/2.directory-structure/1.app/1.middleware",{"title":171,"path":2033,"stem":2034,"titleTemplate":6,"icon":155},"/docs/5.x/directory-structure/app/pages","docs/5.x/2.directory-structure/1.app/1.pages",{"title":175,"path":2036,"stem":2037,"titleTemplate":6,"icon":178},"/docs/5.x/directory-structure/app/plugins","docs/5.x/2.directory-structure/1.app/1.plugins",{"title":195,"path":2039,"stem":2040,"titleTemplate":6,"icon":198},"/docs/5.x/directory-structure/app/utils","docs/5.x/2.directory-structure/1.app/1.utils",{"title":219,"path":2042,"stem":2043,"titleTemplate":6,"icon":222},"/docs/5.x/directory-structure/app/app","docs/5.x/2.directory-structure/1.app/3.app",{"title":224,"path":2045,"stem":2046,"titleTemplate":6,"icon":227},"/docs/5.x/directory-structure/app/app-config","docs/5.x/2.directory-structure/1.app/3.app-config",{"title":229,"path":2048,"stem":2049,"titleTemplate":6,"icon":222},"/docs/5.x/directory-structure/app/error","docs/5.x/2.directory-structure/1.app/3.error",{"title":142,"path":2051,"stem":2052,"titleTemplate":6,"icon":145},"/docs/5.x/directory-structure/content","docs/5.x/2.directory-structure/1.content",{"title":147,"path":2054,"stem":2055,"titleTemplate":6,"icon":150},"/docs/5.x/directory-structure/layers","docs/5.x/2.directory-structure/1.layers",{"title":162,"path":2057,"stem":2058,"titleTemplate":6,"icon":150},"/docs/5.x/directory-structure/modules","docs/5.x/2.directory-structure/1.modules",{"title":166,"path":2060,"stem":2061,"titleTemplate":6,"icon":169},"/docs/5.x/directory-structure/node_modules","docs/5.x/2.directory-structure/1.node_modules",{"title":180,"path":2063,"stem":2064,"titleTemplate":6,"icon":183},"/docs/5.x/directory-structure/public","docs/5.x/2.directory-structure/1.public",{"title":185,"path":2066,"stem":2067,"titleTemplate":6,"icon":188},"/docs/5.x/directory-structure/server","docs/5.x/2.directory-structure/1.server",{"title":190,"path":2069,"stem":2070,"titleTemplate":6,"icon":193},"/docs/5.x/directory-structure/shared","docs/5.x/2.directory-structure/1.shared",{"title":200,"path":2072,"stem":2073,"titleTemplate":6,"icon":203},"/docs/5.x/directory-structure/env","docs/5.x/2.directory-structure/2.env",{"title":205,"path":2075,"stem":2076,"titleTemplate":6,"icon":208},"/docs/5.x/directory-structure/gitignore","docs/5.x/2.directory-structure/2.gitignore",{"title":210,"path":2078,"stem":2079,"titleTemplate":6,"icon":213},"/docs/5.x/directory-structure/nuxtignore","docs/5.x/2.directory-structure/2.nuxtignore",{"title":215,"path":2081,"stem":2082,"titleTemplate":6,"icon":213},"/docs/5.x/directory-structure/nuxtrc","docs/5.x/2.directory-structure/2.nuxtrc",{"title":233,"path":2084,"stem":2085,"titleTemplate":6,"icon":213},"/docs/5.x/directory-structure/nuxt-config","docs/5.x/2.directory-structure/3.nuxt-config",{"title":237,"path":2087,"stem":2088,"titleTemplate":6,"icon":240},"/docs/5.x/directory-structure/package","docs/5.x/2.directory-structure/3.package",{"title":242,"path":2090,"stem":2091,"titleTemplate":6,"icon":245},"/docs/5.x/directory-structure/tsconfig","docs/5.x/2.directory-structure/3.tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":2093,"stem":2094,"children":2095,"page":108},"/docs/5.x/guide","docs/5.x/3.guide",[2096,2121,2134,2144,2169,2185],{"title":253,"titleTemplate":254,"icon":255,"path":2097,"stem":2098,"children":2099,"page":108},"/docs/5.x/guide/concepts","docs/5.x/3.guide/1.concepts",[2100,2103,2106,2109,2112,2115,2118],{"title":260,"path":2101,"stem":2102,"titleTemplate":6},"/docs/5.x/guide/concepts/rendering","docs/5.x/3.guide/1.concepts/1.rendering",{"title":264,"path":2104,"stem":2105,"titleTemplate":6},"/docs/5.x/guide/concepts/nuxt-lifecycle","docs/5.x/3.guide/1.concepts/2.nuxt-lifecycle",{"title":268,"path":2107,"stem":2108,"titleTemplate":6},"/docs/5.x/guide/concepts/auto-imports","docs/5.x/3.guide/1.concepts/3.auto-imports",{"title":272,"path":2110,"stem":2111,"titleTemplate":6},"/docs/5.x/guide/concepts/server-engine","docs/5.x/3.guide/1.concepts/4.server-engine",{"title":276,"path":2113,"stem":2114,"titleTemplate":6},"/docs/5.x/guide/concepts/modules","docs/5.x/3.guide/1.concepts/5.modules",{"title":280,"path":2116,"stem":2117,"titleTemplate":6},"/docs/5.x/guide/concepts/typescript","docs/5.x/3.guide/1.concepts/8.typescript",{"title":284,"path":2119,"stem":2120,"titleTemplate":6},"/docs/5.x/guide/concepts/code-style","docs/5.x/3.guide/1.concepts/9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":2122,"stem":2123,"children":2124,"page":108},"/docs/5.x/guide/best-practices","docs/5.x/3.guide/2.best-practices",[2125,2128,2131],{"title":1310,"path":2126,"stem":2127,"titleTemplate":6},"/docs/5.x/guide/best-practices/hydration","docs/5.x/3.guide/2.best-practices/hydration",{"title":299,"path":2129,"stem":2130,"titleTemplate":6},"/docs/5.x/guide/best-practices/performance","docs/5.x/3.guide/2.best-practices/performance",{"title":303,"path":2132,"stem":2133,"titleTemplate":6},"/docs/5.x/guide/best-practices/plugins","docs/5.x/3.guide/2.best-practices/plugins",{"title":307,"titleTemplate":308,"icon":309,"path":2135,"stem":2136,"children":2137,"page":108},"/docs/5.x/guide/ai","docs/5.x/3.guide/3.ai",[2138,2141],{"title":314,"path":2139,"stem":2140,"titleTemplate":6},"/docs/5.x/guide/ai/mcp","docs/5.x/3.guide/3.ai/1.mcp",{"title":318,"path":2142,"stem":2143,"titleTemplate":6},"/docs/5.x/guide/ai/llms-txt","docs/5.x/3.guide/3.ai/2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":2145,"stem":2146,"children":2147,"page":108},"/docs/5.x/guide/modules","docs/5.x/3.guide/4.modules",[2148,2151,2154,2157,2160,2163,2166],{"title":329,"path":2149,"stem":2150,"titleTemplate":6},"/docs/5.x/guide/modules/getting-started","docs/5.x/3.guide/4.modules/1.getting-started",{"title":333,"path":2152,"stem":2153,"titleTemplate":6},"/docs/5.x/guide/modules/module-anatomy","docs/5.x/3.guide/4.modules/2.module-anatomy",{"title":337,"path":2155,"stem":2156,"titleTemplate":6},"/docs/5.x/guide/modules/recipes-basics","docs/5.x/3.guide/4.modules/3.recipes-basics",{"title":341,"path":2158,"stem":2159,"titleTemplate":6},"/docs/5.x/guide/modules/recipes-advanced","docs/5.x/3.guide/4.modules/4.recipes-advanced",{"title":345,"path":2161,"stem":2162,"titleTemplate":6},"/docs/5.x/guide/modules/testing","docs/5.x/3.guide/4.modules/5.testing",{"title":349,"path":2164,"stem":2165,"titleTemplate":6},"/docs/5.x/guide/modules/best-practices","docs/5.x/3.guide/4.modules/6.best-practices",{"title":353,"path":2167,"stem":2168,"titleTemplate":6},"/docs/5.x/guide/modules/ecosystem","docs/5.x/3.guide/4.modules/7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":2170,"stem":2171,"children":2172,"page":108},"/docs/5.x/guide/recipes","docs/5.x/3.guide/5.recipes",[2173,2176,2179,2182],{"title":364,"path":2174,"stem":2175,"titleTemplate":6},"/docs/5.x/guide/recipes/custom-routing","docs/5.x/3.guide/5.recipes/1.custom-routing",{"title":368,"path":2177,"stem":2178,"titleTemplate":6},"/docs/5.x/guide/recipes/vite-plugin","docs/5.x/3.guide/5.recipes/2.vite-plugin",{"title":372,"path":2180,"stem":2181,"titleTemplate":6},"/docs/5.x/guide/recipes/custom-usefetch","docs/5.x/3.guide/5.recipes/3.custom-usefetch",{"title":376,"path":2183,"stem":2184,"titleTemplate":6},"/docs/5.x/guide/recipes/sessions-and-authentication","docs/5.x/3.guide/5.recipes/4.sessions-and-authentication",{"title":380,"titleTemplate":381,"icon":382,"path":2186,"stem":2187,"children":2188,"page":108},"/docs/5.x/guide/going-further","docs/5.x/3.guide/6.going-further",[2189,2192,2195,2198,2201,2204,2207,2210,2213,2216],{"title":387,"path":2190,"stem":2191,"titleTemplate":6},"/docs/5.x/guide/going-further/events","docs/5.x/3.guide/6.going-further/1.events",{"title":391,"path":2193,"stem":2194,"titleTemplate":6},"/docs/5.x/guide/going-further/experimental-features","docs/5.x/3.guide/6.going-further/1.experimental-features",{"title":395,"path":2196,"stem":2197,"titleTemplate":6},"/docs/5.x/guide/going-further/features","docs/5.x/3.guide/6.going-further/1.features",{"title":399,"path":2199,"stem":2200,"titleTemplate":6},"/docs/5.x/guide/going-further/runtime-config","docs/5.x/3.guide/6.going-further/10.runtime-config",{"title":403,"path":2202,"stem":2203,"titleTemplate":6},"/docs/5.x/guide/going-further/nightly-release-channel","docs/5.x/3.guide/6.going-further/11.nightly-release-channel",{"title":407,"path":2205,"stem":2206,"titleTemplate":6},"/docs/5.x/guide/going-further/hooks","docs/5.x/3.guide/6.going-further/2.hooks",{"title":411,"path":2208,"stem":2209,"titleTemplate":6},"/docs/5.x/guide/going-further/kit","docs/5.x/3.guide/6.going-further/4.kit",{"title":415,"path":2211,"stem":2212,"titleTemplate":6},"/docs/5.x/guide/going-further/nuxt-app","docs/5.x/3.guide/6.going-further/6.nuxt-app",{"title":419,"path":2214,"stem":2215,"titleTemplate":6},"/docs/5.x/guide/going-further/layers","docs/5.x/3.guide/6.going-further/7.layers",{"title":423,"path":2217,"stem":2218,"titleTemplate":6},"/docs/5.x/guide/going-further/debugging","docs/5.x/3.guide/6.going-further/9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":2220,"stem":2221,"children":2222,"page":108},"/docs/5.x/api","docs/5.x/4.api",[2223,2275,2369,2460,2512,2570,2580],{"title":434,"titleTemplate":435,"icon":324,"path":2224,"stem":2225,"children":2226,"page":108},"/docs/5.x/api/components","docs/5.x/4.api/1.components",[2227,2230,2233,2236,2239,2242,2245,2248,2251,2254,2257,2260,2263,2266,2269,2272],{"title":440,"path":2228,"stem":2229,"titleTemplate":6},"/docs/5.x/api/components/client-only","docs/5.x/4.api/1.components/1.client-only",{"title":444,"path":2231,"stem":2232,"titleTemplate":6},"/docs/5.x/api/components/dev-only","docs/5.x/4.api/1.components/1.dev-only",{"title":448,"path":2234,"stem":2235,"titleTemplate":6},"/docs/5.x/api/components/nuxt-client-fallback","docs/5.x/4.api/1.components/1.nuxt-client-fallback",{"title":452,"path":2237,"stem":2238,"titleTemplate":6},"/docs/5.x/api/components/nuxt-picture","docs/5.x/4.api/1.components/10.nuxt-picture",{"title":456,"path":2240,"stem":2241,"titleTemplate":6},"/docs/5.x/api/components/teleports","docs/5.x/4.api/1.components/11.teleports",{"title":460,"path":2243,"stem":2244,"titleTemplate":6},"/docs/5.x/api/components/nuxt-route-announcer","docs/5.x/4.api/1.components/12.nuxt-route-announcer",{"title":464,"path":2246,"stem":2247,"titleTemplate":6},"/docs/5.x/api/components/nuxt-time","docs/5.x/4.api/1.components/13.nuxt-time",{"title":1434,"path":2249,"stem":2250,"titleTemplate":6},"/docs/5.x/api/components/nuxt-announcer","docs/5.x/4.api/1.components/14.nuxt-announcer",{"title":468,"path":2252,"stem":2253,"titleTemplate":6},"/docs/5.x/api/components/nuxt-page","docs/5.x/4.api/1.components/2.nuxt-page",{"title":472,"path":2255,"stem":2256,"titleTemplate":6},"/docs/5.x/api/components/nuxt-layout","docs/5.x/4.api/1.components/3.nuxt-layout",{"title":476,"path":2258,"stem":2259,"titleTemplate":6},"/docs/5.x/api/components/nuxt-link","docs/5.x/4.api/1.components/4.nuxt-link",{"title":480,"path":2261,"stem":2262,"titleTemplate":6},"/docs/5.x/api/components/nuxt-loading-indicator","docs/5.x/4.api/1.components/5.nuxt-loading-indicator",{"title":484,"path":2264,"stem":2265,"titleTemplate":6},"/docs/5.x/api/components/nuxt-error-boundary","docs/5.x/4.api/1.components/6.nuxt-error-boundary",{"title":488,"path":2267,"stem":2268,"titleTemplate":6},"/docs/5.x/api/components/nuxt-welcome","docs/5.x/4.api/1.components/7.nuxt-welcome",{"title":492,"path":2270,"stem":2271,"titleTemplate":6},"/docs/5.x/api/components/nuxt-island","docs/5.x/4.api/1.components/8.nuxt-island",{"title":496,"path":2273,"stem":2274,"titleTemplate":6},"/docs/5.x/api/components/nuxt-img","docs/5.x/4.api/1.components/9.nuxt-img",{"title":500,"titleTemplate":501,"icon":502,"path":2276,"stem":2277,"children":2278,"page":108},"/docs/5.x/api/composables","docs/5.x/4.api/2.composables",[2279,2282,2285,2288,2291,2294,2297,2300,2303,2306,2309,2312,2315,2318,2321,2324,2327,2330,2333,2336,2339,2342,2345,2348,2351,2354,2357,2360,2363,2366],{"title":507,"path":2280,"stem":2281,"titleTemplate":6},"/docs/5.x/api/composables/on-prehydrate","docs/5.x/4.api/2.composables/on-prehydrate",{"title":1469,"path":2283,"stem":2284,"titleTemplate":6},"/docs/5.x/api/composables/use-announcer","docs/5.x/4.api/2.composables/use-announcer",{"title":511,"path":2286,"stem":2287,"titleTemplate":6},"/docs/5.x/api/composables/use-app-config","docs/5.x/4.api/2.composables/use-app-config",{"title":515,"path":2289,"stem":2290,"titleTemplate":6},"/docs/5.x/api/composables/use-async-data","docs/5.x/4.api/2.composables/use-async-data",{"title":519,"path":2292,"stem":2293,"titleTemplate":6},"/docs/5.x/api/composables/use-cookie","docs/5.x/4.api/2.composables/use-cookie",{"title":523,"path":2295,"stem":2296,"titleTemplate":6},"/docs/5.x/api/composables/use-error","docs/5.x/4.api/2.composables/use-error",{"title":527,"path":2298,"stem":2299,"titleTemplate":6},"/docs/5.x/api/composables/use-fetch","docs/5.x/4.api/2.composables/use-fetch",{"title":531,"path":2301,"stem":2302,"titleTemplate":6},"/docs/5.x/api/composables/use-head","docs/5.x/4.api/2.composables/use-head",{"title":535,"path":2304,"stem":2305,"titleTemplate":6},"/docs/5.x/api/composables/use-head-safe","docs/5.x/4.api/2.composables/use-head-safe",{"title":539,"path":2307,"stem":2308,"titleTemplate":6},"/docs/5.x/api/composables/use-hydration","docs/5.x/4.api/2.composables/use-hydration",{"title":543,"path":2310,"stem":2311,"titleTemplate":6},"/docs/5.x/api/composables/use-lazy-async-data","docs/5.x/4.api/2.composables/use-lazy-async-data",{"title":547,"path":2313,"stem":2314,"titleTemplate":6},"/docs/5.x/api/composables/use-lazy-fetch","docs/5.x/4.api/2.composables/use-lazy-fetch",{"title":551,"path":2316,"stem":2317,"titleTemplate":6},"/docs/5.x/api/composables/use-loading-indicator","docs/5.x/4.api/2.composables/use-loading-indicator",{"title":555,"path":2319,"stem":2320,"titleTemplate":6},"/docs/5.x/api/composables/use-nuxt-app","docs/5.x/4.api/2.composables/use-nuxt-app",{"title":559,"path":2322,"stem":2323,"titleTemplate":6},"/docs/5.x/api/composables/use-nuxt-data","docs/5.x/4.api/2.composables/use-nuxt-data",{"title":563,"path":2325,"stem":2326,"titleTemplate":6},"/docs/5.x/api/composables/use-preview-mode","docs/5.x/4.api/2.composables/use-preview-mode",{"title":567,"path":2328,"stem":2329,"titleTemplate":6},"/docs/5.x/api/composables/use-request-event","docs/5.x/4.api/2.composables/use-request-event",{"title":571,"path":2331,"stem":2332,"titleTemplate":6},"/docs/5.x/api/composables/use-request-fetch","docs/5.x/4.api/2.composables/use-request-fetch",{"title":575,"path":2334,"stem":2335,"titleTemplate":6},"/docs/5.x/api/composables/use-request-header","docs/5.x/4.api/2.composables/use-request-header",{"title":579,"path":2337,"stem":2338,"titleTemplate":6},"/docs/5.x/api/composables/use-request-headers","docs/5.x/4.api/2.composables/use-request-headers",{"title":583,"path":2340,"stem":2341,"titleTemplate":6},"/docs/5.x/api/composables/use-request-url","docs/5.x/4.api/2.composables/use-request-url",{"title":587,"path":2343,"stem":2344,"titleTemplate":6},"/docs/5.x/api/composables/use-response-header","docs/5.x/4.api/2.composables/use-response-header",{"title":591,"path":2346,"stem":2347,"titleTemplate":6},"/docs/5.x/api/composables/use-route","docs/5.x/4.api/2.composables/use-route",{"title":595,"path":2349,"stem":2350,"titleTemplate":6},"/docs/5.x/api/composables/use-route-announcer","docs/5.x/4.api/2.composables/use-route-announcer",{"title":599,"path":2352,"stem":2353,"titleTemplate":6},"/docs/5.x/api/composables/use-router","docs/5.x/4.api/2.composables/use-router",{"title":603,"path":2355,"stem":2356,"titleTemplate":6},"/docs/5.x/api/composables/use-runtime-config","docs/5.x/4.api/2.composables/use-runtime-config",{"title":607,"path":2358,"stem":2359,"titleTemplate":6},"/docs/5.x/api/composables/use-runtime-hook","docs/5.x/4.api/2.composables/use-runtime-hook",{"title":611,"path":2361,"stem":2362,"titleTemplate":6},"/docs/5.x/api/composables/use-seo-meta","docs/5.x/4.api/2.composables/use-seo-meta",{"title":615,"path":2364,"stem":2365,"titleTemplate":6},"/docs/5.x/api/composables/use-server-seo-meta","docs/5.x/4.api/2.composables/use-server-seo-meta",{"title":619,"path":2367,"stem":2368,"titleTemplate":6},"/docs/5.x/api/composables/use-state","docs/5.x/4.api/2.composables/use-state",{"title":623,"titleTemplate":624,"icon":625,"path":2370,"stem":2371,"children":2372,"page":108},"/docs/5.x/api/utils","docs/5.x/4.api/3.utils",[2373,2376,2379,2382,2385,2388,2391,2394,2397,2400,2403,2406,2409,2412,2415,2418,2421,2424,2427,2430,2433,2436,2439,2442,2445,2448,2451,2454,2457],{"title":630,"path":2374,"stem":2375,"titleTemplate":6},"/docs/5.x/api/utils/dollarfetch","docs/5.x/4.api/3.utils/$fetch",{"title":634,"path":2377,"stem":2378,"titleTemplate":6},"/docs/5.x/api/utils/abort-navigation","docs/5.x/4.api/3.utils/abort-navigation",{"title":638,"path":2380,"stem":2381,"titleTemplate":6},"/docs/5.x/api/utils/add-route-middleware","docs/5.x/4.api/3.utils/add-route-middleware",{"title":642,"path":2383,"stem":2384,"titleTemplate":6},"/docs/5.x/api/utils/call-once","docs/5.x/4.api/3.utils/call-once",{"title":646,"path":2386,"stem":2387,"titleTemplate":6},"/docs/5.x/api/utils/clear-error","docs/5.x/4.api/3.utils/clear-error",{"title":650,"path":2389,"stem":2390,"titleTemplate":6},"/docs/5.x/api/utils/clear-nuxt-data","docs/5.x/4.api/3.utils/clear-nuxt-data",{"title":654,"path":2392,"stem":2393,"titleTemplate":6},"/docs/5.x/api/utils/clear-nuxt-state","docs/5.x/4.api/3.utils/clear-nuxt-state",{"title":658,"path":2395,"stem":2396,"titleTemplate":6},"/docs/5.x/api/utils/create-error","docs/5.x/4.api/3.utils/create-error",{"title":662,"path":2398,"stem":2399,"titleTemplate":6},"/docs/5.x/api/utils/define-lazy-hydration-component","docs/5.x/4.api/3.utils/define-lazy-hydration-component",{"title":666,"path":2401,"stem":2402,"titleTemplate":6},"/docs/5.x/api/utils/define-nuxt-component","docs/5.x/4.api/3.utils/define-nuxt-component",{"title":670,"path":2404,"stem":2405,"titleTemplate":6},"/docs/5.x/api/utils/define-nuxt-plugin","docs/5.x/4.api/3.utils/define-nuxt-plugin",{"title":674,"path":2407,"stem":2408,"titleTemplate":6},"/docs/5.x/api/utils/define-nuxt-route-middleware","docs/5.x/4.api/3.utils/define-nuxt-route-middleware",{"title":678,"path":2410,"stem":2411,"titleTemplate":6},"/docs/5.x/api/utils/define-page-meta","docs/5.x/4.api/3.utils/define-page-meta",{"title":682,"path":2413,"stem":2414,"titleTemplate":6},"/docs/5.x/api/utils/define-route-rules","docs/5.x/4.api/3.utils/define-route-rules",{"title":686,"path":2416,"stem":2417,"titleTemplate":6},"/docs/5.x/api/utils/navigate-to","docs/5.x/4.api/3.utils/navigate-to",{"title":690,"path":2419,"stem":2420,"titleTemplate":6},"/docs/5.x/api/utils/on-before-route-leave","docs/5.x/4.api/3.utils/on-before-route-leave",{"title":694,"path":2422,"stem":2423,"titleTemplate":6},"/docs/5.x/api/utils/on-before-route-update","docs/5.x/4.api/3.utils/on-before-route-update",{"title":698,"path":2425,"stem":2426,"titleTemplate":6},"/docs/5.x/api/utils/on-nuxt-ready","docs/5.x/4.api/3.utils/on-nuxt-ready",{"title":702,"path":2428,"stem":2429,"titleTemplate":6},"/docs/5.x/api/utils/prefetch-components","docs/5.x/4.api/3.utils/prefetch-components",{"title":706,"path":2431,"stem":2432,"titleTemplate":6},"/docs/5.x/api/utils/preload-components","docs/5.x/4.api/3.utils/preload-components",{"title":710,"path":2434,"stem":2435,"titleTemplate":6},"/docs/5.x/api/utils/preload-route-components","docs/5.x/4.api/3.utils/preload-route-components",{"title":714,"path":2437,"stem":2438,"titleTemplate":6},"/docs/5.x/api/utils/prerender-routes","docs/5.x/4.api/3.utils/prerender-routes",{"title":718,"path":2440,"stem":2441,"titleTemplate":6},"/docs/5.x/api/utils/refresh-cookie","docs/5.x/4.api/3.utils/refresh-cookie",{"title":722,"path":2443,"stem":2444,"titleTemplate":6},"/docs/5.x/api/utils/refresh-nuxt-data","docs/5.x/4.api/3.utils/refresh-nuxt-data",{"title":726,"path":2446,"stem":2447,"titleTemplate":6},"/docs/5.x/api/utils/reload-nuxt-app","docs/5.x/4.api/3.utils/reload-nuxt-app",{"title":730,"path":2449,"stem":2450,"titleTemplate":6},"/docs/5.x/api/utils/set-page-layout","docs/5.x/4.api/3.utils/set-page-layout",{"title":734,"path":2452,"stem":2453,"titleTemplate":6},"/docs/5.x/api/utils/set-response-status","docs/5.x/4.api/3.utils/set-response-status",{"title":738,"path":2455,"stem":2456,"titleTemplate":6},"/docs/5.x/api/utils/show-error","docs/5.x/4.api/3.utils/show-error",{"title":742,"path":2458,"stem":2459,"titleTemplate":6},"/docs/5.x/api/utils/update-app-config","docs/5.x/4.api/3.utils/update-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":2461,"stem":2462,"children":2463,"page":108},"/docs/5.x/api/commands","docs/5.x/4.api/4.commands",[2464,2467,2470,2473,2476,2479,2482,2485,2488,2491,2494,2497,2500,2503,2506,2509],{"title":753,"path":2465,"stem":2466,"titleTemplate":6},"/docs/5.x/api/commands/add","docs/5.x/4.api/4.commands/add",{"title":757,"path":2468,"stem":2469,"titleTemplate":6},"/docs/5.x/api/commands/analyze","docs/5.x/4.api/4.commands/analyze",{"title":761,"path":2471,"stem":2472,"titleTemplate":6},"/docs/5.x/api/commands/build","docs/5.x/4.api/4.commands/build",{"title":765,"path":2474,"stem":2475,"titleTemplate":6},"/docs/5.x/api/commands/build-module","docs/5.x/4.api/4.commands/build-module",{"title":769,"path":2477,"stem":2478,"titleTemplate":6},"/docs/5.x/api/commands/cleanup","docs/5.x/4.api/4.commands/cleanup",{"title":773,"path":2480,"stem":2481,"titleTemplate":6},"/docs/5.x/api/commands/dev","docs/5.x/4.api/4.commands/dev",{"title":777,"path":2483,"stem":2484,"titleTemplate":6},"/docs/5.x/api/commands/devtools","docs/5.x/4.api/4.commands/devtools",{"title":781,"path":2486,"stem":2487,"titleTemplate":6},"/docs/5.x/api/commands/generate","docs/5.x/4.api/4.commands/generate",{"title":785,"path":2489,"stem":2490,"titleTemplate":6},"/docs/5.x/api/commands/info","docs/5.x/4.api/4.commands/info",{"title":789,"path":2492,"stem":2493,"titleTemplate":6},"/docs/5.x/api/commands/init","docs/5.x/4.api/4.commands/init",{"title":793,"path":2495,"stem":2496,"titleTemplate":6},"/docs/5.x/api/commands/module","docs/5.x/4.api/4.commands/module",{"title":797,"path":2498,"stem":2499,"titleTemplate":6},"/docs/5.x/api/commands/prepare","docs/5.x/4.api/4.commands/prepare",{"title":801,"path":2501,"stem":2502,"titleTemplate":6},"/docs/5.x/api/commands/preview","docs/5.x/4.api/4.commands/preview",{"title":805,"path":2504,"stem":2505,"titleTemplate":6},"/docs/5.x/api/commands/test","docs/5.x/4.api/4.commands/test",{"title":809,"path":2507,"stem":2508,"titleTemplate":6},"/docs/5.x/api/commands/typecheck","docs/5.x/4.api/4.commands/typecheck",{"title":813,"path":2510,"stem":2511,"titleTemplate":6},"/docs/5.x/api/commands/upgrade","docs/5.x/4.api/4.commands/upgrade",{"title":411,"titleTemplate":817,"icon":818,"path":2513,"stem":2514,"children":2515,"page":108},"/docs/5.x/api/kit","docs/5.x/4.api/5.kit",[2516,2519,2522,2525,2528,2531,2534,2537,2540,2543,2546,2549,2552,2555,2558,2561,2564,2567],{"title":276,"path":2517,"stem":2518,"titleTemplate":6},"/docs/5.x/api/kit/modules","docs/5.x/4.api/5.kit/1.modules",{"title":399,"path":2520,"stem":2521,"titleTemplate":6},"/docs/5.x/api/kit/runtime-config","docs/5.x/4.api/5.kit/10.runtime-config",{"title":829,"path":2523,"stem":2524,"titleTemplate":6},"/docs/5.x/api/kit/templates","docs/5.x/4.api/5.kit/10.templates",{"title":833,"path":2526,"stem":2527,"titleTemplate":6},"/docs/5.x/api/kit/nitro","docs/5.x/4.api/5.kit/11.nitro",{"title":837,"path":2529,"stem":2530,"titleTemplate":6},"/docs/5.x/api/kit/resolving","docs/5.x/4.api/5.kit/12.resolving",{"title":841,"path":2532,"stem":2533,"titleTemplate":6},"/docs/5.x/api/kit/logging","docs/5.x/4.api/5.kit/13.logging",{"title":845,"path":2535,"stem":2536,"titleTemplate":6},"/docs/5.x/api/kit/builder","docs/5.x/4.api/5.kit/14.builder",{"title":849,"path":2538,"stem":2539,"titleTemplate":6},"/docs/5.x/api/kit/examples","docs/5.x/4.api/5.kit/15.examples",{"title":84,"path":2541,"stem":2542,"titleTemplate":6},"/docs/5.x/api/kit/layers","docs/5.x/4.api/5.kit/16.layers",{"title":856,"path":2544,"stem":2545,"titleTemplate":6},"/docs/5.x/api/kit/programmatic","docs/5.x/4.api/5.kit/2.programmatic",{"title":860,"path":2547,"stem":2548,"titleTemplate":6},"/docs/5.x/api/kit/compatibility","docs/5.x/4.api/5.kit/3.compatibility",{"title":268,"path":2550,"stem":2551,"titleTemplate":6},"/docs/5.x/api/kit/autoimports","docs/5.x/4.api/5.kit/4.autoimports",{"title":434,"path":2553,"stem":2554,"titleTemplate":6},"/docs/5.x/api/kit/components","docs/5.x/4.api/5.kit/5.components",{"title":870,"path":2556,"stem":2557,"titleTemplate":6},"/docs/5.x/api/kit/context","docs/5.x/4.api/5.kit/6.context",{"title":874,"path":2559,"stem":2560,"titleTemplate":6},"/docs/5.x/api/kit/pages","docs/5.x/4.api/5.kit/7.pages",{"title":878,"path":2562,"stem":2563,"titleTemplate":6},"/docs/5.x/api/kit/layout","docs/5.x/4.api/5.kit/8.layout",{"title":882,"path":2565,"stem":2566,"titleTemplate":6},"/docs/5.x/api/kit/head","docs/5.x/4.api/5.kit/9.head",{"title":886,"path":2568,"stem":2569,"titleTemplate":6},"/docs/5.x/api/kit/plugins","docs/5.x/4.api/5.kit/9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":2571,"stem":2572,"children":2573,"page":108},"/docs/5.x/api/advanced","docs/5.x/4.api/6.advanced",[2574,2577],{"title":407,"path":2575,"stem":2576,"titleTemplate":6},"/docs/5.x/api/advanced/hooks","docs/5.x/4.api/6.advanced/1.hooks",{"title":899,"path":2578,"stem":2579,"titleTemplate":6},"/docs/5.x/api/advanced/import-meta","docs/5.x/4.api/6.advanced/2.import-meta",{"title":903,"path":2581,"stem":2582,"titleTemplate":906,"icon":32},"/docs/5.x/api/nuxt-config","docs/5.x/4.api/6.nuxt-config",{"title":849,"titleTemplate":908,"icon":909,"path":2584,"stem":2585,"children":2586,"page":108},"/docs/5.x/examples","docs/5.x/4.examples",[2587,2590,2609,2622,2653],{"title":914,"path":2588,"stem":2589,"titleTemplate":6},"/docs/5.x/examples/hello-world","docs/5.x/4.examples/0.hello-world",{"title":395,"path":2591,"stem":2592,"children":2593,"page":108},"/docs/5.x/examples/features","docs/5.x/4.examples/1.features",[2594,2597,2600,2603,2606],{"title":922,"path":2595,"stem":2596,"titleTemplate":6},"/docs/5.x/examples/features/auto-imports","docs/5.x/4.examples/1.features/1.auto-imports",{"title":64,"path":2598,"stem":2599,"titleTemplate":6},"/docs/5.x/examples/features/data-fetching","docs/5.x/4.examples/1.features/2.data-fetching",{"title":69,"path":2601,"stem":2602,"titleTemplate":6},"/docs/5.x/examples/features/state-management","docs/5.x/4.examples/1.features/3.state-management",{"title":932,"path":2604,"stem":2605,"titleTemplate":6},"/docs/5.x/examples/features/meta-tags","docs/5.x/4.examples/1.features/4.meta-tags",{"title":936,"path":2607,"stem":2608,"titleTemplate":6},"/docs/5.x/examples/features/layouts","docs/5.x/4.examples/1.features/5.layouts",{"title":49,"path":2610,"stem":2611,"children":2612,"page":108},"/docs/5.x/examples/routing","docs/5.x/4.examples/2.routing",[2613,2616,2619],{"title":944,"path":2614,"stem":2615,"titleTemplate":6},"/docs/5.x/examples/routing/middleware","docs/5.x/4.examples/2.routing/middleware",{"title":874,"path":2617,"stem":2618,"titleTemplate":6},"/docs/5.x/examples/routing/pages","docs/5.x/4.examples/2.routing/pages",{"title":951,"path":2620,"stem":2621,"titleTemplate":6},"/docs/5.x/examples/routing/universal-router","docs/5.x/4.examples/2.routing/universal-router",{"title":890,"path":2623,"stem":2624,"children":2625,"page":108},"/docs/5.x/examples/advanced","docs/5.x/4.examples/4.advanced",[2626,2629,2632,2635,2638,2641,2644,2647,2650],{"title":84,"path":2627,"stem":2628,"titleTemplate":6},"/docs/5.x/examples/advanced/config-extends","docs/5.x/4.examples/4.advanced/config-extends",{"title":74,"path":2630,"stem":2631,"titleTemplate":6},"/docs/5.x/examples/advanced/error-handling","docs/5.x/4.examples/4.advanced/error-handling",{"title":965,"path":2633,"stem":2634,"titleTemplate":6},"/docs/5.x/examples/advanced/jsx","docs/5.x/4.examples/4.advanced/jsx",{"title":969,"path":2636,"stem":2637,"titleTemplate":6},"/docs/5.x/examples/advanced/locale","docs/5.x/4.examples/4.advanced/locale",{"title":973,"path":2639,"stem":2640,"titleTemplate":6},"/docs/5.x/examples/advanced/module-extend-pages","docs/5.x/4.examples/4.advanced/module-extend-pages",{"title":977,"path":2642,"stem":2643,"titleTemplate":6},"/docs/5.x/examples/advanced/teleport","docs/5.x/4.examples/4.advanced/teleport",{"title":99,"path":2645,"stem":2646,"titleTemplate":6},"/docs/5.x/examples/advanced/testing","docs/5.x/4.examples/4.advanced/testing",{"title":519,"path":2648,"stem":2649,"titleTemplate":6},"/docs/5.x/examples/advanced/use-cookie","docs/5.x/4.examples/4.advanced/use-cookie",{"title":987,"path":2651,"stem":2652,"titleTemplate":6},"/docs/5.x/examples/advanced/use-custom-fetch-composable","docs/5.x/4.examples/4.advanced/use-custom-fetch-composable",{"title":991,"path":2654,"stem":2655,"children":2656,"page":108},"/docs/5.x/examples/experimental","docs/5.x/4.examples/7.experimental",[2657],{"title":996,"path":2658,"stem":2659,"titleTemplate":6},"/docs/5.x/examples/experimental/wasm","docs/5.x/4.examples/7.experimental/wasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":2661,"stem":2662,"children":2663,"page":108},"/docs/5.x/community","docs/5.x/5.community",[2664,2667,2670,2673,2676,2679],{"title":1007,"path":2665,"stem":2666,"titleTemplate":6,"icon":1010},"/docs/5.x/community/getting-help","docs/5.x/5.community/2.getting-help",{"title":1012,"path":2668,"stem":2669,"titleTemplate":6,"icon":1015},"/docs/5.x/community/reporting-bugs","docs/5.x/5.community/3.reporting-bugs",{"title":1017,"path":2671,"stem":2672,"titleTemplate":6,"icon":1020},"/docs/5.x/community/contribution","docs/5.x/5.community/4.contribution",{"title":1022,"path":2674,"stem":2675,"titleTemplate":6,"icon":1025},"/docs/5.x/community/framework-contribution","docs/5.x/5.community/5.framework-contribution",{"title":1027,"path":2677,"stem":2678,"titleTemplate":6,"icon":1030},"/docs/5.x/community/roadmap","docs/5.x/5.community/6.roadmap",{"title":1032,"path":2680,"stem":2681,"titleTemplate":6,"icon":1035},"/docs/5.x/community/changelog","docs/5.x/5.community/7.changelog",{"title":1037,"titleTemplate":1038,"icon":1039,"path":2683,"stem":2684,"children":2685,"page":108},"/docs/5.x/bridge","docs/5.x/6.bridge",[2686,2689,2692,2695,2698,2701,2704,2707,2710,2713],{"title":1044,"path":2687,"stem":2688,"titleTemplate":6},"/docs/5.x/bridge/overview","docs/5.x/6.bridge/1.overview",{"title":29,"path":2690,"stem":2691,"titleTemplate":6},"/docs/5.x/bridge/configuration","docs/5.x/6.bridge/10.configuration",{"title":280,"path":2693,"stem":2694,"titleTemplate":6},"/docs/5.x/bridge/typescript","docs/5.x/6.bridge/2.typescript",{"title":1054,"path":2696,"stem":2697,"titleTemplate":6},"/docs/5.x/bridge/bridge-composition-api","docs/5.x/6.bridge/3.bridge-composition-api",{"title":1058,"path":2699,"stem":2700,"titleTemplate":6},"/docs/5.x/bridge/plugins-and-middleware","docs/5.x/6.bridge/4.plugins-and-middleware",{"title":1062,"path":2702,"stem":2703,"titleTemplate":6},"/docs/5.x/bridge/nuxt3-compatible-api","docs/5.x/6.bridge/5.nuxt3-compatible-api",{"title":932,"path":2705,"stem":2706,"titleTemplate":6},"/docs/5.x/bridge/meta","docs/5.x/6.bridge/6.meta",{"title":399,"path":2708,"stem":2709,"titleTemplate":6},"/docs/5.x/bridge/runtime-config","docs/5.x/6.bridge/7.runtime-config",{"title":833,"path":2711,"stem":2712,"titleTemplate":6},"/docs/5.x/bridge/nitro","docs/5.x/6.bridge/8.nitro",{"title":1075,"path":2714,"stem":2715,"titleTemplate":6},"/docs/5.x/bridge/vite","docs/5.x/6.bridge/9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":2717,"stem":2718,"children":2719,"page":108},"/docs/5.x/migration","docs/5.x/7.migration",[2720,2723,2726,2729,2732,2735,2738,2741,2744,2747,2750],{"title":1044,"path":2721,"stem":2722,"titleTemplate":6},"/docs/5.x/migration/overview","docs/5.x/7.migration/1.overview",{"title":1088,"path":2724,"stem":2725,"titleTemplate":6},"/docs/5.x/migration/bundling","docs/5.x/7.migration/10.bundling",{"title":79,"path":2727,"stem":2728,"titleTemplate":6},"/docs/5.x/migration/server","docs/5.x/7.migration/11.server",{"title":29,"path":2730,"stem":2731,"titleTemplate":6},"/docs/5.x/migration/configuration","docs/5.x/7.migration/2.configuration",{"title":276,"path":2733,"stem":2734,"titleTemplate":6},"/docs/5.x/migration/module-authors","docs/5.x/7.migration/20.module-authors",{"title":922,"path":2736,"stem":2737,"titleTemplate":6},"/docs/5.x/migration/auto-imports","docs/5.x/7.migration/3.auto-imports",{"title":932,"path":2739,"stem":2740,"titleTemplate":6},"/docs/5.x/migration/meta","docs/5.x/7.migration/4.meta",{"title":1058,"path":2742,"stem":2743,"titleTemplate":6},"/docs/5.x/migration/plugins-and-middleware","docs/5.x/7.migration/5.plugins-and-middleware",{"title":1110,"path":2745,"stem":2746,"titleTemplate":6},"/docs/5.x/migration/pages-and-layouts","docs/5.x/7.migration/6.pages-and-layouts",{"title":1114,"path":2748,"stem":2749,"titleTemplate":6},"/docs/5.x/migration/component-options","docs/5.x/7.migration/7.component-options",{"title":399,"path":2751,"stem":2752,"titleTemplate":6},"/docs/5.x/migration/runtime-config","docs/5.x/7.migration/8.runtime-config",{"title":2754,"path":2755,"stem":2756,"children":2757,"page":108},"Blog","/blog","blog",[2758,2762,2766,2770,2774,2778,2782,2786,2790,2794,2798,2802,2806,2810,2814,2818,2822,2826,2830,2834,2838],{"title":2759,"path":2760,"stem":2761},"Announcing 3.0","/blog/v3","blog/1.v3",{"title":2763,"path":2764,"stem":2765},"Nuxt 3.3","/blog/v3-3","blog/10.v3-3",{"title":2767,"path":2768,"stem":2769},"Nuxt 3.4","/blog/v3-4","blog/11.v3-4",{"title":2771,"path":2772,"stem":2773},"Nuxt 3.5","/blog/v3-5","blog/12.v3-5",{"title":2775,"path":2776,"stem":2777},"Nuxt 3.6","/blog/v3-6","blog/13.v3-6",{"title":2779,"path":2780,"stem":2781},"Nuxt on the Edge","/blog/nuxt-on-the-edge","blog/14.nuxt-on-the-edge",{"title":2783,"path":2784,"stem":2785},"Nuxt DevTools v1.0","/blog/nuxt-devtools-v1-0","blog/18.nuxt-devtools-v1-0",{"title":2787,"path":2788,"stem":2789},"Nuxt: A vision for 2023","/blog/vision-2023","blog/2.vision-2023",{"title":2791,"path":2792,"stem":2793},"The Evolution of Shiki v1.0","/blog/shiki-v1","blog/21.shiki-v1",{"title":2795,"path":2796,"stem":2797},"Refreshed Nuxt ESLint Integrations","/blog/eslint-module","blog/24.eslint-module",{"title":2799,"path":2800,"stem":2801},"Introducing Nuxt Scripts","/blog/nuxt-scripts","blog/26.nuxt-scripts",{"title":2803,"path":2804,"stem":2805},"Introducing Nuxt Icon v1","/blog/nuxt-icon-v1-0","blog/29.nuxt-icon-v1-0",{"title":2807,"path":2808,"stem":2809},"Introducing Nuxt DevTools","/blog/introducing-nuxt-devtools","blog/3.introducing-nuxt-devtools",{"title":2811,"path":2812,"stem":2813},"Announcing Nuxt 3 Release Candidate","/blog/nuxt3-rc","blog/3.nuxt3-rc",{"title":2815,"path":2816,"stem":2817},"Nuxt 2 End-of-Life (EOL)","/blog/nuxt2-eol","blog/4.nuxt2-eol",{"title":2819,"path":2820,"stem":2821},"Introducing Nuxt 3 Beta","/blog/nuxt3-beta","blog/4.nuxt3-beta",{"title":2823,"path":2824,"stem":2825},"Going Full Static","/blog/going-full-static","blog/5.going-full-static",{"title":2827,"path":2828,"stem":2829},"Introducing Smart Prefetching","/blog/introducing-smart-prefetching","blog/6.introducing-smart-prefetching",{"title":2831,"path":2832,"stem":2833},"Understanding how fetch works in Nuxt 2.12","/blog/understanding-how-fetch-works-in-nuxt-2-12","blog/7.understanding-how-fetch-works-in-nuxt-2-12",{"title":2835,"path":2836,"stem":2837},"Nuxt 2 Static Improvements","/blog/nuxt-static-improvements","blog/8.nuxt-static-improvements",{"title":2839,"path":2840,"stem":2841},"Nuxt 2: From Terminal to Browser","/blog/nuxtjs-from-terminal-to-browser","blog/9.nuxtjs-from-terminal-to-browser",{"v5":2843,"v4":2844,"v3":2845,"v2":2846},"5 (nightly)","4.3.1","3.21.1","2.18.1",{"id":2848,"title":104,"body":2849,"description":10195,"extension":10196,"links":6,"meta":10197,"navigation":10198,"path":105,"seo":10199,"stem":106,"titleTemplate":6,"__hash__":10200},"docsv3/docs/3.x/1.getting-started/18.upgrade.md",{"type":2850,"value":2851,"toc":10146},"minimark",[2852,2857,2862,2882,2975,3001,3005,3014,3087,3090,3097,3111,3115,3126,3129,3134,3138,3144,3151,3410,3415,3425,3428,3432,3441,3450,3458,3465,3564,3567,3571,3578,3585,3593,3598,3674,3848,3856,3860,3893,3898,3902,3986,3995,4032,4035,4113,4117,4122,4125,4133,4201,4204,4209,4212,4628,4631,4689,4693,4698,4701,4708,4711,4725,4728,4744,4747,4750,4761,4764,4770,4773,4793,4796,4960,4971,4985,4989,4993,4996,5016,5019,5022,5029,5032,5035,5064,5068,5072,5075,5078,5081,5111,5122,5128,5131,5134,5148,5150,5196,5200,5204,5207,5219,5242,5245,5248,5251,5256,5304,5320,5437,5449,5468,5475,5522,5526,5530,5533,5548,5594,5597,5630,5633,5636,5639,5653,5656,5707,5714,5718,5727,5730,5738,5795,5798,5844,5848,5852,5855,5858,5869,5872,5879,5926,5930,5934,5937,5951,5954,5964,5967,5975,6033,6035,6081,6085,6090,6093,6106,6109,6120,6126,6129,6138,6317,6320,6366,6379,6383,6386,6399,6402,6422,6425,6441,6449,6452,6544,6547,6567,6571,6574,6596,7289,7292,7295,7307,7337,7340,7342,7397,7404,7414,7418,7421,7436,7439,7448,7451,7454,7500,7503,7515,7519,7540,7543,7562,7565,7577,7580,7592,7672,7675,7721,7729,7733,7736,7750,7756,7764,7767,7788,7791,7797,7832,7835,7886,7894,7898,7918,7921,7930,7933,7943,7946,7949,8046,8054,8061,8065,8068,8076,8079,8085,8088,8096,8102,8140,8147,8155,8158,8164,8167,8179,8182,8188,8207,8211,8215,8218,8228,8231,8238,8246,8249,8252,8381,8385,8389,8392,8403,8416,8419,8426,8436,8445,8448,8451,8476,8553,8566,8973,8980,8984,8988,8991,9002,9005,9019,9022,9025,9108,9112,9116,9119,9122,9196,9199,9202,9227,9239,9242,9248,9251,9661,9664,9668,9672,9675,9678,9720,9723,9726,9729,9753,9761,9765,9768,9774,9788,9791,9801,9804,9813,9895,9902,9906,9909,10113,10117,10120,10128,10132,10135,10142],[2853,2854,2856],"h2",{"id":2855},"upgrading-nuxt","Upgrading Nuxt",[2858,2859,2861],"h3",{"id":2860},"latest-nuxt-3-release","Latest Nuxt 3 release",[2863,2864,2865,2866,2873,2874,2877,2878,2881],"p",{},"To upgrade Nuxt to the ",[2867,2868,2872],"a",{"href":2869,"rel":2870},"https://github.com/nuxt/nuxt/releases",[2871],"nofollow","latest v3 release",", use the ",[2875,2876,813],"code",{}," command with ",[2875,2879,2880],{},"--channel=v3"," flag.",[2883,2884,2886,2918,2936,2954],"code-group",{"sync":2885},"pm",[2887,2888,2894],"pre",{"className":2889,"code":2890,"filename":2891,"language":2892,"meta":2893,"style":2893},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","npx nuxt upgrade --dedupe --channel=v3\n","npm","bash","",[2875,2895,2896],{"__ignoreMap":2893},[2897,2898,2901,2905,2909,2912,2915],"span",{"class":2899,"line":2900},"line",1,[2897,2902,2904],{"class":2903},"s52Pk","npx",[2897,2906,2908],{"class":2907},"sGFVr"," nuxt",[2897,2910,2911],{"class":2907}," upgrade",[2897,2913,2914],{"class":2907}," --dedupe",[2897,2916,2917],{"class":2907}," --channel=v3\n",[2887,2919,2922],{"className":2889,"code":2920,"filename":2921,"language":2892,"meta":2893,"style":2893},"yarn nuxt upgrade --dedupe --channel=v3\n","yarn",[2875,2923,2924],{"__ignoreMap":2893},[2897,2925,2926,2928,2930,2932,2934],{"class":2899,"line":2900},[2897,2927,2921],{"class":2903},[2897,2929,2908],{"class":2907},[2897,2931,2911],{"class":2907},[2897,2933,2914],{"class":2907},[2897,2935,2917],{"class":2907},[2887,2937,2940],{"className":2889,"code":2938,"filename":2939,"language":2892,"meta":2893,"style":2893},"pnpm nuxt upgrade --dedupe --channel=v3\n","pnpm",[2875,2941,2942],{"__ignoreMap":2893},[2897,2943,2944,2946,2948,2950,2952],{"class":2899,"line":2900},[2897,2945,2939],{"class":2903},[2897,2947,2908],{"class":2907},[2897,2949,2911],{"class":2907},[2897,2951,2914],{"class":2907},[2897,2953,2917],{"class":2907},[2887,2955,2958],{"className":2889,"code":2956,"filename":2957,"language":2892,"meta":2893,"style":2893},"bun x nuxt upgrade --dedupe --channel=v3\n","bun",[2875,2959,2960],{"__ignoreMap":2893},[2897,2961,2962,2964,2967,2969,2971,2973],{"class":2899,"line":2900},[2897,2963,2957],{"class":2903},[2897,2965,2966],{"class":2907}," x",[2897,2968,2908],{"class":2907},[2897,2970,2911],{"class":2907},[2897,2972,2914],{"class":2907},[2897,2974,2917],{"class":2907},[2976,2977,2978],"note",{},[2863,2979,2980,2981,2985,2986,2989,2990,2993,2994,2997,2998],{},"This will only work if you ",[2982,2983,2984],"em",{},"already have"," a version of ",[2875,2987,2988],{},"@nuxt/cli"," which has the ",[2875,2991,2992],{},"--channel"," flag implemented. If this does not work, you can instead use ",[2875,2995,2996],{},"nuxi@latest"," for the initial upgrade.\nE.g. ",[2875,2999,3000],{},"npx nuxi@latest upgrade --dedupe --channel=v3",[2858,3002,3004],{"id":3003},"latest-release","Latest release",[2863,3006,2865,3007,2873,3011,3013],{},[2867,3008,3010],{"href":2869,"rel":3009},[2871],"latest release",[2875,3012,813],{}," command.",[2883,3015,3016,3030,3043,3056,3071],{"sync":2885},[2887,3017,3019],{"className":2889,"code":3018,"filename":2891,"language":2892,"meta":2893,"style":2893},"npx nuxt upgrade\n",[2875,3020,3021],{"__ignoreMap":2893},[2897,3022,3023,3025,3027],{"class":2899,"line":2900},[2897,3024,2904],{"class":2903},[2897,3026,2908],{"class":2907},[2897,3028,3029],{"class":2907}," upgrade\n",[2887,3031,3033],{"className":2889,"code":3032,"filename":2921,"language":2892,"meta":2893,"style":2893},"yarn nuxt upgrade\n",[2875,3034,3035],{"__ignoreMap":2893},[2897,3036,3037,3039,3041],{"class":2899,"line":2900},[2897,3038,2921],{"class":2903},[2897,3040,2908],{"class":2907},[2897,3042,3029],{"class":2907},[2887,3044,3046],{"className":2889,"code":3045,"filename":2939,"language":2892,"meta":2893,"style":2893},"pnpm nuxt upgrade\n",[2875,3047,3048],{"__ignoreMap":2893},[2897,3049,3050,3052,3054],{"class":2899,"line":2900},[2897,3051,2939],{"class":2903},[2897,3053,2908],{"class":2907},[2897,3055,3029],{"class":2907},[2887,3057,3059],{"className":2889,"code":3058,"filename":2957,"language":2892,"meta":2893,"style":2893},"bun x nuxt upgrade\n",[2875,3060,3061],{"__ignoreMap":2893},[2897,3062,3063,3065,3067,3069],{"class":2899,"line":2900},[2897,3064,2957],{"class":2903},[2897,3066,2966],{"class":2907},[2897,3068,2908],{"class":2907},[2897,3070,3029],{"class":2907},[2887,3072,3075],{"className":2889,"code":3073,"filename":3074,"language":2892,"meta":2893,"style":2893},"deno x nuxt upgrade\n","deno",[2875,3076,3077],{"__ignoreMap":2893},[2897,3078,3079,3081,3083,3085],{"class":2899,"line":2900},[2897,3080,3074],{"class":2903},[2897,3082,2966],{"class":2907},[2897,3084,2908],{"class":2907},[2897,3086,3029],{"class":2907},[2858,3088,403],{"id":3089},"nightly-release-channel",[2863,3091,3092,3093,3096],{},"To use the latest Nuxt build and test features before their release, read about the ",[2867,3094,3095],{"href":404},"nightly release channel"," guide.",[3098,3099,3100],"warning",{},[2863,3101,3102,3103,3106,3107,3110],{},"The nightly release channel ",[2875,3104,3105],{},"latest"," tag is currently tracking the Nuxt v4 branch, meaning that it is particularly likely to have breaking changes right now — be careful! You can opt in to the 3.x branch nightly releases with ",[2875,3108,3109],{},"\"nuxt\": \"npm:nuxt-nightly@3x\"",".",[2853,3112,3114],{"id":3113},"testing-nuxt-4","Testing Nuxt 4",[2863,3116,3117,3118,3122,3123,3110],{},"Nuxt 4 is ",[3119,3120,3121],"strong",{},"scheduled for release in Q2 2025",". It will include all the features currently available through ",[2875,3124,3125],{},"compatibilityVersion: 4",[2863,3127,3128],{},"Until the release, it is possible to test many of Nuxt 4's breaking changes from Nuxt version 3.12+.",[3130,3131],"video-accordion",{"title":3132,"video-id":3133},"Watch a video from Alexander Lichter showing how to opt in to Nuxt 4's breaking changes already","r4wFKlcJK6c",[2858,3135,3137],{"id":3136},"opting-in-to-nuxt-4","Opting in to Nuxt 4",[2863,3139,3140,3141,3110],{},"First, upgrade Nuxt to the ",[2867,3142,3010],{"href":2869,"rel":3143},[2871],[2863,3145,3146,3147,3150],{},"Then you can set your ",[2875,3148,3149],{},"compatibilityVersion"," to match Nuxt 4 behavior:",[3152,3153,3154],"code-collapse",{},[2887,3155,3160],{"className":3156,"code":3157,"filename":233,"language":3158,"meta":3159,"style":2893},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","export default defineNuxtConfig({\n  future: {\n    compatibilityVersion: 4,\n  },\n  // To re-enable _all_ Nuxt v3 behavior, set the following options:\n  // srcDir: '.',\n  // dir: {\n  //   app: 'app'\n  // },\n  // experimental: {\n  //   scanPageMeta: 'after-resolve',\n  //   sharedPrerenderData: false,\n  //   compileTemplate: true,\n  //   resetAsyncDataToUndefined: true,\n  //   templateUtils: true,\n  //   relativeWatchPaths: true,\n  //   normalizeComponentNames: false,\n  //   spaLoadingTemplateLocation: 'within',\n  //   parseErrorData: false,\n  //   pendingWhenIdle: true,\n  //   alwaysRunFetchOnKeyChange: true,\n  //   defaults: {\n  //     useAsyncData: {\n  //       deep: true\n  //     }\n  //   }\n  // },\n  // features: {\n  //   inlineStyles: true\n  // },\n  // unhead: {\n  //   renderSSRHeadOptions: {\n  //     omitLineBreaks: false\n  //   }\n  // }\n})\n","ts","twoslash",[2875,3161,3162,3183,3196,3211,3217,3224,3230,3236,3242,3248,3254,3260,3266,3272,3278,3284,3290,3296,3302,3308,3314,3320,3326,3332,3338,3344,3350,3355,3361,3367,3372,3378,3384,3390,3395,3401],{"__ignoreMap":2893},[2897,3163,3164,3168,3171,3175,3179],{"class":2899,"line":2900},[2897,3165,3167],{"class":3166},"s8R28","export",[2897,3169,3170],{"class":3166}," default",[2897,3172,3174],{"class":3173},"s3cPz"," defineNuxtConfig",[2897,3176,3178],{"class":3177},"sZSNi","(",[2897,3180,3182],{"class":3181},"sDfIl","{\n",[2897,3184,3186,3190,3193],{"class":2899,"line":3185},2,[2897,3187,3189],{"class":3188},"sRlkE","  future",[2897,3191,3192],{"class":3181},":",[2897,3194,3195],{"class":3181}," {\n",[2897,3197,3199,3202,3204,3208],{"class":2899,"line":3198},3,[2897,3200,3201],{"class":3188},"    compatibilityVersion",[2897,3203,3192],{"class":3181},[2897,3205,3207],{"class":3206},"sYRBq"," 4",[2897,3209,3210],{"class":3181},",\n",[2897,3212,3214],{"class":2899,"line":3213},4,[2897,3215,3216],{"class":3181},"  },\n",[2897,3218,3220],{"class":2899,"line":3219},5,[2897,3221,3223],{"class":3222},"sWuyu","  // To re-enable _all_ Nuxt v3 behavior, set the following options:\n",[2897,3225,3227],{"class":2899,"line":3226},6,[2897,3228,3229],{"class":3222},"  // srcDir: '.',\n",[2897,3231,3233],{"class":2899,"line":3232},7,[2897,3234,3235],{"class":3222},"  // dir: {\n",[2897,3237,3239],{"class":2899,"line":3238},8,[2897,3240,3241],{"class":3222},"  //   app: 'app'\n",[2897,3243,3245],{"class":2899,"line":3244},9,[2897,3246,3247],{"class":3222},"  // },\n",[2897,3249,3251],{"class":2899,"line":3250},10,[2897,3252,3253],{"class":3222},"  // experimental: {\n",[2897,3255,3257],{"class":2899,"line":3256},11,[2897,3258,3259],{"class":3222},"  //   scanPageMeta: 'after-resolve',\n",[2897,3261,3263],{"class":2899,"line":3262},12,[2897,3264,3265],{"class":3222},"  //   sharedPrerenderData: false,\n",[2897,3267,3269],{"class":2899,"line":3268},13,[2897,3270,3271],{"class":3222},"  //   compileTemplate: true,\n",[2897,3273,3275],{"class":2899,"line":3274},14,[2897,3276,3277],{"class":3222},"  //   resetAsyncDataToUndefined: true,\n",[2897,3279,3281],{"class":2899,"line":3280},15,[2897,3282,3283],{"class":3222},"  //   templateUtils: true,\n",[2897,3285,3287],{"class":2899,"line":3286},16,[2897,3288,3289],{"class":3222},"  //   relativeWatchPaths: true,\n",[2897,3291,3293],{"class":2899,"line":3292},17,[2897,3294,3295],{"class":3222},"  //   normalizeComponentNames: false,\n",[2897,3297,3299],{"class":2899,"line":3298},18,[2897,3300,3301],{"class":3222},"  //   spaLoadingTemplateLocation: 'within',\n",[2897,3303,3305],{"class":2899,"line":3304},19,[2897,3306,3307],{"class":3222},"  //   parseErrorData: false,\n",[2897,3309,3311],{"class":2899,"line":3310},20,[2897,3312,3313],{"class":3222},"  //   pendingWhenIdle: true,\n",[2897,3315,3317],{"class":2899,"line":3316},21,[2897,3318,3319],{"class":3222},"  //   alwaysRunFetchOnKeyChange: true,\n",[2897,3321,3323],{"class":2899,"line":3322},22,[2897,3324,3325],{"class":3222},"  //   defaults: {\n",[2897,3327,3329],{"class":2899,"line":3328},23,[2897,3330,3331],{"class":3222},"  //     useAsyncData: {\n",[2897,3333,3335],{"class":2899,"line":3334},24,[2897,3336,3337],{"class":3222},"  //       deep: true\n",[2897,3339,3341],{"class":2899,"line":3340},25,[2897,3342,3343],{"class":3222},"  //     }\n",[2897,3345,3347],{"class":2899,"line":3346},26,[2897,3348,3349],{"class":3222},"  //   }\n",[2897,3351,3353],{"class":2899,"line":3352},27,[2897,3354,3247],{"class":3222},[2897,3356,3358],{"class":2899,"line":3357},28,[2897,3359,3360],{"class":3222},"  // features: {\n",[2897,3362,3364],{"class":2899,"line":3363},29,[2897,3365,3366],{"class":3222},"  //   inlineStyles: true\n",[2897,3368,3370],{"class":2899,"line":3369},30,[2897,3371,3247],{"class":3222},[2897,3373,3375],{"class":2899,"line":3374},31,[2897,3376,3377],{"class":3222},"  // unhead: {\n",[2897,3379,3381],{"class":2899,"line":3380},32,[2897,3382,3383],{"class":3222},"  //   renderSSRHeadOptions: {\n",[2897,3385,3387],{"class":2899,"line":3386},33,[2897,3388,3389],{"class":3222},"  //     omitLineBreaks: false\n",[2897,3391,3393],{"class":2899,"line":3392},34,[2897,3394,3349],{"class":3222},[2897,3396,3398],{"class":2899,"line":3397},35,[2897,3399,3400],{"class":3222},"  // }\n",[2897,3402,3404,3407],{"class":2899,"line":3403},36,[2897,3405,3406],{"class":3181},"}",[2897,3408,3409],{"class":3177},")\n",[2976,3411,3412],{},[2863,3413,3414],{},"For now, you need to define the compatibility version in each layer that opts into Nuxt 4 behavior. This will not be required after Nuxt 4 is released.",[2863,3416,3417,3418,3420,3421,3424],{},"When you set your ",[2875,3419,3149],{}," to ",[2875,3422,3423],{},"4",", defaults throughout your Nuxt configuration will change to opt in to Nuxt v4 behavior, but you can granularly re-enable Nuxt v3 behavior when testing, following the commented out lines above. Please file issues if so, so that we can address them in Nuxt or in the ecosystem.",[2863,3426,3427],{},"Breaking or significant changes are documented below along with migration steps and available configuration options.",[2858,3429,3431],{"id":3430},"migrating-using-codemods","Migrating Using Codemods",[2863,3433,3434,3435,3440],{},"To facilitate the upgrade process, we have collaborated with the ",[2867,3436,3439],{"href":3437,"rel":3438},"https://github.com/codemod/codemod",[2871],"Codemod"," team to automate many migration steps with some open-source codemods.",[2976,3442,3443],{},[2863,3444,3445,3446,3449],{},"If you encounter any issues, please report them to the Codemod team with ",[2875,3447,3448],{},"npx codemod feedback"," 🙏",[2863,3451,3452,3453,3110],{},"For a complete list of Nuxt 4 codemods, detailed information on each, their source, and various ways to run them, visit the ",[2867,3454,3457],{"href":3455,"rel":3456},"https://app.codemod.com/registry",[2871],"Codemod Registry",[2863,3459,3460,3461,3464],{},"You can run all the codemods mentioned in this guide using the following ",[2875,3462,3463],{},"codemod"," recipe:",[2883,3466,3467,3487,3507,3526,3545],{},[2887,3468,3470],{"className":2889,"code":3469,"filename":2891,"language":2892,"meta":2893,"style":2893},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\nnpx codemod@0.18.7 nuxt/4/migration-recipe\n",[2875,3471,3472,3477],{"__ignoreMap":2893},[2897,3473,3474],{"class":2899,"line":2900},[2897,3475,3476],{"class":3222},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\n",[2897,3478,3479,3481,3484],{"class":2899,"line":3185},[2897,3480,2904],{"class":2903},[2897,3482,3483],{"class":2907}," codemod@0.18.7",[2897,3485,3486],{"class":2907}," nuxt/4/migration-recipe\n",[2887,3488,3490],{"className":2889,"code":3489,"filename":2921,"language":2892,"meta":2893,"style":2893},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\nyarn dlx codemod@0.18.7 nuxt/4/migration-recipe\n",[2875,3491,3492,3496],{"__ignoreMap":2893},[2897,3493,3494],{"class":2899,"line":2900},[2897,3495,3476],{"class":3222},[2897,3497,3498,3500,3503,3505],{"class":2899,"line":3185},[2897,3499,2921],{"class":2903},[2897,3501,3502],{"class":2907}," dlx",[2897,3504,3483],{"class":2907},[2897,3506,3486],{"class":2907},[2887,3508,3510],{"className":2889,"code":3509,"filename":2939,"language":2892,"meta":2893,"style":2893},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\npnpm dlx codemod@0.18.7 nuxt/4/migration-recipe\n",[2875,3511,3512,3516],{"__ignoreMap":2893},[2897,3513,3514],{"class":2899,"line":2900},[2897,3515,3476],{"class":3222},[2897,3517,3518,3520,3522,3524],{"class":2899,"line":3185},[2897,3519,2939],{"class":2903},[2897,3521,3502],{"class":2907},[2897,3523,3483],{"class":2907},[2897,3525,3486],{"class":2907},[2887,3527,3529],{"className":2889,"code":3528,"filename":2957,"language":2892,"meta":2893,"style":2893},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\nbun x codemod@0.18.7 nuxt/4/migration-recipe\n",[2875,3530,3531,3535],{"__ignoreMap":2893},[2897,3532,3533],{"class":2899,"line":2900},[2897,3534,3476],{"class":3222},[2897,3536,3537,3539,3541,3543],{"class":2899,"line":3185},[2897,3538,2957],{"class":2903},[2897,3540,2966],{"class":2907},[2897,3542,3483],{"class":2907},[2897,3544,3486],{"class":2907},[2887,3546,3548],{"className":2889,"code":3547,"filename":3074,"language":2892,"meta":2893,"style":2893},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\ndeno x codemod@0.18.7 nuxt/4/migration-recipe\n",[2875,3549,3550,3554],{"__ignoreMap":2893},[2897,3551,3552],{"class":2899,"line":2900},[2897,3553,3476],{"class":3222},[2897,3555,3556,3558,3560,3562],{"class":2899,"line":3185},[2897,3557,3074],{"class":2903},[2897,3559,2966],{"class":2907},[2897,3561,3483],{"class":2907},[2897,3563,3486],{"class":2907},[2863,3565,3566],{},"This command will execute all codemods in sequence, with the option to deselect any that you do not wish to run. Each codemod is also listed below alongside its respective change and can be executed independently.",[2858,3568,3570],{"id":3569},"new-directory-structure","New Directory Structure",[2863,3572,3573,3574,3577],{},"🚦 ",[3119,3575,3576],{},"Impact Level",": Significant",[2863,3579,3580,3581,3584],{},"Nuxt now defaults to a new directory structure, with backwards compatibility (so if Nuxt detects you are using the old structure, such as with a top-level ",[2875,3582,3583],{},"pages/"," directory, this new structure will not apply).",[2863,3586,3587,3588],{},"👉 ",[2867,3589,3592],{"href":3590,"rel":3591},"https://github.com/nuxt/nuxt/issues/26444",[2871],"See full RFC",[3594,3595,3597],"h4",{"id":3596},"what-changed","What Changed",[3599,3600,3601,3612,3625,3643,3657],"ul",{},[3602,3603,3604,3605,3608,3609,3611],"li",{},"the new Nuxt default ",[2875,3606,3607],{},"srcDir"," is ",[2875,3610,1195],{}," by default, and most things are resolved from there.",[3602,3613,3614,3617,3618,3621,3622],{},[2875,3615,3616],{},"serverDir"," now defaults to ",[2875,3619,3620],{},"\u003CrootDir>/server"," rather than ",[2875,3623,3624],{},"\u003CsrcDir>/server",[3602,3626,3627,3630,3631,3634,3635,3638,3639,3642],{},[2875,3628,3629],{},"layers/",", ",[2875,3632,3633],{},"modules/"," and ",[2875,3636,3637],{},"public/"," are resolved relative to ",[2875,3640,3641],{},"\u003CrootDir>"," by default",[3602,3644,3645,3646,3630,3651,3654,3655],{},"if using ",[2867,3647,3650],{"href":3648,"rel":3649},"https://github.com/nuxt/content/pull/2649",[2871],"Nuxt Content v2.13+",[2875,3652,3653],{},"content/"," is resolved relative to ",[2875,3656,3641],{},[3602,3658,3659,3660,3663,3664,3634,3667,3670,3671],{},"a new ",[2875,3661,3662],{},"dir.app"," is added, which is the directory we look for ",[2875,3665,3666],{},"router.options.ts",[2875,3668,3669],{},"spa-loading-template.html"," - this defaults to ",[2875,3672,3673],{},"\u003CsrcDir>/",[3675,3676,3677,3681,3820],"details",{},[3678,3679,3680],"summary",{},"An example v4 folder structure.",[2887,3682,3686],{"className":3683,"code":3684,"language":3685,"meta":2893,"style":2893},"language-sh shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight",".output/\n.nuxt/\napp/\n  assets/\n  components/\n  composables/\n  layouts/\n  middleware/\n  pages/\n  plugins/\n  utils/\n  app.config.ts\n  app.vue\n  router.options.ts\ncontent/\nlayers/\nmodules/\nnode_modules/\npublic/\nshared/\nserver/\n  api/\n  middleware/\n  plugins/\n  routes/\n  utils/\nnuxt.config.ts\n","sh",[2875,3687,3688,3693,3698,3703,3708,3713,3718,3723,3728,3733,3738,3743,3748,3753,3758,3763,3768,3773,3778,3783,3788,3793,3798,3802,3806,3811,3815],{"__ignoreMap":2893},[2897,3689,3690],{"class":2899,"line":2900},[2897,3691,3692],{"class":2903},".output/\n",[2897,3694,3695],{"class":2899,"line":3185},[2897,3696,3697],{"class":2903},".nuxt/\n",[2897,3699,3700],{"class":2899,"line":3198},[2897,3701,3702],{"class":2903},"app/\n",[2897,3704,3705],{"class":2899,"line":3213},[2897,3706,3707],{"class":2903},"  assets/\n",[2897,3709,3710],{"class":2899,"line":3219},[2897,3711,3712],{"class":2903},"  components/\n",[2897,3714,3715],{"class":2899,"line":3226},[2897,3716,3717],{"class":2903},"  composables/\n",[2897,3719,3720],{"class":2899,"line":3232},[2897,3721,3722],{"class":2903},"  layouts/\n",[2897,3724,3725],{"class":2899,"line":3238},[2897,3726,3727],{"class":2903},"  middleware/\n",[2897,3729,3730],{"class":2899,"line":3244},[2897,3731,3732],{"class":2903},"  pages/\n",[2897,3734,3735],{"class":2899,"line":3250},[2897,3736,3737],{"class":2903},"  plugins/\n",[2897,3739,3740],{"class":2899,"line":3256},[2897,3741,3742],{"class":2903},"  utils/\n",[2897,3744,3745],{"class":2899,"line":3262},[2897,3746,3747],{"class":2903},"  app.config.ts\n",[2897,3749,3750],{"class":2899,"line":3268},[2897,3751,3752],{"class":2903},"  app.vue\n",[2897,3754,3755],{"class":2899,"line":3274},[2897,3756,3757],{"class":2903},"  router.options.ts\n",[2897,3759,3760],{"class":2899,"line":3280},[2897,3761,3762],{"class":2903},"content/\n",[2897,3764,3765],{"class":2899,"line":3286},[2897,3766,3767],{"class":2903},"layers/\n",[2897,3769,3770],{"class":2899,"line":3292},[2897,3771,3772],{"class":2903},"modules/\n",[2897,3774,3775],{"class":2899,"line":3298},[2897,3776,3777],{"class":2903},"node_modules/\n",[2897,3779,3780],{"class":2899,"line":3304},[2897,3781,3782],{"class":2903},"public/\n",[2897,3784,3785],{"class":2899,"line":3310},[2897,3786,3787],{"class":2903},"shared/\n",[2897,3789,3790],{"class":2899,"line":3316},[2897,3791,3792],{"class":2903},"server/\n",[2897,3794,3795],{"class":2899,"line":3322},[2897,3796,3797],{"class":2903},"  api/\n",[2897,3799,3800],{"class":2899,"line":3328},[2897,3801,3727],{"class":2903},[2897,3803,3804],{"class":2899,"line":3334},[2897,3805,3737],{"class":2903},[2897,3807,3808],{"class":2899,"line":3340},[2897,3809,3810],{"class":2903},"  routes/\n",[2897,3812,3813],{"class":2899,"line":3346},[2897,3814,3742],{"class":2903},[2897,3816,3817],{"class":2899,"line":3352},[2897,3818,3819],{"class":2903},"nuxt.config.ts\n",[2976,3821,3822],{},[2863,3823,3824,3825,3828,3829,3831,3832,3834,3835,3838,3839,3630,3842,3420,3845,3847],{},"With this new structure, the ",[2875,3826,3827],{},"~"," alias now points to the ",[2875,3830,1195],{}," directory by default (your ",[2875,3833,3607],{},"). This means ",[2875,3836,3837],{},"~/components"," resolves to ",[2875,3840,3841],{},"components/",[2875,3843,3844],{},"~/pages",[2875,3846,3583],{},", etc.",[2863,3849,3850,3851,3110],{},"👉 For more details, see the ",[2867,3852,3855],{"href":3853,"rel":3854},"https://github.com/nuxt/nuxt/pull/27029",[2871],"PR implementing this change",[3594,3857,3859],{"id":3858},"reasons-for-change","Reasons for Change",[3861,3862,3863,3876],"ol",{},[3602,3864,3865,3868,3869,3634,3872,3875],{},[3119,3866,3867],{},"Performance"," - placing all your code in the root of your repo causes issues with ",[2875,3870,3871],{},".git/",[2875,3873,3874],{},"node_modules/"," folders being scanned/included by FS watchers which can significantly delay startup on non-Mac OSes.",[3602,3877,3878,3881,3882,3885,3886,3888,3889,3892],{},[3119,3879,3880],{},"IDE type-safety"," - ",[2875,3883,3884],{},"server/"," and the rest of your app are running in two entirely different contexts with different global imports available, and making sure ",[2875,3887,3884],{}," isn't ",[2982,3890,3891],{},"inside"," the same folder as the rest of your app is a big first step to ensuring you get good auto-completes in your IDE.",[3130,3894],{"title":3895,"video-id":3896,"platform":3897},"Watch a video from Vue School on the new directory structure","1031028378","vimeo",[3594,3899,3901],{"id":3900},"migration-steps","Migration Steps",[3861,3903,3904,3909,3950,3969],{},[3602,3905,3906,3907,3110],{},"Create a new directory called ",[2875,3908,1195],{},[3602,3910,3911,3912,3630,3915,3630,3917,3630,3920,3630,3923,3630,3926,3630,3928,3634,3931,3934,3935,3630,3937,3630,3939,3941,3942,3945,3946,3949],{},"Move your ",[2875,3913,3914],{},"assets/",[2875,3916,3841],{},[2875,3918,3919],{},"composables/",[2875,3921,3922],{},"layouts/",[2875,3924,3925],{},"middleware/",[2875,3927,3583],{},[2875,3929,3930],{},"plugins/",[2875,3932,3933],{},"utils/"," folders under it, as well as ",[2875,3936,219],{},[2875,3938,229],{},[2875,3940,224],{},". If you have an ",[2875,3943,3944],{},"app/router-options.ts"," or ",[2875,3947,3948],{},"app/spa-loading-template.html",", these paths remain the same.",[3602,3951,3952,3953,3630,3955,3630,3957,3630,3959,3630,3961,3634,3963,3965,3966,3968],{},"Make sure your ",[2875,3954,233],{},[2875,3956,3653],{},[2875,3958,3629],{},[2875,3960,3633],{},[2875,3962,3637],{},[2875,3964,3884],{}," folders remain outside the ",[2875,3967,1195],{}," folder, in the root of your project.",[3602,3970,3971,3972,3945,3975,3978,3979,3982,3983,3985],{},"Remember to update any third-party configuration files to work with the new directory structure, such as your ",[2875,3973,3974],{},"tailwindcss",[2875,3976,3977],{},"eslint"," configuration (if required - ",[2875,3980,3981],{},"@nuxtjs/tailwindcss"," should automatically configure ",[2875,3984,3974],{}," correctly).",[3987,3988,3989],"tip",{},[2863,3990,3991,3992],{},"You can automate this migration by running ",[2875,3993,3994],{},"npx codemod@latest nuxt/4/file-structure",[2863,3996,3997,3998,4001,4002,4005,4006,4008,4009,3630,4011,3634,4013,4015,4016,4019,4020,4022,4023,3630,4026,3634,4029,4031],{},"However, migration is ",[2982,3999,4000],{},"not required",". If you wish to keep your current folder structure, Nuxt should auto-detect it. (If it does not, please raise an issue.) The one exception is that if you ",[2982,4003,4004],{},"already"," have a custom ",[2875,4007,3607],{},". In this case, you should be aware that your ",[2875,4010,3633],{},[2875,4012,3637],{},[2875,4014,3884],{}," folders will be resolved from your ",[2875,4017,4018],{},"rootDir"," rather than from your custom ",[2875,4021,3607],{},". You can override this by configuring ",[2875,4024,4025],{},"dir.modules",[2875,4027,4028],{},"dir.public",[2875,4030,3616],{}," if you need to.",[2863,4033,4034],{},"You can also force a v3 folder structure with the following configuration:",[2887,4036,4038],{"className":3156,"code":4037,"filename":233,"language":3158,"meta":2893,"style":2893},"export default defineNuxtConfig({\n  // This reverts the new srcDir default from `app` back to your root directory\n  srcDir: '.',\n  // This specifies the directory prefix for `app/router.options.ts` and `app/spa-loading-template.html`\n  dir: {\n    app: 'app',\n  },\n})\n",[2875,4039,4040,4052,4057,4074,4079,4088,4103,4107],{"__ignoreMap":2893},[2897,4041,4042,4044,4046,4048,4050],{"class":2899,"line":2900},[2897,4043,3167],{"class":3166},[2897,4045,3170],{"class":3166},[2897,4047,3174],{"class":3173},[2897,4049,3178],{"class":3177},[2897,4051,3182],{"class":3181},[2897,4053,4054],{"class":2899,"line":3185},[2897,4055,4056],{"class":3222},"  // This reverts the new srcDir default from `app` back to your root directory\n",[2897,4058,4059,4062,4064,4067,4069,4072],{"class":2899,"line":3198},[2897,4060,4061],{"class":3188},"  srcDir",[2897,4063,3192],{"class":3181},[2897,4065,4066],{"class":3181}," '",[2897,4068,3110],{"class":2907},[2897,4070,4071],{"class":3181},"'",[2897,4073,3210],{"class":3181},[2897,4075,4076],{"class":2899,"line":3213},[2897,4077,4078],{"class":3222},"  // This specifies the directory prefix for `app/router.options.ts` and `app/spa-loading-template.html`\n",[2897,4080,4081,4084,4086],{"class":2899,"line":3219},[2897,4082,4083],{"class":3188},"  dir",[2897,4085,3192],{"class":3181},[2897,4087,3195],{"class":3181},[2897,4089,4090,4093,4095,4097,4099,4101],{"class":2899,"line":3226},[2897,4091,4092],{"class":3188},"    app",[2897,4094,3192],{"class":3181},[2897,4096,4066],{"class":3181},[2897,4098,1193],{"class":2907},[2897,4100,4071],{"class":3181},[2897,4102,3210],{"class":3181},[2897,4104,4105],{"class":2899,"line":3232},[2897,4106,3216],{"class":3181},[2897,4108,4109,4111],{"class":2899,"line":3238},[2897,4110,3406],{"class":3181},[2897,4112,3409],{"class":3177},[2858,4114,4116],{"id":4115},"singleton-data-fetching-layer","Singleton Data Fetching Layer",[2863,4118,3573,4119,4121],{},[3119,4120,3576],{},": Moderate",[3594,4123,3597],{"id":4124},"what-changed-1",[2863,4126,4127,4128,3634,4130,4132],{},"Nuxt's data fetching system (",[2875,4129,515],{},[2875,4131,527],{},") has been significantly reorganized for better performance and consistency:",[3861,4134,4135,4172,4186,4192],{},[3602,4136,4137,4140,4141,3945,4143,4145,4146,3630,4149,3634,4152,4155,4156,3630,4159,3630,4162,3630,4165,3945,4168,4171],{},[3119,4138,4139],{},"Shared refs for the same key",": All calls to ",[2875,4142,515],{},[2875,4144,527],{}," with the same key now share the same ",[2875,4147,4148],{},"data",[2875,4150,4151],{},"error",[2875,4153,4154],{},"status"," refs. This means that it is important that all calls with an explicit key must not have conflicting ",[2875,4157,4158],{},"deep",[2875,4160,4161],{},"transform",[2875,4163,4164],{},"pick",[2875,4166,4167],{},"getCachedData",[2875,4169,4170],{},"default"," options.",[3602,4173,4174,4179,4180,4182,4183,4185],{},[3119,4175,4176,4177],{},"More control over ",[2875,4178,4167],{},": The ",[2875,4181,4167],{}," function is now called every time data is fetched, even if this is caused by a watcher or calling ",[2875,4184,722],{},". (Previously, new data was always fetched and this function was not called in these cases.) To allow more control over when to use cached data and when to refetch, the function now receives a context object with the cause of the request.",[3602,4187,4188,4191],{},[3119,4189,4190],{},"Reactive key support",": You can now use computed refs, plain refs or getter functions as keys, which enables automatic data refetching (and stores data separately).",[3602,4193,4194,4197,4198,4200],{},[3119,4195,4196],{},"Data cleanup",": When the last component using data fetched with ",[2875,4199,515],{}," is unmounted, Nuxt will remove that data to avoid ever-growing memory usage.",[3594,4202,3859],{"id":4203},"reasons-for-change-1",[2863,4205,4206,4207,3110],{},"These changes have been made to improve memory usage and increase consistency with loading states across calls of ",[2875,4208,515],{},[3594,4210,3901],{"id":4211},"migration-steps-1",[3861,4213,4214,4527],{},[3602,4215,4216,4219,4220,4366,4369,4370,4372,4373],{},[3119,4217,4218],{},"Check for inconsistent options",": Review any components using the same key with different options or fetch functions.",[2887,4221,4223],{"className":3156,"code":4222,"language":3158,"meta":2893,"style":2893},"// This will now trigger a warning\nconst { data: users1 } = useAsyncData('users', () => $fetch('/api/users'), { deep: false })\nconst { data: users2 } = useAsyncData('users', () => $fetch('/api/users'), { deep: true })\n",[2875,4224,4225,4230,4306],{"__ignoreMap":2893},[2897,4226,4227],{"class":2899,"line":2900},[2897,4228,4229],{"class":3222},"// This will now trigger a warning\n",[2897,4231,4232,4236,4239,4242,4244,4247,4249,4252,4255,4257,4259,4262,4264,4267,4270,4273,4276,4278,4280,4283,4285,4288,4290,4292,4295,4297,4301,4304],{"class":2899,"line":3185},[2897,4233,4235],{"class":4234},"smZ93","const",[2897,4237,4238],{"class":3181}," {",[2897,4240,4241],{"class":3188}," data",[2897,4243,3192],{"class":3181},[2897,4245,4246],{"class":3177}," users1 ",[2897,4248,3406],{"class":3181},[2897,4250,4251],{"class":3181}," =",[2897,4253,4254],{"class":3173}," useAsyncData",[2897,4256,3178],{"class":3177},[2897,4258,4071],{"class":3181},[2897,4260,4261],{"class":2907},"users",[2897,4263,4071],{"class":3181},[2897,4265,4266],{"class":3181},",",[2897,4268,4269],{"class":3181}," ()",[2897,4271,4272],{"class":4234}," =>",[2897,4274,4275],{"class":3173}," $fetch",[2897,4277,3178],{"class":3177},[2897,4279,4071],{"class":3181},[2897,4281,4282],{"class":2907},"/api/users",[2897,4284,4071],{"class":3181},[2897,4286,4287],{"class":3177},")",[2897,4289,4266],{"class":3181},[2897,4291,4238],{"class":3181},[2897,4293,4294],{"class":3188}," deep",[2897,4296,3192],{"class":3181},[2897,4298,4300],{"class":4299},"sbKd-"," false",[2897,4302,4303],{"class":3181}," }",[2897,4305,3409],{"class":3177},[2897,4307,4308,4310,4312,4314,4316,4319,4321,4323,4325,4327,4329,4331,4333,4335,4337,4339,4341,4343,4345,4347,4349,4351,4353,4355,4357,4359,4362,4364],{"class":2899,"line":3198},[2897,4309,4235],{"class":4234},[2897,4311,4238],{"class":3181},[2897,4313,4241],{"class":3188},[2897,4315,3192],{"class":3181},[2897,4317,4318],{"class":3177}," users2 ",[2897,4320,3406],{"class":3181},[2897,4322,4251],{"class":3181},[2897,4324,4254],{"class":3173},[2897,4326,3178],{"class":3177},[2897,4328,4071],{"class":3181},[2897,4330,4261],{"class":2907},[2897,4332,4071],{"class":3181},[2897,4334,4266],{"class":3181},[2897,4336,4269],{"class":3181},[2897,4338,4272],{"class":4234},[2897,4340,4275],{"class":3173},[2897,4342,3178],{"class":3177},[2897,4344,4071],{"class":3181},[2897,4346,4282],{"class":2907},[2897,4348,4071],{"class":3181},[2897,4350,4287],{"class":3177},[2897,4352,4266],{"class":3181},[2897,4354,4238],{"class":3181},[2897,4356,4294],{"class":3188},[2897,4358,3192],{"class":3181},[2897,4360,4361],{"class":4299}," true",[2897,4363,4303],{"class":3181},[2897,4365,3409],{"class":3177},[4367,4368],"br",{},"It may be beneficial to extract any calls to ",[2875,4371,515],{}," that share an explicit key (and have custom options) into their own composable:",[2887,4374,4377],{"className":3156,"code":4375,"filename":4376,"language":3158,"meta":2893,"style":2893},"export function useUserData (userId: string) {\n  return useAsyncData(\n    `user-${userId}`,\n    () => fetchUser(userId),\n    {\n      deep: true,\n      transform: user => ({ ...user, lastAccessed: new Date() }),\n    },\n  )\n}\n","composables/useUserData.ts",[2875,4378,4379,4405,4415,4433,4451,4456,4467,4512,4517,4522],{"__ignoreMap":2893},[2897,4380,4381,4383,4386,4389,4392,4396,4398,4401,4403],{"class":2899,"line":2900},[2897,4382,3167],{"class":3166},[2897,4384,4385],{"class":4234}," function",[2897,4387,4388],{"class":3173}," useUserData",[2897,4390,4391],{"class":3181}," (",[2897,4393,4395],{"class":4394},"s1nJG","userId",[2897,4397,3192],{"class":3181},[2897,4399,4400],{"class":2903}," string",[2897,4402,4287],{"class":3181},[2897,4404,3195],{"class":3181},[2897,4406,4407,4410,4412],{"class":2899,"line":3185},[2897,4408,4409],{"class":3166},"  return",[2897,4411,4254],{"class":3173},[2897,4413,4414],{"class":3188},"(\n",[2897,4416,4417,4420,4423,4426,4428,4431],{"class":2899,"line":3198},[2897,4418,4419],{"class":3181},"    `",[2897,4421,4422],{"class":2907},"user-",[2897,4424,4425],{"class":3181},"${",[2897,4427,4395],{"class":3177},[2897,4429,4430],{"class":3181},"}`",[2897,4432,3210],{"class":3181},[2897,4434,4435,4438,4440,4443,4445,4447,4449],{"class":2899,"line":3213},[2897,4436,4437],{"class":3181},"    ()",[2897,4439,4272],{"class":4234},[2897,4441,4442],{"class":3173}," fetchUser",[2897,4444,3178],{"class":3188},[2897,4446,4395],{"class":3177},[2897,4448,4287],{"class":3188},[2897,4450,3210],{"class":3181},[2897,4452,4453],{"class":2899,"line":3219},[2897,4454,4455],{"class":3181},"    {\n",[2897,4457,4458,4461,4463,4465],{"class":2899,"line":3226},[2897,4459,4460],{"class":3188},"      deep",[2897,4462,3192],{"class":3181},[2897,4464,4361],{"class":4299},[2897,4466,3210],{"class":3181},[2897,4468,4469,4472,4474,4477,4479,4481,4484,4487,4490,4492,4495,4497,4500,4503,4506,4508,4510],{"class":2899,"line":3232},[2897,4470,4471],{"class":3173},"      transform",[2897,4473,3192],{"class":3181},[2897,4475,4476],{"class":4394}," user",[2897,4478,4272],{"class":4234},[2897,4480,4391],{"class":3188},[2897,4482,4483],{"class":3181},"{",[2897,4485,4486],{"class":3181}," ...",[2897,4488,4489],{"class":3177},"user",[2897,4491,4266],{"class":3181},[2897,4493,4494],{"class":3188}," lastAccessed",[2897,4496,3192],{"class":3181},[2897,4498,4499],{"class":3181}," new",[2897,4501,4502],{"class":3173}," Date",[2897,4504,4505],{"class":3188},"() ",[2897,4507,3406],{"class":3181},[2897,4509,4287],{"class":3188},[2897,4511,3210],{"class":3181},[2897,4513,4514],{"class":2899,"line":3238},[2897,4515,4516],{"class":3181},"    },\n",[2897,4518,4519],{"class":2899,"line":3244},[2897,4520,4521],{"class":3188},"  )\n",[2897,4523,4524],{"class":2899,"line":3250},[2897,4525,4526],{"class":3181},"}\n",[3602,4528,4529,3192,4535],{},[3119,4530,4531,4532,4534],{},"Update ",[2875,4533,4167],{}," implementations",[2887,4536,4540],{"className":4537,"code":4538,"language":4539,"meta":2893,"style":2893},"language-diff shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","useAsyncData('key', fetchFunction, {\n-  getCachedData: (key, nuxtApp) => {\n-    return cachedData[key]\n-  }\n+  getCachedData: (key, nuxtApp, ctx) => {\n+    // ctx.cause - can be 'initial' | 'refresh:hook' | 'refresh:manual' | 'watch'\n+    \n+    // Example: Don't use cache on manual refresh\n+    if (ctx.cause === 'refresh:manual') return undefined\n+    \n+    return cachedData[key]\n+  }\n})\n","diff",[2875,4541,4542,4547,4555,4562,4569,4577,4584,4591,4598,4605,4611,4617,4623],{"__ignoreMap":2893},[2897,4543,4544],{"class":2899,"line":2900},[2897,4545,4546],{"class":3177},"useAsyncData('key', fetchFunction, {\n",[2897,4548,4549,4552],{"class":2899,"line":3185},[2897,4550,4551],{"class":3181},"-",[2897,4553,4554],{"class":3188},"  getCachedData: (key, nuxtApp) => {\n",[2897,4556,4557,4559],{"class":2899,"line":3198},[2897,4558,4551],{"class":3181},[2897,4560,4561],{"class":3188},"    return cachedData[key]\n",[2897,4563,4564,4566],{"class":2899,"line":3213},[2897,4565,4551],{"class":3181},[2897,4567,4568],{"class":3188},"  }\n",[2897,4570,4571,4574],{"class":2899,"line":3219},[2897,4572,4573],{"class":3181},"+",[2897,4575,4576],{"class":2907},"  getCachedData: (key, nuxtApp, ctx) => {\n",[2897,4578,4579,4581],{"class":2899,"line":3226},[2897,4580,4573],{"class":3181},[2897,4582,4583],{"class":2907},"    // ctx.cause - can be 'initial' | 'refresh:hook' | 'refresh:manual' | 'watch'\n",[2897,4585,4586,4588],{"class":2899,"line":3232},[2897,4587,4573],{"class":3181},[2897,4589,4590],{"class":2907},"    \n",[2897,4592,4593,4595],{"class":2899,"line":3238},[2897,4594,4573],{"class":3181},[2897,4596,4597],{"class":2907},"    // Example: Don't use cache on manual refresh\n",[2897,4599,4600,4602],{"class":2899,"line":3244},[2897,4601,4573],{"class":3181},[2897,4603,4604],{"class":2907},"    if (ctx.cause === 'refresh:manual') return undefined\n",[2897,4606,4607,4609],{"class":2899,"line":3250},[2897,4608,4573],{"class":3181},[2897,4610,4590],{"class":2907},[2897,4612,4613,4615],{"class":2899,"line":3256},[2897,4614,4573],{"class":3181},[2897,4616,4561],{"class":2907},[2897,4618,4619,4621],{"class":2899,"line":3262},[2897,4620,4573],{"class":3181},[2897,4622,4568],{"class":2907},[2897,4624,4625],{"class":2899,"line":3268},[2897,4626,4627],{"class":3177},"})\n",[2863,4629,4630],{},"Alternatively, for now, you can disable this behaviour with:",[2887,4632,4634],{"className":3156,"code":4633,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  experimental: {\n    granularCachedData: false,\n    purgeCachedData: false,\n  },\n})\n",[2875,4635,4636,4648,4657,4668,4679,4683],{"__ignoreMap":2893},[2897,4637,4638,4640,4642,4644,4646],{"class":2899,"line":2900},[2897,4639,3167],{"class":3166},[2897,4641,3170],{"class":3166},[2897,4643,3174],{"class":3173},[2897,4645,3178],{"class":3177},[2897,4647,3182],{"class":3181},[2897,4649,4650,4653,4655],{"class":2899,"line":3185},[2897,4651,4652],{"class":3188},"  experimental",[2897,4654,3192],{"class":3181},[2897,4656,3195],{"class":3181},[2897,4658,4659,4662,4664,4666],{"class":2899,"line":3198},[2897,4660,4661],{"class":3188},"    granularCachedData",[2897,4663,3192],{"class":3181},[2897,4665,4300],{"class":4299},[2897,4667,3210],{"class":3181},[2897,4669,4670,4673,4675,4677],{"class":2899,"line":3213},[2897,4671,4672],{"class":3188},"    purgeCachedData",[2897,4674,3192],{"class":3181},[2897,4676,4300],{"class":4299},[2897,4678,3210],{"class":3181},[2897,4680,4681],{"class":2899,"line":3219},[2897,4682,3216],{"class":3181},[2897,4684,4685,4687],{"class":2899,"line":3226},[2897,4686,3406],{"class":3181},[2897,4688,3409],{"class":3177},[2858,4690,4692],{"id":4691},"corrected-module-loading-order-in-layers","Corrected Module Loading Order in Layers",[2863,4694,3573,4695,4697],{},[3119,4696,3576],{},": Minimal",[3594,4699,3597],{"id":4700},"what-changed-2",[2863,4702,4703,4704,4707],{},"The order in which modules are loaded when using ",[2867,4705,4706],{"href":420},"Nuxt layers"," has been corrected. Previously, modules from the project root were loaded before modules from extended layers, which was the reverse of the expected behavior.",[2863,4709,4710],{},"Now modules are loaded in the correct order:",[3861,4712,4713,4719],{},[3602,4714,4715,4718],{},[3119,4716,4717],{},"Layer modules first"," (in extend order - deeper layers first)",[3602,4720,4721,4724],{},[3119,4722,4723],{},"Project modules last"," (highest priority)",[2863,4726,4727],{},"This affects both:",[3599,4729,4730,4738],{},[3602,4731,4732,4733,4735,4736],{},"Modules defined in the ",[2875,4734,162],{}," array in ",[2875,4737,233],{},[3602,4739,4740,4741,4743],{},"Auto-discovered modules from the ",[2875,4742,3633],{}," directory",[3594,4745,3859],{"id":4746},"reasons-for-change-2",[2863,4748,4749],{},"This change ensures that:",[3599,4751,4752,4755,4758],{},[3602,4753,4754],{},"Extended layers have lower priority than the consuming project",[3602,4756,4757],{},"Module execution order matches the intuitive layer inheritance pattern",[3602,4759,4760],{},"Module configuration and hooks work as expected in multi-layer setups",[3594,4762,3901],{"id":4763},"migration-steps-2",[2863,4765,4766,4769],{},[3119,4767,4768],{},"Most projects will not need changes",", as this corrects the loading order to match expected behavior.",[2863,4771,4772],{},"However, if your project was relying on the previous incorrect order, you may need to:",[3861,4774,4775,4781,4787],{},[3602,4776,4777,4780],{},[3119,4778,4779],{},"Review module dependencies",": Check if any modules depend on specific loading order",[3602,4782,4783,4786],{},[3119,4784,4785],{},"Adjust module configuration",": If modules were configured to work around the incorrect order",[3602,4788,4789,4792],{},[3119,4790,4791],{},"Test thoroughly",": Ensure all functionality works as expected with the corrected order",[2863,4794,4795],{},"Example of the new correct order:",[2887,4797,4799],{"className":3156,"code":4798,"language":3158,"meta":2893,"style":2893},"// Layer: my-layer/nuxt.config.ts\nexport default defineNuxtConfig({\n  modules: ['layer-module-1', 'layer-module-2'],\n})\n\n// Project: nuxt.config.ts\nexport default defineNuxtConfig({\n  extends: ['./my-layer'],\n  modules: ['project-module-1', 'project-module-2'],\n})\n\n// Loading order (corrected):\n// 1. layer-module-1\n// 2. layer-module-2\n// 3. project-module-1 (can override layer modules)\n// 4. project-module-2 (can override layer modules)\n",[2875,4800,4801,4806,4818,4849,4855,4860,4865,4877,4897,4925,4931,4935,4940,4945,4950,4955],{"__ignoreMap":2893},[2897,4802,4803],{"class":2899,"line":2900},[2897,4804,4805],{"class":3222},"// Layer: my-layer/nuxt.config.ts\n",[2897,4807,4808,4810,4812,4814,4816],{"class":2899,"line":3185},[2897,4809,3167],{"class":3166},[2897,4811,3170],{"class":3166},[2897,4813,3174],{"class":3173},[2897,4815,3178],{"class":3177},[2897,4817,3182],{"class":3181},[2897,4819,4820,4823,4825,4828,4830,4833,4835,4837,4839,4842,4844,4847],{"class":2899,"line":3198},[2897,4821,4822],{"class":3188},"  modules",[2897,4824,3192],{"class":3181},[2897,4826,4827],{"class":3177}," [",[2897,4829,4071],{"class":3181},[2897,4831,4832],{"class":2907},"layer-module-1",[2897,4834,4071],{"class":3181},[2897,4836,4266],{"class":3181},[2897,4838,4066],{"class":3181},[2897,4840,4841],{"class":2907},"layer-module-2",[2897,4843,4071],{"class":3181},[2897,4845,4846],{"class":3177},"]",[2897,4848,3210],{"class":3181},[2897,4850,4851,4853],{"class":2899,"line":3213},[2897,4852,3406],{"class":3181},[2897,4854,3409],{"class":3177},[2897,4856,4857],{"class":2899,"line":3219},[2897,4858,4859],{"emptyLinePlaceholder":1196},"\n",[2897,4861,4862],{"class":2899,"line":3226},[2897,4863,4864],{"class":3222},"// Project: nuxt.config.ts\n",[2897,4866,4867,4869,4871,4873,4875],{"class":2899,"line":3232},[2897,4868,3167],{"class":3166},[2897,4870,3170],{"class":3166},[2897,4872,3174],{"class":3173},[2897,4874,3178],{"class":3177},[2897,4876,3182],{"class":3181},[2897,4878,4879,4882,4884,4886,4888,4891,4893,4895],{"class":2899,"line":3238},[2897,4880,4881],{"class":3188},"  extends",[2897,4883,3192],{"class":3181},[2897,4885,4827],{"class":3177},[2897,4887,4071],{"class":3181},[2897,4889,4890],{"class":2907},"./my-layer",[2897,4892,4071],{"class":3181},[2897,4894,4846],{"class":3177},[2897,4896,3210],{"class":3181},[2897,4898,4899,4901,4903,4905,4907,4910,4912,4914,4916,4919,4921,4923],{"class":2899,"line":3244},[2897,4900,4822],{"class":3188},[2897,4902,3192],{"class":3181},[2897,4904,4827],{"class":3177},[2897,4906,4071],{"class":3181},[2897,4908,4909],{"class":2907},"project-module-1",[2897,4911,4071],{"class":3181},[2897,4913,4266],{"class":3181},[2897,4915,4066],{"class":3181},[2897,4917,4918],{"class":2907},"project-module-2",[2897,4920,4071],{"class":3181},[2897,4922,4846],{"class":3177},[2897,4924,3210],{"class":3181},[2897,4926,4927,4929],{"class":2899,"line":3250},[2897,4928,3406],{"class":3181},[2897,4930,3409],{"class":3177},[2897,4932,4933],{"class":2899,"line":3256},[2897,4934,4859],{"emptyLinePlaceholder":1196},[2897,4936,4937],{"class":2899,"line":3262},[2897,4938,4939],{"class":3222},"// Loading order (corrected):\n",[2897,4941,4942],{"class":2899,"line":3268},[2897,4943,4944],{"class":3222},"// 1. layer-module-1\n",[2897,4946,4947],{"class":2899,"line":3274},[2897,4948,4949],{"class":3222},"// 2. layer-module-2\n",[2897,4951,4952],{"class":2899,"line":3280},[2897,4953,4954],{"class":3222},"// 3. project-module-1 (can override layer modules)\n",[2897,4956,4957],{"class":2899,"line":3286},[2897,4958,4959],{"class":3222},"// 4. project-module-2 (can override layer modules)\n",[2863,4961,4962,4963,4970],{},"If you encounter issues with module order dependencies due to needing to register a hook, consider using the ",[2867,4964,4966,4969],{"href":4965},"/docs/3.x/guide/modules#custom-hooks",[2875,4967,4968],{},"modules:done"," hook"," for modules that need to call a hook. This is run after all other modules have been loaded, which means it is safe to use.",[2863,4972,4973,4974,3634,4979,4984],{},"👉 See ",[2867,4975,4978],{"href":4976,"rel":4977},"https://github.com/nuxt/nuxt/pull/31507",[2871],"PR #31507",[2867,4980,4983],{"href":4981,"rel":4982},"https://github.com/nuxt/nuxt/issues/25719",[2871],"issue #25719"," for more details.",[2858,4986,4988],{"id":4987},"deduplication-of-route-metadata","Deduplication of Route Metadata",[2863,4990,3573,4991,4697],{},[3119,4992,3576],{},[3594,4994,3597],{"id":4995},"what-changed-3",[2863,4997,4998,4999,5001,5002,3630,5005,5008,5009,3634,5012,5015],{},"It's possible to set some route metadata using ",[2875,5000,678],{},", such as the ",[2875,5003,5004],{},"name",[2875,5006,5007],{},"path",", and so on. Previously these were available both on the route and on route metadata (for example, ",[2875,5010,5011],{},"route.name",[2875,5013,5014],{},"route.meta.name",").",[2863,5017,5018],{},"Now, they are only accessible on the route object.",[3594,5020,3859],{"id":5021},"reasons-for-change-3",[2863,5023,5024,5025,5028],{},"This is a result of enabling ",[2875,5026,5027],{},"experimental.scanPageMeta"," by default, and is a performance optimization.",[3594,5030,3901],{"id":5031},"migration-steps-3",[2863,5033,5034],{},"The migration should be straightforward:",[2887,5036,5038],{"className":4537,"code":5037,"language":4539,"meta":2893,"style":2893},"  const route = useRoute()\n  \n- console.log(route.meta.name)\n+ console.log(route.name)\n",[2875,5039,5040,5045,5050,5057],{"__ignoreMap":2893},[2897,5041,5042],{"class":2899,"line":2900},[2897,5043,5044],{"class":3177},"  const route = useRoute()\n",[2897,5046,5047],{"class":2899,"line":3185},[2897,5048,5049],{"class":3177},"  \n",[2897,5051,5052,5054],{"class":2899,"line":3198},[2897,5053,4551],{"class":3181},[2897,5055,5056],{"class":3188}," console.log(route.meta.name)\n",[2897,5058,5059,5061],{"class":2899,"line":3213},[2897,5060,4573],{"class":3181},[2897,5062,5063],{"class":2907}," console.log(route.name)\n",[2858,5065,5067],{"id":5066},"normalized-component-names","Normalized Component Names",[2863,5069,3573,5070,4121],{},[3119,5071,3576],{},[2863,5073,5074],{},"Vue will now generate component names that match the Nuxt pattern for component naming.",[3594,5076,3597],{"id":5077},"what-changed-4",[2863,5079,5080],{},"By default, if you haven't set it manually, Vue will assign a component name that matches\nthe filename of the component.",[2887,5082,5085],{"className":2889,"code":5083,"filename":5084,"language":2892,"meta":2893,"style":2893},"├─ components/\n├─── SomeFolder/\n├───── MyComponent.vue\n","Directory structure",[2875,5086,5087,5095,5103],{"__ignoreMap":2893},[2897,5088,5089,5092],{"class":2899,"line":2900},[2897,5090,5091],{"class":2903},"├─",[2897,5093,5094],{"class":2907}," components/\n",[2897,5096,5097,5100],{"class":2899,"line":3185},[2897,5098,5099],{"class":2903},"├───",[2897,5101,5102],{"class":2907}," SomeFolder/\n",[2897,5104,5105,5108],{"class":2899,"line":3198},[2897,5106,5107],{"class":2903},"├─────",[2897,5109,5110],{"class":2907}," MyComponent.vue\n",[2863,5112,5113,5114,5117,5118,5121],{},"In this case, the component name would be ",[2875,5115,5116],{},"MyComponent",", as far as Vue is concerned. If you wanted to use ",[2875,5119,5120],{},"\u003CKeepAlive>"," with it, or identify it in the Vue DevTools, you would need to use this name.",[2863,5123,5124,5125,3110],{},"But in order to auto-import it, you would need to use ",[2875,5126,5127],{},"SomeFolderMyComponent",[2863,5129,5130],{},"With this change, these two values will match, and Vue will generate a component name that matches the Nuxt pattern for component naming.",[3594,5132,3901],{"id":5133},"migration-steps-4",[2863,5135,5136,5137,5140,5141,5144,5145,5147],{},"Ensure that you use the updated name in any tests which use ",[2875,5138,5139],{},"findComponent"," from ",[2875,5142,5143],{},"@vue/test-utils"," and in any ",[2875,5146,5120],{}," which depends on the name of your component.",[2863,5149,4630],{},[2887,5151,5153],{"className":3156,"code":5152,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  experimental: {\n    normalizeComponentNames: false,\n  },\n})\n",[2875,5154,5155,5167,5175,5186,5190],{"__ignoreMap":2893},[2897,5156,5157,5159,5161,5163,5165],{"class":2899,"line":2900},[2897,5158,3167],{"class":3166},[2897,5160,3170],{"class":3166},[2897,5162,3174],{"class":3173},[2897,5164,3178],{"class":3177},[2897,5166,3182],{"class":3181},[2897,5168,5169,5171,5173],{"class":2899,"line":3185},[2897,5170,4652],{"class":3188},[2897,5172,3192],{"class":3181},[2897,5174,3195],{"class":3181},[2897,5176,5177,5180,5182,5184],{"class":2899,"line":3198},[2897,5178,5179],{"class":3188},"    normalizeComponentNames",[2897,5181,3192],{"class":3181},[2897,5183,4300],{"class":4299},[2897,5185,3210],{"class":3181},[2897,5187,5188],{"class":2899,"line":3213},[2897,5189,3216],{"class":3181},[2897,5191,5192,5194],{"class":2899,"line":3219},[2897,5193,3406],{"class":3181},[2897,5195,3409],{"class":3177},[2858,5197,5199],{"id":5198},"unhead-v2","Unhead v2",[2863,5201,3573,5202,4697],{},[3119,5203,3576],{},[3594,5205,3597],{"id":5206},"what-changed-5",[2863,5208,5209,5214,5215,5218],{},[2867,5210,5213],{"href":5211,"rel":5212},"https://unhead.unjs.io/",[2871],"Unhead",", used to generate ",[2875,5216,5217],{},"\u003Chead>"," tags, has been updated to version 2. While mostly compatible it includes several breaking changes\nfor lower-level APIs.",[3599,5220,5221,5236,5239],{},[3602,5222,5223,5224,3630,5227,3630,5230,3630,5233,3110],{},"Removed props: ",[2875,5225,5226],{},"vmid",[2875,5228,5229],{},"hid",[2875,5231,5232],{},"children",[2875,5234,5235],{},"body",[3602,5237,5238],{},"Promise input no longer supported.",[3602,5240,5241],{},"Tags are now sorted using Capo.js by default.",[3594,5243,3901],{"id":5244},"migration-steps-5",[2863,5246,5247],{},"The above changes should have minimal impact on your app.",[2863,5249,5250],{},"If you have issues you should verify:",[3599,5252,5253],{},[3602,5254,5255],{},"You're not using any of the removed props.",[2887,5257,5259],{"className":4537,"code":5258,"language":4539,"meta":2893,"style":2893},"useHead({\n  meta: [{ \n    name: 'description', \n    // meta tags don't need a vmid, or a key    \n-   vmid: 'description' \n-   hid: 'description'\n  }]\n})\n",[2875,5260,5261,5266,5271,5276,5281,5288,5295,5300],{"__ignoreMap":2893},[2897,5262,5263],{"class":2899,"line":2900},[2897,5264,5265],{"class":3177},"useHead({\n",[2897,5267,5268],{"class":2899,"line":3185},[2897,5269,5270],{"class":3177},"  meta: [{ \n",[2897,5272,5273],{"class":2899,"line":3198},[2897,5274,5275],{"class":3177},"    name: 'description', \n",[2897,5277,5278],{"class":2899,"line":3213},[2897,5279,5280],{"class":3177},"    // meta tags don't need a vmid, or a key    \n",[2897,5282,5283,5285],{"class":2899,"line":3219},[2897,5284,4551],{"class":3181},[2897,5286,5287],{"class":3188},"   vmid: 'description' \n",[2897,5289,5290,5292],{"class":2899,"line":3226},[2897,5291,4551],{"class":3181},[2897,5293,5294],{"class":3188},"   hid: 'description'\n",[2897,5296,5297],{"class":2899,"line":3232},[2897,5298,5299],{"class":3177},"  }]\n",[2897,5301,5302],{"class":2899,"line":3238},[2897,5303,4627],{"class":3177},[3599,5305,5306],{},[3602,5307,5308,5309,3945,5314,5319],{},"If you're using ",[2867,5310,5313],{"href":5311,"rel":5312},"https://unhead.unjs.io/docs/head/guides/plugins/template-params",[2871],"Template Params",[2867,5315,5318],{"href":5316,"rel":5317},"https://unhead.unjs.io/docs/head/guides/plugins/alias-sorting",[2871],"Alias Tag Sorting",", you will need to explicitly opt in to these features now.",[2887,5321,5323],{"className":3156,"code":5322,"language":3158,"meta":2893,"style":2893},"import { AliasSortingPlugin, TemplateParamsPlugin } from '@unhead/vue/plugins'\n\nexport default defineNuxtPlugin({\n  setup () {\n    const unhead = injectHead()\n    unhead.use(TemplateParamsPlugin)\n    unhead.use(AliasSortingPlugin)\n  },\n})\n",[2875,5324,5325,5353,5357,5370,5379,5395,5412,5427,5431],{"__ignoreMap":2893},[2897,5326,5327,5330,5332,5335,5337,5340,5342,5345,5347,5350],{"class":2899,"line":2900},[2897,5328,5329],{"class":3166},"import",[2897,5331,4238],{"class":3181},[2897,5333,5334],{"class":3177}," AliasSortingPlugin",[2897,5336,4266],{"class":3181},[2897,5338,5339],{"class":3177}," TemplateParamsPlugin",[2897,5341,4303],{"class":3181},[2897,5343,5344],{"class":3166}," from",[2897,5346,4066],{"class":3181},[2897,5348,5349],{"class":2907},"@unhead/vue/plugins",[2897,5351,5352],{"class":3181},"'\n",[2897,5354,5355],{"class":2899,"line":3185},[2897,5356,4859],{"emptyLinePlaceholder":1196},[2897,5358,5359,5361,5363,5366,5368],{"class":2899,"line":3198},[2897,5360,3167],{"class":3166},[2897,5362,3170],{"class":3166},[2897,5364,5365],{"class":3173}," defineNuxtPlugin",[2897,5367,3178],{"class":3177},[2897,5369,3182],{"class":3181},[2897,5371,5372,5375,5377],{"class":2899,"line":3213},[2897,5373,5374],{"class":3188},"  setup",[2897,5376,4269],{"class":3181},[2897,5378,3195],{"class":3181},[2897,5380,5381,5384,5387,5389,5392],{"class":2899,"line":3219},[2897,5382,5383],{"class":4234},"    const",[2897,5385,5386],{"class":3177}," unhead",[2897,5388,4251],{"class":3181},[2897,5390,5391],{"class":3173}," injectHead",[2897,5393,5394],{"class":3188},"()\n",[2897,5396,5397,5400,5402,5405,5407,5410],{"class":2899,"line":3226},[2897,5398,5399],{"class":3177},"    unhead",[2897,5401,3110],{"class":3181},[2897,5403,5404],{"class":3173},"use",[2897,5406,3178],{"class":3188},[2897,5408,5409],{"class":3177},"TemplateParamsPlugin",[2897,5411,3409],{"class":3188},[2897,5413,5414,5416,5418,5420,5422,5425],{"class":2899,"line":3232},[2897,5415,5399],{"class":3177},[2897,5417,3110],{"class":3181},[2897,5419,5404],{"class":3173},[2897,5421,3178],{"class":3188},[2897,5423,5424],{"class":3177},"AliasSortingPlugin",[2897,5426,3409],{"class":3188},[2897,5428,5429],{"class":2899,"line":3238},[2897,5430,3216],{"class":3181},[2897,5432,5433,5435],{"class":2899,"line":3244},[2897,5434,3406],{"class":3181},[2897,5436,3409],{"class":3177},[2863,5438,5439,5440,3420,5443,3945,5446,3110],{},"While not required it's recommended to update any imports from ",[2875,5441,5442],{},"@unhead/vue",[2875,5444,5445],{},"#imports",[2875,5447,5448],{},"nuxt/app",[2887,5450,5452],{"className":4537,"code":5451,"language":4539,"meta":2893,"style":2893},"-import { useHead } from '@unhead/vue'\n+import { useHead } from '#imports'\n",[2875,5453,5454,5461],{"__ignoreMap":2893},[2897,5455,5456,5458],{"class":2899,"line":2900},[2897,5457,4551],{"class":3181},[2897,5459,5460],{"class":3188},"import { useHead } from '@unhead/vue'\n",[2897,5462,5463,5465],{"class":2899,"line":3185},[2897,5464,4573],{"class":3181},[2897,5466,5467],{"class":2907},"import { useHead } from '#imports'\n",[2863,5469,5470,5471,5474],{},"If you still have issues you may revert to the v1 behavior by enabling the ",[2875,5472,5473],{},"head.legacy"," config.",[2887,5476,5478],{"className":3156,"code":5477,"language":3158,"meta":2893,"style":2893},"export default defineNuxtConfig({\n  unhead: {\n    legacy: true,\n  },\n})\n",[2875,5479,5480,5492,5501,5512,5516],{"__ignoreMap":2893},[2897,5481,5482,5484,5486,5488,5490],{"class":2899,"line":2900},[2897,5483,3167],{"class":3166},[2897,5485,3170],{"class":3166},[2897,5487,3174],{"class":3173},[2897,5489,3178],{"class":3177},[2897,5491,3182],{"class":3181},[2897,5493,5494,5497,5499],{"class":2899,"line":3185},[2897,5495,5496],{"class":3188},"  unhead",[2897,5498,3192],{"class":3181},[2897,5500,3195],{"class":3181},[2897,5502,5503,5506,5508,5510],{"class":2899,"line":3198},[2897,5504,5505],{"class":3188},"    legacy",[2897,5507,3192],{"class":3181},[2897,5509,4361],{"class":4299},[2897,5511,3210],{"class":3181},[2897,5513,5514],{"class":2899,"line":3213},[2897,5515,3216],{"class":3181},[2897,5517,5518,5520],{"class":2899,"line":3219},[2897,5519,3406],{"class":3181},[2897,5521,3409],{"class":3177},[2858,5523,5525],{"id":5524},"new-dom-location-for-spa-loading-screen","New DOM Location for SPA Loading Screen",[2863,5527,3573,5528,4697],{},[3119,5529,3576],{},[3594,5531,3597],{"id":5532},"what-changed-6",[2863,5534,5535,5536,5539,5540,5543,5544,5547],{},"When rendering a client-only page (with ",[2875,5537,5538],{},"ssr: false","), we optionally render a loading screen (from ",[2875,5541,5542],{},"~/app/spa-loading-template.html"," - note that this has also changed to ",[2875,5545,5546],{},"~/spa-loading-template.html"," in Nuxt 4), within the Nuxt app root:",[2887,5549,5553],{"className":5550,"code":5551,"language":5552,"meta":2893,"style":2893},"language-html shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\u003Cdiv id=\"__nuxt\">\n  \u003C!-- spa loading template -->\n\u003C/div>\n","html",[2875,5554,5555,5580,5585],{"__ignoreMap":2893},[2897,5556,5557,5560,5563,5566,5569,5572,5575,5577],{"class":2899,"line":2900},[2897,5558,5559],{"class":3181},"\u003C",[2897,5561,5562],{"class":3188},"div",[2897,5564,5565],{"class":4234}," id",[2897,5567,5568],{"class":3181},"=",[2897,5570,5571],{"class":3181},"\"",[2897,5573,5574],{"class":2907},"__nuxt",[2897,5576,5571],{"class":3181},[2897,5578,5579],{"class":3181},">\n",[2897,5581,5582],{"class":2899,"line":3185},[2897,5583,5584],{"class":3222},"  \u003C!-- spa loading template -->\n",[2897,5586,5587,5590,5592],{"class":2899,"line":3198},[2897,5588,5589],{"class":3181},"\u003C/",[2897,5591,5562],{"class":3188},[2897,5593,5579],{"class":3181},[2863,5595,5596],{},"Now, we default to rendering the template alongside the Nuxt app root:",[2887,5598,5600],{"className":5550,"code":5599,"language":5552,"meta":2893,"style":2893},"\u003Cdiv id=\"__nuxt\">\u003C/div>\n\u003C!-- spa loading template -->\n",[2875,5601,5602,5625],{"__ignoreMap":2893},[2897,5603,5604,5606,5608,5610,5612,5614,5616,5618,5621,5623],{"class":2899,"line":2900},[2897,5605,5559],{"class":3181},[2897,5607,5562],{"class":3188},[2897,5609,5565],{"class":4234},[2897,5611,5568],{"class":3181},[2897,5613,5571],{"class":3181},[2897,5615,5574],{"class":2907},[2897,5617,5571],{"class":3181},[2897,5619,5620],{"class":3181},">\u003C/",[2897,5622,5562],{"class":3188},[2897,5624,5579],{"class":3181},[2897,5626,5627],{"class":2899,"line":3185},[2897,5628,5629],{"class":3222},"\u003C!-- spa loading template -->\n",[3594,5631,3859],{"id":5632},"reasons-for-change-4",[2863,5634,5635],{},"This allows the spa loading template to remain in the DOM until the Vue app suspense resolves, preventing a flash of white.",[3594,5637,3901],{"id":5638},"migration-steps-6",[2863,5640,5641,5642,5645,5646,3634,5649,5652],{},"If you were targeting the spa loading template with CSS or ",[2875,5643,5644],{},"document.queryElement"," you will need to update your selectors. For this purpose you can use the new ",[2875,5647,5648],{},"app.spaLoaderTag",[2875,5650,5651],{},"app.spaLoaderAttrs"," configuration options.",[2863,5654,5655],{},"Alternatively, you can revert to the previous behaviour with:",[2887,5657,5659],{"className":3156,"code":5658,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  experimental: {\n    spaLoadingTemplateLocation: 'within',\n  },\n})\n",[2875,5660,5661,5673,5681,5697,5701],{"__ignoreMap":2893},[2897,5662,5663,5665,5667,5669,5671],{"class":2899,"line":2900},[2897,5664,3167],{"class":3166},[2897,5666,3170],{"class":3166},[2897,5668,3174],{"class":3173},[2897,5670,3178],{"class":3177},[2897,5672,3182],{"class":3181},[2897,5674,5675,5677,5679],{"class":2899,"line":3185},[2897,5676,4652],{"class":3188},[2897,5678,3192],{"class":3181},[2897,5680,3195],{"class":3181},[2897,5682,5683,5686,5688,5690,5693,5695],{"class":2899,"line":3198},[2897,5684,5685],{"class":3188},"    spaLoadingTemplateLocation",[2897,5687,3192],{"class":3181},[2897,5689,4066],{"class":3181},[2897,5691,5692],{"class":2907},"within",[2897,5694,4071],{"class":3181},[2897,5696,3210],{"class":3181},[2897,5698,5699],{"class":2899,"line":3213},[2897,5700,3216],{"class":3181},[2897,5702,5703,5705],{"class":2899,"line":3219},[2897,5704,3406],{"class":3181},[2897,5706,3409],{"class":3177},[2858,5708,5710,5711],{"id":5709},"parsed-errordata","Parsed ",[2875,5712,5713],{},"error.data",[2863,5715,3573,5716,4697],{},[3119,5717,3576],{},[2863,5719,5720,5721,5723,5724,5726],{},"It was possible to throw an error with a ",[2875,5722,4148],{}," property, but this was not parsed. Now, it is parsed and made available in the ",[2875,5725,4151],{}," object. Although a fix, this is technically a breaking change if you were relying on the previous behavior and parsing it manually.",[3594,5728,3901],{"id":5729},"migration-steps-7",[2863,5731,5732,5733,5735,5736,3192],{},"Update your custom ",[2875,5734,229],{}," to remove any additional parsing of ",[2875,5737,5713],{},[2887,5739,5741],{"className":4537,"code":5740,"language":4539,"meta":2893,"style":2893},"  \u003Cscript setup lang=\"ts\">\n  import type { NuxtError } from '#app'\n\n  const props = defineProps({\n    error: Object as () => NuxtError\n  })\n\n- const data = JSON.parse(error.data)\n+ const data = error.data\n  \u003C/script>\n",[2875,5742,5743,5748,5753,5757,5762,5767,5772,5776,5783,5790],{"__ignoreMap":2893},[2897,5744,5745],{"class":2899,"line":2900},[2897,5746,5747],{"class":3177},"  \u003Cscript setup lang=\"ts\">\n",[2897,5749,5750],{"class":2899,"line":3185},[2897,5751,5752],{"class":3177},"  import type { NuxtError } from '#app'\n",[2897,5754,5755],{"class":2899,"line":3198},[2897,5756,4859],{"emptyLinePlaceholder":1196},[2897,5758,5759],{"class":2899,"line":3213},[2897,5760,5761],{"class":3177},"  const props = defineProps({\n",[2897,5763,5764],{"class":2899,"line":3219},[2897,5765,5766],{"class":3177},"    error: Object as () => NuxtError\n",[2897,5768,5769],{"class":2899,"line":3226},[2897,5770,5771],{"class":3177},"  })\n",[2897,5773,5774],{"class":2899,"line":3232},[2897,5775,4859],{"emptyLinePlaceholder":1196},[2897,5777,5778,5780],{"class":2899,"line":3238},[2897,5779,4551],{"class":3181},[2897,5781,5782],{"class":3188}," const data = JSON.parse(error.data)\n",[2897,5784,5785,5787],{"class":2899,"line":3244},[2897,5786,4573],{"class":3181},[2897,5788,5789],{"class":2907}," const data = error.data\n",[2897,5791,5792],{"class":2899,"line":3250},[2897,5793,5794],{"class":3177},"  \u003C/script>\n",[2863,5796,5797],{},"Alternatively, you can disable this change:",[2887,5799,5801],{"className":3156,"code":5800,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  experimental: {\n    parseErrorData: false,\n  },\n})\n",[2875,5802,5803,5815,5823,5834,5838],{"__ignoreMap":2893},[2897,5804,5805,5807,5809,5811,5813],{"class":2899,"line":2900},[2897,5806,3167],{"class":3166},[2897,5808,3170],{"class":3166},[2897,5810,3174],{"class":3173},[2897,5812,3178],{"class":3177},[2897,5814,3182],{"class":3181},[2897,5816,5817,5819,5821],{"class":2899,"line":3185},[2897,5818,4652],{"class":3188},[2897,5820,3192],{"class":3181},[2897,5822,3195],{"class":3181},[2897,5824,5825,5828,5830,5832],{"class":2899,"line":3198},[2897,5826,5827],{"class":3188},"    parseErrorData",[2897,5829,3192],{"class":3181},[2897,5831,4300],{"class":4299},[2897,5833,3210],{"class":3181},[2897,5835,5836],{"class":2899,"line":3213},[2897,5837,3216],{"class":3181},[2897,5839,5840,5842],{"class":2899,"line":3219},[2897,5841,3406],{"class":3181},[2897,5843,3409],{"class":3177},[2858,5845,5847],{"id":5846},"more-granular-inline-styles","More Granular Inline Styles",[2863,5849,3573,5850,4121],{},[3119,5851,3576],{},[2863,5853,5854],{},"Nuxt will now only inline styles for Vue components, not global CSS.",[3594,5856,3597],{"id":5857},"what-changed-7",[2863,5859,5860,5861,5864,5865,5868],{},"Previously, Nuxt would inline all CSS, including global styles, and remove ",[2875,5862,5863],{},"\u003Clink>"," elements to separate CSS files. Now, Nuxt will only do this for Vue components (which previously produced separate chunks of CSS). We think this is a better balance of reducing separate network requests (just as before, there will not be separate requests for individual ",[2875,5866,5867],{},".css"," files per-page or per-component on the initial load), as well as allowing caching of a single global CSS file and reducing the document download size of the initial request.",[3594,5870,3901],{"id":5871},"migration-steps-8",[2863,5873,5874,5875,5878],{},"This feature is fully configurable and you can revert to the previous behavior by setting ",[2875,5876,5877],{},"inlineStyles: true"," to inline global CSS as well as per-component CSS.",[2887,5880,5882],{"className":3156,"code":5881,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  features: {\n    inlineStyles: true,\n  },\n})\n",[2875,5883,5884,5896,5905,5916,5920],{"__ignoreMap":2893},[2897,5885,5886,5888,5890,5892,5894],{"class":2899,"line":2900},[2897,5887,3167],{"class":3166},[2897,5889,3170],{"class":3166},[2897,5891,3174],{"class":3173},[2897,5893,3178],{"class":3177},[2897,5895,3182],{"class":3181},[2897,5897,5898,5901,5903],{"class":2899,"line":3185},[2897,5899,5900],{"class":3188},"  features",[2897,5902,3192],{"class":3181},[2897,5904,3195],{"class":3181},[2897,5906,5907,5910,5912,5914],{"class":2899,"line":3198},[2897,5908,5909],{"class":3188},"    inlineStyles",[2897,5911,3192],{"class":3181},[2897,5913,4361],{"class":4299},[2897,5915,3210],{"class":3181},[2897,5917,5918],{"class":2899,"line":3213},[2897,5919,3216],{"class":3181},[2897,5921,5922,5924],{"class":2899,"line":3219},[2897,5923,3406],{"class":3181},[2897,5925,3409],{"class":3177},[2858,5927,5929],{"id":5928},"scan-page-meta-after-resolution","Scan Page Meta After Resolution",[2863,5931,3573,5932,4697],{},[3119,5933,3576],{},[3594,5935,3597],{"id":5936},"what-changed-8",[2863,5938,5939,5940,5942,5943,5946,5947,5950],{},"We now scan page metadata (defined in ",[2875,5941,678],{},") ",[2982,5944,5945],{},"after"," calling the ",[2875,5948,5949],{},"pages:extend"," hook rather than before.",[3594,5952,3859],{"id":5953},"reasons-for-change-5",[2863,5955,5956,5957,5959,5960,5963],{},"This was to allow scanning metadata for pages that users wanted to add in ",[2875,5958,5949],{},". We still offer an opportunity to change or override page metadata in a new ",[2875,5961,5962],{},"pages:resolved"," hook.",[3594,5965,3901],{"id":5966},"migration-steps-9",[2863,5968,5969,5970,5972,5973,3110],{},"If you want to override page metadata, do that in ",[2875,5971,5962],{}," rather than in ",[2875,5974,5949],{},[2887,5976,5978],{"className":4537,"code":5977,"language":4539,"meta":2893,"style":2893},"  export default defineNuxtConfig({\n    hooks: {\n-     'pages:extend'(pages) {\n+     'pages:resolved'(pages) {\n        const myPage = pages.find(page => page.path === '/')\n        myPage.meta ||= {}\n        myPage.meta.layout = 'overridden-layout'\n      }\n    }\n  })\n",[2875,5979,5980,5985,5990,5997,6004,6009,6014,6019,6024,6029],{"__ignoreMap":2893},[2897,5981,5982],{"class":2899,"line":2900},[2897,5983,5984],{"class":3177},"  export default defineNuxtConfig({\n",[2897,5986,5987],{"class":2899,"line":3185},[2897,5988,5989],{"class":3177},"    hooks: {\n",[2897,5991,5992,5994],{"class":2899,"line":3198},[2897,5993,4551],{"class":3181},[2897,5995,5996],{"class":3188},"     'pages:extend'(pages) {\n",[2897,5998,5999,6001],{"class":2899,"line":3213},[2897,6000,4573],{"class":3181},[2897,6002,6003],{"class":2907},"     'pages:resolved'(pages) {\n",[2897,6005,6006],{"class":2899,"line":3219},[2897,6007,6008],{"class":3177},"        const myPage = pages.find(page => page.path === '/')\n",[2897,6010,6011],{"class":2899,"line":3226},[2897,6012,6013],{"class":3177},"        myPage.meta ||= {}\n",[2897,6015,6016],{"class":2899,"line":3232},[2897,6017,6018],{"class":3177},"        myPage.meta.layout = 'overridden-layout'\n",[2897,6020,6021],{"class":2899,"line":3238},[2897,6022,6023],{"class":3177},"      }\n",[2897,6025,6026],{"class":2899,"line":3244},[2897,6027,6028],{"class":3177},"    }\n",[2897,6030,6031],{"class":2899,"line":3250},[2897,6032,5771],{"class":3177},[2863,6034,5655],{},[2887,6036,6038],{"className":3156,"code":6037,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  experimental: {\n    scanPageMeta: true,\n  },\n})\n",[2875,6039,6040,6052,6060,6071,6075],{"__ignoreMap":2893},[2897,6041,6042,6044,6046,6048,6050],{"class":2899,"line":2900},[2897,6043,3167],{"class":3166},[2897,6045,3170],{"class":3166},[2897,6047,3174],{"class":3173},[2897,6049,3178],{"class":3177},[2897,6051,3182],{"class":3181},[2897,6053,6054,6056,6058],{"class":2899,"line":3185},[2897,6055,4652],{"class":3188},[2897,6057,3192],{"class":3181},[2897,6059,3195],{"class":3181},[2897,6061,6062,6065,6067,6069],{"class":2899,"line":3198},[2897,6063,6064],{"class":3188},"    scanPageMeta",[2897,6066,3192],{"class":3181},[2897,6068,4361],{"class":4299},[2897,6070,3210],{"class":3181},[2897,6072,6073],{"class":2899,"line":3213},[2897,6074,3216],{"class":3181},[2897,6076,6077,6079],{"class":2899,"line":3219},[2897,6078,3406],{"class":3181},[2897,6080,3409],{"class":3177},[2858,6082,6084],{"id":6083},"shared-prerender-data","Shared Prerender Data",[2863,6086,3573,6087,6089],{},[3119,6088,3576],{},": Medium",[3594,6091,3597],{"id":6092},"what-changed-9",[2863,6094,6095,6096,3634,6098,6100,6101,3110],{},"We enabled a previously experimental feature to share data from ",[2875,6097,515],{},[2875,6099,527],{}," calls, across different pages. See ",[2867,6102,6105],{"href":6103,"rel":6104},"https://github.com/nuxt/nuxt/pull/24894",[2871],"original PR",[3594,6107,3859],{"id":6108},"reasons-for-change-6",[2863,6110,6111,6112,6114,6115,3945,6117,6119],{},"This feature automatically shares payload ",[2982,6113,4148],{}," between pages that are prerendered. This can result in a significant performance improvement when prerendering sites that use ",[2875,6116,515],{},[2875,6118,527],{}," and fetch the same data in different pages.",[2863,6121,6122,6123,6125],{},"For example, if your site requires a ",[2875,6124,527],{}," call for every page (for example, to get navigation data for a menu, or site settings from a CMS), this data would only be fetched once when prerendering the first page that uses it, and then cached for use when prerendering other pages.",[3594,6127,3901],{"id":6128},"migration-steps-10",[2863,6130,6131,6132,6134,6135,6137],{},"Make sure that any unique key of your data is always resolvable to the same data. For example, if you are using ",[2875,6133,515],{}," to fetch data related to a particular page, you should provide a key that uniquely matches that data. (",[2875,6136,527],{}," should do this automatically for you.)",[2887,6139,6142],{"className":3156,"code":6140,"filename":6141,"language":3158,"meta":2893,"style":2893},"// This would be unsafe in a dynamic page (e.g. `[slug].vue`) because the route slug makes a difference\n// to the data fetched, but Nuxt can't know that because it's not reflected in the key.\nconst route = useRoute()\nconst { data } = await useAsyncData(async () => {\n  return await $fetch(`/api/my-page/${route.params.slug}`)\n})\n// Instead, you should use a key that uniquely identifies the data fetched.\nconst { data } = await useAsyncData(route.params.slug, async () => {\n  return await $fetch(`/api/my-page/${route.params.slug}`)\n})\n","pages/test/[slug].vue",[2875,6143,6144,6149,6154,6168,6197,6232,6238,6243,6281,6311],{"__ignoreMap":2893},[2897,6145,6146],{"class":2899,"line":2900},[2897,6147,6148],{"class":3222},"// This would be unsafe in a dynamic page (e.g. `[slug].vue`) because the route slug makes a difference\n",[2897,6150,6151],{"class":2899,"line":3185},[2897,6152,6153],{"class":3222},"// to the data fetched, but Nuxt can't know that because it's not reflected in the key.\n",[2897,6155,6156,6158,6161,6163,6166],{"class":2899,"line":3198},[2897,6157,4235],{"class":4234},[2897,6159,6160],{"class":3177}," route ",[2897,6162,5568],{"class":3181},[2897,6164,6165],{"class":3173}," useRoute",[2897,6167,5394],{"class":3177},[2897,6169,6170,6172,6174,6177,6179,6181,6184,6186,6188,6191,6193,6195],{"class":2899,"line":3213},[2897,6171,4235],{"class":4234},[2897,6173,4238],{"class":3181},[2897,6175,6176],{"class":3177}," data ",[2897,6178,3406],{"class":3181},[2897,6180,4251],{"class":3181},[2897,6182,6183],{"class":3166}," await",[2897,6185,4254],{"class":3173},[2897,6187,3178],{"class":3177},[2897,6189,6190],{"class":4234},"async",[2897,6192,4269],{"class":3181},[2897,6194,4272],{"class":4234},[2897,6196,3195],{"class":3181},[2897,6198,6199,6201,6203,6205,6207,6210,6213,6215,6218,6220,6223,6225,6228,6230],{"class":2899,"line":3219},[2897,6200,4409],{"class":3166},[2897,6202,6183],{"class":3166},[2897,6204,4275],{"class":3173},[2897,6206,3178],{"class":3188},[2897,6208,6209],{"class":3181},"`",[2897,6211,6212],{"class":2907},"/api/my-page/",[2897,6214,4425],{"class":3181},[2897,6216,6217],{"class":3177},"route",[2897,6219,3110],{"class":3181},[2897,6221,6222],{"class":3177},"params",[2897,6224,3110],{"class":3181},[2897,6226,6227],{"class":3177},"slug",[2897,6229,4430],{"class":3181},[2897,6231,3409],{"class":3188},[2897,6233,6234,6236],{"class":2899,"line":3226},[2897,6235,3406],{"class":3181},[2897,6237,3409],{"class":3177},[2897,6239,6240],{"class":2899,"line":3232},[2897,6241,6242],{"class":3222},"// Instead, you should use a key that uniquely identifies the data fetched.\n",[2897,6244,6245,6247,6249,6251,6253,6255,6257,6259,6262,6264,6266,6268,6270,6272,6275,6277,6279],{"class":2899,"line":3238},[2897,6246,4235],{"class":4234},[2897,6248,4238],{"class":3181},[2897,6250,6176],{"class":3177},[2897,6252,3406],{"class":3181},[2897,6254,4251],{"class":3181},[2897,6256,6183],{"class":3166},[2897,6258,4254],{"class":3173},[2897,6260,6261],{"class":3177},"(route",[2897,6263,3110],{"class":3181},[2897,6265,6222],{"class":3177},[2897,6267,3110],{"class":3181},[2897,6269,6227],{"class":3177},[2897,6271,4266],{"class":3181},[2897,6273,6274],{"class":4234}," async",[2897,6276,4269],{"class":3181},[2897,6278,4272],{"class":4234},[2897,6280,3195],{"class":3181},[2897,6282,6283,6285,6287,6289,6291,6293,6295,6297,6299,6301,6303,6305,6307,6309],{"class":2899,"line":3244},[2897,6284,4409],{"class":3166},[2897,6286,6183],{"class":3166},[2897,6288,4275],{"class":3173},[2897,6290,3178],{"class":3188},[2897,6292,6209],{"class":3181},[2897,6294,6212],{"class":2907},[2897,6296,4425],{"class":3181},[2897,6298,6217],{"class":3177},[2897,6300,3110],{"class":3181},[2897,6302,6222],{"class":3177},[2897,6304,3110],{"class":3181},[2897,6306,6227],{"class":3177},[2897,6308,4430],{"class":3181},[2897,6310,3409],{"class":3188},[2897,6312,6313,6315],{"class":2899,"line":3250},[2897,6314,3406],{"class":3181},[2897,6316,3409],{"class":3177},[2863,6318,6319],{},"Alternatively, you can disable this feature with:",[2887,6321,6323],{"className":3156,"code":6322,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  experimental: {\n    sharedPrerenderData: false,\n  },\n})\n",[2875,6324,6325,6337,6345,6356,6360],{"__ignoreMap":2893},[2897,6326,6327,6329,6331,6333,6335],{"class":2899,"line":2900},[2897,6328,3167],{"class":3166},[2897,6330,3170],{"class":3166},[2897,6332,3174],{"class":3173},[2897,6334,3178],{"class":3177},[2897,6336,3182],{"class":3181},[2897,6338,6339,6341,6343],{"class":2899,"line":3185},[2897,6340,4652],{"class":3188},[2897,6342,3192],{"class":3181},[2897,6344,3195],{"class":3181},[2897,6346,6347,6350,6352,6354],{"class":2899,"line":3198},[2897,6348,6349],{"class":3188},"    sharedPrerenderData",[2897,6351,3192],{"class":3181},[2897,6353,4300],{"class":4299},[2897,6355,3210],{"class":3181},[2897,6357,6358],{"class":2899,"line":3213},[2897,6359,3216],{"class":3181},[2897,6361,6362,6364],{"class":2899,"line":3219},[2897,6363,3406],{"class":3181},[2897,6365,3409],{"class":3177},[2858,6367,6369,6370,3634,6372,6374,6375,3634,6377],{"id":6368},"default-data-and-error-values-in-useasyncdata-and-usefetch","Default ",[2875,6371,4148],{},[2875,6373,4151],{}," values in ",[2875,6376,515],{},[2875,6378,527],{},[2863,6380,3573,6381,4697],{},[3119,6382,3576],{},[3594,6384,3597],{"id":6385},"what-changed-10",[2863,6387,6388,3634,6390,6392,6393,6395,6396,3110],{},[2875,6389,4148],{},[2875,6391,4151],{}," objects returned from ",[2875,6394,515],{}," will now default to ",[2875,6397,6398],{},"undefined",[3594,6400,3859],{"id":6401},"reasons-for-change-7",[2863,6403,6404,6405,6407,6408,6411,6412,3420,6414,6416,6417,6407,6419,6421],{},"Previously ",[2875,6406,4148],{}," was initialized to ",[2875,6409,6410],{},"null"," but reset in ",[2875,6413,650],{},[2875,6415,6398],{},". ",[2875,6418,4151],{},[2875,6420,6410],{},". This change is to bring greater consistency.",[3594,6423,3901],{"id":6424},"migration-steps-11",[2863,6426,6427,6428,3945,6431,6434,6435,6437,6438,6440],{},"If you were checking if ",[2875,6429,6430],{},"data.value",[2875,6432,6433],{},"error.value"," were ",[2875,6436,6410],{},", you can update these checks to check for ",[2875,6439,6398],{}," instead.",[3987,6442,6443],{},[2863,6444,6445,6446],{},"You can automate this step by running ",[2875,6447,6448],{},"npx codemod@latest nuxt/4/default-data-error-value",[2863,6450,6451],{},"If you encounter any issues you can revert back to the previous behavior with:",[2887,6453,6455],{"className":3156,"code":6454,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  experimental: {\n    defaults: {\n      useAsyncData: {\n        value: 'null',\n        errorValue: 'null',\n      },\n    },\n  },\n})\n",[2875,6456,6457,6469,6477,6486,6495,6510,6525,6530,6534,6538],{"__ignoreMap":2893},[2897,6458,6459,6461,6463,6465,6467],{"class":2899,"line":2900},[2897,6460,3167],{"class":3166},[2897,6462,3170],{"class":3166},[2897,6464,3174],{"class":3173},[2897,6466,3178],{"class":3177},[2897,6468,3182],{"class":3181},[2897,6470,6471,6473,6475],{"class":2899,"line":3185},[2897,6472,4652],{"class":3188},[2897,6474,3192],{"class":3181},[2897,6476,3195],{"class":3181},[2897,6478,6479,6482,6484],{"class":2899,"line":3198},[2897,6480,6481],{"class":3188},"    defaults",[2897,6483,3192],{"class":3181},[2897,6485,3195],{"class":3181},[2897,6487,6488,6491,6493],{"class":2899,"line":3213},[2897,6489,6490],{"class":3188},"      useAsyncData",[2897,6492,3192],{"class":3181},[2897,6494,3195],{"class":3181},[2897,6496,6497,6500,6502,6504,6506,6508],{"class":2899,"line":3219},[2897,6498,6499],{"class":3188},"        value",[2897,6501,3192],{"class":3181},[2897,6503,4066],{"class":3181},[2897,6505,6410],{"class":2907},[2897,6507,4071],{"class":3181},[2897,6509,3210],{"class":3181},[2897,6511,6512,6515,6517,6519,6521,6523],{"class":2899,"line":3226},[2897,6513,6514],{"class":3188},"        errorValue",[2897,6516,3192],{"class":3181},[2897,6518,4066],{"class":3181},[2897,6520,6410],{"class":2907},[2897,6522,4071],{"class":3181},[2897,6524,3210],{"class":3181},[2897,6526,6527],{"class":2899,"line":3232},[2897,6528,6529],{"class":3181},"      },\n",[2897,6531,6532],{"class":2899,"line":3238},[2897,6533,4516],{"class":3181},[2897,6535,6536],{"class":2899,"line":3244},[2897,6537,3216],{"class":3181},[2897,6539,6540,6542],{"class":2899,"line":3250},[2897,6541,3406],{"class":3181},[2897,6543,3409],{"class":3177},[2863,6545,6546],{},"Please report an issue if you are doing this, as we do not plan to keep this as configurable.",[2858,6548,6550,6551,6554,6555,6558,6559,6562,6563,3634,6565],{"id":6549},"removal-of-deprecated-boolean-values-for-dedupe-option-when-calling-refresh-in-useasyncdata-and-usefetch","Removal of deprecated ",[2875,6552,6553],{},"boolean"," values for ",[2875,6556,6557],{},"dedupe"," option when calling ",[2875,6560,6561],{},"refresh"," in ",[2875,6564,515],{},[2875,6566,527],{},[2863,6568,3573,6569,4697],{},[3119,6570,3576],{},[3594,6572,3597],{"id":6573},"what-changed-11",[2863,6575,6576,6577,3420,6580,6582,6583,4391,6586,6589,6590,4391,6593,5015],{},"Previously it was possible to pass ",[2875,6578,6579],{},"dedupe: boolean",[2875,6581,6561],{},". These were aliases of ",[2875,6584,6585],{},"cancel",[2875,6587,6588],{},"true",") and ",[2875,6591,6592],{},"defer",[2875,6594,6595],{},"false",[2887,6597,6600],{"className":6598,"code":6599,"filename":219,"language":3158,"meta":3159,"style":2893},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight twoslash lsp","// @errors: 2322\nconst { refresh } = await useAsyncData(() => Promise.resolve({ message: 'Hello, Nuxt!' }))\n\nasync function refreshData () {\n  await refresh({ dedupe: true })\n}\n",[2875,6601,6602,7171,7175,7217,7281,7285],{"__ignoreMap":2893},[2897,6603,6604,6606,6608,6611,6668,6670,6672,6674,6676,6678,6972,6974,6977,6979,6981,7009,7011,7129,7131,7133,7135,7157,7159,7161,7164,7166,7168],{"class":2899,"line":2900},[2897,6605,4235],{"class":4234},[2897,6607,4238],{"class":3181},[2897,6609,6610],{"class":3177}," ",[2897,6612,6613],{"class":3177},[6614,6615,6618,6620],"v-menu",{"class":6616,"popper-class":6617,"theme":3159},"twoslash-hover","shiki twoslash-floating vp-copy-ignore",[2897,6619,6561],{},[6621,6622,6624],"template",{"v-slot:popper":6623},"{}",[2897,6625,6627],{"class":6626,"v-pre":2893},"twoslash-popup-container vp-copy-ignore",[2875,6628,6630,6633,6637,6640,6642,6646,6649,6653,6655,6657,6660,6662,6665],{"class":6629},"twoslash-popup-code",[2897,6631,4235],{"style":6632},"--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA",[2897,6634,6636],{"style":6635},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8"," refresh",[2897,6638,3192],{"style":6639},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[2897,6641,4391],{"style":6639},[2897,6643,6645],{"style":6644},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic","opts",[2897,6647,6648],{"style":6639},"?:",[2897,6650,6652],{"style":6651},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B"," AsyncDataExecuteOptions",[2897,6654,4287],{"style":6639},[2897,6656,4272],{"style":6632},[2897,6658,6659],{"style":6651}," Promise",[2897,6661,5559],{"style":6639},[2897,6663,6664],{"style":6651},"void",[2897,6666,6667],{"style":6639},">",[2897,6669,6610],{"class":3177},[2897,6671,3406],{"class":3181},[2897,6673,4251],{"class":3181},[2897,6675,6183],{"class":3166},[2897,6677,6610],{"class":3173},[2897,6679,6680],{"class":3173},[6614,6681,6682,6684],{"class":6616,"popper-class":6617,"theme":3159},[2897,6683,515],{},[6621,6685,6686],{"v-slot:popper":6623},[2897,6687,6688,6922,6933],{"class":6626,"v-pre":2893},[2875,6689,6690],{"class":6629},[2887,6691,6695],{"class":6692,"style":6693,"tabindex":6694},"shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#babed8;--shiki-light-bg:#FAFAFA;--shiki-default-bg:#FAFAFA;--shiki-dark-bg:#292D3E","0",[2875,6696,6697,6708,6721,6733,6743,6753,6763,6784,6794,6808,6818,6824,6834,6842,6852,6874,6884],{},[2897,6698,6699,6701,6703,6705],{"class":2899},[2897,6700,4235],{"style":6632},[2897,6702,4254],{"style":6635},[2897,6704,3192],{"style":6639},[2897,6706,6707],{"style":6639}," \u003C{",[2897,6709,6710,6714,6716,6718],{"class":2899},[2897,6711,6713],{"style":6712},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178","    message",[2897,6715,3192],{"style":6639},[2897,6717,4400],{"style":6651},[2897,6719,6720],{"style":6639},";",[2897,6722,6723,6726,6729,6731],{"class":2899},[2897,6724,6725],{"style":6639},"},",[2897,6727,6728],{"style":6651}," unknown",[2897,6730,4266],{"style":6639},[2897,6732,4238],{"style":6639},[2897,6734,6735,6737,6739,6741],{"class":2899},[2897,6736,6713],{"style":6712},[2897,6738,3192],{"style":6639},[2897,6740,4400],{"style":6651},[2897,6742,6720],{"style":6639},[2897,6744,6745,6747,6750],{"class":2899},[2897,6746,6725],{"style":6639},[2897,6748,6749],{"style":6651}," KeysOf",[2897,6751,6752],{"style":6639},"\u003C{",[2897,6754,6755,6757,6759,6761],{"class":2899},[2897,6756,6713],{"style":6712},[2897,6758,3192],{"style":6639},[2897,6760,4400],{"style":6651},[2897,6762,6720],{"style":6639},[2897,6764,6765,6768,6771,6774,6777,6779,6782],{"class":2899},[2897,6766,6767],{"style":6639},"}>,",[2897,6769,6770],{"style":6651}," undefined",[2897,6772,6773],{"style":6639},">(",[2897,6775,6776],{"style":6644},"handler",[2897,6778,3192],{"style":6639},[2897,6780,6781],{"style":6651}," AsyncDataHandler",[2897,6783,6752],{"style":6639},[2897,6785,6786,6788,6790,6792],{"class":2899},[2897,6787,6713],{"style":6712},[2897,6789,3192],{"style":6639},[2897,6791,4400],{"style":6651},[2897,6793,6720],{"style":6639},[2897,6795,6796,6798,6801,6803,6806],{"class":2899},[2897,6797,6767],{"style":6639},[2897,6799,6800],{"style":6644}," options",[2897,6802,6648],{"style":6639},[2897,6804,6805],{"style":6651}," AsyncDataOptions",[2897,6807,6752],{"style":6639},[2897,6809,6810,6812,6814,6816],{"class":2899},[2897,6811,6713],{"style":6712},[2897,6813,3192],{"style":6639},[2897,6815,4400],{"style":6651},[2897,6817,6720],{"style":6639},[2897,6819,6820,6822],{"class":2899},[2897,6821,6725],{"style":6639},[2897,6823,4238],{"style":6639},[2897,6825,6826,6828,6830,6832],{"class":2899},[2897,6827,6713],{"style":6712},[2897,6829,3192],{"style":6639},[2897,6831,4400],{"style":6651},[2897,6833,6720],{"style":6639},[2897,6835,6836,6838,6840],{"class":2899},[2897,6837,6725],{"style":6639},[2897,6839,6749],{"style":6651},[2897,6841,6752],{"style":6639},[2897,6843,6844,6846,6848,6850],{"class":2899},[2897,6845,6713],{"style":6712},[2897,6847,3192],{"style":6639},[2897,6849,4400],{"style":6651},[2897,6851,6720],{"style":6639},[2897,6853,6854,6856,6858,6860,6863,6865,6867,6869,6872],{"class":2899},[2897,6855,6767],{"style":6639},[2897,6857,6770],{"style":6651},[2897,6859,6667],{"style":6639},[2897,6861,6862],{"style":6639}," |",[2897,6864,6770],{"style":6651},[2897,6866,4287],{"style":6639},[2897,6868,4272],{"style":6632},[2897,6870,6871],{"style":6651}," AsyncData",[2897,6873,6752],{"style":6639},[2897,6875,6876,6878,6880,6882],{"class":2899},[2897,6877,6713],{"style":6712},[2897,6879,3192],{"style":6639},[2897,6881,4400],{"style":6651},[2897,6883,6720],{"style":6639},[2897,6885,6886,6888,6890,6892,6894,6897,6899,6902,6904,6906,6908,6910,6913,6917,6920],{"class":2899},[2897,6887,3406],{"style":6639},[2897,6889,6862],{"style":6639},[2897,6891,6770],{"style":6651},[2897,6893,4266],{"style":6639},[2897,6895,6896],{"style":6651}," NuxtError",[2897,6898,5559],{"style":6639},[2897,6900,6901],{"style":6651},"unknown",[2897,6903,6667],{"style":6639},[2897,6905,6862],{"style":6639},[2897,6907,6770],{"style":6651},[2897,6909,6667],{"style":6639},[2897,6911,6912],{"style":6635}," (+",[2897,6914,6916],{"style":6915},"--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C","3",[2897,6918,6919],{"style":6651}," overloads",[2897,6921,4287],{"style":6635},[5562,6923,6925,6928],{"class":6924},"twoslash-popup-docs prose prose-primary dark:prose-invert",[2863,6926,6927],{},"Provides access to data that resolves asynchronously in an SSR-friendly composable.\nSee",[2863,6929,6930],{},[2867,6931,6932],{"href":6932},"https://nuxt.com/docs/4.x/api/composables/use-async-data",[5562,6934,6936,6947,6962],{"class":6935},"twoslash-popup-docs twoslash-popup-docs-tags prose prose-primary dark:prose-invert",[2897,6937,6939,6943],{"class":6938},"twoslash-popup-docs-tag",[2897,6940,6942],{"class":6941},"twoslash-popup-docs-tag-name","@since",[2897,6944,6946],{"class":6945},"twoslash-popup-docs-tag-value","3.0.0",[2897,6948,6949,6952],{"class":6938},[2897,6950,6951],{"class":6941},"@param",[2897,6953,6954,6956,6957,3945,6959,6961],{"class":6945},[2875,6955,6776],{},"  An asynchronous function that must return a truthy value (for example, it should not be ",[2875,6958,6398],{},[2875,6960,6410],{},") or the request may be duplicated on the client side.",[2897,6963,6964,6966],{"class":6938},[2897,6965,6951],{"class":6941},[2897,6967,6968,6971],{"class":6945},[2875,6969,6970],{},"options","  customize the behavior of useAsyncData",[2897,6973,3178],{"class":3177},[2897,6975,6976],{"class":3181},"()",[2897,6978,4272],{"class":4234},[2897,6980,6610],{"class":2903},[2897,6982,6983],{"class":2903},[6614,6984,6985,6988],{"class":6616,"popper-class":6617,"theme":3159},[2897,6986,6987],{},"Promise",[6621,6989,6990],{"v-slot:popper":6623},[2897,6991,6992,7004],{"class":6626,"v-pre":2893},[2875,6993,6994,6997,6999,7001],{"class":6629},[2897,6995,6996],{"style":6632},"var",[2897,6998,6659],{"style":6635},[2897,7000,3192],{"style":6639},[2897,7002,7003],{"style":6651}," PromiseConstructor",[5562,7005,7006],{"class":6924},[2863,7007,7008],{},"Represents the completion of an asynchronous operation",[2897,7010,3110],{"class":3181},[2897,7012,7013],{"class":3173},[6614,7014,7015,7018],{"class":6616,"popper-class":6617,"theme":3159},[2897,7016,7017],{},"resolve",[6621,7019,7020],{"v-slot:popper":6623},[2897,7021,7022,7105,7110],{"class":6626,"v-pre":2893},[2875,7023,7024],{"class":6629},[2887,7025,7026],{"class":6692,"style":6693,"tabindex":6694},[2875,7027,7028,7040,7050,7062,7072,7081,7091],{},[2897,7029,7030,7033,7035,7038],{"class":2899},[2897,7031,7032],{"style":6635},"(method) PromiseConstructor",[2897,7034,3110],{"style":6639},[2897,7036,7017],{"style":7037},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[2897,7039,6752],{"style":6639},[2897,7041,7042,7044,7046,7048],{"class":2899},[2897,7043,6713],{"style":6712},[2897,7045,3192],{"style":6639},[2897,7047,4400],{"style":6651},[2897,7049,6720],{"style":6639},[2897,7051,7052,7055,7058,7060],{"class":2899},[2897,7053,7054],{"style":6639},"}>(",[2897,7056,7057],{"style":6644},"value",[2897,7059,3192],{"style":6639},[2897,7061,4238],{"style":6639},[2897,7063,7064,7066,7068,7070],{"class":2899},[2897,7065,6713],{"style":6712},[2897,7067,3192],{"style":6639},[2897,7069,4400],{"style":6651},[2897,7071,6720],{"style":6639},[2897,7073,7074,7077,7079],{"class":2899},[2897,7075,7076],{"style":6639},"}):",[2897,7078,6659],{"style":6651},[2897,7080,6752],{"style":6639},[2897,7082,7083,7085,7087,7089],{"class":2899},[2897,7084,6713],{"style":6712},[2897,7086,3192],{"style":6639},[2897,7088,4400],{"style":6651},[2897,7090,6720],{"style":6639},[2897,7092,7093,7096,7098,7101,7103],{"class":2899},[2897,7094,7095],{"style":6639},"}>",[2897,7097,6912],{"style":6635},[2897,7099,7100],{"style":6915},"2",[2897,7102,6919],{"style":6651},[2897,7104,4287],{"style":6635},[5562,7106,7107],{"class":6924},[2863,7108,7109],{},"Creates a new resolved promise for the provided value.",[5562,7111,7112,7121],{"class":6935},[2897,7113,7114,7116],{"class":6938},[2897,7115,6951],{"class":6941},[2897,7117,7118,7120],{"class":6945},[2875,7119,7057],{},"  A promise.",[2897,7122,7123,7126],{"class":6938},[2897,7124,7125],{"class":6941},"@returns",[2897,7127,7128],{"class":6945},"A promise whose internal state matches the provided promise.",[2897,7130,3178],{"class":3177},[2897,7132,4483],{"class":3181},[2897,7134,6610],{"class":3188},[2897,7136,7137],{"class":3188},[6614,7138,7139,7142],{"class":6616,"popper-class":6617,"theme":3159},[2897,7140,7141],{},"message",[6621,7143,7144],{"v-slot:popper":6623},[2897,7145,7146],{"class":6626,"v-pre":2893},[2875,7147,7148,7151,7153,7155],{"class":6629},[2897,7149,7150],{"style":6635},"(property) ",[2897,7152,7141],{"style":6651},[2897,7154,3192],{"style":6639},[2897,7156,4400],{"style":6635},[2897,7158,3192],{"class":3181},[2897,7160,4066],{"class":3181},[2897,7162,7163],{"class":2907},"Hello, Nuxt!",[2897,7165,4071],{"class":3181},[2897,7167,4303],{"class":3181},[2897,7169,7170],{"class":3177},"))\n",[2897,7172,7173],{"class":2899,"line":3185},[2897,7174,4859],{"emptyLinePlaceholder":1196},[2897,7176,7177,7179,7181,7183,7213,7215],{"class":2899,"line":3198},[2897,7178,6190],{"class":4234},[2897,7180,4385],{"class":4234},[2897,7182,6610],{"class":3173},[2897,7184,7185],{"class":3173},[6614,7186,7187,7190],{"class":6616,"popper-class":6617,"theme":3159},[2897,7188,7189],{},"refreshData",[6621,7191,7192],{"v-slot:popper":6623},[2897,7193,7194],{"class":6626,"v-pre":2893},[2875,7195,7196,7199,7202,7205,7207,7209,7211],{"class":6629},[2897,7197,7198],{"style":6632},"function",[2897,7200,7201],{"style":7037}," refreshData",[2897,7203,7204],{"style":6639},"():",[2897,7206,6659],{"style":6651},[2897,7208,5559],{"style":6639},[2897,7210,6664],{"style":6651},[2897,7212,6667],{"style":6639},[2897,7214,4269],{"class":3181},[2897,7216,3195],{"class":3181},[2897,7218,7219,7222,7224,7262,7264,7266,7268,7273,7275,7277,7279],{"class":2899,"line":3213},[2897,7220,7221],{"class":3166},"  await",[2897,7223,6610],{"class":3173},[2897,7225,7226],{"class":3173},[6614,7227,7228,7230],{"class":6616,"popper-class":6617,"theme":3159},[2897,7229,6561],{},[6621,7231,7232],{"v-slot:popper":6623},[2897,7233,7234],{"class":6626,"v-pre":2893},[2875,7235,7236,7238,7240,7242,7244,7246,7248,7250,7252,7254,7256,7258,7260],{"class":6629},[2897,7237,4235],{"style":6632},[2897,7239,6636],{"style":6635},[2897,7241,3192],{"style":6639},[2897,7243,4391],{"style":6639},[2897,7245,6645],{"style":6644},[2897,7247,6648],{"style":6639},[2897,7249,6652],{"style":6651},[2897,7251,4287],{"style":6639},[2897,7253,4272],{"style":6632},[2897,7255,6659],{"style":6651},[2897,7257,5559],{"style":6639},[2897,7259,6664],{"style":6651},[2897,7261,6667],{"style":6639},[2897,7263,3178],{"class":3188},[2897,7265,4483],{"class":3181},[2897,7267,6610],{"class":3188},[2897,7269,7271],{"class":7270},"twoslash-error",[2897,7272,6557],{"class":3188},[2897,7274,3192],{"class":3181},[2897,7276,4361],{"class":4299},[2897,7278,4303],{"class":3181},[2897,7280,3409],{"class":3188},[5562,7282,7284],{"class":7283},"twoslash-meta-line twoslash-error-line vp-copy-ignore","Type 'true' is not assignable to type '\"cancel\" | \"defer\" | undefined'.",[2897,7286,7287],{"class":2899,"line":3219},[2897,7288,4526],{"class":3181},[3594,7290,3859],{"id":7291},"reasons-for-change-8",[2863,7293,7294],{},"These aliases were removed, for greater clarity.",[2863,7296,7297,7298,7300,7301,7303,7304,3110],{},"The issue came up when adding ",[2875,7299,6557],{}," as an option to ",[2875,7302,515],{},", and we removed the boolean values as they ended up being ",[2982,7305,7306],{},"opposites",[2863,7308,7309,7312,7313,7319,7320,7323,7324,7326,7327,7330,7331,7336],{},[2875,7310,7311],{},"refresh({ dedupe: false })"," meant ",[3119,7314,7315,7316,7318],{},"do not ",[2982,7317,6585],{}," existing requests in favour of this new one",". But passing ",[2875,7321,7322],{},"dedupe: true"," within the options of ",[2875,7325,515],{}," means ",[3119,7328,7329],{},"do not make any new requests if there is an existing pending request."," (See ",[2867,7332,7335],{"href":7333,"rel":7334},"https://github.com/nuxt/nuxt/pull/24564#pullrequestreview-1764584361",[2871],"PR",".)",[3594,7338,3901],{"id":7339},"migration-steps-12",[2863,7341,5034],{},[2887,7343,7345],{"className":4537,"code":7344,"language":4539,"meta":2893,"style":2893},"  const { refresh } = await useAsyncData(async () => ({ message: 'Hello, Nuxt 3!' }))\n  \n  async function refreshData () {\n-   await refresh({ dedupe: true })\n+   await refresh({ dedupe: 'cancel' })\n\n-   await refresh({ dedupe: false })\n+   await refresh({ dedupe: 'defer' })\n  }\n",[2875,7346,7347,7352,7356,7361,7368,7375,7379,7386,7393],{"__ignoreMap":2893},[2897,7348,7349],{"class":2899,"line":2900},[2897,7350,7351],{"class":3177},"  const { refresh } = await useAsyncData(async () => ({ message: 'Hello, Nuxt 3!' }))\n",[2897,7353,7354],{"class":2899,"line":3185},[2897,7355,5049],{"class":3177},[2897,7357,7358],{"class":2899,"line":3198},[2897,7359,7360],{"class":3177},"  async function refreshData () {\n",[2897,7362,7363,7365],{"class":2899,"line":3213},[2897,7364,4551],{"class":3181},[2897,7366,7367],{"class":3188},"   await refresh({ dedupe: true })\n",[2897,7369,7370,7372],{"class":2899,"line":3219},[2897,7371,4573],{"class":3181},[2897,7373,7374],{"class":2907},"   await refresh({ dedupe: 'cancel' })\n",[2897,7376,7377],{"class":2899,"line":3226},[2897,7378,4859],{"emptyLinePlaceholder":1196},[2897,7380,7381,7383],{"class":2899,"line":3232},[2897,7382,4551],{"class":3181},[2897,7384,7385],{"class":3188},"   await refresh({ dedupe: false })\n",[2897,7387,7388,7390],{"class":2899,"line":3238},[2897,7389,4573],{"class":3181},[2897,7391,7392],{"class":2907},"   await refresh({ dedupe: 'defer' })\n",[2897,7394,7395],{"class":2899,"line":3244},[2897,7396,4568],{"class":3177},[3987,7398,7399],{},[2863,7400,6445,7401],{},[2875,7402,7403],{},"npx codemod@latest nuxt/4/deprecated-dedupe-value",[2858,7405,7407,7408,6562,7410,3634,7412],{"id":7406},"respect-defaults-when-clearing-data-in-useasyncdata-and-usefetch","Respect defaults when clearing ",[2875,7409,4148],{},[2875,7411,515],{},[2875,7413,527],{},[2863,7415,3573,7416,4697],{},[3119,7417,3576],{},[3594,7419,3597],{"id":7420},"what-changed-12",[2863,7422,7423,7424,7426,7427,7429,7430,3945,7433,7435],{},"If you provide a custom ",[2875,7425,4170],{}," value for ",[2875,7428,515],{},", this will now be used when calling ",[2875,7431,7432],{},"clear",[2875,7434,650],{}," and it will be reset to its default value rather than simply unset.",[3594,7437,3859],{"id":7438},"reasons-for-change-9",[2863,7440,7441,7442,7444,7445,7447],{},"Often users set an appropriately empty value, such as an empty array, to avoid the need to check for ",[2875,7443,6410],{},"/",[2875,7446,6398],{}," when iterating over it. This should be respected when resetting/clearing the data.",[3594,7449,3901],{"id":7450},"migration-steps-13",[2863,7452,7453],{},"If you encounter any issues you can revert back to the previous behavior, for now, with:",[2887,7455,7457],{"className":3156,"code":7456,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  experimental: {\n    resetAsyncDataToUndefined: true,\n  },\n})\n",[2875,7458,7459,7471,7479,7490,7494],{"__ignoreMap":2893},[2897,7460,7461,7463,7465,7467,7469],{"class":2899,"line":2900},[2897,7462,3167],{"class":3166},[2897,7464,3170],{"class":3166},[2897,7466,3174],{"class":3173},[2897,7468,3178],{"class":3177},[2897,7470,3182],{"class":3181},[2897,7472,7473,7475,7477],{"class":2899,"line":3185},[2897,7474,4652],{"class":3188},[2897,7476,3192],{"class":3181},[2897,7478,3195],{"class":3181},[2897,7480,7481,7484,7486,7488],{"class":2899,"line":3198},[2897,7482,7483],{"class":3188},"    resetAsyncDataToUndefined",[2897,7485,3192],{"class":3181},[2897,7487,4361],{"class":4299},[2897,7489,3210],{"class":3181},[2897,7491,7492],{"class":2899,"line":3213},[2897,7493,3216],{"class":3181},[2897,7495,7496,7498],{"class":2899,"line":3219},[2897,7497,3406],{"class":3181},[2897,7499,3409],{"class":3177},[2863,7501,7502],{},"Please report an issue if you are doing so, as we do not plan to keep this as configurable.",[2858,7504,7506,7507,7510,7511,3634,7513],{"id":7505},"alignment-of-pending-value-in-useasyncdata-and-usefetch","Alignment of ",[2875,7508,7509],{},"pending"," value in ",[2875,7512,515],{},[2875,7514,527],{},[2863,7516,3573,7517,6089],{},[3119,7518,3576],{},[2863,7520,7521,7522,7524,7525,3630,7527,3630,7529,3634,7531,7533,7534,7536,7537,7539],{},"The ",[2875,7523,7509],{}," object returned from ",[2875,7526,515],{},[2875,7528,527],{},[2875,7530,543],{},[2875,7532,547],{}," is now a computed property that is ",[2875,7535,6588],{}," only when ",[2875,7538,4154],{}," is also pending.",[3594,7541,3597],{"id":7542},"what-changed-13",[2863,7544,7545,7546,7549,7550,7552,7553,7555,7556,7558,7559,7561],{},"Now, when ",[2875,7547,7548],{},"immediate: false"," is passed, ",[2875,7551,7509],{}," will be ",[2875,7554,6595],{}," until the first request is made. This is a change from the previous behavior, where ",[2875,7557,7509],{}," was always ",[2875,7560,6588],{}," until the first request was made.",[3594,7563,3859],{"id":7564},"reasons-for-change-10",[2863,7566,7567,7568,7570,7571,7573,7574,7576],{},"This aligns the meaning of ",[2875,7569,7509],{}," with the ",[2875,7572,4154],{}," property, which is also ",[2875,7575,7509],{}," when the request is in progress.",[3594,7578,3901],{"id":7579},"migration-steps-14",[2863,7581,7582,7583,7585,7586,7588,7589,7591],{},"If you rely on the ",[2875,7584,7509],{}," property, ensure that your logic accounts for the new behavior where ",[2875,7587,7509],{}," will only be ",[2875,7590,6588],{}," when the status is also pending.",[2887,7593,7595],{"className":4537,"code":7594,"language":4539,"meta":2893,"style":2893},"  \u003Ctemplate>\n-   \u003Cdiv v-if=\"!pending\">\n+   \u003Cdiv v-if=\"status === 'success'\">\n      \u003Cp>Data: {{ data }}\u003C/p>\n    \u003C/div>\n    \u003Cdiv v-else>\n      \u003Cp>Loading...\u003C/p>\n    \u003C/div>\n  \u003C/template>\n  \u003Cscript setup lang=\"ts\">\n  const { data, pending, execute, status } = await useAsyncData(() => fetch('/api/data'), {\n    immediate: false\n  })\n  onMounted(() => execute())\n  \u003C/script>\n",[2875,7596,7597,7602,7609,7616,7621,7626,7631,7636,7640,7645,7649,7654,7659,7663,7668],{"__ignoreMap":2893},[2897,7598,7599],{"class":2899,"line":2900},[2897,7600,7601],{"class":3177},"  \u003Ctemplate>\n",[2897,7603,7604,7606],{"class":2899,"line":3185},[2897,7605,4551],{"class":3181},[2897,7607,7608],{"class":3188},"   \u003Cdiv v-if=\"!pending\">\n",[2897,7610,7611,7613],{"class":2899,"line":3198},[2897,7612,4573],{"class":3181},[2897,7614,7615],{"class":2907},"   \u003Cdiv v-if=\"status === 'success'\">\n",[2897,7617,7618],{"class":2899,"line":3213},[2897,7619,7620],{"class":3177},"      \u003Cp>Data: {{ data }}\u003C/p>\n",[2897,7622,7623],{"class":2899,"line":3219},[2897,7624,7625],{"class":3177},"    \u003C/div>\n",[2897,7627,7628],{"class":2899,"line":3226},[2897,7629,7630],{"class":3177},"    \u003Cdiv v-else>\n",[2897,7632,7633],{"class":2899,"line":3232},[2897,7634,7635],{"class":3177},"      \u003Cp>Loading...\u003C/p>\n",[2897,7637,7638],{"class":2899,"line":3238},[2897,7639,7625],{"class":3177},[2897,7641,7642],{"class":2899,"line":3244},[2897,7643,7644],{"class":3177},"  \u003C/template>\n",[2897,7646,7647],{"class":2899,"line":3250},[2897,7648,5747],{"class":3177},[2897,7650,7651],{"class":2899,"line":3256},[2897,7652,7653],{"class":3177},"  const { data, pending, execute, status } = await useAsyncData(() => fetch('/api/data'), {\n",[2897,7655,7656],{"class":2899,"line":3262},[2897,7657,7658],{"class":3177},"    immediate: false\n",[2897,7660,7661],{"class":2899,"line":3268},[2897,7662,5771],{"class":3177},[2897,7664,7665],{"class":2899,"line":3274},[2897,7666,7667],{"class":3177},"  onMounted(() => execute())\n",[2897,7669,7670],{"class":2899,"line":3280},[2897,7671,5794],{"class":3177},[2863,7673,7674],{},"Alternatively, you can temporarily revert to the previous behavior with:",[2887,7676,7678],{"className":3156,"code":7677,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  experimental: {\n    pendingWhenIdle: true,\n  },\n})\n",[2875,7679,7680,7692,7700,7711,7715],{"__ignoreMap":2893},[2897,7681,7682,7684,7686,7688,7690],{"class":2899,"line":2900},[2897,7683,3167],{"class":3166},[2897,7685,3170],{"class":3166},[2897,7687,3174],{"class":3173},[2897,7689,3178],{"class":3177},[2897,7691,3182],{"class":3181},[2897,7693,7694,7696,7698],{"class":2899,"line":3185},[2897,7695,4652],{"class":3188},[2897,7697,3192],{"class":3181},[2897,7699,3195],{"class":3181},[2897,7701,7702,7705,7707,7709],{"class":2899,"line":3198},[2897,7703,7704],{"class":3188},"    pendingWhenIdle",[2897,7706,3192],{"class":3181},[2897,7708,4361],{"class":4299},[2897,7710,3210],{"class":3181},[2897,7712,7713],{"class":2899,"line":3213},[2897,7714,3216],{"class":3181},[2897,7716,7717,7719],{"class":2899,"line":3219},[2897,7718,3406],{"class":3181},[2897,7720,3409],{"class":3177},[2858,7722,7724,7725,3634,7727],{"id":7723},"key-change-behavior-in-useasyncdata-and-usefetch","Key Change Behavior in ",[2875,7726,515],{},[2875,7728,527],{},[2863,7730,3573,7731,6089],{},[3119,7732,3576],{},[3594,7734,3597],{"id":7735},"what-changed-14",[2863,7737,7738,7739,3945,7741,7743,7744,7746,7747,7749],{},"When using reactive keys in ",[2875,7740,515],{},[2875,7742,527],{},", Nuxt automatically refetches data when the key changes. When ",[2875,7745,7548],{}," is set, ",[2875,7748,515],{}," will only fetch data when the key changes if the data has already been fetched once.",[2863,7751,7752,7753,7755],{},"Previously, ",[2875,7754,527],{}," had slightly different behavior. It would always fetch data when the key changed.",[2863,7757,7758,7759,3634,7761,7763],{},"Now, ",[2875,7760,527],{},[2875,7762,515],{}," behave consistently - by only fetch data when the key changes if the data has already been fetched once.",[3594,7765,3859],{"id":7766},"reasons-for-change-11",[2863,7768,7769,7770,3634,7772,7774,7775,7777,7778,3945,7780,7783,7784,3945,7786,3110],{},"This ensures consistent behavior between ",[2875,7771,515],{},[2875,7773,527],{},", and prevents unexpected fetches. If you have set ",[2875,7776,7548],{},", then you must call ",[2875,7779,6561],{},[2875,7781,7782],{},"execute"," or data will never be fetched in ",[2875,7785,527],{},[2875,7787,515],{},[3594,7789,3901],{"id":7790},"migration-steps-15",[2863,7792,7793,7794,7796],{},"This change should generally improve the expected behavior, but if you were expecting changing the key or options of a non-immediate ",[2875,7795,527],{},", you now will need to trigger it manually the first time.",[2887,7798,7800],{"className":4537,"code":7799,"language":4539,"meta":2893,"style":2893},"  const id = ref('123')\n  const { data, execute } = await useFetch('/api/test', {\n    query: { id },\n    immediate: false\n  )\n+ watch(id, () => execute(), { once: true })\n",[2875,7801,7802,7807,7812,7817,7821,7825],{"__ignoreMap":2893},[2897,7803,7804],{"class":2899,"line":2900},[2897,7805,7806],{"class":3177},"  const id = ref('123')\n",[2897,7808,7809],{"class":2899,"line":3185},[2897,7810,7811],{"class":3177},"  const { data, execute } = await useFetch('/api/test', {\n",[2897,7813,7814],{"class":2899,"line":3198},[2897,7815,7816],{"class":3177},"    query: { id },\n",[2897,7818,7819],{"class":2899,"line":3213},[2897,7820,7658],{"class":3177},[2897,7822,7823],{"class":2899,"line":3219},[2897,7824,4521],{"class":3177},[2897,7826,7827,7829],{"class":2899,"line":3226},[2897,7828,4573],{"class":3181},[2897,7830,7831],{"class":2907}," watch(id, () => execute(), { once: true })\n",[2863,7833,7834],{},"To opt out of this behavior:",[2887,7836,7838],{"className":3156,"code":7837,"language":3158,"meta":2893,"style":2893},"// Or globally in your Nuxt config\nexport default defineNuxtConfig({\n  experimental: {\n    alwaysRunFetchOnKeyChange: true,\n  },\n})\n",[2875,7839,7840,7845,7857,7865,7876,7880],{"__ignoreMap":2893},[2897,7841,7842],{"class":2899,"line":2900},[2897,7843,7844],{"class":3222},"// Or globally in your Nuxt config\n",[2897,7846,7847,7849,7851,7853,7855],{"class":2899,"line":3185},[2897,7848,3167],{"class":3166},[2897,7850,3170],{"class":3166},[2897,7852,3174],{"class":3173},[2897,7854,3178],{"class":3177},[2897,7856,3182],{"class":3181},[2897,7858,7859,7861,7863],{"class":2899,"line":3198},[2897,7860,4652],{"class":3188},[2897,7862,3192],{"class":3181},[2897,7864,3195],{"class":3181},[2897,7866,7867,7870,7872,7874],{"class":2899,"line":3213},[2897,7868,7869],{"class":3188},"    alwaysRunFetchOnKeyChange",[2897,7871,3192],{"class":3181},[2897,7873,4361],{"class":4299},[2897,7875,3210],{"class":3181},[2897,7877,7878],{"class":2899,"line":3219},[2897,7879,3216],{"class":3181},[2897,7881,7882,7884],{"class":2899,"line":3226},[2897,7883,3406],{"class":3181},[2897,7885,3409],{"class":3177},[2858,7887,7889,7890,3634,7892],{"id":7888},"shallow-data-reactivity-in-useasyncdata-and-usefetch","Shallow Data Reactivity in ",[2875,7891,515],{},[2875,7893,527],{},[2863,7895,3573,7896,4697],{},[3119,7897,3576],{},[2863,7899,7521,7900,7524,7902,3630,7904,3630,7906,3634,7908,7910,7911,7914,7915,3110],{},[2875,7901,4148],{},[2875,7903,515],{},[2875,7905,527],{},[2875,7907,543],{},[2875,7909,547],{}," is now a ",[2875,7912,7913],{},"shallowRef"," rather than a ",[2875,7916,7917],{},"ref",[3594,7919,3597],{"id":7920},"what-changed-15",[2863,7922,7923,7924,7926,7927,7929],{},"When new data is fetched, anything depending on ",[2875,7925,4148],{}," will still be reactive because the entire object is replaced. But if your code changes a property ",[2982,7928,5692],{}," that data structure, this will not trigger any reactivity in your app.",[3594,7931,3859],{"id":7932},"reasons-for-change-12",[2863,7934,7935,7936,7939,7940,7942],{},"This brings a ",[3119,7937,7938],{},"significant"," performance improvement for deeply nested objects and arrays because Vue does not need to watch every single property/array for modification. In most cases, ",[2875,7941,4148],{}," should also be immutable.",[3594,7944,3901],{"id":7945},"migration-steps-16",[2863,7947,7948],{},"In most cases, no migration steps are required, but if you rely on the reactivity of the data object then you have two options:",[3861,7950,7951,7973],{},[3602,7952,7953,7954],{},"You can granularly opt in to deep reactivity on a per-composable basis:\n",[2887,7955,7957],{"className":4537,"code":7956,"language":4539,"meta":2893,"style":2893},"- const { data } = useFetch('/api/test')\n+ const { data } = useFetch('/api/test', { deep: true })\n",[2875,7958,7959,7966],{"__ignoreMap":2893},[2897,7960,7961,7963],{"class":2899,"line":2900},[2897,7962,4551],{"class":3181},[2897,7964,7965],{"class":3188}," const { data } = useFetch('/api/test')\n",[2897,7967,7968,7970],{"class":2899,"line":3185},[2897,7969,4573],{"class":3181},[2897,7971,7972],{"class":2907}," const { data } = useFetch('/api/test', { deep: true })\n",[3602,7974,7975,7976],{},"You can change the default behavior on a project-wide basis (not recommended):\n",[2887,7977,7979],{"className":3156,"code":7978,"filename":233,"language":3158,"meta":3159,"style":2893},"export default defineNuxtConfig({\n  experimental: {\n    defaults: {\n      useAsyncData: {\n        deep: true,\n      },\n    },\n  },\n})\n",[2875,7980,7981,7993,8001,8009,8017,8028,8032,8036,8040],{"__ignoreMap":2893},[2897,7982,7983,7985,7987,7989,7991],{"class":2899,"line":2900},[2897,7984,3167],{"class":3166},[2897,7986,3170],{"class":3166},[2897,7988,3174],{"class":3173},[2897,7990,3178],{"class":3177},[2897,7992,3182],{"class":3181},[2897,7994,7995,7997,7999],{"class":2899,"line":3185},[2897,7996,4652],{"class":3188},[2897,7998,3192],{"class":3181},[2897,8000,3195],{"class":3181},[2897,8002,8003,8005,8007],{"class":2899,"line":3198},[2897,8004,6481],{"class":3188},[2897,8006,3192],{"class":3181},[2897,8008,3195],{"class":3181},[2897,8010,8011,8013,8015],{"class":2899,"line":3213},[2897,8012,6490],{"class":3188},[2897,8014,3192],{"class":3181},[2897,8016,3195],{"class":3181},[2897,8018,8019,8022,8024,8026],{"class":2899,"line":3219},[2897,8020,8021],{"class":3188},"        deep",[2897,8023,3192],{"class":3181},[2897,8025,4361],{"class":4299},[2897,8027,3210],{"class":3181},[2897,8029,8030],{"class":2899,"line":3226},[2897,8031,6529],{"class":3181},[2897,8033,8034],{"class":2899,"line":3232},[2897,8035,4516],{"class":3181},[2897,8037,8038],{"class":2899,"line":3238},[2897,8039,3216],{"class":3181},[2897,8041,8042,8044],{"class":2899,"line":3244},[2897,8043,3406],{"class":3181},[2897,8045,3409],{"class":3177},[3987,8047,8048],{},[2863,8049,8050,8051],{},"If you need to, you can automate this step by running ",[2875,8052,8053],{},"npx codemod@latest nuxt/4/shallow-function-reactivity",[2858,8055,8057,8058],{"id":8056},"absolute-watch-paths-in-builderwatch","Absolute Watch Paths in ",[2875,8059,8060],{},"builder:watch",[2863,8062,3573,8063,4697],{},[3119,8064,3576],{},[3594,8066,3597],{"id":8067},"what-changed-16",[2863,8069,8070,8071,8073,8074,3110],{},"The Nuxt ",[2875,8072,8060],{}," hook now emits a path which is absolute rather than relative to your project ",[2875,8075,3607],{},[3594,8077,3859],{"id":8078},"reasons-for-change-13",[2863,8080,8081,8082,8084],{},"This allows us to support watching paths which are outside your ",[2875,8083,3607],{},", and offers better support for layers and other more complex patterns.",[3594,8086,3901],{"id":8087},"migration-steps-17",[2863,8089,8090,8091,3110],{},"We have already proactively migrated the public Nuxt modules which we are aware use this hook. See ",[2867,8092,8095],{"href":8093,"rel":8094},"https://github.com/nuxt/nuxt/issues/25339",[2871],"issue #25339",[2863,8097,8098,8099,8101],{},"However, if you are a module author using the ",[2875,8100,8060],{}," hook and wishing to remain backwards/forwards compatible, you can use the following code to ensure that your code works the same in both Nuxt v3 and Nuxt v4:",[2887,8103,8105],{"className":4537,"code":8104,"language":4539,"meta":2893,"style":2893},"+ import { relative, resolve } from 'node:fs'\n  // ...\n  nuxt.hook('builder:watch', async (event, path) => {\n+   path = relative(nuxt.options.srcDir, resolve(nuxt.options.srcDir, path))\n    // ...\n  })\n",[2875,8106,8107,8114,8119,8124,8131,8136],{"__ignoreMap":2893},[2897,8108,8109,8111],{"class":2899,"line":2900},[2897,8110,4573],{"class":3181},[2897,8112,8113],{"class":2907}," import { relative, resolve } from 'node:fs'\n",[2897,8115,8116],{"class":2899,"line":3185},[2897,8117,8118],{"class":3177},"  // ...\n",[2897,8120,8121],{"class":2899,"line":3198},[2897,8122,8123],{"class":3177},"  nuxt.hook('builder:watch', async (event, path) => {\n",[2897,8125,8126,8128],{"class":2899,"line":3213},[2897,8127,4573],{"class":3181},[2897,8129,8130],{"class":2907},"   path = relative(nuxt.options.srcDir, resolve(nuxt.options.srcDir, path))\n",[2897,8132,8133],{"class":2899,"line":3219},[2897,8134,8135],{"class":3177},"    // ...\n",[2897,8137,8138],{"class":2899,"line":3226},[2897,8139,5771],{"class":3177},[3987,8141,8142],{},[2863,8143,6445,8144],{},[2875,8145,8146],{},"npx codemod@latest nuxt/4/absolute-watch-path",[2858,8148,8150,8151,8154],{"id":8149},"removal-of-window__nuxt__-object","Removal of ",[2875,8152,8153],{},"window.__NUXT__"," object",[3594,8156,3597],{"id":8157},"what-changed-17",[2863,8159,8160,8161,8163],{},"We are removing the global ",[2875,8162,8153],{}," object after the app finishes hydration.",[3594,8165,3859],{"id":8166},"reasons-for-change-14",[2863,8168,8169,8170,8175,8176,3110],{},"This opens the way to multi-app patterns (",[2867,8171,8174],{"href":8172,"rel":8173},"https://github.com/nuxt/nuxt/issues/21635",[2871],"#21635",") and enables us to focus on a single way to access Nuxt app data - ",[2875,8177,8178],{},"useNuxtApp()",[3594,8180,3901],{"id":8181},"migration-steps-18",[2863,8183,8184,8185,3192],{},"The data is still available, but can be accessed with ",[2875,8186,8187],{},"useNuxtApp().payload",[2887,8189,8191],{"className":4537,"code":8190,"language":4539,"meta":2893,"style":2893},"- console.log(window.__NUXT__)\n+ console.log(useNuxtApp().payload)\n",[2875,8192,8193,8200],{"__ignoreMap":2893},[2897,8194,8195,8197],{"class":2899,"line":2900},[2897,8196,4551],{"class":3181},[2897,8198,8199],{"class":3188}," console.log(window.__NUXT__)\n",[2897,8201,8202,8204],{"class":2899,"line":3185},[2897,8203,4573],{"class":3181},[2897,8205,8206],{"class":2907}," console.log(useNuxtApp().payload)\n",[2858,8208,8210],{"id":8209},"directory-index-scanning","Directory index scanning",[2863,8212,3573,8213,6089],{},[3119,8214,3576],{},[3594,8216,3597],{"id":8217},"what-changed-18",[2863,8219,8220,8221,8223,8224,8227],{},"Child folders in your ",[2875,8222,3925],{}," folder are also scanned for ",[2875,8225,8226],{},"index"," files and these are now also registered as middleware in your project.",[3594,8229,3859],{"id":8230},"reasons-for-change-15",[2863,8232,8233,8234,3634,8236,3110],{},"Nuxt scans a number of folders automatically, including ",[2875,8235,3925],{},[2875,8237,3930],{},[2863,8239,8220,8240,8242,8243,8245],{},[2875,8241,3930],{}," folder are scanned for ",[2875,8244,8226],{}," files and we wanted to make this behavior consistent between scanned directories.",[3594,8247,3901],{"id":8248},"migration-steps-19",[2863,8250,8251],{},"Probably no migration is necessary but if you wish to revert to previous behavior you can add a hook to filter out these middleware:",[2887,8253,8255],{"className":3156,"code":8254,"language":3158,"meta":2893,"style":2893},"export default defineNuxtConfig({\n  hooks: {\n    'app:resolve' (app) {\n      app.middleware = app.middleware.filter(mw => !/\\/index\\.[^/]+$/.test(mw.path))\n    },\n  },\n})\n",[2875,8256,8257,8269,8278,8296,8367,8371,8375],{"__ignoreMap":2893},[2897,8258,8259,8261,8263,8265,8267],{"class":2899,"line":2900},[2897,8260,3167],{"class":3166},[2897,8262,3170],{"class":3166},[2897,8264,3174],{"class":3173},[2897,8266,3178],{"class":3177},[2897,8268,3182],{"class":3181},[2897,8270,8271,8274,8276],{"class":2899,"line":3185},[2897,8272,8273],{"class":3188},"  hooks",[2897,8275,3192],{"class":3181},[2897,8277,3195],{"class":3181},[2897,8279,8280,8283,8286,8288,8290,8292,8294],{"class":2899,"line":3198},[2897,8281,8282],{"class":3181},"    '",[2897,8284,8285],{"class":2907},"app:resolve",[2897,8287,4071],{"class":3181},[2897,8289,4391],{"class":3181},[2897,8291,1193],{"class":4394},[2897,8293,4287],{"class":3181},[2897,8295,3195],{"class":3181},[2897,8297,8298,8301,8303,8305,8307,8310,8312,8314,8316,8319,8321,8324,8326,8329,8331,8334,8336,8339,8342,8344,8347,8350,8352,8354,8357,8359,8361,8363,8365],{"class":2899,"line":3213},[2897,8299,8300],{"class":3177},"      app",[2897,8302,3110],{"class":3181},[2897,8304,157],{"class":3177},[2897,8306,4251],{"class":3181},[2897,8308,8309],{"class":3177}," app",[2897,8311,3110],{"class":3181},[2897,8313,157],{"class":3177},[2897,8315,3110],{"class":3181},[2897,8317,8318],{"class":3173},"filter",[2897,8320,3178],{"class":3188},[2897,8322,8323],{"class":4394},"mw",[2897,8325,4272],{"class":4234},[2897,8327,8328],{"class":3181}," !",[2897,8330,7444],{"class":3181},[2897,8332,8333],{"class":3177},"\\/",[2897,8335,8226],{"class":2907},[2897,8337,8338],{"class":3177},"\\.",[2897,8340,8341],{"class":3181},"[^",[2897,8343,7444],{"class":2907},[2897,8345,8346],{"class":3181},"]+",[2897,8348,8349],{"class":3166},"$",[2897,8351,7444],{"class":3181},[2897,8353,3110],{"class":3181},[2897,8355,8356],{"class":3173},"test",[2897,8358,3178],{"class":3188},[2897,8360,8323],{"class":3177},[2897,8362,3110],{"class":3181},[2897,8364,5007],{"class":3177},[2897,8366,7170],{"class":3188},[2897,8368,8369],{"class":2899,"line":3219},[2897,8370,4516],{"class":3181},[2897,8372,8373],{"class":2899,"line":3226},[2897,8374,3216],{"class":3181},[2897,8376,8377,8379],{"class":2899,"line":3232},[2897,8378,3406],{"class":3181},[2897,8380,3409],{"class":3177},[2858,8382,8384],{"id":8383},"template-compilation-changes","Template Compilation Changes",[2863,8386,3573,8387,4697],{},[3119,8388,3576],{},[3594,8390,3597],{"id":8391},"what-changed-19",[2863,8393,8394,8395,8398,8399,8402],{},"Previously, Nuxt used ",[2875,8396,8397],{},"lodash/template"," to compile templates located on the file system using the ",[2875,8400,8401],{},".ejs"," file format/syntax.",[2863,8404,8405,8406,3630,8409,3630,8412,8415],{},"In addition, we provided some template utilities (",[2875,8407,8408],{},"serialize",[2875,8410,8411],{},"importName",[2875,8413,8414],{},"importSources",") which could be used for code-generation within these templates, which are now being removed.",[3594,8417,3859],{"id":8418},"reasons-for-change-16",[2863,8420,8421,8422,8425],{},"In Nuxt v3 we moved to a 'virtual' syntax with a ",[2875,8423,8424],{},"getContents()"," function which is much more flexible and performant.",[2863,8427,8428,8429,8431,8432,8435],{},"In addition, ",[2875,8430,8397],{}," has had a succession of security issues. These do not really apply to Nuxt projects because it is being used at build-time, not runtime, and by trusted code. However, they still appear in security audits. Moreover, ",[2875,8433,8434],{},"lodash"," is a hefty dependency and is unused by most projects.",[2863,8437,8438,8439,8444],{},"Finally, providing code serialization functions directly within Nuxt is not ideal. Instead, we maintain projects like ",[2867,8440,8443],{"href":8441,"rel":8442},"https://github.com/unjs/knitwork",[2871],"unjs/knitwork"," which can be dependencies of your project, and where security issues can be reported/resolved directly without requiring an upgrade of Nuxt itself.",[3594,8446,3901],{"id":8447},"migration-steps-20",[2863,8449,8450],{},"We have raised PRs to update modules using EJS syntax, but if you need to do this yourself, you have three backwards/forwards-compatible alternatives:",[3599,8452,8453,8458,8465],{},[3602,8454,8455,8456,3110],{},"Moving your string interpolation logic directly into ",[2875,8457,8424],{},[3602,8459,8460,8461,3110],{},"Using a custom function to handle the replacement, such as in ",[2867,8462,8463],{"href":8463,"rel":8464},"https://github.com/nuxt-modules/color-mode/pull/240",[2871],[3602,8466,8467,8468,8471,8472,8475],{},"Use ",[2875,8469,8470],{},"es-toolkit/compat"," (a drop-in replacement for lodash template), as a dependency of ",[2982,8473,8474],{},"your"," project rather than Nuxt:",[2887,8477,8479],{"className":4537,"code":8478,"language":4539,"meta":2893,"style":2893},"+ import { readFileSync } from 'node:fs'\n+ import { template } from 'es-toolkit/compat'\n  // ...\n  addTemplate({\n    fileName: 'appinsights-vue.js'\n    options: { /* some options */ },\n-   src: resolver.resolve('./runtime/plugin.ejs'),\n+   getContents({ options }) {\n+     const contents = readFileSync(resolver.resolve('./runtime/plugin.ejs'), 'utf-8')\n+     return template(contents)({ options })\n+   },\n  })\n",[2875,8480,8481,8488,8495,8499,8504,8509,8514,8521,8528,8535,8542,8549],{"__ignoreMap":2893},[2897,8482,8483,8485],{"class":2899,"line":2900},[2897,8484,4573],{"class":3181},[2897,8486,8487],{"class":2907}," import { readFileSync } from 'node:fs'\n",[2897,8489,8490,8492],{"class":2899,"line":3185},[2897,8491,4573],{"class":3181},[2897,8493,8494],{"class":2907}," import { template } from 'es-toolkit/compat'\n",[2897,8496,8497],{"class":2899,"line":3198},[2897,8498,8118],{"class":3177},[2897,8500,8501],{"class":2899,"line":3213},[2897,8502,8503],{"class":3177},"  addTemplate({\n",[2897,8505,8506],{"class":2899,"line":3219},[2897,8507,8508],{"class":3177},"    fileName: 'appinsights-vue.js'\n",[2897,8510,8511],{"class":2899,"line":3226},[2897,8512,8513],{"class":3177},"    options: { /* some options */ },\n",[2897,8515,8516,8518],{"class":2899,"line":3232},[2897,8517,4551],{"class":3181},[2897,8519,8520],{"class":3188},"   src: resolver.resolve('./runtime/plugin.ejs'),\n",[2897,8522,8523,8525],{"class":2899,"line":3238},[2897,8524,4573],{"class":3181},[2897,8526,8527],{"class":2907},"   getContents({ options }) {\n",[2897,8529,8530,8532],{"class":2899,"line":3244},[2897,8531,4573],{"class":3181},[2897,8533,8534],{"class":2907},"     const contents = readFileSync(resolver.resolve('./runtime/plugin.ejs'), 'utf-8')\n",[2897,8536,8537,8539],{"class":2899,"line":3250},[2897,8538,4573],{"class":3181},[2897,8540,8541],{"class":2907},"     return template(contents)({ options })\n",[2897,8543,8544,8546],{"class":2899,"line":3256},[2897,8545,4573],{"class":3181},[2897,8547,8548],{"class":2907},"   },\n",[2897,8550,8551],{"class":2899,"line":3262},[2897,8552,5771],{"class":3177},[2863,8554,8555,8556,3630,8558,3630,8560,8562,8563,3192],{},"Finally, if you are using the template utilities (",[2875,8557,8408],{},[2875,8559,8411],{},[2875,8561,8414],{},"), you can replace them as follows with utilities from ",[2875,8564,8565],{},"knitwork",[2887,8567,8569],{"className":3156,"code":8568,"language":3158,"meta":2893,"style":2893},"import { genDynamicImport, genImport, genSafeVariableName } from 'knitwork'\n\nconst serialize = (data: any) => JSON.stringify(data, null, 2).replace(/\"\\{(.+)\\}\"(?=,?$)/gm, r => JSON.parse(r).replace(/^\\{(.*)\\}$/, '$1'))\n\nconst importSources = (sources: string | string[], { lazy = false } = {}) => {\n  return toArray(sources).map((src) => {\n    if (lazy) {\n      return `const ${genSafeVariableName(src)} = ${genDynamicImport(src, { comment: `webpackChunkName: ${JSON.stringify(src)}` })}`\n    }\n    return genImport(src, genSafeVariableName(src))\n  }).join('\\n')\n}\n\nconst importName = genSafeVariableName\n",[2875,8570,8571,8600,8604,8743,8747,8794,8825,8839,8905,8909,8930,8953,8957,8961],{"__ignoreMap":2893},[2897,8572,8573,8575,8577,8580,8582,8585,8587,8590,8592,8594,8596,8598],{"class":2899,"line":2900},[2897,8574,5329],{"class":3166},[2897,8576,4238],{"class":3181},[2897,8578,8579],{"class":3177}," genDynamicImport",[2897,8581,4266],{"class":3181},[2897,8583,8584],{"class":3177}," genImport",[2897,8586,4266],{"class":3181},[2897,8588,8589],{"class":3177}," genSafeVariableName",[2897,8591,4303],{"class":3181},[2897,8593,5344],{"class":3166},[2897,8595,4066],{"class":3181},[2897,8597,8565],{"class":2907},[2897,8599,5352],{"class":3181},[2897,8601,8602],{"class":2899,"line":3185},[2897,8603,4859],{"emptyLinePlaceholder":1196},[2897,8605,8606,8608,8611,8613,8615,8617,8619,8622,8624,8626,8629,8631,8634,8637,8639,8642,8645,8647,8649,8652,8654,8656,8658,8661,8663,8665,8668,8671,8673,8676,8678,8681,8683,8686,8689,8691,8694,8696,8698,8700,8703,8706,8708,8710,8712,8714,8717,8719,8721,8723,8726,8728,8730,8732,8734,8736,8739,8741],{"class":2899,"line":3198},[2897,8607,4235],{"class":4234},[2897,8609,8610],{"class":3177}," serialize ",[2897,8612,5568],{"class":3181},[2897,8614,4391],{"class":3181},[2897,8616,4148],{"class":4394},[2897,8618,3192],{"class":3181},[2897,8620,8621],{"class":2903}," any",[2897,8623,4287],{"class":3181},[2897,8625,4272],{"class":4234},[2897,8627,8628],{"class":3177}," JSON",[2897,8630,3110],{"class":3181},[2897,8632,8633],{"class":3173},"stringify",[2897,8635,8636],{"class":3177},"(data",[2897,8638,4266],{"class":3181},[2897,8640,8641],{"class":3181}," null,",[2897,8643,8644],{"class":3206}," 2",[2897,8646,4287],{"class":3177},[2897,8648,3110],{"class":3181},[2897,8650,8651],{"class":3173},"replace",[2897,8653,3178],{"class":3177},[2897,8655,7444],{"class":3181},[2897,8657,5571],{"class":2907},[2897,8659,8660],{"class":3177},"\\{",[2897,8662,3178],{"class":3181},[2897,8664,3110],{"class":2907},[2897,8666,8667],{"class":3181},"+)",[2897,8669,8670],{"class":3177},"\\}",[2897,8672,5571],{"class":2907},[2897,8674,8675],{"class":3181},"(?=",[2897,8677,4266],{"class":2907},[2897,8679,8680],{"class":3181},"?",[2897,8682,8349],{"class":3166},[2897,8684,8685],{"class":3181},")/",[2897,8687,8688],{"class":3206},"gm",[2897,8690,4266],{"class":3181},[2897,8692,8693],{"class":4394}," r",[2897,8695,4272],{"class":4234},[2897,8697,8628],{"class":3177},[2897,8699,3110],{"class":3181},[2897,8701,8702],{"class":3173},"parse",[2897,8704,8705],{"class":3177},"(r)",[2897,8707,3110],{"class":3181},[2897,8709,8651],{"class":3173},[2897,8711,3178],{"class":3177},[2897,8713,7444],{"class":3181},[2897,8715,8716],{"class":3166},"^",[2897,8718,8660],{"class":3177},[2897,8720,3178],{"class":3181},[2897,8722,3110],{"class":2907},[2897,8724,8725],{"class":3181},"*)",[2897,8727,8670],{"class":3177},[2897,8729,8349],{"class":3166},[2897,8731,7444],{"class":3181},[2897,8733,4266],{"class":3181},[2897,8735,4066],{"class":3181},[2897,8737,8738],{"class":2907},"$1",[2897,8740,4071],{"class":3181},[2897,8742,7170],{"class":3177},[2897,8744,8745],{"class":2899,"line":3213},[2897,8746,4859],{"emptyLinePlaceholder":1196},[2897,8748,8749,8751,8754,8756,8758,8761,8763,8765,8767,8769,8772,8774,8776,8779,8781,8783,8785,8787,8790,8792],{"class":2899,"line":3219},[2897,8750,4235],{"class":4234},[2897,8752,8753],{"class":3177}," importSources ",[2897,8755,5568],{"class":3181},[2897,8757,4391],{"class":3181},[2897,8759,8760],{"class":4394},"sources",[2897,8762,3192],{"class":3181},[2897,8764,4400],{"class":2903},[2897,8766,6862],{"class":3181},[2897,8768,4400],{"class":2903},[2897,8770,8771],{"class":3177},"[]",[2897,8773,4266],{"class":3181},[2897,8775,4238],{"class":3181},[2897,8777,8778],{"class":4394}," lazy",[2897,8780,4251],{"class":3181},[2897,8782,4300],{"class":4299},[2897,8784,4303],{"class":3181},[2897,8786,4251],{"class":3181},[2897,8788,8789],{"class":3181}," {})",[2897,8791,4272],{"class":4234},[2897,8793,3195],{"class":3181},[2897,8795,8796,8798,8801,8803,8805,8807,8809,8812,8814,8816,8819,8821,8823],{"class":2899,"line":3226},[2897,8797,4409],{"class":3166},[2897,8799,8800],{"class":3173}," toArray",[2897,8802,3178],{"class":3188},[2897,8804,8760],{"class":3177},[2897,8806,4287],{"class":3188},[2897,8808,3110],{"class":3181},[2897,8810,8811],{"class":3173},"map",[2897,8813,3178],{"class":3188},[2897,8815,3178],{"class":3181},[2897,8817,8818],{"class":4394},"src",[2897,8820,4287],{"class":3181},[2897,8822,4272],{"class":4234},[2897,8824,3195],{"class":3181},[2897,8826,8827,8830,8832,8835,8837],{"class":2899,"line":3232},[2897,8828,8829],{"class":3166},"    if",[2897,8831,4391],{"class":3188},[2897,8833,8834],{"class":3177},"lazy",[2897,8836,5942],{"class":3188},[2897,8838,3182],{"class":3181},[2897,8840,8841,8844,8847,8850,8852,8855,8858,8860,8863,8865,8868,8871,8873,8875,8878,8880,8882,8885,8887,8890,8892,8894,8896,8898,8900,8902],{"class":2899,"line":3238},[2897,8842,8843],{"class":3166},"      return",[2897,8845,8846],{"class":3181}," `",[2897,8848,8849],{"class":2907},"const ",[2897,8851,4425],{"class":3181},[2897,8853,8854],{"class":3173},"genSafeVariableName",[2897,8856,8857],{"class":3177},"(src)",[2897,8859,3406],{"class":3181},[2897,8861,8862],{"class":2907}," = ",[2897,8864,4425],{"class":3181},[2897,8866,8867],{"class":3173},"genDynamicImport",[2897,8869,8870],{"class":3177},"(src",[2897,8872,4266],{"class":3181},[2897,8874,4238],{"class":3181},[2897,8876,8877],{"class":3188}," comment",[2897,8879,3192],{"class":3181},[2897,8881,8846],{"class":3181},[2897,8883,8884],{"class":2907},"webpackChunkName: ",[2897,8886,4425],{"class":3181},[2897,8888,8889],{"class":3177},"JSON",[2897,8891,3110],{"class":3181},[2897,8893,8633],{"class":3173},[2897,8895,8857],{"class":3177},[2897,8897,4430],{"class":3181},[2897,8899,4303],{"class":3181},[2897,8901,4287],{"class":3177},[2897,8903,8904],{"class":3181},"}`\n",[2897,8906,8907],{"class":2899,"line":3244},[2897,8908,6028],{"class":3181},[2897,8910,8911,8914,8916,8918,8920,8922,8924,8926,8928],{"class":2899,"line":3250},[2897,8912,8913],{"class":3166},"    return",[2897,8915,8584],{"class":3173},[2897,8917,3178],{"class":3188},[2897,8919,8818],{"class":3177},[2897,8921,4266],{"class":3181},[2897,8923,8589],{"class":3173},[2897,8925,3178],{"class":3188},[2897,8927,8818],{"class":3177},[2897,8929,7170],{"class":3188},[2897,8931,8932,8935,8937,8939,8942,8944,8946,8949,8951],{"class":2899,"line":3256},[2897,8933,8934],{"class":3181},"  }",[2897,8936,4287],{"class":3188},[2897,8938,3110],{"class":3181},[2897,8940,8941],{"class":3173},"join",[2897,8943,3178],{"class":3188},[2897,8945,4071],{"class":3181},[2897,8947,8948],{"class":3177},"\\n",[2897,8950,4071],{"class":3181},[2897,8952,3409],{"class":3188},[2897,8954,8955],{"class":2899,"line":3262},[2897,8956,4526],{"class":3181},[2897,8958,8959],{"class":2899,"line":3268},[2897,8960,4859],{"emptyLinePlaceholder":1196},[2897,8962,8963,8965,8968,8970],{"class":2899,"line":3274},[2897,8964,4235],{"class":4234},[2897,8966,8967],{"class":3177}," importName ",[2897,8969,5568],{"class":3181},[2897,8971,8972],{"class":3177}," genSafeVariableName\n",[3987,8974,8975],{},[2863,8976,6445,8977],{},[2875,8978,8979],{},"npx codemod@latest nuxt/4/template-compilation-changes",[2858,8981,8983],{"id":8982},"default-typescript-configuration-changes","Default TypeScript Configuration Changes",[2863,8985,3573,8986,4697],{},[3119,8987,3576],{},[3594,8989,3597],{"id":8990},"what-changed-20",[2863,8992,8993,8996,8997,8999,9000,3110],{},[2875,8994,8995],{},"compilerOptions.noUncheckedIndexedAccess"," is now ",[2875,8998,6588],{}," instead of ",[2875,9001,6595],{},[3594,9003,3859],{"id":9004},"reasons-for-change-17",[2863,9006,9007,9008,9013,9014,3110],{},"This change is a follow up to a prior ",[2867,9009,9012],{"href":9010,"rel":9011},"https://github.com/nuxt/nuxt/pull/27485",[2871],"3.12 config update"," where we improved our defaults, mostly adhering to ",[2867,9015,9018],{"href":9016,"rel":9017},"https://www.totaltypescript.com/tsconfig-cheat-sheet",[2871],"TotalTypeScript's recommendations",[3594,9020,3901],{"id":9021},"migration-steps-21",[2863,9023,9024],{},"There are two approaches:",[3861,9026,9027,9030],{},[3602,9028,9029],{},"Run a typecheck on your app and fix any new errors (recommended).",[3602,9031,9032,9033,3192,9035],{},"Override the new default in your ",[2875,9034,233],{},[2887,9036,9038],{"className":3156,"code":9037,"language":3158,"meta":2893,"style":2893},"export default defineNuxtConfig({\n  typescript: {\n    tsConfig: {\n      compilerOptions: {\n        noUncheckedIndexedAccess: false,\n      },\n    },\n  },\n})\n",[2875,9039,9040,9052,9061,9070,9079,9090,9094,9098,9102],{"__ignoreMap":2893},[2897,9041,9042,9044,9046,9048,9050],{"class":2899,"line":2900},[2897,9043,3167],{"class":3166},[2897,9045,3170],{"class":3166},[2897,9047,3174],{"class":3173},[2897,9049,3178],{"class":3177},[2897,9051,3182],{"class":3181},[2897,9053,9054,9057,9059],{"class":2899,"line":3185},[2897,9055,9056],{"class":3188},"  typescript",[2897,9058,3192],{"class":3181},[2897,9060,3195],{"class":3181},[2897,9062,9063,9066,9068],{"class":2899,"line":3198},[2897,9064,9065],{"class":3188},"    tsConfig",[2897,9067,3192],{"class":3181},[2897,9069,3195],{"class":3181},[2897,9071,9072,9075,9077],{"class":2899,"line":3213},[2897,9073,9074],{"class":3188},"      compilerOptions",[2897,9076,3192],{"class":3181},[2897,9078,3195],{"class":3181},[2897,9080,9081,9084,9086,9088],{"class":2899,"line":3219},[2897,9082,9083],{"class":3188},"        noUncheckedIndexedAccess",[2897,9085,3192],{"class":3181},[2897,9087,4300],{"class":4299},[2897,9089,3210],{"class":3181},[2897,9091,9092],{"class":2899,"line":3226},[2897,9093,6529],{"class":3181},[2897,9095,9096],{"class":2899,"line":3232},[2897,9097,4516],{"class":3181},[2897,9099,9100],{"class":2899,"line":3238},[2897,9101,3216],{"class":3181},[2897,9103,9104,9106],{"class":2899,"line":3244},[2897,9105,3406],{"class":3181},[2897,9107,3409],{"class":3177},[2858,9109,9111],{"id":9110},"typescript-configuration-splitting","TypeScript Configuration Splitting",[2863,9113,3573,9114,4697],{},[3119,9115,3576],{},[3594,9117,3597],{"id":9118},"what-changed-21",[2863,9120,9121],{},"Nuxt now generates separate TypeScript configurations for different contexts to provide better type-checking experiences:",[3861,9123,9124,9165,9174,9180,9186],{},[3602,9125,9126,9129,9130],{},[3119,9127,9128],{},"New TypeScript configuration files",": Nuxt now generates additional TypeScript configurations:",[3599,9131,9132,9138,9144,9153,9159],{},[3602,9133,9134,9137],{},[2875,9135,9136],{},".nuxt/tsconfig.app.json"," - For your app code (Vue components, composables, etc.)",[3602,9139,9140,9143],{},[2875,9141,9142],{},".nuxt/tsconfig.server.json"," - For your server-side code (Nitro/server directory)",[3602,9145,9146,9149,9150,9152],{},[2875,9147,9148],{},".nuxt/tsconfig.node.json"," - For your build-time code (modules, ",[2875,9151,233],{},", etc.)",[3602,9154,9155,9158],{},[2875,9156,9157],{},".nuxt/tsconfig.shared.json"," - For code shared between app and server contexts (like types and non-environment specific utilities)",[3602,9160,9161,9164],{},[2875,9162,9163],{},".nuxt/tsconfig.json"," - Legacy configuration for backward compatibility",[3602,9166,9167,9170,9171,9173],{},[3119,9168,9169],{},"Backward compatibility",": Existing projects that extend ",[2875,9172,9163],{}," will continue to work as before.",[3602,9175,9176,9179],{},[3119,9177,9178],{},"Opt-in project references",": New projects or those wanting better type checking can adopt TypeScript's project references feature.",[3602,9181,9182,9185],{},[3119,9183,9184],{},"Context-specific type checking",": Each context now has appropriate compiler options and includes/excludes for its specific environment.",[3602,9187,9188,9195],{},[3119,9189,9190,9191,9194],{},"New ",[2875,9192,9193],{},"typescript.nodeTsConfig"," option",": You can now customize the TypeScript configuration for Node.js build-time code.",[3594,9197,3859],{"id":9198},"reasons-for-change-18",[2863,9200,9201],{},"This change provides several benefits:",[3861,9203,9204,9210,9216,9222],{},[3602,9205,9206,9209],{},[3119,9207,9208],{},"Better type safety",": Each context (app, server, build-time) gets appropriate type checking with context-specific globals and APIs.",[3602,9211,9212,9215],{},[3119,9213,9214],{},"Improved IDE experience",": Better IntelliSense and error reporting for different parts of your codebase.",[3602,9217,9218,9221],{},[3119,9219,9220],{},"Cleaner separation",": Server code won't incorrectly suggest client-side APIs and vice versa.",[3602,9223,9224,9226],{},[3119,9225,3867],{},": TypeScript can more efficiently check code with properly scoped configurations.",[2863,9228,9229,9230,9232,9233,9235,9236,9238],{},"For example, auto-imports are not available in your ",[2875,9231,233],{}," (but previously this was not flagged by TypeScript). And while IDEs recognized the separate context hinted by ",[2875,9234,242],{}," in your ",[2875,9237,3884],{}," directory, this was not reflected in type-checking (requiring a separate step).",[3594,9240,3901],{"id":9241},"migration-steps-22",[2863,9243,9244,9247],{},[3119,9245,9246],{},"No migration is required"," - existing projects will continue to work as before.",[2863,9249,9250],{},"However, to take advantage of improved type checking, you can opt in to the new project references approach:",[3861,9252,9253,9419,9433,9458,9499,9655],{},[3602,9254,9255,9260,9261,9277],{},[3119,9256,9257,9258],{},"Update your root ",[2875,9259,242],{}," to use project references:",[2976,9262,9263],{},[2863,9264,9265,9266,9268,9269,9272,9273,9276],{},"If your ",[2875,9267,242],{}," currently has an ",[2875,9270,9271],{},"\"extends\": \"./.nuxt/tsconfig.json\""," line, ",[3119,9274,9275],{},"remove it"," before adding the references. Project references and extends are mutually exclusive.",[2887,9278,9282],{"className":9279,"code":9280,"language":9281,"meta":2893,"style":2893},"language-json shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","{\n  // Remove \"extends\": \"./.nuxt/tsconfig.json\" if present\n  \"files\": [],\n  \"references\": [\n    { \"path\": \"./.nuxt/tsconfig.app.json\" },\n    { \"path\": \"./.nuxt/tsconfig.server.json\" },\n    { \"path\": \"./.nuxt/tsconfig.shared.json\" },\n    { \"path\": \"./.nuxt/tsconfig.node.json\" }\n  ]\n}\n","json",[2875,9283,9284,9288,9293,9308,9322,9346,9367,9388,9410,9415],{"__ignoreMap":2893},[2897,9285,9286],{"class":2899,"line":2900},[2897,9287,3182],{"class":3181},[2897,9289,9290],{"class":2899,"line":3185},[2897,9291,9292],{"class":3222},"  // Remove \"extends\": \"./.nuxt/tsconfig.json\" if present\n",[2897,9294,9295,9298,9301,9303,9305],{"class":2899,"line":3198},[2897,9296,9297],{"class":3181},"  \"",[2897,9299,9300],{"class":4234},"files",[2897,9302,5571],{"class":3181},[2897,9304,3192],{"class":3181},[2897,9306,9307],{"class":3181}," [],\n",[2897,9309,9310,9312,9315,9317,9319],{"class":2899,"line":3213},[2897,9311,9297],{"class":3181},[2897,9313,9314],{"class":4234},"references",[2897,9316,5571],{"class":3181},[2897,9318,3192],{"class":3181},[2897,9320,9321],{"class":3181}," [\n",[2897,9323,9324,9327,9330,9332,9334,9336,9338,9341,9343],{"class":2899,"line":3219},[2897,9325,9326],{"class":3181},"    {",[2897,9328,9329],{"class":3181}," \"",[2897,9331,5007],{"class":2903},[2897,9333,5571],{"class":3181},[2897,9335,3192],{"class":3181},[2897,9337,9329],{"class":3181},[2897,9339,9340],{"class":2907},"./.nuxt/tsconfig.app.json",[2897,9342,5571],{"class":3181},[2897,9344,9345],{"class":3181}," },\n",[2897,9347,9348,9350,9352,9354,9356,9358,9360,9363,9365],{"class":2899,"line":3226},[2897,9349,9326],{"class":3181},[2897,9351,9329],{"class":3181},[2897,9353,5007],{"class":2903},[2897,9355,5571],{"class":3181},[2897,9357,3192],{"class":3181},[2897,9359,9329],{"class":3181},[2897,9361,9362],{"class":2907},"./.nuxt/tsconfig.server.json",[2897,9364,5571],{"class":3181},[2897,9366,9345],{"class":3181},[2897,9368,9369,9371,9373,9375,9377,9379,9381,9384,9386],{"class":2899,"line":3232},[2897,9370,9326],{"class":3181},[2897,9372,9329],{"class":3181},[2897,9374,5007],{"class":2903},[2897,9376,5571],{"class":3181},[2897,9378,3192],{"class":3181},[2897,9380,9329],{"class":3181},[2897,9382,9383],{"class":2907},"./.nuxt/tsconfig.shared.json",[2897,9385,5571],{"class":3181},[2897,9387,9345],{"class":3181},[2897,9389,9390,9392,9394,9396,9398,9400,9402,9405,9407],{"class":2899,"line":3238},[2897,9391,9326],{"class":3181},[2897,9393,9329],{"class":3181},[2897,9395,5007],{"class":2903},[2897,9397,5571],{"class":3181},[2897,9399,3192],{"class":3181},[2897,9401,9329],{"class":3181},[2897,9403,9404],{"class":2907},"./.nuxt/tsconfig.node.json",[2897,9406,5571],{"class":3181},[2897,9408,9409],{"class":3181}," }\n",[2897,9411,9412],{"class":2899,"line":3244},[2897,9413,9414],{"class":3181},"  ]\n",[2897,9416,9417],{"class":2899,"line":3250},[2897,9418,4526],{"class":3181},[3602,9420,9421,9426,9427,9430,9431,3110],{},[3119,9422,9423,9424],{},"Remove any manual server ",[2875,9425,242],{}," files (like ",[2875,9428,9429],{},"server/tsconfig.json",") that extended ",[2875,9432,9142],{},[3602,9434,9435,9438,9439],{},[3119,9436,9437],{},"Update your type checking scripts"," to use the build flag for project references:",[2887,9440,9442],{"className":4537,"code":9441,"language":4539,"meta":2893,"style":2893},"- \"typecheck\": \"nuxt prepare && vue-tsc --noEmit\"\n+ \"typecheck\": \"nuxt prepare && vue-tsc -b --noEmit\"\n",[2875,9443,9444,9451],{"__ignoreMap":2893},[2897,9445,9446,9448],{"class":2899,"line":2900},[2897,9447,4551],{"class":3181},[2897,9449,9450],{"class":3188}," \"typecheck\": \"nuxt prepare && vue-tsc --noEmit\"\n",[2897,9452,9453,9455],{"class":2899,"line":3185},[2897,9454,4573],{"class":3181},[2897,9456,9457],{"class":2907}," \"typecheck\": \"nuxt prepare && vue-tsc -b --noEmit\"\n",[3602,9459,9460,3192,9463,9486],{},[3119,9461,9462],{},"Move all type augmentations into their appropriate context",[3599,9464,9465,9471,9476],{},[3602,9466,9467,9468,9470],{},"If you are augmenting types for the app context, move the files to the ",[2875,9469,1195],{}," directory.",[3602,9472,9473,9474,9470],{},"If you are augmenting types for the server context, move the files to the ",[2875,9475,3884],{},[3602,9477,9478,9479,9482,9483,9470],{},"If you are augmenting types that are ",[3119,9480,9481],{},"shared between the app and server",", move the files to the ",[2875,9484,9485],{},"shared/",[3098,9487,9488],{},[2863,9489,9490,9491,3630,9493,9495,9496,9498],{},"Augmenting types from outside the ",[2875,9492,1195],{},[2875,9494,3884],{},", or ",[2875,9497,9485],{}," directories will not work with the new project references setup.",[3602,9500,9501,9504,9505],{},[3119,9502,9503],{},"Configure TypeScript options"," if needed:",[2887,9506,9508],{"className":3156,"code":9507,"language":3158,"meta":2893,"style":2893},"export default defineNuxtConfig({\n  typescript: {\n    // customize tsconfig.app.json\n    tsConfig: {\n      // ...\n    },\n    // customize tsconfig.shared.json\n    sharedTsConfig: {\n      // ...\n    },\n    // customize tsconfig.node.json\n    nodeTsConfig: {\n      // ...\n    },\n  },\n  nitro: {\n    typescript: {\n      // customize tsconfig.server.json\n      tsConfig: {\n        // ...\n      },\n    },\n  },\n})\n",[2875,9509,9510,9522,9530,9535,9543,9548,9552,9557,9566,9570,9574,9579,9588,9592,9596,9600,9609,9618,9623,9632,9637,9641,9645,9649],{"__ignoreMap":2893},[2897,9511,9512,9514,9516,9518,9520],{"class":2899,"line":2900},[2897,9513,3167],{"class":3166},[2897,9515,3170],{"class":3166},[2897,9517,3174],{"class":3173},[2897,9519,3178],{"class":3177},[2897,9521,3182],{"class":3181},[2897,9523,9524,9526,9528],{"class":2899,"line":3185},[2897,9525,9056],{"class":3188},[2897,9527,3192],{"class":3181},[2897,9529,3195],{"class":3181},[2897,9531,9532],{"class":2899,"line":3198},[2897,9533,9534],{"class":3222},"    // customize tsconfig.app.json\n",[2897,9536,9537,9539,9541],{"class":2899,"line":3213},[2897,9538,9065],{"class":3188},[2897,9540,3192],{"class":3181},[2897,9542,3195],{"class":3181},[2897,9544,9545],{"class":2899,"line":3219},[2897,9546,9547],{"class":3222},"      // ...\n",[2897,9549,9550],{"class":2899,"line":3226},[2897,9551,4516],{"class":3181},[2897,9553,9554],{"class":2899,"line":3232},[2897,9555,9556],{"class":3222},"    // customize tsconfig.shared.json\n",[2897,9558,9559,9562,9564],{"class":2899,"line":3238},[2897,9560,9561],{"class":3188},"    sharedTsConfig",[2897,9563,3192],{"class":3181},[2897,9565,3195],{"class":3181},[2897,9567,9568],{"class":2899,"line":3244},[2897,9569,9547],{"class":3222},[2897,9571,9572],{"class":2899,"line":3250},[2897,9573,4516],{"class":3181},[2897,9575,9576],{"class":2899,"line":3256},[2897,9577,9578],{"class":3222},"    // customize tsconfig.node.json\n",[2897,9580,9581,9584,9586],{"class":2899,"line":3262},[2897,9582,9583],{"class":3188},"    nodeTsConfig",[2897,9585,3192],{"class":3181},[2897,9587,3195],{"class":3181},[2897,9589,9590],{"class":2899,"line":3268},[2897,9591,9547],{"class":3222},[2897,9593,9594],{"class":2899,"line":3274},[2897,9595,4516],{"class":3181},[2897,9597,9598],{"class":2899,"line":3280},[2897,9599,3216],{"class":3181},[2897,9601,9602,9605,9607],{"class":2899,"line":3286},[2897,9603,9604],{"class":3188},"  nitro",[2897,9606,3192],{"class":3181},[2897,9608,3195],{"class":3181},[2897,9610,9611,9614,9616],{"class":2899,"line":3292},[2897,9612,9613],{"class":3188},"    typescript",[2897,9615,3192],{"class":3181},[2897,9617,3195],{"class":3181},[2897,9619,9620],{"class":2899,"line":3298},[2897,9621,9622],{"class":3222},"      // customize tsconfig.server.json\n",[2897,9624,9625,9628,9630],{"class":2899,"line":3304},[2897,9626,9627],{"class":3188},"      tsConfig",[2897,9629,3192],{"class":3181},[2897,9631,3195],{"class":3181},[2897,9633,9634],{"class":2899,"line":3310},[2897,9635,9636],{"class":3222},"        // ...\n",[2897,9638,9639],{"class":2899,"line":3316},[2897,9640,6529],{"class":3181},[2897,9642,9643],{"class":2899,"line":3322},[2897,9644,4516],{"class":3181},[2897,9646,9647],{"class":2899,"line":3328},[2897,9648,3216],{"class":3181},[2897,9650,9651,9653],{"class":2899,"line":3334},[2897,9652,3406],{"class":3181},[2897,9654,3409],{"class":3177},[3602,9656,9657,9660],{},[3119,9658,9659],{},"Update any CI/build scripts"," that run TypeScript checking to ensure they use the new project references approach.",[2863,9662,9663],{},"The new configuration provides better type safety and IntelliSense for projects that opt in, while maintaining full backward compatibility for existing setups.",[2858,9665,9667],{"id":9666},"removal-of-experimental-features","Removal of Experimental Features",[2863,9669,3573,9670,4697],{},[3119,9671,3576],{},[3594,9673,3597],{"id":9674},"what-changed-22",[2863,9676,9677],{},"Four experimental features are no longer configurable in Nuxt 4:",[3599,9679,9680,9688,9696,9704,9711],{},[3602,9681,9682,7552,9685,9687],{},[2875,9683,9684],{},"experimental.treeshakeClientOnly",[2875,9686,6588],{}," (default since v3.0)",[3602,9689,9690,7552,9693,9695],{},[2875,9691,9692],{},"experimental.configSchema",[2875,9694,6588],{}," (default since v3.3)",[3602,9697,9698,7552,9701,9703],{},[2875,9699,9700],{},"experimental.polyfillVueUseHead",[2875,9702,6595],{}," (default since v3.4)",[3602,9705,9706,7552,9709,9703],{},[2875,9707,9708],{},"experimental.respectNoSSRHeader",[2875,9710,6595],{},[3602,9712,9713,9716,9717,3642],{},[2875,9714,9715],{},"vite.devBundler"," is no longer configurable - it will use ",[2875,9718,9719],{},"vite-node",[3594,9721,3859],{"id":9722},"reasons-for-change-19",[2863,9724,9725],{},"These options have been set to their current values for some time and we do not have a reason to believe that they need to remain configurable.",[3594,9727,3901],{"id":9728},"migration-steps-23",[3599,9730,9731,9742],{},[3602,9732,9733,9736,9737],{},[2875,9734,9735],{},"polyfillVueUseHead"," is implementable in user-land with ",[2867,9738,9741],{"href":9739,"rel":9740},"https://github.com/nuxt/nuxt/blob/f209158352b09d1986aa320e29ff36353b91c358/packages/nuxt/src/head/runtime/plugins/vueuse-head-polyfill.ts#L10-L11",[2871],"this plugin",[3602,9743,9744,9747,9748],{},[2875,9745,9746],{},"respectNoSSRHeader","is implementable in user-land with ",[2867,9749,9752],{"href":9750,"rel":9751},"https://github.com/nuxt/nuxt/blob/c660b39447f0d5b8790c0826092638d321cd6821/packages/nuxt/src/core/runtime/nitro/no-ssr.ts#L8-L9",[2871],"server middleware",[2858,9754,9756,9757,9760],{"id":9755},"removal-of-top-level-generate-configuration","Removal of Top-Level ",[2875,9758,9759],{},"generate"," Configuration",[2863,9762,3573,9763,4697],{},[3119,9764,3576],{},[3594,9766,3597],{"id":9767},"what-changed-23",[2863,9769,9770,9771,9773],{},"The top-level ",[2875,9772,9759],{}," configuration option is no longer available in Nuxt 4. This includes all of its properties:",[3599,9775,9776,9782],{},[3602,9777,9778,9781],{},[2875,9779,9780],{},"generate.exclude"," - for excluding routes from prerendering",[3602,9783,9784,9787],{},[2875,9785,9786],{},"generate.routes"," - for specifying routes to prerender",[3594,9789,3859],{"id":9790},"reasons-for-change-20",[2863,9792,9793,9794,9796,9797,9800],{},"The top level ",[2875,9795,9759],{}," configuration was a holdover from Nuxt 2. We've supported ",[2875,9798,9799],{},"nitro.prerender"," for a while now, and it is the preferred way to configure prerendering in Nuxt 3+.",[3594,9802,3901],{"id":9803},"migration-steps-24",[2863,9805,9806,9807,9809,9810,9812],{},"Replace ",[2875,9808,9759],{}," configuration with the corresponding ",[2875,9811,9799],{}," options:",[2887,9814,9816],{"className":4537,"code":9815,"language":4539,"meta":2893,"style":2893},"export default defineNuxtConfig({\n- generate: {\n-   exclude: ['/admin', '/private'],\n-   routes: ['/sitemap.xml', '/robots.txt']\n- }\n+ nitro: {\n+   prerender: {\n+     ignore: ['/admin', '/private'],\n+     routes: ['/sitemap.xml', '/robots.txt']\n+   }\n+ }\n})\n",[2875,9817,9818,9823,9830,9837,9844,9850,9857,9864,9871,9878,9885,9891],{"__ignoreMap":2893},[2897,9819,9820],{"class":2899,"line":2900},[2897,9821,9822],{"class":3177},"export default defineNuxtConfig({\n",[2897,9824,9825,9827],{"class":2899,"line":3185},[2897,9826,4551],{"class":3181},[2897,9828,9829],{"class":3188}," generate: {\n",[2897,9831,9832,9834],{"class":2899,"line":3198},[2897,9833,4551],{"class":3181},[2897,9835,9836],{"class":3188},"   exclude: ['/admin', '/private'],\n",[2897,9838,9839,9841],{"class":2899,"line":3213},[2897,9840,4551],{"class":3181},[2897,9842,9843],{"class":3188},"   routes: ['/sitemap.xml', '/robots.txt']\n",[2897,9845,9846,9848],{"class":2899,"line":3219},[2897,9847,4551],{"class":3181},[2897,9849,9409],{"class":3188},[2897,9851,9852,9854],{"class":2899,"line":3226},[2897,9853,4573],{"class":3181},[2897,9855,9856],{"class":2907}," nitro: {\n",[2897,9858,9859,9861],{"class":2899,"line":3232},[2897,9860,4573],{"class":3181},[2897,9862,9863],{"class":2907},"   prerender: {\n",[2897,9865,9866,9868],{"class":2899,"line":3238},[2897,9867,4573],{"class":3181},[2897,9869,9870],{"class":2907},"     ignore: ['/admin', '/private'],\n",[2897,9872,9873,9875],{"class":2899,"line":3244},[2897,9874,4573],{"class":3181},[2897,9876,9877],{"class":2907},"     routes: ['/sitemap.xml', '/robots.txt']\n",[2897,9879,9880,9882],{"class":2899,"line":3250},[2897,9881,4573],{"class":3181},[2897,9883,9884],{"class":2907},"   }\n",[2897,9886,9887,9889],{"class":2899,"line":3256},[2897,9888,4573],{"class":3181},[2897,9890,9409],{"class":2907},[2897,9892,9893],{"class":2899,"line":3262},[2897,9894,4627],{"class":3177},[9896,9897,9899],"read-more",{"to":9898},"https://nitro.build/config#prerender",[2863,9900,9901],{},"Read more about Nitro's prerender configuration options.",[2853,9903,9905],{"id":9904},"nuxt-2-vs-nuxt-3","Nuxt 2 vs. Nuxt 3+",[2863,9907,9908],{},"In the table below, there is a quick comparison between 3 versions of Nuxt:",[9910,9911,9912,9931],"table",{},[9913,9914,9915],"thead",{},[9916,9917,9918,9922,9925,9928],"tr",{},[9919,9920,9921],"th",{},"Feature / Version",[9919,9923,9924],{},"Nuxt 2",[9919,9926,9927],{},"Nuxt Bridge",[9919,9929,9930],{},"Nuxt 3+",[9932,9933,9934,9946,9958,9971,9984,9997,10009,10020,10031,10042,10056,10066,10078,10089,10102],"tbody",{},[9916,9935,9936,9940,9942,9944],{},[9937,9938,9939],"td",{},"Vue",[9937,9941,7100],{},[9937,9943,7100],{},[9937,9945,6916],{},[9916,9947,9948,9951,9954,9956],{},[9937,9949,9950],{},"Stability",[9937,9952,9953],{},"😊 Stable",[9937,9955,9953],{},[9937,9957,9953],{},[9916,9959,9960,9962,9965,9968],{},[9937,9961,3867],{},[9937,9963,9964],{},"🏎 Fast",[9937,9966,9967],{},"✈️ Faster",[9937,9969,9970],{},"🚀 Fastest",[9916,9972,9973,9976,9979,9982],{},[9937,9974,9975],{},"Nitro Engine",[9937,9977,9978],{},"❌",[9937,9980,9981],{},"✅",[9937,9983,9981],{},[9916,9985,9986,9989,9992,9995],{},[9937,9987,9988],{},"ESM support",[9937,9990,9991],{},"🌙 Partial",[9937,9993,9994],{},"👍 Better",[9937,9996,9981],{},[9916,9998,9999,10001,10004,10007],{},[9937,10000,280],{},[9937,10002,10003],{},"☑️ Opt-in",[9937,10005,10006],{},"🚧 Partial",[9937,10008,9981],{},[9916,10010,10011,10014,10016,10018],{},[9937,10012,10013],{},"Composition API",[9937,10015,9978],{},[9937,10017,10006],{},[9937,10019,9981],{},[9916,10021,10022,10025,10027,10029],{},[9937,10023,10024],{},"Options API",[9937,10026,9981],{},[9937,10028,9981],{},[9937,10030,9981],{},[9916,10032,10033,10036,10038,10040],{},[9937,10034,10035],{},"Components Auto Import",[9937,10037,9981],{},[9937,10039,9981],{},[9937,10041,9981],{},[9916,10043,10044,10050,10052,10054],{},[9937,10045,10046,10049],{},[2875,10047,10048],{},"\u003Cscript setup>"," syntax",[9937,10051,9978],{},[9937,10053,10006],{},[9937,10055,9981],{},[9916,10057,10058,10060,10062,10064],{},[9937,10059,922],{},[9937,10061,9978],{},[9937,10063,9981],{},[9937,10065,9981],{},[9916,10067,10068,10071,10073,10075],{},[9937,10069,10070],{},"webpack",[9937,10072,3423],{},[9937,10074,3423],{},[9937,10076,10077],{},"5",[9916,10079,10080,10082,10085,10087],{},[9937,10081,1075],{},[9937,10083,10084],{},"⚠️ Partial",[9937,10086,10006],{},[9937,10088,9981],{},[9916,10090,10091,10094,10097,10100],{},[9937,10092,10093],{},"Nuxt CLI",[9937,10095,10096],{},"❌ Old",[9937,10098,10099],{},"✅ nuxt",[9937,10101,10099],{},[9916,10103,10104,10107,10109,10111],{},[9937,10105,10106],{},"Static sites",[9937,10108,9981],{},[9937,10110,9981],{},[9937,10112,9981],{},[2853,10114,10116],{"id":10115},"nuxt-2-to-nuxt-3","Nuxt 2 to Nuxt 3+",[2863,10118,10119],{},"The migration guide provides a step-by-step comparison of Nuxt 2 features to Nuxt 3+ features and guidance to adapt your current application.",[9896,10121,10122],{"to":1085},[2863,10123,10124,10125,3110],{},"Check out the ",[3119,10126,10127],{},"guide to migrating from Nuxt 2 to Nuxt 3",[2853,10129,10131],{"id":10130},"nuxt-2-to-nuxt-bridge","Nuxt 2 to Nuxt Bridge",[2863,10133,10134],{},"If you prefer to progressively migrate your Nuxt 2 application to Nuxt 3, you can use Nuxt Bridge. Nuxt Bridge is a compatibility layer that allows you to use Nuxt 3+ features in Nuxt 2 with an opt-in mechanism.",[9896,10136,10137],{"to":1045},[2863,10138,10139],{},[3119,10140,10141],{},"Migrate from Nuxt 2 to Nuxt Bridge",[10143,10144,10145],"style",{},"html pre.shiki code .s52Pk, html code.shiki .s52Pk{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .sGFVr, html code.shiki .sGFVr{--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D}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 .sWuyu, html code.shiki .sWuyu{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s8R28, html code.shiki .s8R28{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}html pre.shiki code .smZ93, html code.shiki .smZ93{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html pre.shiki code .sbKd-, html code.shiki .sbKd-{--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC}html pre.shiki code .s1nJG, html code.shiki .s1nJG{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sYRBq, html code.shiki .sYRBq{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}",{"title":2893,"searchDepth":3185,"depth":3185,"links":10147},[10148,10153,10192,10193,10194],{"id":2855,"depth":3185,"text":2856,"children":10149},[10150,10151,10152],{"id":2860,"depth":3198,"text":2861},{"id":3003,"depth":3198,"text":3004},{"id":3089,"depth":3198,"text":403},{"id":3113,"depth":3185,"text":3114,"children":10154},[10155,10156,10157,10158,10159,10160,10161,10162,10163,10164,10166,10167,10168,10169,10171,10173,10175,10177,10179,10181,10183,10185,10186,10187,10188,10189,10190],{"id":3136,"depth":3198,"text":3137},{"id":3430,"depth":3198,"text":3431},{"id":3569,"depth":3198,"text":3570},{"id":4115,"depth":3198,"text":4116},{"id":4691,"depth":3198,"text":4692},{"id":4987,"depth":3198,"text":4988},{"id":5066,"depth":3198,"text":5067},{"id":5198,"depth":3198,"text":5199},{"id":5524,"depth":3198,"text":5525},{"id":5709,"depth":3198,"text":10165},"Parsed error.data",{"id":5846,"depth":3198,"text":5847},{"id":5928,"depth":3198,"text":5929},{"id":6083,"depth":3198,"text":6084},{"id":6368,"depth":3198,"text":10170},"Default data and error values in useAsyncData and useFetch",{"id":6549,"depth":3198,"text":10172},"Removal of deprecated boolean values for dedupe option when calling refresh in useAsyncData and useFetch",{"id":7406,"depth":3198,"text":10174},"Respect defaults when clearing data in useAsyncData and useFetch",{"id":7505,"depth":3198,"text":10176},"Alignment of pending value in useAsyncData and useFetch",{"id":7723,"depth":3198,"text":10178},"Key Change Behavior in useAsyncData and useFetch",{"id":7888,"depth":3198,"text":10180},"Shallow Data Reactivity in useAsyncData and useFetch",{"id":8056,"depth":3198,"text":10182},"Absolute Watch Paths in builder:watch",{"id":8149,"depth":3198,"text":10184},"Removal of window.__NUXT__ object",{"id":8209,"depth":3198,"text":8210},{"id":8383,"depth":3198,"text":8384},{"id":8982,"depth":3198,"text":8983},{"id":9110,"depth":3198,"text":9111},{"id":9666,"depth":3198,"text":9667},{"id":9755,"depth":3198,"text":10191},"Removal of Top-Level generate Configuration",{"id":9904,"depth":3185,"text":9905},{"id":10115,"depth":3185,"text":10116},{"id":10130,"depth":3185,"text":10131},"Learn how to upgrade to the latest Nuxt version.","md",{},{"icon":107},{"title":104,"description":10195},"1YOq6RHSqgFalwpoJIrxxN4zyj0kCWM2QsQPCs7oDco",[10202,10204],{"title":99,"path":100,"stem":101,"description":10203,"icon":102,"children":-1},"How to test your Nuxt application.",{"title":117,"path":118,"stem":119,"description":10205,"icon":120,"children":-1},"Nuxt uses the .nuxt/ directory in development to generate your Vue application.",1773024731779]