Skip to content

[16.3] Turbopack: retain conditions when replacing resolve request keys - #97453

Merged
mischnic merged 1 commit into
next-16-3from
mischnic/backport-resolve-condition
Aug 19, 2026
Merged

mischnic merged 1 commit into
next-16-3from
mischnic/backport-resolve-condition

Conversation

@mischnic

Copy link
Copy Markdown
Member

Backports #97372

)

Closes #97358

`ResolveResult::with_replaced_request_key` overwrote the `conditions` of
every result key with the conditions of the replacement key (empty at
all call sites). Those conditions are what distinguishes the results one
request resolved to under different export conditions, so both the
`module-sync` and the `default`/`require` target of the same subpath
ended up under the same `RequestKey`.

That is lossy as soon as a request resolves in more than one
`node_modules` directory: the results are merged through a
`RequestKey`-keyed map, so one of the two targets is silently dropped.
With a single candidate directory `ResolveResult::alternatives`
short-circuits and never builds that map, which is why this only showed
up in nested layouts.

In practice this broke `output: 'standalone'` with the Turbopack
production bundler for pnpm installs, whose virtual store hoists every
package into `node_modules/.pnpm/node_modules` and thereby creates that
second candidate directory: `next-server.js.nft.json` recorded only
`@swc/helpers/cjs/_interop_require_default.cjs`, while Node >= 22.12
resolves `@swc/helpers/_/_interop_require_default` to the `module-sync`
target `esm/_interop_require_default.js` (`@swc/helpers` 0.5.23 lists
`module-sync` first). The copied `.next/standalone/server.js` then
exited with MODULE_NOT_FOUND before listening.

---------

Co-authored-by: vercel-fleet[bot] <308483924+vercel-fleet[bot]@users.noreply.github.com>
@mischnic
mischnic requested a review from a team August 17, 2026 07:15
@mischnic mischnic changed the title [backport] Turbopack: retain conditions when replacing resolve request keys () [backport] Turbopack: retain conditions when replacing resolve request keys Aug 17, 2026
@github-actions

github-actions Bot commented Aug 17, 2026 •

Copy link
Copy Markdown
Contributor

Stats from current PR

🔴 4 regressions, 1 improvement

