Wyatt Johnson and GitHub
3cd8a23446
feat(cache-components): require non-empty generateStaticParams for validation ( #85135 )
...
### What?
This PR adds build-time validation that requires `generateStaticParams`
to return at least one result when Cache Components (experimental
`cacheComponents` feature) is enabled.
### Why?
Previously, users could return an empty array (`[]`) from
`generateStaticParams` to indicate a route should be treated statically
without providing specific parameter values. This pattern has a critical
issue with Cache Components:
**The Problem:**
- With Cache Components enabled, accessing `params` is treated as a
dynamic API usage
- When `generateStaticParams` returns empty results, Next.js cannot
perform build-time validation to detect if the route accesses other
dynamic APIs (like `await cookies()`, `await headers()`, or `await
searchParams`)
- This means users could successfully build routes that would fail at
runtime with dynamic API errors
**The Solution:**
- By requiring at least one parameter value, we can execute the route
during build time with real params
- This allows us to validate that the route doesn't make additional
dynamic API calls that would cause runtime failures
- Build-time validation catches configuration errors early, before
deployment
### How?
- Modified `buildAppStaticPaths` in
`packages/next/src/build/static-paths/app.ts` to check if PPR is enabled
and throw error when `generateStaticParams` returns empty array with
Cache Components enabled
- Added comprehensive error documentation at
`errors/empty-generate-static-params.mdx` with migration options
Migration paths provided in error documentation:
1. Return at least one real param (recommended)
2. Use placeholder params (not recommended, bypasses validation)
The breaking change is acceptable because `cacheComponents` is still
experimental and only available in canary releases.
### Related
- Addresses discrepancy discovered with
https://github.com/vercel/next.js/discussions/84925 .
- Fixes https://github.com/vercel/next.js/issues/84801
2025-10-20 18:22:42 -06: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-05-15 14:26:19 +01:00
2025-04-24 07:28:50 -05: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
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-10-20 18:22:42 -06: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
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
2025-10-06 10:32:02 -07: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
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-09-02 23:07:41 +02: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
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-07-17 19:30:28 -06:00
2025-07-17 19:30:28 -06:00
2025-10-18 14:13:44 -07:00
2025-06-03 16:44:51 -07:00
2025-08-20 15:23:31 +00: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-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-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-05-27 14:58:40 +00: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-09-27 22:44: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