\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```",[3029,3032],{"name":3030,"color":3031},"pending triage","E99695",{"name":3033,"color":3034},"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.61478466,{"description":3041,"labels":3042,"number":3043,"owner":3019,"repository":3020,"state":3044,"title":3045,"updated_at":3046,"url":3047,"score":3048},"The same of, but with newer version: \r\nError something on nuxt 3.1.0 - ERROR(vue-tsc) Property 'nuxtIcon' does not exist on type 'AppConfig'. #46 \r\n\r\n\r\n`node_modules/.pnpm/nuxt-icon@0.2.10/node_modules/nuxt-icon/dist/runtime/Icon.vue:34:40`\r\n------------------------------\r\n- Operating System: `Linux`\r\n- Node Version: `v18.13.0`\r\n- Nuxt Version: `3.1.2`\r\n- Nitro Version: `2.1.1`\r\n- Package Manager: `yarn@1.22.19`\r\n- Builder: `vite`\r\n- User Config: `typescript`, `ssr`, `runtimeConfig`, `app`, `modules`, `directus`, `meilisearch`\r\n- Runtime Modules: `@nuxtjs/tailwindcss@6.3.1`, `nuxt-directus@3.2.2`, `nuxt-meilisearch@0.1.7`, `nuxt-icon@0.2.10`\r\n- Build Modules: `-`\r\n------------------------------\r\n\r\nMy all packages: \r\n```\r\ndependencies:\r\n@nuxtjs/robots 3.0.0 apexcharts 3.37.0 moment 2.29.4 swiper 9.0.3 vue3-apexcharts 1.4.1 \r\n@nuxtjs/tailwindcss 6.3.1 axios 1.3.2 nuxt-directus 3.2.2 type-check 0.4.0 yarn-upgrade-all 0.7.2 \r\n@vueuse/core 9.12.0 daisyui 2.50.0 sanitize-html 2.9.0 vue-instantsearch 4.8.2 \r\n\r\ndevDependencies:\r\n@commitlint/cli 17.4.2 @typescript-eslint/parser 5.51.0 eslint-plugin-prettier 4.2.1 nuxt-icon 0.2.10 \r\n@commitlint/config-conventional 17.4.2 @vue/eslint-config-standard 8.0.1 eslint-plugin-vue 9.9.0 nuxt-meilisearch 0.1.7 \r\n@types/cypress 1.1.3 eslint 8.33.0 husky 8.0.3 prettier 2.8.3 \r\n@types/sanitize-html 2.8.0 eslint-config-prettier 8.6.0 lint-staged 13.1.0 typescript 4.9.5 \r\n@typescript-eslint/eslint-plugin 5.51.0 eslint-plugin-nuxt 4.0.0 nuxt 3.1.2 vue-tsc 1.0.24 \r\n```\r\n",[],50,"closed","error TS2339: Property 'nuxtIcon' does not exist on type 'AppConfig'.","2023-03-15T16:30:19Z","https://github.com/nuxt/icon/issues/50",0.54549783,{"description":3050,"labels":3051,"number":3052,"owner":3019,"repository":3020,"state":3044,"title":3053,"updated_at":3054,"url":3055,"score":3056},"Recently upgraded Nuxt Icon in my SPA Nuxt app (using Nuxt 3.3 with SSR set to false and strict typescript) and hit a bug when running `npm run generate`.\r\n\r\n```ts\r\n node_modules/nuxt-icon/dist/runtime/IconCSS.vue:6:28 - error TS2339: Property 'nuxtIcon' does not exist on type 'AppConfig'.\r\n\r\n6 const aliases = appConfig?.nuxtIcon?.aliases || {}\r\n ~~~~~~~~\r\n\r\nnode_modules/nuxt-icon/dist/runtime/Icon.vue:11:28 - error TS2339: Property 'nuxtIcon' does not exist on type 'AppConfig'.\r\n\r\n11 const aliases = appConfig?.nuxtIcon?.aliases || {}\r\n ~~~~~~~~\r\n\r\nnode_modules/nuxt-icon/dist/runtime/IconCSS.vue:25:39 - error TS2339: Property 'nuxtIcon' does not exist on type 'AppConfig'.\r\n\r\n\r\n25 if (!props.size && typeof appConfig.nuxtIcon?.size === 'boolean' && !appConfig.nuxtIcon?.size) {\r\n ~~~~~~~~\r\n\r\nnode_modules/nuxt-icon/dist/runtime/Icon.vue:28:44 - error TS2339: Property 'nuxtIcon' does not exist on type 'AppConfig'.\r\n\r\n28 const iconName = computed(() => (appConfig.nuxtIcon?.aliases || {})[props.name] || props.name)\r\n ~~~~~~~~\r\n\r\nnode_modules/nuxt-icon/dist/runtime/IconCSS.vue:28:40 - error TS2339: Property 'nuxtIcon' does not exist on type 'AppConfig'.\r\n\r\n28 const size = props.size || appConfig.nuxtIcon?.size || '1em'\r\n ~~~~~~~~\r\n\r\n\r\nFound 6 errors in 2 files.\r\n\r\nErrors Files\r\n 4 node_modules/nuxt-icon/dist/runtime/IconCSS.vue:6\r\n 2 node_modules/nuxt-icon/dist/runtime/Icon.vue:11\r\n```\r\n\r\nCreated minimal reproduction and posted code on public github repo available here: https://github.com/frasza/nuxt-icon-m-repro-bug",[],62,"error TS2339: Property 'nuxtIcon' does not exist on type 'AppConfig'","2023-06-19T14:11:13Z","https://github.com/nuxt/icon/issues/62",0.5520224,{"description":3058,"labels":3059,"number":3060,"owner":3019,"repository":3020,"state":3044,"title":3061,"updated_at":3062,"url":3063,"score":3064},"Nuxt-icon: 0.4.2\r\nNuxt: 3.6.5\r\n\r\nnode_modules/nuxt-icon/dist/runtime/Icon.vue:29:33 - error TS7053: Element implicitly has an 'any' type because expression of type 'string & {}' can't be used to index type '{}'.\r\n\r\n29 const iconName = computed(() => (appConfig.nuxtIcon?.aliases || {})[props.name] || props.name)\r\n",[],92,"Typescript error","2023-08-07T12:39:25Z","https://github.com/nuxt/icon/issues/92",0.6250744,{"description":3066,"labels":3067,"number":3078,"owner":3019,"repository":3019,"state":3044,"title":3079,"updated_at":3080,"url":3081,"score":3082},"### Environment\r\n\r\nOperating System: Windows_NT\r\nNode Version: v18.0.0\r\nNuxt Version: 3.3.3\r\nNitro Version: 2.3.2\r\nPackage Manager: npm@9.4.2\r\nBuilder: vite\r\n\r\n### Reproduction\r\n\r\nhttps://github.com/iabirkhan/Nuxt-3-Minimal\r\n\r\n### Describe the bug\r\n\r\nwith default nuxt 3.3.3 setup or upgraded version shows type error in nuxt,config.ts. \r\n\r\n- *** This type error shows on minimal setup:\r\n\r\nArgument of type '{ app: { head: { charset: string; viewport: string; }; }; }' is not assignable to parameter of type 'NuxtConfig'.\r\n Object literal may only specify known properties, and 'app' does not exist in type 'NuxtConfig'.ts(2345)\r\n\r\n- *** Extending config also shows type error on plugins, css, build, vite\r\n\r\n```\r\nexport default defineNuxtConfig({\r\n// app, plugins, css, build, vite not working\r\n app: {\r\n head: {\r\n title: \"Nuxt 3 App\",\r\n charset: \"utf-8\",\r\n viewport: \"width=device-width, initial-scale=2\",\r\n },\r\n }, // if app config removed plugins dosen't work\r\n plugins: [], // shows error one after another\r\n css: [],\r\n build: {},\r\n vite: {},\r\n// modules, typescript working\r\n modules: [],\r\n typescript: {\r\n strict: true,\r\n },\r\n});\r\n```\r\n\r\nHopefully explained the problem clearly, please check. \r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Logs\r\n\r\n_No response_",[3068,3071,3074,3075],{"name":3069,"color":3070},"types","2875C3",{"name":3072,"color":3073},"3.x","29bc7f",{"name":3030,"color":3031},{"name":3076,"color":3077},"needs reproduction","FBCA04",20040,"shows type error on nuxt.config.ts for app meta, plugins, css, build, vite","2023-12-05T07:21:45Z","https://github.com/nuxt/nuxt/issues/20040",0.629892,{"description":3084,"labels":3085,"number":3093,"owner":3019,"repository":3019,"state":3044,"title":3094,"updated_at":3095,"url":3096,"score":3097},"### Environment\n\n- Operating System: `Linux`\r\n- Node Version: `v16.14.2`\r\n- Nuxt Version: `3.3.3`\r\n- Nitro Version: `2.3.2`\r\n- Package Manager: `npm@7.17.0`\r\n- Builder: `vite`\r\n- User Config: `runtimeConfig`\r\n- Runtime Modules: `-`\r\n- Build Modules: `-`\n\n### Reproduction\n\nhttps://stackblitz.com/edit/github-2l517b\r\n\r\n```\r\n$ npm i\r\n$ npm run typecheck\r\n```\r\n\n\n### Describe the bug\n\n\r\nThe code below gives an error.\r\n\r\n```vue\r\n\u003Ctemplate>\r\n \u003Cdiv>\r\n \u003Ch1>index\u003C/h1>\r\n \u003Cp>{{ $config.public.flag }}\u003C/p>\u003C!-- type error -->\r\n \u003C/div>\r\n\u003C/template>\r\n```\r\n\r\n\r\n```vue\r\n\u003Cscript lang=\"ts\">\r\nexport default defineNuxtComponent({\r\n created() {\r\n console.log(this.$config.public.flag); // type error\r\n },\r\n});\r\n\u003C/script>\r\n```\r\n\r\nI paste the log when type checking at the bottom.\r\n\r\nThis is a problem that occurs from v3.3.3.\r\nIt did not occur with v3.2.3. (https://stackblitz.com/edit/github-2l517b-cwvb5p)\r\n\r\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n❯ npm run typecheck\r\n$ nuxt typecheck\r\nNuxi 3.3.3 16:52:14\r\npages/index.vue:4:11 - error TS2339: Property '$config' does not exist on type '{ $: ComponentInternalInstance; $data: {}; $props: Partial\u003C{}> & Omit\u003CReadonly\u003CExtractPropTypes\u003C{}>> & VNodeProps & AllowedComponentProps & ComponentCustomProps, never>; ... 10 more ...; $watch\u003CT extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => ...'.\r\n\r\n4 \u003Cp>{{ $config.public.flag }}\u003C/p>\r\n ~~~~~~~\r\n\r\npages/option.vue:4:22 - error TS2339: Property '$config' does not exist on type 'CreateComponentPublicInstance\u003C{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, {}, {}, false, {}, OptionTypesType\u003C{}, {}, {}, {}, {}, {}>, ... 5 more ..., {}>'.\r\n\r\n4 console.log(this.$config.public.flag);\r\n ~~~~~~~\r\n\r\npages/option.vue:12:11 - error TS2339: Property '$config' does not exist on type '{ $: ComponentInternalInstance; $data: {}; $props: Partial\u003C{}> & Omit\u003CReadonly\u003CExtractPropTypes\u003C{}>> & VNodeProps & AllowedComponentProps & ComponentCustomProps, never>; ... 10 more ...; $watch\u003CT extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => ...'.\r\n\r\n12 \u003Cp>{{ $config.public.flag }}\u003C/p>\r\n ~~~~~~~\r\n\r\n\r\nFound 3 errors in 2 files.\r\n\r\nErrors Files\r\n 1 pages/index.vue:4\r\n 2 pages/option.vue:4\r\n\r\n ERROR Command failed with exit code 2: vue-tsc --noEmit 16:52:17\r\n\r\n at makeError (file://node_modules/nuxi/dist/shared/nuxi.63bda57d.mjs:640:11)\r\n at handlePromise (file://node_modules/nuxi/dist/shared/nuxi.63bda57d.mjs:1129:26)\r\n at async Object.invoke (file://node_modules/nuxi/dist/chunks/typecheck.mjs:69:7)\r\n at async _main (file://node_modules/nuxi/dist/cli.mjs:64:20)\n```\n",[3086,3087,3088,3091],{"name":3069,"color":3070},{"name":3072,"color":3073},{"name":3089,"color":3090},"bug","d73a4a",{"name":3092,"color":3077},"🔨 p3-minor",20069,"`$config` type error","2023-04-04T13:34:42Z","https://github.com/nuxt/nuxt/issues/20069",0.6328621,{"description":3099,"labels":3100,"number":3104,"owner":3019,"repository":3019,"state":3044,"title":3105,"updated_at":3106,"url":3107,"score":3108},"### Describe the feature\n\n# vueCompilerOptions in nuxt.config.ts\r\n\r\nCurrently, the `defineNuxtConfig`'s `typescript.tsConfig.vueCompilerOptions` property is not officially supported on type-level: the compiler will yell at you if you try to use it.\r\nHowever, the configuration options defined in `vueCompilerOptions` still work as intended.\r\n\r\nEnhancing the `tsConfig` interface locally to include the `vueCompilerOptions` property is a possible workaround (the `VueCompilerOptions` type is currently available and exported from vue's languageModule), but an official solution would be much appreciated.\r\n\r\nYou can find this reproduction [on stackblitz](https://stackblitz.com/edit/github-58xcrx?file=README.md)\r\n\r\n### Prerequisites\r\n\r\n- A minimal Nuxt app started with `npx nuxi@latest init`\r\n- `vue-tsc` and `typescript` installed as dev dependencies (see [Nuxt's TypeScript documentation](https://nuxt.com/docs/guide/concepts/typescript#type-checking))\r\n- A `nuxt.config.ts` file with the `vueCompilerOptions` property added to the `tsConfig` property. To observe the behavior, the easiest way is to add the `strictTemplates` property to the `vueCompilerOptions` object.\r\n\r\n### Steps to reproduce\r\n\r\n1. Create a component and define a prop in the component using the `defineProps` macro and passing it the `Props` type argument\r\n2. Use your new component in a page and pass it the prop you defined (this is not really necessary, but it's a good way to observe the behavior)\r\n3. Pass your component a prop that is not defined in the component's `props`, (e.g. `:nonExistentProp=\"true\"`)\r\n4. Save and run `npx nuxi typecheck`. You l'll get one error from the `nuxt.config.ts` file, saying that the `vueCompilerOptions` property is not allowed, and one from the page where you used the component, saying that `non-existent-prop` is not defined in the component's `Props` type.\r\n\n\n### Additional information\n\n- [X] Would you be willing to help implement this feature?\n- [ ] Could this feature be implemented as a module?\n\n### Final checks\n\n- [X] Read the [contribution guide](https://nuxt.com/docs/community/contribution).\n- [X] Check existing [discussions](https://github.com/nuxt/nuxt/discussions) and [issues](https://github.com/nuxt/nuxt/issues).",[3101,3102,3103],{"name":3069,"color":3070},{"name":3072,"color":3073},{"name":3092,"color":3077},25874,"'vueCompilerOptions' does not exist in type 'tsConfig' in 'defineNuxtConfig'","2024-02-27T15:31:48Z","https://github.com/nuxt/nuxt/issues/25874",0.6348664,{"description":3110,"labels":3111,"number":3115,"owner":3019,"repository":3019,"state":3044,"title":3116,"updated_at":3117,"url":3118,"score":3119},"### Environment\r\n\r\n- Operating System: `Darwin`\r\n- Node Version: `v18.8.0`\r\n- Nuxt Version: `3.1.1`\r\n- Nitro Version: `2.1.0`\r\n- Package Manager: `npm@8.18.0`\r\n- Builder: `vite`\r\n- User Config: `-`\r\n- Runtime Modules: `-`\r\n- Build Modules: `-`\r\n\r\n\r\n### Reproduction\r\n\r\n*\r\n\r\n### Describe the bug\r\n\r\nAfter updating from 3.0.0 to 3.1.1\r\nI'm getting errors from vue-tsc like Property 'x' does not exist on type 'AppConfig' \r\n\r\nI was trying to declare interface AppConfigInput in index.d.ts like here\r\nhttps://nuxt.com/docs/guide/directory-structure/app-config#manually-typing-app-config\r\nI also added to nuxt.config.ts\r\nexperimental: { configSchema: true, },\r\n\r\ninsideapp.config.ts I have an empty object.\r\nexport default defineAppConfig({})\r\nI'm setting appConfig dynamically based on process.env (in nuxt.config.ts), ofc it has valid types there\r\nBut it should be merged anyway.\r\n\r\n### Additional context\r\n\r\nhttps://github.com/nuxt/nuxt/pull/18410\r\n\r\n### Logs\r\n\r\n_No response_",[3112,3113,3114],{"name":3072,"color":3073},{"name":3030,"color":3031},{"name":3076,"color":3077},18555,"3.1.1 - Typing AppConfig stopped work after upgrade","2023-03-20T15:38:42Z","https://github.com/nuxt/nuxt/issues/18555",0.63548267,{"description":3121,"labels":3122,"number":3130,"owner":3019,"repository":3019,"state":3044,"title":3131,"updated_at":3132,"url":3133,"score":3134},"### Environment\r\n\r\n------------------------------\r\n- Operating System: Linux\r\n- Node Version: v18.18.0\r\n- Nuxt Version: 3.7.4\r\n- CLI Version: 3.9.0\r\n- Nitro Version: 2.6.3\r\n- Package Manager: npm@9.4.2\r\n- Builder: -\r\n- User Config: devtools, modules, typescript\r\n- Runtime Modules: @nuxtseo/module@2.0.0-beta.15\r\n- Build Modules: -\r\n------------------------------\r\n\r\n### Reproduction\r\n\r\n- minimal changes to nuxt config adding `typeCheck: true` and `compilerOptions.noUncheckedIndexedAccess: true`\r\n\r\nhttps://stackblitz.com/edit/github-vdxk2t?file=nuxt.config.ts\r\n\r\n### Describe the bug\r\n\r\nThis highlights an issue when trying to use tsconfig features e.g. `noUncheckedIndexedAccess` or `noUnusedLocals` etc. in a nuxt project to provide stricter code conformance. Any nuxt module you have installed will also be checked for these same rules.\r\n\r\nThis effectively means you cannot use any of the tsconfig rules for the risk of a module developer not adhering to those same standards.\r\n\r\nNuxt should not be type checking any installed modules as part of build with the same tsconfig rules defined at the project level. Providing access to all tsconfig properties is misleading as they effectively don't work with the nuxt ecosystem unless you have a raw project.\r\n\r\nThe repro and logs below show how this fails for the `@nuxtseo/module` module but this error is present in a number of modules I have tried to use e.g. `content`\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Logs\r\n\r\n```shell-script\r\nERROR 21:54:09\r\n ERROR(vue-tsc) Type '{ icon: string; label: false; ariaLabel: string | undefined; current?: boolean | undefined; disabled?: boolean | undefined; to?: string | undefined; separator?: string | undefined; hideSeparator?: boolean | undefined; ui?: { ...; } | undefined; }' is not assignable to type 'BreadcrumbItemProps'.\r\n Types of property 'to' are incompatible.\r\n Type 'string | undefined' is not assignable to type 'string'.\r\n Type 'undefined' is not assignable to type 'string'.\r\n FILE /home/projects/github-vdxk2t/node_modules/nuxt-seo-ui/dist/runtime/components/Breadcrumb.vue:46:5\r\n\r\n 44 | }\r\n 45 | if (props.homeIcon) {\r\n > 46 | items[0] = {\r\n | ^^^^^^^^\r\n 47 | ...items[0],\r\n 48 | icon: 'material-symbols:home-outline-rounded',\r\n 49 | label: false,\r\n\r\n[vue-tsc] Found 1 error. Watching for file changes. (x3)\r\n```\r\n```\r\n",[3123,3126,3127,3128,3129],{"name":3124,"color":3125},"discussion","538de2",{"name":3069,"color":3070},{"name":3072,"color":3073},{"name":3089,"color":3090},{"name":3092,"color":3077},23609,"`typeCheck` reports errors from modules when using `tsconfig` rules","2023-11-30T07:26:56Z","https://github.com/nuxt/nuxt/issues/23609",0.64696234,["Reactive",3136],{},["Set"],["ShallowReactive",3139],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fsKSYvKTEKwGAvwNFuo4fkhuA7kpkrc8CE1f4HefRy2k":-1},"/nuxt/icon/46"]