Metric Canary PR Change Trend
Webpack Build Time 23.932s 24.686s 🔴 +754ms (+3%) ▂█▃▁▆
Webpack Build Time (cached) 23.760s 24.902s 🔴 +1.142s (+5%) ▄█▆▃█
Webpack Cold (First Request) 3.330s 3.436s 🔴 +106ms (+3%) ▇▄▄▂█
Webpack Warm (First Request) 3.325s 3.487s 🔴 +162ms (+5%) ▅█▃▃█
node_modules Size 554 MB 553 MB 🟢 1.51 MB (0%) ▁▁▁▁▁
📊 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) 814ms 813ms ✓ ▁█▁▁▁
Cold (Ready in log) 802ms 805ms ✓ ▁█▁▂▁
Cold (First Request) 1.296s 1.366s ✓ ▁█▂▃▂
Warm (Listen) 814ms 813ms ✓ ▁█▁▁▁
Warm (Ready in log) 807ms 791ms ✓ ▁█▁▁▁
Warm (First Request) 1.302s 1.319s ✓ ▄▁▅▅▄
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 813ms 813ms ✓ ▇▇▇▅█
Cold (Ready in log) 799ms 788ms ✓ █▆▆▂█
Cold (First Request) 3.330s 3.436s 🔴 +106ms (+3%) ▇▄▄▂█
Warm (Listen) 812ms 813ms ✓ █████
Warm (Ready in log) 788ms 789ms ✓ ▇█▄▄█
Warm (First Request) 3.325s 3.487s 🔴 +162ms (+5%) ▅█▃▃█

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 6.461s 6.189s ✓ ▁█▂▃▁
Cached Build 3.125s 3.217s ✓ ▁█▃▃▂
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 23.932s 24.686s 🔴 +754ms (+3%) ▂█▃▁▆
Cached Build 23.760s 24.902s 🔴 +1.142s (+5%) ▄█▆▃█
node_modules Size 554 MB 553 MB 🟢 1.51 MB (0%) ▁▁▁▁▁
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
050icza-xjz0i.js gzip 5.73 kB N/A -
07jdby0ue616s.js gzip 450 B N/A -
0bjdc8muo74n5.js gzip 8.71 kB N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB ✓
0eo3xvq-zd3j2.js gzip 65.6 kB N/A -
0rci1f3or1a19.js gzip 13.3 kB N/A -
1_2x714--ii1i.js gzip 8.76 kB N/A -
1-3y752pkth5-.js gzip 10 kB N/A -
1-nfv1877mihd.js gzip 156 B N/A -
12bso2e_5x4zx.js gzip 157 B N/A -
140af-gch2905.js gzip 157 B N/A -
1469bmgz0r8ob.js gzip 154 B N/A -
15_1l6mmqyrws.js gzip 156 B N/A -
15xlq53c28l8-.js gzip 159 B N/A -
16loy0anq4cfq.js gzip 154 B N/A -
19gb-1_5udxfb.js gzip 13.2 kB N/A -
1cywsbjgohnj9.js gzip 167 B N/A -
1elt1qium-r2m.css gzip 115 B 115 B ✓
1qij_v1qfn8w5.js gzip 71.6 kB N/A -
1tf1phijqlx9j.js gzip 220 B 220 B ✓
1uzabyd1120a1.js gzip 8.71 kB N/A -
1y91ypv-32-2c.js gzip 150 B N/A -
2-ufv8lc-g7gg.js gzip 10.6 kB N/A -
21kmjy_10x14f.js gzip 8.81 kB N/A -
28dhc6t85q1_p.js gzip 8.78 kB N/A -
2f-ilvczue-tp.js gzip 9.46 kB N/A -
2f1u17u5c8iny.js gzip 8.79 kB N/A -
2ikltg_8iegxw.js gzip 10.3 kB N/A -
2ixp3xn2_vz0r.js gzip 3.57 kB N/A -
2r1yklvxhy9fu.js gzip 154 B N/A -
2vxi673cz1-t4.js gzip 8.79 kB N/A -
37zg4vafpzsi1.js gzip 155 B N/A -
38-q43pzktqhs.js gzip 1.46 kB N/A -
3f977fytahn5a.js gzip 7.53 kB N/A -
3nbojhxiy1qv_.js gzip 13.7 kB N/A -
3npru_5qbg6lt.js gzip 155 B N/A -
3r9mg09sag_yr.js gzip 47 kB N/A -
41u5s3oe2-erp.js gzip 2.29 kB N/A -
445s_9hf8o7ao.js gzip 8.76 kB N/A -
4486in8mnn3zl.js gzip 154 B N/A -
turbopack-0d..9ejy.js gzip 3.74 kB N/A -
070i4ykf3d62z.js gzip N/A 8.7 kB -
098rf605k2__q.js gzip N/A 156 B -
0agv3-x0j9qy3.js gzip N/A 10.3 kB -
0fp4xgd37m5-d.js gzip N/A 3.65 kB -
0jwho9fkrb_t3.js gzip N/A 2.29 kB -
0wg1cc2wbyjd6.js gzip N/A 8.77 kB -
14j95hw2e7a3z.js gzip N/A 8.74 kB -
17oe55cu76cd7.js gzip N/A 450 B -
1frm88k70_rxf.js gzip N/A 8.78 kB -
1sw-3udjjm8tn.js gzip N/A 156 B -
1ynlcmklb8_j3.js gzip N/A 9.45 kB -
1z8mo3qhn8sjx.js gzip N/A 71.4 kB -
211gfm233vnxp.js gzip N/A 156 B -
21rbomn5ucvi9.js gzip N/A 7.45 kB -
2307m3bxzu-lk.js gzip N/A 153 B -
2a_p4b_g75xdo.js gzip N/A 8.8 kB -
2d3j86ktn7rzb.js gzip N/A 157 B -
2dn0ae5-nmkio.js gzip N/A 13.6 kB -
2g2f64lmg3m7w.js gzip N/A 5.73 kB -
2jqjo3clcvi_t.js gzip N/A 161 B -
2kolt5lwxt8o0.js gzip N/A 10 kB -
2lpk5_hknut8q.js gzip N/A 13.1 kB -
2p0a0fr4ydefu.js gzip N/A 8.7 kB -
2p9-5diwx5gt6.js gzip N/A 10.6 kB -
2t7jalpufyyny.js gzip N/A 160 B -
2ugc69z0t0ypz.js gzip N/A 1.46 kB -
3553gsofxyxmv.js gzip N/A 155 B -
38v3pncooy-ug.js gzip N/A 154 B -
39dwvusvhp_ja.js gzip N/A 156 B -
3crtg4i2per05.js gzip N/A 8.74 kB -
3ghtbhrse9p63.js gzip N/A 8.78 kB -
3i6-5t8b-odg_.js gzip N/A 156 B -
3naumt_z816bn.js gzip N/A 46.7 kB -
3o9kb29r3jk1o.js gzip N/A 65.6 kB -
3q0h3yzsw1g9v.js gzip N/A 13.2 kB -
3ulwq0kp27hwu.js gzip N/A 169 B -
3y0of5nncl2hl.js gzip N/A 154 B -
turbopack-02..0bws.js gzip N/A 3.84 kB -
turbopack-0w..vu5q.js gzip N/A 3.84 kB -
turbopack-1x..kzkr.js gzip N/A 3.85 kB -
turbopack-1y..antv.js gzip N/A 3.84 kB -
turbopack-20..ncy7.js gzip N/A 3.86 kB -
turbopack-2h..5ii8.js gzip N/A 3.85 kB -
turbopack-2q..kw-y.js gzip N/A 3.85 kB -
turbopack-2s.._2tz.js gzip N/A 3.85 kB -
turbopack-38..aex-.js gzip N/A 3.82 kB -
turbopack-3b..cq-1.js gzip N/A 3.85 kB -
turbopack-3h..yo3p.js gzip N/A 3.84 kB -
turbopack-3k..qq9l.js gzip N/A 3.84 kB -
turbopack-3s..0903.js gzip N/A 3.85 kB -
turbopack-3y..s518.js gzip N/A 3.85 kB -
Total 401 kB 451 kB ⚠️ +49.3 kB

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 1.06 kB 779 B 🟢 278 B (-26%)
Total 1.06 kB 779 B ✅ -278 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 877 B 434 B 🟢 443 B (-51%)
Total 877 B 434 B ✅ -443 B
Build Cache
Canary PR Change
00000001.sst gzip 12.7 MB 12.7 MB 🔴 +22.5 kB (+0%)
00000002.sst gzip 13.7 MB 13.5 MB 🟢 136 kB (-1%)
00000003.sst gzip 13.6 MB 14.2 MB 🔴 +559 kB (+4%)
00000004.sst gzip 15.6 MB 15 MB 🟢 564 kB (-4%)
00000005.sst gzip 10.2 MB 10.3 MB 🔴 +95.9 kB (+1%)
00000006.sst gzip 2.8 MB 2.84 MB 🔴 +33.3 kB (+1%)
00000007.sst gzip 59 B 59 B ✓
00000008.meta gzip 89 B 89 B ✓
00000009.meta gzip 298 kB 298 kB ✓
00000010.meta gzip 298 kB 299 kB ✓
00000011.meta gzip 298 kB 298 kB ✓
00000012.sst gzip 51.7 kB 51.6 kB ✓
00000013.sst gzip 1.81 MB 1.91 MB 🔴 +104 kB (+6%)
00000014.sst gzip 59 B 59 B ✓
00000015.meta gzip 116 B 116 B ✓
00000016.meta gzip 328 kB 324 kB 🟢 3.09 kB (-1%)
00000017.meta gzip 407 kB 405 kB 🟢 2.44 kB (-1%)
00000018.sst gzip 52.5 kB 52.5 kB ✓
00000019.sst gzip 1.39 MB 1.4 MB 🔴 +9.66 kB (+1%)
00000020.sst gzip 59 B 59 B ✓
00000021.meta gzip 116 B 116 B ✓
00000022.meta gzip 328 kB 324 kB 🟢 3.09 kB (-1%)
00000023.meta gzip 373 kB 370 kB 🟢 2.99 kB (-1%)
00000024.sst gzip 52.6 kB 52.5 kB ✓
00000025.sst gzip 1.39 MB 1.4 MB 🔴 +10.1 kB (+1%)
00000026.sst gzip 59 B 59 B ✓
00000027.meta gzip 116 B 116 B ✓
00000028.meta gzip 328 kB 324 kB 🟢 3.09 kB (-1%)
00000029.meta gzip 373 kB 370 kB 🟢 2.99 kB (-1%)
00000030.sst gzip 51.9 kB 51.7 kB ✓
00000031.sst gzip 1.39 MB 1.4 MB 🔴 +10.4 kB (+1%)
00000032.sst gzip 59 B 59 B ✓
00000033.meta gzip 116 B 116 B ✓
00000034.meta gzip 328 kB 324 kB 🟢 3.09 kB (-1%)
00000035.meta gzip 373 kB 370 kB 🟢 2.99 kB (-1%)
00000036.sst gzip 52.5 kB 52.4 kB ✓
00000037.sst gzip 1.39 MB 1.4 MB 🔴 +10.2 kB (+1%)
00000038.sst gzip 59 B 59 B ✓
00000039.meta gzip 116 B 116 B ✓
00000040.meta gzip 328 kB 324 kB 🟢 3.09 kB (-1%)
00000041.meta gzip 373 kB 370 kB 🟢 2.99 kB (-1%)
CURRENT gzip 94 B 94 B ✓
LOG gzip 665 B 684 B 🔴 +19 B (+3%)
Total 80.6 MB 80.7 MB ⚠️ +126 kB

