[{"data":1,"prerenderedAt":11168},["ShallowReactive",2],{"$fGCo9l1hMtNdUiA6QzdUX5X3kLqaWcC5t2kdz4LrvCvc":3,"versions":2842,"-docs-4-x-getting-started-upgrade":2847,"-docs-4-x-getting-started-upgrade-surround":11163},[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":11157,"extension":11158,"links":6,"meta":11159,"navigation":11160,"path":1180,"seo":11161,"stem":1181,"titleTemplate":6,"__hash__":11162},"docsv4/docs/4.x/1.getting-started/18.upgrade.md",{"type":2850,"value":2851,"toc":11103},"minimark",[2852,2857,2862,2878,2969,2972,2979,2983,2991,2995,3002,3009,3081,3091,3142,3151,3154,3158,3165,3170,3179,3186,3202,3207,3266,3270,3273,3287,3291,3296,3307,3764,3768,3783,4101,4108,4112,4115,4118,4189,4192,4195,4198,4202,4211,4220,4228,4235,4334,4337,4341,4346,4353,4361,4364,4450,4633,4641,4644,4677,4683,4686,4772,4780,4819,4822,4898,4902,4907,4910,4918,4985,4988,4993,4996,5401,5404,5462,5466,5471,5474,5481,5484,5498,5501,5517,5520,5523,5534,5537,5543,5546,5566,5569,5732,5742,5756,5760,5764,5767,5786,5789,5792,5799,5802,5805,5834,5838,5842,5845,5848,5851,5881,5891,5897,5900,5903,5917,5919,5965,5969,5973,5976,5988,6011,6014,6017,6020,6025,6073,6089,6205,6217,6236,6243,6290,6294,6298,6301,6316,6362,6365,6398,6401,6404,6407,6421,6424,6475,6482,6486,6495,6498,6506,6563,6567,6571,6574,6577,6588,6591,6598,6645,6649,6653,6656,6669,6672,6682,6685,6693,6750,6752,6798,6802,6806,6809,6822,6825,6836,6842,6845,6854,7033,7036,7082,7095,7099,7102,7114,7117,7137,7140,7156,7164,7184,7188,7191,7213,7904,7907,7910,7922,7952,7955,7957,8012,8019,8029,8033,8036,8051,8054,8063,8068,8072,8075,8100,8103,8118,8121,8133,8152,8155,8228,8233,8302,8314,8318,8339,8342,8361,8364,8376,8379,8391,8471,8474,8520,8528,8532,8535,8549,8555,8563,8566,8587,8590,8596,8631,8634,8685,8693,8697,8717,8720,8729,8732,8742,8745,8748,8846,8854,8861,8865,8868,8876,8879,8885,8888,8896,8902,8940,8947,8955,8958,8964,8967,8979,8982,8988,9007,9011,9015,9018,9028,9031,9038,9046,9049,9052,9181,9185,9189,9192,9203,9216,9219,9226,9236,9245,9248,9251,9276,9353,9366,9771,9778,9782,9786,9789,9800,9803,9817,9820,9823,9906,9910,9914,9917,9920,9994,9997,10000,10025,10037,10040,10046,10049,10459,10462,10466,10470,10473,10476,10518,10521,10524,10527,10551,10559,10563,10566,10572,10586,10589,10599,10602,10611,10693,10699,10703,10707,10710,10731,10734,10758,10761,10771,10810,10813,10859,10863,10866,11070,11074,11077,11085,11089,11092,11099],[2853,2854,2856],"h2",{"id":2855},"upgrading-nuxt","Upgrading Nuxt",[2858,2859,2861],"h3",{"id":2860},"latest-release","Latest release",[2863,2864,2865,2866,2873,2874,2877],"p",{},"To upgrade Nuxt to the ",[2867,2868,2872],"a",{"href":2869,"rel":2870},"https://github.com/nuxt/nuxt/releases",[2871],"nofollow","latest release",", use the ",[2875,2876,813],"code",{}," command.",[2879,2880,2882,2908,2922,2936,2953],"code-group",{"sync":2881},"pm",[2883,2884,2890],"pre",{"className":2885,"code":2886,"filename":2887,"language":2888,"meta":2889,"style":2889},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","npx nuxt upgrade\n","npm","bash","",[2875,2891,2892],{"__ignoreMap":2889},[2893,2894,2897,2901,2905],"span",{"class":2895,"line":2896},"line",1,[2893,2898,2900],{"class":2899},"s52Pk","npx",[2893,2902,2904],{"class":2903},"sGFVr"," nuxt",[2893,2906,2907],{"class":2903}," upgrade\n",[2883,2909,2912],{"className":2885,"code":2910,"filename":2911,"language":2888,"meta":2889,"style":2889},"yarn nuxt upgrade\n","yarn",[2875,2913,2914],{"__ignoreMap":2889},[2893,2915,2916,2918,2920],{"class":2895,"line":2896},[2893,2917,2911],{"class":2899},[2893,2919,2904],{"class":2903},[2893,2921,2907],{"class":2903},[2883,2923,2926],{"className":2885,"code":2924,"filename":2925,"language":2888,"meta":2889,"style":2889},"pnpm nuxt upgrade\n","pnpm",[2875,2927,2928],{"__ignoreMap":2889},[2893,2929,2930,2932,2934],{"class":2895,"line":2896},[2893,2931,2925],{"class":2899},[2893,2933,2904],{"class":2903},[2893,2935,2907],{"class":2903},[2883,2937,2940],{"className":2885,"code":2938,"filename":2939,"language":2888,"meta":2889,"style":2889},"bun x nuxt upgrade\n","bun",[2875,2941,2942],{"__ignoreMap":2889},[2893,2943,2944,2946,2949,2951],{"class":2895,"line":2896},[2893,2945,2939],{"class":2899},[2893,2947,2948],{"class":2903}," x",[2893,2950,2904],{"class":2903},[2893,2952,2907],{"class":2903},[2883,2954,2957],{"className":2885,"code":2955,"filename":2956,"language":2888,"meta":2889,"style":2889},"deno x nuxt upgrade\n","deno",[2875,2958,2959],{"__ignoreMap":2889},[2893,2960,2961,2963,2965,2967],{"class":2895,"line":2896},[2893,2962,2956],{"class":2899},[2893,2964,2948],{"class":2903},[2893,2966,2904],{"class":2903},[2893,2968,2907],{"class":2903},[2858,2970,403],{"id":2971},"nightly-release-channel",[2863,2973,2974,2975,2978],{},"To use the latest Nuxt build and test features before their release, read about the ",[2867,2976,2977],{"href":1387},"nightly release channel"," guide.",[2853,2980,2982],{"id":2981},"testing-nuxt-5","Testing Nuxt 5",[2863,2984,2985,2986,2990],{},"Nuxt 5 is ",[2987,2988,2989],"strong",{},"currently in development",". Until the release, it is possible to test many of Nuxt 5's breaking changes from Nuxt version 4.2+.",[2858,2992,2994],{"id":2993},"opting-in-to-nuxt-5","Opting in to Nuxt 5",[2863,2996,2997,2998,3001],{},"First, upgrade Nuxt to the ",[2867,2999,2872],{"href":2869,"rel":3000},[2871],".",[2863,3003,3004,3005,3008],{},"Then you can set your ",[2875,3006,3007],{},"future.compatibilityVersion"," to match Nuxt 5 behavior:",[2883,3010,3015],{"className":3011,"code":3012,"filename":233,"language":3013,"meta":3014,"style":2889},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","export default defineNuxtConfig({\n  future: {\n    compatibilityVersion: 5,\n  },\n})\n","ts","twoslash",[2875,3016,3017,3038,3051,3066,3072],{"__ignoreMap":2889},[2893,3018,3019,3023,3026,3030,3034],{"class":2895,"line":2896},[2893,3020,3022],{"class":3021},"s8R28","export",[2893,3024,3025],{"class":3021}," default",[2893,3027,3029],{"class":3028},"s3cPz"," defineNuxtConfig",[2893,3031,3033],{"class":3032},"sZSNi","(",[2893,3035,3037],{"class":3036},"sDfIl","{\n",[2893,3039,3041,3045,3048],{"class":2895,"line":3040},2,[2893,3042,3044],{"class":3043},"sRlkE","  future",[2893,3046,3047],{"class":3036},":",[2893,3049,3050],{"class":3036}," {\n",[2893,3052,3054,3057,3059,3063],{"class":2895,"line":3053},3,[2893,3055,3056],{"class":3043},"    compatibilityVersion",[2893,3058,3047],{"class":3036},[2893,3060,3062],{"class":3061},"sYRBq"," 5",[2893,3064,3065],{"class":3036},",\n",[2893,3067,3069],{"class":2895,"line":3068},4,[2893,3070,3071],{"class":3036},"  },\n",[2893,3073,3075,3078],{"class":2895,"line":3074},5,[2893,3076,3077],{"class":3036},"}",[2893,3079,3080],{"class":3032},")\n",[2863,3082,3083,3084,3086,3087,3090],{},"When you set your ",[2875,3085,3007],{}," to ",[2875,3088,3089],{},"5",", defaults throughout your Nuxt configuration will change to opt in to Nuxt v5 behavior, including:",[3092,3093,3094,3105,3120,3139],"ul",{},[3095,3096,3097,3100,3101,3104],"li",{},[2987,3098,3099],{},"Vite Environment API",": Automatically enables the new ",[2867,3102,3099],{"href":3103},"/docs/4.x/getting-started/upgrade#migration-to-vite-environment-api"," for improved build configuration",[3095,3106,3107,3110,3111,3115,3116,3119],{},[2987,3108,3109],{},"Normalized Page Names",": Page component names will ",[2867,3112,3114],{"href":3113},"/docs/4.x/getting-started/upgrade#normalized-page-component-names","match their route names"," for consistent ",[2875,3117,3118],{},"\u003CKeepAlive>"," behavior",[3095,3121,3122,3127,3128,3130,3131,3135,3136],{},[2987,3123,3124,3126],{},[2875,3125,654],{}," resets to defaults",": ",[2875,3129,654],{}," will ",[2867,3132,3134],{"href":3133},"/docs/4.x/getting-started/upgrade#respect-defaults-when-clearing-usestate","reset state to its initial value"," instead of setting it to ",[2875,3137,3138],{},"undefined",[3095,3140,3141],{},"Other Nuxt 5 improvements and changes as they become available",[3143,3144,3145],"note",{},[2863,3146,3147,3148,3001],{},"This section is subject to change until the final release, so please check back here regularly if you are testing Nuxt 5 using ",[2875,3149,3150],{},"future.compatibilityVersion: 5",[2863,3152,3153],{},"Breaking or significant changes will be noted below along with migration steps for backward/forward compatibility.",[2858,3155,3157],{"id":3156},"migration-to-vite-environment-api","Migration to Vite Environment API",[2863,3159,3160,3161,3164],{},"🚦 ",[2987,3162,3163],{},"Impact Level",": Medium",[3166,3167,3169],"h4",{"id":3168},"what-changed","What Changed",[2863,3171,3172,3173,3178],{},"Nuxt 5 migrates to Vite 6's new ",[2867,3174,3177],{"href":3175,"rel":3176},"https://vite.dev/guide/api-environment",[2871],"Environment API",", which formalizes the concept of environments and provides better control over configuration per environment.",[2863,3180,3181,3182,3185],{},"Previously, Nuxt used separate client and server Vite configurations. Now, Nuxt uses a shared Vite configuration with environment-specific plugins that use the ",[2875,3183,3184],{},"applyToEnvironment()"," method to target specific environments.",[3187,3188,3189],"tip",{},[2863,3190,3191,3192,3194,3195,3198,3199,3001],{},"You can test this feature early by setting ",[2875,3193,3150],{}," (see ",[2867,3196,2982],{"href":3197},"/docs/4.x/getting-started/upgrade#testing-nuxt-5",") or by enabling it explicitly with ",[2875,3200,3201],{},"experimental.viteEnvironmentApi: true",[2863,3203,3204],{},[2987,3205,3206],{},"Key changes:",[3208,3209,3210,3229,3254],"ol",{},[3095,3211,3212,3218,3219,3221,3222,3225,3226,3228],{},[2987,3213,3214,3215],{},"Deprecated environment-specific ",[2875,3216,3217],{},"extendViteConfig()",": The ",[2875,3220,185],{}," and ",[2875,3223,3224],{},"client"," options in ",[2875,3227,3217],{}," are deprecated and will show warnings when used.",[3095,3230,3231,3234,3235,3238,3239,3242,3243,3246,3247,3242,3250,3253],{},[2987,3232,3233],{},"Changed plugin registration",": Vite plugins registered with ",[2875,3236,3237],{},"addVitePlugin()"," and only targeting one environment (by passing ",[2875,3240,3241],{},"server: false"," or ",[2875,3244,3245],{},"client: false",") will not have their ",[2875,3248,3249],{},"config",[2875,3251,3252],{},"configResolved"," hooks called.",[3095,3255,3256,3218,3259,3221,3262,3265],{},[2987,3257,3258],{},"Shared configuration",[2875,3260,3261],{},"vite:extendConfig",[2875,3263,3264],{},"vite:configResolved"," hooks now work with a shared configuration rather than separate client/server configs.",[3166,3267,3269],{"id":3268},"reasons-for-change","Reasons for Change",[2863,3271,3272],{},"The Vite Environment API provides:",[3092,3274,3275,3278,3281,3284],{},[3095,3276,3277],{},"Better consistency between development and production builds",[3095,3279,3280],{},"More granular control over environment-specific configuration",[3095,3282,3283],{},"Improved performance and plugin architecture",[3095,3285,3286],{},"Support for custom environments beyond just client and server",[3166,3288,3290],{"id":3289},"migration-steps","Migration Steps",[3292,3293,3295],"h5",{"id":3294},"_1-migrate-to-use-vite-plugins","1. Migrate to use Vite plugins",[2863,3297,3298,3299,3302,3303,3221,3305,3001],{},"We would recommend you use a Vite plugin instead of ",[2875,3300,3301],{},"extendViteConfig",", ",[2875,3304,3264],{},[2875,3306,3261],{},[2883,3308,3310],{"className":3011,"code":3309,"language":3013,"meta":2889,"style":2889},"// Before\nextendViteConfig((config) => {\n  config.optimizeDeps.include.push('my-package')\n}, { server: false })\n\nnuxt.hook('vite:extendConfig' /* or vite:configResolved */, (config, { isClient }) => {\n  if (isClient) {\n    config.optimizeDeps.include.push('my-package')\n  }\n})\n\n// After\naddVitePlugin(() => ({\n  name: 'my-plugin',\n  config (config) {\n    // you can set global vite configuration here\n  },\n  configResolved (config) {\n    // you can access the fully resolved vite configuration here\n  },\n  configEnvironment (name, config) {\n    // you can set environment-specific vite configuration here\n    if (name === 'client') {\n      config.optimizeDeps ||= {}\n      config.optimizeDeps.include ||= []\n      config.optimizeDeps.include.push('my-package')\n    }\n  },\n  applyToEnvironment (environment) {\n    return environment.name === 'client'\n  },\n}))\n",[2875,3311,3312,3318,3338,3370,3392,3397,3441,3457,3485,3491,3498,3503,3509,3526,3544,3557,3563,3568,3582,3588,3593,3613,3619,3642,3658,3676,3703,3709,3714,3729,3751,3756],{"__ignoreMap":2889},[2893,3313,3314],{"class":2895,"line":2896},[2893,3315,3317],{"class":3316},"sWuyu","// Before\n",[2893,3319,3320,3322,3324,3326,3329,3332,3336],{"class":2895,"line":3040},[2893,3321,3301],{"class":3028},[2893,3323,3033],{"class":3032},[2893,3325,3033],{"class":3036},[2893,3327,3249],{"class":3328},"s1nJG",[2893,3330,3331],{"class":3036},")",[2893,3333,3335],{"class":3334},"smZ93"," =>",[2893,3337,3050],{"class":3036},[2893,3339,3340,3343,3345,3348,3350,3353,3355,3358,3360,3363,3366,3368],{"class":2895,"line":3053},[2893,3341,3342],{"class":3032},"  config",[2893,3344,3001],{"class":3036},[2893,3346,3347],{"class":3032},"optimizeDeps",[2893,3349,3001],{"class":3036},[2893,3351,3352],{"class":3032},"include",[2893,3354,3001],{"class":3036},[2893,3356,3357],{"class":3028},"push",[2893,3359,3033],{"class":3043},[2893,3361,3362],{"class":3036},"'",[2893,3364,3365],{"class":2903},"my-package",[2893,3367,3362],{"class":3036},[2893,3369,3080],{"class":3043},[2893,3371,3372,3375,3378,3381,3383,3387,3390],{"class":2895,"line":3068},[2893,3373,3374],{"class":3036},"},",[2893,3376,3377],{"class":3036}," {",[2893,3379,3380],{"class":3043}," server",[2893,3382,3047],{"class":3036},[2893,3384,3386],{"class":3385},"sbKd-"," false",[2893,3388,3389],{"class":3036}," }",[2893,3391,3080],{"class":3032},[2893,3393,3394],{"class":2895,"line":3074},[2893,3395,3396],{"emptyLinePlaceholder":1196},"\n",[2893,3398,3400,3403,3405,3408,3410,3412,3414,3416,3419,3422,3425,3427,3429,3431,3434,3437,3439],{"class":2895,"line":3399},6,[2893,3401,3402],{"class":3032},"nuxt",[2893,3404,3001],{"class":3036},[2893,3406,3407],{"class":3028},"hook",[2893,3409,3033],{"class":3032},[2893,3411,3362],{"class":3036},[2893,3413,3261],{"class":2903},[2893,3415,3362],{"class":3036},[2893,3417,3418],{"class":3316}," /* or vite:configResolved */",[2893,3420,3421],{"class":3036},",",[2893,3423,3424],{"class":3036}," (",[2893,3426,3249],{"class":3328},[2893,3428,3421],{"class":3036},[2893,3430,3377],{"class":3036},[2893,3432,3433],{"class":3328}," isClient",[2893,3435,3436],{"class":3036}," })",[2893,3438,3335],{"class":3334},[2893,3440,3050],{"class":3036},[2893,3442,3444,3447,3449,3452,3455],{"class":2895,"line":3443},7,[2893,3445,3446],{"class":3021},"  if",[2893,3448,3424],{"class":3043},[2893,3450,3451],{"class":3032},"isClient",[2893,3453,3454],{"class":3043},") ",[2893,3456,3037],{"class":3036},[2893,3458,3460,3463,3465,3467,3469,3471,3473,3475,3477,3479,3481,3483],{"class":2895,"line":3459},8,[2893,3461,3462],{"class":3032},"    config",[2893,3464,3001],{"class":3036},[2893,3466,3347],{"class":3032},[2893,3468,3001],{"class":3036},[2893,3470,3352],{"class":3032},[2893,3472,3001],{"class":3036},[2893,3474,3357],{"class":3028},[2893,3476,3033],{"class":3043},[2893,3478,3362],{"class":3036},[2893,3480,3365],{"class":2903},[2893,3482,3362],{"class":3036},[2893,3484,3080],{"class":3043},[2893,3486,3488],{"class":2895,"line":3487},9,[2893,3489,3490],{"class":3036},"  }\n",[2893,3492,3494,3496],{"class":2895,"line":3493},10,[2893,3495,3077],{"class":3036},[2893,3497,3080],{"class":3032},[2893,3499,3501],{"class":2895,"line":3500},11,[2893,3502,3396],{"emptyLinePlaceholder":1196},[2893,3504,3506],{"class":2895,"line":3505},12,[2893,3507,3508],{"class":3316},"// After\n",[2893,3510,3512,3515,3517,3520,3522,3524],{"class":2895,"line":3511},13,[2893,3513,3514],{"class":3028},"addVitePlugin",[2893,3516,3033],{"class":3032},[2893,3518,3519],{"class":3036},"()",[2893,3521,3335],{"class":3334},[2893,3523,3424],{"class":3032},[2893,3525,3037],{"class":3036},[2893,3527,3529,3532,3534,3537,3540,3542],{"class":2895,"line":3528},14,[2893,3530,3531],{"class":3043},"  name",[2893,3533,3047],{"class":3036},[2893,3535,3536],{"class":3036}," '",[2893,3538,3539],{"class":2903},"my-plugin",[2893,3541,3362],{"class":3036},[2893,3543,3065],{"class":3036},[2893,3545,3547,3549,3551,3553,3555],{"class":2895,"line":3546},15,[2893,3548,3342],{"class":3043},[2893,3550,3424],{"class":3036},[2893,3552,3249],{"class":3328},[2893,3554,3331],{"class":3036},[2893,3556,3050],{"class":3036},[2893,3558,3560],{"class":2895,"line":3559},16,[2893,3561,3562],{"class":3316},"    // you can set global vite configuration here\n",[2893,3564,3566],{"class":2895,"line":3565},17,[2893,3567,3071],{"class":3036},[2893,3569,3571,3574,3576,3578,3580],{"class":2895,"line":3570},18,[2893,3572,3573],{"class":3043},"  configResolved",[2893,3575,3424],{"class":3036},[2893,3577,3249],{"class":3328},[2893,3579,3331],{"class":3036},[2893,3581,3050],{"class":3036},[2893,3583,3585],{"class":2895,"line":3584},19,[2893,3586,3587],{"class":3316},"    // you can access the fully resolved vite configuration here\n",[2893,3589,3591],{"class":2895,"line":3590},20,[2893,3592,3071],{"class":3036},[2893,3594,3596,3599,3601,3604,3606,3609,3611],{"class":2895,"line":3595},21,[2893,3597,3598],{"class":3043},"  configEnvironment",[2893,3600,3424],{"class":3036},[2893,3602,3603],{"class":3328},"name",[2893,3605,3421],{"class":3036},[2893,3607,3608],{"class":3328}," config",[2893,3610,3331],{"class":3036},[2893,3612,3050],{"class":3036},[2893,3614,3616],{"class":2895,"line":3615},22,[2893,3617,3618],{"class":3316},"    // you can set environment-specific vite configuration here\n",[2893,3620,3622,3625,3627,3629,3632,3634,3636,3638,3640],{"class":2895,"line":3621},23,[2893,3623,3624],{"class":3021},"    if",[2893,3626,3424],{"class":3043},[2893,3628,3603],{"class":3032},[2893,3630,3631],{"class":3036}," ===",[2893,3633,3536],{"class":3036},[2893,3635,3224],{"class":2903},[2893,3637,3362],{"class":3036},[2893,3639,3454],{"class":3043},[2893,3641,3037],{"class":3036},[2893,3643,3645,3648,3650,3652,3655],{"class":2895,"line":3644},24,[2893,3646,3647],{"class":3032},"      config",[2893,3649,3001],{"class":3036},[2893,3651,3347],{"class":3032},[2893,3653,3654],{"class":3036}," ||=",[2893,3656,3657],{"class":3036}," {}\n",[2893,3659,3661,3663,3665,3667,3669,3671,3673],{"class":2895,"line":3660},25,[2893,3662,3647],{"class":3032},[2893,3664,3001],{"class":3036},[2893,3666,3347],{"class":3032},[2893,3668,3001],{"class":3036},[2893,3670,3352],{"class":3032},[2893,3672,3654],{"class":3036},[2893,3674,3675],{"class":3043}," []\n",[2893,3677,3679,3681,3683,3685,3687,3689,3691,3693,3695,3697,3699,3701],{"class":2895,"line":3678},26,[2893,3680,3647],{"class":3032},[2893,3682,3001],{"class":3036},[2893,3684,3347],{"class":3032},[2893,3686,3001],{"class":3036},[2893,3688,3352],{"class":3032},[2893,3690,3001],{"class":3036},[2893,3692,3357],{"class":3028},[2893,3694,3033],{"class":3043},[2893,3696,3362],{"class":3036},[2893,3698,3365],{"class":2903},[2893,3700,3362],{"class":3036},[2893,3702,3080],{"class":3043},[2893,3704,3706],{"class":2895,"line":3705},27,[2893,3707,3708],{"class":3036},"    }\n",[2893,3710,3712],{"class":2895,"line":3711},28,[2893,3713,3071],{"class":3036},[2893,3715,3717,3720,3722,3725,3727],{"class":2895,"line":3716},29,[2893,3718,3719],{"class":3043},"  applyToEnvironment",[2893,3721,3424],{"class":3036},[2893,3723,3724],{"class":3328},"environment",[2893,3726,3331],{"class":3036},[2893,3728,3050],{"class":3036},[2893,3730,3732,3735,3738,3740,3742,3744,3746,3748],{"class":2895,"line":3731},30,[2893,3733,3734],{"class":3021},"    return",[2893,3736,3737],{"class":3032}," environment",[2893,3739,3001],{"class":3036},[2893,3741,3603],{"class":3032},[2893,3743,3631],{"class":3036},[2893,3745,3536],{"class":3036},[2893,3747,3224],{"class":2903},[2893,3749,3750],{"class":3036},"'\n",[2893,3752,3754],{"class":2895,"line":3753},31,[2893,3755,3071],{"class":3036},[2893,3757,3759,3761],{"class":2895,"line":3758},32,[2893,3760,3077],{"class":3036},[2893,3762,3763],{"class":3032},"))\n",[3292,3765,3767],{"id":3766},"_2-migrate-vite-plugins-to-use-environments","2. Migrate Vite plugins to use environments",[2863,3769,3770,3771,3773,3774,3242,3776,3778,3779,3782],{},"Instead of using ",[2875,3772,3514],{}," with ",[2875,3775,3241],{},[2875,3777,3245],{},", you can instead use the new ",[2875,3780,3781],{},"applyToEnvironment"," hook within your plugin.",[2883,3784,3786],{"className":3011,"code":3785,"language":3013,"meta":2889,"style":2889},"// Before\naddVitePlugin(() => ({\n  name: 'my-plugin',\n  config (config) {\n    config.optimizeDeps.include.push('my-package')\n  },\n}), { client: false })\n\n// After\naddVitePlugin(() => ({\n  name: 'my-plugin',\n  config (config) {\n    // you can set global vite configuration here\n  },\n  configResolved (config) {\n    // you can access the fully resolved vite configuration here\n  },\n  configEnvironment (name, config) {\n    // you can set environment-specific vite configuration here\n    if (name === 'client') {\n      config.optimizeDeps ||= {}\n      config.optimizeDeps.include ||= []\n      config.optimizeDeps.include.push('my-package')\n    }\n  },\n  applyToEnvironment (environment) {\n    return environment.name === 'client'\n  },\n}))\n",[2875,3787,3788,3792,3806,3820,3832,3858,3862,3883,3887,3891,3905,3919,3931,3935,3939,3951,3955,3959,3975,3979,3999,4011,4027,4053,4057,4061,4073,4091,4095],{"__ignoreMap":2889},[2893,3789,3790],{"class":2895,"line":2896},[2893,3791,3317],{"class":3316},[2893,3793,3794,3796,3798,3800,3802,3804],{"class":2895,"line":3040},[2893,3795,3514],{"class":3028},[2893,3797,3033],{"class":3032},[2893,3799,3519],{"class":3036},[2893,3801,3335],{"class":3334},[2893,3803,3424],{"class":3032},[2893,3805,3037],{"class":3036},[2893,3807,3808,3810,3812,3814,3816,3818],{"class":2895,"line":3053},[2893,3809,3531],{"class":3043},[2893,3811,3047],{"class":3036},[2893,3813,3536],{"class":3036},[2893,3815,3539],{"class":2903},[2893,3817,3362],{"class":3036},[2893,3819,3065],{"class":3036},[2893,3821,3822,3824,3826,3828,3830],{"class":2895,"line":3068},[2893,3823,3342],{"class":3043},[2893,3825,3424],{"class":3036},[2893,3827,3249],{"class":3328},[2893,3829,3331],{"class":3036},[2893,3831,3050],{"class":3036},[2893,3833,3834,3836,3838,3840,3842,3844,3846,3848,3850,3852,3854,3856],{"class":2895,"line":3074},[2893,3835,3462],{"class":3032},[2893,3837,3001],{"class":3036},[2893,3839,3347],{"class":3032},[2893,3841,3001],{"class":3036},[2893,3843,3352],{"class":3032},[2893,3845,3001],{"class":3036},[2893,3847,3357],{"class":3028},[2893,3849,3033],{"class":3043},[2893,3851,3362],{"class":3036},[2893,3853,3365],{"class":2903},[2893,3855,3362],{"class":3036},[2893,3857,3080],{"class":3043},[2893,3859,3860],{"class":2895,"line":3399},[2893,3861,3071],{"class":3036},[2893,3863,3864,3866,3868,3870,3872,3875,3877,3879,3881],{"class":2895,"line":3443},[2893,3865,3077],{"class":3036},[2893,3867,3331],{"class":3032},[2893,3869,3421],{"class":3036},[2893,3871,3377],{"class":3036},[2893,3873,3874],{"class":3043}," client",[2893,3876,3047],{"class":3036},[2893,3878,3386],{"class":3385},[2893,3880,3389],{"class":3036},[2893,3882,3080],{"class":3032},[2893,3884,3885],{"class":2895,"line":3459},[2893,3886,3396],{"emptyLinePlaceholder":1196},[2893,3888,3889],{"class":2895,"line":3487},[2893,3890,3508],{"class":3316},[2893,3892,3893,3895,3897,3899,3901,3903],{"class":2895,"line":3493},[2893,3894,3514],{"class":3028},[2893,3896,3033],{"class":3032},[2893,3898,3519],{"class":3036},[2893,3900,3335],{"class":3334},[2893,3902,3424],{"class":3032},[2893,3904,3037],{"class":3036},[2893,3906,3907,3909,3911,3913,3915,3917],{"class":2895,"line":3500},[2893,3908,3531],{"class":3043},[2893,3910,3047],{"class":3036},[2893,3912,3536],{"class":3036},[2893,3914,3539],{"class":2903},[2893,3916,3362],{"class":3036},[2893,3918,3065],{"class":3036},[2893,3920,3921,3923,3925,3927,3929],{"class":2895,"line":3505},[2893,3922,3342],{"class":3043},[2893,3924,3424],{"class":3036},[2893,3926,3249],{"class":3328},[2893,3928,3331],{"class":3036},[2893,3930,3050],{"class":3036},[2893,3932,3933],{"class":2895,"line":3511},[2893,3934,3562],{"class":3316},[2893,3936,3937],{"class":2895,"line":3528},[2893,3938,3071],{"class":3036},[2893,3940,3941,3943,3945,3947,3949],{"class":2895,"line":3546},[2893,3942,3573],{"class":3043},[2893,3944,3424],{"class":3036},[2893,3946,3249],{"class":3328},[2893,3948,3331],{"class":3036},[2893,3950,3050],{"class":3036},[2893,3952,3953],{"class":2895,"line":3559},[2893,3954,3587],{"class":3316},[2893,3956,3957],{"class":2895,"line":3565},[2893,3958,3071],{"class":3036},[2893,3960,3961,3963,3965,3967,3969,3971,3973],{"class":2895,"line":3570},[2893,3962,3598],{"class":3043},[2893,3964,3424],{"class":3036},[2893,3966,3603],{"class":3328},[2893,3968,3421],{"class":3036},[2893,3970,3608],{"class":3328},[2893,3972,3331],{"class":3036},[2893,3974,3050],{"class":3036},[2893,3976,3977],{"class":2895,"line":3584},[2893,3978,3618],{"class":3316},[2893,3980,3981,3983,3985,3987,3989,3991,3993,3995,3997],{"class":2895,"line":3590},[2893,3982,3624],{"class":3021},[2893,3984,3424],{"class":3043},[2893,3986,3603],{"class":3032},[2893,3988,3631],{"class":3036},[2893,3990,3536],{"class":3036},[2893,3992,3224],{"class":2903},[2893,3994,3362],{"class":3036},[2893,3996,3454],{"class":3043},[2893,3998,3037],{"class":3036},[2893,4000,4001,4003,4005,4007,4009],{"class":2895,"line":3595},[2893,4002,3647],{"class":3032},[2893,4004,3001],{"class":3036},[2893,4006,3347],{"class":3032},[2893,4008,3654],{"class":3036},[2893,4010,3657],{"class":3036},[2893,4012,4013,4015,4017,4019,4021,4023,4025],{"class":2895,"line":3615},[2893,4014,3647],{"class":3032},[2893,4016,3001],{"class":3036},[2893,4018,3347],{"class":3032},[2893,4020,3001],{"class":3036},[2893,4022,3352],{"class":3032},[2893,4024,3654],{"class":3036},[2893,4026,3675],{"class":3043},[2893,4028,4029,4031,4033,4035,4037,4039,4041,4043,4045,4047,4049,4051],{"class":2895,"line":3621},[2893,4030,3647],{"class":3032},[2893,4032,3001],{"class":3036},[2893,4034,3347],{"class":3032},[2893,4036,3001],{"class":3036},[2893,4038,3352],{"class":3032},[2893,4040,3001],{"class":3036},[2893,4042,3357],{"class":3028},[2893,4044,3033],{"class":3043},[2893,4046,3362],{"class":3036},[2893,4048,3365],{"class":2903},[2893,4050,3362],{"class":3036},[2893,4052,3080],{"class":3043},[2893,4054,4055],{"class":2895,"line":3644},[2893,4056,3708],{"class":3036},[2893,4058,4059],{"class":2895,"line":3660},[2893,4060,3071],{"class":3036},[2893,4062,4063,4065,4067,4069,4071],{"class":2895,"line":3678},[2893,4064,3719],{"class":3043},[2893,4066,3424],{"class":3036},[2893,4068,3724],{"class":3328},[2893,4070,3331],{"class":3036},[2893,4072,3050],{"class":3036},[2893,4074,4075,4077,4079,4081,4083,4085,4087,4089],{"class":2895,"line":3705},[2893,4076,3734],{"class":3021},[2893,4078,3737],{"class":3032},[2893,4080,3001],{"class":3036},[2893,4082,3603],{"class":3032},[2893,4084,3631],{"class":3036},[2893,4086,3536],{"class":3036},[2893,4088,3224],{"class":2903},[2893,4090,3750],{"class":3036},[2893,4092,4093],{"class":2895,"line":3711},[2893,4094,3071],{"class":3036},[2893,4096,4097,4099],{"class":2895,"line":3716},[2893,4098,3077],{"class":3036},[2893,4100,3763],{"class":3032},[4102,4103,4105],"read-more",{"to":3175,"target":4104},"_blank",[2863,4106,4107],{},"Learn more about Vite's Environment API",[2853,4109,4111],{"id":4110},"migrating-to-nuxt-4","Migrating to Nuxt 4",[2863,4113,4114],{},"Nuxt 4 includes significant improvements and changes. This guide will help you migrate your existing Nuxt 3 application to Nuxt 4.",[2863,4116,4117],{},"First, upgrade to Nuxt 4:",[2879,4119,4120,4135,4149,4162,4175],{"sync":2881},[2883,4121,4123],{"className":2885,"code":4122,"filename":2887,"language":2888,"meta":2889,"style":2889},"npm install nuxt@^4.0.0\n",[2875,4124,4125],{"__ignoreMap":2889},[2893,4126,4127,4129,4132],{"class":2895,"line":2896},[2893,4128,2887],{"class":2899},[2893,4130,4131],{"class":2903}," install",[2893,4133,4134],{"class":2903}," nuxt@^4.0.0\n",[2883,4136,4138],{"className":2885,"code":4137,"filename":2911,"language":2888,"meta":2889,"style":2889},"yarn add nuxt@^4.0.0\n",[2875,4139,4140],{"__ignoreMap":2889},[2893,4141,4142,4144,4147],{"class":2895,"line":2896},[2893,4143,2911],{"class":2899},[2893,4145,4146],{"class":2903}," add",[2893,4148,4134],{"class":2903},[2883,4150,4152],{"className":2885,"code":4151,"filename":2925,"language":2888,"meta":2889,"style":2889},"pnpm add nuxt@^4.0.0\n",[2875,4153,4154],{"__ignoreMap":2889},[2893,4155,4156,4158,4160],{"class":2895,"line":2896},[2893,4157,2925],{"class":2899},[2893,4159,4146],{"class":2903},[2893,4161,4134],{"class":2903},[2883,4163,4165],{"className":2885,"code":4164,"filename":2939,"language":2888,"meta":2889,"style":2889},"bun add nuxt@^4.0.0\n",[2875,4166,4167],{"__ignoreMap":2889},[2893,4168,4169,4171,4173],{"class":2895,"line":2896},[2893,4170,2939],{"class":2899},[2893,4172,4146],{"class":2903},[2893,4174,4134],{"class":2903},[2883,4176,4178],{"className":2885,"code":4177,"filename":2956,"language":2888,"meta":2889,"style":2889},"deno add npm:nuxt@^4.0.0\n",[2875,4179,4180],{"__ignoreMap":2889},[2893,4181,4182,4184,4186],{"class":2895,"line":2896},[2893,4183,2956],{"class":2899},[2893,4185,4146],{"class":2903},[2893,4187,4188],{"class":2903}," npm:nuxt@^4.0.0\n",[2863,4190,4191],{},"After upgrading, most Nuxt 4 behaviors are now the default. However, some features can still be configured if you need to maintain backward compatibility during your migration.",[2863,4193,4194],{},"The following sections detail the key changes and migrations needed when upgrading to Nuxt 4.",[2863,4196,4197],{},"Breaking or significant changes are documented below along with migration steps and available configuration options.",[2858,4199,4201],{"id":4200},"migrating-using-codemods","Migrating Using Codemods",[2863,4203,4204,4205,4210],{},"To facilitate the upgrade process, we have collaborated with the ",[2867,4206,4209],{"href":4207,"rel":4208},"https://github.com/codemod/codemod",[2871],"Codemod"," team to automate many migration steps with some open-source codemods.",[3143,4212,4213],{},[2863,4214,4215,4216,4219],{},"If you encounter any issues, please report them to the Codemod team with ",[2875,4217,4218],{},"npx codemod feedback"," 🙏",[2863,4221,4222,4223,3001],{},"For a complete list of Nuxt 4 codemods, detailed information on each, their source, and various ways to run them, visit the ",[2867,4224,4227],{"href":4225,"rel":4226},"https://app.codemod.com/registry",[2871],"Codemod Registry",[2863,4229,4230,4231,4234],{},"You can run all the codemods mentioned in this guide using the following ",[2875,4232,4233],{},"codemod"," recipe:",[2879,4236,4237,4257,4277,4296,4315],{},[2883,4238,4240],{"className":2885,"code":4239,"filename":2887,"language":2888,"meta":2889,"style":2889},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\nnpx codemod@0.18.7 nuxt/4/migration-recipe\n",[2875,4241,4242,4247],{"__ignoreMap":2889},[2893,4243,4244],{"class":2895,"line":2896},[2893,4245,4246],{"class":3316},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\n",[2893,4248,4249,4251,4254],{"class":2895,"line":3040},[2893,4250,2900],{"class":2899},[2893,4252,4253],{"class":2903}," codemod@0.18.7",[2893,4255,4256],{"class":2903}," nuxt/4/migration-recipe\n",[2883,4258,4260],{"className":2885,"code":4259,"filename":2911,"language":2888,"meta":2889,"style":2889},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\nyarn dlx codemod@0.18.7 nuxt/4/migration-recipe\n",[2875,4261,4262,4266],{"__ignoreMap":2889},[2893,4263,4264],{"class":2895,"line":2896},[2893,4265,4246],{"class":3316},[2893,4267,4268,4270,4273,4275],{"class":2895,"line":3040},[2893,4269,2911],{"class":2899},[2893,4271,4272],{"class":2903}," dlx",[2893,4274,4253],{"class":2903},[2893,4276,4256],{"class":2903},[2883,4278,4280],{"className":2885,"code":4279,"filename":2925,"language":2888,"meta":2889,"style":2889},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\npnpm dlx codemod@0.18.7 nuxt/4/migration-recipe\n",[2875,4281,4282,4286],{"__ignoreMap":2889},[2893,4283,4284],{"class":2895,"line":2896},[2893,4285,4246],{"class":3316},[2893,4287,4288,4290,4292,4294],{"class":2895,"line":3040},[2893,4289,2925],{"class":2899},[2893,4291,4272],{"class":2903},[2893,4293,4253],{"class":2903},[2893,4295,4256],{"class":2903},[2883,4297,4299],{"className":2885,"code":4298,"filename":2939,"language":2888,"meta":2889,"style":2889},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\nbun x codemod@0.18.7 nuxt/4/migration-recipe\n",[2875,4300,4301,4305],{"__ignoreMap":2889},[2893,4302,4303],{"class":2895,"line":2896},[2893,4304,4246],{"class":3316},[2893,4306,4307,4309,4311,4313],{"class":2895,"line":3040},[2893,4308,2939],{"class":2899},[2893,4310,2948],{"class":2903},[2893,4312,4253],{"class":2903},[2893,4314,4256],{"class":2903},[2883,4316,4318],{"className":2885,"code":4317,"filename":2956,"language":2888,"meta":2889,"style":2889},"# Using pinned version due to https://github.com/codemod/codemod/issues/1710\ndeno x codemod@0.18.7 nuxt/4/migration-recipe\n",[2875,4319,4320,4324],{"__ignoreMap":2889},[2893,4321,4322],{"class":2895,"line":2896},[2893,4323,4246],{"class":3316},[2893,4325,4326,4328,4330,4332],{"class":2895,"line":3040},[2893,4327,2956],{"class":2899},[2893,4329,2948],{"class":2903},[2893,4331,4253],{"class":2903},[2893,4333,4256],{"class":2903},[2863,4335,4336],{},"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,4338,4340],{"id":4339},"new-directory-structure","New Directory Structure",[2863,4342,3160,4343,4345],{},[2987,4344,3163],{},": Significant",[2863,4347,4348,4349,4352],{},"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,4350,4351],{},"app/pages/"," directory, this new structure will not apply).",[2863,4354,4355,4356],{},"👉 ",[2867,4357,4360],{"href":4358,"rel":4359},"https://github.com/nuxt/nuxt/issues/26444",[2871],"See full RFC",[3166,4362,3169],{"id":4363},"what-changed-1",[3092,4365,4366,4376,4389,4405,4419,4436],{},[3095,4367,4368,4369,4372,4373,4375],{},"the new Nuxt default ",[2875,4370,4371],{},"srcDir"," is ",[2875,4374,1195],{}," by default, and most things are resolved from there.",[3095,4377,4378,4381,4382,4385,4386],{},[2875,4379,4380],{},"serverDir"," now defaults to ",[2875,4383,4384],{},"\u003CrootDir>/server"," rather than ",[2875,4387,4388],{},"\u003CsrcDir>/server",[3095,4390,4391,3302,4394,3221,4397,4400,4401,4404],{},[2875,4392,4393],{},"layers/",[2875,4395,4396],{},"modules/",[2875,4398,4399],{},"public/"," are resolved relative to ",[2875,4402,4403],{},"\u003CrootDir>"," by default",[3095,4406,4407,4408,3302,4413,4416,4417],{},"if using ",[2867,4409,4412],{"href":4410,"rel":4411},"https://github.com/nuxt/content/pull/2649",[2871],"Nuxt Content v2.13+",[2875,4414,4415],{},"content/"," is resolved relative to ",[2875,4418,4403],{},[3095,4420,4421,4422,4425,4426,3221,4429,4432,4433],{},"a new ",[2875,4423,4424],{},"dir.app"," is added, which is the directory we look for ",[2875,4427,4428],{},"router.options.ts",[2875,4430,4431],{},"spa-loading-template.html"," - this defaults to ",[2875,4434,4435],{},"\u003CsrcDir>/",[3095,4437,4421,4438,4443,4444,3221,4447],{},[2867,4439,4440],{"href":1253},[2875,4441,4442],{},"shared/"," directory is available for code shared between the Vue app and the Nitro server, with auto-imports for ",[2875,4445,4446],{},"shared/utils/",[2875,4448,4449],{},"shared/types/",[4451,4452,4453,4457,4605],"details",{},[4454,4455,4456],"summary",{},"An example v4 folder structure.",[2883,4458,4462],{"className":4459,"code":4460,"language":4461,"meta":2889,"style":2889},"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/\n  types/\n  utils/\nserver/\n  api/\n  middleware/\n  plugins/\n  routes/\n  utils/\nnuxt.config.ts\n","sh",[2875,4463,4464,4469,4474,4479,4484,4489,4494,4499,4504,4509,4514,4519,4524,4529,4534,4539,4544,4549,4554,4559,4564,4569,4573,4578,4583,4587,4591,4596,4600],{"__ignoreMap":2889},[2893,4465,4466],{"class":2895,"line":2896},[2893,4467,4468],{"class":2899},".output/\n",[2893,4470,4471],{"class":2895,"line":3040},[2893,4472,4473],{"class":2899},".nuxt/\n",[2893,4475,4476],{"class":2895,"line":3053},[2893,4477,4478],{"class":2899},"app/\n",[2893,4480,4481],{"class":2895,"line":3068},[2893,4482,4483],{"class":2899},"  assets/\n",[2893,4485,4486],{"class":2895,"line":3074},[2893,4487,4488],{"class":2899},"  components/\n",[2893,4490,4491],{"class":2895,"line":3399},[2893,4492,4493],{"class":2899},"  composables/\n",[2893,4495,4496],{"class":2895,"line":3443},[2893,4497,4498],{"class":2899},"  layouts/\n",[2893,4500,4501],{"class":2895,"line":3459},[2893,4502,4503],{"class":2899},"  middleware/\n",[2893,4505,4506],{"class":2895,"line":3487},[2893,4507,4508],{"class":2899},"  pages/\n",[2893,4510,4511],{"class":2895,"line":3493},[2893,4512,4513],{"class":2899},"  plugins/\n",[2893,4515,4516],{"class":2895,"line":3500},[2893,4517,4518],{"class":2899},"  utils/\n",[2893,4520,4521],{"class":2895,"line":3505},[2893,4522,4523],{"class":2899},"  app.config.ts\n",[2893,4525,4526],{"class":2895,"line":3511},[2893,4527,4528],{"class":2899},"  app.vue\n",[2893,4530,4531],{"class":2895,"line":3528},[2893,4532,4533],{"class":2899},"  router.options.ts\n",[2893,4535,4536],{"class":2895,"line":3546},[2893,4537,4538],{"class":2899},"content/\n",[2893,4540,4541],{"class":2895,"line":3559},[2893,4542,4543],{"class":2899},"layers/\n",[2893,4545,4546],{"class":2895,"line":3565},[2893,4547,4548],{"class":2899},"modules/\n",[2893,4550,4551],{"class":2895,"line":3570},[2893,4552,4553],{"class":2899},"node_modules/\n",[2893,4555,4556],{"class":2895,"line":3584},[2893,4557,4558],{"class":2899},"public/\n",[2893,4560,4561],{"class":2895,"line":3590},[2893,4562,4563],{"class":2899},"shared/\n",[2893,4565,4566],{"class":2895,"line":3595},[2893,4567,4568],{"class":2899},"  types/\n",[2893,4570,4571],{"class":2895,"line":3615},[2893,4572,4518],{"class":2899},[2893,4574,4575],{"class":2895,"line":3621},[2893,4576,4577],{"class":2899},"server/\n",[2893,4579,4580],{"class":2895,"line":3644},[2893,4581,4582],{"class":2899},"  api/\n",[2893,4584,4585],{"class":2895,"line":3660},[2893,4586,4503],{"class":2899},[2893,4588,4589],{"class":2895,"line":3678},[2893,4590,4513],{"class":2899},[2893,4592,4593],{"class":2895,"line":3705},[2893,4594,4595],{"class":2899},"  routes/\n",[2893,4597,4598],{"class":2895,"line":3711},[2893,4599,4518],{"class":2899},[2893,4601,4602],{"class":2895,"line":3716},[2893,4603,4604],{"class":2899},"nuxt.config.ts\n",[3143,4606,4607],{},[2863,4608,4609,4610,4613,4614,4616,4617,4619,4620,4623,4624,3302,4627,3086,4630,4632],{},"With this new structure, the ",[2875,4611,4612],{},"~"," alias now points to the ",[2875,4615,1195],{}," directory by default (your ",[2875,4618,4371],{},"). This means ",[2875,4621,4622],{},"~/components"," resolves to ",[2875,4625,4626],{},"app/components/",[2875,4628,4629],{},"~/pages",[2875,4631,4351],{},", etc.",[2863,4634,4635,4636,3001],{},"👉 For more details, see the ",[2867,4637,4640],{"href":4638,"rel":4639},"https://github.com/nuxt/nuxt/pull/27029",[2871],"PR implementing this change",[3166,4642,3269],{"id":4643},"reasons-for-change-1",[3208,4645,4646,4659],{},[3095,4647,4648,4651,4652,3221,4655,4658],{},[2987,4649,4650],{},"Performance"," - placing all your code in the root of your repo causes issues with ",[2875,4653,4654],{},".git/",[2875,4656,4657],{},"node_modules/"," folders being scanned/included by FS watchers which can significantly delay startup on non-Mac OSes.",[3095,4660,4661,4664,4665,4668,4669,4671,4672,4676],{},[2987,4662,4663],{},"IDE type-safety"," - ",[2875,4666,4667],{},"server/"," and the rest of your app are running in two entirely different contexts with different global imports available, and making sure ",[2875,4670,4667],{}," isn't ",[4673,4674,4675],"em",{},"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.",[4678,4679],"video-accordion",{"platform":4680,"title":4681,"video-id":4682},"vimeo","Watch a video from Vue School on the new directory structure","1031028378",[3166,4684,3290],{"id":4685},"migration-steps-1",[3208,4687,4688,4693,4734,4755],{},[3095,4689,4690,4691,3001],{},"Create a new directory called ",[2875,4692,1195],{},[3095,4694,4695,4696,3302,4699,3302,4702,3302,4705,3302,4708,3302,4711,3302,4713,3221,4716,4719,4720,3302,4722,3302,4724,4726,4727,3242,4730,4733],{},"Move your ",[2875,4697,4698],{},"assets/",[2875,4700,4701],{},"components/",[2875,4703,4704],{},"composables/",[2875,4706,4707],{},"app/layouts/",[2875,4709,4710],{},"app/middleware/",[2875,4712,4351],{},[2875,4714,4715],{},"app/plugins/",[2875,4717,4718],{},"utils/"," folders under it, as well as ",[2875,4721,219],{},[2875,4723,229],{},[2875,4725,224],{},". If you have an ",[2875,4728,4729],{},"app/router-options.ts",[2875,4731,4732],{},"app/spa-loading-template.html",", these paths remain the same.",[3095,4735,4736,4737,3302,4739,3302,4741,3302,4743,3302,4745,3302,4747,3221,4749,4751,4752,4754],{},"Make sure your ",[2875,4738,233],{},[2875,4740,4415],{},[2875,4742,4393],{},[2875,4744,4396],{},[2875,4746,4399],{},[2875,4748,4442],{},[2875,4750,4667],{}," folders remain outside the ",[2875,4753,1195],{}," folder, in the root of your project.",[3095,4756,4757,4758,3242,4761,4764,4765,4768,4769,4771],{},"Remember to update any third-party configuration files to work with the new directory structure, such as your ",[2875,4759,4760],{},"tailwindcss",[2875,4762,4763],{},"eslint"," configuration (if required - ",[2875,4766,4767],{},"@nuxtjs/tailwindcss"," should automatically configure ",[2875,4770,4760],{}," correctly).",[3187,4773,4774],{},[2863,4775,4776,4777],{},"You can automate this migration by running ",[2875,4778,4779],{},"npx codemod@latest nuxt/4/file-structure",[2863,4781,4782,4783,4786,4787,4790,4791,4793,4794,3302,4796,3302,4798,3221,4800,4802,4803,4806,4807,4809,4810,3302,4813,3221,4816,4818],{},"However, migration is ",[4673,4784,4785],{},"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 ",[4673,4788,4789],{},"already"," have a custom ",[2875,4792,4371],{},". In this case, you should be aware that your ",[2875,4795,4396],{},[2875,4797,4399],{},[2875,4799,4442],{},[2875,4801,4667],{}," folders will be resolved from your ",[2875,4804,4805],{},"rootDir"," rather than from your custom ",[2875,4808,4371],{},". You can override this by configuring ",[2875,4811,4812],{},"dir.modules",[2875,4814,4815],{},"dir.public",[2875,4817,4380],{}," if you need to.",[2863,4820,4821],{},"You can also force a v3 folder structure with the following configuration:",[2883,4823,4825],{"className":3011,"code":4824,"filename":233,"language":3013,"meta":2889,"style":2889},"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 `router.options.ts` and `spa-loading-template.html`\n  dir: {\n    app: 'app',\n  },\n})\n",[2875,4826,4827,4839,4844,4859,4864,4873,4888,4892],{"__ignoreMap":2889},[2893,4828,4829,4831,4833,4835,4837],{"class":2895,"line":2896},[2893,4830,3022],{"class":3021},[2893,4832,3025],{"class":3021},[2893,4834,3029],{"class":3028},[2893,4836,3033],{"class":3032},[2893,4838,3037],{"class":3036},[2893,4840,4841],{"class":2895,"line":3040},[2893,4842,4843],{"class":3316},"  // This reverts the new srcDir default from `app` back to your root directory\n",[2893,4845,4846,4849,4851,4853,4855,4857],{"class":2895,"line":3053},[2893,4847,4848],{"class":3043},"  srcDir",[2893,4850,3047],{"class":3036},[2893,4852,3536],{"class":3036},[2893,4854,3001],{"class":2903},[2893,4856,3362],{"class":3036},[2893,4858,3065],{"class":3036},[2893,4860,4861],{"class":2895,"line":3068},[2893,4862,4863],{"class":3316},"  // This specifies the directory prefix for `router.options.ts` and `spa-loading-template.html`\n",[2893,4865,4866,4869,4871],{"class":2895,"line":3074},[2893,4867,4868],{"class":3043},"  dir",[2893,4870,3047],{"class":3036},[2893,4872,3050],{"class":3036},[2893,4874,4875,4878,4880,4882,4884,4886],{"class":2895,"line":3399},[2893,4876,4877],{"class":3043},"    app",[2893,4879,3047],{"class":3036},[2893,4881,3536],{"class":3036},[2893,4883,1193],{"class":2903},[2893,4885,3362],{"class":3036},[2893,4887,3065],{"class":3036},[2893,4889,4890],{"class":2895,"line":3443},[2893,4891,3071],{"class":3036},[2893,4893,4894,4896],{"class":2895,"line":3459},[2893,4895,3077],{"class":3036},[2893,4897,3080],{"class":3032},[2858,4899,4901],{"id":4900},"singleton-data-fetching-layer","Singleton Data Fetching Layer",[2863,4903,3160,4904,4906],{},[2987,4905,3163],{},": Moderate",[3166,4908,3169],{"id":4909},"what-changed-2",[2863,4911,4912,4913,3221,4915,4917],{},"Nuxt's data fetching system (",[2875,4914,515],{},[2875,4916,527],{},") has been significantly reorganized for better performance and consistency:",[3208,4919,4920,4957,4970,4976],{},[3095,4921,4922,4925,4926,3242,4928,4930,4931,3302,4934,3221,4937,4940,4941,3302,4944,3302,4947,3302,4950,3242,4953,4956],{},[2987,4923,4924],{},"Shared refs for the same key",": All calls to ",[2875,4927,515],{},[2875,4929,527],{}," with the same key now share the same ",[2875,4932,4933],{},"data",[2875,4935,4936],{},"error",[2875,4938,4939],{},"status"," refs. This means that it is important that all calls with an explicit key must not have conflicting ",[2875,4942,4943],{},"deep",[2875,4945,4946],{},"transform",[2875,4948,4949],{},"pick",[2875,4951,4952],{},"getCachedData",[2875,4954,4955],{},"default"," options.",[3095,4958,4959,3218,4964,4966,4967,4969],{},[2987,4960,4961,4962],{},"More control over ",[2875,4963,4952],{},[2875,4965,4952],{}," function is now called every time data is fetched, even if this is caused by a watcher or calling ",[2875,4968,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.",[3095,4971,4972,4975],{},[2987,4973,4974],{},"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).",[3095,4977,4978,4981,4982,4984],{},[2987,4979,4980],{},"Data cleanup",": When the last component using data fetched with ",[2875,4983,515],{}," is unmounted, Nuxt will remove that data to avoid ever-growing memory usage.",[3166,4986,3269],{"id":4987},"reasons-for-change-2",[2863,4989,4990,4991,3001],{},"These changes have been made to improve memory usage and increase consistency with loading states across calls of ",[2875,4992,515],{},[3166,4994,3290],{"id":4995},"migration-steps-2",[3208,4997,4998,5301],{},[3095,4999,5000,5003,5004,5142,5145,5146,5148,5149],{},[2987,5001,5002],{},"Check for inconsistent options",": Review any components using the same key with different options or fetch functions.",[2883,5005,5007],{"className":3011,"code":5006,"language":3013,"meta":2889,"style":2889},"// 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,5008,5009,5014,5082],{"__ignoreMap":2889},[2893,5010,5011],{"class":2895,"line":2896},[2893,5012,5013],{"class":3316},"// This will now trigger a warning\n",[2893,5015,5016,5019,5021,5024,5026,5029,5031,5034,5037,5039,5041,5044,5046,5048,5051,5053,5056,5058,5060,5063,5065,5067,5069,5071,5074,5076,5078,5080],{"class":2895,"line":3040},[2893,5017,5018],{"class":3334},"const",[2893,5020,3377],{"class":3036},[2893,5022,5023],{"class":3043}," data",[2893,5025,3047],{"class":3036},[2893,5027,5028],{"class":3032}," users1 ",[2893,5030,3077],{"class":3036},[2893,5032,5033],{"class":3036}," =",[2893,5035,5036],{"class":3028}," useAsyncData",[2893,5038,3033],{"class":3032},[2893,5040,3362],{"class":3036},[2893,5042,5043],{"class":2903},"users",[2893,5045,3362],{"class":3036},[2893,5047,3421],{"class":3036},[2893,5049,5050],{"class":3036}," ()",[2893,5052,3335],{"class":3334},[2893,5054,5055],{"class":3028}," $fetch",[2893,5057,3033],{"class":3032},[2893,5059,3362],{"class":3036},[2893,5061,5062],{"class":2903},"/api/users",[2893,5064,3362],{"class":3036},[2893,5066,3331],{"class":3032},[2893,5068,3421],{"class":3036},[2893,5070,3377],{"class":3036},[2893,5072,5073],{"class":3043}," deep",[2893,5075,3047],{"class":3036},[2893,5077,3386],{"class":3385},[2893,5079,3389],{"class":3036},[2893,5081,3080],{"class":3032},[2893,5083,5084,5086,5088,5090,5092,5095,5097,5099,5101,5103,5105,5107,5109,5111,5113,5115,5117,5119,5121,5123,5125,5127,5129,5131,5133,5135,5138,5140],{"class":2895,"line":3053},[2893,5085,5018],{"class":3334},[2893,5087,3377],{"class":3036},[2893,5089,5023],{"class":3043},[2893,5091,3047],{"class":3036},[2893,5093,5094],{"class":3032}," users2 ",[2893,5096,3077],{"class":3036},[2893,5098,5033],{"class":3036},[2893,5100,5036],{"class":3028},[2893,5102,3033],{"class":3032},[2893,5104,3362],{"class":3036},[2893,5106,5043],{"class":2903},[2893,5108,3362],{"class":3036},[2893,5110,3421],{"class":3036},[2893,5112,5050],{"class":3036},[2893,5114,3335],{"class":3334},[2893,5116,5055],{"class":3028},[2893,5118,3033],{"class":3032},[2893,5120,3362],{"class":3036},[2893,5122,5062],{"class":2903},[2893,5124,3362],{"class":3036},[2893,5126,3331],{"class":3032},[2893,5128,3421],{"class":3036},[2893,5130,3377],{"class":3036},[2893,5132,5073],{"class":3043},[2893,5134,3047],{"class":3036},[2893,5136,5137],{"class":3385}," true",[2893,5139,3389],{"class":3036},[2893,5141,3080],{"class":3032},[5143,5144],"br",{},"It may be beneficial to extract any calls to ",[2875,5147,515],{}," that share an explicit key (and have custom options) into their own composable:",[2883,5150,5153],{"className":3011,"code":5151,"filename":5152,"language":3013,"meta":2889,"style":2889},"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","app/composables/useUserData.ts",[2875,5154,5155,5179,5189,5207,5225,5230,5241,5286,5291,5296],{"__ignoreMap":2889},[2893,5156,5157,5159,5162,5165,5167,5170,5172,5175,5177],{"class":2895,"line":2896},[2893,5158,3022],{"class":3021},[2893,5160,5161],{"class":3334}," function",[2893,5163,5164],{"class":3028}," useUserData",[2893,5166,3424],{"class":3036},[2893,5168,5169],{"class":3328},"userId",[2893,5171,3047],{"class":3036},[2893,5173,5174],{"class":2899}," string",[2893,5176,3331],{"class":3036},[2893,5178,3050],{"class":3036},[2893,5180,5181,5184,5186],{"class":2895,"line":3040},[2893,5182,5183],{"class":3021},"  return",[2893,5185,5036],{"class":3028},[2893,5187,5188],{"class":3043},"(\n",[2893,5190,5191,5194,5197,5200,5202,5205],{"class":2895,"line":3053},[2893,5192,5193],{"class":3036},"    `",[2893,5195,5196],{"class":2903},"user-",[2893,5198,5199],{"class":3036},"${",[2893,5201,5169],{"class":3032},[2893,5203,5204],{"class":3036},"}`",[2893,5206,3065],{"class":3036},[2893,5208,5209,5212,5214,5217,5219,5221,5223],{"class":2895,"line":3068},[2893,5210,5211],{"class":3036},"    ()",[2893,5213,3335],{"class":3334},[2893,5215,5216],{"class":3028}," fetchUser",[2893,5218,3033],{"class":3043},[2893,5220,5169],{"class":3032},[2893,5222,3331],{"class":3043},[2893,5224,3065],{"class":3036},[2893,5226,5227],{"class":2895,"line":3074},[2893,5228,5229],{"class":3036},"    {\n",[2893,5231,5232,5235,5237,5239],{"class":2895,"line":3399},[2893,5233,5234],{"class":3043},"      deep",[2893,5236,3047],{"class":3036},[2893,5238,5137],{"class":3385},[2893,5240,3065],{"class":3036},[2893,5242,5243,5246,5248,5251,5253,5255,5258,5261,5264,5266,5269,5271,5274,5277,5280,5282,5284],{"class":2895,"line":3443},[2893,5244,5245],{"class":3028},"      transform",[2893,5247,3047],{"class":3036},[2893,5249,5250],{"class":3328}," user",[2893,5252,3335],{"class":3334},[2893,5254,3424],{"class":3043},[2893,5256,5257],{"class":3036},"{",[2893,5259,5260],{"class":3036}," ...",[2893,5262,5263],{"class":3032},"user",[2893,5265,3421],{"class":3036},[2893,5267,5268],{"class":3043}," lastAccessed",[2893,5270,3047],{"class":3036},[2893,5272,5273],{"class":3036}," new",[2893,5275,5276],{"class":3028}," Date",[2893,5278,5279],{"class":3043},"() ",[2893,5281,3077],{"class":3036},[2893,5283,3331],{"class":3043},[2893,5285,3065],{"class":3036},[2893,5287,5288],{"class":2895,"line":3459},[2893,5289,5290],{"class":3036},"    },\n",[2893,5292,5293],{"class":2895,"line":3487},[2893,5294,5295],{"class":3043},"  )\n",[2893,5297,5298],{"class":2895,"line":3493},[2893,5299,5300],{"class":3036},"}\n",[3095,5302,5303,3047,5309],{},[2987,5304,5305,5306,5308],{},"Update ",[2875,5307,4952],{}," implementations",[2883,5310,5314],{"className":5311,"code":5312,"language":5313,"meta":2889,"style":2889},"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,5315,5316,5321,5329,5336,5342,5350,5357,5364,5371,5378,5384,5390,5396],{"__ignoreMap":2889},[2893,5317,5318],{"class":2895,"line":2896},[2893,5319,5320],{"class":3032},"useAsyncData('key', fetchFunction, {\n",[2893,5322,5323,5326],{"class":2895,"line":3040},[2893,5324,5325],{"class":3036},"-",[2893,5327,5328],{"class":3043},"  getCachedData: (key, nuxtApp) => {\n",[2893,5330,5331,5333],{"class":2895,"line":3053},[2893,5332,5325],{"class":3036},[2893,5334,5335],{"class":3043},"    return cachedData[key]\n",[2893,5337,5338,5340],{"class":2895,"line":3068},[2893,5339,5325],{"class":3036},[2893,5341,3490],{"class":3043},[2893,5343,5344,5347],{"class":2895,"line":3074},[2893,5345,5346],{"class":3036},"+",[2893,5348,5349],{"class":2903},"  getCachedData: (key, nuxtApp, ctx) => {\n",[2893,5351,5352,5354],{"class":2895,"line":3399},[2893,5353,5346],{"class":3036},[2893,5355,5356],{"class":2903},"    // ctx.cause - can be 'initial' | 'refresh:hook' | 'refresh:manual' | 'watch'\n",[2893,5358,5359,5361],{"class":2895,"line":3443},[2893,5360,5346],{"class":3036},[2893,5362,5363],{"class":2903},"    \n",[2893,5365,5366,5368],{"class":2895,"line":3459},[2893,5367,5346],{"class":3036},[2893,5369,5370],{"class":2903},"    // Example: Don't use cache on manual refresh\n",[2893,5372,5373,5375],{"class":2895,"line":3487},[2893,5374,5346],{"class":3036},[2893,5376,5377],{"class":2903},"    if (ctx.cause === 'refresh:manual') return undefined\n",[2893,5379,5380,5382],{"class":2895,"line":3493},[2893,5381,5346],{"class":3036},[2893,5383,5363],{"class":2903},[2893,5385,5386,5388],{"class":2895,"line":3500},[2893,5387,5346],{"class":3036},[2893,5389,5335],{"class":2903},[2893,5391,5392,5394],{"class":2895,"line":3505},[2893,5393,5346],{"class":3036},[2893,5395,3490],{"class":2903},[2893,5397,5398],{"class":2895,"line":3511},[2893,5399,5400],{"class":3032},"})\n",[2863,5402,5403],{},"Alternatively, for now, you can disable this behaviour with:",[2883,5405,5407],{"className":3011,"code":5406,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  experimental: {\n    granularCachedData: false,\n    purgeCachedData: false,\n  },\n})\n",[2875,5408,5409,5421,5430,5441,5452,5456],{"__ignoreMap":2889},[2893,5410,5411,5413,5415,5417,5419],{"class":2895,"line":2896},[2893,5412,3022],{"class":3021},[2893,5414,3025],{"class":3021},[2893,5416,3029],{"class":3028},[2893,5418,3033],{"class":3032},[2893,5420,3037],{"class":3036},[2893,5422,5423,5426,5428],{"class":2895,"line":3040},[2893,5424,5425],{"class":3043},"  experimental",[2893,5427,3047],{"class":3036},[2893,5429,3050],{"class":3036},[2893,5431,5432,5435,5437,5439],{"class":2895,"line":3053},[2893,5433,5434],{"class":3043},"    granularCachedData",[2893,5436,3047],{"class":3036},[2893,5438,3386],{"class":3385},[2893,5440,3065],{"class":3036},[2893,5442,5443,5446,5448,5450],{"class":2895,"line":3068},[2893,5444,5445],{"class":3043},"    purgeCachedData",[2893,5447,3047],{"class":3036},[2893,5449,3386],{"class":3385},[2893,5451,3065],{"class":3036},[2893,5453,5454],{"class":2895,"line":3074},[2893,5455,3071],{"class":3036},[2893,5457,5458,5460],{"class":2895,"line":3399},[2893,5459,3077],{"class":3036},[2893,5461,3080],{"class":3032},[2858,5463,5465],{"id":5464},"corrected-module-loading-order-in-layers","Corrected Module Loading Order in Layers",[2863,5467,3160,5468,5470],{},[2987,5469,3163],{},": Minimal",[3166,5472,3169],{"id":5473},"what-changed-3",[2863,5475,5476,5477,5480],{},"The order in which modules are loaded when using ",[2867,5478,5479],{"href":1399},"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,5482,5483],{},"Now modules are loaded in the correct order:",[3208,5485,5486,5492],{},[3095,5487,5488,5491],{},[2987,5489,5490],{},"Layer modules first"," (in extend order - deeper layers first)",[3095,5493,5494,5497],{},[2987,5495,5496],{},"Project modules last"," (highest priority)",[2863,5499,5500],{},"This affects both:",[3092,5502,5503,5511],{},[3095,5504,5505,5506,5508,5509],{},"Modules defined in the ",[2875,5507,162],{}," array in ",[2875,5510,233],{},[3095,5512,5513,5514,5516],{},"Auto-discovered modules from the ",[2875,5515,4396],{}," directory",[3166,5518,3269],{"id":5519},"reasons-for-change-3",[2863,5521,5522],{},"This change ensures that:",[3092,5524,5525,5528,5531],{},[3095,5526,5527],{},"Extended layers have lower priority than the consuming project",[3095,5529,5530],{},"Module execution order matches the intuitive layer inheritance pattern",[3095,5532,5533],{},"Module configuration and hooks work as expected in multi-layer setups",[3166,5535,3290],{"id":5536},"migration-steps-3",[2863,5538,5539,5542],{},[2987,5540,5541],{},"Most projects will not need changes",", as this corrects the loading order to match expected behavior.",[2863,5544,5545],{},"However, if your project was relying on the previous incorrect order, you may need to:",[3208,5547,5548,5554,5560],{},[3095,5549,5550,5553],{},[2987,5551,5552],{},"Review module dependencies",": Check if any modules depend on specific loading order",[3095,5555,5556,5559],{},[2987,5557,5558],{},"Adjust module configuration",": If modules were configured to work around the incorrect order",[3095,5561,5562,5565],{},[2987,5563,5564],{},"Test thoroughly",": Ensure all functionality works as expected with the corrected order",[2863,5567,5568],{},"Example of the new correct order:",[2883,5570,5572],{"className":3011,"code":5571,"language":3013,"meta":2889,"style":2889},"// 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,5573,5574,5579,5591,5622,5628,5632,5637,5649,5669,5697,5703,5707,5712,5717,5722,5727],{"__ignoreMap":2889},[2893,5575,5576],{"class":2895,"line":2896},[2893,5577,5578],{"class":3316},"// Layer: my-layer/nuxt.config.ts\n",[2893,5580,5581,5583,5585,5587,5589],{"class":2895,"line":3040},[2893,5582,3022],{"class":3021},[2893,5584,3025],{"class":3021},[2893,5586,3029],{"class":3028},[2893,5588,3033],{"class":3032},[2893,5590,3037],{"class":3036},[2893,5592,5593,5596,5598,5601,5603,5606,5608,5610,5612,5615,5617,5620],{"class":2895,"line":3053},[2893,5594,5595],{"class":3043},"  modules",[2893,5597,3047],{"class":3036},[2893,5599,5600],{"class":3032}," [",[2893,5602,3362],{"class":3036},[2893,5604,5605],{"class":2903},"layer-module-1",[2893,5607,3362],{"class":3036},[2893,5609,3421],{"class":3036},[2893,5611,3536],{"class":3036},[2893,5613,5614],{"class":2903},"layer-module-2",[2893,5616,3362],{"class":3036},[2893,5618,5619],{"class":3032},"]",[2893,5621,3065],{"class":3036},[2893,5623,5624,5626],{"class":2895,"line":3068},[2893,5625,3077],{"class":3036},[2893,5627,3080],{"class":3032},[2893,5629,5630],{"class":2895,"line":3074},[2893,5631,3396],{"emptyLinePlaceholder":1196},[2893,5633,5634],{"class":2895,"line":3399},[2893,5635,5636],{"class":3316},"// Project: nuxt.config.ts\n",[2893,5638,5639,5641,5643,5645,5647],{"class":2895,"line":3443},[2893,5640,3022],{"class":3021},[2893,5642,3025],{"class":3021},[2893,5644,3029],{"class":3028},[2893,5646,3033],{"class":3032},[2893,5648,3037],{"class":3036},[2893,5650,5651,5654,5656,5658,5660,5663,5665,5667],{"class":2895,"line":3459},[2893,5652,5653],{"class":3043},"  extends",[2893,5655,3047],{"class":3036},[2893,5657,5600],{"class":3032},[2893,5659,3362],{"class":3036},[2893,5661,5662],{"class":2903},"./my-layer",[2893,5664,3362],{"class":3036},[2893,5666,5619],{"class":3032},[2893,5668,3065],{"class":3036},[2893,5670,5671,5673,5675,5677,5679,5682,5684,5686,5688,5691,5693,5695],{"class":2895,"line":3487},[2893,5672,5595],{"class":3043},[2893,5674,3047],{"class":3036},[2893,5676,5600],{"class":3032},[2893,5678,3362],{"class":3036},[2893,5680,5681],{"class":2903},"project-module-1",[2893,5683,3362],{"class":3036},[2893,5685,3421],{"class":3036},[2893,5687,3536],{"class":3036},[2893,5689,5690],{"class":2903},"project-module-2",[2893,5692,3362],{"class":3036},[2893,5694,5619],{"class":3032},[2893,5696,3065],{"class":3036},[2893,5698,5699,5701],{"class":2895,"line":3493},[2893,5700,3077],{"class":3036},[2893,5702,3080],{"class":3032},[2893,5704,5705],{"class":2895,"line":3500},[2893,5706,3396],{"emptyLinePlaceholder":1196},[2893,5708,5709],{"class":2895,"line":3505},[2893,5710,5711],{"class":3316},"// Loading order (corrected):\n",[2893,5713,5714],{"class":2895,"line":3511},[2893,5715,5716],{"class":3316},"// 1. layer-module-1\n",[2893,5718,5719],{"class":2895,"line":3528},[2893,5720,5721],{"class":3316},"// 2. layer-module-2\n",[2893,5723,5724],{"class":2895,"line":3546},[2893,5725,5726],{"class":3316},"// 3. project-module-1 (can override layer modules)\n",[2893,5728,5729],{"class":2895,"line":3559},[2893,5730,5731],{"class":3316},"// 4. project-module-2 (can override layer modules)\n",[2863,5733,5734,5735,5741],{},"If you encounter issues with module order dependencies due to needing to register a hook, consider using the ",[2867,5736,5737,5740],{"href":1343},[2875,5738,5739],{},"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,5743,5744,5745,3221,5750,5755],{},"👉 See ",[2867,5746,5749],{"href":5747,"rel":5748},"https://github.com/nuxt/nuxt/pull/31507",[2871],"PR #31507",[2867,5751,5754],{"href":5752,"rel":5753},"https://github.com/nuxt/nuxt/issues/25719",[2871],"issue #25719"," for more details.",[2858,5757,5759],{"id":5758},"deduplication-of-route-metadata","Deduplication of Route Metadata",[2863,5761,3160,5762,5470],{},[2987,5763,3163],{},[3166,5765,3169],{"id":5766},"what-changed-4",[2863,5768,5769,5770,5772,5773,3302,5775,5778,5779,3221,5782,5785],{},"It's possible to set some route metadata using ",[2875,5771,678],{},", such as the ",[2875,5774,3603],{},[2875,5776,5777],{},"path",", and so on. Previously these were available both on the route and on route metadata (for example, ",[2875,5780,5781],{},"route.name",[2875,5783,5784],{},"route.meta.name",").",[2863,5787,5788],{},"Now, they are only accessible on the route object.",[3166,5790,3269],{"id":5791},"reasons-for-change-4",[2863,5793,5794,5795,5798],{},"This is a result of enabling ",[2875,5796,5797],{},"experimental.scanPageMeta"," by default, and is a performance optimization.",[3166,5800,3290],{"id":5801},"migration-steps-4",[2863,5803,5804],{},"The migration should be straightforward:",[2883,5806,5808],{"className":5311,"code":5807,"language":5313,"meta":2889,"style":2889},"  const route = useRoute()\n  \n- console.log(route.meta.name)\n+ console.log(route.name)\n",[2875,5809,5810,5815,5820,5827],{"__ignoreMap":2889},[2893,5811,5812],{"class":2895,"line":2896},[2893,5813,5814],{"class":3032},"  const route = useRoute()\n",[2893,5816,5817],{"class":2895,"line":3040},[2893,5818,5819],{"class":3032},"  \n",[2893,5821,5822,5824],{"class":2895,"line":3053},[2893,5823,5325],{"class":3036},[2893,5825,5826],{"class":3043}," console.log(route.meta.name)\n",[2893,5828,5829,5831],{"class":2895,"line":3068},[2893,5830,5346],{"class":3036},[2893,5832,5833],{"class":2903}," console.log(route.name)\n",[2858,5835,5837],{"id":5836},"normalized-component-names","Normalized Component Names",[2863,5839,3160,5840,4906],{},[2987,5841,3163],{},[2863,5843,5844],{},"Vue will now generate component names that match the Nuxt pattern for component naming.",[3166,5846,3169],{"id":5847},"what-changed-5",[2863,5849,5850],{},"By default, if you haven't set it manually, Vue will assign a component name that matches\nthe filename of the component.",[2883,5852,5855],{"className":2885,"code":5853,"filename":5854,"language":2888,"meta":2889,"style":2889},"├─ components/\n├─── SomeFolder/\n├───── MyComponent.vue\n","Directory structure",[2875,5856,5857,5865,5873],{"__ignoreMap":2889},[2893,5858,5859,5862],{"class":2895,"line":2896},[2893,5860,5861],{"class":2899},"├─",[2893,5863,5864],{"class":2903}," components/\n",[2893,5866,5867,5870],{"class":2895,"line":3040},[2893,5868,5869],{"class":2899},"├───",[2893,5871,5872],{"class":2903}," SomeFolder/\n",[2893,5874,5875,5878],{"class":2895,"line":3053},[2893,5876,5877],{"class":2899},"├─────",[2893,5879,5880],{"class":2903}," MyComponent.vue\n",[2863,5882,5883,5884,5887,5888,5890],{},"In this case, the component name would be ",[2875,5885,5886],{},"MyComponent",", as far as Vue is concerned. If you wanted to use ",[2875,5889,3118],{}," with it, or identify it in the Vue DevTools, you would need to use this name.",[2863,5892,5893,5894,3001],{},"But in order to auto-import it, you would need to use ",[2875,5895,5896],{},"SomeFolderMyComponent",[2863,5898,5899],{},"With this change, these two values will match, and Vue will generate a component name that matches the Nuxt pattern for component naming.",[3166,5901,3290],{"id":5902},"migration-steps-5",[2863,5904,5905,5906,5909,5910,5913,5914,5916],{},"Ensure that you use the updated name in any tests which use ",[2875,5907,5908],{},"findComponent"," from ",[2875,5911,5912],{},"@vue/test-utils"," and in any ",[2875,5915,3118],{}," which depends on the name of your component.",[2863,5918,5403],{},[2883,5920,5922],{"className":3011,"code":5921,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  experimental: {\n    normalizeComponentNames: false,\n  },\n})\n",[2875,5923,5924,5936,5944,5955,5959],{"__ignoreMap":2889},[2893,5925,5926,5928,5930,5932,5934],{"class":2895,"line":2896},[2893,5927,3022],{"class":3021},[2893,5929,3025],{"class":3021},[2893,5931,3029],{"class":3028},[2893,5933,3033],{"class":3032},[2893,5935,3037],{"class":3036},[2893,5937,5938,5940,5942],{"class":2895,"line":3040},[2893,5939,5425],{"class":3043},[2893,5941,3047],{"class":3036},[2893,5943,3050],{"class":3036},[2893,5945,5946,5949,5951,5953],{"class":2895,"line":3053},[2893,5947,5948],{"class":3043},"    normalizeComponentNames",[2893,5950,3047],{"class":3036},[2893,5952,3386],{"class":3385},[2893,5954,3065],{"class":3036},[2893,5956,5957],{"class":2895,"line":3068},[2893,5958,3071],{"class":3036},[2893,5960,5961,5963],{"class":2895,"line":3074},[2893,5962,3077],{"class":3036},[2893,5964,3080],{"class":3032},[2858,5966,5968],{"id":5967},"unhead-v2","Unhead v2",[2863,5970,3160,5971,5470],{},[2987,5972,3163],{},[3166,5974,3169],{"id":5975},"what-changed-6",[2863,5977,5978,5983,5984,5987],{},[2867,5979,5982],{"href":5980,"rel":5981},"https://unhead.unjs.io/",[2871],"Unhead",", used to generate ",[2875,5985,5986],{},"\u003Chead>"," tags, has been updated to version 2. While mostly compatible it includes several breaking changes\nfor lower-level APIs.",[3092,5989,5990,6005,6008],{},[3095,5991,5992,5993,3302,5996,3302,5999,3302,6002,3001],{},"Removed props: ",[2875,5994,5995],{},"vmid",[2875,5997,5998],{},"hid",[2875,6000,6001],{},"children",[2875,6003,6004],{},"body",[3095,6006,6007],{},"Promise input no longer supported.",[3095,6009,6010],{},"Tags are now sorted using Capo.js by default.",[3166,6012,3290],{"id":6013},"migration-steps-6",[2863,6015,6016],{},"The above changes should have minimal impact on your app.",[2863,6018,6019],{},"If you have issues you should verify:",[3092,6021,6022],{},[3095,6023,6024],{},"You're not using any of the removed props.",[2883,6026,6028],{"className":5311,"code":6027,"language":5313,"meta":2889,"style":2889},"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,6029,6030,6035,6040,6045,6050,6057,6064,6069],{"__ignoreMap":2889},[2893,6031,6032],{"class":2895,"line":2896},[2893,6033,6034],{"class":3032},"useHead({\n",[2893,6036,6037],{"class":2895,"line":3040},[2893,6038,6039],{"class":3032},"  meta: [{ \n",[2893,6041,6042],{"class":2895,"line":3053},[2893,6043,6044],{"class":3032},"    name: 'description', \n",[2893,6046,6047],{"class":2895,"line":3068},[2893,6048,6049],{"class":3032},"    // meta tags don't need a vmid, or a key    \n",[2893,6051,6052,6054],{"class":2895,"line":3074},[2893,6053,5325],{"class":3036},[2893,6055,6056],{"class":3043},"   vmid: 'description' \n",[2893,6058,6059,6061],{"class":2895,"line":3399},[2893,6060,5325],{"class":3036},[2893,6062,6063],{"class":3043},"   hid: 'description'\n",[2893,6065,6066],{"class":2895,"line":3443},[2893,6067,6068],{"class":3032},"  }]\n",[2893,6070,6071],{"class":2895,"line":3459},[2893,6072,5400],{"class":3032},[3092,6074,6075],{},[3095,6076,6077,6078,3242,6083,6088],{},"If you're using ",[2867,6079,6082],{"href":6080,"rel":6081},"https://unhead.unjs.io/docs/head/guides/plugins/template-params",[2871],"Template Params",[2867,6084,6087],{"href":6085,"rel":6086},"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.",[2883,6090,6092],{"className":3011,"code":6091,"language":3013,"meta":2889,"style":2889},"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,6093,6094,6121,6125,6138,6147,6163,6180,6195,6199],{"__ignoreMap":2889},[2893,6095,6096,6099,6101,6104,6106,6109,6111,6114,6116,6119],{"class":2895,"line":2896},[2893,6097,6098],{"class":3021},"import",[2893,6100,3377],{"class":3036},[2893,6102,6103],{"class":3032}," AliasSortingPlugin",[2893,6105,3421],{"class":3036},[2893,6107,6108],{"class":3032}," TemplateParamsPlugin",[2893,6110,3389],{"class":3036},[2893,6112,6113],{"class":3021}," from",[2893,6115,3536],{"class":3036},[2893,6117,6118],{"class":2903},"@unhead/vue/plugins",[2893,6120,3750],{"class":3036},[2893,6122,6123],{"class":2895,"line":3040},[2893,6124,3396],{"emptyLinePlaceholder":1196},[2893,6126,6127,6129,6131,6134,6136],{"class":2895,"line":3053},[2893,6128,3022],{"class":3021},[2893,6130,3025],{"class":3021},[2893,6132,6133],{"class":3028}," defineNuxtPlugin",[2893,6135,3033],{"class":3032},[2893,6137,3037],{"class":3036},[2893,6139,6140,6143,6145],{"class":2895,"line":3068},[2893,6141,6142],{"class":3043},"  setup",[2893,6144,5050],{"class":3036},[2893,6146,3050],{"class":3036},[2893,6148,6149,6152,6155,6157,6160],{"class":2895,"line":3074},[2893,6150,6151],{"class":3334},"    const",[2893,6153,6154],{"class":3032}," unhead",[2893,6156,5033],{"class":3036},[2893,6158,6159],{"class":3028}," injectHead",[2893,6161,6162],{"class":3043},"()\n",[2893,6164,6165,6168,6170,6173,6175,6178],{"class":2895,"line":3399},[2893,6166,6167],{"class":3032},"    unhead",[2893,6169,3001],{"class":3036},[2893,6171,6172],{"class":3028},"use",[2893,6174,3033],{"class":3043},[2893,6176,6177],{"class":3032},"TemplateParamsPlugin",[2893,6179,3080],{"class":3043},[2893,6181,6182,6184,6186,6188,6190,6193],{"class":2895,"line":3443},[2893,6183,6167],{"class":3032},[2893,6185,3001],{"class":3036},[2893,6187,6172],{"class":3028},[2893,6189,3033],{"class":3043},[2893,6191,6192],{"class":3032},"AliasSortingPlugin",[2893,6194,3080],{"class":3043},[2893,6196,6197],{"class":2895,"line":3459},[2893,6198,3071],{"class":3036},[2893,6200,6201,6203],{"class":2895,"line":3487},[2893,6202,3077],{"class":3036},[2893,6204,3080],{"class":3032},[2863,6206,6207,6208,3086,6211,3242,6214,3001],{},"While not required it's recommended to update any imports from ",[2875,6209,6210],{},"@unhead/vue",[2875,6212,6213],{},"#imports",[2875,6215,6216],{},"nuxt/app",[2883,6218,6220],{"className":5311,"code":6219,"language":5313,"meta":2889,"style":2889},"-import { useHead } from '@unhead/vue'\n+import { useHead } from '#imports'\n",[2875,6221,6222,6229],{"__ignoreMap":2889},[2893,6223,6224,6226],{"class":2895,"line":2896},[2893,6225,5325],{"class":3036},[2893,6227,6228],{"class":3043},"import { useHead } from '@unhead/vue'\n",[2893,6230,6231,6233],{"class":2895,"line":3040},[2893,6232,5346],{"class":3036},[2893,6234,6235],{"class":2903},"import { useHead } from '#imports'\n",[2863,6237,6238,6239,6242],{},"If you still have issues you may revert to the v1 behavior by enabling the ",[2875,6240,6241],{},"head.legacy"," config.",[2883,6244,6246],{"className":3011,"code":6245,"language":3013,"meta":2889,"style":2889},"export default defineNuxtConfig({\n  unhead: {\n    legacy: true,\n  },\n})\n",[2875,6247,6248,6260,6269,6280,6284],{"__ignoreMap":2889},[2893,6249,6250,6252,6254,6256,6258],{"class":2895,"line":2896},[2893,6251,3022],{"class":3021},[2893,6253,3025],{"class":3021},[2893,6255,3029],{"class":3028},[2893,6257,3033],{"class":3032},[2893,6259,3037],{"class":3036},[2893,6261,6262,6265,6267],{"class":2895,"line":3040},[2893,6263,6264],{"class":3043},"  unhead",[2893,6266,3047],{"class":3036},[2893,6268,3050],{"class":3036},[2893,6270,6271,6274,6276,6278],{"class":2895,"line":3053},[2893,6272,6273],{"class":3043},"    legacy",[2893,6275,3047],{"class":3036},[2893,6277,5137],{"class":3385},[2893,6279,3065],{"class":3036},[2893,6281,6282],{"class":2895,"line":3068},[2893,6283,3071],{"class":3036},[2893,6285,6286,6288],{"class":2895,"line":3074},[2893,6287,3077],{"class":3036},[2893,6289,3080],{"class":3032},[2858,6291,6293],{"id":6292},"new-dom-location-for-spa-loading-screen","New DOM Location for SPA Loading Screen",[2863,6295,3160,6296,5470],{},[2987,6297,3163],{},[3166,6299,3169],{"id":6300},"what-changed-7",[2863,6302,6303,6304,6307,6308,6311,6312,6315],{},"When rendering a client-only page (with ",[2875,6305,6306],{},"ssr: false","), we optionally render a loading screen (from ",[2875,6309,6310],{},"~/app/spa-loading-template.html"," - note that this has also changed to ",[2875,6313,6314],{},"~/spa-loading-template.html"," in Nuxt 4), within the Nuxt app root:",[2883,6317,6321],{"className":6318,"code":6319,"language":6320,"meta":2889,"style":2889},"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,6322,6323,6348,6353],{"__ignoreMap":2889},[2893,6324,6325,6328,6331,6334,6337,6340,6343,6345],{"class":2895,"line":2896},[2893,6326,6327],{"class":3036},"\u003C",[2893,6329,6330],{"class":3043},"div",[2893,6332,6333],{"class":3334}," id",[2893,6335,6336],{"class":3036},"=",[2893,6338,6339],{"class":3036},"\"",[2893,6341,6342],{"class":2903},"__nuxt",[2893,6344,6339],{"class":3036},[2893,6346,6347],{"class":3036},">\n",[2893,6349,6350],{"class":2895,"line":3040},[2893,6351,6352],{"class":3316},"  \u003C!-- spa loading template -->\n",[2893,6354,6355,6358,6360],{"class":2895,"line":3053},[2893,6356,6357],{"class":3036},"\u003C/",[2893,6359,6330],{"class":3043},[2893,6361,6347],{"class":3036},[2863,6363,6364],{},"Now, we default to rendering the template alongside the Nuxt app root:",[2883,6366,6368],{"className":6318,"code":6367,"language":6320,"meta":2889,"style":2889},"\u003Cdiv id=\"__nuxt\">\u003C/div>\n\u003C!-- spa loading template -->\n",[2875,6369,6370,6393],{"__ignoreMap":2889},[2893,6371,6372,6374,6376,6378,6380,6382,6384,6386,6389,6391],{"class":2895,"line":2896},[2893,6373,6327],{"class":3036},[2893,6375,6330],{"class":3043},[2893,6377,6333],{"class":3334},[2893,6379,6336],{"class":3036},[2893,6381,6339],{"class":3036},[2893,6383,6342],{"class":2903},[2893,6385,6339],{"class":3036},[2893,6387,6388],{"class":3036},">\u003C/",[2893,6390,6330],{"class":3043},[2893,6392,6347],{"class":3036},[2893,6394,6395],{"class":2895,"line":3040},[2893,6396,6397],{"class":3316},"\u003C!-- spa loading template -->\n",[3166,6399,3269],{"id":6400},"reasons-for-change-5",[2863,6402,6403],{},"This allows the spa loading template to remain in the DOM until the Vue app suspense resolves, preventing a flash of white.",[3166,6405,3290],{"id":6406},"migration-steps-7",[2863,6408,6409,6410,6413,6414,3221,6417,6420],{},"If you were targeting the spa loading template with CSS or ",[2875,6411,6412],{},"document.queryElement"," you will need to update your selectors. For this purpose you can use the new ",[2875,6415,6416],{},"app.spaLoaderTag",[2875,6418,6419],{},"app.spaLoaderAttrs"," configuration options.",[2863,6422,6423],{},"Alternatively, you can revert to the previous behaviour with:",[2883,6425,6427],{"className":3011,"code":6426,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  experimental: {\n    spaLoadingTemplateLocation: 'within',\n  },\n})\n",[2875,6428,6429,6441,6449,6465,6469],{"__ignoreMap":2889},[2893,6430,6431,6433,6435,6437,6439],{"class":2895,"line":2896},[2893,6432,3022],{"class":3021},[2893,6434,3025],{"class":3021},[2893,6436,3029],{"class":3028},[2893,6438,3033],{"class":3032},[2893,6440,3037],{"class":3036},[2893,6442,6443,6445,6447],{"class":2895,"line":3040},[2893,6444,5425],{"class":3043},[2893,6446,3047],{"class":3036},[2893,6448,3050],{"class":3036},[2893,6450,6451,6454,6456,6458,6461,6463],{"class":2895,"line":3053},[2893,6452,6453],{"class":3043},"    spaLoadingTemplateLocation",[2893,6455,3047],{"class":3036},[2893,6457,3536],{"class":3036},[2893,6459,6460],{"class":2903},"within",[2893,6462,3362],{"class":3036},[2893,6464,3065],{"class":3036},[2893,6466,6467],{"class":2895,"line":3068},[2893,6468,3071],{"class":3036},[2893,6470,6471,6473],{"class":2895,"line":3074},[2893,6472,3077],{"class":3036},[2893,6474,3080],{"class":3032},[2858,6476,6478,6479],{"id":6477},"parsed-errordata","Parsed ",[2875,6480,6481],{},"error.data",[2863,6483,3160,6484,5470],{},[2987,6485,3163],{},[2863,6487,6488,6489,6491,6492,6494],{},"It was possible to throw an error with a ",[2875,6490,4933],{}," property, but this was not parsed. Now, it is parsed and made available in the ",[2875,6493,4936],{}," object. Although a fix, this is technically a breaking change if you were relying on the previous behavior and parsing it manually.",[3166,6496,3290],{"id":6497},"migration-steps-8",[2863,6499,6500,6501,6503,6504,3047],{},"Update your custom ",[2875,6502,229],{}," to remove any additional parsing of ",[2875,6505,6481],{},[2883,6507,6509],{"className":5311,"code":6508,"language":5313,"meta":2889,"style":2889},"  \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,6510,6511,6516,6521,6525,6530,6535,6540,6544,6551,6558],{"__ignoreMap":2889},[2893,6512,6513],{"class":2895,"line":2896},[2893,6514,6515],{"class":3032},"  \u003Cscript setup lang=\"ts\">\n",[2893,6517,6518],{"class":2895,"line":3040},[2893,6519,6520],{"class":3032},"  import type { NuxtError } from '#app'\n",[2893,6522,6523],{"class":2895,"line":3053},[2893,6524,3396],{"emptyLinePlaceholder":1196},[2893,6526,6527],{"class":2895,"line":3068},[2893,6528,6529],{"class":3032},"  const props = defineProps({\n",[2893,6531,6532],{"class":2895,"line":3074},[2893,6533,6534],{"class":3032},"    error: Object as () => NuxtError\n",[2893,6536,6537],{"class":2895,"line":3399},[2893,6538,6539],{"class":3032},"  })\n",[2893,6541,6542],{"class":2895,"line":3443},[2893,6543,3396],{"emptyLinePlaceholder":1196},[2893,6545,6546,6548],{"class":2895,"line":3459},[2893,6547,5325],{"class":3036},[2893,6549,6550],{"class":3043}," const data = JSON.parse(error.data)\n",[2893,6552,6553,6555],{"class":2895,"line":3487},[2893,6554,5346],{"class":3036},[2893,6556,6557],{"class":2903}," const data = error.data\n",[2893,6559,6560],{"class":2895,"line":3493},[2893,6561,6562],{"class":3032},"  \u003C/script>\n",[2858,6564,6566],{"id":6565},"more-granular-inline-styles","More Granular Inline Styles",[2863,6568,3160,6569,4906],{},[2987,6570,3163],{},[2863,6572,6573],{},"Nuxt will now only inline styles for Vue components, not global CSS.",[3166,6575,3169],{"id":6576},"what-changed-8",[2863,6578,6579,6580,6583,6584,6587],{},"Previously, Nuxt would inline all CSS, including global styles, and remove ",[2875,6581,6582],{},"\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,6585,6586],{},".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.",[3166,6589,3290],{"id":6590},"migration-steps-9",[2863,6592,6593,6594,6597],{},"This feature is fully configurable and you can revert to the previous behavior by setting ",[2875,6595,6596],{},"inlineStyles: true"," to inline global CSS as well as per-component CSS.",[2883,6599,6601],{"className":3011,"code":6600,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  features: {\n    inlineStyles: true,\n  },\n})\n",[2875,6602,6603,6615,6624,6635,6639],{"__ignoreMap":2889},[2893,6604,6605,6607,6609,6611,6613],{"class":2895,"line":2896},[2893,6606,3022],{"class":3021},[2893,6608,3025],{"class":3021},[2893,6610,3029],{"class":3028},[2893,6612,3033],{"class":3032},[2893,6614,3037],{"class":3036},[2893,6616,6617,6620,6622],{"class":2895,"line":3040},[2893,6618,6619],{"class":3043},"  features",[2893,6621,3047],{"class":3036},[2893,6623,3050],{"class":3036},[2893,6625,6626,6629,6631,6633],{"class":2895,"line":3053},[2893,6627,6628],{"class":3043},"    inlineStyles",[2893,6630,3047],{"class":3036},[2893,6632,5137],{"class":3385},[2893,6634,3065],{"class":3036},[2893,6636,6637],{"class":2895,"line":3068},[2893,6638,3071],{"class":3036},[2893,6640,6641,6643],{"class":2895,"line":3074},[2893,6642,3077],{"class":3036},[2893,6644,3080],{"class":3032},[2858,6646,6648],{"id":6647},"scan-page-meta-after-resolution","Scan Page Meta After Resolution",[2863,6650,3160,6651,5470],{},[2987,6652,3163],{},[3166,6654,3169],{"id":6655},"what-changed-9",[2863,6657,6658,6659,3454,6661,6664,6665,6668],{},"We now scan page metadata (defined in ",[2875,6660,678],{},[4673,6662,6663],{},"after"," calling the ",[2875,6666,6667],{},"pages:extend"," hook rather than before.",[3166,6670,3269],{"id":6671},"reasons-for-change-6",[2863,6673,6674,6675,6677,6678,6681],{},"This was to allow scanning metadata for pages that users wanted to add in ",[2875,6676,6667],{},". We still offer an opportunity to change or override page metadata in a new ",[2875,6679,6680],{},"pages:resolved"," hook.",[3166,6683,3290],{"id":6684},"migration-steps-10",[2863,6686,6687,6688,6690,6691,3001],{},"If you want to override page metadata, do that in ",[2875,6689,6680],{}," rather than in ",[2875,6692,6667],{},[2883,6694,6696],{"className":5311,"code":6695,"language":5313,"meta":2889,"style":2889},"  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,6697,6698,6703,6708,6715,6722,6727,6732,6737,6742,6746],{"__ignoreMap":2889},[2893,6699,6700],{"class":2895,"line":2896},[2893,6701,6702],{"class":3032},"  export default defineNuxtConfig({\n",[2893,6704,6705],{"class":2895,"line":3040},[2893,6706,6707],{"class":3032},"    hooks: {\n",[2893,6709,6710,6712],{"class":2895,"line":3053},[2893,6711,5325],{"class":3036},[2893,6713,6714],{"class":3043},"     'pages:extend'(pages) {\n",[2893,6716,6717,6719],{"class":2895,"line":3068},[2893,6718,5346],{"class":3036},[2893,6720,6721],{"class":2903},"     'pages:resolved'(pages) {\n",[2893,6723,6724],{"class":2895,"line":3074},[2893,6725,6726],{"class":3032},"        const myPage = pages.find(page => page.path === '/')\n",[2893,6728,6729],{"class":2895,"line":3399},[2893,6730,6731],{"class":3032},"        myPage.meta ||= {}\n",[2893,6733,6734],{"class":2895,"line":3443},[2893,6735,6736],{"class":3032},"        myPage.meta.layout = 'overridden-layout'\n",[2893,6738,6739],{"class":2895,"line":3459},[2893,6740,6741],{"class":3032},"      }\n",[2893,6743,6744],{"class":2895,"line":3487},[2893,6745,3708],{"class":3032},[2893,6747,6748],{"class":2895,"line":3493},[2893,6749,6539],{"class":3032},[2863,6751,6423],{},[2883,6753,6755],{"className":3011,"code":6754,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  experimental: {\n    scanPageMeta: true,\n  },\n})\n",[2875,6756,6757,6769,6777,6788,6792],{"__ignoreMap":2889},[2893,6758,6759,6761,6763,6765,6767],{"class":2895,"line":2896},[2893,6760,3022],{"class":3021},[2893,6762,3025],{"class":3021},[2893,6764,3029],{"class":3028},[2893,6766,3033],{"class":3032},[2893,6768,3037],{"class":3036},[2893,6770,6771,6773,6775],{"class":2895,"line":3040},[2893,6772,5425],{"class":3043},[2893,6774,3047],{"class":3036},[2893,6776,3050],{"class":3036},[2893,6778,6779,6782,6784,6786],{"class":2895,"line":3053},[2893,6780,6781],{"class":3043},"    scanPageMeta",[2893,6783,3047],{"class":3036},[2893,6785,5137],{"class":3385},[2893,6787,3065],{"class":3036},[2893,6789,6790],{"class":2895,"line":3068},[2893,6791,3071],{"class":3036},[2893,6793,6794,6796],{"class":2895,"line":3074},[2893,6795,3077],{"class":3036},[2893,6797,3080],{"class":3032},[2858,6799,6801],{"id":6800},"shared-prerender-data","Shared Prerender Data",[2863,6803,3160,6804,3164],{},[2987,6805,3163],{},[3166,6807,3169],{"id":6808},"what-changed-10",[2863,6810,6811,6812,3221,6814,6816,6817,3001],{},"We enabled a previously experimental feature to share data from ",[2875,6813,515],{},[2875,6815,527],{}," calls, across different pages. See ",[2867,6818,6821],{"href":6819,"rel":6820},"https://github.com/nuxt/nuxt/pull/24894",[2871],"original PR",[3166,6823,3269],{"id":6824},"reasons-for-change-7",[2863,6826,6827,6828,6830,6831,3242,6833,6835],{},"This feature automatically shares payload ",[4673,6829,4933],{}," between pages that are prerendered. This can result in a significant performance improvement when prerendering sites that use ",[2875,6832,515],{},[2875,6834,527],{}," and fetch the same data in different pages.",[2863,6837,6838,6839,6841],{},"For example, if your site requires a ",[2875,6840,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.",[3166,6843,3290],{"id":6844},"migration-steps-11",[2863,6846,6847,6848,6850,6851,6853],{},"Make sure that any unique key of your data is always resolvable to the same data. For example, if you are using ",[2875,6849,515],{}," to fetch data related to a particular page, you should provide a key that uniquely matches that data. (",[2875,6852,527],{}," should do this automatically for you.)",[2883,6855,6858],{"className":3011,"code":6856,"filename":6857,"language":3013,"meta":2889,"style":2889},"// 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","app/pages/test/[slug].vue",[2875,6859,6860,6865,6870,6884,6913,6948,6954,6959,6997,7027],{"__ignoreMap":2889},[2893,6861,6862],{"class":2895,"line":2896},[2893,6863,6864],{"class":3316},"// This would be unsafe in a dynamic page (e.g. `[slug].vue`) because the route slug makes a difference\n",[2893,6866,6867],{"class":2895,"line":3040},[2893,6868,6869],{"class":3316},"// to the data fetched, but Nuxt can't know that because it's not reflected in the key.\n",[2893,6871,6872,6874,6877,6879,6882],{"class":2895,"line":3053},[2893,6873,5018],{"class":3334},[2893,6875,6876],{"class":3032}," route ",[2893,6878,6336],{"class":3036},[2893,6880,6881],{"class":3028}," useRoute",[2893,6883,6162],{"class":3032},[2893,6885,6886,6888,6890,6893,6895,6897,6900,6902,6904,6907,6909,6911],{"class":2895,"line":3068},[2893,6887,5018],{"class":3334},[2893,6889,3377],{"class":3036},[2893,6891,6892],{"class":3032}," data ",[2893,6894,3077],{"class":3036},[2893,6896,5033],{"class":3036},[2893,6898,6899],{"class":3021}," await",[2893,6901,5036],{"class":3028},[2893,6903,3033],{"class":3032},[2893,6905,6906],{"class":3334},"async",[2893,6908,5050],{"class":3036},[2893,6910,3335],{"class":3334},[2893,6912,3050],{"class":3036},[2893,6914,6915,6917,6919,6921,6923,6926,6929,6931,6934,6936,6939,6941,6944,6946],{"class":2895,"line":3074},[2893,6916,5183],{"class":3021},[2893,6918,6899],{"class":3021},[2893,6920,5055],{"class":3028},[2893,6922,3033],{"class":3043},[2893,6924,6925],{"class":3036},"`",[2893,6927,6928],{"class":2903},"/api/my-page/",[2893,6930,5199],{"class":3036},[2893,6932,6933],{"class":3032},"route",[2893,6935,3001],{"class":3036},[2893,6937,6938],{"class":3032},"params",[2893,6940,3001],{"class":3036},[2893,6942,6943],{"class":3032},"slug",[2893,6945,5204],{"class":3036},[2893,6947,3080],{"class":3043},[2893,6949,6950,6952],{"class":2895,"line":3399},[2893,6951,3077],{"class":3036},[2893,6953,3080],{"class":3032},[2893,6955,6956],{"class":2895,"line":3443},[2893,6957,6958],{"class":3316},"// Instead, you should use a key that uniquely identifies the data fetched.\n",[2893,6960,6961,6963,6965,6967,6969,6971,6973,6975,6978,6980,6982,6984,6986,6988,6991,6993,6995],{"class":2895,"line":3459},[2893,6962,5018],{"class":3334},[2893,6964,3377],{"class":3036},[2893,6966,6892],{"class":3032},[2893,6968,3077],{"class":3036},[2893,6970,5033],{"class":3036},[2893,6972,6899],{"class":3021},[2893,6974,5036],{"class":3028},[2893,6976,6977],{"class":3032},"(route",[2893,6979,3001],{"class":3036},[2893,6981,6938],{"class":3032},[2893,6983,3001],{"class":3036},[2893,6985,6943],{"class":3032},[2893,6987,3421],{"class":3036},[2893,6989,6990],{"class":3334}," async",[2893,6992,5050],{"class":3036},[2893,6994,3335],{"class":3334},[2893,6996,3050],{"class":3036},[2893,6998,6999,7001,7003,7005,7007,7009,7011,7013,7015,7017,7019,7021,7023,7025],{"class":2895,"line":3487},[2893,7000,5183],{"class":3021},[2893,7002,6899],{"class":3021},[2893,7004,5055],{"class":3028},[2893,7006,3033],{"class":3043},[2893,7008,6925],{"class":3036},[2893,7010,6928],{"class":2903},[2893,7012,5199],{"class":3036},[2893,7014,6933],{"class":3032},[2893,7016,3001],{"class":3036},[2893,7018,6938],{"class":3032},[2893,7020,3001],{"class":3036},[2893,7022,6943],{"class":3032},[2893,7024,5204],{"class":3036},[2893,7026,3080],{"class":3043},[2893,7028,7029,7031],{"class":2895,"line":3493},[2893,7030,3077],{"class":3036},[2893,7032,3080],{"class":3032},[2863,7034,7035],{},"Alternatively, you can disable this feature with:",[2883,7037,7039],{"className":3011,"code":7038,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  experimental: {\n    sharedPrerenderData: false,\n  },\n})\n",[2875,7040,7041,7053,7061,7072,7076],{"__ignoreMap":2889},[2893,7042,7043,7045,7047,7049,7051],{"class":2895,"line":2896},[2893,7044,3022],{"class":3021},[2893,7046,3025],{"class":3021},[2893,7048,3029],{"class":3028},[2893,7050,3033],{"class":3032},[2893,7052,3037],{"class":3036},[2893,7054,7055,7057,7059],{"class":2895,"line":3040},[2893,7056,5425],{"class":3043},[2893,7058,3047],{"class":3036},[2893,7060,3050],{"class":3036},[2893,7062,7063,7066,7068,7070],{"class":2895,"line":3053},[2893,7064,7065],{"class":3043},"    sharedPrerenderData",[2893,7067,3047],{"class":3036},[2893,7069,3386],{"class":3385},[2893,7071,3065],{"class":3036},[2893,7073,7074],{"class":2895,"line":3068},[2893,7075,3071],{"class":3036},[2893,7077,7078,7080],{"class":2895,"line":3074},[2893,7079,3077],{"class":3036},[2893,7081,3080],{"class":3032},[2858,7083,7085,7086,3221,7088,7090,7091,3221,7093],{"id":7084},"default-data-and-error-values-in-useasyncdata-and-usefetch","Default ",[2875,7087,4933],{},[2875,7089,4936],{}," values in ",[2875,7092,515],{},[2875,7094,527],{},[2863,7096,3160,7097,5470],{},[2987,7098,3163],{},[3166,7100,3169],{"id":7101},"what-changed-11",[2863,7103,7104,3221,7106,7108,7109,7111,7112,3001],{},[2875,7105,4933],{},[2875,7107,4936],{}," objects returned from ",[2875,7110,515],{}," will now default to ",[2875,7113,3138],{},[3166,7115,3269],{"id":7116},"reasons-for-change-8",[2863,7118,7119,7120,7122,7123,7126,7127,3086,7129,7131,7132,7122,7134,7136],{},"Previously ",[2875,7121,4933],{}," was initialized to ",[2875,7124,7125],{},"null"," but reset in ",[2875,7128,650],{},[2875,7130,3138],{},". ",[2875,7133,4936],{},[2875,7135,7125],{},". This change is to bring greater consistency.",[3166,7138,3290],{"id":7139},"migration-steps-12",[2863,7141,7142,7143,3242,7146,7149,7150,7152,7153,7155],{},"If you were checking if ",[2875,7144,7145],{},"data.value",[2875,7147,7148],{},"error.value"," were ",[2875,7151,7125],{},", you can update these checks to check for ",[2875,7154,3138],{}," instead.",[3187,7157,7158],{},[2863,7159,7160,7161],{},"You can automate this step by running ",[2875,7162,7163],{},"npx codemod@latest nuxt/4/default-data-error-value",[2858,7165,7167,7168,7171,7172,7175,7176,7179,7180,3221,7182],{"id":7166},"removal-of-deprecated-boolean-values-for-dedupe-option-when-calling-refresh-in-useasyncdata-and-usefetch","Removal of deprecated ",[2875,7169,7170],{},"boolean"," values for ",[2875,7173,7174],{},"dedupe"," option when calling ",[2875,7177,7178],{},"refresh"," in ",[2875,7181,515],{},[2875,7183,527],{},[2863,7185,3160,7186,5470],{},[2987,7187,3163],{},[3166,7189,3169],{"id":7190},"what-changed-12",[2863,7192,7193,7194,3086,7197,7199,7200,3424,7203,7206,7207,3424,7210,5785],{},"Previously it was possible to pass ",[2875,7195,7196],{},"dedupe: boolean",[2875,7198,7178],{},". These were aliases of ",[2875,7201,7202],{},"cancel",[2875,7204,7205],{},"true",") and ",[2875,7208,7209],{},"defer",[2875,7211,7212],{},"false",[2883,7214,7218],{"className":7215,"code":7216,"filename":7217,"language":3013,"meta":3014,"style":2889},"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","app/app.vue",[2875,7219,7220,7786,7790,7832,7896,7900],{"__ignoreMap":2889},[2893,7221,7222,7224,7226,7229,7286,7288,7290,7292,7294,7296,7589,7591,7593,7595,7597,7625,7627,7745,7747,7749,7751,7773,7775,7777,7780,7782,7784],{"class":2895,"line":2896},[2893,7223,5018],{"class":3334},[2893,7225,3377],{"class":3036},[2893,7227,7228],{"class":3032}," ",[2893,7230,7231],{"class":3032},[7232,7233,7236,7238],"v-menu",{"class":7234,"popper-class":7235,"theme":3014},"twoslash-hover","shiki twoslash-floating vp-copy-ignore",[2893,7237,7178],{},[7239,7240,7242],"template",{"v-slot:popper":7241},"{}",[2893,7243,7245],{"class":7244,"v-pre":2889},"twoslash-popup-container vp-copy-ignore",[2875,7246,7248,7251,7255,7258,7260,7264,7267,7271,7273,7275,7278,7280,7283],{"class":7247},"twoslash-popup-code",[2893,7249,5018],{"style":7250},"--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA",[2893,7252,7254],{"style":7253},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8"," refresh",[2893,7256,3047],{"style":7257},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[2893,7259,3424],{"style":7257},[2893,7261,7263],{"style":7262},"--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",[2893,7265,7266],{"style":7257},"?:",[2893,7268,7270],{"style":7269},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B"," AsyncDataExecuteOptions",[2893,7272,3331],{"style":7257},[2893,7274,3335],{"style":7250},[2893,7276,7277],{"style":7269}," Promise",[2893,7279,6327],{"style":7257},[2893,7281,7282],{"style":7269},"void",[2893,7284,7285],{"style":7257},">",[2893,7287,7228],{"class":3032},[2893,7289,3077],{"class":3036},[2893,7291,5033],{"class":3036},[2893,7293,6899],{"class":3021},[2893,7295,7228],{"class":3028},[2893,7297,7298],{"class":3028},[7232,7299,7300,7302],{"class":7234,"popper-class":7235,"theme":3014},[2893,7301,515],{},[7239,7303,7304],{"v-slot:popper":7241},[2893,7305,7306,7539,7550],{"class":7244,"v-pre":2889},[2875,7307,7308],{"class":7247},[2883,7309,7313],{"class":7310,"style":7311,"tabindex":7312},"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,7314,7315,7326,7339,7350,7360,7370,7380,7401,7411,7425,7435,7441,7451,7459,7469,7491,7501],{},[2893,7316,7317,7319,7321,7323],{"class":2895},[2893,7318,5018],{"style":7250},[2893,7320,5036],{"style":7253},[2893,7322,3047],{"style":7257},[2893,7324,7325],{"style":7257}," \u003C{",[2893,7327,7328,7332,7334,7336],{"class":2895},[2893,7329,7331],{"style":7330},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178","    message",[2893,7333,3047],{"style":7257},[2893,7335,5174],{"style":7269},[2893,7337,7338],{"style":7257},";",[2893,7340,7341,7343,7346,7348],{"class":2895},[2893,7342,3374],{"style":7257},[2893,7344,7345],{"style":7269}," unknown",[2893,7347,3421],{"style":7257},[2893,7349,3377],{"style":7257},[2893,7351,7352,7354,7356,7358],{"class":2895},[2893,7353,7331],{"style":7330},[2893,7355,3047],{"style":7257},[2893,7357,5174],{"style":7269},[2893,7359,7338],{"style":7257},[2893,7361,7362,7364,7367],{"class":2895},[2893,7363,3374],{"style":7257},[2893,7365,7366],{"style":7269}," KeysOf",[2893,7368,7369],{"style":7257},"\u003C{",[2893,7371,7372,7374,7376,7378],{"class":2895},[2893,7373,7331],{"style":7330},[2893,7375,3047],{"style":7257},[2893,7377,5174],{"style":7269},[2893,7379,7338],{"style":7257},[2893,7381,7382,7385,7388,7391,7394,7396,7399],{"class":2895},[2893,7383,7384],{"style":7257},"}>,",[2893,7386,7387],{"style":7269}," undefined",[2893,7389,7390],{"style":7257},">(",[2893,7392,7393],{"style":7262},"handler",[2893,7395,3047],{"style":7257},[2893,7397,7398],{"style":7269}," AsyncDataHandler",[2893,7400,7369],{"style":7257},[2893,7402,7403,7405,7407,7409],{"class":2895},[2893,7404,7331],{"style":7330},[2893,7406,3047],{"style":7257},[2893,7408,5174],{"style":7269},[2893,7410,7338],{"style":7257},[2893,7412,7413,7415,7418,7420,7423],{"class":2895},[2893,7414,7384],{"style":7257},[2893,7416,7417],{"style":7262}," options",[2893,7419,7266],{"style":7257},[2893,7421,7422],{"style":7269}," AsyncDataOptions",[2893,7424,7369],{"style":7257},[2893,7426,7427,7429,7431,7433],{"class":2895},[2893,7428,7331],{"style":7330},[2893,7430,3047],{"style":7257},[2893,7432,5174],{"style":7269},[2893,7434,7338],{"style":7257},[2893,7436,7437,7439],{"class":2895},[2893,7438,3374],{"style":7257},[2893,7440,3377],{"style":7257},[2893,7442,7443,7445,7447,7449],{"class":2895},[2893,7444,7331],{"style":7330},[2893,7446,3047],{"style":7257},[2893,7448,5174],{"style":7269},[2893,7450,7338],{"style":7257},[2893,7452,7453,7455,7457],{"class":2895},[2893,7454,3374],{"style":7257},[2893,7456,7366],{"style":7269},[2893,7458,7369],{"style":7257},[2893,7460,7461,7463,7465,7467],{"class":2895},[2893,7462,7331],{"style":7330},[2893,7464,3047],{"style":7257},[2893,7466,5174],{"style":7269},[2893,7468,7338],{"style":7257},[2893,7470,7471,7473,7475,7477,7480,7482,7484,7486,7489],{"class":2895},[2893,7472,7384],{"style":7257},[2893,7474,7387],{"style":7269},[2893,7476,7285],{"style":7257},[2893,7478,7479],{"style":7257}," |",[2893,7481,7387],{"style":7269},[2893,7483,3331],{"style":7257},[2893,7485,3335],{"style":7250},[2893,7487,7488],{"style":7269}," AsyncData",[2893,7490,7369],{"style":7257},[2893,7492,7493,7495,7497,7499],{"class":2895},[2893,7494,7331],{"style":7330},[2893,7496,3047],{"style":7257},[2893,7498,5174],{"style":7269},[2893,7500,7338],{"style":7257},[2893,7502,7503,7505,7507,7509,7511,7514,7516,7519,7521,7523,7525,7527,7530,7534,7537],{"class":2895},[2893,7504,3077],{"style":7257},[2893,7506,7479],{"style":7257},[2893,7508,7387],{"style":7269},[2893,7510,3421],{"style":7257},[2893,7512,7513],{"style":7269}," NuxtError",[2893,7515,6327],{"style":7257},[2893,7517,7518],{"style":7269},"unknown",[2893,7520,7285],{"style":7257},[2893,7522,7479],{"style":7257},[2893,7524,7387],{"style":7269},[2893,7526,7285],{"style":7257},[2893,7528,7529],{"style":7253}," (+",[2893,7531,7533],{"style":7532},"--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C","3",[2893,7535,7536],{"style":7269}," overloads",[2893,7538,3331],{"style":7253},[6330,7540,7542,7545],{"class":7541},"twoslash-popup-docs prose prose-primary dark:prose-invert",[2863,7543,7544],{},"Provides access to data that resolves asynchronously in an SSR-friendly composable.\nSee",[2863,7546,7547],{},[2867,7548,7549],{"href":7549},"https://nuxt.com/docs/4.x/api/composables/use-async-data",[6330,7551,7553,7564,7579],{"class":7552},"twoslash-popup-docs twoslash-popup-docs-tags prose prose-primary dark:prose-invert",[2893,7554,7556,7560],{"class":7555},"twoslash-popup-docs-tag",[2893,7557,7559],{"class":7558},"twoslash-popup-docs-tag-name","@since",[2893,7561,7563],{"class":7562},"twoslash-popup-docs-tag-value","3.0.0",[2893,7565,7566,7569],{"class":7555},[2893,7567,7568],{"class":7558},"@param",[2893,7570,7571,7573,7574,3242,7576,7578],{"class":7562},[2875,7572,7393],{},"  An asynchronous function that must return a truthy value (for example, it should not be ",[2875,7575,3138],{},[2875,7577,7125],{},") or the request may be duplicated on the client side.",[2893,7580,7581,7583],{"class":7555},[2893,7582,7568],{"class":7558},[2893,7584,7585,7588],{"class":7562},[2875,7586,7587],{},"options","  customize the behavior of useAsyncData",[2893,7590,3033],{"class":3032},[2893,7592,3519],{"class":3036},[2893,7594,3335],{"class":3334},[2893,7596,7228],{"class":2899},[2893,7598,7599],{"class":2899},[7232,7600,7601,7604],{"class":7234,"popper-class":7235,"theme":3014},[2893,7602,7603],{},"Promise",[7239,7605,7606],{"v-slot:popper":7241},[2893,7607,7608,7620],{"class":7244,"v-pre":2889},[2875,7609,7610,7613,7615,7617],{"class":7247},[2893,7611,7612],{"style":7250},"var",[2893,7614,7277],{"style":7253},[2893,7616,3047],{"style":7257},[2893,7618,7619],{"style":7269}," PromiseConstructor",[6330,7621,7622],{"class":7541},[2863,7623,7624],{},"Represents the completion of an asynchronous operation",[2893,7626,3001],{"class":3036},[2893,7628,7629],{"class":3028},[7232,7630,7631,7634],{"class":7234,"popper-class":7235,"theme":3014},[2893,7632,7633],{},"resolve",[7239,7635,7636],{"v-slot:popper":7241},[2893,7637,7638,7721,7726],{"class":7244,"v-pre":2889},[2875,7639,7640],{"class":7247},[2883,7641,7642],{"class":7310,"style":7311,"tabindex":7312},[2875,7643,7644,7656,7666,7678,7688,7697,7707],{},[2893,7645,7646,7649,7651,7654],{"class":2895},[2893,7647,7648],{"style":7253},"(method) PromiseConstructor",[2893,7650,3001],{"style":7257},[2893,7652,7633],{"style":7653},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[2893,7655,7369],{"style":7257},[2893,7657,7658,7660,7662,7664],{"class":2895},[2893,7659,7331],{"style":7330},[2893,7661,3047],{"style":7257},[2893,7663,5174],{"style":7269},[2893,7665,7338],{"style":7257},[2893,7667,7668,7671,7674,7676],{"class":2895},[2893,7669,7670],{"style":7257},"}>(",[2893,7672,7673],{"style":7262},"value",[2893,7675,3047],{"style":7257},[2893,7677,3377],{"style":7257},[2893,7679,7680,7682,7684,7686],{"class":2895},[2893,7681,7331],{"style":7330},[2893,7683,3047],{"style":7257},[2893,7685,5174],{"style":7269},[2893,7687,7338],{"style":7257},[2893,7689,7690,7693,7695],{"class":2895},[2893,7691,7692],{"style":7257},"}):",[2893,7694,7277],{"style":7269},[2893,7696,7369],{"style":7257},[2893,7698,7699,7701,7703,7705],{"class":2895},[2893,7700,7331],{"style":7330},[2893,7702,3047],{"style":7257},[2893,7704,5174],{"style":7269},[2893,7706,7338],{"style":7257},[2893,7708,7709,7712,7714,7717,7719],{"class":2895},[2893,7710,7711],{"style":7257},"}>",[2893,7713,7529],{"style":7253},[2893,7715,7716],{"style":7532},"2",[2893,7718,7536],{"style":7269},[2893,7720,3331],{"style":7253},[6330,7722,7723],{"class":7541},[2863,7724,7725],{},"Creates a new resolved promise for the provided value.",[6330,7727,7728,7737],{"class":7552},[2893,7729,7730,7732],{"class":7555},[2893,7731,7568],{"class":7558},[2893,7733,7734,7736],{"class":7562},[2875,7735,7673],{},"  A promise.",[2893,7738,7739,7742],{"class":7555},[2893,7740,7741],{"class":7558},"@returns",[2893,7743,7744],{"class":7562},"A promise whose internal state matches the provided promise.",[2893,7746,3033],{"class":3032},[2893,7748,5257],{"class":3036},[2893,7750,7228],{"class":3043},[2893,7752,7753],{"class":3043},[7232,7754,7755,7758],{"class":7234,"popper-class":7235,"theme":3014},[2893,7756,7757],{},"message",[7239,7759,7760],{"v-slot:popper":7241},[2893,7761,7762],{"class":7244,"v-pre":2889},[2875,7763,7764,7767,7769,7771],{"class":7247},[2893,7765,7766],{"style":7253},"(property) ",[2893,7768,7757],{"style":7269},[2893,7770,3047],{"style":7257},[2893,7772,5174],{"style":7253},[2893,7774,3047],{"class":3036},[2893,7776,3536],{"class":3036},[2893,7778,7779],{"class":2903},"Hello, Nuxt!",[2893,7781,3362],{"class":3036},[2893,7783,3389],{"class":3036},[2893,7785,3763],{"class":3032},[2893,7787,7788],{"class":2895,"line":3040},[2893,7789,3396],{"emptyLinePlaceholder":1196},[2893,7791,7792,7794,7796,7798,7828,7830],{"class":2895,"line":3053},[2893,7793,6906],{"class":3334},[2893,7795,5161],{"class":3334},[2893,7797,7228],{"class":3028},[2893,7799,7800],{"class":3028},[7232,7801,7802,7805],{"class":7234,"popper-class":7235,"theme":3014},[2893,7803,7804],{},"refreshData",[7239,7806,7807],{"v-slot:popper":7241},[2893,7808,7809],{"class":7244,"v-pre":2889},[2875,7810,7811,7814,7817,7820,7822,7824,7826],{"class":7247},[2893,7812,7813],{"style":7250},"function",[2893,7815,7816],{"style":7653}," refreshData",[2893,7818,7819],{"style":7257},"():",[2893,7821,7277],{"style":7269},[2893,7823,6327],{"style":7257},[2893,7825,7282],{"style":7269},[2893,7827,7285],{"style":7257},[2893,7829,5050],{"class":3036},[2893,7831,3050],{"class":3036},[2893,7833,7834,7837,7839,7877,7879,7881,7883,7888,7890,7892,7894],{"class":2895,"line":3068},[2893,7835,7836],{"class":3021},"  await",[2893,7838,7228],{"class":3028},[2893,7840,7841],{"class":3028},[7232,7842,7843,7845],{"class":7234,"popper-class":7235,"theme":3014},[2893,7844,7178],{},[7239,7846,7847],{"v-slot:popper":7241},[2893,7848,7849],{"class":7244,"v-pre":2889},[2875,7850,7851,7853,7855,7857,7859,7861,7863,7865,7867,7869,7871,7873,7875],{"class":7247},[2893,7852,5018],{"style":7250},[2893,7854,7254],{"style":7253},[2893,7856,3047],{"style":7257},[2893,7858,3424],{"style":7257},[2893,7860,7263],{"style":7262},[2893,7862,7266],{"style":7257},[2893,7864,7270],{"style":7269},[2893,7866,3331],{"style":7257},[2893,7868,3335],{"style":7250},[2893,7870,7277],{"style":7269},[2893,7872,6327],{"style":7257},[2893,7874,7282],{"style":7269},[2893,7876,7285],{"style":7257},[2893,7878,3033],{"class":3043},[2893,7880,5257],{"class":3036},[2893,7882,7228],{"class":3043},[2893,7884,7886],{"class":7885},"twoslash-error",[2893,7887,7174],{"class":3043},[2893,7889,3047],{"class":3036},[2893,7891,5137],{"class":3385},[2893,7893,3389],{"class":3036},[2893,7895,3080],{"class":3043},[6330,7897,7899],{"class":7898},"twoslash-meta-line twoslash-error-line vp-copy-ignore","Type 'true' is not assignable to type '\"cancel\" | \"defer\" | undefined'.",[2893,7901,7902],{"class":2895,"line":3074},[2893,7903,5300],{"class":3036},[3166,7905,3269],{"id":7906},"reasons-for-change-9",[2863,7908,7909],{},"These aliases were removed, for greater clarity.",[2863,7911,7912,7913,7915,7916,7918,7919,3001],{},"The issue came up when adding ",[2875,7914,7174],{}," as an option to ",[2875,7917,515],{},", and we removed the boolean values as they ended up being ",[4673,7920,7921],{},"opposites",[2863,7923,7924,7927,7928,7934,7935,7938,7939,7941,7942,7945,7946,7951],{},[2875,7925,7926],{},"refresh({ dedupe: false })"," meant ",[2987,7929,7930,7931,7933],{},"do not ",[4673,7932,7202],{}," existing requests in favour of this new one",". But passing ",[2875,7936,7937],{},"dedupe: true"," within the options of ",[2875,7940,515],{}," means ",[2987,7943,7944],{},"do not make any new requests if there is an existing pending request."," (See ",[2867,7947,7950],{"href":7948,"rel":7949},"https://github.com/nuxt/nuxt/pull/24564#pullrequestreview-1764584361",[2871],"PR",".)",[3166,7953,3290],{"id":7954},"migration-steps-13",[2863,7956,5804],{},[2883,7958,7960],{"className":5311,"code":7959,"language":5313,"meta":2889,"style":2889},"  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,7961,7962,7967,7971,7976,7983,7990,7994,8001,8008],{"__ignoreMap":2889},[2893,7963,7964],{"class":2895,"line":2896},[2893,7965,7966],{"class":3032},"  const { refresh } = await useAsyncData(async () => ({ message: 'Hello, Nuxt 3!' }))\n",[2893,7968,7969],{"class":2895,"line":3040},[2893,7970,5819],{"class":3032},[2893,7972,7973],{"class":2895,"line":3053},[2893,7974,7975],{"class":3032},"  async function refreshData () {\n",[2893,7977,7978,7980],{"class":2895,"line":3068},[2893,7979,5325],{"class":3036},[2893,7981,7982],{"class":3043},"   await refresh({ dedupe: true })\n",[2893,7984,7985,7987],{"class":2895,"line":3074},[2893,7986,5346],{"class":3036},[2893,7988,7989],{"class":2903},"   await refresh({ dedupe: 'cancel' })\n",[2893,7991,7992],{"class":2895,"line":3399},[2893,7993,3396],{"emptyLinePlaceholder":1196},[2893,7995,7996,7998],{"class":2895,"line":3443},[2893,7997,5325],{"class":3036},[2893,7999,8000],{"class":3043},"   await refresh({ dedupe: false })\n",[2893,8002,8003,8005],{"class":2895,"line":3459},[2893,8004,5346],{"class":3036},[2893,8006,8007],{"class":2903},"   await refresh({ dedupe: 'defer' })\n",[2893,8009,8010],{"class":2895,"line":3487},[2893,8011,3490],{"class":3032},[3187,8013,8014],{},[2863,8015,7160,8016],{},[2875,8017,8018],{},"npx codemod@latest nuxt/4/deprecated-dedupe-value",[2858,8020,8022,8023,7179,8025,3221,8027],{"id":8021},"respect-defaults-when-clearing-data-in-useasyncdata-and-usefetch","Respect defaults when clearing ",[2875,8024,4933],{},[2875,8026,515],{},[2875,8028,527],{},[2863,8030,3160,8031,5470],{},[2987,8032,3163],{},[3166,8034,3169],{"id":8035},"what-changed-13",[2863,8037,8038,8039,8041,8042,8044,8045,3242,8048,8050],{},"If you provide a custom ",[2875,8040,4955],{}," value for ",[2875,8043,515],{},", this will now be used when calling ",[2875,8046,8047],{},"clear",[2875,8049,650],{}," and it will be reset to its default value rather than simply unset.",[3166,8052,3269],{"id":8053},"reasons-for-change-10",[2863,8055,8056,8057,8059,8060,8062],{},"Often users set an appropriately empty value, such as an empty array, to avoid the need to check for ",[2875,8058,7125],{},"/",[2875,8061,3138],{}," when iterating over it. This should be respected when resetting/clearing the data.",[2858,8064,8022,8066],{"id":8065},"respect-defaults-when-clearing-usestate",[2875,8067,619],{},[2863,8069,3160,8070,5470],{},[2987,8071,3163],{},[3166,8073,3169],{"id":8074},"what-changed-14",[2863,8076,8077,8078,3302,8081,8083,8084,8087,8088,8090,8091,8093,8094,8096,8097,8099],{},"With ",[2875,8079,8080],{},"compatibilityVersion: 5",[2875,8082,654],{}," will reset state to its initial value (provided by the ",[2875,8085,8086],{},"init"," function of ",[2875,8089,619],{},") instead of setting it to ",[2875,8092,3138],{},". This aligns ",[2875,8095,654],{}," behavior with ",[2875,8098,650],{},", which already resets to defaults.",[3166,8101,3269],{"id":8102},"reasons-for-change-11",[2863,8104,8105,8106,8108,8109,8111,8112,8114,8115,8117],{},"When ",[2875,8107,654],{}," sets state to ",[2875,8110,3138],{},", composables that depend on that state can crash because they expect the state to always have a valid shape (e.g., accessing properties on ",[2875,8113,3138],{},"). Resetting to the ",[2875,8116,8086],{}," value ensures state always has a usable default.",[3166,8119,3290],{"id":8120},"migration-steps-14",[2863,8122,8123,8124,8126,8127,8129,8130,3047],{},"If you rely on ",[2875,8125,654],{}," setting state to ",[2875,8128,3138],{},", you can explicitly pass ",[2875,8131,8132],{},"{ reset: false }",[2883,8134,8136],{"className":5311,"code":8135,"language":5313,"meta":2889,"style":2889},"- clearNuxtState('myKey')\n+ clearNuxtState('myKey', { reset: false })\n",[2875,8137,8138,8145],{"__ignoreMap":2889},[2893,8139,8140,8142],{"class":2895,"line":2896},[2893,8141,5325],{"class":3036},[2893,8143,8144],{"class":3043}," clearNuxtState('myKey')\n",[2893,8146,8147,8149],{"class":2895,"line":3040},[2893,8148,5346],{"class":3036},[2893,8150,8151],{"class":2903}," clearNuxtState('myKey', { reset: false })\n",[2863,8153,8154],{},"Alternatively, you can revert to the previous behavior with:",[2883,8156,8158],{"className":3011,"code":8157,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  experimental: {\n    defaults: {\n      useState: {\n        resetOnClear: false,\n      },\n    },\n  },\n})\n",[2875,8159,8160,8172,8180,8189,8198,8209,8214,8218,8222],{"__ignoreMap":2889},[2893,8161,8162,8164,8166,8168,8170],{"class":2895,"line":2896},[2893,8163,3022],{"class":3021},[2893,8165,3025],{"class":3021},[2893,8167,3029],{"class":3028},[2893,8169,3033],{"class":3032},[2893,8171,3037],{"class":3036},[2893,8173,8174,8176,8178],{"class":2895,"line":3040},[2893,8175,5425],{"class":3043},[2893,8177,3047],{"class":3036},[2893,8179,3050],{"class":3036},[2893,8181,8182,8185,8187],{"class":2895,"line":3053},[2893,8183,8184],{"class":3043},"    defaults",[2893,8186,3047],{"class":3036},[2893,8188,3050],{"class":3036},[2893,8190,8191,8194,8196],{"class":2895,"line":3068},[2893,8192,8193],{"class":3043},"      useState",[2893,8195,3047],{"class":3036},[2893,8197,3050],{"class":3036},[2893,8199,8200,8203,8205,8207],{"class":2895,"line":3074},[2893,8201,8202],{"class":3043},"        resetOnClear",[2893,8204,3047],{"class":3036},[2893,8206,3386],{"class":3385},[2893,8208,3065],{"class":3036},[2893,8210,8211],{"class":2895,"line":3399},[2893,8212,8213],{"class":3036},"      },\n",[2893,8215,8216],{"class":2895,"line":3443},[2893,8217,5290],{"class":3036},[2893,8219,8220],{"class":2895,"line":3459},[2893,8221,3071],{"class":3036},[2893,8223,8224,8226],{"class":2895,"line":3487},[2893,8225,3077],{"class":3036},[2893,8227,3080],{"class":3032},[2863,8229,8230,8231,3047],{},"You can also opt in to this behavior today without setting ",[2875,8232,8080],{},[2883,8234,8236],{"className":3011,"code":8235,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  experimental: {\n    defaults: {\n      useState: {\n        resetOnClear: true,\n      },\n    },\n  },\n})\n",[2875,8237,8238,8250,8258,8266,8274,8284,8288,8292,8296],{"__ignoreMap":2889},[2893,8239,8240,8242,8244,8246,8248],{"class":2895,"line":2896},[2893,8241,3022],{"class":3021},[2893,8243,3025],{"class":3021},[2893,8245,3029],{"class":3028},[2893,8247,3033],{"class":3032},[2893,8249,3037],{"class":3036},[2893,8251,8252,8254,8256],{"class":2895,"line":3040},[2893,8253,5425],{"class":3043},[2893,8255,3047],{"class":3036},[2893,8257,3050],{"class":3036},[2893,8259,8260,8262,8264],{"class":2895,"line":3053},[2893,8261,8184],{"class":3043},[2893,8263,3047],{"class":3036},[2893,8265,3050],{"class":3036},[2893,8267,8268,8270,8272],{"class":2895,"line":3068},[2893,8269,8193],{"class":3043},[2893,8271,3047],{"class":3036},[2893,8273,3050],{"class":3036},[2893,8275,8276,8278,8280,8282],{"class":2895,"line":3074},[2893,8277,8202],{"class":3043},[2893,8279,3047],{"class":3036},[2893,8281,5137],{"class":3385},[2893,8283,3065],{"class":3036},[2893,8285,8286],{"class":2895,"line":3399},[2893,8287,8213],{"class":3036},[2893,8289,8290],{"class":2895,"line":3443},[2893,8291,5290],{"class":3036},[2893,8293,8294],{"class":2895,"line":3459},[2893,8295,3071],{"class":3036},[2893,8297,8298,8300],{"class":2895,"line":3487},[2893,8299,3077],{"class":3036},[2893,8301,3080],{"class":3032},[2858,8303,8305,8306,8309,8310,3221,8312],{"id":8304},"alignment-of-pending-value-in-useasyncdata-and-usefetch","Alignment of ",[2875,8307,8308],{},"pending"," value in ",[2875,8311,515],{},[2875,8313,527],{},[2863,8315,3160,8316,3164],{},[2987,8317,3163],{},[2863,8319,8320,8321,8323,8324,3302,8326,3302,8328,3221,8330,8332,8333,8335,8336,8338],{},"The ",[2875,8322,8308],{}," object returned from ",[2875,8325,515],{},[2875,8327,527],{},[2875,8329,543],{},[2875,8331,547],{}," is now a computed property that is ",[2875,8334,7205],{}," only when ",[2875,8337,4939],{}," is also pending.",[3166,8340,3169],{"id":8341},"what-changed-15",[2863,8343,8344,8345,8348,8349,8351,8352,8354,8355,8357,8358,8360],{},"Now, when ",[2875,8346,8347],{},"immediate: false"," is passed, ",[2875,8350,8308],{}," will be ",[2875,8353,7212],{}," until the first request is made. This is a change from the previous behavior, where ",[2875,8356,8308],{}," was always ",[2875,8359,7205],{}," until the first request was made.",[3166,8362,3269],{"id":8363},"reasons-for-change-12",[2863,8365,8366,8367,8369,8370,8372,8373,8375],{},"This aligns the meaning of ",[2875,8368,8308],{}," with the ",[2875,8371,4939],{}," property, which is also ",[2875,8374,8308],{}," when the request is in progress.",[3166,8377,3290],{"id":8378},"migration-steps-15",[2863,8380,8381,8382,8384,8385,8387,8388,8390],{},"If you rely on the ",[2875,8383,8308],{}," property, ensure that your logic accounts for the new behavior where ",[2875,8386,8308],{}," will only be ",[2875,8389,7205],{}," when the status is also pending.",[2883,8392,8394],{"className":5311,"code":8393,"language":5313,"meta":2889,"style":2889},"  \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,8395,8396,8401,8408,8415,8420,8425,8430,8435,8439,8444,8448,8453,8458,8462,8467],{"__ignoreMap":2889},[2893,8397,8398],{"class":2895,"line":2896},[2893,8399,8400],{"class":3032},"  \u003Ctemplate>\n",[2893,8402,8403,8405],{"class":2895,"line":3040},[2893,8404,5325],{"class":3036},[2893,8406,8407],{"class":3043},"   \u003Cdiv v-if=\"!pending\">\n",[2893,8409,8410,8412],{"class":2895,"line":3053},[2893,8411,5346],{"class":3036},[2893,8413,8414],{"class":2903},"   \u003Cdiv v-if=\"status === 'success'\">\n",[2893,8416,8417],{"class":2895,"line":3068},[2893,8418,8419],{"class":3032},"      \u003Cp>Data: {{ data }}\u003C/p>\n",[2893,8421,8422],{"class":2895,"line":3074},[2893,8423,8424],{"class":3032},"    \u003C/div>\n",[2893,8426,8427],{"class":2895,"line":3399},[2893,8428,8429],{"class":3032},"    \u003Cdiv v-else>\n",[2893,8431,8432],{"class":2895,"line":3443},[2893,8433,8434],{"class":3032},"      \u003Cp>Loading...\u003C/p>\n",[2893,8436,8437],{"class":2895,"line":3459},[2893,8438,8424],{"class":3032},[2893,8440,8441],{"class":2895,"line":3487},[2893,8442,8443],{"class":3032},"  \u003C/template>\n",[2893,8445,8446],{"class":2895,"line":3493},[2893,8447,6515],{"class":3032},[2893,8449,8450],{"class":2895,"line":3500},[2893,8451,8452],{"class":3032},"  const { data, pending, execute, status } = await useAsyncData(() => fetch('/api/data'), {\n",[2893,8454,8455],{"class":2895,"line":3505},[2893,8456,8457],{"class":3032},"    immediate: false\n",[2893,8459,8460],{"class":2895,"line":3511},[2893,8461,6539],{"class":3032},[2893,8463,8464],{"class":2895,"line":3528},[2893,8465,8466],{"class":3032},"  onMounted(() => execute())\n",[2893,8468,8469],{"class":2895,"line":3546},[2893,8470,6562],{"class":3032},[2863,8472,8473],{},"Alternatively, you can temporarily revert to the previous behavior with:",[2883,8475,8477],{"className":3011,"code":8476,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  experimental: {\n    pendingWhenIdle: true,\n  },\n})\n",[2875,8478,8479,8491,8499,8510,8514],{"__ignoreMap":2889},[2893,8480,8481,8483,8485,8487,8489],{"class":2895,"line":2896},[2893,8482,3022],{"class":3021},[2893,8484,3025],{"class":3021},[2893,8486,3029],{"class":3028},[2893,8488,3033],{"class":3032},[2893,8490,3037],{"class":3036},[2893,8492,8493,8495,8497],{"class":2895,"line":3040},[2893,8494,5425],{"class":3043},[2893,8496,3047],{"class":3036},[2893,8498,3050],{"class":3036},[2893,8500,8501,8504,8506,8508],{"class":2895,"line":3053},[2893,8502,8503],{"class":3043},"    pendingWhenIdle",[2893,8505,3047],{"class":3036},[2893,8507,5137],{"class":3385},[2893,8509,3065],{"class":3036},[2893,8511,8512],{"class":2895,"line":3068},[2893,8513,3071],{"class":3036},[2893,8515,8516,8518],{"class":2895,"line":3074},[2893,8517,3077],{"class":3036},[2893,8519,3080],{"class":3032},[2858,8521,8523,8524,3221,8526],{"id":8522},"key-change-behavior-in-useasyncdata-and-usefetch","Key Change Behavior in ",[2875,8525,515],{},[2875,8527,527],{},[2863,8529,3160,8530,3164],{},[2987,8531,3163],{},[3166,8533,3169],{"id":8534},"what-changed-16",[2863,8536,8537,8538,3242,8540,8542,8543,8545,8546,8548],{},"When using reactive keys in ",[2875,8539,515],{},[2875,8541,527],{},", Nuxt automatically refetches data when the key changes. When ",[2875,8544,8347],{}," is set, ",[2875,8547,515],{}," will only fetch data when the key changes if the data has already been fetched once.",[2863,8550,8551,8552,8554],{},"Previously, ",[2875,8553,527],{}," had slightly different behavior. It would always fetch data when the key changed.",[2863,8556,8557,8558,3221,8560,8562],{},"Now, ",[2875,8559,527],{},[2875,8561,515],{}," behave consistently - by only fetch data when the key changes if the data has already been fetched once.",[3166,8564,3269],{"id":8565},"reasons-for-change-13",[2863,8567,8568,8569,3221,8571,8573,8574,8576,8577,3242,8579,8582,8583,3242,8585,3001],{},"This ensures consistent behavior between ",[2875,8570,515],{},[2875,8572,527],{},", and prevents unexpected fetches. If you have set ",[2875,8575,8347],{},", then you must call ",[2875,8578,7178],{},[2875,8580,8581],{},"execute"," or data will never be fetched in ",[2875,8584,527],{},[2875,8586,515],{},[3166,8588,3290],{"id":8589},"migration-steps-16",[2863,8591,8592,8593,8595],{},"This change should generally improve the expected behavior, but if you were expecting changing the key or options of a non-immediate ",[2875,8594,527],{},", you now will need to trigger it manually the first time.",[2883,8597,8599],{"className":5311,"code":8598,"language":5313,"meta":2889,"style":2889},"  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,8600,8601,8606,8611,8616,8620,8624],{"__ignoreMap":2889},[2893,8602,8603],{"class":2895,"line":2896},[2893,8604,8605],{"class":3032},"  const id = ref('123')\n",[2893,8607,8608],{"class":2895,"line":3040},[2893,8609,8610],{"class":3032},"  const { data, execute } = await useFetch('/api/test', {\n",[2893,8612,8613],{"class":2895,"line":3053},[2893,8614,8615],{"class":3032},"    query: { id },\n",[2893,8617,8618],{"class":2895,"line":3068},[2893,8619,8457],{"class":3032},[2893,8621,8622],{"class":2895,"line":3074},[2893,8623,5295],{"class":3032},[2893,8625,8626,8628],{"class":2895,"line":3399},[2893,8627,5346],{"class":3036},[2893,8629,8630],{"class":2903}," watch(id, () => execute(), { once: true })\n",[2863,8632,8633],{},"To opt out of this behavior:",[2883,8635,8637],{"className":3011,"code":8636,"language":3013,"meta":2889,"style":2889},"// Or globally in your Nuxt config\nexport default defineNuxtConfig({\n  experimental: {\n    alwaysRunFetchOnKeyChange: true,\n  },\n})\n",[2875,8638,8639,8644,8656,8664,8675,8679],{"__ignoreMap":2889},[2893,8640,8641],{"class":2895,"line":2896},[2893,8642,8643],{"class":3316},"// Or globally in your Nuxt config\n",[2893,8645,8646,8648,8650,8652,8654],{"class":2895,"line":3040},[2893,8647,3022],{"class":3021},[2893,8649,3025],{"class":3021},[2893,8651,3029],{"class":3028},[2893,8653,3033],{"class":3032},[2893,8655,3037],{"class":3036},[2893,8657,8658,8660,8662],{"class":2895,"line":3053},[2893,8659,5425],{"class":3043},[2893,8661,3047],{"class":3036},[2893,8663,3050],{"class":3036},[2893,8665,8666,8669,8671,8673],{"class":2895,"line":3068},[2893,8667,8668],{"class":3043},"    alwaysRunFetchOnKeyChange",[2893,8670,3047],{"class":3036},[2893,8672,5137],{"class":3385},[2893,8674,3065],{"class":3036},[2893,8676,8677],{"class":2895,"line":3074},[2893,8678,3071],{"class":3036},[2893,8680,8681,8683],{"class":2895,"line":3399},[2893,8682,3077],{"class":3036},[2893,8684,3080],{"class":3032},[2858,8686,8688,8689,3221,8691],{"id":8687},"shallow-data-reactivity-in-useasyncdata-and-usefetch","Shallow Data Reactivity in ",[2875,8690,515],{},[2875,8692,527],{},[2863,8694,3160,8695,5470],{},[2987,8696,3163],{},[2863,8698,8320,8699,8323,8701,3302,8703,3302,8705,3221,8707,8709,8710,8713,8714,3001],{},[2875,8700,4933],{},[2875,8702,515],{},[2875,8704,527],{},[2875,8706,543],{},[2875,8708,547],{}," is now a ",[2875,8711,8712],{},"shallowRef"," rather than a ",[2875,8715,8716],{},"ref",[3166,8718,3169],{"id":8719},"what-changed-17",[2863,8721,8722,8723,8725,8726,8728],{},"When new data is fetched, anything depending on ",[2875,8724,4933],{}," will still be reactive because the entire object is replaced. But if your code changes a property ",[4673,8727,6460],{}," that data structure, this will not trigger any reactivity in your app.",[3166,8730,3269],{"id":8731},"reasons-for-change-14",[2863,8733,8734,8735,8738,8739,8741],{},"This brings a ",[2987,8736,8737],{},"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,8740,4933],{}," should also be immutable.",[3166,8743,3290],{"id":8744},"migration-steps-17",[2863,8746,8747],{},"In most cases, no migration steps are required, but if you rely on the reactivity of the data object then you have two options:",[3208,8749,8750,8772],{},[3095,8751,8752,8753],{},"You can granularly opt in to deep reactivity on a per-composable basis:\n",[2883,8754,8756],{"className":5311,"code":8755,"language":5313,"meta":2889,"style":2889},"- const { data } = useFetch('/api/test')\n+ const { data } = useFetch('/api/test', { deep: true })\n",[2875,8757,8758,8765],{"__ignoreMap":2889},[2893,8759,8760,8762],{"class":2895,"line":2896},[2893,8761,5325],{"class":3036},[2893,8763,8764],{"class":3043}," const { data } = useFetch('/api/test')\n",[2893,8766,8767,8769],{"class":2895,"line":3040},[2893,8768,5346],{"class":3036},[2893,8770,8771],{"class":2903}," const { data } = useFetch('/api/test', { deep: true })\n",[3095,8773,8774,8775],{},"You can change the default behavior on a project-wide basis (not recommended):\n",[2883,8776,8778],{"className":3011,"code":8777,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  experimental: {\n    defaults: {\n      useAsyncData: {\n        deep: true,\n      },\n    },\n  },\n})\n",[2875,8779,8780,8792,8800,8808,8817,8828,8832,8836,8840],{"__ignoreMap":2889},[2893,8781,8782,8784,8786,8788,8790],{"class":2895,"line":2896},[2893,8783,3022],{"class":3021},[2893,8785,3025],{"class":3021},[2893,8787,3029],{"class":3028},[2893,8789,3033],{"class":3032},[2893,8791,3037],{"class":3036},[2893,8793,8794,8796,8798],{"class":2895,"line":3040},[2893,8795,5425],{"class":3043},[2893,8797,3047],{"class":3036},[2893,8799,3050],{"class":3036},[2893,8801,8802,8804,8806],{"class":2895,"line":3053},[2893,8803,8184],{"class":3043},[2893,8805,3047],{"class":3036},[2893,8807,3050],{"class":3036},[2893,8809,8810,8813,8815],{"class":2895,"line":3068},[2893,8811,8812],{"class":3043},"      useAsyncData",[2893,8814,3047],{"class":3036},[2893,8816,3050],{"class":3036},[2893,8818,8819,8822,8824,8826],{"class":2895,"line":3074},[2893,8820,8821],{"class":3043},"        deep",[2893,8823,3047],{"class":3036},[2893,8825,5137],{"class":3385},[2893,8827,3065],{"class":3036},[2893,8829,8830],{"class":2895,"line":3399},[2893,8831,8213],{"class":3036},[2893,8833,8834],{"class":2895,"line":3443},[2893,8835,5290],{"class":3036},[2893,8837,8838],{"class":2895,"line":3459},[2893,8839,3071],{"class":3036},[2893,8841,8842,8844],{"class":2895,"line":3487},[2893,8843,3077],{"class":3036},[2893,8845,3080],{"class":3032},[3187,8847,8848],{},[2863,8849,8850,8851],{},"If you need to, you can automate this step by running ",[2875,8852,8853],{},"npx codemod@latest nuxt/4/shallow-function-reactivity",[2858,8855,8857,8858],{"id":8856},"absolute-watch-paths-in-builderwatch","Absolute Watch Paths in ",[2875,8859,8860],{},"builder:watch",[2863,8862,3160,8863,5470],{},[2987,8864,3163],{},[3166,8866,3169],{"id":8867},"what-changed-18",[2863,8869,8870,8871,8873,8874,3001],{},"The Nuxt ",[2875,8872,8860],{}," hook now emits a path which is absolute rather than relative to your project ",[2875,8875,4371],{},[3166,8877,3269],{"id":8878},"reasons-for-change-15",[2863,8880,8881,8882,8884],{},"This allows us to support watching paths which are outside your ",[2875,8883,4371],{},", and offers better support for layers and other more complex patterns.",[3166,8886,3290],{"id":8887},"migration-steps-18",[2863,8889,8890,8891,3001],{},"We have already proactively migrated the public Nuxt modules which we are aware use this hook. See ",[2867,8892,8895],{"href":8893,"rel":8894},"https://github.com/nuxt/nuxt/issues/25339",[2871],"issue #25339",[2863,8897,8898,8899,8901],{},"However, if you are a module author using the ",[2875,8900,8860],{}," 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:",[2883,8903,8905],{"className":5311,"code":8904,"language":5313,"meta":2889,"style":2889},"+ 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,8906,8907,8914,8919,8924,8931,8936],{"__ignoreMap":2889},[2893,8908,8909,8911],{"class":2895,"line":2896},[2893,8910,5346],{"class":3036},[2893,8912,8913],{"class":2903}," import { relative, resolve } from 'node:fs'\n",[2893,8915,8916],{"class":2895,"line":3040},[2893,8917,8918],{"class":3032},"  // ...\n",[2893,8920,8921],{"class":2895,"line":3053},[2893,8922,8923],{"class":3032},"  nuxt.hook('builder:watch', async (event, path) => {\n",[2893,8925,8926,8928],{"class":2895,"line":3068},[2893,8927,5346],{"class":3036},[2893,8929,8930],{"class":2903},"   path = relative(nuxt.options.srcDir, resolve(nuxt.options.srcDir, path))\n",[2893,8932,8933],{"class":2895,"line":3074},[2893,8934,8935],{"class":3032},"    // ...\n",[2893,8937,8938],{"class":2895,"line":3399},[2893,8939,6539],{"class":3032},[3187,8941,8942],{},[2863,8943,7160,8944],{},[2875,8945,8946],{},"npx codemod@latest nuxt/4/absolute-watch-path",[2858,8948,8950,8951,8954],{"id":8949},"removal-of-window__nuxt__-object","Removal of ",[2875,8952,8953],{},"window.__NUXT__"," object",[3166,8956,3169],{"id":8957},"what-changed-19",[2863,8959,8960,8961,8963],{},"We are removing the global ",[2875,8962,8953],{}," object after the app finishes hydration.",[3166,8965,3269],{"id":8966},"reasons-for-change-16",[2863,8968,8969,8970,8975,8976,3001],{},"This opens the way to multi-app patterns (",[2867,8971,8974],{"href":8972,"rel":8973},"https://github.com/nuxt/nuxt/issues/21635",[2871],"#21635",") and enables us to focus on a single way to access Nuxt app data - ",[2875,8977,8978],{},"useNuxtApp()",[3166,8980,3290],{"id":8981},"migration-steps-19",[2863,8983,8984,8985,3047],{},"The data is still available, but can be accessed with ",[2875,8986,8987],{},"useNuxtApp().payload",[2883,8989,8991],{"className":5311,"code":8990,"language":5313,"meta":2889,"style":2889},"- console.log(window.__NUXT__)\n+ console.log(useNuxtApp().payload)\n",[2875,8992,8993,9000],{"__ignoreMap":2889},[2893,8994,8995,8997],{"class":2895,"line":2896},[2893,8996,5325],{"class":3036},[2893,8998,8999],{"class":3043}," console.log(window.__NUXT__)\n",[2893,9001,9002,9004],{"class":2895,"line":3040},[2893,9003,5346],{"class":3036},[2893,9005,9006],{"class":2903}," console.log(useNuxtApp().payload)\n",[2858,9008,9010],{"id":9009},"directory-index-scanning","Directory index scanning",[2863,9012,3160,9013,3164],{},[2987,9014,3163],{},[3166,9016,3169],{"id":9017},"what-changed-20",[2863,9019,9020,9021,9023,9024,9027],{},"Child folders in your ",[2875,9022,4710],{}," folder are also scanned for ",[2875,9025,9026],{},"index"," files and these are now also registered as middleware in your project.",[3166,9029,3269],{"id":9030},"reasons-for-change-17",[2863,9032,9033,9034,3221,9036,3001],{},"Nuxt scans a number of folders automatically, including ",[2875,9035,4710],{},[2875,9037,4715],{},[2863,9039,9020,9040,9042,9043,9045],{},[2875,9041,4715],{}," folder are scanned for ",[2875,9044,9026],{}," files and we wanted to make this behavior consistent between scanned directories.",[3166,9047,3290],{"id":9048},"migration-steps-20",[2863,9050,9051],{},"Probably no migration is necessary but if you wish to revert to previous behavior you can add a hook to filter out these middleware:",[2883,9053,9055],{"className":3011,"code":9054,"language":3013,"meta":2889,"style":2889},"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,9056,9057,9069,9078,9096,9167,9171,9175],{"__ignoreMap":2889},[2893,9058,9059,9061,9063,9065,9067],{"class":2895,"line":2896},[2893,9060,3022],{"class":3021},[2893,9062,3025],{"class":3021},[2893,9064,3029],{"class":3028},[2893,9066,3033],{"class":3032},[2893,9068,3037],{"class":3036},[2893,9070,9071,9074,9076],{"class":2895,"line":3040},[2893,9072,9073],{"class":3043},"  hooks",[2893,9075,3047],{"class":3036},[2893,9077,3050],{"class":3036},[2893,9079,9080,9083,9086,9088,9090,9092,9094],{"class":2895,"line":3053},[2893,9081,9082],{"class":3036},"    '",[2893,9084,9085],{"class":2903},"app:resolve",[2893,9087,3362],{"class":3036},[2893,9089,3424],{"class":3036},[2893,9091,1193],{"class":3328},[2893,9093,3331],{"class":3036},[2893,9095,3050],{"class":3036},[2893,9097,9098,9101,9103,9105,9107,9110,9112,9114,9116,9119,9121,9124,9126,9129,9131,9134,9136,9139,9142,9144,9147,9150,9152,9154,9157,9159,9161,9163,9165],{"class":2895,"line":3068},[2893,9099,9100],{"class":3032},"      app",[2893,9102,3001],{"class":3036},[2893,9104,157],{"class":3032},[2893,9106,5033],{"class":3036},[2893,9108,9109],{"class":3032}," app",[2893,9111,3001],{"class":3036},[2893,9113,157],{"class":3032},[2893,9115,3001],{"class":3036},[2893,9117,9118],{"class":3028},"filter",[2893,9120,3033],{"class":3043},[2893,9122,9123],{"class":3328},"mw",[2893,9125,3335],{"class":3334},[2893,9127,9128],{"class":3036}," !",[2893,9130,8059],{"class":3036},[2893,9132,9133],{"class":3032},"\\/",[2893,9135,9026],{"class":2903},[2893,9137,9138],{"class":3032},"\\.",[2893,9140,9141],{"class":3036},"[^",[2893,9143,8059],{"class":2903},[2893,9145,9146],{"class":3036},"]+",[2893,9148,9149],{"class":3021},"$",[2893,9151,8059],{"class":3036},[2893,9153,3001],{"class":3036},[2893,9155,9156],{"class":3028},"test",[2893,9158,3033],{"class":3043},[2893,9160,9123],{"class":3032},[2893,9162,3001],{"class":3036},[2893,9164,5777],{"class":3032},[2893,9166,3763],{"class":3043},[2893,9168,9169],{"class":2895,"line":3074},[2893,9170,5290],{"class":3036},[2893,9172,9173],{"class":2895,"line":3399},[2893,9174,3071],{"class":3036},[2893,9176,9177,9179],{"class":2895,"line":3443},[2893,9178,3077],{"class":3036},[2893,9180,3080],{"class":3032},[2858,9182,9184],{"id":9183},"template-compilation-changes","Template Compilation Changes",[2863,9186,3160,9187,5470],{},[2987,9188,3163],{},[3166,9190,3169],{"id":9191},"what-changed-21",[2863,9193,9194,9195,9198,9199,9202],{},"Previously, Nuxt used ",[2875,9196,9197],{},"lodash/template"," to compile templates located on the file system using the ",[2875,9200,9201],{},".ejs"," file format/syntax.",[2863,9204,9205,9206,3302,9209,3302,9212,9215],{},"In addition, we provided some template utilities (",[2875,9207,9208],{},"serialize",[2875,9210,9211],{},"importName",[2875,9213,9214],{},"importSources",") which could be used for code-generation within these templates, which are now being removed.",[3166,9217,3269],{"id":9218},"reasons-for-change-18",[2863,9220,9221,9222,9225],{},"In Nuxt v3 we moved to a 'virtual' syntax with a ",[2875,9223,9224],{},"getContents()"," function which is much more flexible and performant.",[2863,9227,9228,9229,9231,9232,9235],{},"In addition, ",[2875,9230,9197],{}," 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,9233,9234],{},"lodash"," is a hefty dependency and is unused by most projects.",[2863,9237,9238,9239,9244],{},"Finally, providing code serialization functions directly within Nuxt is not ideal. Instead, we maintain projects like ",[2867,9240,9243],{"href":9241,"rel":9242},"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.",[3166,9246,3290],{"id":9247},"migration-steps-21",[2863,9249,9250],{},"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:",[3092,9252,9253,9258,9265],{},[3095,9254,9255,9256,3001],{},"Moving your string interpolation logic directly into ",[2875,9257,9224],{},[3095,9259,9260,9261,3001],{},"Using a custom function to handle the replacement, such as in ",[2867,9262,9263],{"href":9263,"rel":9264},"https://github.com/nuxt-modules/color-mode/pull/240",[2871],[3095,9266,9267,9268,9271,9272,9275],{},"Use ",[2875,9269,9270],{},"es-toolkit/compat"," (a drop-in replacement for lodash template), as a dependency of ",[4673,9273,9274],{},"your"," project rather than Nuxt:",[2883,9277,9279],{"className":5311,"code":9278,"language":5313,"meta":2889,"style":2889},"+ 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,9280,9281,9288,9295,9299,9304,9309,9314,9321,9328,9335,9342,9349],{"__ignoreMap":2889},[2893,9282,9283,9285],{"class":2895,"line":2896},[2893,9284,5346],{"class":3036},[2893,9286,9287],{"class":2903}," import { readFileSync } from 'node:fs'\n",[2893,9289,9290,9292],{"class":2895,"line":3040},[2893,9291,5346],{"class":3036},[2893,9293,9294],{"class":2903}," import { template } from 'es-toolkit/compat'\n",[2893,9296,9297],{"class":2895,"line":3053},[2893,9298,8918],{"class":3032},[2893,9300,9301],{"class":2895,"line":3068},[2893,9302,9303],{"class":3032},"  addTemplate({\n",[2893,9305,9306],{"class":2895,"line":3074},[2893,9307,9308],{"class":3032},"    fileName: 'appinsights-vue.js'\n",[2893,9310,9311],{"class":2895,"line":3399},[2893,9312,9313],{"class":3032},"    options: { /* some options */ },\n",[2893,9315,9316,9318],{"class":2895,"line":3443},[2893,9317,5325],{"class":3036},[2893,9319,9320],{"class":3043},"   src: resolver.resolve('./runtime/plugin.ejs'),\n",[2893,9322,9323,9325],{"class":2895,"line":3459},[2893,9324,5346],{"class":3036},[2893,9326,9327],{"class":2903},"   getContents({ options }) {\n",[2893,9329,9330,9332],{"class":2895,"line":3487},[2893,9331,5346],{"class":3036},[2893,9333,9334],{"class":2903},"     const contents = readFileSync(resolver.resolve('./runtime/plugin.ejs'), 'utf-8')\n",[2893,9336,9337,9339],{"class":2895,"line":3493},[2893,9338,5346],{"class":3036},[2893,9340,9341],{"class":2903},"     return template(contents)({ options })\n",[2893,9343,9344,9346],{"class":2895,"line":3500},[2893,9345,5346],{"class":3036},[2893,9347,9348],{"class":2903},"   },\n",[2893,9350,9351],{"class":2895,"line":3505},[2893,9352,6539],{"class":3032},[2863,9354,9355,9356,3302,9358,3302,9360,9362,9363,3047],{},"Finally, if you are using the template utilities (",[2875,9357,9208],{},[2875,9359,9211],{},[2875,9361,9214],{},"), you can replace them as follows with utilities from ",[2875,9364,9365],{},"knitwork",[2883,9367,9369],{"className":3011,"code":9368,"language":3013,"meta":2889,"style":2889},"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,9370,9371,9400,9404,9543,9547,9594,9625,9638,9704,9708,9728,9751,9755,9759],{"__ignoreMap":2889},[2893,9372,9373,9375,9377,9380,9382,9385,9387,9390,9392,9394,9396,9398],{"class":2895,"line":2896},[2893,9374,6098],{"class":3021},[2893,9376,3377],{"class":3036},[2893,9378,9379],{"class":3032}," genDynamicImport",[2893,9381,3421],{"class":3036},[2893,9383,9384],{"class":3032}," genImport",[2893,9386,3421],{"class":3036},[2893,9388,9389],{"class":3032}," genSafeVariableName",[2893,9391,3389],{"class":3036},[2893,9393,6113],{"class":3021},[2893,9395,3536],{"class":3036},[2893,9397,9365],{"class":2903},[2893,9399,3750],{"class":3036},[2893,9401,9402],{"class":2895,"line":3040},[2893,9403,3396],{"emptyLinePlaceholder":1196},[2893,9405,9406,9408,9411,9413,9415,9417,9419,9422,9424,9426,9429,9431,9434,9437,9439,9442,9445,9447,9449,9452,9454,9456,9458,9461,9463,9465,9468,9471,9473,9476,9478,9481,9483,9486,9489,9491,9494,9496,9498,9500,9503,9506,9508,9510,9512,9514,9517,9519,9521,9523,9526,9528,9530,9532,9534,9536,9539,9541],{"class":2895,"line":3053},[2893,9407,5018],{"class":3334},[2893,9409,9410],{"class":3032}," serialize ",[2893,9412,6336],{"class":3036},[2893,9414,3424],{"class":3036},[2893,9416,4933],{"class":3328},[2893,9418,3047],{"class":3036},[2893,9420,9421],{"class":2899}," any",[2893,9423,3331],{"class":3036},[2893,9425,3335],{"class":3334},[2893,9427,9428],{"class":3032}," JSON",[2893,9430,3001],{"class":3036},[2893,9432,9433],{"class":3028},"stringify",[2893,9435,9436],{"class":3032},"(data",[2893,9438,3421],{"class":3036},[2893,9440,9441],{"class":3036}," null,",[2893,9443,9444],{"class":3061}," 2",[2893,9446,3331],{"class":3032},[2893,9448,3001],{"class":3036},[2893,9450,9451],{"class":3028},"replace",[2893,9453,3033],{"class":3032},[2893,9455,8059],{"class":3036},[2893,9457,6339],{"class":2903},[2893,9459,9460],{"class":3032},"\\{",[2893,9462,3033],{"class":3036},[2893,9464,3001],{"class":2903},[2893,9466,9467],{"class":3036},"+)",[2893,9469,9470],{"class":3032},"\\}",[2893,9472,6339],{"class":2903},[2893,9474,9475],{"class":3036},"(?=",[2893,9477,3421],{"class":2903},[2893,9479,9480],{"class":3036},"?",[2893,9482,9149],{"class":3021},[2893,9484,9485],{"class":3036},")/",[2893,9487,9488],{"class":3061},"gm",[2893,9490,3421],{"class":3036},[2893,9492,9493],{"class":3328}," r",[2893,9495,3335],{"class":3334},[2893,9497,9428],{"class":3032},[2893,9499,3001],{"class":3036},[2893,9501,9502],{"class":3028},"parse",[2893,9504,9505],{"class":3032},"(r)",[2893,9507,3001],{"class":3036},[2893,9509,9451],{"class":3028},[2893,9511,3033],{"class":3032},[2893,9513,8059],{"class":3036},[2893,9515,9516],{"class":3021},"^",[2893,9518,9460],{"class":3032},[2893,9520,3033],{"class":3036},[2893,9522,3001],{"class":2903},[2893,9524,9525],{"class":3036},"*)",[2893,9527,9470],{"class":3032},[2893,9529,9149],{"class":3021},[2893,9531,8059],{"class":3036},[2893,9533,3421],{"class":3036},[2893,9535,3536],{"class":3036},[2893,9537,9538],{"class":2903},"$1",[2893,9540,3362],{"class":3036},[2893,9542,3763],{"class":3032},[2893,9544,9545],{"class":2895,"line":3068},[2893,9546,3396],{"emptyLinePlaceholder":1196},[2893,9548,9549,9551,9554,9556,9558,9561,9563,9565,9567,9569,9572,9574,9576,9579,9581,9583,9585,9587,9590,9592],{"class":2895,"line":3074},[2893,9550,5018],{"class":3334},[2893,9552,9553],{"class":3032}," importSources ",[2893,9555,6336],{"class":3036},[2893,9557,3424],{"class":3036},[2893,9559,9560],{"class":3328},"sources",[2893,9562,3047],{"class":3036},[2893,9564,5174],{"class":2899},[2893,9566,7479],{"class":3036},[2893,9568,5174],{"class":2899},[2893,9570,9571],{"class":3032},"[]",[2893,9573,3421],{"class":3036},[2893,9575,3377],{"class":3036},[2893,9577,9578],{"class":3328}," lazy",[2893,9580,5033],{"class":3036},[2893,9582,3386],{"class":3385},[2893,9584,3389],{"class":3036},[2893,9586,5033],{"class":3036},[2893,9588,9589],{"class":3036}," {})",[2893,9591,3335],{"class":3334},[2893,9593,3050],{"class":3036},[2893,9595,9596,9598,9601,9603,9605,9607,9609,9612,9614,9616,9619,9621,9623],{"class":2895,"line":3399},[2893,9597,5183],{"class":3021},[2893,9599,9600],{"class":3028}," toArray",[2893,9602,3033],{"class":3043},[2893,9604,9560],{"class":3032},[2893,9606,3331],{"class":3043},[2893,9608,3001],{"class":3036},[2893,9610,9611],{"class":3028},"map",[2893,9613,3033],{"class":3043},[2893,9615,3033],{"class":3036},[2893,9617,9618],{"class":3328},"src",[2893,9620,3331],{"class":3036},[2893,9622,3335],{"class":3334},[2893,9624,3050],{"class":3036},[2893,9626,9627,9629,9631,9634,9636],{"class":2895,"line":3443},[2893,9628,3624],{"class":3021},[2893,9630,3424],{"class":3043},[2893,9632,9633],{"class":3032},"lazy",[2893,9635,3454],{"class":3043},[2893,9637,3037],{"class":3036},[2893,9639,9640,9643,9646,9649,9651,9654,9657,9659,9662,9664,9667,9670,9672,9674,9677,9679,9681,9684,9686,9689,9691,9693,9695,9697,9699,9701],{"class":2895,"line":3459},[2893,9641,9642],{"class":3021},"      return",[2893,9644,9645],{"class":3036}," `",[2893,9647,9648],{"class":2903},"const ",[2893,9650,5199],{"class":3036},[2893,9652,9653],{"class":3028},"genSafeVariableName",[2893,9655,9656],{"class":3032},"(src)",[2893,9658,3077],{"class":3036},[2893,9660,9661],{"class":2903}," = ",[2893,9663,5199],{"class":3036},[2893,9665,9666],{"class":3028},"genDynamicImport",[2893,9668,9669],{"class":3032},"(src",[2893,9671,3421],{"class":3036},[2893,9673,3377],{"class":3036},[2893,9675,9676],{"class":3043}," comment",[2893,9678,3047],{"class":3036},[2893,9680,9645],{"class":3036},[2893,9682,9683],{"class":2903},"webpackChunkName: ",[2893,9685,5199],{"class":3036},[2893,9687,9688],{"class":3032},"JSON",[2893,9690,3001],{"class":3036},[2893,9692,9433],{"class":3028},[2893,9694,9656],{"class":3032},[2893,9696,5204],{"class":3036},[2893,9698,3389],{"class":3036},[2893,9700,3331],{"class":3032},[2893,9702,9703],{"class":3036},"}`\n",[2893,9705,9706],{"class":2895,"line":3487},[2893,9707,3708],{"class":3036},[2893,9709,9710,9712,9714,9716,9718,9720,9722,9724,9726],{"class":2895,"line":3493},[2893,9711,3734],{"class":3021},[2893,9713,9384],{"class":3028},[2893,9715,3033],{"class":3043},[2893,9717,9618],{"class":3032},[2893,9719,3421],{"class":3036},[2893,9721,9389],{"class":3028},[2893,9723,3033],{"class":3043},[2893,9725,9618],{"class":3032},[2893,9727,3763],{"class":3043},[2893,9729,9730,9733,9735,9737,9740,9742,9744,9747,9749],{"class":2895,"line":3500},[2893,9731,9732],{"class":3036},"  }",[2893,9734,3331],{"class":3043},[2893,9736,3001],{"class":3036},[2893,9738,9739],{"class":3028},"join",[2893,9741,3033],{"class":3043},[2893,9743,3362],{"class":3036},[2893,9745,9746],{"class":3032},"\\n",[2893,9748,3362],{"class":3036},[2893,9750,3080],{"class":3043},[2893,9752,9753],{"class":2895,"line":3505},[2893,9754,5300],{"class":3036},[2893,9756,9757],{"class":2895,"line":3511},[2893,9758,3396],{"emptyLinePlaceholder":1196},[2893,9760,9761,9763,9766,9768],{"class":2895,"line":3528},[2893,9762,5018],{"class":3334},[2893,9764,9765],{"class":3032}," importName ",[2893,9767,6336],{"class":3036},[2893,9769,9770],{"class":3032}," genSafeVariableName\n",[3187,9772,9773],{},[2863,9774,7160,9775],{},[2875,9776,9777],{},"npx codemod@latest nuxt/4/template-compilation-changes",[2858,9779,9781],{"id":9780},"default-typescript-configuration-changes","Default TypeScript Configuration Changes",[2863,9783,3160,9784,5470],{},[2987,9785,3163],{},[3166,9787,3169],{"id":9788},"what-changed-22",[2863,9790,9791,9794,9795,9797,9798,3001],{},[2875,9792,9793],{},"compilerOptions.noUncheckedIndexedAccess"," is now ",[2875,9796,7205],{}," instead of ",[2875,9799,7212],{},[3166,9801,3269],{"id":9802},"reasons-for-change-19",[2863,9804,9805,9806,9811,9812,3001],{},"This change is a follow up to a prior ",[2867,9807,9810],{"href":9808,"rel":9809},"https://github.com/nuxt/nuxt/pull/27485",[2871],"3.12 config update"," where we improved our defaults, mostly adhering to ",[2867,9813,9816],{"href":9814,"rel":9815},"https://www.totaltypescript.com/tsconfig-cheat-sheet",[2871],"TotalTypeScript's recommendations",[3166,9818,3290],{"id":9819},"migration-steps-22",[2863,9821,9822],{},"There are two approaches:",[3208,9824,9825,9828],{},[3095,9826,9827],{},"Run a typecheck on your app and fix any new errors (recommended).",[3095,9829,9830,9831,3047,9833],{},"Override the new default in your ",[2875,9832,233],{},[2883,9834,9836],{"className":3011,"code":9835,"language":3013,"meta":2889,"style":2889},"export default defineNuxtConfig({\n  typescript: {\n    tsConfig: {\n      compilerOptions: {\n        noUncheckedIndexedAccess: false,\n      },\n    },\n  },\n})\n",[2875,9837,9838,9850,9859,9868,9877,9888,9892,9896,9900],{"__ignoreMap":2889},[2893,9839,9840,9842,9844,9846,9848],{"class":2895,"line":2896},[2893,9841,3022],{"class":3021},[2893,9843,3025],{"class":3021},[2893,9845,3029],{"class":3028},[2893,9847,3033],{"class":3032},[2893,9849,3037],{"class":3036},[2893,9851,9852,9855,9857],{"class":2895,"line":3040},[2893,9853,9854],{"class":3043},"  typescript",[2893,9856,3047],{"class":3036},[2893,9858,3050],{"class":3036},[2893,9860,9861,9864,9866],{"class":2895,"line":3053},[2893,9862,9863],{"class":3043},"    tsConfig",[2893,9865,3047],{"class":3036},[2893,9867,3050],{"class":3036},[2893,9869,9870,9873,9875],{"class":2895,"line":3068},[2893,9871,9872],{"class":3043},"      compilerOptions",[2893,9874,3047],{"class":3036},[2893,9876,3050],{"class":3036},[2893,9878,9879,9882,9884,9886],{"class":2895,"line":3074},[2893,9880,9881],{"class":3043},"        noUncheckedIndexedAccess",[2893,9883,3047],{"class":3036},[2893,9885,3386],{"class":3385},[2893,9887,3065],{"class":3036},[2893,9889,9890],{"class":2895,"line":3399},[2893,9891,8213],{"class":3036},[2893,9893,9894],{"class":2895,"line":3443},[2893,9895,5290],{"class":3036},[2893,9897,9898],{"class":2895,"line":3459},[2893,9899,3071],{"class":3036},[2893,9901,9902,9904],{"class":2895,"line":3487},[2893,9903,3077],{"class":3036},[2893,9905,3080],{"class":3032},[2858,9907,9909],{"id":9908},"typescript-configuration-splitting","TypeScript Configuration Splitting",[2863,9911,3160,9912,5470],{},[2987,9913,3163],{},[3166,9915,3169],{"id":9916},"what-changed-23",[2863,9918,9919],{},"Nuxt now generates separate TypeScript configurations for different contexts to provide better type-checking experiences:",[3208,9921,9922,9963,9972,9978,9984],{},[3095,9923,9924,9927,9928],{},[2987,9925,9926],{},"New TypeScript configuration files",": Nuxt now generates additional TypeScript configurations:",[3092,9929,9930,9936,9942,9951,9957],{},[3095,9931,9932,9935],{},[2875,9933,9934],{},".nuxt/tsconfig.app.json"," - For your app code (Vue components, composables, etc.)",[3095,9937,9938,9941],{},[2875,9939,9940],{},".nuxt/tsconfig.server.json"," - For your server-side code (Nitro/server directory)",[3095,9943,9944,9947,9948,9950],{},[2875,9945,9946],{},".nuxt/tsconfig.node.json"," - For your build-time code (modules, ",[2875,9949,233],{},", etc.)",[3095,9952,9953,9956],{},[2875,9954,9955],{},".nuxt/tsconfig.shared.json"," - For code shared between app and server contexts (like types and non-environment specific utilities)",[3095,9958,9959,9962],{},[2875,9960,9961],{},".nuxt/tsconfig.json"," - Legacy configuration for backward compatibility",[3095,9964,9965,9968,9969,9971],{},[2987,9966,9967],{},"Backward compatibility",": Existing projects that extend ",[2875,9970,9961],{}," will continue to work as before.",[3095,9973,9974,9977],{},[2987,9975,9976],{},"Opt-in project references",": New projects or those wanting better type checking can adopt TypeScript's project references feature.",[3095,9979,9980,9983],{},[2987,9981,9982],{},"Context-specific type checking",": Each context now has appropriate compiler options and includes/excludes for its specific environment.",[3095,9985,9986,9993],{},[2987,9987,9988,9989,9992],{},"New ",[2875,9990,9991],{},"typescript.nodeTsConfig"," option",": You can now customize the TypeScript configuration for Node.js build-time code.",[3166,9995,3269],{"id":9996},"reasons-for-change-20",[2863,9998,9999],{},"This change provides several benefits:",[3208,10001,10002,10008,10014,10020],{},[3095,10003,10004,10007],{},[2987,10005,10006],{},"Better type safety",": Each context (app, server, build-time) gets appropriate type checking with context-specific globals and APIs.",[3095,10009,10010,10013],{},[2987,10011,10012],{},"Improved IDE experience",": Better IntelliSense and error reporting for different parts of your codebase.",[3095,10015,10016,10019],{},[2987,10017,10018],{},"Cleaner separation",": Server code won't incorrectly suggest client-side APIs and vice versa.",[3095,10021,10022,10024],{},[2987,10023,4650],{},": TypeScript can more efficiently check code with properly scoped configurations.",[2863,10026,10027,10028,10030,10031,10033,10034,10036],{},"For example, auto-imports are not available in your ",[2875,10029,233],{}," (but previously this was not flagged by TypeScript). And while IDEs recognized the separate context hinted by ",[2875,10032,242],{}," in your ",[2875,10035,4667],{}," directory, this was not reflected in type-checking (requiring a separate step).",[3166,10038,3290],{"id":10039},"migration-steps-23",[2863,10041,10042,10045],{},[2987,10043,10044],{},"No migration is required"," - existing projects will continue to work as before.",[2863,10047,10048],{},"However, to take advantage of improved type checking, you can opt in to the new project references approach:",[3208,10050,10051,10217,10231,10256,10297,10453],{},[3095,10052,10053,10058,10059,10075],{},[2987,10054,10055,10056],{},"Update your root ",[2875,10057,242],{}," to use project references:",[3143,10060,10061],{},[2863,10062,10063,10064,10066,10067,10070,10071,10074],{},"If your ",[2875,10065,242],{}," currently has an ",[2875,10068,10069],{},"\"extends\": \"./.nuxt/tsconfig.json\""," line, ",[2987,10072,10073],{},"remove it"," before adding the references. Project references and extends are mutually exclusive.",[2883,10076,10080],{"className":10077,"code":10078,"language":10079,"meta":2889,"style":2889},"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,10081,10082,10086,10091,10106,10120,10144,10165,10186,10208,10213],{"__ignoreMap":2889},[2893,10083,10084],{"class":2895,"line":2896},[2893,10085,3037],{"class":3036},[2893,10087,10088],{"class":2895,"line":3040},[2893,10089,10090],{"class":3316},"  // Remove \"extends\": \"./.nuxt/tsconfig.json\" if present\n",[2893,10092,10093,10096,10099,10101,10103],{"class":2895,"line":3053},[2893,10094,10095],{"class":3036},"  \"",[2893,10097,10098],{"class":3334},"files",[2893,10100,6339],{"class":3036},[2893,10102,3047],{"class":3036},[2893,10104,10105],{"class":3036}," [],\n",[2893,10107,10108,10110,10113,10115,10117],{"class":2895,"line":3068},[2893,10109,10095],{"class":3036},[2893,10111,10112],{"class":3334},"references",[2893,10114,6339],{"class":3036},[2893,10116,3047],{"class":3036},[2893,10118,10119],{"class":3036}," [\n",[2893,10121,10122,10125,10128,10130,10132,10134,10136,10139,10141],{"class":2895,"line":3074},[2893,10123,10124],{"class":3036},"    {",[2893,10126,10127],{"class":3036}," \"",[2893,10129,5777],{"class":2899},[2893,10131,6339],{"class":3036},[2893,10133,3047],{"class":3036},[2893,10135,10127],{"class":3036},[2893,10137,10138],{"class":2903},"./.nuxt/tsconfig.app.json",[2893,10140,6339],{"class":3036},[2893,10142,10143],{"class":3036}," },\n",[2893,10145,10146,10148,10150,10152,10154,10156,10158,10161,10163],{"class":2895,"line":3399},[2893,10147,10124],{"class":3036},[2893,10149,10127],{"class":3036},[2893,10151,5777],{"class":2899},[2893,10153,6339],{"class":3036},[2893,10155,3047],{"class":3036},[2893,10157,10127],{"class":3036},[2893,10159,10160],{"class":2903},"./.nuxt/tsconfig.server.json",[2893,10162,6339],{"class":3036},[2893,10164,10143],{"class":3036},[2893,10166,10167,10169,10171,10173,10175,10177,10179,10182,10184],{"class":2895,"line":3443},[2893,10168,10124],{"class":3036},[2893,10170,10127],{"class":3036},[2893,10172,5777],{"class":2899},[2893,10174,6339],{"class":3036},[2893,10176,3047],{"class":3036},[2893,10178,10127],{"class":3036},[2893,10180,10181],{"class":2903},"./.nuxt/tsconfig.shared.json",[2893,10183,6339],{"class":3036},[2893,10185,10143],{"class":3036},[2893,10187,10188,10190,10192,10194,10196,10198,10200,10203,10205],{"class":2895,"line":3459},[2893,10189,10124],{"class":3036},[2893,10191,10127],{"class":3036},[2893,10193,5777],{"class":2899},[2893,10195,6339],{"class":3036},[2893,10197,3047],{"class":3036},[2893,10199,10127],{"class":3036},[2893,10201,10202],{"class":2903},"./.nuxt/tsconfig.node.json",[2893,10204,6339],{"class":3036},[2893,10206,10207],{"class":3036}," }\n",[2893,10209,10210],{"class":2895,"line":3487},[2893,10211,10212],{"class":3036},"  ]\n",[2893,10214,10215],{"class":2895,"line":3493},[2893,10216,5300],{"class":3036},[3095,10218,10219,10224,10225,10228,10229,3001],{},[2987,10220,10221,10222],{},"Remove any manual server ",[2875,10223,242],{}," files (like ",[2875,10226,10227],{},"server/tsconfig.json",") that extended ",[2875,10230,9940],{},[3095,10232,10233,10236,10237],{},[2987,10234,10235],{},"Update your type checking scripts"," to use the build flag for project references:",[2883,10238,10240],{"className":5311,"code":10239,"language":5313,"meta":2889,"style":2889},"- \"typecheck\": \"nuxt prepare && vue-tsc --noEmit\"\n+ \"typecheck\": \"nuxt prepare && vue-tsc -b --noEmit\"\n",[2875,10241,10242,10249],{"__ignoreMap":2889},[2893,10243,10244,10246],{"class":2895,"line":2896},[2893,10245,5325],{"class":3036},[2893,10247,10248],{"class":3043}," \"typecheck\": \"nuxt prepare && vue-tsc --noEmit\"\n",[2893,10250,10251,10253],{"class":2895,"line":3040},[2893,10252,5346],{"class":3036},[2893,10254,10255],{"class":2903}," \"typecheck\": \"nuxt prepare && vue-tsc -b --noEmit\"\n",[3095,10257,10258,3047,10261,10283],{},[2987,10259,10260],{},"Move all type augmentations into their appropriate context",[3092,10262,10263,10269,10274],{},[3095,10264,10265,10266,10268],{},"If you are augmenting types for the app context, move the files to the ",[2875,10267,1195],{}," directory.",[3095,10270,10271,10272,10268],{},"If you are augmenting types for the server context, move the files to the ",[2875,10273,4667],{},[3095,10275,10276,10277,10280,10281,10268],{},"If you are augmenting types that are ",[2987,10278,10279],{},"shared between the app and server",", move the files to the ",[2875,10282,4442],{},[10284,10285,10286],"warning",{},[2863,10287,10288,10289,3302,10291,10293,10294,10296],{},"Augmenting types from outside the ",[2875,10290,1195],{},[2875,10292,4667],{},", or ",[2875,10295,4442],{}," directories will not work with the new project references setup.",[3095,10298,10299,10302,10303],{},[2987,10300,10301],{},"Configure TypeScript options"," if needed:",[2883,10304,10306],{"className":3011,"code":10305,"language":3013,"meta":2889,"style":2889},"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,10307,10308,10320,10328,10333,10341,10346,10350,10355,10364,10368,10372,10377,10386,10390,10394,10398,10407,10416,10421,10430,10435,10439,10443,10447],{"__ignoreMap":2889},[2893,10309,10310,10312,10314,10316,10318],{"class":2895,"line":2896},[2893,10311,3022],{"class":3021},[2893,10313,3025],{"class":3021},[2893,10315,3029],{"class":3028},[2893,10317,3033],{"class":3032},[2893,10319,3037],{"class":3036},[2893,10321,10322,10324,10326],{"class":2895,"line":3040},[2893,10323,9854],{"class":3043},[2893,10325,3047],{"class":3036},[2893,10327,3050],{"class":3036},[2893,10329,10330],{"class":2895,"line":3053},[2893,10331,10332],{"class":3316},"    // customize tsconfig.app.json\n",[2893,10334,10335,10337,10339],{"class":2895,"line":3068},[2893,10336,9863],{"class":3043},[2893,10338,3047],{"class":3036},[2893,10340,3050],{"class":3036},[2893,10342,10343],{"class":2895,"line":3074},[2893,10344,10345],{"class":3316},"      // ...\n",[2893,10347,10348],{"class":2895,"line":3399},[2893,10349,5290],{"class":3036},[2893,10351,10352],{"class":2895,"line":3443},[2893,10353,10354],{"class":3316},"    // customize tsconfig.shared.json\n",[2893,10356,10357,10360,10362],{"class":2895,"line":3459},[2893,10358,10359],{"class":3043},"    sharedTsConfig",[2893,10361,3047],{"class":3036},[2893,10363,3050],{"class":3036},[2893,10365,10366],{"class":2895,"line":3487},[2893,10367,10345],{"class":3316},[2893,10369,10370],{"class":2895,"line":3493},[2893,10371,5290],{"class":3036},[2893,10373,10374],{"class":2895,"line":3500},[2893,10375,10376],{"class":3316},"    // customize tsconfig.node.json\n",[2893,10378,10379,10382,10384],{"class":2895,"line":3505},[2893,10380,10381],{"class":3043},"    nodeTsConfig",[2893,10383,3047],{"class":3036},[2893,10385,3050],{"class":3036},[2893,10387,10388],{"class":2895,"line":3511},[2893,10389,10345],{"class":3316},[2893,10391,10392],{"class":2895,"line":3528},[2893,10393,5290],{"class":3036},[2893,10395,10396],{"class":2895,"line":3546},[2893,10397,3071],{"class":3036},[2893,10399,10400,10403,10405],{"class":2895,"line":3559},[2893,10401,10402],{"class":3043},"  nitro",[2893,10404,3047],{"class":3036},[2893,10406,3050],{"class":3036},[2893,10408,10409,10412,10414],{"class":2895,"line":3565},[2893,10410,10411],{"class":3043},"    typescript",[2893,10413,3047],{"class":3036},[2893,10415,3050],{"class":3036},[2893,10417,10418],{"class":2895,"line":3570},[2893,10419,10420],{"class":3316},"      // customize tsconfig.server.json\n",[2893,10422,10423,10426,10428],{"class":2895,"line":3584},[2893,10424,10425],{"class":3043},"      tsConfig",[2893,10427,3047],{"class":3036},[2893,10429,3050],{"class":3036},[2893,10431,10432],{"class":2895,"line":3590},[2893,10433,10434],{"class":3316},"        // ...\n",[2893,10436,10437],{"class":2895,"line":3595},[2893,10438,8213],{"class":3036},[2893,10440,10441],{"class":2895,"line":3615},[2893,10442,5290],{"class":3036},[2893,10444,10445],{"class":2895,"line":3621},[2893,10446,3071],{"class":3036},[2893,10448,10449,10451],{"class":2895,"line":3644},[2893,10450,3077],{"class":3036},[2893,10452,3080],{"class":3032},[3095,10454,10455,10458],{},[2987,10456,10457],{},"Update any CI/build scripts"," that run TypeScript checking to ensure they use the new project references approach.",[2863,10460,10461],{},"The new configuration provides better type safety and IntelliSense for projects that opt in, while maintaining full backward compatibility for existing setups.",[2858,10463,10465],{"id":10464},"removal-of-experimental-features","Removal of Experimental Features",[2863,10467,3160,10468,5470],{},[2987,10469,3163],{},[3166,10471,3169],{"id":10472},"what-changed-24",[2863,10474,10475],{},"Four experimental features are no longer configurable in Nuxt 4:",[3092,10477,10478,10486,10494,10502,10509],{},[3095,10479,10480,8351,10483,10485],{},[2875,10481,10482],{},"experimental.treeshakeClientOnly",[2875,10484,7205],{}," (default since v3.0)",[3095,10487,10488,8351,10491,10493],{},[2875,10489,10490],{},"experimental.configSchema",[2875,10492,7205],{}," (default since v3.3)",[3095,10495,10496,8351,10499,10501],{},[2875,10497,10498],{},"experimental.polyfillVueUseHead",[2875,10500,7212],{}," (default since v3.4)",[3095,10503,10504,8351,10507,10501],{},[2875,10505,10506],{},"experimental.respectNoSSRHeader",[2875,10508,7212],{},[3095,10510,10511,10514,10515,4404],{},[2875,10512,10513],{},"vite.devBundler"," is no longer configurable - it will use ",[2875,10516,10517],{},"vite-node",[3166,10519,3269],{"id":10520},"reasons-for-change-21",[2863,10522,10523],{},"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.",[3166,10525,3290],{"id":10526},"migration-steps-24",[3092,10528,10529,10540],{},[3095,10530,10531,10534,10535],{},[2875,10532,10533],{},"polyfillVueUseHead"," is implementable in user-land with ",[2867,10536,10539],{"href":10537,"rel":10538},"https://github.com/nuxt/nuxt/blob/f209158352b09d1986aa320e29ff36353b91c358/packages/nuxt/src/head/runtime/plugins/vueuse-head-polyfill.ts#L10-L11",[2871],"this plugin",[3095,10541,10542,10545,10546],{},[2875,10543,10544],{},"respectNoSSRHeader","is implementable in user-land with ",[2867,10547,10550],{"href":10548,"rel":10549},"https://github.com/nuxt/nuxt/blob/c660b39447f0d5b8790c0826092638d321cd6821/packages/nuxt/src/core/runtime/nitro/no-ssr.ts#L8-L9",[2871],"server middleware",[2858,10552,10554,10555,10558],{"id":10553},"removal-of-top-level-generate-configuration","Removal of Top-Level ",[2875,10556,10557],{},"generate"," Configuration",[2863,10560,3160,10561,5470],{},[2987,10562,3163],{},[3166,10564,3169],{"id":10565},"what-changed-25",[2863,10567,10568,10569,10571],{},"The top-level ",[2875,10570,10557],{}," configuration option is no longer available in Nuxt 4. This includes all of its properties:",[3092,10573,10574,10580],{},[3095,10575,10576,10579],{},[2875,10577,10578],{},"generate.exclude"," - for excluding routes from prerendering",[3095,10581,10582,10585],{},[2875,10583,10584],{},"generate.routes"," - for specifying routes to prerender",[3166,10587,3269],{"id":10588},"reasons-for-change-22",[2863,10590,10591,10592,10594,10595,10598],{},"The top level ",[2875,10593,10557],{}," configuration was a holdover from Nuxt 2. We've supported ",[2875,10596,10597],{},"nitro.prerender"," for a while now, and it is the preferred way to configure prerendering in Nuxt 3+.",[3166,10600,3290],{"id":10601},"migration-steps-25",[2863,10603,10604,10605,10607,10608,10610],{},"Replace ",[2875,10606,10557],{}," configuration with the corresponding ",[2875,10609,10597],{}," options:",[2883,10612,10614],{"className":5311,"code":10613,"language":5313,"meta":2889,"style":2889},"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,10615,10616,10621,10628,10635,10642,10648,10655,10662,10669,10676,10683,10689],{"__ignoreMap":2889},[2893,10617,10618],{"class":2895,"line":2896},[2893,10619,10620],{"class":3032},"export default defineNuxtConfig({\n",[2893,10622,10623,10625],{"class":2895,"line":3040},[2893,10624,5325],{"class":3036},[2893,10626,10627],{"class":3043}," generate: {\n",[2893,10629,10630,10632],{"class":2895,"line":3053},[2893,10631,5325],{"class":3036},[2893,10633,10634],{"class":3043},"   exclude: ['/admin', '/private'],\n",[2893,10636,10637,10639],{"class":2895,"line":3068},[2893,10638,5325],{"class":3036},[2893,10640,10641],{"class":3043},"   routes: ['/sitemap.xml', '/robots.txt']\n",[2893,10643,10644,10646],{"class":2895,"line":3074},[2893,10645,5325],{"class":3036},[2893,10647,10207],{"class":3043},[2893,10649,10650,10652],{"class":2895,"line":3399},[2893,10651,5346],{"class":3036},[2893,10653,10654],{"class":2903}," nitro: {\n",[2893,10656,10657,10659],{"class":2895,"line":3443},[2893,10658,5346],{"class":3036},[2893,10660,10661],{"class":2903},"   prerender: {\n",[2893,10663,10664,10666],{"class":2895,"line":3459},[2893,10665,5346],{"class":3036},[2893,10667,10668],{"class":2903},"     ignore: ['/admin', '/private'],\n",[2893,10670,10671,10673],{"class":2895,"line":3487},[2893,10672,5346],{"class":3036},[2893,10674,10675],{"class":2903},"     routes: ['/sitemap.xml', '/robots.txt']\n",[2893,10677,10678,10680],{"class":2895,"line":3493},[2893,10679,5346],{"class":3036},[2893,10681,10682],{"class":2903},"   }\n",[2893,10684,10685,10687],{"class":2895,"line":3500},[2893,10686,5346],{"class":3036},[2893,10688,10207],{"class":2903},[2893,10690,10691],{"class":2895,"line":3505},[2893,10692,5400],{"class":3032},[4102,10694,10696],{"to":10695},"https://nitro.build/config#prerender",[2863,10697,10698],{},"Read more about Nitro's prerender configuration options.",[2858,10700,10702],{"id":10701},"normalized-page-component-names","Normalized Page Component Names",[2863,10704,3160,10705,5470],{},[2987,10706,3163],{},[3166,10708,3169],{"id":10709},"what-changed-26",[2863,10711,8105,10712,10714,10715,10717,10718,10721,10722,10725,10726,9797,10729,3001],{},[2875,10713,3007],{}," is set to ",[2875,10716,3089],{}," (or ",[2875,10719,10720],{},"experimental.normalizePageNames"," is enabled), page component names match their route names instead of using the filename. For example, ",[2875,10723,10724],{},"pages/foo/index.vue"," will have the component name ",[2875,10727,10728],{},"foo",[2875,10730,9026],{},[3166,10732,3269],{"id":10733},"reasons-for-change-23",[2863,10735,10736,10737,3221,10739,10742,10743,10745,10746,3773,10748,8059,10750,10753,10754,10757],{},"Previously, Vue assigned component names based on the filename. This meant multiple pages like ",[2875,10738,10724],{},[2875,10740,10741],{},"pages/bar/index.vue"," would both have the component name ",[2875,10744,9026],{},". This made ",[2875,10747,3118],{},[2875,10749,3352],{},[2875,10751,10752],{},"exclude"," filters unreliable and required manually adding ",[2875,10755,10756],{},"defineOptions({ name: '...' })"," to each page.",[3166,10759,3290],{"id":10760},"migration-steps-26",[2863,10762,10763,10764,7228,10766,8059,10768,10770],{},"If you rely on the current component names (e.g. in ",[2875,10765,3118],{},[2875,10767,3352],{},[2875,10769,10752],{}," lists), update them to use route names instead of filenames.",[2883,10772,10774],{"className":5311,"code":10773,"language":5313,"meta":2889,"style":2889},"\u003Ctemplate>\n  \u003CNuxtPage :keepalive=\"{\n-   include: ['index']\n+   include: ['foo']\n  }\" />\n\u003C/template>\n",[2875,10775,10776,10781,10786,10793,10800,10805],{"__ignoreMap":2889},[2893,10777,10778],{"class":2895,"line":2896},[2893,10779,10780],{"class":3032},"\u003Ctemplate>\n",[2893,10782,10783],{"class":2895,"line":3040},[2893,10784,10785],{"class":3032},"  \u003CNuxtPage :keepalive=\"{\n",[2893,10787,10788,10790],{"class":2895,"line":3053},[2893,10789,5325],{"class":3036},[2893,10791,10792],{"class":3043},"   include: ['index']\n",[2893,10794,10795,10797],{"class":2895,"line":3068},[2893,10796,5346],{"class":3036},[2893,10798,10799],{"class":2903},"   include: ['foo']\n",[2893,10801,10802],{"class":2895,"line":3074},[2893,10803,10804],{"class":3032},"  }\" />\n",[2893,10806,10807],{"class":2895,"line":3399},[2893,10808,10809],{"class":3032},"\u003C/template>\n",[2863,10811,10812],{},"To disable this behavior:",[2883,10814,10816],{"className":3011,"code":10815,"filename":233,"language":3013,"meta":3014,"style":2889},"export default defineNuxtConfig({\n  experimental: {\n    normalizePageNames: false,\n  },\n})\n",[2875,10817,10818,10830,10838,10849,10853],{"__ignoreMap":2889},[2893,10819,10820,10822,10824,10826,10828],{"class":2895,"line":2896},[2893,10821,3022],{"class":3021},[2893,10823,3025],{"class":3021},[2893,10825,3029],{"class":3028},[2893,10827,3033],{"class":3032},[2893,10829,3037],{"class":3036},[2893,10831,10832,10834,10836],{"class":2895,"line":3040},[2893,10833,5425],{"class":3043},[2893,10835,3047],{"class":3036},[2893,10837,3050],{"class":3036},[2893,10839,10840,10843,10845,10847],{"class":2895,"line":3053},[2893,10841,10842],{"class":3043},"    normalizePageNames",[2893,10844,3047],{"class":3036},[2893,10846,3386],{"class":3385},[2893,10848,3065],{"class":3036},[2893,10850,10851],{"class":2895,"line":3068},[2893,10852,3071],{"class":3036},[2893,10854,10855,10857],{"class":2895,"line":3074},[2893,10856,3077],{"class":3036},[2893,10858,3080],{"class":3032},[2853,10860,10862],{"id":10861},"nuxt-2-vs-nuxt-3","Nuxt 2 vs. Nuxt 3+",[2863,10864,10865],{},"In the table below, there is a quick comparison between 3 versions of Nuxt:",[10867,10868,10869,10888],"table",{},[10870,10871,10872],"thead",{},[10873,10874,10875,10879,10882,10885],"tr",{},[10876,10877,10878],"th",{},"Feature / Version",[10876,10880,10881],{},"Nuxt 2",[10876,10883,10884],{},"Nuxt Bridge",[10876,10886,10887],{},"Nuxt 3+",[10889,10890,10891,10903,10915,10928,10941,10954,10966,10977,10988,10999,11013,11023,11035,11046,11059],"tbody",{},[10873,10892,10893,10897,10899,10901],{},[10894,10895,10896],"td",{},"Vue",[10894,10898,7716],{},[10894,10900,7716],{},[10894,10902,7533],{},[10873,10904,10905,10908,10911,10913],{},[10894,10906,10907],{},"Stability",[10894,10909,10910],{},"😊 Stable",[10894,10912,10910],{},[10894,10914,10910],{},[10873,10916,10917,10919,10922,10925],{},[10894,10918,4650],{},[10894,10920,10921],{},"🏎 Fast",[10894,10923,10924],{},"✈️ Faster",[10894,10926,10927],{},"🚀 Fastest",[10873,10929,10930,10933,10936,10939],{},[10894,10931,10932],{},"Nitro Engine",[10894,10934,10935],{},"❌",[10894,10937,10938],{},"✅",[10894,10940,10938],{},[10873,10942,10943,10946,10949,10952],{},[10894,10944,10945],{},"ESM support",[10894,10947,10948],{},"🌙 Partial",[10894,10950,10951],{},"👍 Better",[10894,10953,10938],{},[10873,10955,10956,10958,10961,10964],{},[10894,10957,280],{},[10894,10959,10960],{},"☑️ Opt-in",[10894,10962,10963],{},"🚧 Partial",[10894,10965,10938],{},[10873,10967,10968,10971,10973,10975],{},[10894,10969,10970],{},"Composition API",[10894,10972,10935],{},[10894,10974,10963],{},[10894,10976,10938],{},[10873,10978,10979,10982,10984,10986],{},[10894,10980,10981],{},"Options API",[10894,10983,10938],{},[10894,10985,10938],{},[10894,10987,10938],{},[10873,10989,10990,10993,10995,10997],{},[10894,10991,10992],{},"Components Auto Import",[10894,10994,10938],{},[10894,10996,10938],{},[10894,10998,10938],{},[10873,11000,11001,11007,11009,11011],{},[10894,11002,11003,11006],{},[2875,11004,11005],{},"\u003Cscript setup>"," syntax",[10894,11008,10935],{},[10894,11010,10963],{},[10894,11012,10938],{},[10873,11014,11015,11017,11019,11021],{},[10894,11016,922],{},[10894,11018,10935],{},[10894,11020,10938],{},[10894,11022,10938],{},[10873,11024,11025,11028,11031,11033],{},[10894,11026,11027],{},"webpack",[10894,11029,11030],{},"4",[10894,11032,11030],{},[10894,11034,3089],{},[10873,11036,11037,11039,11042,11044],{},[10894,11038,1075],{},[10894,11040,11041],{},"⚠️ Partial",[10894,11043,10963],{},[10894,11045,10938],{},[10873,11047,11048,11051,11054,11057],{},[10894,11049,11050],{},"Nuxt CLI",[10894,11052,11053],{},"❌ Old",[10894,11055,11056],{},"✅ nuxt",[10894,11058,11056],{},[10873,11060,11061,11064,11066,11068],{},[10894,11062,11063],{},"Static sites",[10894,11065,10938],{},[10894,11067,10938],{},[10894,11069,10938],{},[2853,11071,11073],{"id":11072},"nuxt-2-to-nuxt-3","Nuxt 2 to Nuxt 3+",[2863,11075,11076],{},"The migration guide provides a step-by-step comparison of Nuxt 2 features to Nuxt 3+ features and guidance to adapt your current application.",[4102,11078,11079],{"to":1908},[2863,11080,11081,11082,3001],{},"Check out the ",[2987,11083,11084],{},"guide to migrating from Nuxt 2 to Nuxt 3",[2853,11086,11088],{"id":11087},"nuxt-2-to-nuxt-bridge","Nuxt 2 to Nuxt Bridge",[2863,11090,11091],{},"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.",[4102,11093,11094],{"to":1874},[2863,11095,11096],{},[2987,11097,11098],{},"Migrate from Nuxt 2 to Nuxt Bridge",[11100,11101,11102],"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 .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 .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 .smZ93, html code.shiki .smZ93{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html pre.shiki code .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}html pre.shiki code .sbKd-, html code.shiki .sbKd-{--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC}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 .sYRBq, html code.shiki .sYRBq{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}",{"title":2889,"searchDepth":3040,"depth":3040,"links":11104},[11105,11109,11113,11154,11155,11156],{"id":2855,"depth":3040,"text":2856,"children":11106},[11107,11108],{"id":2860,"depth":3053,"text":2861},{"id":2971,"depth":3053,"text":403},{"id":2981,"depth":3040,"text":2982,"children":11110},[11111,11112],{"id":2993,"depth":3053,"text":2994},{"id":3156,"depth":3053,"text":3157},{"id":4110,"depth":3040,"text":4111,"children":11114},[11115,11116,11117,11118,11119,11120,11121,11122,11123,11125,11126,11127,11128,11130,11132,11134,11136,11138,11140,11142,11144,11146,11147,11148,11149,11150,11151,11153],{"id":4200,"depth":3053,"text":4201},{"id":4339,"depth":3053,"text":4340},{"id":4900,"depth":3053,"text":4901},{"id":5464,"depth":3053,"text":5465},{"id":5758,"depth":3053,"text":5759},{"id":5836,"depth":3053,"text":5837},{"id":5967,"depth":3053,"text":5968},{"id":6292,"depth":3053,"text":6293},{"id":6477,"depth":3053,"text":11124},"Parsed error.data",{"id":6565,"depth":3053,"text":6566},{"id":6647,"depth":3053,"text":6648},{"id":6800,"depth":3053,"text":6801},{"id":7084,"depth":3053,"text":11129},"Default data and error values in useAsyncData and useFetch",{"id":7166,"depth":3053,"text":11131},"Removal of deprecated boolean values for dedupe option when calling refresh in useAsyncData and useFetch",{"id":8021,"depth":3053,"text":11133},"Respect defaults when clearing data in useAsyncData and useFetch",{"id":8065,"depth":3053,"text":11135},"Respect defaults when clearing useState",{"id":8304,"depth":3053,"text":11137},"Alignment of pending value in useAsyncData and useFetch",{"id":8522,"depth":3053,"text":11139},"Key Change Behavior in useAsyncData and useFetch",{"id":8687,"depth":3053,"text":11141},"Shallow Data Reactivity in useAsyncData and useFetch",{"id":8856,"depth":3053,"text":11143},"Absolute Watch Paths in builder:watch",{"id":8949,"depth":3053,"text":11145},"Removal of window.__NUXT__ object",{"id":9009,"depth":3053,"text":9010},{"id":9183,"depth":3053,"text":9184},{"id":9780,"depth":3053,"text":9781},{"id":9908,"depth":3053,"text":9909},{"id":10464,"depth":3053,"text":10465},{"id":10553,"depth":3053,"text":11152},"Removal of Top-Level generate Configuration",{"id":10701,"depth":3053,"text":10702},{"id":10861,"depth":3040,"text":10862},{"id":11072,"depth":3040,"text":11073},{"id":11087,"depth":3040,"text":11088},"Learn how to upgrade to the latest Nuxt version.","md",{},{"icon":107},{"title":104,"description":11157},"pkglPlNLVSOVtjsOcImsSlm1TdD2N66kOxUgbBTHNhM",[11164,11166],{"title":99,"path":1177,"stem":1178,"description":11165,"icon":102,"children":-1},"How to test your Nuxt application.",{"title":117,"path":1187,"stem":1188,"description":11167,"icon":120,"children":-1},"Nuxt uses the .nuxt/ directory in development to generate your Vue application.",1773024720659]