Skip to content

Turbopack server hmr: Implement restart event#90550

Merged
wbinnssmith merged 1 commit intocanaryfrom
server-hmr-default-implement-clear
Feb 26, 2026
Merged

Turbopack server hmr: Implement restart event#90550
wbinnssmith merged 1 commit intocanaryfrom
server-hmr-default-implement-clear

Conversation

@wbinnssmith
Copy link
Member

@wbinnssmith wbinnssmith commented Feb 26, 2026

This implements the restart event, fully evicting all caches. This is needed for when client manifest changes are made.

Test Plan: CI for #90389

@nextjs-bot nextjs-bot added created-by: Turbopack team PRs by the Turbopack team. tests Turbopack Related to Turbopack with Next.js. type: next labels Feb 26, 2026
@nextjs-bot
Copy link
Collaborator

nextjs-bot commented Feb 26, 2026

Tests Passed

@codspeed-hq
Copy link

codspeed-hq bot commented Feb 26, 2026

Merging this PR will not alter performance

✅ 17 untouched benchmarks
⏩ 3 skipped benchmarks1


Comparing server-hmr-default-implement-clear (7e6389b) with canary (0db7804)

Open in CodSpeed

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@wbinnssmith wbinnssmith force-pushed the server-hmr-default-implement-clear branch from b0f2b70 to c7b43ed Compare February 26, 2026 01:44
@nextjs-bot
Copy link
Collaborator

nextjs-bot commented Feb 26, 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) 455ms 456ms ▁▁▁▁▁
Cold (Ready in log) 439ms 439ms ▁▁▁▁▁
Cold (First Request) 1.281s 1.244s ▃▂▂▁▁
Warm (Listen) 457ms 457ms ▁▁▁▁▁
Warm (Ready in log) 443ms 443ms ▁▁▁▁▁
Warm (First Request) 347ms 346ms ▁▁▁▁▁
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 506ms 506ms █▁▁▁█
Cold (Ready in log) 462ms 462ms █▄▁▁█
Cold (First Request) 2.080s 2.064s █▃▁▁█
Warm (Listen) 506ms 507ms █▁▁▁█
Warm (Ready in log) 464ms 467ms █▅▁▁█
Warm (First Request) 2.078s 2.082s █▃▁▁█

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 3.923s 3.947s ▁▁▁▁▂
Cached Build 3.914s 3.889s ▁▁▁▁▂
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 15.357s 15.332s ▇▁▁▁█
Cached Build 15.464s 15.455s █▁▁▁█
node_modules Size 475 MB 475 MB ▁▁▁▁▁
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles: **400 kB** → **400 kB** ✅ -37 B

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

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 762 B 765 B
Total 762 B 765 B ⚠️ +3 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.54 kB N/A -
6280-HASH.js gzip 58.4 kB N/A -
6335.HASH.js gzip 169 B N/A -
912-HASH.js gzip 4.59 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.59 kB -
2889.HASH.js gzip N/A 169 B -
5602-HASH.js gzip N/A 5.55 kB -
6948ada0-HASH.js gzip N/A 62.6 kB -
9544-HASH.js gzip N/A 59.1 kB -
Total 232 kB 233 kB ⚠️ +714 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 254 kB 255 kB
Total 379 kB 379 kB ⚠️ +316 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 617 B 617 B
middleware-r..fest.js gzip 156 B 155 B
middleware.js gzip 43.9 kB 43.9 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 45.5 kB 45.5 kB ⚠️ +5 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 4.01 MB 4.02 MB 🔴 +8.95 kB (+0%)
index.pack gzip 102 kB 101 kB 🟢 1.22 kB (-1%)
index.pack.old gzip 102 kB 102 kB
Total 4.22 MB 4.23 MB ⚠️ +7.9 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 320 kB 320 kB
app-page-exp..prod.js gzip 170 kB 170 kB
app-page-tur...dev.js gzip 319 kB 319 kB
app-page-tur..prod.js gzip 170 kB 170 kB
app-page-tur...dev.js gzip 316 kB 316 kB
app-page-tur..prod.js gzip 168 kB 168 kB
app-page.run...dev.js gzip 316 kB 316 kB
app-page.run..prod.js gzip 168 kB 168 kB
app-route-ex...dev.js gzip 70.8 kB 70.8 kB
app-route-ex..prod.js gzip 49.2 kB 49.2 kB
app-route-tu...dev.js gzip 70.8 kB 70.8 kB
app-route-tu..prod.js gzip 49.2 kB 49.2 kB
app-route-tu...dev.js gzip 70.4 kB 70.4 kB
app-route-tu..prod.js gzip 49 kB 49 kB
app-route.ru...dev.js gzip 70.4 kB 70.4 kB
app-route.ru..prod.js gzip 49 kB 49 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 61.9 kB 61.9 kB
Total 2.82 MB 2.82 MB
📎 Tarball URL
next@https://vercel-packages.vercel.app/next/prs/90550/next

@wbinnssmith wbinnssmith force-pushed the server-hmr-default-implement-clear branch 2 times, most recently from a0eeee1 to 4eb1e3e Compare February 26, 2026 03:01
@wbinnssmith wbinnssmith force-pushed the server-hmr-default-implement-clear branch 4 times, most recently from 21e86a9 to fa65f1b Compare February 26, 2026 03:19
@wbinnssmith wbinnssmith marked this pull request as ready for review February 26, 2026 03:56
Copy link
Member Author

wbinnssmith commented Feb 26, 2026

// Fully re-evaluate all chunks from disk. Clears the module cache and
// notifies browsers to refetch RSC.
if (update.type === 'restart') {
await clear()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

console log something? maybe

This implements the `restart` event, fully evicting all caches. This is needed for when client manifest changes are made.
@wbinnssmith wbinnssmith force-pushed the server-hmr-default-implement-clear branch from fa65f1b to 7e6389b Compare February 26, 2026 22:33
@wbinnssmith wbinnssmith merged commit dc3b6ed into canary Feb 26, 2026
288 of 290 checks passed
Copy link
Member Author

Merge activity

@wbinnssmith wbinnssmith deleted the server-hmr-default-implement-clear branch February 26, 2026 23:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

created-by: Turbopack team PRs by the Turbopack team. tests Turbopack Related to Turbopack with Next.js. type: next

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants