\n\nWhere I use config then, it shows me typing error.\nWhen I switch to the legacy tsconfig, typing issue are gone.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\nTypecheck summary: \n\n\n\napp/layouts/default.vue:35:33 - error TS2339: Property 'title' does not exist on type '{}'.\n\n35 title: appConfig.information?.title,\n ~~~~~\n\napp/layouts/default.vue:36:39 - error TS2339: Property 'description' does not exist on type '{}'.\n\n36 description: appConfig.information?.description,\n ~~~~~~~~~~~\n\napp/layouts/default.vue:39:36 - error TS2339: Property 'socials' does not exist on type '{}'.\n\n39 github: appConfig.information?.socials?.github,\n ~~~~~~~\n\napp/layouts/default.vue:40:38 - error TS2339: Property 'socials' does not exist on type '{}'.\n\n40 linkedin: appConfig.information?.socials?.linkedin,\n ~~~~~~~\n\napp/layouts/default.vue:41:40 - error TS2339: Property 'birthdate' does not exist on type '{}'.\n\n41 isBirthday: appConfig.information?.birthdate ? isBirthday(appConfig.information?.birthdate) : false,\n ~~~~~~~~~\n\napp/layouts/default.vue:41:86 - error TS2339: Property 'birthdate' does not exist on type '{}'.\n\n41 isBirthday: appConfig.information?.birthdate ? isBirthday(appConfig.information?.birthdate) : false,\n ~~~~~~~~~\n\napp/layouts/default.vue:44:27 - error TS2339: Property 'icons' does not exist on type '{}'.\n\n44 normal: appConfig.ui?.icons?.normal as string[] ?? [],\n ~~~~~\n\napp/layouts/default.vue:45:29 - error TS2339: Property 'icons' does not exist on type '{}'.\n\n45 birthday: appConfig.ui?.icons?.birthday as string[] ?? [],\n ~~~~~\n\napp/middleware/title.global.ts:5:28 - error TS2571: Object is of type 'unknown'.\n\n5 const appConfigTitle = useAppConfig().information.title;\n ~~~~~~~~~~~~~~~~~~~~~~~~~~\n\napp/pages/index.vue:14:62 - error TS2339: Property 'messages' does not exist on type '{}'.\n\n14 const messages = useState('randomIndex', () => appConfig.ui?.messages?.sort(() => Math.random() - 0.5))\n ~~~~~~~~\n\nnuxt.schema.ts:3:16 - error TS2304: Cannot find name 'defineNuxtSchema'.\n\n3 export default defineNuxtSchema({\n ~~~~~~~~~~~~~~~~\n\nnuxt.schema.ts:3:16 - error TS2304: Cannot find name 'defineNuxtSchema'.\n\n3 export default defineNuxtSchema({\n ~~~~~~~~~~~~~~~~\n\nnuxt.schema.ts:3:16 - error TS2304: Cannot find name 'defineNuxtSchema'.\n\n3 export default defineNuxtSchema({\n ~~~~~~~~~~~~~~~~\n```",[3092,3093],{"name":3051,"color":3052},{"name":3094,"color":3095},"possible regression","B90A42",32768,"useAppConfig lose types from nuxt schema with new tsconfig","2025-07-25T22:51:01Z","https://github.com/nuxt/nuxt/issues/32768",0.6809492,{"description":3102,"labels":3103,"number":3108,"owner":3025,"repository":3025,"state":3109,"title":3110,"updated_at":3111,"url":3112,"score":3113},"### Describe the feature\r\n\r\nThere is some documentation about how to define the config, however no example of how to use it.\r\nhttps://nuxt.com/docs/guide/directory-structure/app-config\r\n\r\nCould you please provide some examples and use cases?\r\n\r\nI'm struggling how to use it. How does this differ from the `runtimeConfig.public` ? \r\nhttps://nuxt.com/docs/api/configuration/nuxt-config#runtimeconfig\r\n\r\nI tried this with no success...\r\n\r\n### app.config.ts\r\n```ts\r\nexport default defineAppConfig({\r\n foo: \"bar\",\r\n});\r\n```\r\n\r\n### app.vue\r\n```ts\r\nconst nuxtApp = useNuxtApp();\r\n\r\nconsole.log(nuxtApp.$config.foo); // undefined\r\n```\r\n\r\n### Additional information\r\n\r\n- [X] Would you be willing to help implement this feature?\r\n- [ ] Could this feature be implemented as a module?\r\n\r\n### Final checks\r\n\r\n- [X] Read the [contribution guide](https://nuxt.com/docs/community/contribution).\r\n- [X] Check existing [discussions](https://github.com/nuxt/nuxt/discussions) and [issues](https://github.com/nuxt/nuxt/issues).",[3104,3107],{"name":3105,"color":3106},"3.x","29bc7f",{"name":3051,"color":3052},22595,"closed","Documentation - app.config.ts","2023-08-11T14:11:42Z","https://github.com/nuxt/nuxt/issues/22595",0.6529631,{"description":3115,"labels":3116,"number":3122,"owner":3025,"repository":3025,"state":3109,"title":3123,"updated_at":3124,"url":3125,"score":3126},"### Environment\r\n\r\nlatest nuxt\r\n\r\n\r\n### Reproduction\r\n\r\nI added a app.config.ts \r\n\r\nexport default defineAppConfig({\r\n NUXT_PUBLIC_API_BASE_URL: 'https://superapi,\r\n NUXT_PUBLIC_DOMAIN: 'https://www.myshop.com',\r\n NUXT_PUBLIC_API_SHOP_ID: '14',\r\n NUXT_PUBLIC_FAVICON: '\"public/favicon.png\"',\r\n})\r\n\r\nto the root of my project folder and tried a build. then it fails with\r\n\r\n$ nuxt build\r\nNuxt 3.8.1 with Nitro 2.7.2 9:00:55 PM\r\n\r\n ERROR defineAppConfig is not defined 9:00:56 PM\r\n\r\n at app.config.ts:1:178\r\n at evalModule (node_modules/jiti/dist/jiti.js:1:256443)\r\n at jiti (node_modules/jiti/dist/jiti.js:1:254371)\r\n at nuxt.config.ts:2:35\r\n at evalModule (node_modules/jiti/dist/jiti.js:1:256443)\r\n at Object.jiti (node_modules/jiti/dist/jiti.js:1:254371)\r\n at resolveConfig (node_modules/c12/dist/index.mjs:288:24)\r\n at loadConfig (node_modules/c12/dist/index.mjs:116:40)\r\n at async loadNuxtConfig (node_modules/@nuxt/kit/dist/index.mjs:2530:18)\r\n at async loadNuxt (node_modules/nuxt/dist/index.mjs:3739:19)\r\n at async Module.loadNuxt (node_modules/@nuxt/kit/dist/index.mjs:2584:19)\r\n at async Object.run (node_modules/nuxi/dist/chunks/build.mjs:67:18)\r\n at async runCommand$1 (node_modules/nuxi/dist/shared/nuxi.c6444792.mjs:1647:7)\r\n at async runCommand$1 (node_modules/nuxi/dist/shared/nuxi.c6444792.mjs:1638:11)\r\n at async runMain$1 (node_modules/nuxi/dist/shared/nuxi.c6444792.mjs:1770:7)\r\n\r\n\r\n### Describe the bug\r\n\r\nits not building as it should\r\n\r\n### Additional context\r\n\r\neverything above\r\n\r\n### Logs\r\n\r\n```shell-script\r\neverything above\r\n```\r\n",[3117,3118,3119],{"name":3105,"color":3106},{"name":3051,"color":3052},{"name":3120,"color":3121},"needs reproduction","FBCA04",24346,"defineAppConfig is not defined","2024-03-11T12:52:10Z","https://github.com/nuxt/nuxt/issues/24346",0.65809596,{"description":3128,"labels":3129,"number":3132,"owner":3025,"repository":3025,"state":3109,"title":3133,"updated_at":3134,"url":3135,"score":3136},"### Environment\r\n\r\nI want to use Nuxt 3 as a library in node to generate a static site for an offline PWA. I've used Quasar, but I'm new to Nuxt. \r\n\r\nNuxt/Nitro has many features I won't use. I'm very interested in Nuxt's feautures like layers, virtual file systems, module systems, and the Nuxt UI modules. \r\n\r\n----\r\n\r\nI tried to get the [programmatic usage](https://nuxt.com/docs/api/kit/programmatic) working with Javascript. \r\n\r\nI fumbled with some typescript configurations but I couldn't get the right tsconfig.json. I've read all the Nuxt docs on this I can find - is there a working example of programmatic usage I'm missing? Thank you\r\n\r\n### Reproduction\r\n\r\nhttps://github.com/MichaelJCole/nuxt-programmatic-usage-javascript\r\n\r\nThe .nuxt folder is what Nuxt generated from the out of memory crash.\r\n\r\n### Describe the bug\r\n\r\nThe bug is that `build(nuxt)` doesn't appear to use the configuration passed. For example `.nuxt` should be `buildDir`. \r\n\r\nAlso the warnings don't appear when I run [build from the command line instead of programmatically](https://github.com/MichaelJCole/vite-pwa-nuxt-webmanifest-404). \r\n\r\nUnfortunately, it runs out of memory before completion. I checked in the generated `.nuxt` folder.\r\n\r\n```\r\n> $ node index.js ⬡ 18.18.0 \r\n--------------------------------------> options {\r\n dev: false,\r\n ready: true,\r\n rootDir: '/home/michael/nuxt/programmatic-usage/rootDir',\r\n config: {\r\n rootDir: '/home/michael/nuxt/programmatic-usage/rootDir',\r\n devtools: { enabled: true },\r\n ssr: false,\r\n buildDir: '/home/michael/nuxt/programmatic-usage/buildDir',\r\n generate: { routes: [Array] }\r\n }\r\n}\r\n--------------------------------------> loadNuxt complete\r\n\r\n[11:48:52 AM] WARN 'manifest-route-rule' middleware already exists at '/home/michael/nuxt/programmatic-usage/node_modules/nuxt/dist/app/middleware/manifest-route-rule'. You can set override: true to replace it.\r\n\r\n\r\n WARN Overriding NuxtWelcome component. You can specify a priority option when calling addComponent to avoid this warning. 11:48:52 AM\r\n\r\n\r\n WARN Overriding NuxtLayout component. You can specify a priority option when calling addComponent to avoid this warning. 11:48:52 AM\r\n\r\n\r\n WARN Overriding NuxtErrorBoundary component. You can specify a priority option when calling addComponent to avoid this warning. 11:48:52 AM\r\n\r\n\r\n WARN Overriding ClientOnly component. You can specify a priority option when calling addComponent to avoid this warning. 11:48:52 AM\r\n\r\n\r\n WARN Overriding DevOnly component. You can specify a priority option when calling addComponent to avoid this warning. 11:48:52 AM\r\n\r\n\r\n WARN Overriding ServerPlaceholder component. You can specify a priority option when calling addComponent to avoid this warning. 11:48:52 AM\r\n\r\n\r\n WARN Overriding NuxtLink component. You can specify a priority option when calling addComponent to avoid this warning. 11:48:52 AM\r\n\r\n\r\n WARN Overriding NuxtLoadingIndicator component. You can specify a priority option when calling addComponent to avoid this warning. 11:48:52 AM\r\n\r\n\r\n WARN Overriding NuxtImg component. You can specify a priority option when calling addComponent to avoid this warning. 11:48:52 AM\r\n\r\n\r\n WARN Overriding NuxtPicture component. You can specify a priority option when calling addComponent to avoid this warning. 11:48:52 AM\r\n\r\nℹ Building client... 11:48:52 AM\r\nℹ vite v4.5.0 building for production... 11:48:52 AM\r\ntransforming (1) node_modules/nuxt/dist/app/entry.js\r\n\u003C--- Last few GCs --->\r\n\r\n[104212:0x66c26f0] 20883 ms: Mark-sweep 3882.9 (4134.0) -> 3876.9 (4129.8) MB, 1116.9 / 0.0 ms (average mu = 0.139, current mu = 0.017) allocation failure; scavenge might not succeed\r\n[104212:0x66c26f0] 21999 ms: Mark-sweep 3885.4 (4137.1) -> 3881.2 (4134.1) MB, 1103.2 / 0.0 ms (average mu = 0.079, current mu = 0.011) allocation failure; scavenge might not succeed\r\n\r\n\r\n\u003C--- JS stacktrace --->\r\n\r\nFATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory\r\n 1: 0xb87bc0 node::Abort() [node]\r\n 2: 0xa96834 [node]\r\n 3: 0xd687f0 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]\r\n 4: 0xd68b97 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]\r\n 5: 0xf462a5 [node]\r\n 6: 0xf471a8 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [node]\r\n 7: 0xf576b3 [node]\r\n 8: 0xf58528 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]\r\n 9: 0xf32e8e v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]\r\n10: 0xf34257 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]\r\n11: 0xf147a0 v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) [node]\r\n12: 0xf0bd6c v8::internal::FactoryBase\u003Cv8::internal::Factory>::AllocateRawArray(int, v8::internal::AllocationType) [node]\r\n13: 0xf0bee5 v8::internal::FactoryBase\u003Cv8::internal::Factory>::NewFixedArrayWithFiller(v8::internal::Handle\u003Cv8::internal::Map>, int, v8::internal::Handle\u003Cv8::internal::Oddball>, v8::internal::AllocationType) [node]\r\n14: 0x10bb952 [node]\r\n15: 0x10bbc15 [node]\r\n16: 0x12cab1b v8::internal::Runtime_GrowArrayElements(int, unsigned long*, v8::internal::Isolate*) [node]\r\n17: 0x170a079 [node]\r\n[1] 104212 IOT instruction (core dumped) node index.js\r\n```\r\n\r\n### Additional context\r\n\r\nindex.js\r\n\r\n```\r\nclass ProgrammaticUsage {\r\n async generateSite() {\r\n const { resolve } = await import(\"path\");\r\n const { build, loadNuxt } = await import(\"nuxt\");\r\n const { defineNuxtConfig } = await import(\"nuxt/config\");\r\n\r\n let nuxt = undefined;\r\n\r\n const config = defineNuxtConfig({\r\n rootDir: resolve(__dirname, \"rootDir\"),\r\n devtools: { enabled: true },\r\n ssr: false,\r\n buildDir: resolve(__dirname, \"buildDir\"),\r\n generate: { routes: [\"/\"] },\r\n });\r\n const options = {\r\n dev: false,\r\n ready: true,\r\n rootDir: resolve(__dirname, \"rootDir\"),\r\n config,\r\n };\r\n console.log(\"--------------------------------------> options\", options);\r\n\r\n if (!nuxt) nuxt = await loadNuxt(options);\r\n await nuxt.ready(); // Necessary?\r\n console.log(\"--------------------------------------> loadNuxt complete\");\r\n\r\n await build(nuxt);\r\n console.log(\"--------------------------------------> build complete\");\r\n }\r\n}\r\n\r\nconst p = new ProgrammaticUsage();\r\np.generateSite();\r\n```\r\nrootDir/nuxt.config.ts\r\n```\r\n// https://nuxt.com/docs/api/configuration/nuxt-config\r\nexport default defineNuxtConfig({\r\n devtools: { enabled: true },\r\n ssr: false,\r\n modules: [\"@vite-pwa/nuxt\"], // https://vite-pwa-org.netlify.app/frameworks/nuxt\r\n pwa: {\r\n /* your pwa options */\r\n },\r\n generate: {\r\n routes: [\"/\"],\r\n // TODO https://vite-pwa-org.netlify.app/frameworks/nuxt#prompt-for-update-and-offline-ready\r\n },\r\n});\r\n```\r\n\r\n\r\n\r\n### Logs\r\n\r\n_No response_",[3130,3131],{"name":3105,"color":3106},{"name":3051,"color":3052},24197,"Javascript - build(nuxt) doesn't appear to use passed configuration","2023-11-08T21:19:47Z","https://github.com/nuxt/nuxt/issues/24197",0.6634362,{"description":3138,"labels":3139,"number":3146,"owner":3025,"repository":3025,"state":3109,"title":3147,"updated_at":3148,"url":3149,"score":3150},"Following up nuxt/nuxt.js#14330 (editable `app.config`), notes in initial implementation nuxt/framework#6333 and ideas from @Tahul in #6779, i've created this issue to track some potential improvements before releasing this new feature in next RC. (currently support is available on edge. Docs: https://v3.nuxtjs.org/guide/features/app-config)\r\n\r\n- [x] Initial support (#6136)\r\n- [x] Support HMR after destructing objects with deep assignment (#6788)\r\n- [x] Use `defu. defuFn ` to allow _overrriding_ arrays in multi-layer format (#6905)\r\n- [x] Support `updateAppConfig` with deep assignment (#6905)\r\n- [x] Support `app.config` for server (https://github.com/nuxt/nuxt/pull/19489)\r\n- [ ] ~~Allow multiple named exports from `app.config` (@Atinux idea)~~ (canceled because `defineAppConfig` type benefits will be lost this way)\r\n\r\n--- \r\n\r\nResources:\r\n\r\n- Example for custom app configs: https://stackblitz.com/edit/github-al5fwp?file=module.ts,app.vue,custom.config.ts",[3140,3141,3144,3145],{"name":3035,"color":3036},{"name":3142,"color":3143},"discussion","538de2",{"name":3105,"color":3106},{"name":3022,"color":3023},14670,"`app.config` improvements","2023-04-19T08:23:47Z","https://github.com/nuxt/nuxt/issues/14670",0.6639273,["Reactive",3152],{},["Set"],["ShallowReactive",3155],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fATyQY3FNQw03210e377dWGyhL2no4pjOAwY8qHglYFA":-1},"/nuxt/nuxt/19816"]