Skip to content

Commit 2e289d6

Browse files
committed
auto-enable clientParamParsing and clientSegmentCache w/ cacheComponents
1 parent 031b8fb commit 2e289d6

File tree

3 files changed

+59
-34
lines changed

3 files changed

+59
-34
lines changed

packages/next/src/server/config.ts

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1721,59 +1721,68 @@ function enforceExperimentalFeatures(
17211721
}
17221722
}
17231723

1724-
// TODO: Remove this once we've made Client Segment Cache the default.
1724+
// TODO: Remove this once we've made Cache Components the default.
17251725
if (
1726-
process.env.__NEXT_EXPERIMENTAL_PPR === 'true' &&
1726+
process.env.__NEXT_EXPERIMENTAL_CACHE_COMPONENTS === 'true' &&
17271727
// We do respect an explicit value in the user config.
1728-
(config.experimental.clientSegmentCache === undefined ||
1729-
(isDefaultConfig && !config.experimental.clientSegmentCache))
1728+
(config.experimental.cacheComponents === undefined ||
1729+
(isDefaultConfig && !config.experimental.cacheComponents))
17301730
) {
1731-
config.experimental.clientSegmentCache = true
1731+
config.experimental.cacheComponents = true
17321732

17331733
if (configuredExperimentalFeatures) {
17341734
addConfiguredExperimentalFeature(
17351735
configuredExperimentalFeatures,
1736-
'clientSegmentCache',
1736+
'cacheComponents',
17371737
true,
1738-
'enabled by `__NEXT_EXPERIMENTAL_PPR`'
1738+
'enabled by `__NEXT_EXPERIMENTAL_CACHE_COMPONENTS`'
17391739
)
17401740
}
17411741
}
17421742

1743-
// TODO: Remove this once we've made Client Param Parsing the default.
1743+
const enabledByPprEnv = process.env.__NEXT_EXPERIMENTAL_PPR === 'true'
1744+
const enabledByCacheComponents = config.experimental.cacheComponents === true
1745+
1746+
// TODO: Remove this once we've made Client Segment Cache the default.
17441747
if (
1745-
process.env.__NEXT_EXPERIMENTAL_PPR === 'true' &&
1748+
(enabledByPprEnv || enabledByCacheComponents) &&
17461749
// We do respect an explicit value in the user config.
1747-
(config.experimental.clientParamParsing === undefined ||
1748-
(isDefaultConfig && !config.experimental.clientParamParsing))
1750+
(config.experimental.clientSegmentCache === undefined ||
1751+
(isDefaultConfig && !config.experimental.clientSegmentCache))
17491752
) {
1750-
config.experimental.clientParamParsing = true
1753+
config.experimental.clientSegmentCache = true
1754+
const reason = enabledByCacheComponents
1755+
? 'enabled by `experimental.cacheComponents`'
1756+
: 'enabled by `__NEXT_EXPERIMENTAL_PPR`'
17511757

17521758
if (configuredExperimentalFeatures) {
17531759
addConfiguredExperimentalFeature(
17541760
configuredExperimentalFeatures,
1755-
'clientParamParsing',
1761+
'clientSegmentCache',
17561762
true,
1757-
'enabled by `__NEXT_EXPERIMENTAL_PPR`'
1763+
reason
17581764
)
17591765
}
17601766
}
17611767

1762-
// TODO: Remove this once we've made Cache Components the default.
1768+
// TODO: Remove this once we've made Client Param Parsing the default.
17631769
if (
1764-
process.env.__NEXT_EXPERIMENTAL_CACHE_COMPONENTS === 'true' &&
1770+
(enabledByPprEnv || enabledByCacheComponents) &&
17651771
// We do respect an explicit value in the user config.
1766-
(config.experimental.cacheComponents === undefined ||
1767-
(isDefaultConfig && !config.experimental.cacheComponents))
1772+
(config.experimental.clientParamParsing === undefined ||
1773+
(isDefaultConfig && !config.experimental.clientParamParsing))
17681774
) {
1769-
config.experimental.cacheComponents = true
1775+
config.experimental.clientParamParsing = true
1776+
const reason = enabledByCacheComponents
1777+
? 'enabled by `experimental.cacheComponents`'
1778+
: 'enabled by `__NEXT_EXPERIMENTAL_PPR`'
17701779

17711780
if (configuredExperimentalFeatures) {
17721781
addConfiguredExperimentalFeature(
17731782
configuredExperimentalFeatures,
1774-
'cacheComponents',
1783+
'clientParamParsing',
17751784
true,
1776-
'enabled by `__NEXT_EXPERIMENTAL_CACHE_COMPONENTS`'
1785+
reason
17771786
)
17781787
}
17791788
}

