\n\u003C/template>\n\n\u003Cscript setup>\n\tconst keyword = ref('');\n\n\twatchEffect(() => {\n\t\tconsole.log('🚀 ~ watchEffect ~ keyword.value:', keyword.value);\n\t});\n\u003C/script>\n```\n\n\n\n```vue\n\u003Ctemplate>\n\t\u003CUInput v-model=\"keyword\" />\n\u003C/template>\n\n\u003Cscript setup>\n\tconst keyword = ref('');\n\n\twatchEffect(() => {\n\t\tconsole.log('🚀 ~ watchEffect ~ keyword.value:', keyword.value);\n\t});\n\u003C/script>\n```\n\n### Logs\n\n```shell-script\n\n```",[2918,2919],{"name":2868,"color":2869},{"name":2920,"color":2921},"triage","ffffff",2713,"ui","UInput Component Lacks Proper Handling of compositionstart and compositionend","2024-11-21T06:40:46Z","https://github.com/nuxt/ui/issues/2713",0.7617685,{"description":2929,"labels":2930,"number":2933,"owner":2871,"repository":2923,"state":2873,"title":2934,"updated_at":2935,"url":2936,"score":2937},"### Environment\n\n- Operating System: Darwin\n- Node Version: v20.15.1\n- Nuxt Version: 3.14.159\n- CLI Version: 3.17.2\n- Nitro Version: 2.10.4\n- Package Manager: pnpm@9.14.3\n- Builder: -\n- User Config: -\n- Runtime Modules: -\n- Build Modules: -\n\n\n### Version\n\nv2.18.6\n\n### Reproduction\n\nGo here:\n\nhttps://ui.nuxt.com/components/tabs#default-index\n\nReload the page\n\n### Description\n\nWhen tabs have an initial index other than `0` they visually transition from the left tab to the index / v-model # tab.\n\nHappy to PR this.\n\n### Additional context\n\n\n\n### Logs\n\n```shell-script\n\n```",[2931,2932],{"name":2868,"color":2869},{"name":2920,"color":2921},3084,"[Tabs] non-0 `index` / `v-model` always transitions from 0","2025-01-13T13:45:29Z","https://github.com/nuxt/ui/issues/3084",0.7637467,{"description":2939,"labels":2940,"number":2945,"owner":2871,"repository":2871,"state":2873,"title":2946,"updated_at":2947,"url":2948,"score":2949},"### Environment\n\n\n- Operating System: Linux\n- Node Version: v18.20.3\n- Nuxt Version: 3.13.2\n- CLI Version: 3.14.0\n- Nitro Version: 2.9.7\n- Package Manager: npm@10.2.3\n- Builder: -\n- User Config: -\n- Runtime Modules: -\n- Build Modules: -\n\n\n### Reproduction\n\nhttps://stackblitz.com/edit/github-1ys8s7?file=useApi.ts\n\n### Describe the bug\n\nWe recently ran into an edge case with `useAsyncData`. In some specific scenarios using `getCachedData` and `transform` it seems that the inference is broken and it expects the return value of the handler function to match the return value of `getCachedData`. \n\n```ts\nimport { useNuxtApp, useAsyncData } from 'nuxt/app';\nimport { toValue } from 'vue';\n\ntype ApiResponseFoo = { foo: string };\ntype ApiResponseBar = { bar: string };\n\nconst API = {\n foo: async function foo(): Promise\u003CApiResponseFoo> {\n return Promise.resolve({\n foo: 'hello, world',\n });\n },\n bar: async function bar(): Promise\u003CApiResponseBar> {\n return Promise.resolve({\n bar: 'hello, world',\n });\n },\n};\n\nexport default function useFooAPI() {\n const nuxtApp = useNuxtApp();\n return useAsyncData(\n async () => { \n return API.foo(); // Type error here, expects string\n },\n {\n transform: (response) => response.foo,\n getCachedData: (key: string) => {\n return (toValue(nuxtApp._asyncData[key]?.data) as string) ?? undefined;\n },\n }\n );\n}\n```\n\nIt seems that all the stars need to be misaligned for this error to occur. Making any of the following changes clears the error:\n\n- Remove the explicit `key: string` typing in `getCachedData`\n- Use the `nuxtApp` instance that is passed into `getCachedData` instead of calling `useNuxtApp()`\n- Adding explicit typing to the `transform` e.g. `(response: ApiResponseFoo) => response.foo`\n- Changing the definition of `getCachedData` to have `undefined` within the `NoInfer`: `(key: string, nuxtApp: NuxtApp) => NoInfer\u003CDataT | undefined>`\n\nIt's a bit beyond my TypeScript knowledge to say why this is happening, but I thought I'd report it here in case anyone else has ideas. \n\nDoes it make sense to make the `NoInfer` change in Nuxt? While this specific bug is quite easy to workaround, perhaps there are other cases where the inference is incorrect?\n\n### Additional context\n\nRelated issues:\n\nhttps://github.com/nuxt/nuxt/pull/25946\nhttps://github.com/nuxt/nuxt/pull/28187\n\n### Logs\n\n_No response_",[2941,2942],{"name":2894,"color":2895},{"name":2943,"color":2944},"types","2875C3",29567,"Incorrect type inference in `useAsyncData` with `transform` and `getCachedData`","2025-02-11T18:25:03Z","https://github.com/nuxt/nuxt/issues/29567",0.7652861,{"description":2951,"labels":2952,"number":2953,"owner":2871,"repository":2954,"state":2873,"title":2955,"updated_at":2956,"url":2957,"score":2958},"OS: macOS latest\r\nBrowser: chrome latest\r\nNuxt version: 3.8.1\r\nnuxt-icon version: 0.6.6\r\n@nuxtjs/storybook version: 7.0.0\r\n\r\nhow can i do?\r\n\r\nI've tried many times to disable the vite plugin, but failed to clear the error\r\n\r\n\r\n\r\n\r\n",[],128,"icon","[BUG REPORT] An error occurred when using with nuxt-storybook.","2024-07-25T13:03:23Z","https://github.com/nuxt/icon/issues/128",0.7657089,{"description":2960,"labels":2961,"number":2965,"owner":2871,"repository":2966,"state":2967,"title":2968,"updated_at":2969,"url":2970,"score":2971},"Any usage of NuxtLink lead to an error \r\n\r\n```\r\n[Vue warn]: Failed to resolve component: RouterLink\r\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement. \r\n at \u003CNuxtLink to= { name: 'index', params: { userId: '123' } } class=\"text-neutral-501\" onClick=fn\u003ConLinkClick> > \r\n at \u003CUserLink userId=\"123\" ref=\"VTU_COMPONENT\" > \r\n at \u003CVTUROOT>\r\n```\r\n\r\n[Reproduction](https://stackblitz.com/edit/nuxt-vitest-rgzrs9?file=components%2FUserLink.vue)\r\n\r\n",[2962],{"name":2963,"color":2964},"vitest-environment","b60205",590,"test-utils","closed","Failed to resolve component: RouterLink","2023-12-02T00:37:12Z","https://github.com/nuxt/test-utils/issues/590",0.72200257,{"description":2973,"labels":2974,"number":2981,"owner":2871,"repository":2871,"state":2967,"title":2982,"updated_at":2983,"url":2984,"score":2985},"### Describe the feature\n\nSeveral composable functions ( `useState`, `useFetch`, `useAsyncData`, `useLazyAsyncData`, `useLazyFetch`) provide auto-key generation that is unique to the file name and line number of the instance of function call. However, this makes it impossible to create your own wrappers around these functions, because then the auto-generated key will always be the same for any wrapper-function call.\r\n\r\n```ts\r\n// composables/useAsyncSpecifiedData.ts\r\nexport function useAsyncSpecifiedData(params) {\r\n\t// ... do some work\r\n\tconst handler = createHandler( params )\r\n\tconst options = createOptions( params )\r\n\treturn useAsyncData(handler, options) // \u003C- the unique key always generated exactly for this file+line\r\n}\r\n```\r\nI would like to have oportynity to somehow expand keyed functions with myown\r\nhttps://github.com/nuxt/framework/blob/51bc6e44fef6e4a249946ba910a497089b089a64/packages/vite/src/plugins/composable-keys.ts#L15-L17\r\n\r\nSo that nuxt will generates a unique key directly for the wrapper function call, which will be passed down in `useAsyncData`. Since it is work for `useLazyAsyncData`\r\nhttps://github.com/nuxt/framework/blob/51bc6e44fef6e4a249946ba910a497089b089a64/packages/nuxt/src/app/composables/asyncData.ts#L263-L274\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://v3.nuxtjs.org/community/contribution).\n- [X] Check existing [discussions](https://github.com/nuxt/framework/discussions) and [issues](https://github.com/nuxt/framework/issues).",[2975,2976,2977,2980],{"name":2891,"color":2892},{"name":2894,"color":2895},{"name":2978,"color":2979},"3.x","29bc7f",{"name":2897,"color":2898},12369,"Ability to add your own keyed functions ","2023-03-07T21:06:18Z","https://github.com/nuxt/nuxt/issues/12369",0.7301501,["Reactive",2987],{},["Set"],["ShallowReactive",2990],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$flxv8nnwL7_5aSNrNuwXq_ZEhJR5cBtAd5u2eiUTUZgc":-1},"/nuxt/ui/3256"]