Skip to content

segment cache: add test for passing unawaited promise to context provider#89339

Merged
ztanner merged 1 commit intocanaryfrom
01-31-add_failing_test_for_unresolved_prefetch_promises
Feb 21, 2026
Merged

segment cache: add test for passing unawaited promise to context provider#89339
ztanner merged 1 commit intocanaryfrom
01-31-add_failing_test_for_unresolved_prefetch_promises

Conversation

@ztanner
Copy link
Member

@ztanner ztanner commented Jan 31, 2026

Adds a failing test proving that if the RSC response from a prefetch contains an unresolved promise, navigating to the page will cause the Suspense boundary wrapping the use of that promise to remain in fallback state indefinitely.

This appears to have regressed in e9a03ac, though the theory is that this is just uncovering a React bug rather than causing the issue.

Fixed via facebook/react#35839

Closes #89170

@nextjs-bot nextjs-bot added created-by: Next.js team PRs by the Next.js team. tests labels Jan 31, 2026
Copy link
Member Author

ztanner commented Jan 31, 2026

@nextjs-bot
Copy link
Collaborator

nextjs-bot commented Jan 31, 2026

Tests Passed

@nextjs-bot
Copy link
Collaborator

nextjs-bot commented Jan 31, 2026

Stats from current PR

✅ No significant changes detected

📊 All Metrics
📖 Metrics Glossary

Dev Server Metrics:

  • Listen = TCP port starts accepting connections
  • First Request = HTTP server returns successful response
  • Cold = Fresh build (no cache)
  • Warm = With cached build artifacts

Build Metrics:

  • Fresh = Clean build (no .next directory)
  • Cached = With existing .next directory

Change Thresholds:

  • Time: Changes < 50ms AND < 10%, OR < 2% are insignificant
  • Size: Changes < 1KB AND < 1% are insignificant
  • All other changes are flagged to catch regressions

⚡ Dev Server

Metric Canary PR Change Trend
Cold (Listen) 507ms 507ms ▁█▁█▂
Cold (Ready in log) 484ms 483ms ▁█▁█▃
Cold (First Request) 1.049s 1.042s ▁█▄█▄
Warm (Listen) 508ms 508ms ▁█▁█▂
Warm (Ready in log) 480ms 479ms ▁█▁█▃
Warm (First Request) 375ms 380ms ▁█▁█▃
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 456ms 457ms ▁▁▁▁▁
Cold (Ready in log) 453ms 453ms ▁▃▁▁▃
Cold (First Request) 2.102s 2.062s ▁▁▁▁▃
Warm (Listen) 456ms 456ms ▁▁▁▁▁
Warm (Ready in log) 452ms 453ms ▁▂▁▁▂
Warm (First Request) 2.077s 2.065s ▁▁▁▁▃

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 4.741s 4.735s ▁█▁▇▅
Cached Build 4.664s 4.730s ▁█▁█▅
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 14.963s 14.948s ▁▁▁▁▄
Cached Build 15.039s 14.984s ▁▁▁▁▄
node_modules Size 474 MB 474 MB ▁▁▁▁▁
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles: **399 kB** → **399 kB** ✅ -5 B

80 files with content-based hashes (individual files not comparable between builds)

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 768 B 763 B
Total 768 B 763 B ✅ -5 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 451 B 450 B
Total 451 B 450 B ✅ -1 B

📦 Webpack

Client