test/e2e/app-dir/segment-cache/basic/segment-cache-basic.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,11 @@ describe('segment cache (basic tests)', () => {
9393
)
9494
})
9595

96-
it('navigate to page with lazily-generated (not at build time) static param', async () => {
96+
// TODO(client-param-parsing): With `clientParamParsing` enabled, this test is outdated, because
97+
// we no longer put the param values in the prefetched RSC response. You'd have to opt into runtime
98+
// prefetching for this test to pass until we ship the optimization that would mark this as fully static
99+
// if you don't reference any dynamic params in the server components.
100+
it.skip('navigate to page with lazily-generated (not at build time) static param', async () => {
97101
let act: ReturnType<typeof createRouterAct>
98102
const browser = await next.browser('/lazily-generated-params', {
99103
beforePageLoad(page) {

test/production/app-dir/build-output-prerender/build-output-prerender.test.ts

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ describe('build-output-prerender', () => {
3737
"▲ Next.js x.y.z (webpack)
3838
- Experiments (use with caution):
3939
✓ cacheComponents
40-
✓ clientParamParsing (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
41-
✓ clientSegmentCache (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
40+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
41+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
4242
✓ enablePrerenderSourceMaps (enabled by \`experimental.cacheComponents\`)
4343
✓ ppr (enabled by \`__NEXT_EXPERIMENTAL_CACHE_COMPONENTS\`)
4444
✓ rdcForNavigations (enabled by \`__NEXT_EXPERIMENTAL_CACHE_COMPONENTS\`)"
@@ -61,8 +61,8 @@ describe('build-output-prerender', () => {
6161
"▲ Next.js x.y.z (webpack)
6262
- Experiments (use with caution):
6363
✓ cacheComponents
64-
✓ clientParamParsing (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
65-
✓ clientSegmentCache (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
64+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
65+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
6666
✓ enablePrerenderSourceMaps (enabled by \`experimental.cacheComponents\`)
6767
✓ ppr (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
6868
✓ rdcForNavigations (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)"
@@ -74,6 +74,8 @@ describe('build-output-prerender', () => {
7474
"▲ Next.js x.y.z (Turbopack)
7575
- Experiments (use with caution):
7676
✓ cacheComponents
77+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
78+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
7779
✓ enablePrerenderSourceMaps (enabled by \`experimental.cacheComponents\`)
7880
✓ ppr (enabled by \`experimental.cacheComponents\`)
7981
✓ rdcForNavigations (enabled by \`experimental.ppr\`)"
@@ -83,6 +85,8 @@ describe('build-output-prerender', () => {
8385
"▲ Next.js x.y.z (Rspack)
8486
- Experiments (use with caution):
8587
✓ cacheComponents
88+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
89+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
8690
✓ enablePrerenderSourceMaps (enabled by \`experimental.cacheComponents\`)
8791
✓ ppr (enabled by \`experimental.cacheComponents\`)
8892
✓ rdcForNavigations (enabled by \`experimental.ppr\`)"
@@ -92,6 +96,8 @@ describe('build-output-prerender', () => {
9296
"▲ Next.js x.y.z (webpack)
9397
- Experiments (use with caution):
9498
✓ cacheComponents
99+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
100+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
95101
✓ enablePrerenderSourceMaps (enabled by \`experimental.cacheComponents\`)
96102
✓ ppr (enabled by \`experimental.cacheComponents\`)
97103
✓ rdcForNavigations (enabled by \`experimental.ppr\`)"
@@ -164,8 +170,8 @@ describe('build-output-prerender', () => {
164170
▲ Next.js x.y.z (webpack)
165171
- Experiments (use with caution):
166172
✓ cacheComponents
167-
✓ clientParamParsing (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
168-
✓ clientSegmentCache (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
173+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
174+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
169175
✓ enablePrerenderSourceMaps (enabled by \`--debug-prerender\`)
170176
✓ ppr (enabled by \`__NEXT_EXPERIMENTAL_CACHE_COMPONENTS\`)
171177
⨯ prerenderEarlyExit (disabled by \`--debug-prerender\`)
@@ -196,8 +202,8 @@ describe('build-output-prerender', () => {
196202
▲ Next.js x.y.z (webpack)
197203
- Experiments (use with caution):
198204
✓ cacheComponents
199-
✓ clientParamParsing (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
200-
✓ clientSegmentCache (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
205+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
206+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
201207
✓ enablePrerenderSourceMaps (enabled by \`--debug-prerender\`)
202208
✓ ppr (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
203209
⨯ prerenderEarlyExit (disabled by \`--debug-prerender\`)
@@ -213,6 +219,8 @@ describe('build-output-prerender', () => {
213219
▲ Next.js x.y.z (Turbopack)
214220
- Experiments (use with caution):
215221
✓ cacheComponents
222+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
223+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
216224
✓ enablePrerenderSourceMaps (enabled by \`--debug-prerender\`)
217225
✓ ppr (enabled by \`experimental.cacheComponents\`)
218226
⨯ prerenderEarlyExit (disabled by \`--debug-prerender\`)
@@ -226,6 +234,8 @@ describe('build-output-prerender', () => {
226234
▲ Next.js x.y.z (Rspack)
227235
- Experiments (use with caution):
228236
✓ cacheComponents
237+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
238+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
229239
✓ enablePrerenderSourceMaps (enabled by \`--debug-prerender\`)
230240
✓ ppr (enabled by \`experimental.cacheComponents\`)
231241
⨯ prerenderEarlyExit (disabled by \`--debug-prerender\`)
@@ -239,6 +249,8 @@ describe('build-output-prerender', () => {
239249
▲ Next.js x.y.z (webpack)
240250
- Experiments (use with caution):
241251
✓ cacheComponents
252+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
253+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
242254
✓ enablePrerenderSourceMaps (enabled by \`--debug-prerender\`)
243255
✓ ppr (enabled by \`experimental.cacheComponents\`)
244256
⨯ prerenderEarlyExit (disabled by \`--debug-prerender\`)
@@ -308,8 +320,8 @@ describe('build-output-prerender', () => {
308320
"▲ Next.js x.y.z (webpack)
309321
- Experiments (use with caution):
310322
✓ cacheComponents (enabled by \`__NEXT_EXPERIMENTAL_CACHE_COMPONENTS\`)
311-
✓ clientParamParsing (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
312-
✓ clientSegmentCache (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
323+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
324+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
313325
✓ enablePrerenderSourceMaps (enabled by \`experimental.cacheComponents\`)
314326
✓ ppr (enabled by \`__NEXT_EXPERIMENTAL_CACHE_COMPONENTS\`)
315327
✓ rdcForNavigations (enabled by \`__NEXT_EXPERIMENTAL_CACHE_COMPONENTS\`)"
@@ -385,8 +397,8 @@ describe('build-output-prerender', () => {
385397
▲ Next.js x.y.z (webpack)
386398
- Experiments (use with caution):
387399
✓ cacheComponents (enabled by \`__NEXT_EXPERIMENTAL_CACHE_COMPONENTS\`)
388-
✓ clientParamParsing (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
389-
✓ clientSegmentCache (enabled by \`__NEXT_EXPERIMENTAL_PPR\`)
400+
✓ clientParamParsing (enabled by \`experimental.cacheComponents\`)
401+
✓ clientSegmentCache (enabled by \`experimental.cacheComponents\`)
390402
✓ enablePrerenderSourceMaps (enabled by \`--debug-prerender\`)
391403
✓ ppr (enabled by \`__NEXT_EXPERIMENTAL_CACHE_COMPONENTS\`)
392404
⨯ prerenderEarlyExit (disabled by \`--debug-prerender\`)

0 commit comments

Comments
 (0)