Skip to content

Commit ac12195

Browse files
committed
auto-enable clientParamParsing and clientSegmentCache w/ cacheComponents
1 parent 6bf58cc commit ac12195

File tree

3 files changed

+51
-26
lines changed

3 files changed

+51
-26
lines changed

packages/next/src/server/config.ts

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1710,59 +1710,68 @@ function enforceExperimentalFeatures(
17101710
}
17111711
}
17121712

1713-
// TODO: Remove this once we've made Client Segment Cache the default.
1713+
// TODO: Remove this once we've made Cache Components the default.
17141714
if (
1715-
process.env.__NEXT_EXPERIMENTAL_PPR === 'true' &&
1715+
process.env.__NEXT_EXPERIMENTAL_CACHE_COMPONENTS === 'true' &&
17161716
// We do respect an explicit value in the user config.
1717-
(config.experimental.clientSegmentCache === undefined ||
1718-
(isDefaultConfig && !config.experimental.clientSegmentCache))
1717+
(config.experimental.cacheComponents === undefined ||
1718+
(isDefaultConfig && !config.experimental.cacheComponents))
17191719
) {
1720-
config.experimental.clientSegmentCache = true
1720+
config.experimental.cacheComponents = true
17211721

17221722
if (configuredExperimentalFeatures) {
17231723
addConfiguredExperimentalFeature(
17241724
configuredExperimentalFeatures,
1725-
'clientSegmentCache',
1725+
'cacheComponents',
17261726
true,
1727-
'enabled by `__NEXT_EXPERIMENTAL_PPR`'
1727+
'enabled by `__NEXT_EXPERIMENTAL_CACHE_COMPONENTS`'
17281728
)
17291729
}
17301730
}
17311731

1732-
// TODO: Remove this once we've made Client Param Parsing the default.
1732+
const enabledByPprEnv = process.env.__NEXT_EXPERIMENTAL_PPR === 'true'
1733+
const enabledByCacheComponents = config.experimental.cacheComponents === true
1734+
1735+
// TODO: Remove this once we've made Client Segment Cache the default.
17331736
if (
1734-
process.env.__NEXT_EXPERIMENTAL_PPR === 'true' &&
1737+
(enabledByPprEnv || enabledByCacheComponents) &&
17351738
// We do respect an explicit value in the user config.
1736-
(config.experimental.clientParamParsing === undefined ||
1737-
(isDefaultConfig && !config.experimental.clientParamParsing))
1739+
(config.experimental.clientSegmentCache === undefined ||
1740+
(isDefaultConfig && !config.experimental.clientSegmentCache))
17381741
) {
1739-
config.experimental.clientParamParsing = true
1742+
config.experimental.clientSegmentCache = true
1743+
const reason = enabledByCacheComponents
1744+
? 'enabled by `experimental.cacheComponents`'
1745+
: 'enabled by `__NEXT_EXPERIMENTAL_PPR`'
17401746

17411747
if (configuredExperimentalFeatures) {
17421748
addConfiguredExperimentalFeature(
17431749
configuredExperimentalFeatures,
1744-
'clientParamParsing',
1750+
'clientSegmentCache',
17451751
true,
1746-
'enabled by `__NEXT_EXPERIMENTAL_PPR`'
1752+
reason
17471753
)
17481754
}
17491755
}
17501756

1751-
// TODO: Remove this once we've made Cache Components the default.
1757+
// TODO: Remove this once we've made Client Param Parsing the default.
17521758
if (
1753-
process.env.__NEXT_EXPERIMENTAL_CACHE_COMPONENTS === 'true' &&
1759+
(enabledByPprEnv || enabledByCacheComponents) &&
17541760
// We do respect an explicit value in the user config.
1755-
(config.experimental.cacheComponents === undefined ||
1756-
(isDefaultConfig && !config.experimental.cacheComponents))
1761+
(config.experimental.clientParamParsing === undefined ||
1762+
(isDefaultConfig && !config.experimental.clientParamParsing))
17571763
) {
1758-
config.experimental.cacheComponents = true
1764+
config.experimental.clientParamParsing = true
1765+
const reason = enabledByCacheComponents
1766+
? 'enabled by `experimental.cacheComponents`'
1767+
: 'enabled by `__NEXT_EXPERIMENTAL_PPR`'
17591768

17601769
if (configuredExperimentalFeatures) {
17611770
addConfiguredExperimentalFeature(
17621771
configuredExperimentalFeatures,
1763-
'cacheComponents',
1772+
'clientParamParsing',
17641773
true,
1765-
'enabled by `__NEXT_EXPERIMENTAL_CACHE_COMPONENTS`'
1774+
reason
17661775
)
17671776
}
17681777
}

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: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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\`)"
@@ -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\`)

0 commit comments

Comments
 (0)