In Server Components, Next can cache `fetch()` results and dedupe requests. You can opt out with `cache: 'no-store'` or set revalidation with `next: { revalidate: seconds }` to control freshness.
const res = await fetch('https://example.com/api', {
next: { revalidate: 60 },
})In the App Router, `fetch()` used in **Server Components** participates in Next.js caching:
By default, Next caches GET-like requests when it can (similar to `force-cache`). You can opt out or control freshness using revalidation.
Disable caching (SSR-like):
await fetch(url, { cache: 'no-store' })Revalidate after N seconds (ISR-like):
await fetch(url, { next: { revalidate: 60 } })Reading request-specific values like `cookies()` or `headers()` can make a route dynamic, which affects caching.