[{"data":1,"prerenderedAt":11016},["ShallowReactive",2],{"$fGCo9l1hMtNdUiA6QzdUX5X3kLqaWcC5t2kdz4LrvCvc":3,"versions":2856,"-docs-4-x-getting-started-upgrade":2861,"-docs-4-x-getting-started-upgrade-surround":11011},[4,1120,1948,2767],{"title":5,"titleTemplate":6,"icon":7,"path":8,"stem":9,"children":10,"page":108},"Docs",null,"i-lucide-book-marked","\u002Fdocs\u002F3.x","docs\u002F3.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","\u002Fdocs\u002F3.x\u002Fgetting-started","docs\u002F3.x\u002F1.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","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fintroduction","docs\u002F3.x\u002F1.getting-started\u002F01.introduction","i-lucide-info",{"title":24,"path":25,"stem":26,"titleTemplate":6,"icon":27},"Installation","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Finstallation","docs\u002F3.x\u002F1.getting-started\u002F02.installation","i-lucide-play",{"title":29,"path":30,"stem":31,"titleTemplate":6,"icon":32},"Configuration","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fconfiguration","docs\u002F3.x\u002F1.getting-started\u002F03.configuration","i-lucide-cog",{"title":34,"path":35,"stem":36,"titleTemplate":6,"icon":37},"Views","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fviews","docs\u002F3.x\u002F1.getting-started\u002F04.views","i-lucide-panels-top-left",{"title":39,"path":40,"stem":41,"titleTemplate":6,"icon":42},"Assets","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fassets","docs\u002F3.x\u002F1.getting-started\u002F05.assets","i-lucide-image",{"title":44,"path":45,"stem":46,"titleTemplate":6,"icon":47},"Styling","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fstyling","docs\u002F3.x\u002F1.getting-started\u002F06.styling","i-lucide-palette",{"title":49,"path":50,"stem":51,"titleTemplate":6,"icon":52},"Routing","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Frouting","docs\u002F3.x\u002F1.getting-started\u002F07.routing","i-lucide-milestone",{"title":54,"path":55,"stem":56,"titleTemplate":6,"icon":57},"SEO and Meta","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fseo-meta","docs\u002F3.x\u002F1.getting-started\u002F08.seo-meta","i-lucide-file-search",{"title":59,"path":60,"stem":61,"titleTemplate":6,"icon":62},"Transitions","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Ftransitions","docs\u002F3.x\u002F1.getting-started\u002F09.transitions","i-lucide-toggle-right",{"title":64,"path":65,"stem":66,"titleTemplate":6,"icon":67},"Data Fetching","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F3.x\u002F1.getting-started\u002F10.data-fetching","i-lucide-cable",{"title":69,"path":70,"stem":71,"titleTemplate":6,"icon":72},"State Management","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fstate-management","docs\u002F3.x\u002F1.getting-started\u002F11.state-management","i-lucide-database",{"title":74,"path":75,"stem":76,"titleTemplate":6,"icon":77},"Error Handling","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Ferror-handling","docs\u002F3.x\u002F1.getting-started\u002F12.error-handling","i-lucide-bug-off",{"title":79,"path":80,"stem":81,"titleTemplate":6,"icon":82},"Server","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fserver","docs\u002F3.x\u002F1.getting-started\u002F13.server","i-lucide-pc-case",{"title":84,"path":85,"stem":86,"titleTemplate":6,"icon":87},"Layers","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Flayers","docs\u002F3.x\u002F1.getting-started\u002F14.layers","i-lucide-layers",{"title":89,"path":90,"stem":91,"titleTemplate":6,"icon":92},"Prerendering","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fprerendering","docs\u002F3.x\u002F1.getting-started\u002F15.prerendering","i-lucide-file-code-2",{"title":94,"path":95,"stem":96,"titleTemplate":6,"icon":97},"Deployment","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fdeployment","docs\u002F3.x\u002F1.getting-started\u002F16.deployment","i-lucide-cloud",{"title":99,"path":100,"stem":101,"titleTemplate":6,"icon":102},"Testing","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Ftesting","docs\u002F3.x\u002F1.getting-started\u002F17.testing","i-lucide-circle-check",{"title":104,"path":105,"stem":106,"titleTemplate":6,"icon":107},"Upgrade Guide","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fupgrade","docs\u002F3.x\u002F1.getting-started\u002F18.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","\u002Fdocs\u002F3.x\u002Fdirectory-structure","docs\u002F3.x\u002F2.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","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F3.x\u002F2.directory-structure\u002F0.nuxt","i-vscode-icons-folder-type-temp",{"title":122,"path":123,"stem":124,"titleTemplate":6,"icon":125},".output","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Foutput","docs\u002F3.x\u002F2.directory-structure\u002F0.output","i-vscode-icons-folder-type-package",{"title":127,"path":128,"stem":129,"titleTemplate":6,"icon":130},"assets","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fassets","docs\u002F3.x\u002F2.directory-structure\u002F1.assets","i-vscode-icons-folder-type-asset",{"title":132,"path":133,"stem":134,"titleTemplate":6,"icon":135},"components","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fcomponents","docs\u002F3.x\u002F2.directory-structure\u002F1.components","i-vscode-icons-folder-type-component",{"title":137,"path":138,"stem":139,"titleTemplate":6,"icon":140},"composables","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fcomposables","docs\u002F3.x\u002F2.directory-structure\u002F1.composables","i-vscode-icons-folder-type-src",{"title":142,"path":143,"stem":144,"titleTemplate":6,"icon":145},"content","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fcontent","docs\u002F3.x\u002F2.directory-structure\u002F1.content","i-vscode-icons-folder-type-log",{"title":147,"path":148,"stem":149,"titleTemplate":6,"icon":150},"layers","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Flayers","docs\u002F3.x\u002F2.directory-structure\u002F1.layers","i-vscode-icons-folder-type-nuxt",{"title":152,"path":153,"stem":154,"titleTemplate":6,"icon":155},"layouts","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Flayouts","docs\u002F3.x\u002F2.directory-structure\u002F1.layouts","i-vscode-icons-folder-type-view",{"title":157,"path":158,"stem":159,"titleTemplate":6,"icon":160},"middleware","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fmiddleware","docs\u002F3.x\u002F2.directory-structure\u002F1.middleware","i-vscode-icons-folder-type-middleware",{"title":162,"path":163,"stem":164,"titleTemplate":6,"icon":150},"modules","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fmodules","docs\u002F3.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":167,"stem":168,"titleTemplate":6,"icon":169},"node_modules","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F3.x\u002F2.directory-structure\u002F1.node_modules","i-vscode-icons-folder-type-node",{"title":171,"path":172,"stem":173,"titleTemplate":6,"icon":155},"pages","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fpages","docs\u002F3.x\u002F2.directory-structure\u002F1.pages",{"title":175,"path":176,"stem":177,"titleTemplate":6,"icon":178},"plugins","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fplugins","docs\u002F3.x\u002F2.directory-structure\u002F1.plugins","i-vscode-icons-folder-type-plugin",{"title":180,"path":181,"stem":182,"titleTemplate":6,"icon":183},"public","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fpublic","docs\u002F3.x\u002F2.directory-structure\u002F1.public","i-vscode-icons-folder-type-public",{"title":185,"path":186,"stem":187,"titleTemplate":6,"icon":188},"server","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fserver","docs\u002F3.x\u002F2.directory-structure\u002F1.server","i-vscode-icons-folder-type-server",{"title":190,"path":191,"stem":192,"titleTemplate":6,"icon":193},"shared","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fshared","docs\u002F3.x\u002F2.directory-structure\u002F1.shared","i-vscode-icons-folder-type-shared",{"title":195,"path":196,"stem":197,"titleTemplate":6,"icon":198},"utils","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Futils","docs\u002F3.x\u002F2.directory-structure\u002F1.utils","i-vscode-icons-folder-type-tools",{"title":200,"path":201,"stem":202,"titleTemplate":6,"icon":203},".env","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fenv","docs\u002F3.x\u002F2.directory-structure\u002F2.env","i-vscode-icons-file-type-dotenv",{"title":205,"path":206,"stem":207,"titleTemplate":6,"icon":208},".gitignore","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F3.x\u002F2.directory-structure\u002F2.gitignore","i-vscode-icons-file-type-git",{"title":210,"path":211,"stem":212,"titleTemplate":6,"icon":213},".nuxtignore","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F3.x\u002F2.directory-structure\u002F2.nuxtignore","i-vscode-icons-file-type-nuxt",{"title":215,"path":216,"stem":217,"titleTemplate":6,"icon":213},".nuxtrc","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F3.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":219,"path":220,"stem":221,"titleTemplate":6,"icon":222},"app.vue","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fapp","docs\u002F3.x\u002F2.directory-structure\u002F3.app","i-vscode-icons-file-type-vue",{"title":224,"path":225,"stem":226,"titleTemplate":6,"icon":227},"app.config.ts","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fapp-config","docs\u002F3.x\u002F2.directory-structure\u002F3.app-config","i-vscode-icons-file-type-light-config",{"title":229,"path":230,"stem":231,"titleTemplate":6,"icon":222},"error.vue","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Ferror","docs\u002F3.x\u002F2.directory-structure\u002F3.error",{"title":233,"path":234,"stem":235,"titleTemplate":6,"icon":213},"nuxt.config.ts","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F3.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":238,"stem":239,"titleTemplate":6,"icon":240},"package.json","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fpackage","docs\u002F3.x\u002F2.directory-structure\u002F3.package","i-vscode-icons-file-type-npm",{"title":242,"path":243,"stem":244,"titleTemplate":6,"icon":245},"tsconfig.json","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Ftsconfig","docs\u002F3.x\u002F2.directory-structure\u002F3.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","\u002Fdocs\u002F3.x\u002Fguide","docs\u002F3.x\u002F3.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","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts","docs\u002F3.x\u002F3.guide\u002F1.concepts",[259,263,267,271,275,279,283],{"title":260,"path":261,"stem":262,"titleTemplate":6},"Rendering Modes","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":265,"stem":266,"titleTemplate":6},"Nuxt Lifecycle","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":269,"stem":270,"titleTemplate":6},"Auto-imports","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":273,"stem":274,"titleTemplate":6},"Server Engine","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":277,"stem":278,"titleTemplate":6},"Modules","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":281,"stem":282,"titleTemplate":6},"TypeScript","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":285,"stem":286,"titleTemplate":6},"Code Style","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fcode-style","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F9.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","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices","docs\u002F3.x\u002F3.guide\u002F2.best-practices",[294,298,302],{"title":295,"path":296,"stem":297,"titleTemplate":6},"Nuxt and hydration","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F3.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":300,"stem":301,"titleTemplate":6},"Nuxt Performance","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F3.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":304,"stem":305,"titleTemplate":6},"Nuxt Plugins","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices\u002Fplugins","docs\u002F3.x\u002F3.guide\u002F2.best-practices\u002Fplugins",{"title":307,"titleTemplate":308,"icon":309,"path":310,"stem":311,"children":312,"page":108},"Working with AI","Working with AI: %s","i-lucide-bot","\u002Fdocs\u002F3.x\u002Fguide\u002Fai","docs\u002F3.x\u002F3.guide\u002F3.ai",[313,317],{"title":314,"path":315,"stem":316,"titleTemplate":6},"MCP Server","\u002Fdocs\u002F3.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F3.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":319,"stem":320,"titleTemplate":6},"LLMs.txt","\u002Fdocs\u002F3.x\u002Fguide\u002Fai\u002Fllms-txt","docs\u002F3.x\u002F3.guide\u002F3.ai\u002F2.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","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules","docs\u002F3.x\u002F3.guide\u002F4.modules",[328,332,336,340,344,348,352],{"title":329,"path":330,"stem":331,"titleTemplate":6},"Create Your First Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":334,"stem":335,"titleTemplate":6},"Understand Module Structure","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":338,"stem":339,"titleTemplate":6},"Add Plugins, Components & More","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":342,"stem":343,"titleTemplate":6},"Use Hooks & Extend Types","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F4.recipes-advanced",{"title":345,"path":346,"stem":347,"titleTemplate":6},"Test Your Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F5.testing",{"title":349,"path":350,"stem":351,"titleTemplate":6},"Follow Best Practices","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F6.best-practices",{"title":353,"path":354,"stem":355,"titleTemplate":6},"Publish & Share Your Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":360,"stem":361,"children":362,"page":108},"Recipes","%s · Recipes","i-lucide-cooking-pot","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes","docs\u002F3.x\u002F3.guide\u002F5.recipes",[363,367,371,375],{"title":364,"path":365,"stem":366,"titleTemplate":6},"Custom Routing","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":368,"path":369,"stem":370,"titleTemplate":6},"Vite Plugins","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":372,"path":373,"stem":374,"titleTemplate":6},"Custom useFetch","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":376,"path":377,"stem":378,"titleTemplate":6},"Sessions and Authentication","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F4.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","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further","docs\u002F3.x\u002F3.guide\u002F6.going-further",[386,390,394,398,402,406,410,414,418,422],{"title":387,"path":388,"stem":389,"titleTemplate":6},"Custom Events","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":391,"path":392,"stem":393,"titleTemplate":6},"Experimental Features","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":395,"path":396,"stem":397,"titleTemplate":6},"Features","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":399,"path":400,"stem":401,"titleTemplate":6},"Runtime Config","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":403,"path":404,"stem":405,"titleTemplate":6},"Nightly Release Channel","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":407,"path":408,"stem":409,"titleTemplate":6},"Lifecycle Hooks","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":411,"path":412,"stem":413,"titleTemplate":6},"Nuxt Kit","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":415,"path":416,"stem":417,"titleTemplate":6},"NuxtApp","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":419,"path":420,"stem":421,"titleTemplate":6},"Authoring Nuxt Layers","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":423,"path":424,"stem":425,"titleTemplate":6},"Debugging","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":430,"stem":431,"children":432,"page":108},"API","%s · Nuxt API","i-lucide-code-xml","\u002Fdocs\u002F3.x\u002Fapi","docs\u002F3.x\u002F4.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","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents","docs\u002F3.x\u002F4.api\u002F1.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>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":444,"path":445,"stem":446,"titleTemplate":6},"\u003CDevOnly>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":448,"path":449,"stem":450,"titleTemplate":6},"\u003CNuxtClientFallback>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":452,"path":453,"stem":454,"titleTemplate":6},"\u003CNuxtPicture>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F3.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":456,"path":457,"stem":458,"titleTemplate":6},"\u003CTeleport>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F3.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":460,"path":461,"stem":462,"titleTemplate":6},"\u003CNuxtRouteAnnouncer>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F3.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":464,"path":465,"stem":466,"titleTemplate":6},"\u003CNuxtTime>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F3.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":468,"path":469,"stem":470,"titleTemplate":6},"\u003CNuxtPage>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F3.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":472,"path":473,"stem":474,"titleTemplate":6},"\u003CNuxtLayout>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F3.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":476,"path":477,"stem":478,"titleTemplate":6},"\u003CNuxtLink>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F3.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":480,"path":481,"stem":482,"titleTemplate":6},"\u003CNuxtLoadingIndicator>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F3.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":484,"path":485,"stem":486,"titleTemplate":6},"\u003CNuxtErrorBoundary>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F3.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":488,"path":489,"stem":490,"titleTemplate":6},"\u003CNuxtWelcome>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F3.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":492,"path":493,"stem":494,"titleTemplate":6},"\u003CNuxtIsland>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F3.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":496,"path":497,"stem":498,"titleTemplate":6},"\u003CNuxtImg>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F3.x\u002F4.api\u002F1.components\u002F9.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","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables","docs\u002F3.x\u002F4.api\u002F2.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","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":511,"path":512,"stem":513,"titleTemplate":6},"useAppConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":515,"path":516,"stem":517,"titleTemplate":6},"useAsyncData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":519,"path":520,"stem":521,"titleTemplate":6},"useCookie","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":523,"path":524,"stem":525,"titleTemplate":6},"useError","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":527,"path":528,"stem":529,"titleTemplate":6},"useFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":531,"path":532,"stem":533,"titleTemplate":6},"useHead","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":535,"path":536,"stem":537,"titleTemplate":6},"useHeadSafe","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":539,"path":540,"stem":541,"titleTemplate":6},"useHydration","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":543,"path":544,"stem":545,"titleTemplate":6},"useLazyAsyncData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":547,"path":548,"stem":549,"titleTemplate":6},"useLazyFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":551,"path":552,"stem":553,"titleTemplate":6},"useLoadingIndicator","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":555,"path":556,"stem":557,"titleTemplate":6},"useNuxtApp","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":559,"path":560,"stem":561,"titleTemplate":6},"useNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":563,"path":564,"stem":565,"titleTemplate":6},"usePreviewMode","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":567,"path":568,"stem":569,"titleTemplate":6},"useRequestEvent","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":571,"path":572,"stem":573,"titleTemplate":6},"useRequestFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":575,"path":576,"stem":577,"titleTemplate":6},"useRequestHeader","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":579,"path":580,"stem":581,"titleTemplate":6},"useRequestHeaders","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":583,"path":584,"stem":585,"titleTemplate":6},"useRequestURL","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":587,"path":588,"stem":589,"titleTemplate":6},"useResponseHeader","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":591,"path":592,"stem":593,"titleTemplate":6},"useRoute","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":595,"path":596,"stem":597,"titleTemplate":6},"useRouteAnnouncer","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":599,"path":600,"stem":601,"titleTemplate":6},"useRouter","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":603,"path":604,"stem":605,"titleTemplate":6},"useRuntimeConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":607,"path":608,"stem":609,"titleTemplate":6},"useRuntimeHook","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":611,"path":612,"stem":613,"titleTemplate":6},"useSeoMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":615,"path":616,"stem":617,"titleTemplate":6},"useServerSeoMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":619,"path":620,"stem":621,"titleTemplate":6},"useState","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":623,"titleTemplate":624,"icon":625,"path":626,"stem":627,"children":628,"page":108},"Utils","%s · Nuxt Utils","i-lucide-square-function","\u002Fdocs\u002F3.x\u002Fapi\u002Futils","docs\u002F3.x\u002F4.api\u002F3.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","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F3.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":634,"path":635,"stem":636,"titleTemplate":6},"abortNavigation","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":638,"path":639,"stem":640,"titleTemplate":6},"addRouteMiddleware","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":642,"path":643,"stem":644,"titleTemplate":6},"callOnce","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":646,"path":647,"stem":648,"titleTemplate":6},"clearError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":650,"path":651,"stem":652,"titleTemplate":6},"clearNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":654,"path":655,"stem":656,"titleTemplate":6},"clearNuxtState","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":658,"path":659,"stem":660,"titleTemplate":6},"createError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":662,"path":663,"stem":664,"titleTemplate":6},"defineLazyHydrationComponent","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":666,"path":667,"stem":668,"titleTemplate":6},"defineNuxtComponent","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":670,"path":671,"stem":672,"titleTemplate":6},"defineNuxtPlugin","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":674,"path":675,"stem":676,"titleTemplate":6},"defineNuxtRouteMiddleware","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":678,"path":679,"stem":680,"titleTemplate":6},"definePageMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":682,"path":683,"stem":684,"titleTemplate":6},"defineRouteRules","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":686,"path":687,"stem":688,"titleTemplate":6},"navigateTo","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":690,"path":691,"stem":692,"titleTemplate":6},"onBeforeRouteLeave","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":694,"path":695,"stem":696,"titleTemplate":6},"onBeforeRouteUpdate","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":698,"path":699,"stem":700,"titleTemplate":6},"onNuxtReady","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":702,"path":703,"stem":704,"titleTemplate":6},"prefetchComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":706,"path":707,"stem":708,"titleTemplate":6},"preloadComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":710,"path":711,"stem":712,"titleTemplate":6},"preloadRouteComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":714,"path":715,"stem":716,"titleTemplate":6},"prerenderRoutes","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":718,"path":719,"stem":720,"titleTemplate":6},"refreshCookie","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F3.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":722,"path":723,"stem":724,"titleTemplate":6},"refreshNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F3.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":726,"path":727,"stem":728,"titleTemplate":6},"reloadNuxtApp","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F3.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":730,"path":731,"stem":732,"titleTemplate":6},"setPageLayout","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":734,"path":735,"stem":736,"titleTemplate":6},"setResponseStatus","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":738,"path":739,"stem":740,"titleTemplate":6},"showError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":742,"path":743,"stem":744,"titleTemplate":6},"updateAppConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":749,"stem":750,"children":751,"page":108},"Commands","%s · Nuxt Commands","i-lucide-square-terminal","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands","docs\u002F3.x\u002F4.api\u002F4.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","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fadd",{"title":757,"path":758,"stem":759,"titleTemplate":6},"nuxt analyze","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":761,"path":762,"stem":763,"titleTemplate":6},"nuxt build","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":765,"path":766,"stem":767,"titleTemplate":6},"nuxt build-module","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":769,"path":770,"stem":771,"titleTemplate":6},"nuxt cleanup","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":773,"path":774,"stem":775,"titleTemplate":6},"nuxt dev","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fdev",{"title":777,"path":778,"stem":779,"titleTemplate":6},"nuxt devtools","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":781,"path":782,"stem":783,"titleTemplate":6},"nuxt generate","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":785,"path":786,"stem":787,"titleTemplate":6},"nuxt info","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F3.x\u002F4.api\u002F4.commands\u002Finfo",{"title":789,"path":790,"stem":791,"titleTemplate":6},"create nuxt","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F3.x\u002F4.api\u002F4.commands\u002Finit",{"title":793,"path":794,"stem":795,"titleTemplate":6},"nuxt module","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":797,"path":798,"stem":799,"titleTemplate":6},"nuxt prepare","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":801,"path":802,"stem":803,"titleTemplate":6},"nuxt preview","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":805,"path":806,"stem":807,"titleTemplate":6},"nuxt test","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F3.x\u002F4.api\u002F4.commands\u002Ftest",{"title":809,"path":810,"stem":811,"titleTemplate":6},"nuxt typecheck","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F3.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":813,"path":814,"stem":815,"titleTemplate":6},"nuxt upgrade","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":411,"titleTemplate":817,"icon":818,"path":819,"stem":820,"children":821,"page":108},"%s · Nuxt Kit","i-lucide-package","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit","docs\u002F3.x\u002F4.api\u002F5.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},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F3.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":399,"path":826,"stem":827,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F3.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":829,"path":830,"stem":831,"titleTemplate":6},"Templates","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F3.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":833,"path":834,"stem":835,"titleTemplate":6},"Nitro","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F3.x\u002F4.api\u002F5.kit\u002F11.nitro",{"title":837,"path":838,"stem":839,"titleTemplate":6},"Resolving","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F3.x\u002F4.api\u002F5.kit\u002F12.resolving",{"title":841,"path":842,"stem":843,"titleTemplate":6},"Logging","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F3.x\u002F4.api\u002F5.kit\u002F13.logging",{"title":845,"path":846,"stem":847,"titleTemplate":6},"Builder","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F3.x\u002F4.api\u002F5.kit\u002F14.builder",{"title":849,"path":850,"stem":851,"titleTemplate":6},"Examples","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F3.x\u002F4.api\u002F5.kit\u002F15.examples",{"title":84,"path":853,"stem":854,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F3.x\u002F4.api\u002F5.kit\u002F16.layers",{"title":856,"path":857,"stem":858,"titleTemplate":6},"Programmatic Usage","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F3.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":860,"path":861,"stem":862,"titleTemplate":6},"Compatibility","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F3.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":864,"stem":865,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F3.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":434,"path":867,"stem":868,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F3.x\u002F4.api\u002F5.kit\u002F5.components",{"title":870,"path":871,"stem":872,"titleTemplate":6},"Context","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F3.x\u002F4.api\u002F5.kit\u002F6.context",{"title":874,"path":875,"stem":876,"titleTemplate":6},"Pages","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F3.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":878,"path":879,"stem":880,"titleTemplate":6},"Layout","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F3.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":882,"path":883,"stem":884,"titleTemplate":6},"Head","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F3.x\u002F4.api\u002F5.kit\u002F9.head",{"title":886,"path":887,"stem":888,"titleTemplate":6},"Plugins","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F3.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":892,"stem":893,"children":894,"page":108},"Advanced","i-lucide-brain","\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced","docs\u002F3.x\u002F4.api\u002F6.advanced",[895,898],{"title":407,"path":896,"stem":897,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F3.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":899,"path":900,"stem":901,"titleTemplate":6},"Import meta","\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F3.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":903,"path":904,"stem":905,"titleTemplate":906,"icon":32},"Nuxt Configuration","\u002Fdocs\u002F3.x\u002Fapi\u002Fnuxt-config","docs\u002F3.x\u002F4.api\u002F6.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","\u002Fdocs\u002F3.x\u002Fexamples","docs\u002F3.x\u002F4.examples",[913,917,939,954,990],{"title":914,"path":915,"stem":916,"titleTemplate":6},"Hello World","\u002Fdocs\u002F3.x\u002Fexamples\u002Fhello-world","docs\u002F3.x\u002F4.examples\u002F0.hello-world",{"title":395,"path":918,"stem":919,"children":920,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures","docs\u002F3.x\u002F4.examples\u002F1.features",[921,925,928,931,935],{"title":922,"path":923,"stem":924,"titleTemplate":6},"Auto Imports","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F3.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":926,"stem":927,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F3.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":929,"stem":930,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F3.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":932,"path":933,"stem":934,"titleTemplate":6},"Meta Tags","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F3.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":936,"path":937,"stem":938,"titleTemplate":6},"Layouts","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F3.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":940,"stem":941,"children":942,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting","docs\u002F3.x\u002F4.examples\u002F2.routing",[943,947,950],{"title":944,"path":945,"stem":946,"titleTemplate":6},"Middleware","\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":874,"path":948,"stem":949,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":951,"path":952,"stem":953,"titleTemplate":6},"Universal Router","\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":890,"path":955,"stem":956,"children":957,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced","docs\u002F3.x\u002F4.examples\u002F4.advanced",[958,961,964,968,972,976,980,983,986],{"title":84,"path":959,"stem":960,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":962,"stem":963,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":965,"path":966,"stem":967,"titleTemplate":6},"JSX \u002F TSX","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":969,"path":970,"stem":971,"titleTemplate":6},"Locale","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":973,"path":974,"stem":975,"titleTemplate":6},"Module Extend Pages","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":977,"path":978,"stem":979,"titleTemplate":6},"Teleport","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":981,"stem":982,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":519,"path":984,"stem":985,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":987,"path":988,"stem":989,"titleTemplate":6},"Use Custom Fetch Composable","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":991,"path":992,"stem":993,"children":994,"page":108},"Experimental","\u002Fdocs\u002F3.x\u002Fexamples\u002Fexperimental","docs\u002F3.x\u002F4.examples\u002F7.experimental",[995],{"title":996,"path":997,"stem":998,"titleTemplate":6},"WASM","\u002Fdocs\u002F3.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F3.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":1003,"stem":1004,"children":1005,"page":108},"Community","%s · Nuxt Community","i-lucide-messages-square","\u002Fdocs\u002F3.x\u002Fcommunity","docs\u002F3.x\u002F5.community",[1006,1011,1016,1021,1026,1031],{"title":1007,"path":1008,"stem":1009,"titleTemplate":6,"icon":1010},"Getting Help","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fgetting-help","docs\u002F3.x\u002F5.community\u002F2.getting-help","i-lucide-life-buoy",{"title":1012,"path":1013,"stem":1014,"titleTemplate":6,"icon":1015},"Reporting Bugs","\u002Fdocs\u002F3.x\u002Fcommunity\u002Freporting-bugs","docs\u002F3.x\u002F5.community\u002F3.reporting-bugs","i-lucide-bug",{"title":1017,"path":1018,"stem":1019,"titleTemplate":6,"icon":1020},"Contribution","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fcontribution","docs\u002F3.x\u002F5.community\u002F4.contribution","i-lucide-git-pull-request",{"title":1022,"path":1023,"stem":1024,"titleTemplate":6,"icon":1025},"Framework","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fframework-contribution","docs\u002F3.x\u002F5.community\u002F5.framework-contribution","i-lucide-github",{"title":1027,"path":1028,"stem":1029,"titleTemplate":6,"icon":1030},"Roadmap","\u002Fdocs\u002F3.x\u002Fcommunity\u002Froadmap","docs\u002F3.x\u002F5.community\u002F6.roadmap","i-lucide-map",{"title":1032,"path":1033,"stem":1034,"titleTemplate":6,"icon":1035},"Releases","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fchangelog","docs\u002F3.x\u002F5.community\u002F7.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","\u002Fdocs\u002F3.x\u002Fbridge","docs\u002F3.x\u002F6.bridge",[1043,1047,1050,1053,1057,1061,1065,1068,1071,1074],{"title":1044,"path":1045,"stem":1046,"titleTemplate":6},"Overview","\u002Fdocs\u002F3.x\u002Fbridge\u002Foverview","docs\u002F3.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1048,"stem":1049,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fconfiguration","docs\u002F3.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1051,"stem":1052,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Ftypescript","docs\u002F3.x\u002F6.bridge\u002F2.typescript",{"title":1054,"path":1055,"stem":1056,"titleTemplate":6},"Legacy Composition API","\u002Fdocs\u002F3.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F3.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1058,"path":1059,"stem":1060,"titleTemplate":6},"Plugins and Middleware","\u002Fdocs\u002F3.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F3.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1062,"path":1063,"stem":1064,"titleTemplate":6},"New Composition API","\u002Fdocs\u002F3.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F3.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":932,"path":1066,"stem":1067,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fmeta","docs\u002F3.x\u002F6.bridge\u002F6.meta",{"title":399,"path":1069,"stem":1070,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fruntime-config","docs\u002F3.x\u002F6.bridge\u002F7.runtime-config",{"title":833,"path":1072,"stem":1073,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fnitro","docs\u002F3.x\u002F6.bridge\u002F8.nitro",{"title":1075,"path":1076,"stem":1077,"titleTemplate":6},"Vite","\u002Fdocs\u002F3.x\u002Fbridge\u002Fvite","docs\u002F3.x\u002F6.bridge\u002F9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":1081,"stem":1082,"children":1083,"page":108},"Migrate to Nuxt 3","Migrate to Nuxt 3: %s","\u002Fdocs\u002F3.x\u002Fmigration","docs\u002F3.x\u002F7.migration",[1084,1087,1091,1094,1097,1100,1103,1106,1109,1113,1117],{"title":1044,"path":1085,"stem":1086,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Foverview","docs\u002F3.x\u002F7.migration\u002F1.overview",{"title":1088,"path":1089,"stem":1090,"titleTemplate":6},"Build Tooling","\u002Fdocs\u002F3.x\u002Fmigration\u002Fbundling","docs\u002F3.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1092,"stem":1093,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fserver","docs\u002F3.x\u002F7.migration\u002F11.server",{"title":29,"path":1095,"stem":1096,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fconfiguration","docs\u002F3.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1098,"stem":1099,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fmodule-authors","docs\u002F3.x\u002F7.migration\u002F20.module-authors",{"title":922,"path":1101,"stem":1102,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fauto-imports","docs\u002F3.x\u002F7.migration\u002F3.auto-imports",{"title":932,"path":1104,"stem":1105,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fmeta","docs\u002F3.x\u002F7.migration\u002F4.meta",{"title":1058,"path":1107,"stem":1108,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F3.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1110,"path":1111,"stem":1112,"titleTemplate":6},"Pages and Layouts","\u002Fdocs\u002F3.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F3.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1114,"path":1115,"stem":1116,"titleTemplate":6},"Component Options","\u002Fdocs\u002F3.x\u002Fmigration\u002Fcomponent-options","docs\u002F3.x\u002F7.migration\u002F7.component-options",{"title":399,"path":1118,"stem":1119,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fruntime-config","docs\u002F3.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1121,"stem":1122,"children":1123,"page":108},"\u002Fdocs\u002F4.x","docs\u002F4.x",[1124,1182,1276,1404,1778,1855,1877,1911],{"title":12,"titleTemplate":13,"icon":14,"path":1125,"stem":1126,"children":1127,"page":108},"\u002Fdocs\u002F4.x\u002Fgetting-started","docs\u002F4.x\u002F1.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},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fintroduction","docs\u002F4.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":1132,"stem":1133,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Finstallation","docs\u002F4.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":1135,"stem":1136,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fconfiguration","docs\u002F4.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":1138,"stem":1139,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fviews","docs\u002F4.x\u002F1.getting-started\u002F04.views",{"title":39,"path":1141,"stem":1142,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fassets","docs\u002F4.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":1144,"stem":1145,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fstyling","docs\u002F4.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":1147,"stem":1148,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Frouting","docs\u002F4.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":1150,"stem":1151,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fseo-meta","docs\u002F4.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":1153,"stem":1154,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ftransitions","docs\u002F4.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":1156,"stem":1157,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F4.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":1159,"stem":1160,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fstate-management","docs\u002F4.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":1162,"stem":1163,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ferror-handling","docs\u002F4.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":1165,"stem":1166,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fserver","docs\u002F4.x\u002F1.getting-started\u002F13.server",{"title":84,"path":1168,"stem":1169,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Flayers","docs\u002F4.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":1171,"stem":1172,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fprerendering","docs\u002F4.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":1174,"stem":1175,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdeployment","docs\u002F4.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":1177,"stem":1178,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ftesting","docs\u002F4.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":1180,"stem":1181,"titleTemplate":6,"icon":107},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fupgrade","docs\u002F4.x\u002F1.getting-started\u002F18.upgrade",{"title":110,"titleTemplate":111,"icon":112,"path":1183,"stem":1184,"children":1185,"page":108},"\u002Fdocs\u002F4.x\u002Fdirectory-structure","docs\u002F4.x\u002F2.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},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F4.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":1190,"stem":1191,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Foutput","docs\u002F4.x\u002F2.directory-structure\u002F0.output",{"title":1193,"titleTemplate":111,"head":1194,"defaultOpen":1196,"icon":1197,"path":1198,"stem":1199,"children":1200,"page":108},"app",{"title":1195},"app\u002F",true,"i-vscode-icons-folder-type-app","\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp","docs\u002F4.x\u002F2.directory-structure\u002F1.app",[1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231],{"title":127,"path":1202,"stem":1203,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":1205,"stem":1206,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":1208,"stem":1209,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":1211,"stem":1212,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":1214,"stem":1215,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":1217,"stem":1218,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":1220,"stem":1221,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":1223,"stem":1224,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":1226,"stem":1227,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":1229,"stem":1230,"titleTemplate":6,"icon":227},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fapp-config","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.app-config",{"title":229,"path":1232,"stem":1233,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":1235,"stem":1236,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fcontent","docs\u002F4.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":1238,"stem":1239,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Flayers","docs\u002F4.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":1241,"stem":1242,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fmodules","docs\u002F4.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":1244,"stem":1245,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F4.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":1247,"stem":1248,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpublic","docs\u002F4.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":1250,"stem":1251,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fserver","docs\u002F4.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":1253,"stem":1254,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fshared","docs\u002F4.x\u002F2.directory-structure\u002F1.shared",{"title":200,"path":1256,"stem":1257,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fenv","docs\u002F4.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":1259,"stem":1260,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F4.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":1262,"stem":1263,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":1265,"stem":1266,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":1268,"stem":1269,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F4.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":1271,"stem":1272,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpackage","docs\u002F4.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":1274,"stem":1275,"titleTemplate":6,"icon":245},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Ftsconfig","docs\u002F4.x\u002F2.directory-structure\u002F3.tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":1277,"stem":1278,"children":1279,"page":108},"\u002Fdocs\u002F4.x\u002Fguide","docs\u002F4.x\u002F3.guide",[1280,1305,1319,1329,1354,1370],{"title":253,"titleTemplate":254,"icon":255,"path":1281,"stem":1282,"children":1283,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts","docs\u002F4.x\u002F3.guide\u002F1.concepts",[1284,1287,1290,1293,1296,1299,1302],{"title":260,"path":1285,"stem":1286,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":1288,"stem":1289,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":1291,"stem":1292,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":1294,"stem":1295,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":1297,"stem":1298,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":1300,"stem":1301,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":1303,"stem":1304,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fcode-style","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":1306,"stem":1307,"children":1308,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F2.best-practices",[1309,1313,1316],{"title":1310,"path":1311,"stem":1312,"titleTemplate":6},"Nuxt and Hydration","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":1314,"stem":1315,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":1317,"stem":1318,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fplugins","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fplugins",{"title":307,"titleTemplate":308,"icon":309,"path":1320,"stem":1321,"children":1322,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai","docs\u002F4.x\u002F3.guide\u002F3.ai",[1323,1326],{"title":314,"path":1324,"stem":1325,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F4.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":1327,"stem":1328,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai\u002Fllms-txt","docs\u002F4.x\u002F3.guide\u002F3.ai\u002F2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":1330,"stem":1331,"children":1332,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F4.modules",[1333,1336,1339,1342,1345,1348,1351],{"title":329,"path":1334,"stem":1335,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":1337,"stem":1338,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":1340,"stem":1341,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":1343,"stem":1344,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F4.recipes-advanced",{"title":345,"path":1346,"stem":1347,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F5.testing",{"title":349,"path":1349,"stem":1350,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F6.best-practices",{"title":353,"path":1352,"stem":1353,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":1355,"stem":1356,"children":1357,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes","docs\u002F4.x\u002F3.guide\u002F5.recipes",[1358,1361,1364,1367],{"title":364,"path":1359,"stem":1360,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":368,"path":1362,"stem":1363,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":372,"path":1365,"stem":1366,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":376,"path":1368,"stem":1369,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":380,"titleTemplate":381,"icon":382,"path":1371,"stem":1372,"children":1373,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further","docs\u002F4.x\u002F3.guide\u002F6.going-further",[1374,1377,1380,1383,1386,1389,1392,1395,1398,1401],{"title":387,"path":1375,"stem":1376,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":391,"path":1378,"stem":1379,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":395,"path":1381,"stem":1382,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":399,"path":1384,"stem":1385,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":403,"path":1387,"stem":1388,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":407,"path":1390,"stem":1391,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":411,"path":1393,"stem":1394,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":415,"path":1396,"stem":1397,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":419,"path":1399,"stem":1400,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":423,"path":1402,"stem":1403,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":1405,"stem":1406,"children":1407,"page":108},"\u002Fdocs\u002F4.x\u002Fapi","docs\u002F4.x\u002F4.api",[1408,1461,1564,1655,1707,1765,1775],{"title":434,"titleTemplate":435,"icon":324,"path":1409,"stem":1410,"children":1411,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F1.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},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":444,"path":1416,"stem":1417,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":448,"path":1419,"stem":1420,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":452,"path":1422,"stem":1423,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F4.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":456,"path":1425,"stem":1426,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F4.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":460,"path":1428,"stem":1429,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":464,"path":1431,"stem":1432,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F4.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1434,"path":1435,"stem":1436,"titleTemplate":6},"\u003CNuxtAnnouncer>","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":468,"path":1438,"stem":1439,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F4.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":472,"path":1441,"stem":1442,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F4.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":476,"path":1444,"stem":1445,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F4.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":480,"path":1447,"stem":1448,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F4.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":484,"path":1450,"stem":1451,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F4.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":488,"path":1453,"stem":1454,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F4.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":492,"path":1456,"stem":1457,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F4.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":496,"path":1459,"stem":1460,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F4.x\u002F4.api\u002F1.components\u002F9.nuxt-img",{"title":500,"titleTemplate":501,"icon":502,"path":1462,"stem":1463,"children":1464,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables","docs\u002F4.x\u002F4.api\u002F2.composables",[1465,1469,1473,1476,1480,1483,1486,1489,1492,1495,1498,1501,1504,1507,1510,1513,1516,1519,1522,1525,1528,1531,1534,1537,1540,1543,1546,1549,1552,1555,1558,1561],{"title":1466,"path":1467,"stem":1468,"titleTemplate":6},"createUseAsyncData","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1470,"path":1471,"stem":1472,"titleTemplate":6},"createUseFetch","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":507,"path":1474,"stem":1475,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1477,"path":1478,"stem":1479,"titleTemplate":6},"useAnnouncer","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":511,"path":1481,"stem":1482,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":515,"path":1484,"stem":1485,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":519,"path":1487,"stem":1488,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":523,"path":1490,"stem":1491,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":527,"path":1493,"stem":1494,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":531,"path":1496,"stem":1497,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":535,"path":1499,"stem":1500,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":539,"path":1502,"stem":1503,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":543,"path":1505,"stem":1506,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":547,"path":1508,"stem":1509,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":551,"path":1511,"stem":1512,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":555,"path":1514,"stem":1515,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":559,"path":1517,"stem":1518,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":563,"path":1520,"stem":1521,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":567,"path":1523,"stem":1524,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":571,"path":1526,"stem":1527,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":575,"path":1529,"stem":1530,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":579,"path":1532,"stem":1533,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":583,"path":1535,"stem":1536,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":587,"path":1538,"stem":1539,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":591,"path":1541,"stem":1542,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":595,"path":1544,"stem":1545,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":599,"path":1547,"stem":1548,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":603,"path":1550,"stem":1551,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":607,"path":1553,"stem":1554,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":611,"path":1556,"stem":1557,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":615,"path":1559,"stem":1560,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":619,"path":1562,"stem":1563,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":623,"titleTemplate":624,"icon":625,"path":1565,"stem":1566,"children":1567,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils","docs\u002F4.x\u002F4.api\u002F3.utils",[1568,1571,1574,1577,1580,1583,1586,1589,1592,1595,1598,1601,1604,1607,1610,1613,1616,1619,1622,1625,1628,1631,1634,1637,1640,1643,1646,1649,1652],{"title":630,"path":1569,"stem":1570,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F4.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":634,"path":1572,"stem":1573,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":638,"path":1575,"stem":1576,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":642,"path":1578,"stem":1579,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":646,"path":1581,"stem":1582,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":650,"path":1584,"stem":1585,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":654,"path":1587,"stem":1588,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":658,"path":1590,"stem":1591,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":662,"path":1593,"stem":1594,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":666,"path":1596,"stem":1597,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":670,"path":1599,"stem":1600,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":674,"path":1602,"stem":1603,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":678,"path":1605,"stem":1606,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":682,"path":1608,"stem":1609,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":686,"path":1611,"stem":1612,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":690,"path":1614,"stem":1615,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":694,"path":1617,"stem":1618,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":698,"path":1620,"stem":1621,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":702,"path":1623,"stem":1624,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":706,"path":1626,"stem":1627,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":710,"path":1629,"stem":1630,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":714,"path":1632,"stem":1633,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":718,"path":1635,"stem":1636,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":722,"path":1638,"stem":1639,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":726,"path":1641,"stem":1642,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F4.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":730,"path":1644,"stem":1645,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":734,"path":1647,"stem":1648,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":738,"path":1650,"stem":1651,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":742,"path":1653,"stem":1654,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":1656,"stem":1657,"children":1658,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands","docs\u002F4.x\u002F4.api\u002F4.commands",[1659,1662,1665,1668,1671,1674,1677,1680,1683,1686,1689,1692,1695,1698,1701,1704],{"title":753,"path":1660,"stem":1661,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fadd",{"title":757,"path":1663,"stem":1664,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":761,"path":1666,"stem":1667,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":765,"path":1669,"stem":1670,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":769,"path":1672,"stem":1673,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":773,"path":1675,"stem":1676,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdev",{"title":777,"path":1678,"stem":1679,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":781,"path":1681,"stem":1682,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":785,"path":1684,"stem":1685,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finfo",{"title":789,"path":1687,"stem":1688,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finit",{"title":793,"path":1690,"stem":1691,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":797,"path":1693,"stem":1694,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":801,"path":1696,"stem":1697,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":805,"path":1699,"stem":1700,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftest",{"title":809,"path":1702,"stem":1703,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":813,"path":1705,"stem":1706,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":411,"titleTemplate":817,"icon":818,"path":1708,"stem":1709,"children":1710,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit","docs\u002F4.x\u002F4.api\u002F5.kit",[1711,1714,1717,1720,1723,1726,1729,1732,1735,1738,1741,1744,1747,1750,1753,1756,1759,1762],{"title":276,"path":1712,"stem":1713,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F4.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":399,"path":1715,"stem":1716,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":829,"path":1718,"stem":1719,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":833,"path":1721,"stem":1722,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F4.x\u002F4.api\u002F5.kit\u002F11.nitro",{"title":837,"path":1724,"stem":1725,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F4.x\u002F4.api\u002F5.kit\u002F12.resolving",{"title":841,"path":1727,"stem":1728,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F4.x\u002F4.api\u002F5.kit\u002F13.logging",{"title":845,"path":1730,"stem":1731,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F4.x\u002F4.api\u002F5.kit\u002F14.builder",{"title":849,"path":1733,"stem":1734,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F4.x\u002F4.api\u002F5.kit\u002F15.examples",{"title":84,"path":1736,"stem":1737,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F4.x\u002F4.api\u002F5.kit\u002F16.layers",{"title":856,"path":1739,"stem":1740,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F4.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":860,"path":1742,"stem":1743,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F4.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":1745,"stem":1746,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F4.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":434,"path":1748,"stem":1749,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F5.kit\u002F5.components",{"title":870,"path":1751,"stem":1752,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F4.x\u002F4.api\u002F5.kit\u002F6.context",{"title":874,"path":1754,"stem":1755,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F4.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":878,"path":1757,"stem":1758,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F4.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":882,"path":1760,"stem":1761,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.head",{"title":886,"path":1763,"stem":1764,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":1766,"stem":1767,"children":1768,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced","docs\u002F4.x\u002F4.api\u002F6.advanced",[1769,1772],{"title":407,"path":1770,"stem":1771,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":899,"path":1773,"stem":1774,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":903,"path":1776,"stem":1777,"titleTemplate":906,"icon":32},"\u002Fdocs\u002F4.x\u002Fapi\u002Fnuxt-config","docs\u002F4.x\u002F4.api\u002F6.nuxt-config",{"title":849,"titleTemplate":908,"icon":909,"path":1779,"stem":1780,"children":1781,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples","docs\u002F4.x\u002F4.examples",[1782,1785,1804,1817,1848],{"title":914,"path":1783,"stem":1784,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fhello-world","docs\u002F4.x\u002F4.examples\u002F0.hello-world",{"title":395,"path":1786,"stem":1787,"children":1788,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures","docs\u002F4.x\u002F4.examples\u002F1.features",[1789,1792,1795,1798,1801],{"title":922,"path":1790,"stem":1791,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F4.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":1793,"stem":1794,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F4.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":1796,"stem":1797,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F4.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":932,"path":1799,"stem":1800,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F4.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":936,"path":1802,"stem":1803,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F4.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":1805,"stem":1806,"children":1807,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting","docs\u002F4.x\u002F4.examples\u002F2.routing",[1808,1811,1814],{"title":944,"path":1809,"stem":1810,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":874,"path":1812,"stem":1813,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":951,"path":1815,"stem":1816,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":890,"path":1818,"stem":1819,"children":1820,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced","docs\u002F4.x\u002F4.examples\u002F4.advanced",[1821,1824,1827,1830,1833,1836,1839,1842,1845],{"title":84,"path":1822,"stem":1823,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":1825,"stem":1826,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":965,"path":1828,"stem":1829,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":969,"path":1831,"stem":1832,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":973,"path":1834,"stem":1835,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":977,"path":1837,"stem":1838,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":1840,"stem":1841,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":519,"path":1843,"stem":1844,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":987,"path":1846,"stem":1847,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":991,"path":1849,"stem":1850,"children":1851,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental","docs\u002F4.x\u002F4.examples\u002F7.experimental",[1852],{"title":996,"path":1853,"stem":1854,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F4.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":1856,"stem":1857,"children":1858,"page":108},"\u002Fdocs\u002F4.x\u002Fcommunity","docs\u002F4.x\u002F5.community",[1859,1862,1865,1868,1871,1874],{"title":1007,"path":1860,"stem":1861,"titleTemplate":6,"icon":1010},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fgetting-help","docs\u002F4.x\u002F5.community\u002F2.getting-help",{"title":1012,"path":1863,"stem":1864,"titleTemplate":6,"icon":1015},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Freporting-bugs","docs\u002F4.x\u002F5.community\u002F3.reporting-bugs",{"title":1017,"path":1866,"stem":1867,"titleTemplate":6,"icon":1020},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fcontribution","docs\u002F4.x\u002F5.community\u002F4.contribution",{"title":1022,"path":1869,"stem":1870,"titleTemplate":6,"icon":1025},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fframework-contribution","docs\u002F4.x\u002F5.community\u002F5.framework-contribution",{"title":1027,"path":1872,"stem":1873,"titleTemplate":6,"icon":1030},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Froadmap","docs\u002F4.x\u002F5.community\u002F6.roadmap",{"title":1032,"path":1875,"stem":1876,"titleTemplate":6,"icon":1035},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fchangelog","docs\u002F4.x\u002F5.community\u002F7.changelog",{"title":1037,"titleTemplate":1038,"icon":1039,"path":1878,"stem":1879,"children":1880,"page":108},"\u002Fdocs\u002F4.x\u002Fbridge","docs\u002F4.x\u002F6.bridge",[1881,1884,1887,1890,1893,1896,1899,1902,1905,1908],{"title":1044,"path":1882,"stem":1883,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Foverview","docs\u002F4.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1885,"stem":1886,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fconfiguration","docs\u002F4.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1888,"stem":1889,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Ftypescript","docs\u002F4.x\u002F6.bridge\u002F2.typescript",{"title":1054,"path":1891,"stem":1892,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F4.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1058,"path":1894,"stem":1895,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F4.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1062,"path":1897,"stem":1898,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F4.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":932,"path":1900,"stem":1901,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fmeta","docs\u002F4.x\u002F6.bridge\u002F6.meta",{"title":399,"path":1903,"stem":1904,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fruntime-config","docs\u002F4.x\u002F6.bridge\u002F7.runtime-config",{"title":833,"path":1906,"stem":1907,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnitro","docs\u002F4.x\u002F6.bridge\u002F8.nitro",{"title":1075,"path":1909,"stem":1910,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fvite","docs\u002F4.x\u002F6.bridge\u002F9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":1912,"stem":1913,"children":1914,"page":108},"\u002Fdocs\u002F4.x\u002Fmigration","docs\u002F4.x\u002F7.migration",[1915,1918,1921,1924,1927,1930,1933,1936,1939,1942,1945],{"title":1044,"path":1916,"stem":1917,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Foverview","docs\u002F4.x\u002F7.migration\u002F1.overview",{"title":1088,"path":1919,"stem":1920,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fbundling","docs\u002F4.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1922,"stem":1923,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fserver","docs\u002F4.x\u002F7.migration\u002F11.server",{"title":29,"path":1925,"stem":1926,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fconfiguration","docs\u002F4.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1928,"stem":1929,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmodule-authors","docs\u002F4.x\u002F7.migration\u002F20.module-authors",{"title":922,"path":1931,"stem":1932,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fauto-imports","docs\u002F4.x\u002F7.migration\u002F3.auto-imports",{"title":932,"path":1934,"stem":1935,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmeta","docs\u002F4.x\u002F7.migration\u002F4.meta",{"title":1058,"path":1937,"stem":1938,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F4.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1110,"path":1940,"stem":1941,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F4.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1114,"path":1943,"stem":1944,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fcomponent-options","docs\u002F4.x\u002F7.migration\u002F7.component-options",{"title":399,"path":1946,"stem":1947,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fruntime-config","docs\u002F4.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1949,"stem":1950,"children":1951,"page":108},"\u002Fdocs\u002F5.x","docs\u002F5.x",[1952,2010,2100,2227,2597,2674,2696,2730],{"title":12,"titleTemplate":13,"icon":14,"path":1953,"stem":1954,"children":1955,"page":108},"\u002Fdocs\u002F5.x\u002Fgetting-started","docs\u002F5.x\u002F1.getting-started",[1956,1959,1962,1965,1968,1971,1974,1977,1980,1983,1986,1989,1992,1995,1998,2001,2004,2007],{"title":19,"path":1957,"stem":1958,"titleTemplate":6,"icon":22},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fintroduction","docs\u002F5.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":1960,"stem":1961,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Finstallation","docs\u002F5.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":1963,"stem":1964,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fconfiguration","docs\u002F5.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":1966,"stem":1967,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fviews","docs\u002F5.x\u002F1.getting-started\u002F04.views",{"title":39,"path":1969,"stem":1970,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fassets","docs\u002F5.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":1972,"stem":1973,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstyling","docs\u002F5.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":1975,"stem":1976,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Frouting","docs\u002F5.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":1978,"stem":1979,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fseo-meta","docs\u002F5.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":1981,"stem":1982,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftransitions","docs\u002F5.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":1984,"stem":1985,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F5.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":1987,"stem":1988,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstate-management","docs\u002F5.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":1990,"stem":1991,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ferror-handling","docs\u002F5.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":1993,"stem":1994,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fserver","docs\u002F5.x\u002F1.getting-started\u002F13.server",{"title":84,"path":1996,"stem":1997,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Flayers","docs\u002F5.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":1999,"stem":2000,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fprerendering","docs\u002F5.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":2002,"stem":2003,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdeployment","docs\u002F5.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":2005,"stem":2006,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftesting","docs\u002F5.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":2008,"stem":2009,"titleTemplate":6,"icon":107},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fupgrade","docs\u002F5.x\u002F1.getting-started\u002F18.upgrade",{"title":110,"titleTemplate":111,"icon":112,"path":2011,"stem":2012,"children":2013,"page":108},"\u002Fdocs\u002F5.x\u002Fdirectory-structure","docs\u002F5.x\u002F2.directory-structure",[2014,2017,2020,2058,2061,2064,2067,2070,2073,2076,2079,2082,2085,2088,2091,2094,2097],{"title":117,"path":2015,"stem":2016,"titleTemplate":6,"icon":120},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F5.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":2018,"stem":2019,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Foutput","docs\u002F5.x\u002F2.directory-structure\u002F0.output",{"title":1193,"titleTemplate":111,"head":2021,"defaultOpen":1196,"icon":1197,"path":2022,"stem":2023,"children":2024,"page":108},{"title":1195},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app",[2025,2028,2031,2034,2037,2040,2043,2046,2049,2052,2055],{"title":127,"path":2026,"stem":2027,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":2029,"stem":2030,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":2032,"stem":2033,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":2035,"stem":2036,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":2038,"stem":2039,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":2041,"stem":2042,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":2044,"stem":2045,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":2047,"stem":2048,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":2050,"stem":2051,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":2053,"stem":2054,"titleTemplate":6,"icon":227},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fapp-config","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.app-config",{"title":229,"path":2056,"stem":2057,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":2059,"stem":2060,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fcontent","docs\u002F5.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":2062,"stem":2063,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Flayers","docs\u002F5.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":2065,"stem":2066,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fmodules","docs\u002F5.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":2068,"stem":2069,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F5.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":2071,"stem":2072,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpublic","docs\u002F5.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":2074,"stem":2075,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fserver","docs\u002F5.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":2077,"stem":2078,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fshared","docs\u002F5.x\u002F2.directory-structure\u002F1.shared",{"title":200,"path":2080,"stem":2081,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fenv","docs\u002F5.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":2083,"stem":2084,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F5.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":2086,"stem":2087,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":2089,"stem":2090,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":2092,"stem":2093,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F5.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":2095,"stem":2096,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpackage","docs\u002F5.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":2098,"stem":2099,"titleTemplate":6,"icon":245},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Ftsconfig","docs\u002F5.x\u002F2.directory-structure\u002F3.tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":2101,"stem":2102,"children":2103,"page":108},"\u002Fdocs\u002F5.x\u002Fguide","docs\u002F5.x\u002F3.guide",[2104,2129,2142,2152,2177,2193],{"title":253,"titleTemplate":254,"icon":255,"path":2105,"stem":2106,"children":2107,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts","docs\u002F5.x\u002F3.guide\u002F1.concepts",[2108,2111,2114,2117,2120,2123,2126],{"title":260,"path":2109,"stem":2110,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":2112,"stem":2113,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":2115,"stem":2116,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":2118,"stem":2119,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":2121,"stem":2122,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":2124,"stem":2125,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":2127,"stem":2128,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fcode-style","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":2130,"stem":2131,"children":2132,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F2.best-practices",[2133,2136,2139],{"title":1310,"path":2134,"stem":2135,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":2137,"stem":2138,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":2140,"stem":2141,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fplugins","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fplugins",{"title":307,"titleTemplate":308,"icon":309,"path":2143,"stem":2144,"children":2145,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai","docs\u002F5.x\u002F3.guide\u002F3.ai",[2146,2149],{"title":314,"path":2147,"stem":2148,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":2150,"stem":2151,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fllms-txt","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":2153,"stem":2154,"children":2155,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F4.modules",[2156,2159,2162,2165,2168,2171,2174],{"title":329,"path":2157,"stem":2158,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":2160,"stem":2161,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":2163,"stem":2164,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":2166,"stem":2167,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F4.recipes-advanced",{"title":345,"path":2169,"stem":2170,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F5.testing",{"title":349,"path":2172,"stem":2173,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F6.best-practices",{"title":353,"path":2175,"stem":2176,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":2178,"stem":2179,"children":2180,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes","docs\u002F5.x\u002F3.guide\u002F5.recipes",[2181,2184,2187,2190],{"title":364,"path":2182,"stem":2183,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":368,"path":2185,"stem":2186,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":372,"path":2188,"stem":2189,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":376,"path":2191,"stem":2192,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":380,"titleTemplate":381,"icon":382,"path":2194,"stem":2195,"children":2196,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further","docs\u002F5.x\u002F3.guide\u002F6.going-further",[2197,2200,2203,2206,2209,2212,2215,2218,2221,2224],{"title":387,"path":2198,"stem":2199,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":391,"path":2201,"stem":2202,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":395,"path":2204,"stem":2205,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":399,"path":2207,"stem":2208,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":403,"path":2210,"stem":2211,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":407,"path":2213,"stem":2214,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":411,"path":2216,"stem":2217,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":415,"path":2219,"stem":2220,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":419,"path":2222,"stem":2223,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":423,"path":2225,"stem":2226,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":2228,"stem":2229,"children":2230,"page":108},"\u002Fdocs\u002F5.x\u002Fapi","docs\u002F5.x\u002F4.api",[2231,2283,2383,2474,2526,2584,2594],{"title":434,"titleTemplate":435,"icon":324,"path":2232,"stem":2233,"children":2234,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F1.components",[2235,2238,2241,2244,2247,2250,2253,2256,2259,2262,2265,2268,2271,2274,2277,2280],{"title":440,"path":2236,"stem":2237,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":444,"path":2239,"stem":2240,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":448,"path":2242,"stem":2243,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":452,"path":2245,"stem":2246,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F5.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":456,"path":2248,"stem":2249,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F5.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":460,"path":2251,"stem":2252,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":464,"path":2254,"stem":2255,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F5.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1434,"path":2257,"stem":2258,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":468,"path":2260,"stem":2261,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F5.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":472,"path":2263,"stem":2264,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F5.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":476,"path":2266,"stem":2267,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F5.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":480,"path":2269,"stem":2270,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F5.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":484,"path":2272,"stem":2273,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F5.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":488,"path":2275,"stem":2276,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F5.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":492,"path":2278,"stem":2279,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F5.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":496,"path":2281,"stem":2282,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F5.x\u002F4.api\u002F1.components\u002F9.nuxt-img",{"title":500,"titleTemplate":501,"icon":502,"path":2284,"stem":2285,"children":2286,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables","docs\u002F5.x\u002F4.api\u002F2.composables",[2287,2290,2293,2296,2299,2302,2305,2308,2311,2314,2317,2320,2323,2326,2329,2332,2335,2338,2341,2344,2347,2350,2353,2356,2359,2362,2365,2368,2371,2374,2377,2380],{"title":1466,"path":2288,"stem":2289,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1470,"path":2291,"stem":2292,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":507,"path":2294,"stem":2295,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1477,"path":2297,"stem":2298,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":511,"path":2300,"stem":2301,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":515,"path":2303,"stem":2304,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":519,"path":2306,"stem":2307,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":523,"path":2309,"stem":2310,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":527,"path":2312,"stem":2313,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":531,"path":2315,"stem":2316,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":535,"path":2318,"stem":2319,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":539,"path":2321,"stem":2322,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":543,"path":2324,"stem":2325,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":547,"path":2327,"stem":2328,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":551,"path":2330,"stem":2331,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":555,"path":2333,"stem":2334,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":559,"path":2336,"stem":2337,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":563,"path":2339,"stem":2340,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":567,"path":2342,"stem":2343,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":571,"path":2345,"stem":2346,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":575,"path":2348,"stem":2349,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":579,"path":2351,"stem":2352,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":583,"path":2354,"stem":2355,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":587,"path":2357,"stem":2358,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":591,"path":2360,"stem":2361,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":595,"path":2363,"stem":2364,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":599,"path":2366,"stem":2367,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":603,"path":2369,"stem":2370,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":607,"path":2372,"stem":2373,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":611,"path":2375,"stem":2376,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":615,"path":2378,"stem":2379,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":619,"path":2381,"stem":2382,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":623,"titleTemplate":624,"icon":625,"path":2384,"stem":2385,"children":2386,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils","docs\u002F5.x\u002F4.api\u002F3.utils",[2387,2390,2393,2396,2399,2402,2405,2408,2411,2414,2417,2420,2423,2426,2429,2432,2435,2438,2441,2444,2447,2450,2453,2456,2459,2462,2465,2468,2471],{"title":630,"path":2388,"stem":2389,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F5.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":634,"path":2391,"stem":2392,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":638,"path":2394,"stem":2395,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":642,"path":2397,"stem":2398,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":646,"path":2400,"stem":2401,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":650,"path":2403,"stem":2404,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":654,"path":2406,"stem":2407,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":658,"path":2409,"stem":2410,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":662,"path":2412,"stem":2413,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":666,"path":2415,"stem":2416,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":670,"path":2418,"stem":2419,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":674,"path":2421,"stem":2422,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":678,"path":2424,"stem":2425,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":682,"path":2427,"stem":2428,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":686,"path":2430,"stem":2431,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":690,"path":2433,"stem":2434,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":694,"path":2436,"stem":2437,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":698,"path":2439,"stem":2440,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":702,"path":2442,"stem":2443,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":706,"path":2445,"stem":2446,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":710,"path":2448,"stem":2449,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":714,"path":2451,"stem":2452,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":718,"path":2454,"stem":2455,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":722,"path":2457,"stem":2458,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":726,"path":2460,"stem":2461,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F5.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":730,"path":2463,"stem":2464,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":734,"path":2466,"stem":2467,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":738,"path":2469,"stem":2470,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":742,"path":2472,"stem":2473,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":2475,"stem":2476,"children":2477,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands","docs\u002F5.x\u002F4.api\u002F4.commands",[2478,2481,2484,2487,2490,2493,2496,2499,2502,2505,2508,2511,2514,2517,2520,2523],{"title":753,"path":2479,"stem":2480,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fadd",{"title":757,"path":2482,"stem":2483,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":761,"path":2485,"stem":2486,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":765,"path":2488,"stem":2489,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":769,"path":2491,"stem":2492,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":773,"path":2494,"stem":2495,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdev",{"title":777,"path":2497,"stem":2498,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":781,"path":2500,"stem":2501,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":785,"path":2503,"stem":2504,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finfo",{"title":789,"path":2506,"stem":2507,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finit",{"title":793,"path":2509,"stem":2510,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":797,"path":2512,"stem":2513,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":801,"path":2515,"stem":2516,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":805,"path":2518,"stem":2519,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftest",{"title":809,"path":2521,"stem":2522,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":813,"path":2524,"stem":2525,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":411,"titleTemplate":817,"icon":818,"path":2527,"stem":2528,"children":2529,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit","docs\u002F5.x\u002F4.api\u002F5.kit",[2530,2533,2536,2539,2542,2545,2548,2551,2554,2557,2560,2563,2566,2569,2572,2575,2578,2581],{"title":276,"path":2531,"stem":2532,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F5.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":399,"path":2534,"stem":2535,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":829,"path":2537,"stem":2538,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":833,"path":2540,"stem":2541,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F5.x\u002F4.api\u002F5.kit\u002F11.nitro",{"title":837,"path":2543,"stem":2544,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F5.x\u002F4.api\u002F5.kit\u002F12.resolving",{"title":841,"path":2546,"stem":2547,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F5.x\u002F4.api\u002F5.kit\u002F13.logging",{"title":845,"path":2549,"stem":2550,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F5.x\u002F4.api\u002F5.kit\u002F14.builder",{"title":849,"path":2552,"stem":2553,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F5.x\u002F4.api\u002F5.kit\u002F15.examples",{"title":84,"path":2555,"stem":2556,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F5.x\u002F4.api\u002F5.kit\u002F16.layers",{"title":856,"path":2558,"stem":2559,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F5.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":860,"path":2561,"stem":2562,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F5.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":2564,"stem":2565,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F5.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":434,"path":2567,"stem":2568,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F5.kit\u002F5.components",{"title":870,"path":2570,"stem":2571,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F5.x\u002F4.api\u002F5.kit\u002F6.context",{"title":874,"path":2573,"stem":2574,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F5.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":878,"path":2576,"stem":2577,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F5.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":882,"path":2579,"stem":2580,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.head",{"title":886,"path":2582,"stem":2583,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":2585,"stem":2586,"children":2587,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced","docs\u002F5.x\u002F4.api\u002F6.advanced",[2588,2591],{"title":407,"path":2589,"stem":2590,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":899,"path":2592,"stem":2593,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":903,"path":2595,"stem":2596,"titleTemplate":906,"icon":32},"\u002Fdocs\u002F5.x\u002Fapi\u002Fnuxt-config","docs\u002F5.x\u002F4.api\u002F6.nuxt-config",{"title":849,"titleTemplate":908,"icon":909,"path":2598,"stem":2599,"children":2600,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples","docs\u002F5.x\u002F4.examples",[2601,2604,2623,2636,2667],{"title":914,"path":2602,"stem":2603,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fhello-world","docs\u002F5.x\u002F4.examples\u002F0.hello-world",{"title":395,"path":2605,"stem":2606,"children":2607,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures","docs\u002F5.x\u002F4.examples\u002F1.features",[2608,2611,2614,2617,2620],{"title":922,"path":2609,"stem":2610,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F5.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":2612,"stem":2613,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F5.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":2615,"stem":2616,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F5.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":932,"path":2618,"stem":2619,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F5.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":936,"path":2621,"stem":2622,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F5.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":2624,"stem":2625,"children":2626,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting","docs\u002F5.x\u002F4.examples\u002F2.routing",[2627,2630,2633],{"title":944,"path":2628,"stem":2629,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":874,"path":2631,"stem":2632,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":951,"path":2634,"stem":2635,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":890,"path":2637,"stem":2638,"children":2639,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced","docs\u002F5.x\u002F4.examples\u002F4.advanced",[2640,2643,2646,2649,2652,2655,2658,2661,2664],{"title":84,"path":2641,"stem":2642,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":2644,"stem":2645,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":965,"path":2647,"stem":2648,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":969,"path":2650,"stem":2651,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":973,"path":2653,"stem":2654,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":977,"path":2656,"stem":2657,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":2659,"stem":2660,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":519,"path":2662,"stem":2663,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":987,"path":2665,"stem":2666,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":991,"path":2668,"stem":2669,"children":2670,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental","docs\u002F5.x\u002F4.examples\u002F7.experimental",[2671],{"title":996,"path":2672,"stem":2673,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F5.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":2675,"stem":2676,"children":2677,"page":108},"\u002Fdocs\u002F5.x\u002Fcommunity","docs\u002F5.x\u002F5.community",[2678,2681,2684,2687,2690,2693],{"title":1007,"path":2679,"stem":2680,"titleTemplate":6,"icon":1010},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fgetting-help","docs\u002F5.x\u002F5.community\u002F2.getting-help",{"title":1012,"path":2682,"stem":2683,"titleTemplate":6,"icon":1015},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Freporting-bugs","docs\u002F5.x\u002F5.community\u002F3.reporting-bugs",{"title":1017,"path":2685,"stem":2686,"titleTemplate":6,"icon":1020},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fcontribution","docs\u002F5.x\u002F5.community\u002F4.contribution",{"title":1022,"path":2688,"stem":2689,"titleTemplate":6,"icon":1025},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fframework-contribution","docs\u002F5.x\u002F5.community\u002F5.framework-contribution",{"title":1027,"path":2691,"stem":2692,"titleTemplate":6,"icon":1030},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Froadmap","docs\u002F5.x\u002F5.community\u002F6.roadmap",{"title":1032,"path":2694,"stem":2695,"titleTemplate":6,"icon":1035},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fchangelog","docs\u002F5.x\u002F5.community\u002F7.changelog",{"title":1037,"titleTemplate":1038,"icon":1039,"path":2697,"stem":2698,"children":2699,"page":108},"\u002Fdocs\u002F5.x\u002Fbridge","docs\u002F5.x\u002F6.bridge",[2700,2703,2706,2709,2712,2715,2718,2721,2724,2727],{"title":1044,"path":2701,"stem":2702,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Foverview","docs\u002F5.x\u002F6.bridge\u002F1.overview",{"title":29,"path":2704,"stem":2705,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fconfiguration","docs\u002F5.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":2707,"stem":2708,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Ftypescript","docs\u002F5.x\u002F6.bridge\u002F2.typescript",{"title":1054,"path":2710,"stem":2711,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F5.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1058,"path":2713,"stem":2714,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F5.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1062,"path":2716,"stem":2717,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F5.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":932,"path":2719,"stem":2720,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fmeta","docs\u002F5.x\u002F6.bridge\u002F6.meta",{"title":399,"path":2722,"stem":2723,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fruntime-config","docs\u002F5.x\u002F6.bridge\u002F7.runtime-config",{"title":833,"path":2725,"stem":2726,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnitro","docs\u002F5.x\u002F6.bridge\u002F8.nitro",{"title":1075,"path":2728,"stem":2729,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fvite","docs\u002F5.x\u002F6.bridge\u002F9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":2731,"stem":2732,"children":2733,"page":108},"\u002Fdocs\u002F5.x\u002Fmigration","docs\u002F5.x\u002F7.migration",[2734,2737,2740,2743,2746,2749,2752,2755,2758,2761,2764],{"title":1044,"path":2735,"stem":2736,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Foverview","docs\u002F5.x\u002F7.migration\u002F1.overview",{"title":1088,"path":2738,"stem":2739,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fbundling","docs\u002F5.x\u002F7.migration\u002F10.bundling",{"title":79,"path":2741,"stem":2742,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fserver","docs\u002F5.x\u002F7.migration\u002F11.server",{"title":29,"path":2744,"stem":2745,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fconfiguration","docs\u002F5.x\u002F7.migration\u002F2.configuration",{"title":276,"path":2747,"stem":2748,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmodule-authors","docs\u002F5.x\u002F7.migration\u002F20.module-authors",{"title":922,"path":2750,"stem":2751,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fauto-imports","docs\u002F5.x\u002F7.migration\u002F3.auto-imports",{"title":932,"path":2753,"stem":2754,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmeta","docs\u002F5.x\u002F7.migration\u002F4.meta",{"title":1058,"path":2756,"stem":2757,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F5.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1110,"path":2759,"stem":2760,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F5.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1114,"path":2762,"stem":2763,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fcomponent-options","docs\u002F5.x\u002F7.migration\u002F7.component-options",{"title":399,"path":2765,"stem":2766,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fruntime-config","docs\u002F5.x\u002F7.migration\u002F8.runtime-config",{"title":2768,"path":2769,"stem":2770,"children":2771,"page":108},"Blog","\u002Fblog","blog",[2772,2776,2780,2784,2788,2792,2796,2800,2804,2808,2812,2816,2820,2824,2828,2832,2836,2840,2844,2848,2852],{"title":2773,"path":2774,"stem":2775},"Announcing 3.0","\u002Fblog\u002Fv3","blog\u002F1.v3",{"title":2777,"path":2778,"stem":2779},"Nuxt 3.3","\u002Fblog\u002Fv3-3","blog\u002F10.v3-3",{"title":2781,"path":2782,"stem":2783},"Nuxt 3.4","\u002Fblog\u002Fv3-4","blog\u002F11.v3-4",{"title":2785,"path":2786,"stem":2787},"Nuxt 3.5","\u002Fblog\u002Fv3-5","blog\u002F12.v3-5",{"title":2789,"path":2790,"stem":2791},"Nuxt 3.6","\u002Fblog\u002Fv3-6","blog\u002F13.v3-6",{"title":2793,"path":2794,"stem":2795},"Nuxt on the Edge","\u002Fblog\u002Fnuxt-on-the-edge","blog\u002F14.nuxt-on-the-edge",{"title":2797,"path":2798,"stem":2799},"Nuxt DevTools v1.0","\u002Fblog\u002Fnuxt-devtools-v1-0","blog\u002F18.nuxt-devtools-v1-0",{"title":2801,"path":2802,"stem":2803},"Nuxt: A vision for 2023","\u002Fblog\u002Fvision-2023","blog\u002F2.vision-2023",{"title":2805,"path":2806,"stem":2807},"The Evolution of Shiki v1.0","\u002Fblog\u002Fshiki-v1","blog\u002F21.shiki-v1",{"title":2809,"path":2810,"stem":2811},"Refreshed Nuxt ESLint Integrations","\u002Fblog\u002Feslint-module","blog\u002F24.eslint-module",{"title":2813,"path":2814,"stem":2815},"Introducing Nuxt Scripts","\u002Fblog\u002Fnuxt-scripts","blog\u002F26.nuxt-scripts",{"title":2817,"path":2818,"stem":2819},"Introducing Nuxt Icon v1","\u002Fblog\u002Fnuxt-icon-v1-0","blog\u002F29.nuxt-icon-v1-0",{"title":2821,"path":2822,"stem":2823},"Introducing Nuxt DevTools","\u002Fblog\u002Fintroducing-nuxt-devtools","blog\u002F3.introducing-nuxt-devtools",{"title":2825,"path":2826,"stem":2827},"Announcing Nuxt 3 Release Candidate","\u002Fblog\u002Fnuxt3-rc","blog\u002F3.nuxt3-rc",{"title":2829,"path":2830,"stem":2831},"Nuxt 2 End-of-Life (EOL)","\u002Fblog\u002Fnuxt2-eol","blog\u002F4.nuxt2-eol",{"title":2833,"path":2834,"stem":2835},"Introducing Nuxt 3 Beta","\u002Fblog\u002Fnuxt3-beta","blog\u002F4.nuxt3-beta",{"title":2837,"path":2838,"stem":2839},"Going Full Static","\u002Fblog\u002Fgoing-full-static","blog\u002F5.going-full-static",{"title":2841,"path":2842,"stem":2843},"Introducing Smart Prefetching","\u002Fblog\u002Fintroducing-smart-prefetching","blog\u002F6.introducing-smart-prefetching",{"title":2845,"path":2846,"stem":2847},"Understanding how fetch works in Nuxt 2.12","\u002Fblog\u002Funderstanding-how-fetch-works-in-nuxt-2-12","blog\u002F7.understanding-how-fetch-works-in-nuxt-2-12",{"title":2849,"path":2850,"stem":2851},"Nuxt 2 Static Improvements","\u002Fblog\u002Fnuxt-static-improvements","blog\u002F8.nuxt-static-improvements",{"title":2853,"path":2854,"stem":2855},"Nuxt 2: From Terminal to Browser","\u002Fblog\u002Fnuxtjs-from-terminal-to-browser","blog\u002F9.nuxtjs-from-terminal-to-browser",{"v5":2857,"v4":2858,"v3":2859,"v2":2860},"5 (nightly)","4.4.2","3.21.2","2.18.1",{"id":2862,"title":104,"body":2863,"description":11005,"extension":11006,"links":6,"meta":11007,"navigation":11008,"path":1180,"seo":11009,"stem":1181,"titleTemplate":6,"__hash__":11010},"docsv4\u002Fdocs\u002F4.x\u002F1.getting-started\u002F18.upgrade.md",{"type":2864,"value":2865,"toc":10948},"minimark",[2866,2871,2876,2892,2983,2986,2993,2997,3005,3009,3016,3023,3095,3105,3191,3200,3203,3207,3214,3219,3228,3235,3251,3256,3315,3319,3322,3336,3340,3345,3356,3813,3817,3832,4150,4157,4163,4168,4171,4192,4216,4221,4224,4233,4236,4249,4272,4291,4302,4311,4359,4363,4367,4370,4391,4394,4404,4407,4427,4481,4492,4498,4544,4548,4551,4554,4625,4628,4631,4634,4638,4647,4656,4664,4671,4770,4773,4777,4782,4789,4797,4800,4886,5069,5077,5080,5113,5119,5122,5208,5216,5255,5258,5334,5338,5343,5346,5354,5421,5424,5429,5432,5832,5835,5892,5896,5900,5903,5910,5913,5927,5930,5946,5949,5952,5963,5966,5972,5975,5995,5998,6161,6171,6185,6189,6193,6196,6215,6218,6221,6228,6231,6234,6263,6267,6271,6274,6277,6280,6310,6320,6326,6329,6332,6346,6348,6394,6398,6402,6405,6417,6440,6443,6446,6449,6454,6502,6518,6634,6646,6665,6672,6719,6723,6727,6730,6745,6791,6794,6827,6830,6833,6836,6850,6853,6904,6911,6915,6924,6927,6935,6992,6996,7000,7003,7006,7017,7020,7027,7074,7078,7082,7085,7098,7101,7111,7114,7122,7179,7181,7227,7231,7235,7238,7251,7254,7265,7271,7274,7283,7462,7465,7511,7524,7528,7531,7543,7546,7566,7569,7585,7593,7613,7617,7620,7642,7748,7751,7754,7766,7796,7799,7801,7856,7863,7873,7877,7880,7895,7898,7907,7912,7916,7919,7942,7945,7960,7963,7975,7994,7997,8070,8075,8144,8156,8160,8181,8184,8203,8206,8218,8221,8233,8313,8316,8362,8370,8374,8377,8391,8397,8405,8408,8429,8432,8438,8473,8476,8527,8535,8539,8559,8562,8571,8574,8584,8587,8590,8688,8696,8703,8707,8710,8718,8721,8727,8730,8738,8744,8782,8789,8797,8800,8806,8809,8821,8824,8830,8849,8853,8857,8860,8870,8873,8880,8888,8891,8894,9023,9027,9031,9034,9045,9058,9061,9068,9078,9087,9090,9093,9118,9195,9208,9614,9621,9625,9629,9632,9643,9646,9660,9663,9666,9749,9753,9757,9760,9763,9837,9840,9843,9868,9880,9883,9889,9892,10302,10305,10309,10313,10316,10319,10361,10364,10367,10370,10394,10402,10406,10409,10415,10429,10432,10442,10445,10454,10536,10542,10546,10550,10553,10574,10577,10601,10604,10615,10654,10657,10703,10707,10710,10916,10920,10923,10931,10935,10938,10945],[2867,2868,2870],"h2",{"id":2869},"upgrading-nuxt","Upgrading Nuxt",[2872,2873,2875],"h3",{"id":2874},"latest-release","Latest release",[2877,2878,2879,2880,2887,2888,2891],"p",{},"To upgrade Nuxt to the ",[2881,2882,2886],"a",{"href":2883,"rel":2884},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Freleases",[2885],"nofollow","latest release",", use the ",[2889,2890,813],"code",{}," command.",[2893,2894,2896,2922,2936,2950,2967],"code-group",{"sync":2895},"pm",[2897,2898,2904],"pre",{"className":2899,"code":2900,"filename":2901,"language":2902,"meta":2903,"style":2903},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","npx nuxt upgrade\n","npm","bash","",[2889,2905,2906],{"__ignoreMap":2903},[2907,2908,2911,2915,2919],"span",{"class":2909,"line":2910},"line",1,[2907,2912,2914],{"class":2913},"s52Pk","npx",[2907,2916,2918],{"class":2917},"sGFVr"," nuxt",[2907,2920,2921],{"class":2917}," upgrade\n",[2897,2923,2926],{"className":2899,"code":2924,"filename":2925,"language":2902,"meta":2903,"style":2903},"yarn nuxt upgrade\n","yarn",[2889,2927,2928],{"__ignoreMap":2903},[2907,2929,2930,2932,2934],{"class":2909,"line":2910},[2907,2931,2925],{"class":2913},[2907,2933,2918],{"class":2917},[2907,2935,2921],{"class":2917},[2897,2937,2940],{"className":2899,"code":2938,"filename":2939,"language":2902,"meta":2903,"style":2903},"pnpm nuxt upgrade\n","pnpm",[2889,2941,2942],{"__ignoreMap":2903},[2907,2943,2944,2946,2948],{"class":2909,"line":2910},[2907,2945,2939],{"class":2913},[2907,2947,2918],{"class":2917},[2907,2949,2921],{"class":2917},[2897,2951,2954],{"className":2899,"code":2952,"filename":2953,"language":2902,"meta":2903,"style":2903},"bun x nuxt upgrade\n","bun",[2889,2955,2956],{"__ignoreMap":2903},[2907,2957,2958,2960,2963,2965],{"class":2909,"line":2910},[2907,2959,2953],{"class":2913},[2907,2961,2962],{"class":2917}," x",[2907,2964,2918],{"class":2917},[2907,2966,2921],{"class":2917},[2897,2968,2971],{"className":2899,"code":2969,"filename":2970,"language":2902,"meta":2903,"style":2903},"deno x nuxt upgrade\n","deno",[2889,2972,2973],{"__ignoreMap":2903},[2907,2974,2975,2977,2979,2981],{"class":2909,"line":2910},[2907,2976,2970],{"class":2913},[2907,2978,2962],{"class":2917},[2907,2980,2918],{"class":2917},[2907,2982,2921],{"class":2917},[2872,2984,403],{"id":2985},"nightly-release-channel",[2877,2987,2988,2989,2992],{},"To use the latest Nuxt build and test features before their release, read about the ",[2881,2990,2991],{"href":1387},"nightly release channel"," guide.",[2867,2994,2996],{"id":2995},"testing-nuxt-5","Testing Nuxt 5",[2877,2998,2999,3000,3004],{},"Nuxt 5 is ",[3001,3002,3003],"strong",{},"currently in development",". Until the release, it is possible to test many of Nuxt 5's breaking changes from Nuxt version 4.2+.",[2872,3006,3008],{"id":3007},"opting-in-to-nuxt-5","Opting in to Nuxt 5",[2877,3010,3011,3012,3015],{},"First, upgrade Nuxt to the ",[2881,3013,2886],{"href":2883,"rel":3014},[2885],".",[2877,3017,3018,3019,3022],{},"Then you can set your ",[2889,3020,3021],{},"future.compatibilityVersion"," to match Nuxt 5 behavior:",[2897,3024,3029],{"className":3025,"code":3026,"filename":233,"language":3027,"meta":3028,"style":2903},"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",[2889,3030,3031,3052,3065,3080,3086],{"__ignoreMap":2903},[2907,3032,3033,3037,3040,3044,3048],{"class":2909,"line":2910},[2907,3034,3036],{"class":3035},"s8R28","export",[2907,3038,3039],{"class":3035}," default",[2907,3041,3043],{"class":3042},"s3cPz"," defineNuxtConfig",[2907,3045,3047],{"class":3046},"sZSNi","(",[2907,3049,3051],{"class":3050},"sDfIl","{\n",[2907,3053,3055,3059,3062],{"class":2909,"line":3054},2,[2907,3056,3058],{"class":3057},"sRlkE","  future",[2907,3060,3061],{"class":3050},":",[2907,3063,3064],{"class":3050}," {\n",[2907,3066,3068,3071,3073,3077],{"class":2909,"line":3067},3,[2907,3069,3070],{"class":3057},"    compatibilityVersion",[2907,3072,3061],{"class":3050},[2907,3074,3076],{"class":3075},"sYRBq"," 5",[2907,3078,3079],{"class":3050},",\n",[2907,3081,3083],{"class":2909,"line":3082},4,[2907,3084,3085],{"class":3050},"  },\n",[2907,3087,3089,3092],{"class":2909,"line":3088},5,[2907,3090,3091],{"class":3050},"}",[2907,3093,3094],{"class":3046},")\n",[2877,3096,3097,3098,3100,3101,3104],{},"When you set your ",[2889,3099,3021],{}," to ",[2889,3102,3103],{},"5",", defaults throughout your Nuxt configuration will change to opt in to Nuxt v5 behavior, including:",[3106,3107,3108,3119,3134,3153,3174,3188],"ul",{},[3109,3110,3111,3114,3115,3118],"li",{},[3001,3112,3113],{},"Vite Environment API",": Automatically enables the new ",[2881,3116,3113],{"href":3117},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fupgrade#migration-to-vite-environment-api"," for improved build configuration",[3109,3120,3121,3124,3125,3129,3130,3133],{},[3001,3122,3123],{},"Normalized Page Names",": Page component names will ",[2881,3126,3128],{"href":3127},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fupgrade#normalized-page-component-names","match their route names"," for consistent ",[2889,3131,3132],{},"\u003CKeepAlive>"," behavior",[3109,3135,3136,3141,3142,3144,3145,3149,3150],{},[3001,3137,3138,3140],{},[2889,3139,654],{}," resets to defaults",": ",[2889,3143,654],{}," will ",[2881,3146,3148],{"href":3147},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fupgrade#respect-defaults-when-clearing-usestate","reset state to its initial value"," instead of setting it to ",[2889,3151,3152],{},"undefined",[3109,3154,3155,3141,3161,3170,3171],{},[3001,3156,3157,3158],{},"Non-async ",[2889,3159,3160],{},"callHook",[2881,3162,3164,3166,3167],{"href":3163},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fupgrade#non-async-callhook",[2889,3165,3160],{}," may return ",[2889,3168,3169],{},"void"," instead of always returning a ",[2889,3172,3173],{},"Promise",[3109,3175,3176,3179,3180,3187],{},[3001,3177,3178],{},"Comment node placeholders",": Client-only components use ",[2881,3181,3183,3184],{"href":3182},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fupgrade#client-only-comment-placeholders","comment nodes instead of ",[2889,3185,3186],{},"\u003Cdiv>"," as SSR placeholders, fixing a scoped styles hydration issue",[3109,3189,3190],{},"Other Nuxt 5 improvements and changes as they become available",[3192,3193,3194],"note",{},[2877,3195,3196,3197,3015],{},"This section is subject to change until the final release, so please check back here regularly if you are testing Nuxt 5 using ",[2889,3198,3199],{},"future.compatibilityVersion: 5",[2877,3201,3202],{},"Breaking or significant changes will be noted below along with migration steps for backward\u002Fforward compatibility.",[2872,3204,3206],{"id":3205},"migration-to-vite-environment-api","Migration to Vite Environment API",[2877,3208,3209,3210,3213],{},"🚦 ",[3001,3211,3212],{},"Impact Level",": Medium",[3215,3216,3218],"h4",{"id":3217},"what-changed","What Changed",[2877,3220,3221,3222,3227],{},"Nuxt 5 migrates to Vite 6's new ",[2881,3223,3226],{"href":3224,"rel":3225},"https:\u002F\u002Fvite.dev\u002Fguide\u002Fapi-environment",[2885],"Environment API",", which formalizes the concept of environments and provides better control over configuration per environment.",[2877,3229,3230,3231,3234],{},"Previously, Nuxt used separate client and server Vite configurations. Now, Nuxt uses a shared Vite configuration with environment-specific plugins that use the ",[2889,3232,3233],{},"applyToEnvironment()"," method to target specific environments.",[3236,3237,3238],"tip",{},[2877,3239,3240,3241,3243,3244,3247,3248,3015],{},"You can test this feature early by setting ",[2889,3242,3199],{}," (see ",[2881,3245,2996],{"href":3246},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fupgrade#testing-nuxt-5",") or by enabling it explicitly with ",[2889,3249,3250],{},"experimental.viteEnvironmentApi: true",[2877,3252,3253],{},[3001,3254,3255],{},"Key changes:",[3257,3258,3259,3278,3303],"ol",{},[3109,3260,3261,3267,3268,3270,3271,3274,3275,3277],{},[3001,3262,3263,3264],{},"Deprecated environment-specific ",[2889,3265,3266],{},"extendViteConfig()",": The ",[2889,3269,185],{}," and ",[2889,3272,3273],{},"client"," options in ",[2889,3276,3266],{}," are deprecated and will show warnings when used.",[3109,3279,3280,3283,3284,3287,3288,3291,3292,3295,3296,3291,3299,3302],{},[3001,3281,3282],{},"Changed plugin registration",": Vite plugins registered with ",[2889,3285,3286],{},"addVitePlugin()"," and only targeting one environment (by passing ",[2889,3289,3290],{},"server: false"," or ",[2889,3293,3294],{},"client: false",") will not have their ",[2889,3297,3298],{},"config",[2889,3300,3301],{},"configResolved"," hooks called.",[3109,3304,3305,3267,3308,3270,3311,3314],{},[3001,3306,3307],{},"Shared configuration",[2889,3309,3310],{},"vite:extendConfig",[2889,3312,3313],{},"vite:configResolved"," hooks now work with a shared configuration rather than separate client\u002Fserver configs.",[3215,3316,3318],{"id":3317},"reasons-for-change","Reasons for Change",[2877,3320,3321],{},"The Vite Environment API provides:",[3106,3323,3324,3327,3330,3333],{},[3109,3325,3326],{},"Better consistency between development and production builds",[3109,3328,3329],{},"More granular control over environment-specific configuration",[3109,3331,3332],{},"Improved performance and plugin architecture",[3109,3334,3335],{},"Support for custom environments beyond just client and server",[3215,3337,3339],{"id":3338},"migration-steps","Migration Steps",[3341,3342,3344],"h5",{"id":3343},"_1-migrate-to-use-vite-plugins","1. Migrate to use Vite plugins",[2877,3346,3347,3348,3351,3352,3270,3354,3015],{},"We would recommend you use a Vite plugin instead of ",[2889,3349,3350],{},"extendViteConfig",", ",[2889,3353,3313],{},[2889,3355,3310],{},[2897,3357,3359],{"className":3025,"code":3358,"language":3027,"meta":2903,"style":2903},"\u002F\u002F Before\nextendViteConfig((config) => {\n  config.optimizeDeps.include.push('my-package')\n}, { server: false })\n\nnuxt.hook('vite:extendConfig' \u002F* or vite:configResolved *\u002F, (config, { isClient }) => {\n  if (isClient) {\n    config.optimizeDeps.include.push('my-package')\n  }\n})\n\n\u002F\u002F After\naddVitePlugin(() => ({\n  name: 'my-plugin',\n  config (config) {\n    \u002F\u002F you can set global vite configuration here\n  },\n  configResolved (config) {\n    \u002F\u002F you can access the fully resolved vite configuration here\n  },\n  configEnvironment (name, config) {\n    \u002F\u002F 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",[2889,3360,3361,3367,3387,3419,3441,3446,3490,3506,3534,3540,3547,3552,3558,3575,3593,3606,3612,3617,3631,3637,3642,3662,3668,3691,3707,3725,3752,3758,3763,3778,3800,3805],{"__ignoreMap":2903},[2907,3362,3363],{"class":2909,"line":2910},[2907,3364,3366],{"class":3365},"sWuyu","\u002F\u002F Before\n",[2907,3368,3369,3371,3373,3375,3378,3381,3385],{"class":2909,"line":3054},[2907,3370,3350],{"class":3042},[2907,3372,3047],{"class":3046},[2907,3374,3047],{"class":3050},[2907,3376,3298],{"class":3377},"s1nJG",[2907,3379,3380],{"class":3050},")",[2907,3382,3384],{"class":3383},"smZ93"," =>",[2907,3386,3064],{"class":3050},[2907,3388,3389,3392,3394,3397,3399,3402,3404,3407,3409,3412,3415,3417],{"class":2909,"line":3067},[2907,3390,3391],{"class":3046},"  config",[2907,3393,3015],{"class":3050},[2907,3395,3396],{"class":3046},"optimizeDeps",[2907,3398,3015],{"class":3050},[2907,3400,3401],{"class":3046},"include",[2907,3403,3015],{"class":3050},[2907,3405,3406],{"class":3042},"push",[2907,3408,3047],{"class":3057},[2907,3410,3411],{"class":3050},"'",[2907,3413,3414],{"class":2917},"my-package",[2907,3416,3411],{"class":3050},[2907,3418,3094],{"class":3057},[2907,3420,3421,3424,3427,3430,3432,3436,3439],{"class":2909,"line":3082},[2907,3422,3423],{"class":3050},"},",[2907,3425,3426],{"class":3050}," {",[2907,3428,3429],{"class":3057}," server",[2907,3431,3061],{"class":3050},[2907,3433,3435],{"class":3434},"sbKd-"," false",[2907,3437,3438],{"class":3050}," }",[2907,3440,3094],{"class":3046},[2907,3442,3443],{"class":2909,"line":3088},[2907,3444,3445],{"emptyLinePlaceholder":1196},"\n",[2907,3447,3449,3452,3454,3457,3459,3461,3463,3465,3468,3471,3474,3476,3478,3480,3483,3486,3488],{"class":2909,"line":3448},6,[2907,3450,3451],{"class":3046},"nuxt",[2907,3453,3015],{"class":3050},[2907,3455,3456],{"class":3042},"hook",[2907,3458,3047],{"class":3046},[2907,3460,3411],{"class":3050},[2907,3462,3310],{"class":2917},[2907,3464,3411],{"class":3050},[2907,3466,3467],{"class":3365}," \u002F* or vite:configResolved *\u002F",[2907,3469,3470],{"class":3050},",",[2907,3472,3473],{"class":3050}," (",[2907,3475,3298],{"class":3377},[2907,3477,3470],{"class":3050},[2907,3479,3426],{"class":3050},[2907,3481,3482],{"class":3377}," isClient",[2907,3484,3485],{"class":3050}," })",[2907,3487,3384],{"class":3383},[2907,3489,3064],{"class":3050},[2907,3491,3493,3496,3498,3501,3504],{"class":2909,"line":3492},7,[2907,3494,3495],{"class":3035},"  if",[2907,3497,3473],{"class":3057},[2907,3499,3500],{"class":3046},"isClient",[2907,3502,3503],{"class":3057},") ",[2907,3505,3051],{"class":3050},[2907,3507,3509,3512,3514,3516,3518,3520,3522,3524,3526,3528,3530,3532],{"class":2909,"line":3508},8,[2907,3510,3511],{"class":3046},"    config",[2907,3513,3015],{"class":3050},[2907,3515,3396],{"class":3046},[2907,3517,3015],{"class":3050},[2907,3519,3401],{"class":3046},[2907,3521,3015],{"class":3050},[2907,3523,3406],{"class":3042},[2907,3525,3047],{"class":3057},[2907,3527,3411],{"class":3050},[2907,3529,3414],{"class":2917},[2907,3531,3411],{"class":3050},[2907,3533,3094],{"class":3057},[2907,3535,3537],{"class":2909,"line":3536},9,[2907,3538,3539],{"class":3050},"  }\n",[2907,3541,3543,3545],{"class":2909,"line":3542},10,[2907,3544,3091],{"class":3050},[2907,3546,3094],{"class":3046},[2907,3548,3550],{"class":2909,"line":3549},11,[2907,3551,3445],{"emptyLinePlaceholder":1196},[2907,3553,3555],{"class":2909,"line":3554},12,[2907,3556,3557],{"class":3365},"\u002F\u002F After\n",[2907,3559,3561,3564,3566,3569,3571,3573],{"class":2909,"line":3560},13,[2907,3562,3563],{"class":3042},"addVitePlugin",[2907,3565,3047],{"class":3046},[2907,3567,3568],{"class":3050},"()",[2907,3570,3384],{"class":3383},[2907,3572,3473],{"class":3046},[2907,3574,3051],{"class":3050},[2907,3576,3578,3581,3583,3586,3589,3591],{"class":2909,"line":3577},14,[2907,3579,3580],{"class":3057},"  name",[2907,3582,3061],{"class":3050},[2907,3584,3585],{"class":3050}," '",[2907,3587,3588],{"class":2917},"my-plugin",[2907,3590,3411],{"class":3050},[2907,3592,3079],{"class":3050},[2907,3594,3596,3598,3600,3602,3604],{"class":2909,"line":3595},15,[2907,3597,3391],{"class":3057},[2907,3599,3473],{"class":3050},[2907,3601,3298],{"class":3377},[2907,3603,3380],{"class":3050},[2907,3605,3064],{"class":3050},[2907,3607,3609],{"class":2909,"line":3608},16,[2907,3610,3611],{"class":3365},"    \u002F\u002F you can set global vite configuration here\n",[2907,3613,3615],{"class":2909,"line":3614},17,[2907,3616,3085],{"class":3050},[2907,3618,3620,3623,3625,3627,3629],{"class":2909,"line":3619},18,[2907,3621,3622],{"class":3057},"  configResolved",[2907,3624,3473],{"class":3050},[2907,3626,3298],{"class":3377},[2907,3628,3380],{"class":3050},[2907,3630,3064],{"class":3050},[2907,3632,3634],{"class":2909,"line":3633},19,[2907,3635,3636],{"class":3365},"    \u002F\u002F you can access the fully resolved vite configuration here\n",[2907,3638,3640],{"class":2909,"line":3639},20,[2907,3641,3085],{"class":3050},[2907,3643,3645,3648,3650,3653,3655,3658,3660],{"class":2909,"line":3644},21,[2907,3646,3647],{"class":3057},"  configEnvironment",[2907,3649,3473],{"class":3050},[2907,3651,3652],{"class":3377},"name",[2907,3654,3470],{"class":3050},[2907,3656,3657],{"class":3377}," config",[2907,3659,3380],{"class":3050},[2907,3661,3064],{"class":3050},[2907,3663,3665],{"class":2909,"line":3664},22,[2907,3666,3667],{"class":3365},"    \u002F\u002F you can set environment-specific vite configuration here\n",[2907,3669,3671,3674,3676,3678,3681,3683,3685,3687,3689],{"class":2909,"line":3670},23,[2907,3672,3673],{"class":3035},"    if",[2907,3675,3473],{"class":3057},[2907,3677,3652],{"class":3046},[2907,3679,3680],{"class":3050}," ===",[2907,3682,3585],{"class":3050},[2907,3684,3273],{"class":2917},[2907,3686,3411],{"class":3050},[2907,3688,3503],{"class":3057},[2907,3690,3051],{"class":3050},[2907,3692,3694,3697,3699,3701,3704],{"class":2909,"line":3693},24,[2907,3695,3696],{"class":3046},"      config",[2907,3698,3015],{"class":3050},[2907,3700,3396],{"class":3046},[2907,3702,3703],{"class":3050}," ||=",[2907,3705,3706],{"class":3050}," {}\n",[2907,3708,3710,3712,3714,3716,3718,3720,3722],{"class":2909,"line":3709},25,[2907,3711,3696],{"class":3046},[2907,3713,3015],{"class":3050},[2907,3715,3396],{"class":3046},[2907,3717,3015],{"class":3050},[2907,3719,3401],{"class":3046},[2907,3721,3703],{"class":3050},[2907,3723,3724],{"class":3057}," []\n",[2907,3726,3728,3730,3732,3734,3736,3738,3740,3742,3744,3746,3748,3750],{"class":2909,"line":3727},26,[2907,3729,3696],{"class":3046},[2907,3731,3015],{"class":3050},[2907,3733,3396],{"class":3046},[2907,3735,3015],{"class":3050},[2907,3737,3401],{"class":3046},[2907,3739,3015],{"class":3050},[2907,3741,3406],{"class":3042},[2907,3743,3047],{"class":3057},[2907,3745,3411],{"class":3050},[2907,3747,3414],{"class":2917},[2907,3749,3411],{"class":3050},[2907,3751,3094],{"class":3057},[2907,3753,3755],{"class":2909,"line":3754},27,[2907,3756,3757],{"class":3050},"    }\n",[2907,3759,3761],{"class":2909,"line":3760},28,[2907,3762,3085],{"class":3050},[2907,3764,3766,3769,3771,3774,3776],{"class":2909,"line":3765},29,[2907,3767,3768],{"class":3057},"  applyToEnvironment",[2907,3770,3473],{"class":3050},[2907,3772,3773],{"class":3377},"environment",[2907,3775,3380],{"class":3050},[2907,3777,3064],{"class":3050},[2907,3779,3781,3784,3787,3789,3791,3793,3795,3797],{"class":2909,"line":3780},30,[2907,3782,3783],{"class":3035},"    return",[2907,3785,3786],{"class":3046}," environment",[2907,3788,3015],{"class":3050},[2907,3790,3652],{"class":3046},[2907,3792,3680],{"class":3050},[2907,3794,3585],{"class":3050},[2907,3796,3273],{"class":2917},[2907,3798,3799],{"class":3050},"'\n",[2907,3801,3803],{"class":2909,"line":3802},31,[2907,3804,3085],{"class":3050},[2907,3806,3808,3810],{"class":2909,"line":3807},32,[2907,3809,3091],{"class":3050},[2907,3811,3812],{"class":3046},"))\n",[3341,3814,3816],{"id":3815},"_2-migrate-vite-plugins-to-use-environments","2. Migrate Vite plugins to use environments",[2877,3818,3819,3820,3822,3823,3291,3825,3827,3828,3831],{},"Instead of using ",[2889,3821,3563],{}," with ",[2889,3824,3290],{},[2889,3826,3294],{},", you can instead use the new ",[2889,3829,3830],{},"applyToEnvironment"," hook within your plugin.",[2897,3833,3835],{"className":3025,"code":3834,"language":3027,"meta":2903,"style":2903},"\u002F\u002F Before\naddVitePlugin(() => ({\n  name: 'my-plugin',\n  config (config) {\n    config.optimizeDeps.include.push('my-package')\n  },\n}), { client: false })\n\n\u002F\u002F After\naddVitePlugin(() => ({\n  name: 'my-plugin',\n  config (config) {\n    \u002F\u002F you can set global vite configuration here\n  },\n  configResolved (config) {\n    \u002F\u002F you can access the fully resolved vite configuration here\n  },\n  configEnvironment (name, config) {\n    \u002F\u002F 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",[2889,3836,3837,3841,3855,3869,3881,3907,3911,3932,3936,3940,3954,3968,3980,3984,3988,4000,4004,4008,4024,4028,4048,4060,4076,4102,4106,4110,4122,4140,4144],{"__ignoreMap":2903},[2907,3838,3839],{"class":2909,"line":2910},[2907,3840,3366],{"class":3365},[2907,3842,3843,3845,3847,3849,3851,3853],{"class":2909,"line":3054},[2907,3844,3563],{"class":3042},[2907,3846,3047],{"class":3046},[2907,3848,3568],{"class":3050},[2907,3850,3384],{"class":3383},[2907,3852,3473],{"class":3046},[2907,3854,3051],{"class":3050},[2907,3856,3857,3859,3861,3863,3865,3867],{"class":2909,"line":3067},[2907,3858,3580],{"class":3057},[2907,3860,3061],{"class":3050},[2907,3862,3585],{"class":3050},[2907,3864,3588],{"class":2917},[2907,3866,3411],{"class":3050},[2907,3868,3079],{"class":3050},[2907,3870,3871,3873,3875,3877,3879],{"class":2909,"line":3082},[2907,3872,3391],{"class":3057},[2907,3874,3473],{"class":3050},[2907,3876,3298],{"class":3377},[2907,3878,3380],{"class":3050},[2907,3880,3064],{"class":3050},[2907,3882,3883,3885,3887,3889,3891,3893,3895,3897,3899,3901,3903,3905],{"class":2909,"line":3088},[2907,3884,3511],{"class":3046},[2907,3886,3015],{"class":3050},[2907,3888,3396],{"class":3046},[2907,3890,3015],{"class":3050},[2907,3892,3401],{"class":3046},[2907,3894,3015],{"class":3050},[2907,3896,3406],{"class":3042},[2907,3898,3047],{"class":3057},[2907,3900,3411],{"class":3050},[2907,3902,3414],{"class":2917},[2907,3904,3411],{"class":3050},[2907,3906,3094],{"class":3057},[2907,3908,3909],{"class":2909,"line":3448},[2907,3910,3085],{"class":3050},[2907,3912,3913,3915,3917,3919,3921,3924,3926,3928,3930],{"class":2909,"line":3492},[2907,3914,3091],{"class":3050},[2907,3916,3380],{"class":3046},[2907,3918,3470],{"class":3050},[2907,3920,3426],{"class":3050},[2907,3922,3923],{"class":3057}," client",[2907,3925,3061],{"class":3050},[2907,3927,3435],{"class":3434},[2907,3929,3438],{"class":3050},[2907,3931,3094],{"class":3046},[2907,3933,3934],{"class":2909,"line":3508},[2907,3935,3445],{"emptyLinePlaceholder":1196},[2907,3937,3938],{"class":2909,"line":3536},[2907,3939,3557],{"class":3365},[2907,3941,3942,3944,3946,3948,3950,3952],{"class":2909,"line":3542},[2907,3943,3563],{"class":3042},[2907,3945,3047],{"class":3046},[2907,3947,3568],{"class":3050},[2907,3949,3384],{"class":3383},[2907,3951,3473],{"class":3046},[2907,3953,3051],{"class":3050},[2907,3955,3956,3958,3960,3962,3964,3966],{"class":2909,"line":3549},[2907,3957,3580],{"class":3057},[2907,3959,3061],{"class":3050},[2907,3961,3585],{"class":3050},[2907,3963,3588],{"class":2917},[2907,3965,3411],{"class":3050},[2907,3967,3079],{"class":3050},[2907,3969,3970,3972,3974,3976,3978],{"class":2909,"line":3554},[2907,3971,3391],{"class":3057},[2907,3973,3473],{"class":3050},[2907,3975,3298],{"class":3377},[2907,3977,3380],{"class":3050},[2907,3979,3064],{"class":3050},[2907,3981,3982],{"class":2909,"line":3560},[2907,3983,3611],{"class":3365},[2907,3985,3986],{"class":2909,"line":3577},[2907,3987,3085],{"class":3050},[2907,3989,3990,3992,3994,3996,3998],{"class":2909,"line":3595},[2907,3991,3622],{"class":3057},[2907,3993,3473],{"class":3050},[2907,3995,3298],{"class":3377},[2907,3997,3380],{"class":3050},[2907,3999,3064],{"class":3050},[2907,4001,4002],{"class":2909,"line":3608},[2907,4003,3636],{"class":3365},[2907,4005,4006],{"class":2909,"line":3614},[2907,4007,3085],{"class":3050},[2907,4009,4010,4012,4014,4016,4018,4020,4022],{"class":2909,"line":3619},[2907,4011,3647],{"class":3057},[2907,4013,3473],{"class":3050},[2907,4015,3652],{"class":3377},[2907,4017,3470],{"class":3050},[2907,4019,3657],{"class":3377},[2907,4021,3380],{"class":3050},[2907,4023,3064],{"class":3050},[2907,4025,4026],{"class":2909,"line":3633},[2907,4027,3667],{"class":3365},[2907,4029,4030,4032,4034,4036,4038,4040,4042,4044,4046],{"class":2909,"line":3639},[2907,4031,3673],{"class":3035},[2907,4033,3473],{"class":3057},[2907,4035,3652],{"class":3046},[2907,4037,3680],{"class":3050},[2907,4039,3585],{"class":3050},[2907,4041,3273],{"class":2917},[2907,4043,3411],{"class":3050},[2907,4045,3503],{"class":3057},[2907,4047,3051],{"class":3050},[2907,4049,4050,4052,4054,4056,4058],{"class":2909,"line":3644},[2907,4051,3696],{"class":3046},[2907,4053,3015],{"class":3050},[2907,4055,3396],{"class":3046},[2907,4057,3703],{"class":3050},[2907,4059,3706],{"class":3050},[2907,4061,4062,4064,4066,4068,4070,4072,4074],{"class":2909,"line":3664},[2907,4063,3696],{"class":3046},[2907,4065,3015],{"class":3050},[2907,4067,3396],{"class":3046},[2907,4069,3015],{"class":3050},[2907,4071,3401],{"class":3046},[2907,4073,3703],{"class":3050},[2907,4075,3724],{"class":3057},[2907,4077,4078,4080,4082,4084,4086,4088,4090,4092,4094,4096,4098,4100],{"class":2909,"line":3670},[2907,4079,3696],{"class":3046},[2907,4081,3015],{"class":3050},[2907,4083,3396],{"class":3046},[2907,4085,3015],{"class":3050},[2907,4087,3401],{"class":3046},[2907,4089,3015],{"class":3050},[2907,4091,3406],{"class":3042},[2907,4093,3047],{"class":3057},[2907,4095,3411],{"class":3050},[2907,4097,3414],{"class":2917},[2907,4099,3411],{"class":3050},[2907,4101,3094],{"class":3057},[2907,4103,4104],{"class":2909,"line":3693},[2907,4105,3757],{"class":3050},[2907,4107,4108],{"class":2909,"line":3709},[2907,4109,3085],{"class":3050},[2907,4111,4112,4114,4116,4118,4120],{"class":2909,"line":3727},[2907,4113,3768],{"class":3057},[2907,4115,3473],{"class":3050},[2907,4117,3773],{"class":3377},[2907,4119,3380],{"class":3050},[2907,4121,3064],{"class":3050},[2907,4123,4124,4126,4128,4130,4132,4134,4136,4138],{"class":2909,"line":3754},[2907,4125,3783],{"class":3035},[2907,4127,3786],{"class":3046},[2907,4129,3015],{"class":3050},[2907,4131,3652],{"class":3046},[2907,4133,3680],{"class":3050},[2907,4135,3585],{"class":3050},[2907,4137,3273],{"class":2917},[2907,4139,3799],{"class":3050},[2907,4141,4142],{"class":2909,"line":3760},[2907,4143,3085],{"class":3050},[2907,4145,4146,4148],{"class":2909,"line":3765},[2907,4147,3091],{"class":3050},[2907,4149,3812],{"class":3046},[4151,4152,4154],"read-more",{"to":3224,"target":4153},"_blank",[2877,4155,4156],{},"Learn more about Vite's Environment API",[2872,4158,4160,4161],{"id":4159},"non-async-callhook","Non-Async ",[2889,4162,3160],{},[2877,4164,3209,4165,4167],{},[3001,4166,3212],{},": Minimal",[3215,4169,3218],{"id":4170},"what-changed-1",[2877,4172,4173,4174,3351,4179,4181,4182,4184,4185,4188,4189,4191],{},"With the upgrade to ",[2881,4175,4178],{"href":4176,"rel":4177},"https:\u002F\u002Fgithub.com\u002Funjs\u002Fhookable",[2885],"hookable v6",[2889,4180,3160],{}," may now return ",[2889,4183,3169],{}," instead of always returning ",[2889,4186,4187],{},"Promise\u003Cvoid>",". This is a significant performance improvement that avoids unnecessary ",[2889,4190,3173],{}," allocations when there are no registered hooks or all hooks are synchronous.",[2877,4193,4194,4195,4198,4199,3822,4201,4204,4205,3270,4208,4211,4212,4215],{},"By default (with ",[2889,4196,4197],{},"compatibilityVersion: 4","), Nuxt wraps ",[2889,4200,3160],{},[2889,4202,4203],{},"Promise.resolve()"," so that existing ",[2889,4206,4207],{},".then()",[2889,4209,4210],{},".catch()"," chaining continues to work. With ",[2889,4213,4214],{},"compatibilityVersion: 5",", this wrapper is removed.",[3236,4217,4218],{},[2877,4219,4220],{},"This affects both build-time Nuxt hooks (used by Nuxt modules) and runtime Nuxt hooks (which you might use in your application code).",[3215,4222,3318],{"id":4223},"reasons-for-change-1",[2877,4225,4226,4227,4229,4230,4232],{},"Hookable v6's ",[2889,4228,3160],{}," is 20-40x faster because it avoids creating a ",[2889,4231,3173],{}," when one is not needed. This benefits applications with many hook call sites.",[3215,4234,3339],{"id":4235},"migration-steps-1",[2877,4237,4238,4239,3822,4241,3291,4243,4245,4246,3061],{},"If you or your modules use ",[2889,4240,3160],{},[2889,4242,4207],{},[2889,4244,4210],{}," chaining, switch to ",[2889,4247,4248],{},"await",[2897,4250,4254],{"className":4251,"code":4252,"language":4253,"meta":2903,"style":2903},"language-diff shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","- nuxtApp.callHook('my:hook', data).then(() => { ... })\n+ await nuxtApp.callHook('my:hook', data)\n","diff",[2889,4255,4256,4264],{"__ignoreMap":2903},[2907,4257,4258,4261],{"class":2909,"line":2910},[2907,4259,4260],{"class":3050},"-",[2907,4262,4263],{"class":3057}," nuxtApp.callHook('my:hook', data).then(() => { ... })\n",[2907,4265,4266,4269],{"class":2909,"line":3054},[2907,4267,4268],{"class":3050},"+",[2907,4270,4271],{"class":2917}," await nuxtApp.callHook('my:hook', data)\n",[2897,4273,4275],{"className":4251,"code":4274,"language":4253,"meta":2903,"style":2903},"- nuxtApp.hooks.callHook('my:hook', data).catch(err => { ... })\n+ try { await nuxtApp.hooks.callHook('my:hook', data) } catch (err) { ... }\n",[2889,4276,4277,4284],{"__ignoreMap":2903},[2907,4278,4279,4281],{"class":2909,"line":2910},[2907,4280,4260],{"class":3050},[2907,4282,4283],{"class":3057}," nuxtApp.hooks.callHook('my:hook', data).catch(err => { ... })\n",[2907,4285,4286,4288],{"class":2909,"line":3054},[2907,4287,4268],{"class":3050},[2907,4289,4290],{"class":2917}," try { await nuxtApp.hooks.callHook('my:hook', data) } catch (err) { ... }\n",[3236,4292,4293],{},[2877,4294,3240,4295,3243,4297,3247,4299,3015],{},[2889,4296,3199],{},[2881,4298,2996],{"href":3246},[2889,4300,4301],{},"experimental.asyncCallHook: false",[2877,4303,4304,4305,4307,4308,4310],{},"Alternatively, you can ensure ",[2889,4306,3160],{}," always returns a ",[2889,4309,3173],{}," with:",[2897,4312,4314],{"className":3025,"code":4313,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    asyncCallHook: true,\n  },\n})\n",[2889,4315,4316,4328,4337,4349,4353],{"__ignoreMap":2903},[2907,4317,4318,4320,4322,4324,4326],{"class":2909,"line":2910},[2907,4319,3036],{"class":3035},[2907,4321,3039],{"class":3035},[2907,4323,3043],{"class":3042},[2907,4325,3047],{"class":3046},[2907,4327,3051],{"class":3050},[2907,4329,4330,4333,4335],{"class":2909,"line":3054},[2907,4331,4332],{"class":3057},"  experimental",[2907,4334,3061],{"class":3050},[2907,4336,3064],{"class":3050},[2907,4338,4339,4342,4344,4347],{"class":2909,"line":3067},[2907,4340,4341],{"class":3057},"    asyncCallHook",[2907,4343,3061],{"class":3050},[2907,4345,4346],{"class":3434}," true",[2907,4348,3079],{"class":3050},[2907,4350,4351],{"class":2909,"line":3082},[2907,4352,3085],{"class":3050},[2907,4354,4355,4357],{"class":2909,"line":3088},[2907,4356,3091],{"class":3050},[2907,4358,3094],{"class":3046},[2872,4360,4362],{"id":4361},"client-only-comment-placeholders","Client-Only Comment Placeholders",[2877,4364,3209,4365,4167],{},[3001,4366,3212],{},[3215,4368,3218],{"id":4369},"what-changed-2",[2877,4371,4372,4373,4375,4376,4379,4380,4383,4384,4387,4388,4390],{},"With ",[2889,4374,4214],{},", client-only components (",[2889,4377,4378],{},".client.vue"," files and ",[2889,4381,4382],{},"createClientOnly()"," wrappers) now render an HTML comment (",[2889,4385,4386],{},"\u003C!--placeholder-->",") on the server instead of an empty ",[2889,4389,3186],{}," element.",[3215,4392,3318],{"id":4393},"reasons-for-change-2",[2877,4395,4396,4397,4399,4400,4403],{},"When the placeholder ",[2889,4398,3186],{}," and the actual component root share the same tag name, Vue's runtime skips re-applying ",[2889,4401,4402],{},"setScopeId"," during hydration. This causes scoped styles to be missing after the component mounts. Using a comment node avoids the tag name collision entirely.",[3215,4405,3339],{"id":4406},"migration-steps-2",[2877,4408,4409,4410,4412,4413,3351,4416,4419,4420,4422,4423,4426],{},"If you rely on the placeholder ",[2889,4411,3186],{}," to inherit attributes (",[2889,4414,4415],{},"class",[2889,4417,4418],{},"style",", etc.) for layout purposes (e.g., reserving space to prevent layout shift), wrap the component in ",[2889,4421,440],{}," with a ",[2889,4424,4425],{},"#fallback"," slot instead:",[2897,4428,4430],{"className":4251,"code":4429,"language":4253,"meta":2903,"style":2903},"- \u003CMyComponent class=\"placeholder\" style=\"min-height: 200px\" \u002F>\n+ \u003CClientOnly>\n+   \u003CMyComponent \u002F>\n+   \u003Ctemplate #fallback>\n+     \u003Cdiv class=\"placeholder\" style=\"min-height: 200px\">\u003C\u002Fdiv>\n+   \u003C\u002Ftemplate>\n+ \u003C\u002FClientOnly>\n",[2889,4431,4432,4439,4446,4453,4460,4467,4474],{"__ignoreMap":2903},[2907,4433,4434,4436],{"class":2909,"line":2910},[2907,4435,4260],{"class":3050},[2907,4437,4438],{"class":3057}," \u003CMyComponent class=\"placeholder\" style=\"min-height: 200px\" \u002F>\n",[2907,4440,4441,4443],{"class":2909,"line":3054},[2907,4442,4268],{"class":3050},[2907,4444,4445],{"class":2917}," \u003CClientOnly>\n",[2907,4447,4448,4450],{"class":2909,"line":3067},[2907,4449,4268],{"class":3050},[2907,4451,4452],{"class":2917},"   \u003CMyComponent \u002F>\n",[2907,4454,4455,4457],{"class":2909,"line":3082},[2907,4456,4268],{"class":3050},[2907,4458,4459],{"class":2917},"   \u003Ctemplate #fallback>\n",[2907,4461,4462,4464],{"class":2909,"line":3088},[2907,4463,4268],{"class":3050},[2907,4465,4466],{"class":2917},"     \u003Cdiv class=\"placeholder\" style=\"min-height: 200px\">\u003C\u002Fdiv>\n",[2907,4468,4469,4471],{"class":2909,"line":3448},[2907,4470,4268],{"class":3050},[2907,4472,4473],{"class":2917},"   \u003C\u002Ftemplate>\n",[2907,4475,4476,4478],{"class":2909,"line":3492},[2907,4477,4268],{"class":3050},[2907,4479,4480],{"class":2917}," \u003C\u002FClientOnly>\n",[3236,4482,4483],{},[2877,4484,3240,4485,3243,4487,3247,4489,3015],{},[2889,4486,3199],{},[2881,4488,2996],{"href":3246},[2889,4490,4491],{},"experimental.clientNodePlaceholder: true",[2877,4493,4494,4495,4497],{},"Alternatively, you can revert to the previous ",[2889,4496,3186],{}," placeholder behavior with:",[2897,4499,4501],{"className":3025,"code":4500,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    clientNodePlaceholder: false,\n  },\n})\n",[2889,4502,4503,4515,4523,4534,4538],{"__ignoreMap":2903},[2907,4504,4505,4507,4509,4511,4513],{"class":2909,"line":2910},[2907,4506,3036],{"class":3035},[2907,4508,3039],{"class":3035},[2907,4510,3043],{"class":3042},[2907,4512,3047],{"class":3046},[2907,4514,3051],{"class":3050},[2907,4516,4517,4519,4521],{"class":2909,"line":3054},[2907,4518,4332],{"class":3057},[2907,4520,3061],{"class":3050},[2907,4522,3064],{"class":3050},[2907,4524,4525,4528,4530,4532],{"class":2909,"line":3067},[2907,4526,4527],{"class":3057},"    clientNodePlaceholder",[2907,4529,3061],{"class":3050},[2907,4531,3435],{"class":3434},[2907,4533,3079],{"class":3050},[2907,4535,4536],{"class":2909,"line":3082},[2907,4537,3085],{"class":3050},[2907,4539,4540,4542],{"class":2909,"line":3088},[2907,4541,3091],{"class":3050},[2907,4543,3094],{"class":3046},[2867,4545,4547],{"id":4546},"migrating-to-nuxt-4","Migrating to Nuxt 4",[2877,4549,4550],{},"Nuxt 4 includes significant improvements and changes. This guide will help you migrate your existing Nuxt 3 application to Nuxt 4.",[2877,4552,4553],{},"First, upgrade to Nuxt 4:",[2893,4555,4556,4571,4585,4598,4611],{"sync":2895},[2897,4557,4559],{"className":2899,"code":4558,"filename":2901,"language":2902,"meta":2903,"style":2903},"npm install nuxt@^4.0.0\n",[2889,4560,4561],{"__ignoreMap":2903},[2907,4562,4563,4565,4568],{"class":2909,"line":2910},[2907,4564,2901],{"class":2913},[2907,4566,4567],{"class":2917}," install",[2907,4569,4570],{"class":2917}," nuxt@^4.0.0\n",[2897,4572,4574],{"className":2899,"code":4573,"filename":2925,"language":2902,"meta":2903,"style":2903},"yarn add nuxt@^4.0.0\n",[2889,4575,4576],{"__ignoreMap":2903},[2907,4577,4578,4580,4583],{"class":2909,"line":2910},[2907,4579,2925],{"class":2913},[2907,4581,4582],{"class":2917}," add",[2907,4584,4570],{"class":2917},[2897,4586,4588],{"className":2899,"code":4587,"filename":2939,"language":2902,"meta":2903,"style":2903},"pnpm add nuxt@^4.0.0\n",[2889,4589,4590],{"__ignoreMap":2903},[2907,4591,4592,4594,4596],{"class":2909,"line":2910},[2907,4593,2939],{"class":2913},[2907,4595,4582],{"class":2917},[2907,4597,4570],{"class":2917},[2897,4599,4601],{"className":2899,"code":4600,"filename":2953,"language":2902,"meta":2903,"style":2903},"bun add nuxt@^4.0.0\n",[2889,4602,4603],{"__ignoreMap":2903},[2907,4604,4605,4607,4609],{"class":2909,"line":2910},[2907,4606,2953],{"class":2913},[2907,4608,4582],{"class":2917},[2907,4610,4570],{"class":2917},[2897,4612,4614],{"className":2899,"code":4613,"filename":2970,"language":2902,"meta":2903,"style":2903},"deno add npm:nuxt@^4.0.0\n",[2889,4615,4616],{"__ignoreMap":2903},[2907,4617,4618,4620,4622],{"class":2909,"line":2910},[2907,4619,2970],{"class":2913},[2907,4621,4582],{"class":2917},[2907,4623,4624],{"class":2917}," npm:nuxt@^4.0.0\n",[2877,4626,4627],{},"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.",[2877,4629,4630],{},"The following sections detail the key changes and migrations needed when upgrading to Nuxt 4.",[2877,4632,4633],{},"Breaking or significant changes are documented below along with migration steps and available configuration options.",[2872,4635,4637],{"id":4636},"migrating-using-codemods","Migrating Using Codemods",[2877,4639,4640,4641,4646],{},"To facilitate the upgrade process, we have collaborated with the ",[2881,4642,4645],{"href":4643,"rel":4644},"https:\u002F\u002Fgithub.com\u002Fcodemod\u002Fcodemod",[2885],"Codemod"," team to automate many migration steps with some open-source codemods.",[3192,4648,4649],{},[2877,4650,4651,4652,4655],{},"If you encounter any issues, please report them to the Codemod team with ",[2889,4653,4654],{},"npx codemod feedback"," 🙏",[2877,4657,4658,4659,3015],{},"For a complete list of Nuxt 4 codemods, detailed information on each, their source, and various ways to run them, visit the ",[2881,4660,4663],{"href":4661,"rel":4662},"https:\u002F\u002Fapp.codemod.com\u002Fregistry",[2885],"Codemod Registry",[2877,4665,4666,4667,4670],{},"You can run all the codemods mentioned in this guide using the following ",[2889,4668,4669],{},"codemod"," recipe:",[2893,4672,4673,4693,4713,4732,4751],{},[2897,4674,4676],{"className":2899,"code":4675,"filename":2901,"language":2902,"meta":2903,"style":2903},"# Using pinned version due to https:\u002F\u002Fgithub.com\u002Fcodemod\u002Fcodemod\u002Fissues\u002F1710\nnpx codemod@0.18.7 nuxt\u002F4\u002Fmigration-recipe\n",[2889,4677,4678,4683],{"__ignoreMap":2903},[2907,4679,4680],{"class":2909,"line":2910},[2907,4681,4682],{"class":3365},"# Using pinned version due to https:\u002F\u002Fgithub.com\u002Fcodemod\u002Fcodemod\u002Fissues\u002F1710\n",[2907,4684,4685,4687,4690],{"class":2909,"line":3054},[2907,4686,2914],{"class":2913},[2907,4688,4689],{"class":2917}," codemod@0.18.7",[2907,4691,4692],{"class":2917}," nuxt\u002F4\u002Fmigration-recipe\n",[2897,4694,4696],{"className":2899,"code":4695,"filename":2925,"language":2902,"meta":2903,"style":2903},"# Using pinned version due to https:\u002F\u002Fgithub.com\u002Fcodemod\u002Fcodemod\u002Fissues\u002F1710\nyarn dlx codemod@0.18.7 nuxt\u002F4\u002Fmigration-recipe\n",[2889,4697,4698,4702],{"__ignoreMap":2903},[2907,4699,4700],{"class":2909,"line":2910},[2907,4701,4682],{"class":3365},[2907,4703,4704,4706,4709,4711],{"class":2909,"line":3054},[2907,4705,2925],{"class":2913},[2907,4707,4708],{"class":2917}," dlx",[2907,4710,4689],{"class":2917},[2907,4712,4692],{"class":2917},[2897,4714,4716],{"className":2899,"code":4715,"filename":2939,"language":2902,"meta":2903,"style":2903},"# Using pinned version due to https:\u002F\u002Fgithub.com\u002Fcodemod\u002Fcodemod\u002Fissues\u002F1710\npnpm dlx codemod@0.18.7 nuxt\u002F4\u002Fmigration-recipe\n",[2889,4717,4718,4722],{"__ignoreMap":2903},[2907,4719,4720],{"class":2909,"line":2910},[2907,4721,4682],{"class":3365},[2907,4723,4724,4726,4728,4730],{"class":2909,"line":3054},[2907,4725,2939],{"class":2913},[2907,4727,4708],{"class":2917},[2907,4729,4689],{"class":2917},[2907,4731,4692],{"class":2917},[2897,4733,4735],{"className":2899,"code":4734,"filename":2953,"language":2902,"meta":2903,"style":2903},"# Using pinned version due to https:\u002F\u002Fgithub.com\u002Fcodemod\u002Fcodemod\u002Fissues\u002F1710\nbun x codemod@0.18.7 nuxt\u002F4\u002Fmigration-recipe\n",[2889,4736,4737,4741],{"__ignoreMap":2903},[2907,4738,4739],{"class":2909,"line":2910},[2907,4740,4682],{"class":3365},[2907,4742,4743,4745,4747,4749],{"class":2909,"line":3054},[2907,4744,2953],{"class":2913},[2907,4746,2962],{"class":2917},[2907,4748,4689],{"class":2917},[2907,4750,4692],{"class":2917},[2897,4752,4754],{"className":2899,"code":4753,"filename":2970,"language":2902,"meta":2903,"style":2903},"# Using pinned version due to https:\u002F\u002Fgithub.com\u002Fcodemod\u002Fcodemod\u002Fissues\u002F1710\ndeno x codemod@0.18.7 nuxt\u002F4\u002Fmigration-recipe\n",[2889,4755,4756,4760],{"__ignoreMap":2903},[2907,4757,4758],{"class":2909,"line":2910},[2907,4759,4682],{"class":3365},[2907,4761,4762,4764,4766,4768],{"class":2909,"line":3054},[2907,4763,2970],{"class":2913},[2907,4765,2962],{"class":2917},[2907,4767,4689],{"class":2917},[2907,4769,4692],{"class":2917},[2877,4771,4772],{},"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.",[2872,4774,4776],{"id":4775},"new-directory-structure","New Directory Structure",[2877,4778,3209,4779,4781],{},[3001,4780,3212],{},": Significant",[2877,4783,4784,4785,4788],{},"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 ",[2889,4786,4787],{},"app\u002Fpages\u002F"," directory, this new structure will not apply).",[2877,4790,4791,4792],{},"👉 ",[2881,4793,4796],{"href":4794,"rel":4795},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fissues\u002F26444",[2885],"See full RFC",[3215,4798,3218],{"id":4799},"what-changed-3",[3106,4801,4802,4812,4825,4841,4855,4872],{},[3109,4803,4804,4805,4808,4809,4811],{},"the new Nuxt default ",[2889,4806,4807],{},"srcDir"," is ",[2889,4810,1195],{}," by default, and most things are resolved from there.",[3109,4813,4814,4817,4818,4821,4822],{},[2889,4815,4816],{},"serverDir"," now defaults to ",[2889,4819,4820],{},"\u003CrootDir>\u002Fserver"," rather than ",[2889,4823,4824],{},"\u003CsrcDir>\u002Fserver",[3109,4826,4827,3351,4830,3270,4833,4836,4837,4840],{},[2889,4828,4829],{},"layers\u002F",[2889,4831,4832],{},"modules\u002F",[2889,4834,4835],{},"public\u002F"," are resolved relative to ",[2889,4838,4839],{},"\u003CrootDir>"," by default",[3109,4842,4843,4844,3351,4849,4852,4853],{},"if using ",[2881,4845,4848],{"href":4846,"rel":4847},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fcontent\u002Fpull\u002F2649",[2885],"Nuxt Content v2.13+",[2889,4850,4851],{},"content\u002F"," is resolved relative to ",[2889,4854,4839],{},[3109,4856,4857,4858,4861,4862,3270,4865,4868,4869],{},"a new ",[2889,4859,4860],{},"dir.app"," is added, which is the directory we look for ",[2889,4863,4864],{},"router.options.ts",[2889,4866,4867],{},"spa-loading-template.html"," - this defaults to ",[2889,4870,4871],{},"\u003CsrcDir>\u002F",[3109,4873,4857,4874,4879,4880,3270,4883],{},[2881,4875,4876],{"href":1253},[2889,4877,4878],{},"shared\u002F"," directory is available for code shared between the Vue app and the Nitro server, with auto-imports for ",[2889,4881,4882],{},"shared\u002Futils\u002F",[2889,4884,4885],{},"shared\u002Ftypes\u002F",[4887,4888,4889,4893,5041],"details",{},[4890,4891,4892],"summary",{},"An example v4 folder structure.",[2897,4894,4898],{"className":4895,"code":4896,"language":4897,"meta":2903,"style":2903},"language-sh shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight",".output\u002F\n.nuxt\u002F\napp\u002F\n  assets\u002F\n  components\u002F\n  composables\u002F\n  layouts\u002F\n  middleware\u002F\n  pages\u002F\n  plugins\u002F\n  utils\u002F\n  app.config.ts\n  app.vue\n  router.options.ts\ncontent\u002F\nlayers\u002F\nmodules\u002F\nnode_modules\u002F\npublic\u002F\nshared\u002F\n  types\u002F\n  utils\u002F\nserver\u002F\n  api\u002F\n  middleware\u002F\n  plugins\u002F\n  routes\u002F\n  utils\u002F\nnuxt.config.ts\n","sh",[2889,4899,4900,4905,4910,4915,4920,4925,4930,4935,4940,4945,4950,4955,4960,4965,4970,4975,4980,4985,4990,4995,5000,5005,5009,5014,5019,5023,5027,5032,5036],{"__ignoreMap":2903},[2907,4901,4902],{"class":2909,"line":2910},[2907,4903,4904],{"class":2913},".output\u002F\n",[2907,4906,4907],{"class":2909,"line":3054},[2907,4908,4909],{"class":2913},".nuxt\u002F\n",[2907,4911,4912],{"class":2909,"line":3067},[2907,4913,4914],{"class":2913},"app\u002F\n",[2907,4916,4917],{"class":2909,"line":3082},[2907,4918,4919],{"class":2913},"  assets\u002F\n",[2907,4921,4922],{"class":2909,"line":3088},[2907,4923,4924],{"class":2913},"  components\u002F\n",[2907,4926,4927],{"class":2909,"line":3448},[2907,4928,4929],{"class":2913},"  composables\u002F\n",[2907,4931,4932],{"class":2909,"line":3492},[2907,4933,4934],{"class":2913},"  layouts\u002F\n",[2907,4936,4937],{"class":2909,"line":3508},[2907,4938,4939],{"class":2913},"  middleware\u002F\n",[2907,4941,4942],{"class":2909,"line":3536},[2907,4943,4944],{"class":2913},"  pages\u002F\n",[2907,4946,4947],{"class":2909,"line":3542},[2907,4948,4949],{"class":2913},"  plugins\u002F\n",[2907,4951,4952],{"class":2909,"line":3549},[2907,4953,4954],{"class":2913},"  utils\u002F\n",[2907,4956,4957],{"class":2909,"line":3554},[2907,4958,4959],{"class":2913},"  app.config.ts\n",[2907,4961,4962],{"class":2909,"line":3560},[2907,4963,4964],{"class":2913},"  app.vue\n",[2907,4966,4967],{"class":2909,"line":3577},[2907,4968,4969],{"class":2913},"  router.options.ts\n",[2907,4971,4972],{"class":2909,"line":3595},[2907,4973,4974],{"class":2913},"content\u002F\n",[2907,4976,4977],{"class":2909,"line":3608},[2907,4978,4979],{"class":2913},"layers\u002F\n",[2907,4981,4982],{"class":2909,"line":3614},[2907,4983,4984],{"class":2913},"modules\u002F\n",[2907,4986,4987],{"class":2909,"line":3619},[2907,4988,4989],{"class":2913},"node_modules\u002F\n",[2907,4991,4992],{"class":2909,"line":3633},[2907,4993,4994],{"class":2913},"public\u002F\n",[2907,4996,4997],{"class":2909,"line":3639},[2907,4998,4999],{"class":2913},"shared\u002F\n",[2907,5001,5002],{"class":2909,"line":3644},[2907,5003,5004],{"class":2913},"  types\u002F\n",[2907,5006,5007],{"class":2909,"line":3664},[2907,5008,4954],{"class":2913},[2907,5010,5011],{"class":2909,"line":3670},[2907,5012,5013],{"class":2913},"server\u002F\n",[2907,5015,5016],{"class":2909,"line":3693},[2907,5017,5018],{"class":2913},"  api\u002F\n",[2907,5020,5021],{"class":2909,"line":3709},[2907,5022,4939],{"class":2913},[2907,5024,5025],{"class":2909,"line":3727},[2907,5026,4949],{"class":2913},[2907,5028,5029],{"class":2909,"line":3754},[2907,5030,5031],{"class":2913},"  routes\u002F\n",[2907,5033,5034],{"class":2909,"line":3760},[2907,5035,4954],{"class":2913},[2907,5037,5038],{"class":2909,"line":3765},[2907,5039,5040],{"class":2913},"nuxt.config.ts\n",[3192,5042,5043],{},[2877,5044,5045,5046,5049,5050,5052,5053,5055,5056,5059,5060,3351,5063,3100,5066,5068],{},"With this new structure, the ",[2889,5047,5048],{},"~"," alias now points to the ",[2889,5051,1195],{}," directory by default (your ",[2889,5054,4807],{},"). This means ",[2889,5057,5058],{},"~\u002Fcomponents"," resolves to ",[2889,5061,5062],{},"app\u002Fcomponents\u002F",[2889,5064,5065],{},"~\u002Fpages",[2889,5067,4787],{},", etc.",[2877,5070,5071,5072,3015],{},"👉 For more details, see the ",[2881,5073,5076],{"href":5074,"rel":5075},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F27029",[2885],"PR implementing this change",[3215,5078,3318],{"id":5079},"reasons-for-change-3",[3257,5081,5082,5095],{},[3109,5083,5084,5087,5088,3270,5091,5094],{},[3001,5085,5086],{},"Performance"," - placing all your code in the root of your repo causes issues with ",[2889,5089,5090],{},".git\u002F",[2889,5092,5093],{},"node_modules\u002F"," folders being scanned\u002Fincluded by FS watchers which can significantly delay startup on non-Mac OSes.",[3109,5096,5097,5100,5101,5104,5105,5107,5108,5112],{},[3001,5098,5099],{},"IDE type-safety"," - ",[2889,5102,5103],{},"server\u002F"," and the rest of your app are running in two entirely different contexts with different global imports available, and making sure ",[2889,5106,5103],{}," isn't ",[5109,5110,5111],"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.",[5114,5115],"video-accordion",{"platform":5116,"title":5117,"video-id":5118},"vimeo","Watch a video from Vue School on the new directory structure","1031028378",[3215,5120,3339],{"id":5121},"migration-steps-3",[3257,5123,5124,5129,5170,5191],{},[3109,5125,5126,5127,3015],{},"Create a new directory called ",[2889,5128,1195],{},[3109,5130,5131,5132,3351,5135,3351,5138,3351,5141,3351,5144,3351,5147,3351,5149,3270,5152,5155,5156,3351,5158,3351,5160,5162,5163,3291,5166,5169],{},"Move your ",[2889,5133,5134],{},"assets\u002F",[2889,5136,5137],{},"components\u002F",[2889,5139,5140],{},"composables\u002F",[2889,5142,5143],{},"app\u002Flayouts\u002F",[2889,5145,5146],{},"app\u002Fmiddleware\u002F",[2889,5148,4787],{},[2889,5150,5151],{},"app\u002Fplugins\u002F",[2889,5153,5154],{},"utils\u002F"," folders under it, as well as ",[2889,5157,219],{},[2889,5159,229],{},[2889,5161,224],{},". If you have an ",[2889,5164,5165],{},"app\u002Frouter-options.ts",[2889,5167,5168],{},"app\u002Fspa-loading-template.html",", these paths remain the same.",[3109,5171,5172,5173,3351,5175,3351,5177,3351,5179,3351,5181,3351,5183,3270,5185,5187,5188,5190],{},"Make sure your ",[2889,5174,233],{},[2889,5176,4851],{},[2889,5178,4829],{},[2889,5180,4832],{},[2889,5182,4835],{},[2889,5184,4878],{},[2889,5186,5103],{}," folders remain outside the ",[2889,5189,1195],{}," folder, in the root of your project.",[3109,5192,5193,5194,3291,5197,5200,5201,5204,5205,5207],{},"Remember to update any third-party configuration files to work with the new directory structure, such as your ",[2889,5195,5196],{},"tailwindcss",[2889,5198,5199],{},"eslint"," configuration (if required - ",[2889,5202,5203],{},"@nuxtjs\u002Ftailwindcss"," should automatically configure ",[2889,5206,5196],{}," correctly).",[3236,5209,5210],{},[2877,5211,5212,5213],{},"You can automate this migration by running ",[2889,5214,5215],{},"npx codemod@latest nuxt\u002F4\u002Ffile-structure",[2877,5217,5218,5219,5222,5223,5226,5227,5229,5230,3351,5232,3351,5234,3270,5236,5238,5239,5242,5243,5245,5246,3351,5249,3270,5252,5254],{},"However, migration is ",[5109,5220,5221],{},"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 ",[5109,5224,5225],{},"already"," have a custom ",[2889,5228,4807],{},". In this case, you should be aware that your ",[2889,5231,4832],{},[2889,5233,4835],{},[2889,5235,4878],{},[2889,5237,5103],{}," folders will be resolved from your ",[2889,5240,5241],{},"rootDir"," rather than from your custom ",[2889,5244,4807],{},". You can override this by configuring ",[2889,5247,5248],{},"dir.modules",[2889,5250,5251],{},"dir.public",[2889,5253,4816],{}," if you need to.",[2877,5256,5257],{},"You can also force a v3 folder structure with the following configuration:",[2897,5259,5261],{"className":3025,"code":5260,"filename":233,"language":3027,"meta":2903,"style":2903},"export default defineNuxtConfig({\n  \u002F\u002F This reverts the new srcDir default from `app` back to your root directory\n  srcDir: '.',\n  \u002F\u002F This specifies the directory prefix for `router.options.ts` and `spa-loading-template.html`\n  dir: {\n    app: 'app',\n  },\n})\n",[2889,5262,5263,5275,5280,5295,5300,5309,5324,5328],{"__ignoreMap":2903},[2907,5264,5265,5267,5269,5271,5273],{"class":2909,"line":2910},[2907,5266,3036],{"class":3035},[2907,5268,3039],{"class":3035},[2907,5270,3043],{"class":3042},[2907,5272,3047],{"class":3046},[2907,5274,3051],{"class":3050},[2907,5276,5277],{"class":2909,"line":3054},[2907,5278,5279],{"class":3365},"  \u002F\u002F This reverts the new srcDir default from `app` back to your root directory\n",[2907,5281,5282,5285,5287,5289,5291,5293],{"class":2909,"line":3067},[2907,5283,5284],{"class":3057},"  srcDir",[2907,5286,3061],{"class":3050},[2907,5288,3585],{"class":3050},[2907,5290,3015],{"class":2917},[2907,5292,3411],{"class":3050},[2907,5294,3079],{"class":3050},[2907,5296,5297],{"class":2909,"line":3082},[2907,5298,5299],{"class":3365},"  \u002F\u002F This specifies the directory prefix for `router.options.ts` and `spa-loading-template.html`\n",[2907,5301,5302,5305,5307],{"class":2909,"line":3088},[2907,5303,5304],{"class":3057},"  dir",[2907,5306,3061],{"class":3050},[2907,5308,3064],{"class":3050},[2907,5310,5311,5314,5316,5318,5320,5322],{"class":2909,"line":3448},[2907,5312,5313],{"class":3057},"    app",[2907,5315,3061],{"class":3050},[2907,5317,3585],{"class":3050},[2907,5319,1193],{"class":2917},[2907,5321,3411],{"class":3050},[2907,5323,3079],{"class":3050},[2907,5325,5326],{"class":2909,"line":3492},[2907,5327,3085],{"class":3050},[2907,5329,5330,5332],{"class":2909,"line":3508},[2907,5331,3091],{"class":3050},[2907,5333,3094],{"class":3046},[2872,5335,5337],{"id":5336},"singleton-data-fetching-layer","Singleton Data Fetching Layer",[2877,5339,3209,5340,5342],{},[3001,5341,3212],{},": Moderate",[3215,5344,3218],{"id":5345},"what-changed-4",[2877,5347,5348,5349,3270,5351,5353],{},"Nuxt's data fetching system (",[2889,5350,515],{},[2889,5352,527],{},") has been significantly reorganized for better performance and consistency:",[3257,5355,5356,5393,5406,5412],{},[3109,5357,5358,5361,5362,3291,5364,5366,5367,3351,5370,3270,5373,5376,5377,3351,5380,3351,5383,3351,5386,3291,5389,5392],{},[3001,5359,5360],{},"Shared refs for the same key",": All calls to ",[2889,5363,515],{},[2889,5365,527],{}," with the same key now share the same ",[2889,5368,5369],{},"data",[2889,5371,5372],{},"error",[2889,5374,5375],{},"status"," refs. This means that it is important that all calls with an explicit key must not have conflicting ",[2889,5378,5379],{},"deep",[2889,5381,5382],{},"transform",[2889,5384,5385],{},"pick",[2889,5387,5388],{},"getCachedData",[2889,5390,5391],{},"default"," options.",[3109,5394,5395,3267,5400,5402,5403,5405],{},[3001,5396,5397,5398],{},"More control over ",[2889,5399,5388],{},[2889,5401,5388],{}," function is now called every time data is fetched, even if this is caused by a watcher or calling ",[2889,5404,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.",[3109,5407,5408,5411],{},[3001,5409,5410],{},"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).",[3109,5413,5414,5417,5418,5420],{},[3001,5415,5416],{},"Data cleanup",": When the last component using data fetched with ",[2889,5419,515],{}," is unmounted, Nuxt will remove that data to avoid ever-growing memory usage.",[3215,5422,3318],{"id":5423},"reasons-for-change-4",[2877,5425,5426,5427,3015],{},"These changes have been made to improve memory usage and increase consistency with loading states across calls of ",[2889,5428,515],{},[3215,5430,3339],{"id":5431},"migration-steps-4",[3257,5433,5434,5736],{},[3109,5435,5436,5439,5440,5577,5580,5581,5583,5584],{},[3001,5437,5438],{},"Check for inconsistent options",": Review any components using the same key with different options or fetch functions.",[2897,5441,5443],{"className":3025,"code":5442,"language":3027,"meta":2903,"style":2903},"\u002F\u002F This will now trigger a warning\nconst { data: users1 } = useAsyncData('users', () => $fetch('\u002Fapi\u002Fusers'), { deep: false })\nconst { data: users2 } = useAsyncData('users', () => $fetch('\u002Fapi\u002Fusers'), { deep: true })\n",[2889,5444,5445,5450,5518],{"__ignoreMap":2903},[2907,5446,5447],{"class":2909,"line":2910},[2907,5448,5449],{"class":3365},"\u002F\u002F This will now trigger a warning\n",[2907,5451,5452,5455,5457,5460,5462,5465,5467,5470,5473,5475,5477,5480,5482,5484,5487,5489,5492,5494,5496,5499,5501,5503,5505,5507,5510,5512,5514,5516],{"class":2909,"line":3054},[2907,5453,5454],{"class":3383},"const",[2907,5456,3426],{"class":3050},[2907,5458,5459],{"class":3057}," data",[2907,5461,3061],{"class":3050},[2907,5463,5464],{"class":3046}," users1 ",[2907,5466,3091],{"class":3050},[2907,5468,5469],{"class":3050}," =",[2907,5471,5472],{"class":3042}," useAsyncData",[2907,5474,3047],{"class":3046},[2907,5476,3411],{"class":3050},[2907,5478,5479],{"class":2917},"users",[2907,5481,3411],{"class":3050},[2907,5483,3470],{"class":3050},[2907,5485,5486],{"class":3050}," ()",[2907,5488,3384],{"class":3383},[2907,5490,5491],{"class":3042}," $fetch",[2907,5493,3047],{"class":3046},[2907,5495,3411],{"class":3050},[2907,5497,5498],{"class":2917},"\u002Fapi\u002Fusers",[2907,5500,3411],{"class":3050},[2907,5502,3380],{"class":3046},[2907,5504,3470],{"class":3050},[2907,5506,3426],{"class":3050},[2907,5508,5509],{"class":3057}," deep",[2907,5511,3061],{"class":3050},[2907,5513,3435],{"class":3434},[2907,5515,3438],{"class":3050},[2907,5517,3094],{"class":3046},[2907,5519,5520,5522,5524,5526,5528,5531,5533,5535,5537,5539,5541,5543,5545,5547,5549,5551,5553,5555,5557,5559,5561,5563,5565,5567,5569,5571,5573,5575],{"class":2909,"line":3067},[2907,5521,5454],{"class":3383},[2907,5523,3426],{"class":3050},[2907,5525,5459],{"class":3057},[2907,5527,3061],{"class":3050},[2907,5529,5530],{"class":3046}," users2 ",[2907,5532,3091],{"class":3050},[2907,5534,5469],{"class":3050},[2907,5536,5472],{"class":3042},[2907,5538,3047],{"class":3046},[2907,5540,3411],{"class":3050},[2907,5542,5479],{"class":2917},[2907,5544,3411],{"class":3050},[2907,5546,3470],{"class":3050},[2907,5548,5486],{"class":3050},[2907,5550,3384],{"class":3383},[2907,5552,5491],{"class":3042},[2907,5554,3047],{"class":3046},[2907,5556,3411],{"class":3050},[2907,5558,5498],{"class":2917},[2907,5560,3411],{"class":3050},[2907,5562,3380],{"class":3046},[2907,5564,3470],{"class":3050},[2907,5566,3426],{"class":3050},[2907,5568,5509],{"class":3057},[2907,5570,3061],{"class":3050},[2907,5572,4346],{"class":3434},[2907,5574,3438],{"class":3050},[2907,5576,3094],{"class":3046},[5578,5579],"br",{},"It may be beneficial to extract any calls to ",[2889,5582,515],{}," that share an explicit key (and have custom options) into their own composable:",[2897,5585,5588],{"className":3025,"code":5586,"filename":5587,"language":3027,"meta":2903,"style":2903},"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\u002Fcomposables\u002FuseUserData.ts",[2889,5589,5590,5614,5624,5642,5660,5665,5676,5721,5726,5731],{"__ignoreMap":2903},[2907,5591,5592,5594,5597,5600,5602,5605,5607,5610,5612],{"class":2909,"line":2910},[2907,5593,3036],{"class":3035},[2907,5595,5596],{"class":3383}," function",[2907,5598,5599],{"class":3042}," useUserData",[2907,5601,3473],{"class":3050},[2907,5603,5604],{"class":3377},"userId",[2907,5606,3061],{"class":3050},[2907,5608,5609],{"class":2913}," string",[2907,5611,3380],{"class":3050},[2907,5613,3064],{"class":3050},[2907,5615,5616,5619,5621],{"class":2909,"line":3054},[2907,5617,5618],{"class":3035},"  return",[2907,5620,5472],{"class":3042},[2907,5622,5623],{"class":3057},"(\n",[2907,5625,5626,5629,5632,5635,5637,5640],{"class":2909,"line":3067},[2907,5627,5628],{"class":3050},"    `",[2907,5630,5631],{"class":2917},"user-",[2907,5633,5634],{"class":3050},"${",[2907,5636,5604],{"class":3046},[2907,5638,5639],{"class":3050},"}`",[2907,5641,3079],{"class":3050},[2907,5643,5644,5647,5649,5652,5654,5656,5658],{"class":2909,"line":3082},[2907,5645,5646],{"class":3050},"    ()",[2907,5648,3384],{"class":3383},[2907,5650,5651],{"class":3042}," fetchUser",[2907,5653,3047],{"class":3057},[2907,5655,5604],{"class":3046},[2907,5657,3380],{"class":3057},[2907,5659,3079],{"class":3050},[2907,5661,5662],{"class":2909,"line":3088},[2907,5663,5664],{"class":3050},"    {\n",[2907,5666,5667,5670,5672,5674],{"class":2909,"line":3448},[2907,5668,5669],{"class":3057},"      deep",[2907,5671,3061],{"class":3050},[2907,5673,4346],{"class":3434},[2907,5675,3079],{"class":3050},[2907,5677,5678,5681,5683,5686,5688,5690,5693,5696,5699,5701,5704,5706,5709,5712,5715,5717,5719],{"class":2909,"line":3492},[2907,5679,5680],{"class":3042},"      transform",[2907,5682,3061],{"class":3050},[2907,5684,5685],{"class":3377}," user",[2907,5687,3384],{"class":3383},[2907,5689,3473],{"class":3057},[2907,5691,5692],{"class":3050},"{",[2907,5694,5695],{"class":3050}," ...",[2907,5697,5698],{"class":3046},"user",[2907,5700,3470],{"class":3050},[2907,5702,5703],{"class":3057}," lastAccessed",[2907,5705,3061],{"class":3050},[2907,5707,5708],{"class":3050}," new",[2907,5710,5711],{"class":3042}," Date",[2907,5713,5714],{"class":3057},"() ",[2907,5716,3091],{"class":3050},[2907,5718,3380],{"class":3057},[2907,5720,3079],{"class":3050},[2907,5722,5723],{"class":2909,"line":3508},[2907,5724,5725],{"class":3050},"    },\n",[2907,5727,5728],{"class":2909,"line":3536},[2907,5729,5730],{"class":3057},"  )\n",[2907,5732,5733],{"class":2909,"line":3542},[2907,5734,5735],{"class":3050},"}\n",[3109,5737,5738,3061,5744],{},[3001,5739,5740,5741,5743],{},"Update ",[2889,5742,5388],{}," implementations",[2897,5745,5747],{"className":4251,"code":5746,"language":4253,"meta":2903,"style":2903},"useAsyncData('key', fetchFunction, {\n-  getCachedData: (key, nuxtApp) => {\n-    return cachedData[key]\n-  }\n+  getCachedData: (key, nuxtApp, ctx) => {\n+    \u002F\u002F ctx.cause - can be 'initial' | 'refresh:hook' | 'refresh:manual' | 'watch'\n+    \n+    \u002F\u002F Example: Don't use cache on manual refresh\n+    if (ctx.cause === 'refresh:manual') return undefined\n+    \n+    return cachedData[key]\n+  }\n})\n",[2889,5748,5749,5754,5761,5768,5774,5781,5788,5795,5802,5809,5815,5821,5827],{"__ignoreMap":2903},[2907,5750,5751],{"class":2909,"line":2910},[2907,5752,5753],{"class":3046},"useAsyncData('key', fetchFunction, {\n",[2907,5755,5756,5758],{"class":2909,"line":3054},[2907,5757,4260],{"class":3050},[2907,5759,5760],{"class":3057},"  getCachedData: (key, nuxtApp) => {\n",[2907,5762,5763,5765],{"class":2909,"line":3067},[2907,5764,4260],{"class":3050},[2907,5766,5767],{"class":3057},"    return cachedData[key]\n",[2907,5769,5770,5772],{"class":2909,"line":3082},[2907,5771,4260],{"class":3050},[2907,5773,3539],{"class":3057},[2907,5775,5776,5778],{"class":2909,"line":3088},[2907,5777,4268],{"class":3050},[2907,5779,5780],{"class":2917},"  getCachedData: (key, nuxtApp, ctx) => {\n",[2907,5782,5783,5785],{"class":2909,"line":3448},[2907,5784,4268],{"class":3050},[2907,5786,5787],{"class":2917},"    \u002F\u002F ctx.cause - can be 'initial' | 'refresh:hook' | 'refresh:manual' | 'watch'\n",[2907,5789,5790,5792],{"class":2909,"line":3492},[2907,5791,4268],{"class":3050},[2907,5793,5794],{"class":2917},"    \n",[2907,5796,5797,5799],{"class":2909,"line":3508},[2907,5798,4268],{"class":3050},[2907,5800,5801],{"class":2917},"    \u002F\u002F Example: Don't use cache on manual refresh\n",[2907,5803,5804,5806],{"class":2909,"line":3536},[2907,5805,4268],{"class":3050},[2907,5807,5808],{"class":2917},"    if (ctx.cause === 'refresh:manual') return undefined\n",[2907,5810,5811,5813],{"class":2909,"line":3542},[2907,5812,4268],{"class":3050},[2907,5814,5794],{"class":2917},[2907,5816,5817,5819],{"class":2909,"line":3549},[2907,5818,4268],{"class":3050},[2907,5820,5767],{"class":2917},[2907,5822,5823,5825],{"class":2909,"line":3554},[2907,5824,4268],{"class":3050},[2907,5826,3539],{"class":2917},[2907,5828,5829],{"class":2909,"line":3560},[2907,5830,5831],{"class":3046},"})\n",[2877,5833,5834],{},"Alternatively, for now, you can disable this behaviour with:",[2897,5836,5838],{"className":3025,"code":5837,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    granularCachedData: false,\n    purgeCachedData: false,\n  },\n})\n",[2889,5839,5840,5852,5860,5871,5882,5886],{"__ignoreMap":2903},[2907,5841,5842,5844,5846,5848,5850],{"class":2909,"line":2910},[2907,5843,3036],{"class":3035},[2907,5845,3039],{"class":3035},[2907,5847,3043],{"class":3042},[2907,5849,3047],{"class":3046},[2907,5851,3051],{"class":3050},[2907,5853,5854,5856,5858],{"class":2909,"line":3054},[2907,5855,4332],{"class":3057},[2907,5857,3061],{"class":3050},[2907,5859,3064],{"class":3050},[2907,5861,5862,5865,5867,5869],{"class":2909,"line":3067},[2907,5863,5864],{"class":3057},"    granularCachedData",[2907,5866,3061],{"class":3050},[2907,5868,3435],{"class":3434},[2907,5870,3079],{"class":3050},[2907,5872,5873,5876,5878,5880],{"class":2909,"line":3082},[2907,5874,5875],{"class":3057},"    purgeCachedData",[2907,5877,3061],{"class":3050},[2907,5879,3435],{"class":3434},[2907,5881,3079],{"class":3050},[2907,5883,5884],{"class":2909,"line":3088},[2907,5885,3085],{"class":3050},[2907,5887,5888,5890],{"class":2909,"line":3448},[2907,5889,3091],{"class":3050},[2907,5891,3094],{"class":3046},[2872,5893,5895],{"id":5894},"corrected-module-loading-order-in-layers","Corrected Module Loading Order in Layers",[2877,5897,3209,5898,4167],{},[3001,5899,3212],{},[3215,5901,3218],{"id":5902},"what-changed-5",[2877,5904,5905,5906,5909],{},"The order in which modules are loaded when using ",[2881,5907,5908],{"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.",[2877,5911,5912],{},"Now modules are loaded in the correct order:",[3257,5914,5915,5921],{},[3109,5916,5917,5920],{},[3001,5918,5919],{},"Layer modules first"," (in extend order - deeper layers first)",[3109,5922,5923,5926],{},[3001,5924,5925],{},"Project modules last"," (highest priority)",[2877,5928,5929],{},"This affects both:",[3106,5931,5932,5940],{},[3109,5933,5934,5935,5937,5938],{},"Modules defined in the ",[2889,5936,162],{}," array in ",[2889,5939,233],{},[3109,5941,5942,5943,5945],{},"Auto-discovered modules from the ",[2889,5944,4832],{}," directory",[3215,5947,3318],{"id":5948},"reasons-for-change-5",[2877,5950,5951],{},"This change ensures that:",[3106,5953,5954,5957,5960],{},[3109,5955,5956],{},"Extended layers have lower priority than the consuming project",[3109,5958,5959],{},"Module execution order matches the intuitive layer inheritance pattern",[3109,5961,5962],{},"Module configuration and hooks work as expected in multi-layer setups",[3215,5964,3339],{"id":5965},"migration-steps-5",[2877,5967,5968,5971],{},[3001,5969,5970],{},"Most projects will not need changes",", as this corrects the loading order to match expected behavior.",[2877,5973,5974],{},"However, if your project was relying on the previous incorrect order, you may need to:",[3257,5976,5977,5983,5989],{},[3109,5978,5979,5982],{},[3001,5980,5981],{},"Review module dependencies",": Check if any modules depend on specific loading order",[3109,5984,5985,5988],{},[3001,5986,5987],{},"Adjust module configuration",": If modules were configured to work around the incorrect order",[3109,5990,5991,5994],{},[3001,5992,5993],{},"Test thoroughly",": Ensure all functionality works as expected with the corrected order",[2877,5996,5997],{},"Example of the new correct order:",[2897,5999,6001],{"className":3025,"code":6000,"language":3027,"meta":2903,"style":2903},"\u002F\u002F Layer: my-layer\u002Fnuxt.config.ts\nexport default defineNuxtConfig({\n  modules: ['layer-module-1', 'layer-module-2'],\n})\n\n\u002F\u002F Project: nuxt.config.ts\nexport default defineNuxtConfig({\n  extends: ['.\u002Fmy-layer'],\n  modules: ['project-module-1', 'project-module-2'],\n})\n\n\u002F\u002F Loading order (corrected):\n\u002F\u002F 1. layer-module-1\n\u002F\u002F 2. layer-module-2\n\u002F\u002F 3. project-module-1 (can override layer modules)\n\u002F\u002F 4. project-module-2 (can override layer modules)\n",[2889,6002,6003,6008,6020,6051,6057,6061,6066,6078,6098,6126,6132,6136,6141,6146,6151,6156],{"__ignoreMap":2903},[2907,6004,6005],{"class":2909,"line":2910},[2907,6006,6007],{"class":3365},"\u002F\u002F Layer: my-layer\u002Fnuxt.config.ts\n",[2907,6009,6010,6012,6014,6016,6018],{"class":2909,"line":3054},[2907,6011,3036],{"class":3035},[2907,6013,3039],{"class":3035},[2907,6015,3043],{"class":3042},[2907,6017,3047],{"class":3046},[2907,6019,3051],{"class":3050},[2907,6021,6022,6025,6027,6030,6032,6035,6037,6039,6041,6044,6046,6049],{"class":2909,"line":3067},[2907,6023,6024],{"class":3057},"  modules",[2907,6026,3061],{"class":3050},[2907,6028,6029],{"class":3046}," [",[2907,6031,3411],{"class":3050},[2907,6033,6034],{"class":2917},"layer-module-1",[2907,6036,3411],{"class":3050},[2907,6038,3470],{"class":3050},[2907,6040,3585],{"class":3050},[2907,6042,6043],{"class":2917},"layer-module-2",[2907,6045,3411],{"class":3050},[2907,6047,6048],{"class":3046},"]",[2907,6050,3079],{"class":3050},[2907,6052,6053,6055],{"class":2909,"line":3082},[2907,6054,3091],{"class":3050},[2907,6056,3094],{"class":3046},[2907,6058,6059],{"class":2909,"line":3088},[2907,6060,3445],{"emptyLinePlaceholder":1196},[2907,6062,6063],{"class":2909,"line":3448},[2907,6064,6065],{"class":3365},"\u002F\u002F Project: nuxt.config.ts\n",[2907,6067,6068,6070,6072,6074,6076],{"class":2909,"line":3492},[2907,6069,3036],{"class":3035},[2907,6071,3039],{"class":3035},[2907,6073,3043],{"class":3042},[2907,6075,3047],{"class":3046},[2907,6077,3051],{"class":3050},[2907,6079,6080,6083,6085,6087,6089,6092,6094,6096],{"class":2909,"line":3508},[2907,6081,6082],{"class":3057},"  extends",[2907,6084,3061],{"class":3050},[2907,6086,6029],{"class":3046},[2907,6088,3411],{"class":3050},[2907,6090,6091],{"class":2917},".\u002Fmy-layer",[2907,6093,3411],{"class":3050},[2907,6095,6048],{"class":3046},[2907,6097,3079],{"class":3050},[2907,6099,6100,6102,6104,6106,6108,6111,6113,6115,6117,6120,6122,6124],{"class":2909,"line":3536},[2907,6101,6024],{"class":3057},[2907,6103,3061],{"class":3050},[2907,6105,6029],{"class":3046},[2907,6107,3411],{"class":3050},[2907,6109,6110],{"class":2917},"project-module-1",[2907,6112,3411],{"class":3050},[2907,6114,3470],{"class":3050},[2907,6116,3585],{"class":3050},[2907,6118,6119],{"class":2917},"project-module-2",[2907,6121,3411],{"class":3050},[2907,6123,6048],{"class":3046},[2907,6125,3079],{"class":3050},[2907,6127,6128,6130],{"class":2909,"line":3542},[2907,6129,3091],{"class":3050},[2907,6131,3094],{"class":3046},[2907,6133,6134],{"class":2909,"line":3549},[2907,6135,3445],{"emptyLinePlaceholder":1196},[2907,6137,6138],{"class":2909,"line":3554},[2907,6139,6140],{"class":3365},"\u002F\u002F Loading order (corrected):\n",[2907,6142,6143],{"class":2909,"line":3560},[2907,6144,6145],{"class":3365},"\u002F\u002F 1. layer-module-1\n",[2907,6147,6148],{"class":2909,"line":3577},[2907,6149,6150],{"class":3365},"\u002F\u002F 2. layer-module-2\n",[2907,6152,6153],{"class":2909,"line":3595},[2907,6154,6155],{"class":3365},"\u002F\u002F 3. project-module-1 (can override layer modules)\n",[2907,6157,6158],{"class":2909,"line":3608},[2907,6159,6160],{"class":3365},"\u002F\u002F 4. project-module-2 (can override layer modules)\n",[2877,6162,6163,6164,6170],{},"If you encounter issues with module order dependencies due to needing to register a hook, consider using the ",[2881,6165,6166,6169],{"href":1343},[2889,6167,6168],{},"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.",[2877,6172,6173,6174,3270,6179,6184],{},"👉 See ",[2881,6175,6178],{"href":6176,"rel":6177},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F31507",[2885],"PR #31507",[2881,6180,6183],{"href":6181,"rel":6182},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fissues\u002F25719",[2885],"issue #25719"," for more details.",[2872,6186,6188],{"id":6187},"deduplication-of-route-metadata","Deduplication of Route Metadata",[2877,6190,3209,6191,4167],{},[3001,6192,3212],{},[3215,6194,3218],{"id":6195},"what-changed-6",[2877,6197,6198,6199,6201,6202,3351,6204,6207,6208,3270,6211,6214],{},"It's possible to set some route metadata using ",[2889,6200,678],{},", such as the ",[2889,6203,3652],{},[2889,6205,6206],{},"path",", and so on. Previously these were available both on the route and on route metadata (for example, ",[2889,6209,6210],{},"route.name",[2889,6212,6213],{},"route.meta.name",").",[2877,6216,6217],{},"Now, they are only accessible on the route object.",[3215,6219,3318],{"id":6220},"reasons-for-change-6",[2877,6222,6223,6224,6227],{},"This is a result of enabling ",[2889,6225,6226],{},"experimental.scanPageMeta"," by default, and is a performance optimization.",[3215,6229,3339],{"id":6230},"migration-steps-6",[2877,6232,6233],{},"The migration should be straightforward:",[2897,6235,6237],{"className":4251,"code":6236,"language":4253,"meta":2903,"style":2903},"  const route = useRoute()\n  \n- console.log(route.meta.name)\n+ console.log(route.name)\n",[2889,6238,6239,6244,6249,6256],{"__ignoreMap":2903},[2907,6240,6241],{"class":2909,"line":2910},[2907,6242,6243],{"class":3046},"  const route = useRoute()\n",[2907,6245,6246],{"class":2909,"line":3054},[2907,6247,6248],{"class":3046},"  \n",[2907,6250,6251,6253],{"class":2909,"line":3067},[2907,6252,4260],{"class":3050},[2907,6254,6255],{"class":3057}," console.log(route.meta.name)\n",[2907,6257,6258,6260],{"class":2909,"line":3082},[2907,6259,4268],{"class":3050},[2907,6261,6262],{"class":2917}," console.log(route.name)\n",[2872,6264,6266],{"id":6265},"normalized-component-names","Normalized Component Names",[2877,6268,3209,6269,5342],{},[3001,6270,3212],{},[2877,6272,6273],{},"Vue will now generate component names that match the Nuxt pattern for component naming.",[3215,6275,3218],{"id":6276},"what-changed-7",[2877,6278,6279],{},"By default, if you haven't set it manually, Vue will assign a component name that matches\nthe filename of the component.",[2897,6281,6284],{"className":2899,"code":6282,"filename":6283,"language":2902,"meta":2903,"style":2903},"├─ components\u002F\n├─── SomeFolder\u002F\n├───── MyComponent.vue\n","Directory structure",[2889,6285,6286,6294,6302],{"__ignoreMap":2903},[2907,6287,6288,6291],{"class":2909,"line":2910},[2907,6289,6290],{"class":2913},"├─",[2907,6292,6293],{"class":2917}," components\u002F\n",[2907,6295,6296,6299],{"class":2909,"line":3054},[2907,6297,6298],{"class":2913},"├───",[2907,6300,6301],{"class":2917}," SomeFolder\u002F\n",[2907,6303,6304,6307],{"class":2909,"line":3067},[2907,6305,6306],{"class":2913},"├─────",[2907,6308,6309],{"class":2917}," MyComponent.vue\n",[2877,6311,6312,6313,6316,6317,6319],{},"In this case, the component name would be ",[2889,6314,6315],{},"MyComponent",", as far as Vue is concerned. If you wanted to use ",[2889,6318,3132],{}," with it, or identify it in the Vue DevTools, you would need to use this name.",[2877,6321,6322,6323,3015],{},"But in order to auto-import it, you would need to use ",[2889,6324,6325],{},"SomeFolderMyComponent",[2877,6327,6328],{},"With this change, these two values will match, and Vue will generate a component name that matches the Nuxt pattern for component naming.",[3215,6330,3339],{"id":6331},"migration-steps-7",[2877,6333,6334,6335,6338,6339,6342,6343,6345],{},"Ensure that you use the updated name in any tests which use ",[2889,6336,6337],{},"findComponent"," from ",[2889,6340,6341],{},"@vue\u002Ftest-utils"," and in any ",[2889,6344,3132],{}," which depends on the name of your component.",[2877,6347,5834],{},[2897,6349,6351],{"className":3025,"code":6350,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    normalizeComponentNames: false,\n  },\n})\n",[2889,6352,6353,6365,6373,6384,6388],{"__ignoreMap":2903},[2907,6354,6355,6357,6359,6361,6363],{"class":2909,"line":2910},[2907,6356,3036],{"class":3035},[2907,6358,3039],{"class":3035},[2907,6360,3043],{"class":3042},[2907,6362,3047],{"class":3046},[2907,6364,3051],{"class":3050},[2907,6366,6367,6369,6371],{"class":2909,"line":3054},[2907,6368,4332],{"class":3057},[2907,6370,3061],{"class":3050},[2907,6372,3064],{"class":3050},[2907,6374,6375,6378,6380,6382],{"class":2909,"line":3067},[2907,6376,6377],{"class":3057},"    normalizeComponentNames",[2907,6379,3061],{"class":3050},[2907,6381,3435],{"class":3434},[2907,6383,3079],{"class":3050},[2907,6385,6386],{"class":2909,"line":3082},[2907,6387,3085],{"class":3050},[2907,6389,6390,6392],{"class":2909,"line":3088},[2907,6391,3091],{"class":3050},[2907,6393,3094],{"class":3046},[2872,6395,6397],{"id":6396},"unhead-v2","Unhead v2",[2877,6399,3209,6400,4167],{},[3001,6401,3212],{},[3215,6403,3218],{"id":6404},"what-changed-8",[2877,6406,6407,6412,6413,6416],{},[2881,6408,6411],{"href":6409,"rel":6410},"https:\u002F\u002Funhead.unjs.io\u002F",[2885],"Unhead",", used to generate ",[2889,6414,6415],{},"\u003Chead>"," tags, has been updated to version 2. While mostly compatible it includes several breaking changes\nfor lower-level APIs.",[3106,6418,6419,6434,6437],{},[3109,6420,6421,6422,3351,6425,3351,6428,3351,6431,3015],{},"Removed props: ",[2889,6423,6424],{},"vmid",[2889,6426,6427],{},"hid",[2889,6429,6430],{},"children",[2889,6432,6433],{},"body",[3109,6435,6436],{},"Promise input no longer supported.",[3109,6438,6439],{},"Tags are now sorted using Capo.js by default.",[3215,6441,3339],{"id":6442},"migration-steps-8",[2877,6444,6445],{},"The above changes should have minimal impact on your app.",[2877,6447,6448],{},"If you have issues you should verify:",[3106,6450,6451],{},[3109,6452,6453],{},"You're not using any of the removed props.",[2897,6455,6457],{"className":4251,"code":6456,"language":4253,"meta":2903,"style":2903},"useHead({\n  meta: [{ \n    name: 'description', \n    \u002F\u002F meta tags don't need a vmid, or a key    \n-   vmid: 'description' \n-   hid: 'description'\n  }]\n})\n",[2889,6458,6459,6464,6469,6474,6479,6486,6493,6498],{"__ignoreMap":2903},[2907,6460,6461],{"class":2909,"line":2910},[2907,6462,6463],{"class":3046},"useHead({\n",[2907,6465,6466],{"class":2909,"line":3054},[2907,6467,6468],{"class":3046},"  meta: [{ \n",[2907,6470,6471],{"class":2909,"line":3067},[2907,6472,6473],{"class":3046},"    name: 'description', \n",[2907,6475,6476],{"class":2909,"line":3082},[2907,6477,6478],{"class":3046},"    \u002F\u002F meta tags don't need a vmid, or a key    \n",[2907,6480,6481,6483],{"class":2909,"line":3088},[2907,6482,4260],{"class":3050},[2907,6484,6485],{"class":3057},"   vmid: 'description' \n",[2907,6487,6488,6490],{"class":2909,"line":3448},[2907,6489,4260],{"class":3050},[2907,6491,6492],{"class":3057},"   hid: 'description'\n",[2907,6494,6495],{"class":2909,"line":3492},[2907,6496,6497],{"class":3046},"  }]\n",[2907,6499,6500],{"class":2909,"line":3508},[2907,6501,5831],{"class":3046},[3106,6503,6504],{},[3109,6505,6506,6507,3291,6512,6517],{},"If you're using ",[2881,6508,6511],{"href":6509,"rel":6510},"https:\u002F\u002Funhead.unjs.io\u002Fdocs\u002Fhead\u002Fguides\u002Fplugins\u002Ftemplate-params",[2885],"Template Params",[2881,6513,6516],{"href":6514,"rel":6515},"https:\u002F\u002Funhead.unjs.io\u002Fdocs\u002Fhead\u002Fguides\u002Fplugins\u002Falias-sorting",[2885],"Alias Tag Sorting",", you will need to explicitly opt in to these features now.",[2897,6519,6521],{"className":3025,"code":6520,"language":3027,"meta":2903,"style":2903},"import { AliasSortingPlugin, TemplateParamsPlugin } from '@unhead\u002Fvue\u002Fplugins'\n\nexport default defineNuxtPlugin({\n  setup () {\n    const unhead = injectHead()\n    unhead.use(TemplateParamsPlugin)\n    unhead.use(AliasSortingPlugin)\n  },\n})\n",[2889,6522,6523,6550,6554,6567,6576,6592,6609,6624,6628],{"__ignoreMap":2903},[2907,6524,6525,6528,6530,6533,6535,6538,6540,6543,6545,6548],{"class":2909,"line":2910},[2907,6526,6527],{"class":3035},"import",[2907,6529,3426],{"class":3050},[2907,6531,6532],{"class":3046}," AliasSortingPlugin",[2907,6534,3470],{"class":3050},[2907,6536,6537],{"class":3046}," TemplateParamsPlugin",[2907,6539,3438],{"class":3050},[2907,6541,6542],{"class":3035}," from",[2907,6544,3585],{"class":3050},[2907,6546,6547],{"class":2917},"@unhead\u002Fvue\u002Fplugins",[2907,6549,3799],{"class":3050},[2907,6551,6552],{"class":2909,"line":3054},[2907,6553,3445],{"emptyLinePlaceholder":1196},[2907,6555,6556,6558,6560,6563,6565],{"class":2909,"line":3067},[2907,6557,3036],{"class":3035},[2907,6559,3039],{"class":3035},[2907,6561,6562],{"class":3042}," defineNuxtPlugin",[2907,6564,3047],{"class":3046},[2907,6566,3051],{"class":3050},[2907,6568,6569,6572,6574],{"class":2909,"line":3082},[2907,6570,6571],{"class":3057},"  setup",[2907,6573,5486],{"class":3050},[2907,6575,3064],{"class":3050},[2907,6577,6578,6581,6584,6586,6589],{"class":2909,"line":3088},[2907,6579,6580],{"class":3383},"    const",[2907,6582,6583],{"class":3046}," unhead",[2907,6585,5469],{"class":3050},[2907,6587,6588],{"class":3042}," injectHead",[2907,6590,6591],{"class":3057},"()\n",[2907,6593,6594,6597,6599,6602,6604,6607],{"class":2909,"line":3448},[2907,6595,6596],{"class":3046},"    unhead",[2907,6598,3015],{"class":3050},[2907,6600,6601],{"class":3042},"use",[2907,6603,3047],{"class":3057},[2907,6605,6606],{"class":3046},"TemplateParamsPlugin",[2907,6608,3094],{"class":3057},[2907,6610,6611,6613,6615,6617,6619,6622],{"class":2909,"line":3492},[2907,6612,6596],{"class":3046},[2907,6614,3015],{"class":3050},[2907,6616,6601],{"class":3042},[2907,6618,3047],{"class":3057},[2907,6620,6621],{"class":3046},"AliasSortingPlugin",[2907,6623,3094],{"class":3057},[2907,6625,6626],{"class":2909,"line":3508},[2907,6627,3085],{"class":3050},[2907,6629,6630,6632],{"class":2909,"line":3536},[2907,6631,3091],{"class":3050},[2907,6633,3094],{"class":3046},[2877,6635,6636,6637,3100,6640,3291,6643,3015],{},"While not required it's recommended to update any imports from ",[2889,6638,6639],{},"@unhead\u002Fvue",[2889,6641,6642],{},"#imports",[2889,6644,6645],{},"nuxt\u002Fapp",[2897,6647,6649],{"className":4251,"code":6648,"language":4253,"meta":2903,"style":2903},"-import { useHead } from '@unhead\u002Fvue'\n+import { useHead } from '#imports'\n",[2889,6650,6651,6658],{"__ignoreMap":2903},[2907,6652,6653,6655],{"class":2909,"line":2910},[2907,6654,4260],{"class":3050},[2907,6656,6657],{"class":3057},"import { useHead } from '@unhead\u002Fvue'\n",[2907,6659,6660,6662],{"class":2909,"line":3054},[2907,6661,4268],{"class":3050},[2907,6663,6664],{"class":2917},"import { useHead } from '#imports'\n",[2877,6666,6667,6668,6671],{},"If you still have issues you may revert to the v1 behavior by enabling the ",[2889,6669,6670],{},"head.legacy"," config.",[2897,6673,6675],{"className":3025,"code":6674,"language":3027,"meta":2903,"style":2903},"export default defineNuxtConfig({\n  unhead: {\n    legacy: true,\n  },\n})\n",[2889,6676,6677,6689,6698,6709,6713],{"__ignoreMap":2903},[2907,6678,6679,6681,6683,6685,6687],{"class":2909,"line":2910},[2907,6680,3036],{"class":3035},[2907,6682,3039],{"class":3035},[2907,6684,3043],{"class":3042},[2907,6686,3047],{"class":3046},[2907,6688,3051],{"class":3050},[2907,6690,6691,6694,6696],{"class":2909,"line":3054},[2907,6692,6693],{"class":3057},"  unhead",[2907,6695,3061],{"class":3050},[2907,6697,3064],{"class":3050},[2907,6699,6700,6703,6705,6707],{"class":2909,"line":3067},[2907,6701,6702],{"class":3057},"    legacy",[2907,6704,3061],{"class":3050},[2907,6706,4346],{"class":3434},[2907,6708,3079],{"class":3050},[2907,6710,6711],{"class":2909,"line":3082},[2907,6712,3085],{"class":3050},[2907,6714,6715,6717],{"class":2909,"line":3088},[2907,6716,3091],{"class":3050},[2907,6718,3094],{"class":3046},[2872,6720,6722],{"id":6721},"new-dom-location-for-spa-loading-screen","New DOM Location for SPA Loading Screen",[2877,6724,3209,6725,4167],{},[3001,6726,3212],{},[3215,6728,3218],{"id":6729},"what-changed-9",[2877,6731,6732,6733,6736,6737,6740,6741,6744],{},"When rendering a client-only page (with ",[2889,6734,6735],{},"ssr: false","), we optionally render a loading screen (from ",[2889,6738,6739],{},"~\u002Fapp\u002Fspa-loading-template.html"," - note that this has also changed to ",[2889,6742,6743],{},"~\u002Fspa-loading-template.html"," in Nuxt 4), within the Nuxt app root:",[2897,6746,6750],{"className":6747,"code":6748,"language":6749,"meta":2903,"style":2903},"language-html shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\u003Cdiv id=\"__nuxt\">\n  \u003C!-- spa loading template -->\n\u003C\u002Fdiv>\n","html",[2889,6751,6752,6777,6782],{"__ignoreMap":2903},[2907,6753,6754,6757,6760,6763,6766,6769,6772,6774],{"class":2909,"line":2910},[2907,6755,6756],{"class":3050},"\u003C",[2907,6758,6759],{"class":3057},"div",[2907,6761,6762],{"class":3383}," id",[2907,6764,6765],{"class":3050},"=",[2907,6767,6768],{"class":3050},"\"",[2907,6770,6771],{"class":2917},"__nuxt",[2907,6773,6768],{"class":3050},[2907,6775,6776],{"class":3050},">\n",[2907,6778,6779],{"class":2909,"line":3054},[2907,6780,6781],{"class":3365},"  \u003C!-- spa loading template -->\n",[2907,6783,6784,6787,6789],{"class":2909,"line":3067},[2907,6785,6786],{"class":3050},"\u003C\u002F",[2907,6788,6759],{"class":3057},[2907,6790,6776],{"class":3050},[2877,6792,6793],{},"Now, we default to rendering the template alongside the Nuxt app root:",[2897,6795,6797],{"className":6747,"code":6796,"language":6749,"meta":2903,"style":2903},"\u003Cdiv id=\"__nuxt\">\u003C\u002Fdiv>\n\u003C!-- spa loading template -->\n",[2889,6798,6799,6822],{"__ignoreMap":2903},[2907,6800,6801,6803,6805,6807,6809,6811,6813,6815,6818,6820],{"class":2909,"line":2910},[2907,6802,6756],{"class":3050},[2907,6804,6759],{"class":3057},[2907,6806,6762],{"class":3383},[2907,6808,6765],{"class":3050},[2907,6810,6768],{"class":3050},[2907,6812,6771],{"class":2917},[2907,6814,6768],{"class":3050},[2907,6816,6817],{"class":3050},">\u003C\u002F",[2907,6819,6759],{"class":3057},[2907,6821,6776],{"class":3050},[2907,6823,6824],{"class":2909,"line":3054},[2907,6825,6826],{"class":3365},"\u003C!-- spa loading template -->\n",[3215,6828,3318],{"id":6829},"reasons-for-change-7",[2877,6831,6832],{},"This allows the spa loading template to remain in the DOM until the Vue app suspense resolves, preventing a flash of white.",[3215,6834,3339],{"id":6835},"migration-steps-9",[2877,6837,6838,6839,6842,6843,3270,6846,6849],{},"If you were targeting the spa loading template with CSS or ",[2889,6840,6841],{},"document.queryElement"," you will need to update your selectors. For this purpose you can use the new ",[2889,6844,6845],{},"app.spaLoaderTag",[2889,6847,6848],{},"app.spaLoaderAttrs"," configuration options.",[2877,6851,6852],{},"Alternatively, you can revert to the previous behaviour with:",[2897,6854,6856],{"className":3025,"code":6855,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    spaLoadingTemplateLocation: 'within',\n  },\n})\n",[2889,6857,6858,6870,6878,6894,6898],{"__ignoreMap":2903},[2907,6859,6860,6862,6864,6866,6868],{"class":2909,"line":2910},[2907,6861,3036],{"class":3035},[2907,6863,3039],{"class":3035},[2907,6865,3043],{"class":3042},[2907,6867,3047],{"class":3046},[2907,6869,3051],{"class":3050},[2907,6871,6872,6874,6876],{"class":2909,"line":3054},[2907,6873,4332],{"class":3057},[2907,6875,3061],{"class":3050},[2907,6877,3064],{"class":3050},[2907,6879,6880,6883,6885,6887,6890,6892],{"class":2909,"line":3067},[2907,6881,6882],{"class":3057},"    spaLoadingTemplateLocation",[2907,6884,3061],{"class":3050},[2907,6886,3585],{"class":3050},[2907,6888,6889],{"class":2917},"within",[2907,6891,3411],{"class":3050},[2907,6893,3079],{"class":3050},[2907,6895,6896],{"class":2909,"line":3082},[2907,6897,3085],{"class":3050},[2907,6899,6900,6902],{"class":2909,"line":3088},[2907,6901,3091],{"class":3050},[2907,6903,3094],{"class":3046},[2872,6905,6907,6908],{"id":6906},"parsed-errordata","Parsed ",[2889,6909,6910],{},"error.data",[2877,6912,3209,6913,4167],{},[3001,6914,3212],{},[2877,6916,6917,6918,6920,6921,6923],{},"It was possible to throw an error with a ",[2889,6919,5369],{}," property, but this was not parsed. Now, it is parsed and made available in the ",[2889,6922,5372],{}," object. Although a fix, this is technically a breaking change if you were relying on the previous behavior and parsing it manually.",[3215,6925,3339],{"id":6926},"migration-steps-10",[2877,6928,6929,6930,6932,6933,3061],{},"Update your custom ",[2889,6931,229],{}," to remove any additional parsing of ",[2889,6934,6910],{},[2897,6936,6938],{"className":4251,"code":6937,"language":4253,"meta":2903,"style":2903},"  \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\u002Fscript>\n",[2889,6939,6940,6945,6950,6954,6959,6964,6969,6973,6980,6987],{"__ignoreMap":2903},[2907,6941,6942],{"class":2909,"line":2910},[2907,6943,6944],{"class":3046},"  \u003Cscript setup lang=\"ts\">\n",[2907,6946,6947],{"class":2909,"line":3054},[2907,6948,6949],{"class":3046},"  import type { NuxtError } from '#app'\n",[2907,6951,6952],{"class":2909,"line":3067},[2907,6953,3445],{"emptyLinePlaceholder":1196},[2907,6955,6956],{"class":2909,"line":3082},[2907,6957,6958],{"class":3046},"  const props = defineProps({\n",[2907,6960,6961],{"class":2909,"line":3088},[2907,6962,6963],{"class":3046},"    error: Object as () => NuxtError\n",[2907,6965,6966],{"class":2909,"line":3448},[2907,6967,6968],{"class":3046},"  })\n",[2907,6970,6971],{"class":2909,"line":3492},[2907,6972,3445],{"emptyLinePlaceholder":1196},[2907,6974,6975,6977],{"class":2909,"line":3508},[2907,6976,4260],{"class":3050},[2907,6978,6979],{"class":3057}," const data = JSON.parse(error.data)\n",[2907,6981,6982,6984],{"class":2909,"line":3536},[2907,6983,4268],{"class":3050},[2907,6985,6986],{"class":2917}," const data = error.data\n",[2907,6988,6989],{"class":2909,"line":3542},[2907,6990,6991],{"class":3046},"  \u003C\u002Fscript>\n",[2872,6993,6995],{"id":6994},"more-granular-inline-styles","More Granular Inline Styles",[2877,6997,3209,6998,5342],{},[3001,6999,3212],{},[2877,7001,7002],{},"Nuxt will now only inline styles for Vue components, not global CSS.",[3215,7004,3218],{"id":7005},"what-changed-10",[2877,7007,7008,7009,7012,7013,7016],{},"Previously, Nuxt would inline all CSS, including global styles, and remove ",[2889,7010,7011],{},"\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 ",[2889,7014,7015],{},".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.",[3215,7018,3339],{"id":7019},"migration-steps-11",[2877,7021,7022,7023,7026],{},"This feature is fully configurable and you can revert to the previous behavior by setting ",[2889,7024,7025],{},"inlineStyles: true"," to inline global CSS as well as per-component CSS.",[2897,7028,7030],{"className":3025,"code":7029,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  features: {\n    inlineStyles: true,\n  },\n})\n",[2889,7031,7032,7044,7053,7064,7068],{"__ignoreMap":2903},[2907,7033,7034,7036,7038,7040,7042],{"class":2909,"line":2910},[2907,7035,3036],{"class":3035},[2907,7037,3039],{"class":3035},[2907,7039,3043],{"class":3042},[2907,7041,3047],{"class":3046},[2907,7043,3051],{"class":3050},[2907,7045,7046,7049,7051],{"class":2909,"line":3054},[2907,7047,7048],{"class":3057},"  features",[2907,7050,3061],{"class":3050},[2907,7052,3064],{"class":3050},[2907,7054,7055,7058,7060,7062],{"class":2909,"line":3067},[2907,7056,7057],{"class":3057},"    inlineStyles",[2907,7059,3061],{"class":3050},[2907,7061,4346],{"class":3434},[2907,7063,3079],{"class":3050},[2907,7065,7066],{"class":2909,"line":3082},[2907,7067,3085],{"class":3050},[2907,7069,7070,7072],{"class":2909,"line":3088},[2907,7071,3091],{"class":3050},[2907,7073,3094],{"class":3046},[2872,7075,7077],{"id":7076},"scan-page-meta-after-resolution","Scan Page Meta After Resolution",[2877,7079,3209,7080,4167],{},[3001,7081,3212],{},[3215,7083,3218],{"id":7084},"what-changed-11",[2877,7086,7087,7088,3503,7090,7093,7094,7097],{},"We now scan page metadata (defined in ",[2889,7089,678],{},[5109,7091,7092],{},"after"," calling the ",[2889,7095,7096],{},"pages:extend"," hook rather than before.",[3215,7099,3318],{"id":7100},"reasons-for-change-8",[2877,7102,7103,7104,7106,7107,7110],{},"This was to allow scanning metadata for pages that users wanted to add in ",[2889,7105,7096],{},". We still offer an opportunity to change or override page metadata in a new ",[2889,7108,7109],{},"pages:resolved"," hook.",[3215,7112,3339],{"id":7113},"migration-steps-12",[2877,7115,7116,7117,7119,7120,3015],{},"If you want to override page metadata, do that in ",[2889,7118,7109],{}," rather than in ",[2889,7121,7096],{},[2897,7123,7125],{"className":4251,"code":7124,"language":4253,"meta":2903,"style":2903},"  export default defineNuxtConfig({\n    hooks: {\n-     'pages:extend'(pages) {\n+     'pages:resolved'(pages) {\n        const myPage = pages.find(page => page.path === '\u002F')\n        myPage.meta ||= {}\n        myPage.meta.layout = 'overridden-layout'\n      }\n    }\n  })\n",[2889,7126,7127,7132,7137,7144,7151,7156,7161,7166,7171,7175],{"__ignoreMap":2903},[2907,7128,7129],{"class":2909,"line":2910},[2907,7130,7131],{"class":3046},"  export default defineNuxtConfig({\n",[2907,7133,7134],{"class":2909,"line":3054},[2907,7135,7136],{"class":3046},"    hooks: {\n",[2907,7138,7139,7141],{"class":2909,"line":3067},[2907,7140,4260],{"class":3050},[2907,7142,7143],{"class":3057},"     'pages:extend'(pages) {\n",[2907,7145,7146,7148],{"class":2909,"line":3082},[2907,7147,4268],{"class":3050},[2907,7149,7150],{"class":2917},"     'pages:resolved'(pages) {\n",[2907,7152,7153],{"class":2909,"line":3088},[2907,7154,7155],{"class":3046},"        const myPage = pages.find(page => page.path === '\u002F')\n",[2907,7157,7158],{"class":2909,"line":3448},[2907,7159,7160],{"class":3046},"        myPage.meta ||= {}\n",[2907,7162,7163],{"class":2909,"line":3492},[2907,7164,7165],{"class":3046},"        myPage.meta.layout = 'overridden-layout'\n",[2907,7167,7168],{"class":2909,"line":3508},[2907,7169,7170],{"class":3046},"      }\n",[2907,7172,7173],{"class":2909,"line":3536},[2907,7174,3757],{"class":3046},[2907,7176,7177],{"class":2909,"line":3542},[2907,7178,6968],{"class":3046},[2877,7180,6852],{},[2897,7182,7184],{"className":3025,"code":7183,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    scanPageMeta: true,\n  },\n})\n",[2889,7185,7186,7198,7206,7217,7221],{"__ignoreMap":2903},[2907,7187,7188,7190,7192,7194,7196],{"class":2909,"line":2910},[2907,7189,3036],{"class":3035},[2907,7191,3039],{"class":3035},[2907,7193,3043],{"class":3042},[2907,7195,3047],{"class":3046},[2907,7197,3051],{"class":3050},[2907,7199,7200,7202,7204],{"class":2909,"line":3054},[2907,7201,4332],{"class":3057},[2907,7203,3061],{"class":3050},[2907,7205,3064],{"class":3050},[2907,7207,7208,7211,7213,7215],{"class":2909,"line":3067},[2907,7209,7210],{"class":3057},"    scanPageMeta",[2907,7212,3061],{"class":3050},[2907,7214,4346],{"class":3434},[2907,7216,3079],{"class":3050},[2907,7218,7219],{"class":2909,"line":3082},[2907,7220,3085],{"class":3050},[2907,7222,7223,7225],{"class":2909,"line":3088},[2907,7224,3091],{"class":3050},[2907,7226,3094],{"class":3046},[2872,7228,7230],{"id":7229},"shared-prerender-data","Shared Prerender Data",[2877,7232,3209,7233,3213],{},[3001,7234,3212],{},[3215,7236,3218],{"id":7237},"what-changed-12",[2877,7239,7240,7241,3270,7243,7245,7246,3015],{},"We enabled a previously experimental feature to share data from ",[2889,7242,515],{},[2889,7244,527],{}," calls, across different pages. See ",[2881,7247,7250],{"href":7248,"rel":7249},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F24894",[2885],"original PR",[3215,7252,3318],{"id":7253},"reasons-for-change-9",[2877,7255,7256,7257,7259,7260,3291,7262,7264],{},"This feature automatically shares payload ",[5109,7258,5369],{}," between pages that are prerendered. This can result in a significant performance improvement when prerendering sites that use ",[2889,7261,515],{},[2889,7263,527],{}," and fetch the same data in different pages.",[2877,7266,7267,7268,7270],{},"For example, if your site requires a ",[2889,7269,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.",[3215,7272,3339],{"id":7273},"migration-steps-13",[2877,7275,7276,7277,7279,7280,7282],{},"Make sure that any unique key of your data is always resolvable to the same data. For example, if you are using ",[2889,7278,515],{}," to fetch data related to a particular page, you should provide a key that uniquely matches that data. (",[2889,7281,527],{}," should do this automatically for you.)",[2897,7284,7287],{"className":3025,"code":7285,"filename":7286,"language":3027,"meta":2903,"style":2903},"\u002F\u002F This would be unsafe in a dynamic page (e.g. `[slug].vue`) because the route slug makes a difference\n\u002F\u002F 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(`\u002Fapi\u002Fmy-page\u002F${route.params.slug}`)\n})\n\u002F\u002F Instead, you should use a key that uniquely identifies the data fetched.\nconst { data } = await useAsyncData(route.params.slug, async () => {\n  return await $fetch(`\u002Fapi\u002Fmy-page\u002F${route.params.slug}`)\n})\n","app\u002Fpages\u002Ftest\u002F[slug].vue",[2889,7288,7289,7294,7299,7313,7342,7377,7383,7388,7426,7456],{"__ignoreMap":2903},[2907,7290,7291],{"class":2909,"line":2910},[2907,7292,7293],{"class":3365},"\u002F\u002F This would be unsafe in a dynamic page (e.g. `[slug].vue`) because the route slug makes a difference\n",[2907,7295,7296],{"class":2909,"line":3054},[2907,7297,7298],{"class":3365},"\u002F\u002F to the data fetched, but Nuxt can't know that because it's not reflected in the key.\n",[2907,7300,7301,7303,7306,7308,7311],{"class":2909,"line":3067},[2907,7302,5454],{"class":3383},[2907,7304,7305],{"class":3046}," route ",[2907,7307,6765],{"class":3050},[2907,7309,7310],{"class":3042}," useRoute",[2907,7312,6591],{"class":3046},[2907,7314,7315,7317,7319,7322,7324,7326,7329,7331,7333,7336,7338,7340],{"class":2909,"line":3082},[2907,7316,5454],{"class":3383},[2907,7318,3426],{"class":3050},[2907,7320,7321],{"class":3046}," data ",[2907,7323,3091],{"class":3050},[2907,7325,5469],{"class":3050},[2907,7327,7328],{"class":3035}," await",[2907,7330,5472],{"class":3042},[2907,7332,3047],{"class":3046},[2907,7334,7335],{"class":3383},"async",[2907,7337,5486],{"class":3050},[2907,7339,3384],{"class":3383},[2907,7341,3064],{"class":3050},[2907,7343,7344,7346,7348,7350,7352,7355,7358,7360,7363,7365,7368,7370,7373,7375],{"class":2909,"line":3088},[2907,7345,5618],{"class":3035},[2907,7347,7328],{"class":3035},[2907,7349,5491],{"class":3042},[2907,7351,3047],{"class":3057},[2907,7353,7354],{"class":3050},"`",[2907,7356,7357],{"class":2917},"\u002Fapi\u002Fmy-page\u002F",[2907,7359,5634],{"class":3050},[2907,7361,7362],{"class":3046},"route",[2907,7364,3015],{"class":3050},[2907,7366,7367],{"class":3046},"params",[2907,7369,3015],{"class":3050},[2907,7371,7372],{"class":3046},"slug",[2907,7374,5639],{"class":3050},[2907,7376,3094],{"class":3057},[2907,7378,7379,7381],{"class":2909,"line":3448},[2907,7380,3091],{"class":3050},[2907,7382,3094],{"class":3046},[2907,7384,7385],{"class":2909,"line":3492},[2907,7386,7387],{"class":3365},"\u002F\u002F Instead, you should use a key that uniquely identifies the data fetched.\n",[2907,7389,7390,7392,7394,7396,7398,7400,7402,7404,7407,7409,7411,7413,7415,7417,7420,7422,7424],{"class":2909,"line":3508},[2907,7391,5454],{"class":3383},[2907,7393,3426],{"class":3050},[2907,7395,7321],{"class":3046},[2907,7397,3091],{"class":3050},[2907,7399,5469],{"class":3050},[2907,7401,7328],{"class":3035},[2907,7403,5472],{"class":3042},[2907,7405,7406],{"class":3046},"(route",[2907,7408,3015],{"class":3050},[2907,7410,7367],{"class":3046},[2907,7412,3015],{"class":3050},[2907,7414,7372],{"class":3046},[2907,7416,3470],{"class":3050},[2907,7418,7419],{"class":3383}," async",[2907,7421,5486],{"class":3050},[2907,7423,3384],{"class":3383},[2907,7425,3064],{"class":3050},[2907,7427,7428,7430,7432,7434,7436,7438,7440,7442,7444,7446,7448,7450,7452,7454],{"class":2909,"line":3536},[2907,7429,5618],{"class":3035},[2907,7431,7328],{"class":3035},[2907,7433,5491],{"class":3042},[2907,7435,3047],{"class":3057},[2907,7437,7354],{"class":3050},[2907,7439,7357],{"class":2917},[2907,7441,5634],{"class":3050},[2907,7443,7362],{"class":3046},[2907,7445,3015],{"class":3050},[2907,7447,7367],{"class":3046},[2907,7449,3015],{"class":3050},[2907,7451,7372],{"class":3046},[2907,7453,5639],{"class":3050},[2907,7455,3094],{"class":3057},[2907,7457,7458,7460],{"class":2909,"line":3542},[2907,7459,3091],{"class":3050},[2907,7461,3094],{"class":3046},[2877,7463,7464],{},"Alternatively, you can disable this feature with:",[2897,7466,7468],{"className":3025,"code":7467,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    sharedPrerenderData: false,\n  },\n})\n",[2889,7469,7470,7482,7490,7501,7505],{"__ignoreMap":2903},[2907,7471,7472,7474,7476,7478,7480],{"class":2909,"line":2910},[2907,7473,3036],{"class":3035},[2907,7475,3039],{"class":3035},[2907,7477,3043],{"class":3042},[2907,7479,3047],{"class":3046},[2907,7481,3051],{"class":3050},[2907,7483,7484,7486,7488],{"class":2909,"line":3054},[2907,7485,4332],{"class":3057},[2907,7487,3061],{"class":3050},[2907,7489,3064],{"class":3050},[2907,7491,7492,7495,7497,7499],{"class":2909,"line":3067},[2907,7493,7494],{"class":3057},"    sharedPrerenderData",[2907,7496,3061],{"class":3050},[2907,7498,3435],{"class":3434},[2907,7500,3079],{"class":3050},[2907,7502,7503],{"class":2909,"line":3082},[2907,7504,3085],{"class":3050},[2907,7506,7507,7509],{"class":2909,"line":3088},[2907,7508,3091],{"class":3050},[2907,7510,3094],{"class":3046},[2872,7512,7514,7515,3270,7517,7519,7520,3270,7522],{"id":7513},"default-data-and-error-values-in-useasyncdata-and-usefetch","Default ",[2889,7516,5369],{},[2889,7518,5372],{}," values in ",[2889,7521,515],{},[2889,7523,527],{},[2877,7525,3209,7526,4167],{},[3001,7527,3212],{},[3215,7529,3218],{"id":7530},"what-changed-13",[2877,7532,7533,3270,7535,7537,7538,7540,7541,3015],{},[2889,7534,5369],{},[2889,7536,5372],{}," objects returned from ",[2889,7539,515],{}," will now default to ",[2889,7542,3152],{},[3215,7544,3318],{"id":7545},"reasons-for-change-10",[2877,7547,7548,7549,7551,7552,7555,7556,3100,7558,7560,7561,7551,7563,7565],{},"Previously ",[2889,7550,5369],{}," was initialized to ",[2889,7553,7554],{},"null"," but reset in ",[2889,7557,650],{},[2889,7559,3152],{},". ",[2889,7562,5372],{},[2889,7564,7554],{},". This change is to bring greater consistency.",[3215,7567,3339],{"id":7568},"migration-steps-14",[2877,7570,7571,7572,3291,7575,7578,7579,7581,7582,7584],{},"If you were checking if ",[2889,7573,7574],{},"data.value",[2889,7576,7577],{},"error.value"," were ",[2889,7580,7554],{},", you can update these checks to check for ",[2889,7583,3152],{}," instead.",[3236,7586,7587],{},[2877,7588,7589,7590],{},"You can automate this step by running ",[2889,7591,7592],{},"npx codemod@latest nuxt\u002F4\u002Fdefault-data-error-value",[2872,7594,7596,7597,7600,7601,7604,7605,7608,7609,3270,7611],{"id":7595},"removal-of-deprecated-boolean-values-for-dedupe-option-when-calling-refresh-in-useasyncdata-and-usefetch","Removal of deprecated ",[2889,7598,7599],{},"boolean"," values for ",[2889,7602,7603],{},"dedupe"," option when calling ",[2889,7606,7607],{},"refresh"," in ",[2889,7610,515],{},[2889,7612,527],{},[2877,7614,3209,7615,4167],{},[3001,7616,3212],{},[3215,7618,3218],{"id":7619},"what-changed-14",[2877,7621,7622,7623,3100,7626,7628,7629,3473,7632,7635,7636,3473,7639,6214],{},"Previously it was possible to pass ",[2889,7624,7625],{},"dedupe: boolean",[2889,7627,7607],{},". These were aliases of ",[2889,7630,7631],{},"cancel",[2889,7633,7634],{},"true",") and ",[2889,7637,7638],{},"defer",[2889,7640,7641],{},"false",[2897,7643,7646],{"className":3025,"code":7644,"filename":7645,"language":3027,"meta":3028,"style":2903},"\u002F\u002F @errors: 2322\nconst { refresh } = await useAsyncData(() => Promise.resolve({ message: 'Hello, Nuxt!' }))\n\nasync function refreshData () {\n  await refresh({ dedupe: true })\n}\n","app\u002Fapp.vue",[2889,7647,7648,7653,7704,7708,7721,7744],{"__ignoreMap":2903},[2907,7649,7650],{"class":2909,"line":2910},[2907,7651,7652],{"class":3365},"\u002F\u002F @errors: 2322\n",[2907,7654,7655,7657,7659,7662,7664,7666,7668,7670,7672,7674,7676,7679,7681,7684,7686,7688,7691,7693,7695,7698,7700,7702],{"class":2909,"line":3054},[2907,7656,5454],{"class":3383},[2907,7658,3426],{"class":3050},[2907,7660,7661],{"class":3046}," refresh ",[2907,7663,3091],{"class":3050},[2907,7665,5469],{"class":3050},[2907,7667,7328],{"class":3035},[2907,7669,5472],{"class":3042},[2907,7671,3047],{"class":3046},[2907,7673,3568],{"class":3050},[2907,7675,3384],{"class":3383},[2907,7677,7678],{"class":2913}," Promise",[2907,7680,3015],{"class":3050},[2907,7682,7683],{"class":3042},"resolve",[2907,7685,3047],{"class":3046},[2907,7687,5692],{"class":3050},[2907,7689,7690],{"class":3057}," message",[2907,7692,3061],{"class":3050},[2907,7694,3585],{"class":3050},[2907,7696,7697],{"class":2917},"Hello, Nuxt!",[2907,7699,3411],{"class":3050},[2907,7701,3438],{"class":3050},[2907,7703,3812],{"class":3046},[2907,7705,7706],{"class":2909,"line":3067},[2907,7707,3445],{"emptyLinePlaceholder":1196},[2907,7709,7710,7712,7714,7717,7719],{"class":2909,"line":3082},[2907,7711,7335],{"class":3383},[2907,7713,5596],{"class":3383},[2907,7715,7716],{"class":3042}," refreshData",[2907,7718,5486],{"class":3050},[2907,7720,3064],{"class":3050},[2907,7722,7723,7726,7729,7731,7733,7736,7738,7740,7742],{"class":2909,"line":3088},[2907,7724,7725],{"class":3035},"  await",[2907,7727,7728],{"class":3042}," refresh",[2907,7730,3047],{"class":3057},[2907,7732,5692],{"class":3050},[2907,7734,7735],{"class":3057}," dedupe",[2907,7737,3061],{"class":3050},[2907,7739,4346],{"class":3434},[2907,7741,3438],{"class":3050},[2907,7743,3094],{"class":3057},[2907,7745,7746],{"class":2909,"line":3448},[2907,7747,5735],{"class":3050},[3215,7749,3318],{"id":7750},"reasons-for-change-11",[2877,7752,7753],{},"These aliases were removed, for greater clarity.",[2877,7755,7756,7757,7759,7760,7762,7763,3015],{},"The issue came up when adding ",[2889,7758,7603],{}," as an option to ",[2889,7761,515],{},", and we removed the boolean values as they ended up being ",[5109,7764,7765],{},"opposites",[2877,7767,7768,7771,7772,7778,7779,7782,7783,7785,7786,7789,7790,7795],{},[2889,7769,7770],{},"refresh({ dedupe: false })"," meant ",[3001,7773,7774,7775,7777],{},"do not ",[5109,7776,7631],{}," existing requests in favour of this new one",". But passing ",[2889,7780,7781],{},"dedupe: true"," within the options of ",[2889,7784,515],{}," means ",[3001,7787,7788],{},"do not make any new requests if there is an existing pending request."," (See ",[2881,7791,7794],{"href":7792,"rel":7793},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F24564#pullrequestreview-1764584361",[2885],"PR",".)",[3215,7797,3339],{"id":7798},"migration-steps-15",[2877,7800,6233],{},[2897,7802,7804],{"className":4251,"code":7803,"language":4253,"meta":2903,"style":2903},"  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",[2889,7805,7806,7811,7815,7820,7827,7834,7838,7845,7852],{"__ignoreMap":2903},[2907,7807,7808],{"class":2909,"line":2910},[2907,7809,7810],{"class":3046},"  const { refresh } = await useAsyncData(async () => ({ message: 'Hello, Nuxt 3!' }))\n",[2907,7812,7813],{"class":2909,"line":3054},[2907,7814,6248],{"class":3046},[2907,7816,7817],{"class":2909,"line":3067},[2907,7818,7819],{"class":3046},"  async function refreshData () {\n",[2907,7821,7822,7824],{"class":2909,"line":3082},[2907,7823,4260],{"class":3050},[2907,7825,7826],{"class":3057},"   await refresh({ dedupe: true })\n",[2907,7828,7829,7831],{"class":2909,"line":3088},[2907,7830,4268],{"class":3050},[2907,7832,7833],{"class":2917},"   await refresh({ dedupe: 'cancel' })\n",[2907,7835,7836],{"class":2909,"line":3448},[2907,7837,3445],{"emptyLinePlaceholder":1196},[2907,7839,7840,7842],{"class":2909,"line":3492},[2907,7841,4260],{"class":3050},[2907,7843,7844],{"class":3057},"   await refresh({ dedupe: false })\n",[2907,7846,7847,7849],{"class":2909,"line":3508},[2907,7848,4268],{"class":3050},[2907,7850,7851],{"class":2917},"   await refresh({ dedupe: 'defer' })\n",[2907,7853,7854],{"class":2909,"line":3536},[2907,7855,3539],{"class":3046},[3236,7857,7858],{},[2877,7859,7589,7860],{},[2889,7861,7862],{},"npx codemod@latest nuxt\u002F4\u002Fdeprecated-dedupe-value",[2872,7864,7866,7867,7608,7869,3270,7871],{"id":7865},"respect-defaults-when-clearing-data-in-useasyncdata-and-usefetch","Respect defaults when clearing ",[2889,7868,5369],{},[2889,7870,515],{},[2889,7872,527],{},[2877,7874,3209,7875,4167],{},[3001,7876,3212],{},[3215,7878,3218],{"id":7879},"what-changed-15",[2877,7881,7882,7883,7885,7886,7888,7889,3291,7892,7894],{},"If you provide a custom ",[2889,7884,5391],{}," value for ",[2889,7887,515],{},", this will now be used when calling ",[2889,7890,7891],{},"clear",[2889,7893,650],{}," and it will be reset to its default value rather than simply unset.",[3215,7896,3318],{"id":7897},"reasons-for-change-12",[2877,7899,7900,7901,7903,7904,7906],{},"Often users set an appropriately empty value, such as an empty array, to avoid the need to check for ",[2889,7902,7554],{},"\u002F",[2889,7905,3152],{}," when iterating over it. This should be respected when resetting\u002Fclearing the data.",[2872,7908,7866,7910],{"id":7909},"respect-defaults-when-clearing-usestate",[2889,7911,619],{},[2877,7913,3209,7914,4167],{},[3001,7915,3212],{},[3215,7917,3218],{"id":7918},"what-changed-16",[2877,7920,4372,7921,3351,7923,7925,7926,7929,7930,7932,7933,7935,7936,7938,7939,7941],{},[2889,7922,4214],{},[2889,7924,654],{}," will reset state to its initial value (provided by the ",[2889,7927,7928],{},"init"," function of ",[2889,7931,619],{},") instead of setting it to ",[2889,7934,3152],{},". This aligns ",[2889,7937,654],{}," behavior with ",[2889,7940,650],{},", which already resets to defaults.",[3215,7943,3318],{"id":7944},"reasons-for-change-13",[2877,7946,7947,7948,7950,7951,7953,7954,7956,7957,7959],{},"When ",[2889,7949,654],{}," sets state to ",[2889,7952,3152],{},", composables that depend on that state can crash because they expect the state to always have a valid shape (e.g., accessing properties on ",[2889,7955,3152],{},"). Resetting to the ",[2889,7958,7928],{}," value ensures state always has a usable default.",[3215,7961,3339],{"id":7962},"migration-steps-16",[2877,7964,7965,7966,7968,7969,7971,7972,3061],{},"If you rely on ",[2889,7967,654],{}," setting state to ",[2889,7970,3152],{},", you can explicitly pass ",[2889,7973,7974],{},"{ reset: false }",[2897,7976,7978],{"className":4251,"code":7977,"language":4253,"meta":2903,"style":2903},"- clearNuxtState('myKey')\n+ clearNuxtState('myKey', { reset: false })\n",[2889,7979,7980,7987],{"__ignoreMap":2903},[2907,7981,7982,7984],{"class":2909,"line":2910},[2907,7983,4260],{"class":3050},[2907,7985,7986],{"class":3057}," clearNuxtState('myKey')\n",[2907,7988,7989,7991],{"class":2909,"line":3054},[2907,7990,4268],{"class":3050},[2907,7992,7993],{"class":2917}," clearNuxtState('myKey', { reset: false })\n",[2877,7995,7996],{},"Alternatively, you can revert to the previous behavior with:",[2897,7998,8000],{"className":3025,"code":7999,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    defaults: {\n      useState: {\n        resetOnClear: false,\n      },\n    },\n  },\n})\n",[2889,8001,8002,8014,8022,8031,8040,8051,8056,8060,8064],{"__ignoreMap":2903},[2907,8003,8004,8006,8008,8010,8012],{"class":2909,"line":2910},[2907,8005,3036],{"class":3035},[2907,8007,3039],{"class":3035},[2907,8009,3043],{"class":3042},[2907,8011,3047],{"class":3046},[2907,8013,3051],{"class":3050},[2907,8015,8016,8018,8020],{"class":2909,"line":3054},[2907,8017,4332],{"class":3057},[2907,8019,3061],{"class":3050},[2907,8021,3064],{"class":3050},[2907,8023,8024,8027,8029],{"class":2909,"line":3067},[2907,8025,8026],{"class":3057},"    defaults",[2907,8028,3061],{"class":3050},[2907,8030,3064],{"class":3050},[2907,8032,8033,8036,8038],{"class":2909,"line":3082},[2907,8034,8035],{"class":3057},"      useState",[2907,8037,3061],{"class":3050},[2907,8039,3064],{"class":3050},[2907,8041,8042,8045,8047,8049],{"class":2909,"line":3088},[2907,8043,8044],{"class":3057},"        resetOnClear",[2907,8046,3061],{"class":3050},[2907,8048,3435],{"class":3434},[2907,8050,3079],{"class":3050},[2907,8052,8053],{"class":2909,"line":3448},[2907,8054,8055],{"class":3050},"      },\n",[2907,8057,8058],{"class":2909,"line":3492},[2907,8059,5725],{"class":3050},[2907,8061,8062],{"class":2909,"line":3508},[2907,8063,3085],{"class":3050},[2907,8065,8066,8068],{"class":2909,"line":3536},[2907,8067,3091],{"class":3050},[2907,8069,3094],{"class":3046},[2877,8071,8072,8073,3061],{},"You can also opt in to this behavior today without setting ",[2889,8074,4214],{},[2897,8076,8078],{"className":3025,"code":8077,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    defaults: {\n      useState: {\n        resetOnClear: true,\n      },\n    },\n  },\n})\n",[2889,8079,8080,8092,8100,8108,8116,8126,8130,8134,8138],{"__ignoreMap":2903},[2907,8081,8082,8084,8086,8088,8090],{"class":2909,"line":2910},[2907,8083,3036],{"class":3035},[2907,8085,3039],{"class":3035},[2907,8087,3043],{"class":3042},[2907,8089,3047],{"class":3046},[2907,8091,3051],{"class":3050},[2907,8093,8094,8096,8098],{"class":2909,"line":3054},[2907,8095,4332],{"class":3057},[2907,8097,3061],{"class":3050},[2907,8099,3064],{"class":3050},[2907,8101,8102,8104,8106],{"class":2909,"line":3067},[2907,8103,8026],{"class":3057},[2907,8105,3061],{"class":3050},[2907,8107,3064],{"class":3050},[2907,8109,8110,8112,8114],{"class":2909,"line":3082},[2907,8111,8035],{"class":3057},[2907,8113,3061],{"class":3050},[2907,8115,3064],{"class":3050},[2907,8117,8118,8120,8122,8124],{"class":2909,"line":3088},[2907,8119,8044],{"class":3057},[2907,8121,3061],{"class":3050},[2907,8123,4346],{"class":3434},[2907,8125,3079],{"class":3050},[2907,8127,8128],{"class":2909,"line":3448},[2907,8129,8055],{"class":3050},[2907,8131,8132],{"class":2909,"line":3492},[2907,8133,5725],{"class":3050},[2907,8135,8136],{"class":2909,"line":3508},[2907,8137,3085],{"class":3050},[2907,8139,8140,8142],{"class":2909,"line":3536},[2907,8141,3091],{"class":3050},[2907,8143,3094],{"class":3046},[2872,8145,8147,8148,8151,8152,3270,8154],{"id":8146},"alignment-of-pending-value-in-useasyncdata-and-usefetch","Alignment of ",[2889,8149,8150],{},"pending"," value in ",[2889,8153,515],{},[2889,8155,527],{},[2877,8157,3209,8158,3213],{},[3001,8159,3212],{},[2877,8161,8162,8163,8165,8166,3351,8168,3351,8170,3270,8172,8174,8175,8177,8178,8180],{},"The ",[2889,8164,8150],{}," object returned from ",[2889,8167,515],{},[2889,8169,527],{},[2889,8171,543],{},[2889,8173,547],{}," is now a computed property that is ",[2889,8176,7634],{}," only when ",[2889,8179,5375],{}," is also pending.",[3215,8182,3218],{"id":8183},"what-changed-17",[2877,8185,8186,8187,8190,8191,8193,8194,8196,8197,8199,8200,8202],{},"Now, when ",[2889,8188,8189],{},"immediate: false"," is passed, ",[2889,8192,8150],{}," will be ",[2889,8195,7641],{}," until the first request is made. This is a change from the previous behavior, where ",[2889,8198,8150],{}," was always ",[2889,8201,7634],{}," until the first request was made.",[3215,8204,3318],{"id":8205},"reasons-for-change-14",[2877,8207,8208,8209,8211,8212,8214,8215,8217],{},"This aligns the meaning of ",[2889,8210,8150],{}," with the ",[2889,8213,5375],{}," property, which is also ",[2889,8216,8150],{}," when the request is in progress.",[3215,8219,3339],{"id":8220},"migration-steps-17",[2877,8222,8223,8224,8226,8227,8229,8230,8232],{},"If you rely on the ",[2889,8225,8150],{}," property, ensure that your logic accounts for the new behavior where ",[2889,8228,8150],{}," will only be ",[2889,8231,7634],{}," when the status is also pending.",[2897,8234,8236],{"className":4251,"code":8235,"language":4253,"meta":2903,"style":2903},"  \u003Ctemplate>\n-   \u003Cdiv v-if=\"!pending\">\n+   \u003Cdiv v-if=\"status === 'success'\">\n      \u003Cp>Data: {{ data }}\u003C\u002Fp>\n    \u003C\u002Fdiv>\n    \u003Cdiv v-else>\n      \u003Cp>Loading...\u003C\u002Fp>\n    \u003C\u002Fdiv>\n  \u003C\u002Ftemplate>\n  \u003Cscript setup lang=\"ts\">\n  const { data, pending, execute, status } = await useAsyncData(() => fetch('\u002Fapi\u002Fdata'), {\n    immediate: false\n  })\n  onMounted(() => execute())\n  \u003C\u002Fscript>\n",[2889,8237,8238,8243,8250,8257,8262,8267,8272,8277,8281,8286,8290,8295,8300,8304,8309],{"__ignoreMap":2903},[2907,8239,8240],{"class":2909,"line":2910},[2907,8241,8242],{"class":3046},"  \u003Ctemplate>\n",[2907,8244,8245,8247],{"class":2909,"line":3054},[2907,8246,4260],{"class":3050},[2907,8248,8249],{"class":3057},"   \u003Cdiv v-if=\"!pending\">\n",[2907,8251,8252,8254],{"class":2909,"line":3067},[2907,8253,4268],{"class":3050},[2907,8255,8256],{"class":2917},"   \u003Cdiv v-if=\"status === 'success'\">\n",[2907,8258,8259],{"class":2909,"line":3082},[2907,8260,8261],{"class":3046},"      \u003Cp>Data: {{ data }}\u003C\u002Fp>\n",[2907,8263,8264],{"class":2909,"line":3088},[2907,8265,8266],{"class":3046},"    \u003C\u002Fdiv>\n",[2907,8268,8269],{"class":2909,"line":3448},[2907,8270,8271],{"class":3046},"    \u003Cdiv v-else>\n",[2907,8273,8274],{"class":2909,"line":3492},[2907,8275,8276],{"class":3046},"      \u003Cp>Loading...\u003C\u002Fp>\n",[2907,8278,8279],{"class":2909,"line":3508},[2907,8280,8266],{"class":3046},[2907,8282,8283],{"class":2909,"line":3536},[2907,8284,8285],{"class":3046},"  \u003C\u002Ftemplate>\n",[2907,8287,8288],{"class":2909,"line":3542},[2907,8289,6944],{"class":3046},[2907,8291,8292],{"class":2909,"line":3549},[2907,8293,8294],{"class":3046},"  const { data, pending, execute, status } = await useAsyncData(() => fetch('\u002Fapi\u002Fdata'), {\n",[2907,8296,8297],{"class":2909,"line":3554},[2907,8298,8299],{"class":3046},"    immediate: false\n",[2907,8301,8302],{"class":2909,"line":3560},[2907,8303,6968],{"class":3046},[2907,8305,8306],{"class":2909,"line":3577},[2907,8307,8308],{"class":3046},"  onMounted(() => execute())\n",[2907,8310,8311],{"class":2909,"line":3595},[2907,8312,6991],{"class":3046},[2877,8314,8315],{},"Alternatively, you can temporarily revert to the previous behavior with:",[2897,8317,8319],{"className":3025,"code":8318,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    pendingWhenIdle: true,\n  },\n})\n",[2889,8320,8321,8333,8341,8352,8356],{"__ignoreMap":2903},[2907,8322,8323,8325,8327,8329,8331],{"class":2909,"line":2910},[2907,8324,3036],{"class":3035},[2907,8326,3039],{"class":3035},[2907,8328,3043],{"class":3042},[2907,8330,3047],{"class":3046},[2907,8332,3051],{"class":3050},[2907,8334,8335,8337,8339],{"class":2909,"line":3054},[2907,8336,4332],{"class":3057},[2907,8338,3061],{"class":3050},[2907,8340,3064],{"class":3050},[2907,8342,8343,8346,8348,8350],{"class":2909,"line":3067},[2907,8344,8345],{"class":3057},"    pendingWhenIdle",[2907,8347,3061],{"class":3050},[2907,8349,4346],{"class":3434},[2907,8351,3079],{"class":3050},[2907,8353,8354],{"class":2909,"line":3082},[2907,8355,3085],{"class":3050},[2907,8357,8358,8360],{"class":2909,"line":3088},[2907,8359,3091],{"class":3050},[2907,8361,3094],{"class":3046},[2872,8363,8365,8366,3270,8368],{"id":8364},"key-change-behavior-in-useasyncdata-and-usefetch","Key Change Behavior in ",[2889,8367,515],{},[2889,8369,527],{},[2877,8371,3209,8372,3213],{},[3001,8373,3212],{},[3215,8375,3218],{"id":8376},"what-changed-18",[2877,8378,8379,8380,3291,8382,8384,8385,8387,8388,8390],{},"When using reactive keys in ",[2889,8381,515],{},[2889,8383,527],{},", Nuxt automatically refetches data when the key changes. When ",[2889,8386,8189],{}," is set, ",[2889,8389,515],{}," will only fetch data when the key changes if the data has already been fetched once.",[2877,8392,8393,8394,8396],{},"Previously, ",[2889,8395,527],{}," had slightly different behavior. It would always fetch data when the key changed.",[2877,8398,8399,8400,3270,8402,8404],{},"Now, ",[2889,8401,527],{},[2889,8403,515],{}," behave consistently - by only fetch data when the key changes if the data has already been fetched once.",[3215,8406,3318],{"id":8407},"reasons-for-change-15",[2877,8409,8410,8411,3270,8413,8415,8416,8418,8419,3291,8421,8424,8425,3291,8427,3015],{},"This ensures consistent behavior between ",[2889,8412,515],{},[2889,8414,527],{},", and prevents unexpected fetches. If you have set ",[2889,8417,8189],{},", then you must call ",[2889,8420,7607],{},[2889,8422,8423],{},"execute"," or data will never be fetched in ",[2889,8426,527],{},[2889,8428,515],{},[3215,8430,3339],{"id":8431},"migration-steps-18",[2877,8433,8434,8435,8437],{},"This change should generally improve the expected behavior, but if you were expecting changing the key or options of a non-immediate ",[2889,8436,527],{},", you now will need to trigger it manually the first time.",[2897,8439,8441],{"className":4251,"code":8440,"language":4253,"meta":2903,"style":2903},"  const id = ref('123')\n  const { data, execute } = await useFetch('\u002Fapi\u002Ftest', {\n    query: { id },\n    immediate: false\n  )\n+ watch(id, () => execute(), { once: true })\n",[2889,8442,8443,8448,8453,8458,8462,8466],{"__ignoreMap":2903},[2907,8444,8445],{"class":2909,"line":2910},[2907,8446,8447],{"class":3046},"  const id = ref('123')\n",[2907,8449,8450],{"class":2909,"line":3054},[2907,8451,8452],{"class":3046},"  const { data, execute } = await useFetch('\u002Fapi\u002Ftest', {\n",[2907,8454,8455],{"class":2909,"line":3067},[2907,8456,8457],{"class":3046},"    query: { id },\n",[2907,8459,8460],{"class":2909,"line":3082},[2907,8461,8299],{"class":3046},[2907,8463,8464],{"class":2909,"line":3088},[2907,8465,5730],{"class":3046},[2907,8467,8468,8470],{"class":2909,"line":3448},[2907,8469,4268],{"class":3050},[2907,8471,8472],{"class":2917}," watch(id, () => execute(), { once: true })\n",[2877,8474,8475],{},"To opt out of this behavior:",[2897,8477,8479],{"className":3025,"code":8478,"language":3027,"meta":2903,"style":2903},"\u002F\u002F Or globally in your Nuxt config\nexport default defineNuxtConfig({\n  experimental: {\n    alwaysRunFetchOnKeyChange: true,\n  },\n})\n",[2889,8480,8481,8486,8498,8506,8517,8521],{"__ignoreMap":2903},[2907,8482,8483],{"class":2909,"line":2910},[2907,8484,8485],{"class":3365},"\u002F\u002F Or globally in your Nuxt config\n",[2907,8487,8488,8490,8492,8494,8496],{"class":2909,"line":3054},[2907,8489,3036],{"class":3035},[2907,8491,3039],{"class":3035},[2907,8493,3043],{"class":3042},[2907,8495,3047],{"class":3046},[2907,8497,3051],{"class":3050},[2907,8499,8500,8502,8504],{"class":2909,"line":3067},[2907,8501,4332],{"class":3057},[2907,8503,3061],{"class":3050},[2907,8505,3064],{"class":3050},[2907,8507,8508,8511,8513,8515],{"class":2909,"line":3082},[2907,8509,8510],{"class":3057},"    alwaysRunFetchOnKeyChange",[2907,8512,3061],{"class":3050},[2907,8514,4346],{"class":3434},[2907,8516,3079],{"class":3050},[2907,8518,8519],{"class":2909,"line":3088},[2907,8520,3085],{"class":3050},[2907,8522,8523,8525],{"class":2909,"line":3448},[2907,8524,3091],{"class":3050},[2907,8526,3094],{"class":3046},[2872,8528,8530,8531,3270,8533],{"id":8529},"shallow-data-reactivity-in-useasyncdata-and-usefetch","Shallow Data Reactivity in ",[2889,8532,515],{},[2889,8534,527],{},[2877,8536,3209,8537,4167],{},[3001,8538,3212],{},[2877,8540,8162,8541,8165,8543,3351,8545,3351,8547,3270,8549,8551,8552,8555,8556,3015],{},[2889,8542,5369],{},[2889,8544,515],{},[2889,8546,527],{},[2889,8548,543],{},[2889,8550,547],{}," is now a ",[2889,8553,8554],{},"shallowRef"," rather than a ",[2889,8557,8558],{},"ref",[3215,8560,3218],{"id":8561},"what-changed-19",[2877,8563,8564,8565,8567,8568,8570],{},"When new data is fetched, anything depending on ",[2889,8566,5369],{}," will still be reactive because the entire object is replaced. But if your code changes a property ",[5109,8569,6889],{}," that data structure, this will not trigger any reactivity in your app.",[3215,8572,3318],{"id":8573},"reasons-for-change-16",[2877,8575,8576,8577,8580,8581,8583],{},"This brings a ",[3001,8578,8579],{},"significant"," performance improvement for deeply nested objects and arrays because Vue does not need to watch every single property\u002Farray for modification. In most cases, ",[2889,8582,5369],{}," should also be immutable.",[3215,8585,3339],{"id":8586},"migration-steps-19",[2877,8588,8589],{},"In most cases, no migration steps are required, but if you rely on the reactivity of the data object then you have two options:",[3257,8591,8592,8614],{},[3109,8593,8594,8595],{},"You can granularly opt in to deep reactivity on a per-composable basis:\n",[2897,8596,8598],{"className":4251,"code":8597,"language":4253,"meta":2903,"style":2903},"- const { data } = useFetch('\u002Fapi\u002Ftest')\n+ const { data } = useFetch('\u002Fapi\u002Ftest', { deep: true })\n",[2889,8599,8600,8607],{"__ignoreMap":2903},[2907,8601,8602,8604],{"class":2909,"line":2910},[2907,8603,4260],{"class":3050},[2907,8605,8606],{"class":3057}," const { data } = useFetch('\u002Fapi\u002Ftest')\n",[2907,8608,8609,8611],{"class":2909,"line":3054},[2907,8610,4268],{"class":3050},[2907,8612,8613],{"class":2917}," const { data } = useFetch('\u002Fapi\u002Ftest', { deep: true })\n",[3109,8615,8616,8617],{},"You can change the default behavior on a project-wide basis (not recommended):\n",[2897,8618,8620],{"className":3025,"code":8619,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    defaults: {\n      useAsyncData: {\n        deep: true,\n      },\n    },\n  },\n})\n",[2889,8621,8622,8634,8642,8650,8659,8670,8674,8678,8682],{"__ignoreMap":2903},[2907,8623,8624,8626,8628,8630,8632],{"class":2909,"line":2910},[2907,8625,3036],{"class":3035},[2907,8627,3039],{"class":3035},[2907,8629,3043],{"class":3042},[2907,8631,3047],{"class":3046},[2907,8633,3051],{"class":3050},[2907,8635,8636,8638,8640],{"class":2909,"line":3054},[2907,8637,4332],{"class":3057},[2907,8639,3061],{"class":3050},[2907,8641,3064],{"class":3050},[2907,8643,8644,8646,8648],{"class":2909,"line":3067},[2907,8645,8026],{"class":3057},[2907,8647,3061],{"class":3050},[2907,8649,3064],{"class":3050},[2907,8651,8652,8655,8657],{"class":2909,"line":3082},[2907,8653,8654],{"class":3057},"      useAsyncData",[2907,8656,3061],{"class":3050},[2907,8658,3064],{"class":3050},[2907,8660,8661,8664,8666,8668],{"class":2909,"line":3088},[2907,8662,8663],{"class":3057},"        deep",[2907,8665,3061],{"class":3050},[2907,8667,4346],{"class":3434},[2907,8669,3079],{"class":3050},[2907,8671,8672],{"class":2909,"line":3448},[2907,8673,8055],{"class":3050},[2907,8675,8676],{"class":2909,"line":3492},[2907,8677,5725],{"class":3050},[2907,8679,8680],{"class":2909,"line":3508},[2907,8681,3085],{"class":3050},[2907,8683,8684,8686],{"class":2909,"line":3536},[2907,8685,3091],{"class":3050},[2907,8687,3094],{"class":3046},[3236,8689,8690],{},[2877,8691,8692,8693],{},"If you need to, you can automate this step by running ",[2889,8694,8695],{},"npx codemod@latest nuxt\u002F4\u002Fshallow-function-reactivity",[2872,8697,8699,8700],{"id":8698},"absolute-watch-paths-in-builderwatch","Absolute Watch Paths in ",[2889,8701,8702],{},"builder:watch",[2877,8704,3209,8705,4167],{},[3001,8706,3212],{},[3215,8708,3218],{"id":8709},"what-changed-20",[2877,8711,8712,8713,8715,8716,3015],{},"The Nuxt ",[2889,8714,8702],{}," hook now emits a path which is absolute rather than relative to your project ",[2889,8717,4807],{},[3215,8719,3318],{"id":8720},"reasons-for-change-17",[2877,8722,8723,8724,8726],{},"This allows us to support watching paths which are outside your ",[2889,8725,4807],{},", and offers better support for layers and other more complex patterns.",[3215,8728,3339],{"id":8729},"migration-steps-20",[2877,8731,8732,8733,3015],{},"We have already proactively migrated the public Nuxt modules which we are aware use this hook. See ",[2881,8734,8737],{"href":8735,"rel":8736},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fissues\u002F25339",[2885],"issue #25339",[2877,8739,8740,8741,8743],{},"However, if you are a module author using the ",[2889,8742,8702],{}," hook and wishing to remain backwards\u002Fforwards compatible, you can use the following code to ensure that your code works the same in both Nuxt v3 and Nuxt v4:",[2897,8745,8747],{"className":4251,"code":8746,"language":4253,"meta":2903,"style":2903},"+ import { relative, resolve } from 'node:fs'\n  \u002F\u002F ...\n  nuxt.hook('builder:watch', async (event, path) => {\n+   path = relative(nuxt.options.srcDir, resolve(nuxt.options.srcDir, path))\n    \u002F\u002F ...\n  })\n",[2889,8748,8749,8756,8761,8766,8773,8778],{"__ignoreMap":2903},[2907,8750,8751,8753],{"class":2909,"line":2910},[2907,8752,4268],{"class":3050},[2907,8754,8755],{"class":2917}," import { relative, resolve } from 'node:fs'\n",[2907,8757,8758],{"class":2909,"line":3054},[2907,8759,8760],{"class":3046},"  \u002F\u002F ...\n",[2907,8762,8763],{"class":2909,"line":3067},[2907,8764,8765],{"class":3046},"  nuxt.hook('builder:watch', async (event, path) => {\n",[2907,8767,8768,8770],{"class":2909,"line":3082},[2907,8769,4268],{"class":3050},[2907,8771,8772],{"class":2917},"   path = relative(nuxt.options.srcDir, resolve(nuxt.options.srcDir, path))\n",[2907,8774,8775],{"class":2909,"line":3088},[2907,8776,8777],{"class":3046},"    \u002F\u002F ...\n",[2907,8779,8780],{"class":2909,"line":3448},[2907,8781,6968],{"class":3046},[3236,8783,8784],{},[2877,8785,7589,8786],{},[2889,8787,8788],{},"npx codemod@latest nuxt\u002F4\u002Fabsolute-watch-path",[2872,8790,8792,8793,8796],{"id":8791},"removal-of-window__nuxt__-object","Removal of ",[2889,8794,8795],{},"window.__NUXT__"," object",[3215,8798,3218],{"id":8799},"what-changed-21",[2877,8801,8802,8803,8805],{},"We are removing the global ",[2889,8804,8795],{}," object after the app finishes hydration.",[3215,8807,3318],{"id":8808},"reasons-for-change-18",[2877,8810,8811,8812,8817,8818,3015],{},"This opens the way to multi-app patterns (",[2881,8813,8816],{"href":8814,"rel":8815},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fissues\u002F21635",[2885],"#21635",") and enables us to focus on a single way to access Nuxt app data - ",[2889,8819,8820],{},"useNuxtApp()",[3215,8822,3339],{"id":8823},"migration-steps-21",[2877,8825,8826,8827,3061],{},"The data is still available, but can be accessed with ",[2889,8828,8829],{},"useNuxtApp().payload",[2897,8831,8833],{"className":4251,"code":8832,"language":4253,"meta":2903,"style":2903},"- console.log(window.__NUXT__)\n+ console.log(useNuxtApp().payload)\n",[2889,8834,8835,8842],{"__ignoreMap":2903},[2907,8836,8837,8839],{"class":2909,"line":2910},[2907,8838,4260],{"class":3050},[2907,8840,8841],{"class":3057}," console.log(window.__NUXT__)\n",[2907,8843,8844,8846],{"class":2909,"line":3054},[2907,8845,4268],{"class":3050},[2907,8847,8848],{"class":2917}," console.log(useNuxtApp().payload)\n",[2872,8850,8852],{"id":8851},"directory-index-scanning","Directory index scanning",[2877,8854,3209,8855,3213],{},[3001,8856,3212],{},[3215,8858,3218],{"id":8859},"what-changed-22",[2877,8861,8862,8863,8865,8866,8869],{},"Child folders in your ",[2889,8864,5146],{}," folder are also scanned for ",[2889,8867,8868],{},"index"," files and these are now also registered as middleware in your project.",[3215,8871,3318],{"id":8872},"reasons-for-change-19",[2877,8874,8875,8876,3270,8878,3015],{},"Nuxt scans a number of folders automatically, including ",[2889,8877,5146],{},[2889,8879,5151],{},[2877,8881,8862,8882,8884,8885,8887],{},[2889,8883,5151],{}," folder are scanned for ",[2889,8886,8868],{}," files and we wanted to make this behavior consistent between scanned directories.",[3215,8889,3339],{"id":8890},"migration-steps-22",[2877,8892,8893],{},"Probably no migration is necessary but if you wish to revert to previous behavior you can add a hook to filter out these middleware:",[2897,8895,8897],{"className":3025,"code":8896,"language":3027,"meta":2903,"style":2903},"export default defineNuxtConfig({\n  hooks: {\n    'app:resolve' (app) {\n      app.middleware = app.middleware.filter(mw => !\u002F\\\u002Findex\\.[^\u002F]+$\u002F.test(mw.path))\n    },\n  },\n})\n",[2889,8898,8899,8911,8920,8938,9009,9013,9017],{"__ignoreMap":2903},[2907,8900,8901,8903,8905,8907,8909],{"class":2909,"line":2910},[2907,8902,3036],{"class":3035},[2907,8904,3039],{"class":3035},[2907,8906,3043],{"class":3042},[2907,8908,3047],{"class":3046},[2907,8910,3051],{"class":3050},[2907,8912,8913,8916,8918],{"class":2909,"line":3054},[2907,8914,8915],{"class":3057},"  hooks",[2907,8917,3061],{"class":3050},[2907,8919,3064],{"class":3050},[2907,8921,8922,8925,8928,8930,8932,8934,8936],{"class":2909,"line":3067},[2907,8923,8924],{"class":3050},"    '",[2907,8926,8927],{"class":2917},"app:resolve",[2907,8929,3411],{"class":3050},[2907,8931,3473],{"class":3050},[2907,8933,1193],{"class":3377},[2907,8935,3380],{"class":3050},[2907,8937,3064],{"class":3050},[2907,8939,8940,8943,8945,8947,8949,8952,8954,8956,8958,8961,8963,8966,8968,8971,8973,8976,8978,8981,8984,8986,8989,8992,8994,8996,8999,9001,9003,9005,9007],{"class":2909,"line":3082},[2907,8941,8942],{"class":3046},"      app",[2907,8944,3015],{"class":3050},[2907,8946,157],{"class":3046},[2907,8948,5469],{"class":3050},[2907,8950,8951],{"class":3046}," app",[2907,8953,3015],{"class":3050},[2907,8955,157],{"class":3046},[2907,8957,3015],{"class":3050},[2907,8959,8960],{"class":3042},"filter",[2907,8962,3047],{"class":3057},[2907,8964,8965],{"class":3377},"mw",[2907,8967,3384],{"class":3383},[2907,8969,8970],{"class":3050}," !",[2907,8972,7903],{"class":3050},[2907,8974,8975],{"class":3046},"\\\u002F",[2907,8977,8868],{"class":2917},[2907,8979,8980],{"class":3046},"\\.",[2907,8982,8983],{"class":3050},"[^",[2907,8985,7903],{"class":2917},[2907,8987,8988],{"class":3050},"]+",[2907,8990,8991],{"class":3035},"$",[2907,8993,7903],{"class":3050},[2907,8995,3015],{"class":3050},[2907,8997,8998],{"class":3042},"test",[2907,9000,3047],{"class":3057},[2907,9002,8965],{"class":3046},[2907,9004,3015],{"class":3050},[2907,9006,6206],{"class":3046},[2907,9008,3812],{"class":3057},[2907,9010,9011],{"class":2909,"line":3088},[2907,9012,5725],{"class":3050},[2907,9014,9015],{"class":2909,"line":3448},[2907,9016,3085],{"class":3050},[2907,9018,9019,9021],{"class":2909,"line":3492},[2907,9020,3091],{"class":3050},[2907,9022,3094],{"class":3046},[2872,9024,9026],{"id":9025},"template-compilation-changes","Template Compilation Changes",[2877,9028,3209,9029,4167],{},[3001,9030,3212],{},[3215,9032,3218],{"id":9033},"what-changed-23",[2877,9035,9036,9037,9040,9041,9044],{},"Previously, Nuxt used ",[2889,9038,9039],{},"lodash\u002Ftemplate"," to compile templates located on the file system using the ",[2889,9042,9043],{},".ejs"," file format\u002Fsyntax.",[2877,9046,9047,9048,3351,9051,3351,9054,9057],{},"In addition, we provided some template utilities (",[2889,9049,9050],{},"serialize",[2889,9052,9053],{},"importName",[2889,9055,9056],{},"importSources",") which could be used for code-generation within these templates, which are now being removed.",[3215,9059,3318],{"id":9060},"reasons-for-change-20",[2877,9062,9063,9064,9067],{},"In Nuxt v3 we moved to a 'virtual' syntax with a ",[2889,9065,9066],{},"getContents()"," function which is much more flexible and performant.",[2877,9069,9070,9071,9073,9074,9077],{},"In addition, ",[2889,9072,9039],{}," 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, ",[2889,9075,9076],{},"lodash"," is a hefty dependency and is unused by most projects.",[2877,9079,9080,9081,9086],{},"Finally, providing code serialization functions directly within Nuxt is not ideal. Instead, we maintain projects like ",[2881,9082,9085],{"href":9083,"rel":9084},"https:\u002F\u002Fgithub.com\u002Funjs\u002Fknitwork",[2885],"unjs\u002Fknitwork"," which can be dependencies of your project, and where security issues can be reported\u002Fresolved directly without requiring an upgrade of Nuxt itself.",[3215,9088,3339],{"id":9089},"migration-steps-23",[2877,9091,9092],{},"We have raised PRs to update modules using EJS syntax, but if you need to do this yourself, you have three backwards\u002Fforwards-compatible alternatives:",[3106,9094,9095,9100,9107],{},[3109,9096,9097,9098,3015],{},"Moving your string interpolation logic directly into ",[2889,9099,9066],{},[3109,9101,9102,9103,3015],{},"Using a custom function to handle the replacement, such as in ",[2881,9104,9105],{"href":9105,"rel":9106},"https:\u002F\u002Fgithub.com\u002Fnuxt-modules\u002Fcolor-mode\u002Fpull\u002F240",[2885],[3109,9108,9109,9110,9113,9114,9117],{},"Use ",[2889,9111,9112],{},"es-toolkit\u002Fcompat"," (a drop-in replacement for lodash template), as a dependency of ",[5109,9115,9116],{},"your"," project rather than Nuxt:",[2897,9119,9121],{"className":4251,"code":9120,"language":4253,"meta":2903,"style":2903},"+ import { readFileSync } from 'node:fs'\n+ import { template } from 'es-toolkit\u002Fcompat'\n  \u002F\u002F ...\n  addTemplate({\n    fileName: 'appinsights-vue.js'\n    options: { \u002F* some options *\u002F },\n-   src: resolver.resolve('.\u002Fruntime\u002Fplugin.ejs'),\n+   getContents({ options }) {\n+     const contents = readFileSync(resolver.resolve('.\u002Fruntime\u002Fplugin.ejs'), 'utf-8')\n+     return template(contents)({ options })\n+   },\n  })\n",[2889,9122,9123,9130,9137,9141,9146,9151,9156,9163,9170,9177,9184,9191],{"__ignoreMap":2903},[2907,9124,9125,9127],{"class":2909,"line":2910},[2907,9126,4268],{"class":3050},[2907,9128,9129],{"class":2917}," import { readFileSync } from 'node:fs'\n",[2907,9131,9132,9134],{"class":2909,"line":3054},[2907,9133,4268],{"class":3050},[2907,9135,9136],{"class":2917}," import { template } from 'es-toolkit\u002Fcompat'\n",[2907,9138,9139],{"class":2909,"line":3067},[2907,9140,8760],{"class":3046},[2907,9142,9143],{"class":2909,"line":3082},[2907,9144,9145],{"class":3046},"  addTemplate({\n",[2907,9147,9148],{"class":2909,"line":3088},[2907,9149,9150],{"class":3046},"    fileName: 'appinsights-vue.js'\n",[2907,9152,9153],{"class":2909,"line":3448},[2907,9154,9155],{"class":3046},"    options: { \u002F* some options *\u002F },\n",[2907,9157,9158,9160],{"class":2909,"line":3492},[2907,9159,4260],{"class":3050},[2907,9161,9162],{"class":3057},"   src: resolver.resolve('.\u002Fruntime\u002Fplugin.ejs'),\n",[2907,9164,9165,9167],{"class":2909,"line":3508},[2907,9166,4268],{"class":3050},[2907,9168,9169],{"class":2917},"   getContents({ options }) {\n",[2907,9171,9172,9174],{"class":2909,"line":3536},[2907,9173,4268],{"class":3050},[2907,9175,9176],{"class":2917},"     const contents = readFileSync(resolver.resolve('.\u002Fruntime\u002Fplugin.ejs'), 'utf-8')\n",[2907,9178,9179,9181],{"class":2909,"line":3542},[2907,9180,4268],{"class":3050},[2907,9182,9183],{"class":2917},"     return template(contents)({ options })\n",[2907,9185,9186,9188],{"class":2909,"line":3549},[2907,9187,4268],{"class":3050},[2907,9189,9190],{"class":2917},"   },\n",[2907,9192,9193],{"class":2909,"line":3554},[2907,9194,6968],{"class":3046},[2877,9196,9197,9198,3351,9200,3351,9202,9204,9205,3061],{},"Finally, if you are using the template utilities (",[2889,9199,9050],{},[2889,9201,9053],{},[2889,9203,9056],{},"), you can replace them as follows with utilities from ",[2889,9206,9207],{},"knitwork",[2897,9209,9211],{"className":3025,"code":9210,"language":3027,"meta":2903,"style":2903},"import { genDynamicImport, genImport, genSafeVariableName } from 'knitwork'\n\nconst serialize = (data: any) => JSON.stringify(data, null, 2).replace(\u002F\"\\{(.+)\\}\"(?=,?$)\u002Fgm, r => JSON.parse(r).replace(\u002F^\\{(.*)\\}$\u002F, '$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",[2889,9212,9213,9242,9246,9385,9389,9437,9468,9481,9547,9551,9571,9594,9598,9602],{"__ignoreMap":2903},[2907,9214,9215,9217,9219,9222,9224,9227,9229,9232,9234,9236,9238,9240],{"class":2909,"line":2910},[2907,9216,6527],{"class":3035},[2907,9218,3426],{"class":3050},[2907,9220,9221],{"class":3046}," genDynamicImport",[2907,9223,3470],{"class":3050},[2907,9225,9226],{"class":3046}," genImport",[2907,9228,3470],{"class":3050},[2907,9230,9231],{"class":3046}," genSafeVariableName",[2907,9233,3438],{"class":3050},[2907,9235,6542],{"class":3035},[2907,9237,3585],{"class":3050},[2907,9239,9207],{"class":2917},[2907,9241,3799],{"class":3050},[2907,9243,9244],{"class":2909,"line":3054},[2907,9245,3445],{"emptyLinePlaceholder":1196},[2907,9247,9248,9250,9253,9255,9257,9259,9261,9264,9266,9268,9271,9273,9276,9279,9281,9284,9287,9289,9291,9294,9296,9298,9300,9303,9305,9307,9310,9313,9315,9318,9320,9323,9325,9328,9331,9333,9336,9338,9340,9342,9345,9348,9350,9352,9354,9356,9359,9361,9363,9365,9368,9370,9372,9374,9376,9378,9381,9383],{"class":2909,"line":3067},[2907,9249,5454],{"class":3383},[2907,9251,9252],{"class":3046}," serialize ",[2907,9254,6765],{"class":3050},[2907,9256,3473],{"class":3050},[2907,9258,5369],{"class":3377},[2907,9260,3061],{"class":3050},[2907,9262,9263],{"class":2913}," any",[2907,9265,3380],{"class":3050},[2907,9267,3384],{"class":3383},[2907,9269,9270],{"class":3046}," JSON",[2907,9272,3015],{"class":3050},[2907,9274,9275],{"class":3042},"stringify",[2907,9277,9278],{"class":3046},"(data",[2907,9280,3470],{"class":3050},[2907,9282,9283],{"class":3050}," null,",[2907,9285,9286],{"class":3075}," 2",[2907,9288,3380],{"class":3046},[2907,9290,3015],{"class":3050},[2907,9292,9293],{"class":3042},"replace",[2907,9295,3047],{"class":3046},[2907,9297,7903],{"class":3050},[2907,9299,6768],{"class":2917},[2907,9301,9302],{"class":3046},"\\{",[2907,9304,3047],{"class":3050},[2907,9306,3015],{"class":2917},[2907,9308,9309],{"class":3050},"+)",[2907,9311,9312],{"class":3046},"\\}",[2907,9314,6768],{"class":2917},[2907,9316,9317],{"class":3050},"(?=",[2907,9319,3470],{"class":2917},[2907,9321,9322],{"class":3050},"?",[2907,9324,8991],{"class":3035},[2907,9326,9327],{"class":3050},")\u002F",[2907,9329,9330],{"class":3075},"gm",[2907,9332,3470],{"class":3050},[2907,9334,9335],{"class":3377}," r",[2907,9337,3384],{"class":3383},[2907,9339,9270],{"class":3046},[2907,9341,3015],{"class":3050},[2907,9343,9344],{"class":3042},"parse",[2907,9346,9347],{"class":3046},"(r)",[2907,9349,3015],{"class":3050},[2907,9351,9293],{"class":3042},[2907,9353,3047],{"class":3046},[2907,9355,7903],{"class":3050},[2907,9357,9358],{"class":3035},"^",[2907,9360,9302],{"class":3046},[2907,9362,3047],{"class":3050},[2907,9364,3015],{"class":2917},[2907,9366,9367],{"class":3050},"*)",[2907,9369,9312],{"class":3046},[2907,9371,8991],{"class":3035},[2907,9373,7903],{"class":3050},[2907,9375,3470],{"class":3050},[2907,9377,3585],{"class":3050},[2907,9379,9380],{"class":2917},"$1",[2907,9382,3411],{"class":3050},[2907,9384,3812],{"class":3046},[2907,9386,9387],{"class":2909,"line":3082},[2907,9388,3445],{"emptyLinePlaceholder":1196},[2907,9390,9391,9393,9396,9398,9400,9403,9405,9407,9410,9412,9415,9417,9419,9422,9424,9426,9428,9430,9433,9435],{"class":2909,"line":3088},[2907,9392,5454],{"class":3383},[2907,9394,9395],{"class":3046}," importSources ",[2907,9397,6765],{"class":3050},[2907,9399,3473],{"class":3050},[2907,9401,9402],{"class":3377},"sources",[2907,9404,3061],{"class":3050},[2907,9406,5609],{"class":2913},[2907,9408,9409],{"class":3050}," |",[2907,9411,5609],{"class":2913},[2907,9413,9414],{"class":3046},"[]",[2907,9416,3470],{"class":3050},[2907,9418,3426],{"class":3050},[2907,9420,9421],{"class":3377}," lazy",[2907,9423,5469],{"class":3050},[2907,9425,3435],{"class":3434},[2907,9427,3438],{"class":3050},[2907,9429,5469],{"class":3050},[2907,9431,9432],{"class":3050}," {})",[2907,9434,3384],{"class":3383},[2907,9436,3064],{"class":3050},[2907,9438,9439,9441,9444,9446,9448,9450,9452,9455,9457,9459,9462,9464,9466],{"class":2909,"line":3448},[2907,9440,5618],{"class":3035},[2907,9442,9443],{"class":3042}," toArray",[2907,9445,3047],{"class":3057},[2907,9447,9402],{"class":3046},[2907,9449,3380],{"class":3057},[2907,9451,3015],{"class":3050},[2907,9453,9454],{"class":3042},"map",[2907,9456,3047],{"class":3057},[2907,9458,3047],{"class":3050},[2907,9460,9461],{"class":3377},"src",[2907,9463,3380],{"class":3050},[2907,9465,3384],{"class":3383},[2907,9467,3064],{"class":3050},[2907,9469,9470,9472,9474,9477,9479],{"class":2909,"line":3492},[2907,9471,3673],{"class":3035},[2907,9473,3473],{"class":3057},[2907,9475,9476],{"class":3046},"lazy",[2907,9478,3503],{"class":3057},[2907,9480,3051],{"class":3050},[2907,9482,9483,9486,9489,9492,9494,9497,9500,9502,9505,9507,9510,9513,9515,9517,9520,9522,9524,9527,9529,9532,9534,9536,9538,9540,9542,9544],{"class":2909,"line":3508},[2907,9484,9485],{"class":3035},"      return",[2907,9487,9488],{"class":3050}," `",[2907,9490,9491],{"class":2917},"const ",[2907,9493,5634],{"class":3050},[2907,9495,9496],{"class":3042},"genSafeVariableName",[2907,9498,9499],{"class":3046},"(src)",[2907,9501,3091],{"class":3050},[2907,9503,9504],{"class":2917}," = ",[2907,9506,5634],{"class":3050},[2907,9508,9509],{"class":3042},"genDynamicImport",[2907,9511,9512],{"class":3046},"(src",[2907,9514,3470],{"class":3050},[2907,9516,3426],{"class":3050},[2907,9518,9519],{"class":3057}," comment",[2907,9521,3061],{"class":3050},[2907,9523,9488],{"class":3050},[2907,9525,9526],{"class":2917},"webpackChunkName: ",[2907,9528,5634],{"class":3050},[2907,9530,9531],{"class":3046},"JSON",[2907,9533,3015],{"class":3050},[2907,9535,9275],{"class":3042},[2907,9537,9499],{"class":3046},[2907,9539,5639],{"class":3050},[2907,9541,3438],{"class":3050},[2907,9543,3380],{"class":3046},[2907,9545,9546],{"class":3050},"}`\n",[2907,9548,9549],{"class":2909,"line":3536},[2907,9550,3757],{"class":3050},[2907,9552,9553,9555,9557,9559,9561,9563,9565,9567,9569],{"class":2909,"line":3542},[2907,9554,3783],{"class":3035},[2907,9556,9226],{"class":3042},[2907,9558,3047],{"class":3057},[2907,9560,9461],{"class":3046},[2907,9562,3470],{"class":3050},[2907,9564,9231],{"class":3042},[2907,9566,3047],{"class":3057},[2907,9568,9461],{"class":3046},[2907,9570,3812],{"class":3057},[2907,9572,9573,9576,9578,9580,9583,9585,9587,9590,9592],{"class":2909,"line":3549},[2907,9574,9575],{"class":3050},"  }",[2907,9577,3380],{"class":3057},[2907,9579,3015],{"class":3050},[2907,9581,9582],{"class":3042},"join",[2907,9584,3047],{"class":3057},[2907,9586,3411],{"class":3050},[2907,9588,9589],{"class":3046},"\\n",[2907,9591,3411],{"class":3050},[2907,9593,3094],{"class":3057},[2907,9595,9596],{"class":2909,"line":3554},[2907,9597,5735],{"class":3050},[2907,9599,9600],{"class":2909,"line":3560},[2907,9601,3445],{"emptyLinePlaceholder":1196},[2907,9603,9604,9606,9609,9611],{"class":2909,"line":3577},[2907,9605,5454],{"class":3383},[2907,9607,9608],{"class":3046}," importName ",[2907,9610,6765],{"class":3050},[2907,9612,9613],{"class":3046}," genSafeVariableName\n",[3236,9615,9616],{},[2877,9617,7589,9618],{},[2889,9619,9620],{},"npx codemod@latest nuxt\u002F4\u002Ftemplate-compilation-changes",[2872,9622,9624],{"id":9623},"default-typescript-configuration-changes","Default TypeScript Configuration Changes",[2877,9626,3209,9627,4167],{},[3001,9628,3212],{},[3215,9630,3218],{"id":9631},"what-changed-24",[2877,9633,9634,9637,9638,9640,9641,3015],{},[2889,9635,9636],{},"compilerOptions.noUncheckedIndexedAccess"," is now ",[2889,9639,7634],{}," instead of ",[2889,9642,7641],{},[3215,9644,3318],{"id":9645},"reasons-for-change-21",[2877,9647,9648,9649,9654,9655,3015],{},"This change is a follow up to a prior ",[2881,9650,9653],{"href":9651,"rel":9652},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F27485",[2885],"3.12 config update"," where we improved our defaults, mostly adhering to ",[2881,9656,9659],{"href":9657,"rel":9658},"https:\u002F\u002Fwww.totaltypescript.com\u002Ftsconfig-cheat-sheet",[2885],"TotalTypeScript's recommendations",[3215,9661,3339],{"id":9662},"migration-steps-24",[2877,9664,9665],{},"There are two approaches:",[3257,9667,9668,9671],{},[3109,9669,9670],{},"Run a typecheck on your app and fix any new errors (recommended).",[3109,9672,9673,9674,3061,9676],{},"Override the new default in your ",[2889,9675,233],{},[2897,9677,9679],{"className":3025,"code":9678,"language":3027,"meta":2903,"style":2903},"export default defineNuxtConfig({\n  typescript: {\n    tsConfig: {\n      compilerOptions: {\n        noUncheckedIndexedAccess: false,\n      },\n    },\n  },\n})\n",[2889,9680,9681,9693,9702,9711,9720,9731,9735,9739,9743],{"__ignoreMap":2903},[2907,9682,9683,9685,9687,9689,9691],{"class":2909,"line":2910},[2907,9684,3036],{"class":3035},[2907,9686,3039],{"class":3035},[2907,9688,3043],{"class":3042},[2907,9690,3047],{"class":3046},[2907,9692,3051],{"class":3050},[2907,9694,9695,9698,9700],{"class":2909,"line":3054},[2907,9696,9697],{"class":3057},"  typescript",[2907,9699,3061],{"class":3050},[2907,9701,3064],{"class":3050},[2907,9703,9704,9707,9709],{"class":2909,"line":3067},[2907,9705,9706],{"class":3057},"    tsConfig",[2907,9708,3061],{"class":3050},[2907,9710,3064],{"class":3050},[2907,9712,9713,9716,9718],{"class":2909,"line":3082},[2907,9714,9715],{"class":3057},"      compilerOptions",[2907,9717,3061],{"class":3050},[2907,9719,3064],{"class":3050},[2907,9721,9722,9725,9727,9729],{"class":2909,"line":3088},[2907,9723,9724],{"class":3057},"        noUncheckedIndexedAccess",[2907,9726,3061],{"class":3050},[2907,9728,3435],{"class":3434},[2907,9730,3079],{"class":3050},[2907,9732,9733],{"class":2909,"line":3448},[2907,9734,8055],{"class":3050},[2907,9736,9737],{"class":2909,"line":3492},[2907,9738,5725],{"class":3050},[2907,9740,9741],{"class":2909,"line":3508},[2907,9742,3085],{"class":3050},[2907,9744,9745,9747],{"class":2909,"line":3536},[2907,9746,3091],{"class":3050},[2907,9748,3094],{"class":3046},[2872,9750,9752],{"id":9751},"typescript-configuration-splitting","TypeScript Configuration Splitting",[2877,9754,3209,9755,4167],{},[3001,9756,3212],{},[3215,9758,3218],{"id":9759},"what-changed-25",[2877,9761,9762],{},"Nuxt now generates separate TypeScript configurations for different contexts to provide better type-checking experiences:",[3257,9764,9765,9806,9815,9821,9827],{},[3109,9766,9767,9770,9771],{},[3001,9768,9769],{},"New TypeScript configuration files",": Nuxt now generates additional TypeScript configurations:",[3106,9772,9773,9779,9785,9794,9800],{},[3109,9774,9775,9778],{},[2889,9776,9777],{},".nuxt\u002Ftsconfig.app.json"," - For your app code (Vue components, composables, etc.)",[3109,9780,9781,9784],{},[2889,9782,9783],{},".nuxt\u002Ftsconfig.server.json"," - For your server-side code (Nitro\u002Fserver directory)",[3109,9786,9787,9790,9791,9793],{},[2889,9788,9789],{},".nuxt\u002Ftsconfig.node.json"," - For your build-time code (modules, ",[2889,9792,233],{},", etc.)",[3109,9795,9796,9799],{},[2889,9797,9798],{},".nuxt\u002Ftsconfig.shared.json"," - For code shared between app and server contexts (like types and non-environment specific utilities)",[3109,9801,9802,9805],{},[2889,9803,9804],{},".nuxt\u002Ftsconfig.json"," - Legacy configuration for backward compatibility",[3109,9807,9808,9811,9812,9814],{},[3001,9809,9810],{},"Backward compatibility",": Existing projects that extend ",[2889,9813,9804],{}," will continue to work as before.",[3109,9816,9817,9820],{},[3001,9818,9819],{},"Opt-in project references",": New projects or those wanting better type checking can adopt TypeScript's project references feature.",[3109,9822,9823,9826],{},[3001,9824,9825],{},"Context-specific type checking",": Each context now has appropriate compiler options and includes\u002Fexcludes for its specific environment.",[3109,9828,9829,9836],{},[3001,9830,9831,9832,9835],{},"New ",[2889,9833,9834],{},"typescript.nodeTsConfig"," option",": You can now customize the TypeScript configuration for Node.js build-time code.",[3215,9838,3318],{"id":9839},"reasons-for-change-22",[2877,9841,9842],{},"This change provides several benefits:",[3257,9844,9845,9851,9857,9863],{},[3109,9846,9847,9850],{},[3001,9848,9849],{},"Better type safety",": Each context (app, server, build-time) gets appropriate type checking with context-specific globals and APIs.",[3109,9852,9853,9856],{},[3001,9854,9855],{},"Improved IDE experience",": Better IntelliSense and error reporting for different parts of your codebase.",[3109,9858,9859,9862],{},[3001,9860,9861],{},"Cleaner separation",": Server code won't incorrectly suggest client-side APIs and vice versa.",[3109,9864,9865,9867],{},[3001,9866,5086],{},": TypeScript can more efficiently check code with properly scoped configurations.",[2877,9869,9870,9871,9873,9874,9876,9877,9879],{},"For example, auto-imports are not available in your ",[2889,9872,233],{}," (but previously this was not flagged by TypeScript). And while IDEs recognized the separate context hinted by ",[2889,9875,242],{}," in your ",[2889,9878,5103],{}," directory, this was not reflected in type-checking (requiring a separate step).",[3215,9881,3339],{"id":9882},"migration-steps-25",[2877,9884,9885,9888],{},[3001,9886,9887],{},"No migration is required"," - existing projects will continue to work as before.",[2877,9890,9891],{},"However, to take advantage of improved type checking, you can opt in to the new project references approach:",[3257,9893,9894,10060,10074,10099,10140,10296],{},[3109,9895,9896,9901,9902,9918],{},[3001,9897,9898,9899],{},"Update your root ",[2889,9900,242],{}," to use project references:",[3192,9903,9904],{},[2877,9905,9906,9907,9909,9910,9913,9914,9917],{},"If your ",[2889,9908,242],{}," currently has an ",[2889,9911,9912],{},"\"extends\": \".\u002F.nuxt\u002Ftsconfig.json\""," line, ",[3001,9915,9916],{},"remove it"," before adding the references. Project references and extends are mutually exclusive.",[2897,9919,9923],{"className":9920,"code":9921,"language":9922,"meta":2903,"style":2903},"language-json shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","{\n  \u002F\u002F Remove \"extends\": \".\u002F.nuxt\u002Ftsconfig.json\" if present\n  \"files\": [],\n  \"references\": [\n    { \"path\": \".\u002F.nuxt\u002Ftsconfig.app.json\" },\n    { \"path\": \".\u002F.nuxt\u002Ftsconfig.server.json\" },\n    { \"path\": \".\u002F.nuxt\u002Ftsconfig.shared.json\" },\n    { \"path\": \".\u002F.nuxt\u002Ftsconfig.node.json\" }\n  ]\n}\n","json",[2889,9924,9925,9929,9934,9949,9963,9987,10008,10029,10051,10056],{"__ignoreMap":2903},[2907,9926,9927],{"class":2909,"line":2910},[2907,9928,3051],{"class":3050},[2907,9930,9931],{"class":2909,"line":3054},[2907,9932,9933],{"class":3365},"  \u002F\u002F Remove \"extends\": \".\u002F.nuxt\u002Ftsconfig.json\" if present\n",[2907,9935,9936,9939,9942,9944,9946],{"class":2909,"line":3067},[2907,9937,9938],{"class":3050},"  \"",[2907,9940,9941],{"class":3383},"files",[2907,9943,6768],{"class":3050},[2907,9945,3061],{"class":3050},[2907,9947,9948],{"class":3050}," [],\n",[2907,9950,9951,9953,9956,9958,9960],{"class":2909,"line":3082},[2907,9952,9938],{"class":3050},[2907,9954,9955],{"class":3383},"references",[2907,9957,6768],{"class":3050},[2907,9959,3061],{"class":3050},[2907,9961,9962],{"class":3050}," [\n",[2907,9964,9965,9968,9971,9973,9975,9977,9979,9982,9984],{"class":2909,"line":3088},[2907,9966,9967],{"class":3050},"    {",[2907,9969,9970],{"class":3050}," \"",[2907,9972,6206],{"class":2913},[2907,9974,6768],{"class":3050},[2907,9976,3061],{"class":3050},[2907,9978,9970],{"class":3050},[2907,9980,9981],{"class":2917},".\u002F.nuxt\u002Ftsconfig.app.json",[2907,9983,6768],{"class":3050},[2907,9985,9986],{"class":3050}," },\n",[2907,9988,9989,9991,9993,9995,9997,9999,10001,10004,10006],{"class":2909,"line":3448},[2907,9990,9967],{"class":3050},[2907,9992,9970],{"class":3050},[2907,9994,6206],{"class":2913},[2907,9996,6768],{"class":3050},[2907,9998,3061],{"class":3050},[2907,10000,9970],{"class":3050},[2907,10002,10003],{"class":2917},".\u002F.nuxt\u002Ftsconfig.server.json",[2907,10005,6768],{"class":3050},[2907,10007,9986],{"class":3050},[2907,10009,10010,10012,10014,10016,10018,10020,10022,10025,10027],{"class":2909,"line":3492},[2907,10011,9967],{"class":3050},[2907,10013,9970],{"class":3050},[2907,10015,6206],{"class":2913},[2907,10017,6768],{"class":3050},[2907,10019,3061],{"class":3050},[2907,10021,9970],{"class":3050},[2907,10023,10024],{"class":2917},".\u002F.nuxt\u002Ftsconfig.shared.json",[2907,10026,6768],{"class":3050},[2907,10028,9986],{"class":3050},[2907,10030,10031,10033,10035,10037,10039,10041,10043,10046,10048],{"class":2909,"line":3508},[2907,10032,9967],{"class":3050},[2907,10034,9970],{"class":3050},[2907,10036,6206],{"class":2913},[2907,10038,6768],{"class":3050},[2907,10040,3061],{"class":3050},[2907,10042,9970],{"class":3050},[2907,10044,10045],{"class":2917},".\u002F.nuxt\u002Ftsconfig.node.json",[2907,10047,6768],{"class":3050},[2907,10049,10050],{"class":3050}," }\n",[2907,10052,10053],{"class":2909,"line":3536},[2907,10054,10055],{"class":3050},"  ]\n",[2907,10057,10058],{"class":2909,"line":3542},[2907,10059,5735],{"class":3050},[3109,10061,10062,10067,10068,10071,10072,3015],{},[3001,10063,10064,10065],{},"Remove any manual server ",[2889,10066,242],{}," files (like ",[2889,10069,10070],{},"server\u002Ftsconfig.json",") that extended ",[2889,10073,9783],{},[3109,10075,10076,10079,10080],{},[3001,10077,10078],{},"Update your type checking scripts"," to use the build flag for project references:",[2897,10081,10083],{"className":4251,"code":10082,"language":4253,"meta":2903,"style":2903},"- \"typecheck\": \"nuxt prepare && vue-tsc --noEmit\"\n+ \"typecheck\": \"nuxt prepare && vue-tsc -b --noEmit\"\n",[2889,10084,10085,10092],{"__ignoreMap":2903},[2907,10086,10087,10089],{"class":2909,"line":2910},[2907,10088,4260],{"class":3050},[2907,10090,10091],{"class":3057}," \"typecheck\": \"nuxt prepare && vue-tsc --noEmit\"\n",[2907,10093,10094,10096],{"class":2909,"line":3054},[2907,10095,4268],{"class":3050},[2907,10097,10098],{"class":2917}," \"typecheck\": \"nuxt prepare && vue-tsc -b --noEmit\"\n",[3109,10100,10101,3061,10104,10126],{},[3001,10102,10103],{},"Move all type augmentations into their appropriate context",[3106,10105,10106,10112,10117],{},[3109,10107,10108,10109,10111],{},"If you are augmenting types for the app context, move the files to the ",[2889,10110,1195],{}," directory.",[3109,10113,10114,10115,10111],{},"If you are augmenting types for the server context, move the files to the ",[2889,10116,5103],{},[3109,10118,10119,10120,10123,10124,10111],{},"If you are augmenting types that are ",[3001,10121,10122],{},"shared between the app and server",", move the files to the ",[2889,10125,4878],{},[10127,10128,10129],"warning",{},[2877,10130,10131,10132,3351,10134,10136,10137,10139],{},"Augmenting types from outside the ",[2889,10133,1195],{},[2889,10135,5103],{},", or ",[2889,10138,4878],{}," directories will not work with the new project references setup.",[3109,10141,10142,10145,10146],{},[3001,10143,10144],{},"Configure TypeScript options"," if needed:",[2897,10147,10149],{"className":3025,"code":10148,"language":3027,"meta":2903,"style":2903},"export default defineNuxtConfig({\n  typescript: {\n    \u002F\u002F customize tsconfig.app.json\n    tsConfig: {\n      \u002F\u002F ...\n    },\n    \u002F\u002F customize tsconfig.shared.json\n    sharedTsConfig: {\n      \u002F\u002F ...\n    },\n    \u002F\u002F customize tsconfig.node.json\n    nodeTsConfig: {\n      \u002F\u002F ...\n    },\n  },\n  nitro: {\n    typescript: {\n      \u002F\u002F customize tsconfig.server.json\n      tsConfig: {\n        \u002F\u002F ...\n      },\n    },\n  },\n})\n",[2889,10150,10151,10163,10171,10176,10184,10189,10193,10198,10207,10211,10215,10220,10229,10233,10237,10241,10250,10259,10264,10273,10278,10282,10286,10290],{"__ignoreMap":2903},[2907,10152,10153,10155,10157,10159,10161],{"class":2909,"line":2910},[2907,10154,3036],{"class":3035},[2907,10156,3039],{"class":3035},[2907,10158,3043],{"class":3042},[2907,10160,3047],{"class":3046},[2907,10162,3051],{"class":3050},[2907,10164,10165,10167,10169],{"class":2909,"line":3054},[2907,10166,9697],{"class":3057},[2907,10168,3061],{"class":3050},[2907,10170,3064],{"class":3050},[2907,10172,10173],{"class":2909,"line":3067},[2907,10174,10175],{"class":3365},"    \u002F\u002F customize tsconfig.app.json\n",[2907,10177,10178,10180,10182],{"class":2909,"line":3082},[2907,10179,9706],{"class":3057},[2907,10181,3061],{"class":3050},[2907,10183,3064],{"class":3050},[2907,10185,10186],{"class":2909,"line":3088},[2907,10187,10188],{"class":3365},"      \u002F\u002F ...\n",[2907,10190,10191],{"class":2909,"line":3448},[2907,10192,5725],{"class":3050},[2907,10194,10195],{"class":2909,"line":3492},[2907,10196,10197],{"class":3365},"    \u002F\u002F customize tsconfig.shared.json\n",[2907,10199,10200,10203,10205],{"class":2909,"line":3508},[2907,10201,10202],{"class":3057},"    sharedTsConfig",[2907,10204,3061],{"class":3050},[2907,10206,3064],{"class":3050},[2907,10208,10209],{"class":2909,"line":3536},[2907,10210,10188],{"class":3365},[2907,10212,10213],{"class":2909,"line":3542},[2907,10214,5725],{"class":3050},[2907,10216,10217],{"class":2909,"line":3549},[2907,10218,10219],{"class":3365},"    \u002F\u002F customize tsconfig.node.json\n",[2907,10221,10222,10225,10227],{"class":2909,"line":3554},[2907,10223,10224],{"class":3057},"    nodeTsConfig",[2907,10226,3061],{"class":3050},[2907,10228,3064],{"class":3050},[2907,10230,10231],{"class":2909,"line":3560},[2907,10232,10188],{"class":3365},[2907,10234,10235],{"class":2909,"line":3577},[2907,10236,5725],{"class":3050},[2907,10238,10239],{"class":2909,"line":3595},[2907,10240,3085],{"class":3050},[2907,10242,10243,10246,10248],{"class":2909,"line":3608},[2907,10244,10245],{"class":3057},"  nitro",[2907,10247,3061],{"class":3050},[2907,10249,3064],{"class":3050},[2907,10251,10252,10255,10257],{"class":2909,"line":3614},[2907,10253,10254],{"class":3057},"    typescript",[2907,10256,3061],{"class":3050},[2907,10258,3064],{"class":3050},[2907,10260,10261],{"class":2909,"line":3619},[2907,10262,10263],{"class":3365},"      \u002F\u002F customize tsconfig.server.json\n",[2907,10265,10266,10269,10271],{"class":2909,"line":3633},[2907,10267,10268],{"class":3057},"      tsConfig",[2907,10270,3061],{"class":3050},[2907,10272,3064],{"class":3050},[2907,10274,10275],{"class":2909,"line":3639},[2907,10276,10277],{"class":3365},"        \u002F\u002F ...\n",[2907,10279,10280],{"class":2909,"line":3644},[2907,10281,8055],{"class":3050},[2907,10283,10284],{"class":2909,"line":3664},[2907,10285,5725],{"class":3050},[2907,10287,10288],{"class":2909,"line":3670},[2907,10289,3085],{"class":3050},[2907,10291,10292,10294],{"class":2909,"line":3693},[2907,10293,3091],{"class":3050},[2907,10295,3094],{"class":3046},[3109,10297,10298,10301],{},[3001,10299,10300],{},"Update any CI\u002Fbuild scripts"," that run TypeScript checking to ensure they use the new project references approach.",[2877,10303,10304],{},"The new configuration provides better type safety and IntelliSense for projects that opt in, while maintaining full backward compatibility for existing setups.",[2872,10306,10308],{"id":10307},"removal-of-experimental-features","Removal of Experimental Features",[2877,10310,3209,10311,4167],{},[3001,10312,3212],{},[3215,10314,3218],{"id":10315},"what-changed-26",[2877,10317,10318],{},"Four experimental features are no longer configurable in Nuxt 4:",[3106,10320,10321,10329,10337,10345,10352],{},[3109,10322,10323,8193,10326,10328],{},[2889,10324,10325],{},"experimental.treeshakeClientOnly",[2889,10327,7634],{}," (default since v3.0)",[3109,10330,10331,8193,10334,10336],{},[2889,10332,10333],{},"experimental.configSchema",[2889,10335,7634],{}," (default since v3.3)",[3109,10338,10339,8193,10342,10344],{},[2889,10340,10341],{},"experimental.polyfillVueUseHead",[2889,10343,7641],{}," (default since v3.4)",[3109,10346,10347,8193,10350,10344],{},[2889,10348,10349],{},"experimental.respectNoSSRHeader",[2889,10351,7641],{},[3109,10353,10354,10357,10358,4840],{},[2889,10355,10356],{},"vite.devBundler"," is no longer configurable - it will use ",[2889,10359,10360],{},"vite-node",[3215,10362,3318],{"id":10363},"reasons-for-change-23",[2877,10365,10366],{},"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.",[3215,10368,3339],{"id":10369},"migration-steps-26",[3106,10371,10372,10383],{},[3109,10373,10374,10377,10378],{},[2889,10375,10376],{},"polyfillVueUseHead"," is implementable in user-land with ",[2881,10379,10382],{"href":10380,"rel":10381},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fblob\u002Ff209158352b09d1986aa320e29ff36353b91c358\u002Fpackages\u002Fnuxt\u002Fsrc\u002Fhead\u002Fruntime\u002Fplugins\u002Fvueuse-head-polyfill.ts#L10-L11",[2885],"this plugin",[3109,10384,10385,10388,10389],{},[2889,10386,10387],{},"respectNoSSRHeader","is implementable in user-land with ",[2881,10390,10393],{"href":10391,"rel":10392},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fblob\u002Fc660b39447f0d5b8790c0826092638d321cd6821\u002Fpackages\u002Fnuxt\u002Fsrc\u002Fcore\u002Fruntime\u002Fnitro\u002Fno-ssr.ts#L8-L9",[2885],"server middleware",[2872,10395,10397,10398,10401],{"id":10396},"removal-of-top-level-generate-configuration","Removal of Top-Level ",[2889,10399,10400],{},"generate"," Configuration",[2877,10403,3209,10404,4167],{},[3001,10405,3212],{},[3215,10407,3218],{"id":10408},"what-changed-27",[2877,10410,10411,10412,10414],{},"The top-level ",[2889,10413,10400],{}," configuration option is no longer available in Nuxt 4. This includes all of its properties:",[3106,10416,10417,10423],{},[3109,10418,10419,10422],{},[2889,10420,10421],{},"generate.exclude"," - for excluding routes from prerendering",[3109,10424,10425,10428],{},[2889,10426,10427],{},"generate.routes"," - for specifying routes to prerender",[3215,10430,3318],{"id":10431},"reasons-for-change-24",[2877,10433,10434,10435,10437,10438,10441],{},"The top level ",[2889,10436,10400],{}," configuration was a holdover from Nuxt 2. We've supported ",[2889,10439,10440],{},"nitro.prerender"," for a while now, and it is the preferred way to configure prerendering in Nuxt 3+.",[3215,10443,3339],{"id":10444},"migration-steps-27",[2877,10446,10447,10448,10450,10451,10453],{},"Replace ",[2889,10449,10400],{}," configuration with the corresponding ",[2889,10452,10440],{}," options:",[2897,10455,10457],{"className":4251,"code":10456,"language":4253,"meta":2903,"style":2903},"export default defineNuxtConfig({\n- generate: {\n-   exclude: ['\u002Fadmin', '\u002Fprivate'],\n-   routes: ['\u002Fsitemap.xml', '\u002Frobots.txt']\n- }\n+ nitro: {\n+   prerender: {\n+     ignore: ['\u002Fadmin', '\u002Fprivate'],\n+     routes: ['\u002Fsitemap.xml', '\u002Frobots.txt']\n+   }\n+ }\n})\n",[2889,10458,10459,10464,10471,10478,10485,10491,10498,10505,10512,10519,10526,10532],{"__ignoreMap":2903},[2907,10460,10461],{"class":2909,"line":2910},[2907,10462,10463],{"class":3046},"export default defineNuxtConfig({\n",[2907,10465,10466,10468],{"class":2909,"line":3054},[2907,10467,4260],{"class":3050},[2907,10469,10470],{"class":3057}," generate: {\n",[2907,10472,10473,10475],{"class":2909,"line":3067},[2907,10474,4260],{"class":3050},[2907,10476,10477],{"class":3057},"   exclude: ['\u002Fadmin', '\u002Fprivate'],\n",[2907,10479,10480,10482],{"class":2909,"line":3082},[2907,10481,4260],{"class":3050},[2907,10483,10484],{"class":3057},"   routes: ['\u002Fsitemap.xml', '\u002Frobots.txt']\n",[2907,10486,10487,10489],{"class":2909,"line":3088},[2907,10488,4260],{"class":3050},[2907,10490,10050],{"class":3057},[2907,10492,10493,10495],{"class":2909,"line":3448},[2907,10494,4268],{"class":3050},[2907,10496,10497],{"class":2917}," nitro: {\n",[2907,10499,10500,10502],{"class":2909,"line":3492},[2907,10501,4268],{"class":3050},[2907,10503,10504],{"class":2917},"   prerender: {\n",[2907,10506,10507,10509],{"class":2909,"line":3508},[2907,10508,4268],{"class":3050},[2907,10510,10511],{"class":2917},"     ignore: ['\u002Fadmin', '\u002Fprivate'],\n",[2907,10513,10514,10516],{"class":2909,"line":3536},[2907,10515,4268],{"class":3050},[2907,10517,10518],{"class":2917},"     routes: ['\u002Fsitemap.xml', '\u002Frobots.txt']\n",[2907,10520,10521,10523],{"class":2909,"line":3542},[2907,10522,4268],{"class":3050},[2907,10524,10525],{"class":2917},"   }\n",[2907,10527,10528,10530],{"class":2909,"line":3549},[2907,10529,4268],{"class":3050},[2907,10531,10050],{"class":2917},[2907,10533,10534],{"class":2909,"line":3554},[2907,10535,5831],{"class":3046},[4151,10537,10539],{"to":10538},"https:\u002F\u002Fnitro.build\u002Fconfig#prerender",[2877,10540,10541],{},"Read more about Nitro's prerender configuration options.",[2872,10543,10545],{"id":10544},"normalized-page-component-names","Normalized Page Component Names",[2877,10547,3209,10548,4167],{},[3001,10549,3212],{},[3215,10551,3218],{"id":10552},"what-changed-28",[2877,10554,7947,10555,10557,10558,10560,10561,10564,10565,10568,10569,9640,10572,3015],{},[2889,10556,3021],{}," is set to ",[2889,10559,3103],{}," (or ",[2889,10562,10563],{},"experimental.normalizePageNames"," is enabled), page component names match their route names instead of using the filename. For example, ",[2889,10566,10567],{},"pages\u002Ffoo\u002Findex.vue"," will have the component name ",[2889,10570,10571],{},"foo",[2889,10573,8868],{},[3215,10575,3318],{"id":10576},"reasons-for-change-25",[2877,10578,10579,10580,3270,10582,10585,10586,10588,10589,3822,10591,7903,10593,10596,10597,10600],{},"Previously, Vue assigned component names based on the filename. This meant multiple pages like ",[2889,10581,10567],{},[2889,10583,10584],{},"pages\u002Fbar\u002Findex.vue"," would both have the component name ",[2889,10587,8868],{},". This made ",[2889,10590,3132],{},[2889,10592,3401],{},[2889,10594,10595],{},"exclude"," filters unreliable and required manually adding ",[2889,10598,10599],{},"defineOptions({ name: '...' })"," to each page.",[3215,10602,3339],{"id":10603},"migration-steps-28",[2877,10605,10606,10607,10609,10610,7903,10612,10614],{},"If you rely on the current component names (e.g. in ",[2889,10608,3132],{}," ",[2889,10611,3401],{},[2889,10613,10595],{}," lists), update them to use route names instead of filenames.",[2897,10616,10618],{"className":4251,"code":10617,"language":4253,"meta":2903,"style":2903},"\u003Ctemplate>\n  \u003CNuxtPage :keepalive=\"{\n-   include: ['index']\n+   include: ['foo']\n  }\" \u002F>\n\u003C\u002Ftemplate>\n",[2889,10619,10620,10625,10630,10637,10644,10649],{"__ignoreMap":2903},[2907,10621,10622],{"class":2909,"line":2910},[2907,10623,10624],{"class":3046},"\u003Ctemplate>\n",[2907,10626,10627],{"class":2909,"line":3054},[2907,10628,10629],{"class":3046},"  \u003CNuxtPage :keepalive=\"{\n",[2907,10631,10632,10634],{"class":2909,"line":3067},[2907,10633,4260],{"class":3050},[2907,10635,10636],{"class":3057},"   include: ['index']\n",[2907,10638,10639,10641],{"class":2909,"line":3082},[2907,10640,4268],{"class":3050},[2907,10642,10643],{"class":2917},"   include: ['foo']\n",[2907,10645,10646],{"class":2909,"line":3088},[2907,10647,10648],{"class":3046},"  }\" \u002F>\n",[2907,10650,10651],{"class":2909,"line":3448},[2907,10652,10653],{"class":3046},"\u003C\u002Ftemplate>\n",[2877,10655,10656],{},"To disable this behavior:",[2897,10658,10660],{"className":3025,"code":10659,"filename":233,"language":3027,"meta":3028,"style":2903},"export default defineNuxtConfig({\n  experimental: {\n    normalizePageNames: false,\n  },\n})\n",[2889,10661,10662,10674,10682,10693,10697],{"__ignoreMap":2903},[2907,10663,10664,10666,10668,10670,10672],{"class":2909,"line":2910},[2907,10665,3036],{"class":3035},[2907,10667,3039],{"class":3035},[2907,10669,3043],{"class":3042},[2907,10671,3047],{"class":3046},[2907,10673,3051],{"class":3050},[2907,10675,10676,10678,10680],{"class":2909,"line":3054},[2907,10677,4332],{"class":3057},[2907,10679,3061],{"class":3050},[2907,10681,3064],{"class":3050},[2907,10683,10684,10687,10689,10691],{"class":2909,"line":3067},[2907,10685,10686],{"class":3057},"    normalizePageNames",[2907,10688,3061],{"class":3050},[2907,10690,3435],{"class":3434},[2907,10692,3079],{"class":3050},[2907,10694,10695],{"class":2909,"line":3082},[2907,10696,3085],{"class":3050},[2907,10698,10699,10701],{"class":2909,"line":3088},[2907,10700,3091],{"class":3050},[2907,10702,3094],{"class":3046},[2867,10704,10706],{"id":10705},"nuxt-2-vs-nuxt-3","Nuxt 2 vs. Nuxt 3+",[2877,10708,10709],{},"In the table below, there is a quick comparison between 3 versions of Nuxt:",[10711,10712,10713,10732],"table",{},[10714,10715,10716],"thead",{},[10717,10718,10719,10723,10726,10729],"tr",{},[10720,10721,10722],"th",{},"Feature \u002F Version",[10720,10724,10725],{},"Nuxt 2",[10720,10727,10728],{},"Nuxt Bridge",[10720,10730,10731],{},"Nuxt 3+",[10733,10734,10735,10749,10761,10774,10787,10800,10812,10823,10834,10845,10859,10869,10881,10892,10905],"tbody",{},[10717,10736,10737,10741,10744,10746],{},[10738,10739,10740],"td",{},"Vue",[10738,10742,10743],{},"2",[10738,10745,10743],{},[10738,10747,10748],{},"3",[10717,10750,10751,10754,10757,10759],{},[10738,10752,10753],{},"Stability",[10738,10755,10756],{},"😊 Stable",[10738,10758,10756],{},[10738,10760,10756],{},[10717,10762,10763,10765,10768,10771],{},[10738,10764,5086],{},[10738,10766,10767],{},"🏎 Fast",[10738,10769,10770],{},"✈️ Faster",[10738,10772,10773],{},"🚀 Fastest",[10717,10775,10776,10779,10782,10785],{},[10738,10777,10778],{},"Nitro Engine",[10738,10780,10781],{},"❌",[10738,10783,10784],{},"✅",[10738,10786,10784],{},[10717,10788,10789,10792,10795,10798],{},[10738,10790,10791],{},"ESM support",[10738,10793,10794],{},"🌙 Partial",[10738,10796,10797],{},"👍 Better",[10738,10799,10784],{},[10717,10801,10802,10804,10807,10810],{},[10738,10803,280],{},[10738,10805,10806],{},"☑️ Opt-in",[10738,10808,10809],{},"🚧 Partial",[10738,10811,10784],{},[10717,10813,10814,10817,10819,10821],{},[10738,10815,10816],{},"Composition API",[10738,10818,10781],{},[10738,10820,10809],{},[10738,10822,10784],{},[10717,10824,10825,10828,10830,10832],{},[10738,10826,10827],{},"Options API",[10738,10829,10784],{},[10738,10831,10784],{},[10738,10833,10784],{},[10717,10835,10836,10839,10841,10843],{},[10738,10837,10838],{},"Components Auto Import",[10738,10840,10784],{},[10738,10842,10784],{},[10738,10844,10784],{},[10717,10846,10847,10853,10855,10857],{},[10738,10848,10849,10852],{},[2889,10850,10851],{},"\u003Cscript setup>"," syntax",[10738,10854,10781],{},[10738,10856,10809],{},[10738,10858,10784],{},[10717,10860,10861,10863,10865,10867],{},[10738,10862,922],{},[10738,10864,10781],{},[10738,10866,10784],{},[10738,10868,10784],{},[10717,10870,10871,10874,10877,10879],{},[10738,10872,10873],{},"webpack",[10738,10875,10876],{},"4",[10738,10878,10876],{},[10738,10880,3103],{},[10717,10882,10883,10885,10888,10890],{},[10738,10884,1075],{},[10738,10886,10887],{},"⚠️ Partial",[10738,10889,10809],{},[10738,10891,10784],{},[10717,10893,10894,10897,10900,10903],{},[10738,10895,10896],{},"Nuxt CLI",[10738,10898,10899],{},"❌ Old",[10738,10901,10902],{},"✅ nuxt",[10738,10904,10902],{},[10717,10906,10907,10910,10912,10914],{},[10738,10908,10909],{},"Static sites",[10738,10911,10784],{},[10738,10913,10784],{},[10738,10915,10784],{},[2867,10917,10919],{"id":10918},"nuxt-2-to-nuxt-3","Nuxt 2 to Nuxt 3+",[2877,10921,10922],{},"The migration guide provides a step-by-step comparison of Nuxt 2 features to Nuxt 3+ features and guidance to adapt your current application.",[4151,10924,10925],{"to":1916},[2877,10926,10927,10928,3015],{},"Check out the ",[3001,10929,10930],{},"guide to migrating from Nuxt 2 to Nuxt 3",[2867,10932,10934],{"id":10933},"nuxt-2-to-nuxt-bridge","Nuxt 2 to Nuxt Bridge",[2877,10936,10937],{},"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.",[4151,10939,10940],{"to":1882},[2877,10941,10942],{},[3001,10943,10944],{},"Migrate from Nuxt 2 to Nuxt Bridge",[4418,10946,10947],{},"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 .s8R28, html code.shiki .s8R28{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}html pre.shiki code .sYRBq, html code.shiki .sYRBq{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}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 .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 .sbKd-, html code.shiki .sbKd-{--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC}",{"title":2903,"searchDepth":3054,"depth":3054,"links":10949},[10950,10954,10961,11002,11003,11004],{"id":2869,"depth":3054,"text":2870,"children":10951},[10952,10953],{"id":2874,"depth":3067,"text":2875},{"id":2985,"depth":3067,"text":403},{"id":2995,"depth":3054,"text":2996,"children":10955},[10956,10957,10958,10960],{"id":3007,"depth":3067,"text":3008},{"id":3205,"depth":3067,"text":3206},{"id":4159,"depth":3067,"text":10959},"Non-Async callHook",{"id":4361,"depth":3067,"text":4362},{"id":4546,"depth":3054,"text":4547,"children":10962},[10963,10964,10965,10966,10967,10968,10969,10970,10971,10973,10974,10975,10976,10978,10980,10982,10984,10986,10988,10990,10992,10994,10995,10996,10997,10998,10999,11001],{"id":4636,"depth":3067,"text":4637},{"id":4775,"depth":3067,"text":4776},{"id":5336,"depth":3067,"text":5337},{"id":5894,"depth":3067,"text":5895},{"id":6187,"depth":3067,"text":6188},{"id":6265,"depth":3067,"text":6266},{"id":6396,"depth":3067,"text":6397},{"id":6721,"depth":3067,"text":6722},{"id":6906,"depth":3067,"text":10972},"Parsed error.data",{"id":6994,"depth":3067,"text":6995},{"id":7076,"depth":3067,"text":7077},{"id":7229,"depth":3067,"text":7230},{"id":7513,"depth":3067,"text":10977},"Default data and error values in useAsyncData and useFetch",{"id":7595,"depth":3067,"text":10979},"Removal of deprecated boolean values for dedupe option when calling refresh in useAsyncData and useFetch",{"id":7865,"depth":3067,"text":10981},"Respect defaults when clearing data in useAsyncData and useFetch",{"id":7909,"depth":3067,"text":10983},"Respect defaults when clearing useState",{"id":8146,"depth":3067,"text":10985},"Alignment of pending value in useAsyncData and useFetch",{"id":8364,"depth":3067,"text":10987},"Key Change Behavior in useAsyncData and useFetch",{"id":8529,"depth":3067,"text":10989},"Shallow Data Reactivity in useAsyncData and useFetch",{"id":8698,"depth":3067,"text":10991},"Absolute Watch Paths in builder:watch",{"id":8791,"depth":3067,"text":10993},"Removal of window.__NUXT__ object",{"id":8851,"depth":3067,"text":8852},{"id":9025,"depth":3067,"text":9026},{"id":9623,"depth":3067,"text":9624},{"id":9751,"depth":3067,"text":9752},{"id":10307,"depth":3067,"text":10308},{"id":10396,"depth":3067,"text":11000},"Removal of Top-Level generate Configuration",{"id":10544,"depth":3067,"text":10545},{"id":10705,"depth":3054,"text":10706},{"id":10918,"depth":3054,"text":10919},{"id":10933,"depth":3054,"text":10934},"Learn how to upgrade to the latest Nuxt version.","md",{},{"icon":107},{"title":104,"description":11005},"weEjTskWEbFg53pEGIY2vOPFFEpezZNdBa3u2pDC2FU",[11012,11014],{"title":99,"path":1177,"stem":1178,"description":11013,"icon":102,"children":-1},"How to test your Nuxt application.",{"title":117,"path":1187,"stem":1188,"description":11015,"icon":120,"children":-1},"Nuxt uses the .nuxt\u002F directory in development to generate your Vue application.",1775080859703]