---
title: "Constant fetch uncached on a dynamic route (data/uncached-fetch)"
description: "Since Next.js 15 fetch is not cached by default: on a route rendered per request, a fetch of a constant URL refetches the same data on every request."
url: http://localhost:4173/rules/data/uncached-fetch
updated: 2026-11-11
---

# Constant fetch uncached on a dynamic route

> `data/uncached-fetch` is a vetd rule. It flags: Constant fetch uncached on a dynamic route. It runs on every `check`, together with the TypeScript check.

| Fact | Value |
| --- | --- |
| Rule id | `data/uncached-fetch` |
| Severity | warning |
| Group | Data fetching |
| Tags | performance, nextjs-16 |

## Why it matters

Since Next.js 15 fetch is not cached by default: on a route rendered per request, a fetch of a constant URL refetches the same data on every request.

## How to fix it

Add `next: { revalidate: N }` (or `tags`), `cache: "force-cache"`, or move the call into a "use cache" function.

## Credit

Based on work by:

- [Next.js team](https://nextjs.org): fetch is not cached by default since Next.js 15; caching must be opted into.

## References

- [Caching](https://nextjs.org/docs/app/getting-started/caching), Next.js
- [Fetching Data](https://nextjs.org/docs/app/getting-started/fetching-data), Next.js
- [use cache](https://nextjs.org/docs/app/api-reference/directives/use-cache), Next.js

## See it

Demos in the vetd Lab:

- ['use cache' and cacheLife](http://localhost:4173/lab/nextjs/use-cache-and-cachelife)

## Related rules

- [`data/force-dynamic-layout`](http://localhost:4173/rules/data/force-dynamic-layout.md)
- [`next/revalidate-tag-profile`](http://localhost:4173/rules/next/revalidate-tag-profile.md)

## Get this text from vetd

MCP: call `explain` with `{ "diagnosticId": "data/uncached-fetch" }`. CLI: `npx vetd explain data/uncached-fetch`.

---

[All 92 rules](http://localhost:4173/rules.md) · Previous: [`data/force-dynamic-layout`](http://localhost:4173/rules/data/force-dynamic-layout.md) · Next: [`data/serial-route-fetch`](http://localhost:4173/rules/data/serial-route-fetch.md)
