Loading...
Loading...
Nuxt 4 app patterns for hydration safety, performance, route rules, lazy loading, and SSR-safe data fetching with useFetch and useAsyncData.
npx skill4agent add affaan-m/everything-claude-code nuxt4-patternsuseFetchuseAsyncData$fetchDate.now()Math.random()onMounted()import.meta.clientClientOnly.client.vueuseRoute()vue-routerroute.fullPathssr: falseawait useFetch()useAsyncData()$fetch()useAsyncData()useAsyncData()$fetch()lazy: trueuseLazyFetch()useLazyAsyncData()status === 'pending'server: falsepickconst route = useRoute()
const { data: article, status, error, refresh } = await useAsyncData(
() => `article:${route.params.slug}`,
() => $fetch(`/api/articles/${route.params.slug}`),
)
const { data: comments } = await useFetch(`/api/articles/${route.params.slug}/comments`, {
lazy: true,
server: false,
})routeRulesnuxt.config.tsexport default defineNuxtConfig({
routeRules: {
'/': { prerender: true },
'/products/**': { swr: 3600 },
'/blog/**': { isr: true },
'/admin/**': { ssr: false },
'/api/**': { cache: { maxAge: 60 * 60 } },
},
})prerenderswrisrssr: falsecacheredirectLazyv-if<template>
<LazyRecommendations v-if="showRecommendations" />
<LazyProductGallery hydrate-on-visible />
</template>defineLazyHydrationComponent()NuxtLinkuseFetchuseAsyncData$fetch