Hendrik Liebau and GitHub
469e513c5f
Require explicit cacheLife on outer "use cache" when nesting short-lived caches ( #89481 )
...
This PR adds error handling for nested `"use cache"` where the inner
cache has a very short lifetime (zero `revalidate` or `expire` under 5
minutes) but the outer cache doesn't have an explicit `cacheLife()`
call.
Short-lived caches become "dynamic holes" that are excluded from
prerenders. When such a cache is nested inside another `"use cache"`
without an explicit `cacheLife`, the outer cache's lifetime would
silently become short too via
[propagation](https://nextjs.org/docs/app/api-reference/functions/cacheLife#nested-caching-behavior ),
which can lead to unexpected behavior. To prevent this accidental
misconfiguration, Next.js now throws an error during prerendering,
requiring developers to explicitly declare their intent by adding
`cacheLife()` to the outer cache.
The implementation tracks whether `revalidate` and `expire` were
explicitly set via `hasExplicitRevalidate` and `hasExplicitExpire` flags
on the collected cache result. Errors are wrapped with
`wrapAsInvalidDynamicUsageError` to capture proper stack traces and
prevent userland try/catch from suppressing the build error.
Documentation has been updated with a new "Prerendering behavior"
section in the `cacheLife` API reference explaining how short-lived
caches become dynamic holes, and a "Nested short-lived caches"
subsection with examples showing how to fix the error.
closes NAR-761
2026-02-05 15:39:08 +00:00
..
2023-10-13 15:40:14 -04:00
2024-11-19 09:44:42 +00:00
2025-06-16 13:42:20 +01:00
2023-07-05 19:22:34 -07:00
2023-07-05 19:22:34 -07:00
2025-10-22 12:41:45 +02:00
2025-04-24 07:28:50 -05:00
2025-12-12 14:51:29 +01:00
2025-04-24 07:28:50 -05:00
2025-05-12 08:32:57 -05:00
2025-05-07 10:09:12 +01:00
2025-10-18 16:03:42 -07:00
2025-04-25 08:08:57 +01:00
2025-04-25 08:08:57 +01:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-05-15 14:26:19 +01:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-04-25 08:08:57 +01:00
2023-07-05 06:11:16 -07:00
2025-05-15 14:26:19 +01:00
2025-08-21 21:05:20 +00:00
2025-06-16 13:42:20 +01:00
2023-07-05 06:11:16 -07:00
2025-04-25 08:08:57 +01:00
2023-07-05 06:11:16 -07:00
2025-10-17 16:13:26 +02:00
2023-07-05 06:11:16 -07:00
2026-01-27 16:50:49 +01:00
2026-01-27 16:50:49 +01:00
2024-11-19 08:58:29 +00:00
2024-11-08 14:48:55 +00:00
2023-07-05 06:11:16 -07:00
2023-10-19 13:32:47 +00:00
2025-09-23 15:31:35 +02:00
2025-10-17 20:03:13 +02:00
2024-11-19 07:56:55 +00:00
2025-12-12 14:51:29 +01:00
2023-07-05 06:11:16 -07:00
2025-01-03 23:17:14 +00:00
2025-04-24 07:28:50 -05:00
2025-06-16 13:42:20 +01:00
2024-11-07 08:58:43 +00:00
2023-07-05 06:11:16 -07:00
2025-05-08 13:11:38 +01:00
2025-04-22 08:44:58 -05:00
2025-05-21 15:43:02 +01:00
2024-11-08 14:48:55 +00:00
2024-11-07 08:58:43 +00:00
2023-07-05 06:11:16 -07:00
2025-06-10 06:52:38 -05:00
2024-11-19 09:44:42 +00:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2024-11-19 07:56:55 +00:00
2024-11-07 08:58:43 +00:00
2023-07-05 06:11:16 -07:00
2025-05-07 10:09:12 +01:00
2025-05-07 10:09:12 +01:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2024-11-19 09:44:42 +00:00
2023-07-05 06:11:16 -07:00
2025-10-17 20:03:13 +02:00
2023-07-05 06:11:16 -07:00
2024-11-19 09:44:42 +00:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-04-24 07:28:50 -05:00
2023-07-05 06:11:16 -07:00
2024-11-19 09:44:42 +00:00
2025-04-24 13:40:54 -05:00
2025-04-25 08:16:35 -05:00
2025-05-08 13:11:38 +01:00
2023-09-13 11:06:29 -05:00
2023-07-05 06:11:16 -07:00
2025-04-24 13:40:54 -05:00
2025-04-24 13:40:54 -05:00
2024-11-08 14:48:55 +00:00
2024-11-04 23:16:21 +00:00
2023-09-13 11:06:29 -05:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-05-21 15:43:02 +01:00
2025-10-09 14:31:58 +02:00
2026-02-04 22:03:38 +01:00
2023-07-05 06:11:16 -07:00
2025-08-26 14:04:27 +02:00
2025-10-20 19:58:07 +00:00
2025-09-30 15:21:52 +02:00
2024-08-22 10:05:00 -05:00
2023-07-05 06:11:16 -07:00
2023-12-16 14:13:17 -06:00
2024-11-19 09:44:42 +00:00
2023-07-05 06:11:16 -07:00
2025-10-17 20:03:13 +02:00
2025-04-24 13:40:54 -05:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-04-25 08:16:35 -05:00
2025-06-10 06:52:38 -05:00
2023-07-05 06:11:16 -07:00
2023-10-11 21:10:44 +00:00
2025-04-15 16:00:54 +01:00
2025-08-26 14:04:27 +02:00
2025-08-26 14:04:27 +02:00
2024-11-08 14:48:55 +00:00
2025-10-20 19:26:30 -07:00
2024-11-06 08:07:02 +00:00
2023-07-05 06:11:16 -07:00
2025-10-08 13:37:53 -07:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-05-27 10:30:17 +01:00
2025-11-21 11:11:12 +01:00
2024-11-19 07:56:55 +00:00
2023-07-05 06:11:16 -07:00
2025-10-17 16:13:26 +02:00
2023-07-05 06:11:16 -07:00
2025-04-25 08:16:35 -05:00
2026-02-05 15:39:08 +00:00
2024-11-19 09:44:42 +00:00
2024-11-28 15:19:47 +01:00
2024-11-19 07:56:55 +00:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-05-08 13:11:38 +01:00
2025-05-08 13:11:38 +01:00
2025-10-02 14:40:14 +02:00
2025-08-14 16:36:44 +02:00
2025-05-08 13:11:38 +01:00
2025-04-15 16:00:54 +01:00
2025-06-03 16:44:51 -07:00
2025-08-20 15:23:31 +00:00
2025-06-03 16:44:51 -07:00
2025-08-20 15:23:31 +00:00
2025-12-19 18:05:06 +01:00
2025-12-19 18:05:06 +01:00
2025-06-03 16:44:51 -07:00
2025-08-20 15:23:31 +00:00
2026-02-04 22:03:38 +01:00
2026-02-04 22:03:38 +01:00
2026-02-04 22:03:38 +01:00
2025-07-17 19:30:28 -06:00
2025-07-17 19:30:28 -06:00
2025-07-17 19:30:28 -06:00
2024-11-19 08:58:29 +00:00
2025-10-17 20:03:13 +02:00
2025-04-15 15:39:01 +00:00
2025-11-24 14:29:52 +01:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-04-23 21:50:55 +09:00
2025-04-24 13:40:54 -05:00
2025-10-08 16:32:05 +02:00
2025-05-12 08:32:57 -05:00
2023-07-05 06:11:16 -07:00
2024-11-19 07:56:55 +00:00
2024-11-04 23:16:21 +00:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2024-11-19 08:50:01 +00:00
2025-05-08 13:11:38 +01:00
2024-11-07 08:58:43 +00:00
2025-05-07 10:09:12 +01:00
2023-07-05 06:11:16 -07:00
2025-04-24 13:40:54 -05:00
2025-04-24 13:40:54 -05:00
2025-04-24 13:40:54 -05:00
2025-10-17 20:03:13 +02:00
2025-08-21 21:05:20 +00:00
2024-11-07 08:58:43 +00:00
2024-11-07 08:58:43 +00:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-10-17 20:03:13 +02:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-04-24 07:28:50 -05:00
2024-11-07 08:58:43 +00:00
2024-11-19 07:56:55 +00:00
2024-11-19 07:56:55 +00:00
2023-07-05 06:11:16 -07:00
2024-11-08 14:48:55 +00:00
2024-11-19 08:58:29 +00:00
2023-08-15 02:17:40 +00:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-04-24 07:28:50 -05:00
2025-04-24 07:28:50 -05:00
2024-11-06 08:35:52 +00:00
2023-11-08 16:14:10 +00:00
2024-10-20 23:00:23 +00:00
2025-11-21 11:11:12 +01:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-10-17 16:13:26 +02:00
2025-10-17 16:13:26 +02:00
2025-10-17 16:13:26 +02:00
2025-10-17 16:13:26 +02:00
2025-10-17 16:13:26 +02:00
2025-10-17 16:13:26 +02:00
2023-07-05 06:11:16 -07:00
2025-05-15 14:26:19 +01:00
2025-04-25 08:16:35 -05:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2024-11-05 07:28:23 +00:00
2025-10-09 14:03:01 -07:00
2023-07-05 06:11:16 -07:00
2023-07-05 06:11:16 -07:00
2025-05-08 13:11:38 +01:00
2025-05-08 13:11:38 +01:00
2025-10-09 15:20:52 -06:00
2025-04-22 08:44:58 -05:00
2025-04-25 08:08:57 +01:00
2023-07-05 06:11:16 -07:00
2025-04-24 07:28:50 -05:00
2024-11-08 11:20:34 -08:00
2025-10-22 12:41:45 +02:00
2024-11-06 08:16:40 +00:00
2023-07-05 06:11:16 -07:00
2024-11-08 14:48:55 +00:00
2025-04-15 16:00:54 +01:00
2025-04-15 15:39:01 +00:00
2025-05-12 08:32:57 -05:00
2024-11-07 08:58:43 +00:00