📦 Webpack

Client

Main Bundles
Canary PR Change
3322-HASH.js gzip 66.1 kB N/A -
4191.HASH.js gzip 169 B N/A -
7920-HASH.js gzip 4.67 kB N/A -
9784-HASH.js gzip 5.63 kB N/A -
b1ad9f4c-HASH.js gzip 63.5 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB ✓
main-app-HASH.js gzip 253 B 253 B ✓
main-HASH.js gzip 40.2 kB 40 kB ✓
webpack-HASH.js gzip 1.68 kB 1.68 kB ✓
3577.HASH.js gzip N/A 168 B -
578-HASH.js gzip N/A 66.2 kB -
8590-HASH.js gzip N/A 5.6 kB -
9750-HASH.js gzip N/A 4.68 kB -
a8984546-HASH.js gzip N/A 63.2 kB -
Total 242 kB 241 kB ✅ -549 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 193 B ✓
_error-HASH.js gzip 181 B 182 B ✓
css-HASH.js gzip 334 B 331 B ✓
dynamic-HASH.js gzip 1.81 kB 1.81 kB ✓
edge-ssr-HASH.js gzip 255 B 253 B ✓
head-HASH.js gzip 349 B 351 B ✓
hooks-HASH.js gzip 382 B 384 B ✓
image-HASH.js gzip 581 B 582 B ✓
index-HASH.js gzip 260 B 259 B ✓
link-HASH.js gzip 2.48 kB 2.48 kB ✓
routerDirect..HASH.js gzip 317 B 318 B ✓
script-HASH.js gzip 384 B 386 B ✓
withRouter-HASH.js gzip 316 B 315 B ✓
1afbb74e6ecf..834.css gzip 106 B 106 B ✓
Total 7.95 kB 7.95 kB ✅ -2 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 129 kB 128 kB ✓
page.js gzip 294 kB 295 kB ✓
Total 423 kB 423 kB ✅ -497 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 617 B 615 B ✓
middleware-r..fest.js gzip 156 B 156 B ✓
middleware.js gzip 46 kB 45.7 kB ✓
edge-runtime..pack.js gzip 842 B 842 B ✓
Total 47.6 kB 47.3 kB ✅ -381 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 717 B 718 B ✓
Total 717 B 718 B ⚠️ +1 B
Build Cache
Canary PR Change
0.pack gzip 4.83 MB 4.92 MB 🔴 +92.8 kB (+2%)
index.pack gzip 123 kB 123 kB ✓
index.pack.old gzip 122 kB 123 kB 🔴 +1.23 kB (+1%)
Total 5.07 MB 5.17 MB ⚠️ +94.2 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 376 kB 374 kB 🟢 2.09 kB (-1%)
app-page-exp..prod.js gzip 207 kB 206 kB ✓
app-page-tur...dev.js gzip 375 kB 373 kB 🟢 2.08 kB (-1%)
app-page-tur..prod.js gzip 206 kB 206 kB ✓
app-page-tur...dev.js gzip 372 kB 370 kB ✓
app-page-tur..prod.js gzip 204 kB 204 kB ✓
app-page.run...dev.js gzip 372 kB 370 kB ✓
app-page.run..prod.js gzip 204 kB 204 kB ✓
app-route-ex...dev.js gzip 83.2 kB 83.4 kB ✓
app-route-ex..prod.js gzip 56.2 kB 56.5 kB ✓
app-route-tu...dev.js gzip 83.2 kB 83.4 kB ✓
app-route-tu..prod.js gzip 56.2 kB 56.5 kB ✓
app-route-tu...dev.js gzip 82.8 kB 83 kB ✓
app-route-tu..prod.js gzip 56 kB 56.2 kB ✓
app-route.ru...dev.js gzip 82.8 kB 83 kB ✓
app-route.ru..prod.js gzip 55.9 kB 56.2 kB ✓
dev-validati...dev.js gzip 134 kB 133 kB ✓
dev-validati...dev.js gzip 134 kB 133 kB ✓
dev-validati...dev.js gzip 132 kB 131 kB ✓
dev-validati...dev.js gzip 132 kB 131 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 46.5 kB 46.3 kB ✓
pages-api-tu..prod.js gzip 34.7 kB 34.6 kB ✓
pages-api.ru...dev.js gzip 46.5 kB 46.3 kB ✓
pages-api.ru..prod.js gzip 34.7 kB 34.6 kB ✓
pages-turbo....dev.js gzip 55.3 kB 55.1 kB ✓
pages-turbo...prod.js gzip 40.2 kB 40.2 kB ✓
pages.runtim...dev.js gzip 55.3 kB 55.1 kB ✓
pages.runtim..prod.js gzip 40.2 kB 40.1 kB ✓
server.runti..prod.js gzip 66.6 kB 67.3 kB 🔴 +668 B (+1%)
use-cache-pr...dev.js gzip 72.7 kB 72.4 kB ✓
use-cache-pr...dev.js gzip 72.7 kB 72.4 kB ✓
use-cache-pr...dev.js gzip 70.9 kB 70.7 kB ✓
use-cache-pr...dev.js gzip 70.9 kB 70.7 kB ✓
Total 4.11 MB 4.1 MB ✅ -9.63 kB
📝 Changed Files (33 files)

Files with changes:

  • app-page-exp..ntime.dev.js
  • app-page-exp..time.prod.js
  • app-page-tur..ntime.dev.js
  • app-page-tur..time.prod.js
  • app-page-tur..ntime.dev.js
  • app-page-tur..time.prod.js
  • app-page.runtime.dev.js
  • app-page.runtime.prod.js
  • app-route-ex..ntime.dev.js
  • app-route-ex..time.prod.js
  • app-route-tu..ntime.dev.js
  • app-route-tu..time.prod.js
  • app-route-tu..ntime.dev.js
  • app-route-tu..time.prod.js
  • app-route.runtime.dev.js
  • app-route.ru..time.prod.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • ... and 13 more
View diffs
app-page-exp..ntime.dev.js
failed to diff
app-page-exp..time.prod.js
failed to diff
app-page-tur..ntime.dev.js
failed to diff
app-page-tur..time.prod.js
failed to diff
app-page-tur..ntime.dev.js
failed to diff
app-page-tur..time.prod.js
failed to diff
app-page.runtime.dev.js
failed to diff
app-page.runtime.prod.js
failed to diff
app-route-ex..ntime.dev.js

Diff too large to display

app-route-ex..time.prod.js

Diff too large to display

app-route-tu..ntime.dev.js

Diff too large to display

app-route-tu..time.prod.js

Diff too large to display

app-route-tu..ntime.dev.js

Diff too large to display

app-route-tu..time.prod.js

Diff too large to display

app-route.runtime.dev.js

Diff too large to display

app-route.ru..time.prod.js

Diff too large to display

dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
pages-api-tu..ntime.dev.js

Diff too large to display

pages-api-tu..time.prod.js

Diff too large to display

pages-api.runtime.dev.js

Diff too large to display

pages-api.ru..time.prod.js

Diff too large to display

pages-turbo...ntime.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

pages.runtime.prod.js

Diff too large to display

server.runtime.prod.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/363203e16cc594d2082744c46a7442050a07b5d1/next

Commit: 363203e

@github-actions

github-actions Bot commented Aug 17, 2026 •

Copy link
Copy Markdown
Contributor

Tests Passed

Commit: 363203e

@eps1lon eps1lon changed the title [backport] Turbopack: retain conditions when replacing resolve request keys [16.3.x] Turbopack: retain conditions when replacing resolve request keys Aug 17, 2026
@mischnic mischnic changed the title [16.3.x] Turbopack: retain conditions when replacing resolve request keys [16.3] Turbopack: retain conditions when replacing resolve request keys Aug 17, 2026
@mischnic
mischnic requested a review from sokra August 19, 2026 09:20
@mischnic
mischnic merged commit 5ac2327 into next-16-3 Aug 19, 2026
116 checks passed
@mischnic
mischnic deleted the mischnic/backport-resolve-condition branch August 19, 2026 19:58
owine added a commit to owine/house-manager that referenced this pull request Aug 24, 2026
## Why now

`next.config.ts` has carried a temporary `outputFileTracingIncludes`
block since #414. Its delete condition — "the upstream backport ships in
a stable release" — is now met:

- **vercel/next.js#97453** (*Turbopack: retain conditions when replacing
resolve request keys*) merged into the `next-16-3` branch on 2026-08-19
as `5ac2327`.
- **v16.3.2** was published 2026-08-21. `gh api
repos/vercel/next.js/compare/5ac2327...v16.3.2` reports `ahead_by: 3,
behind_by: 0` — the tag contains the fix.
- #425 brought 16.3.2 into `main`.

## Verification

A fresh `pnpm build` with the block removed traces the helpers correctly
on its own:

```
@swc/helpers/esm: _interop_require_default.js, _interop_require_wildcard.js
@swc/helpers/cjs: _interop_require_default.cjs, _interop_require_wildcard.cjs
```

Both conditions are now emitted for each helper. Grepping the traced
`next/dist` for `@swc/helpers/_/*` returns exactly those two names, so
that is the complete set — the workaround's glob was copying all 108
`esm/` files to cover 2.

The bug this guarded against (`createEsmNotFoundErr` at web boot) is
only reproducible in the image, so **`build-image` +
`scripts/smoke-image.sh` is the real gate here** — a local build
resolves against the full source tree and can't see it. Deliberately a
standalone PR, separate from the version bump, so a red CI is
unambiguous about which change caused it.

## Summary by Sourcery

Enhancements:
- Remove the temporary SWC helpers file-tracing workaround now that the
upstream Next.js fix is included in the stable release.
@github-actions github-actions Bot added the locked label Sep 3, 2026
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Sep 3, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants