Skip to content

Commit a1c04d7

Browse files
committed
auto-enable clientParamParsing and clientSegmentCache w/ cacheComponents
1 parent 3f75ff6 commit a1c04d7

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
@@ -1714,59 +1714,68 @@ function enforceExperimentalFeatures(
17141714
}
17151715
}
17161716

1717-
// TODO: Remove this once we've made Client Segment Cache the default.
1717+
// TODO: Remove this once we've made Cache Components the default.
17181718
if (
1719-
process.env.__NEXT_EXPERIMENTAL_PPR === 'true' &&
1719+
process.env.__NEXT_EXPERIMENTAL_CACHE_COMPONENTS === 'true' &&
17201720
// We do respect an explicit value in the user config.
1721-
(config.experimental.clientSegmentCache === undefined ||
1722-
(isDefaultConfig && !config.experimental.clientSegmentCache))
1721+
(config.experimental.cacheComponents === undefined ||
1722+
(isDefaultConfig && !config.experimental.cacheComponents))
17231723
) {
1724-
config.experimental.clientSegmentCache = true
1724+
config.experimental.cacheComponents = true
17251725

17261726
if (configuredExperimentalFeatures) {
17271727
addConfiguredExperimentalFeature(
17281728
configuredExperimentalFeatures,
1729-
'clientSegmentCache',
1729+
'cacheComponents',
17301730
true,
1731-
'enabled by `__NEXT_EXPERIMENTAL_PPR`'
1731+
'enabled by `__NEXT_EXPERIMENTAL_CACHE_COMPONENTS`'
17321732
)
17331733
}
17341734
}
17351735

1736-
// TODO: Remove this once we've made Client Param Parsing the default.
1736+
const enabledByPprEnv = process.env.__NEXT_EXPERIMENTAL_PPR === 'true'
1737+
const enabledByCacheComponents = config.experimental.cacheComponents === true
1738+
1739+
// TODO: Remove this once we've made Client Segment Cache the default.
17371740
if (
1738-
process.env.__NEXT_EXPERIMENTAL_PPR === 'true' &&
1741+
(enabledByPprEnv || enabledByCacheComponents) &&
17391742
// We do respect an explicit value in the user config.
1740-
(config.experimental.clientParamParsing === undefined ||
1741-
(isDefaultConfig && !config.experimental.clientParamParsing))
1743+
(config.experimental.clientSegmentCache === undefined ||
1744+
(isDefaultConfig && !config.experimental.clientSegmentCache))
17421745
) {
1743-
config.experimental.clientParamParsing = true
1746+
config.experimental.clientSegmentCache = true
1747+
const reason = enabledByCacheComponents
1748+
? 'enabled by `experimental.cacheComponents`'
1749+
: 'enabled by `__NEXT_EXPERIMENTAL_PPR`'
17441750

17451751
if (configuredExperimentalFeatures) {
17461752
addConfiguredExperimentalFeature(
17471753
configuredExperimentalFeatures,
1748-
'clientParamParsing',
1754+
'clientSegmentCache',
17491755
true,
1750-
'enabled by `__NEXT_EXPERIMENTAL_PPR`'
1756+
reason
17511757
)
17521758
}
17531759
}
17541760

1755-
// TODO: Remove this once we've made Cache Components the default.
1761+
// TODO: Remove this once we've made Client Param Parsing the default.
17561762
if (
1757-
process.env.__NEXT_EXPERIMENTAL_CACHE_COMPONENTS === 'true' &&
1763+
(enabledByPprEnv || enabledByCacheComponents) &&
17581764
// We do respect an explicit value in the user config.
1759-
(config.experimental.cacheComponents === undefined ||
1760-
(isDefaultConfig && !config.experimental.cacheComponents))
1765+
(config.experimental.clientParamParsing === undefined ||
1766+
(isDefaultConfig && !config.experimental.clientParamParsing))
17611767
) {
1762-
config.experimental.cacheComponents = true
1768+
config.experimental.clientParamParsing = true
1769+
const reason = enabledByCacheComponents
1770+
? 'enabled by `experimental.cacheComponents`'
1771+
: 'enabled by `__NEXT_EXPERIMENTAL_PPR`'
17631772

17641773
if (configuredExperimentalFeatures) {
17651774
addConfiguredExperimentalFeature(
17661775
configuredExperimentalFeatures,
1767-
'cacheComponents',
1776+
'clientParamParsing',
17681777
true,
1769-
'enabled by `__NEXT_EXPERIMENTAL_CACHE_COMPONENTS`'
1778+
reason
17701779
)
17711780
}
17721781
}

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)