Main Bundles
Canary PR Change
5528-HASH.js gzip 5.48 kB N/A -
6280-HASH.js gzip 57.5 kB N/A -
6335.HASH.js gzip 169 B N/A -
912-HASH.js gzip 4.53 kB N/A -
e8aec2e4-HASH.js gzip 62.6 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB
main-app-HASH.js gzip 256 B 254 B
main-HASH.js gzip 39.1 kB 39.1 kB
webpack-HASH.js gzip 1.68 kB 1.68 kB
262-HASH.js gzip N/A 4.53 kB -
2889.HASH.js gzip N/A 169 B -
5602-HASH.js gzip N/A 5.49 kB -
6948ada0-HASH.js gzip N/A 62.6 kB -
9544-HASH.js gzip N/A 58.3 kB -
Total 231 kB 232 kB ⚠️ +748 B
Polyfills
Canary PR Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Total 39.4 kB 39.4 kB
Pages
Canary PR Change
_app-HASH.js gzip 194 B 194 B
_error-HASH.js gzip 183 B 180 B 🟢 3 B (-2%)
css-HASH.js gzip 331 B 330 B
dynamic-HASH.js gzip 1.81 kB 1.81 kB
edge-ssr-HASH.js gzip 256 B 256 B
head-HASH.js gzip 351 B 352 B
hooks-HASH.js gzip 384 B 383 B
image-HASH.js gzip 580 B 581 B
index-HASH.js gzip 260 B 260 B
link-HASH.js gzip 2.5 kB 2.5 kB
routerDirect..HASH.js gzip 320 B 319 B
script-HASH.js gzip 386 B 386 B
withRouter-HASH.js gzip 315 B 315 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Total 7.97 kB 7.97 kB ✅ -2 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 125 kB 125 kB
page.js gzip 253 kB 253 kB
Total 377 kB 378 kB ⚠️ +276 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 614 B 613 B
middleware-r..fest.js gzip 156 B 155 B
middleware.js gzip 43.8 kB 43.7 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 45.4 kB 45.3 kB ✅ -98 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 715 B 718 B
Total 715 B 718 B ⚠️ +3 B
Build Cache
Canary PR Change
0.pack gzip 3.96 MB 3.97 MB 🔴 +6.96 kB (+0%)
index.pack gzip 103 kB 103 kB
index.pack.old gzip 104 kB 103 kB
Total 4.17 MB 4.17 MB ⚠️ +5.61 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 318 kB 318 kB
app-page-exp..prod.js gzip 168 kB 168 kB
app-page-tur...dev.js gzip 317 kB 317 kB
app-page-tur..prod.js gzip 168 kB 168 kB
app-page-tur...dev.js gzip 314 kB 314 kB
app-page-tur..prod.js gzip 166 kB 166 kB
app-page.run...dev.js gzip 314 kB 314 kB
app-page.run..prod.js gzip 167 kB 167 kB
app-route-ex...dev.js gzip 70.7 kB 70.7 kB
app-route-ex..prod.js gzip 49.1 kB 49.1 kB
app-route-tu...dev.js gzip 70.7 kB 70.7 kB
app-route-tu..prod.js gzip 49.2 kB 49.2 kB
app-route-tu...dev.js gzip 70.3 kB 70.3 kB
app-route-tu..prod.js gzip 48.9 kB 48.9 kB
app-route.ru...dev.js gzip 70.2 kB 70.2 kB
app-route.ru..prod.js gzip 48.9 kB 48.9 kB
dist_client_...dev.js gzip 324 B 324 B
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 318 B 318 B
dist_client_...dev.js gzip 317 B 317 B
pages-api-tu...dev.js gzip 43.2 kB 43.2 kB
pages-api-tu..prod.js gzip 32.9 kB 32.9 kB
pages-api.ru...dev.js gzip 43.2 kB 43.2 kB
pages-api.ru..prod.js gzip 32.8 kB 32.8 kB
pages-turbo....dev.js gzip 52.5 kB 52.5 kB
pages-turbo...prod.js gzip 38.5 kB 38.5 kB
pages.runtim...dev.js gzip 52.5 kB 52.5 kB
pages.runtim..prod.js gzip 38.4 kB 38.4 kB
server.runti..prod.js gzip 62 kB 62 kB
Total 2.81 MB 2.81 MB ⚠️ +1 B
📝 Changed Files (4 files)

Files with changes:

  • pages-api-tu..time.prod.js
  • pages-api.runtime.dev.js
  • pages-turbo...time.prod.js
  • pages.runtime.dev.js
View diffs
pages-api-tu..time.prod.js

Diff too large to display

pages-api.runtime.dev.js

Diff too large to display

pages-turbo...time.prod.js

Diff too large to display

pages.runtime.dev.js

Diff too large to display

@ztanner ztanner force-pushed the 01-31-add_failing_test_for_unresolved_prefetch_promises branch from bc1adb2 to e0c8338 Compare February 17, 2026 00:24
@ztanner ztanner changed the title add failing test for unresolved prefetch promises segment cache: keep descendant PPR cache nodes deferred under pending parent Feb 17, 2026
@ztanner ztanner force-pushed the 01-31-add_failing_test_for_unresolved_prefetch_promises branch from e0c8338 to ece5534 Compare February 17, 2026 01:13
@ztanner ztanner changed the title segment cache: keep descendant PPR cache nodes deferred under pending parent segment cache: add failing test for unresolved prefetch promises Feb 17, 2026
@eps1lon eps1lon force-pushed the 01-31-add_failing_test_for_unresolved_prefetch_promises branch from ece5534 to 1308c99 Compare February 21, 2026 17:57
@ztanner ztanner marked this pull request as ready for review February 21, 2026 18:25
@ztanner ztanner changed the title segment cache: add failing test for unresolved prefetch promises segment cache: add test for passing unawaited promise to context provider Feb 21, 2026
@ztanner ztanner enabled auto-merge (squash) February 21, 2026 18:26
@ztanner ztanner requested a review from eps1lon February 21, 2026 18:28
@ztanner ztanner merged commit fd38d5b into canary Feb 21, 2026
157 checks passed
@ztanner ztanner deleted the 01-31-add_failing_test_for_unresolved_prefetch_promises branch February 21, 2026 18:29
@github-actions github-actions bot added the locked label Mar 8, 2026
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 8, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs: Clicking on Learn Next.js button leads to page with missing text

3 participants