fetches Not just initial, but also on watch and refresh Flexible cache strategy control 2. Reactive Key Support Can use computed or ref as key. Automatically refetch when reactive key changes getCachedData: (key, nuxtApp, ctx) => { // Determine caller with ctx.cause // 'initial' | 'watch' | 'refresh:manual' if (ctx.cause === 'initial') { return nuxtApp.payload.data[key] const { data } = useAsyncData('user', () => $fetch('/api/user'), { } return nuxtApp.static.data[key] } }) const userId = ref('1') const key = computed(() => `user-${userId.value}`) const { data } = useAsyncData(key, () => $fetch(`/api/users/${userId.value}`) userId.value = '2' // No need to write watch! // Automatically refetch when key changes ) // Automatically refetch when userId changes