Skip to content

Turbopack: fix subpath imports pointing to external packages#93308

Merged
mischnic merged 5 commits into
canaryfrom
mischnic/fix-subpath-imports
May 20, 2026
Merged

Turbopack: fix subpath imports pointing to external packages#93308
mischnic merged 5 commits into
canaryfrom
mischnic/fix-subpath-imports

Conversation

@mischnic
Copy link
Copy Markdown
Member

@mischnic mischnic commented Apr 28, 2026

Closes #93295
Closes #93914

https://nodejs.org/api/packages.html#subpath-exports:

All target paths in the "exports" map (the values associated with export keys) must be relative URL strings starting with ./

but

Unlike the "exports" field, the "imports" field permits mapping to external packages.
The resolution rules for the imports field are otherwise analogous to the exports field.

@github-actions github-actions Bot added created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js. labels Apr 28, 2026
Comment thread turbopack/crates/turbopack-core/src/resolve/mod.rs Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 28, 2026

Tests Passed

Commit: 3adc930

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 28, 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) 812ms 812ms ▅▄▅▂▄
Cold (Ready in log) 778ms 778ms ▁▄▃▄▄
Cold (First Request) 1.184s 1.183s ▁▃▃▃▃
Warm (Listen) 812ms 811ms ▆▁▃▁▁
Warm (Ready in log) 776ms 776ms ▁▅▃▄▄
Warm (First Request) 579ms 575ms ▁▅▃▅▄
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 811ms 812ms ▃▆▆▆▃
Cold (Ready in log) 777ms 779ms ▃▅▃▃▃
Cold (First Request) 3.158s 3.170s ▂▄▁▃▁
Warm (Listen) 812ms 811ms ▁█▁█▁
Warm (Ready in log) 779ms 777ms ▃▆▂▃▃
Warm (First Request) 3.170s 3.160s ▁▃▂▄▁

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 4.717s 4.719s ▆▃▂▂▁
Cached Build 4.697s 4.734s ▂▃▃▃▃
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 23.931s 23.923s ▃▃▁▂▁
Cached Build 24.017s 23.845s ▂▄▃▄▁
node_modules Size 506 MB 506 MB ▆▆▆▆█
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
04hm05ar7kldw.js gzip 5.73 kB N/A -
055aw4u7hn1jv.js gzip 70.9 kB N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB
0dvitrl5zg37g.js gzip 8.82 kB N/A -
0p7tkfsxmv8ep.js gzip 156 B N/A -
0qiq-ikey17ei.js gzip 155 B N/A -
0sf7ysou-72zd.js gzip 8.71 kB N/A -
0vcchqb24-h55.js gzip 154 B N/A -
157abun3hwc_s.js gzip 10.3 kB N/A -
1elt1qium-r2m.css gzip 115 B 115 B
1jj68jv9537mc.js gzip 13.8 kB N/A -
1jpaub6y8xlfr.js gzip 2.3 kB N/A -
1ot0mvscrc_uf.js gzip 233 B N/A -
1v_7mahx-79v3.js gzip 156 B N/A -
1zabrqj73lcq7.js gzip 156 B N/A -
2_m3xv2uq3sjc.js gzip 1.46 kB N/A -
20_bzd4cnuk6f.js gzip 65.6 kB N/A -
20jgkju22ogb8.js gzip 50.4 kB N/A -
23abq4bpnyu6s.js gzip 161 B N/A -
24-18647la7oc.js gzip 157 B N/A -
24y34mwgrkqp4.js gzip 8.78 kB N/A -
26twnknhm5qim.js gzip 153 B N/A -
2c-fd4y1zozz8.js gzip 8.79 kB N/A -
2d7416h_xd36x.js gzip 8.71 kB N/A -
2efjr9qeqzf_t.js gzip 155 B N/A -
2g21ny1t2kw37.js gzip 7.61 kB N/A -
2lyuhit6rn8fy.js gzip 9.44 kB N/A -
2q0gr8wfr3jwl.js gzip 8.77 kB N/A -
2t9e75oz6r0zp.js gzip 8.76 kB N/A -
2uku_olcn15b7.js gzip 8.79 kB N/A -
30r8mm-46bdqy.js gzip 220 B 220 B
39sl-keubxrt6.js gzip 155 B N/A -
3c1jdxkzlb8oq.js gzip 12.9 kB N/A -
3inab2jybr4k9.js gzip 450 B N/A -
3jkm5tdjvaf_q.js gzip 13.1 kB N/A -
3mt67agm5wp40.js gzip 10.6 kB N/A -
3qpe66ftr5vit.js gzip 159 B N/A -
3saabek4kohwi.js gzip 10 kB N/A -
4189xmby9yu1p.js gzip 13.6 kB N/A -
42n48pbsa6px8.js gzip 170 B N/A -
44e-mbst2zrbx.js gzip 152 B N/A -
turbopack-04..knzn.js gzip 4.2 kB N/A -
turbopack-06..dcr2.js gzip 4.2 kB N/A -
turbopack-0b..mvsr.js gzip 4.2 kB N/A -
turbopack-0v..h8au.js gzip 4.2 kB N/A -
turbopack-16..hufr.js gzip 4.21 kB N/A -
turbopack-19..dqzv.js gzip 4.2 kB N/A -
turbopack-1p..obkm.js gzip 4.2 kB N/A -
turbopack-1q..z-fe.js gzip 4.2 kB N/A -
turbopack-2-..u6zx.js gzip 4.2 kB N/A -
turbopack-25..aolk.js gzip 4.18 kB N/A -
turbopack-29..gj28.js gzip 4.2 kB N/A -
turbopack-2j..nryu.js gzip 4.2 kB N/A -
turbopack-3v..30l9.js gzip 4.2 kB N/A -
turbopack-3y..zp_c.js gzip 4.2 kB N/A -
0_i7nqgx23st7.js gzip N/A 10 kB -
06puhytyxk31p.js gzip N/A 8.82 kB -
0ay0mlrxf1iru.js gzip N/A 169 B -
0c1g7k_q0eabe.js gzip N/A 157 B -
0ca7-y17yur_x.js gzip N/A 156 B -
0f0wgs50fuvzz.js gzip N/A 156 B -
0j42f9zonj0wd.js gzip N/A 13 kB -
0m34gln_kt4fg.js gzip N/A 5.73 kB -
0rm_nj33c0r4u.js gzip N/A 154 B -
0xrdnbkg2vvjy.js gzip N/A 161 B -
0yhzk2i5kx_og.js gzip N/A 70.9 kB -
1ck72gbqbfell.js gzip N/A 50.4 kB -
1g3q1ww01thnl.js gzip N/A 2.3 kB -
1hraqxuiymq6v.js gzip N/A 8.79 kB -
1l9un1sl77287.js gzip N/A 1.46 kB -
1r3hpm0mji0fy.js gzip N/A 161 B -
20xc0m_sca76i.js gzip N/A 156 B -
21-eavqb1k_36.js gzip N/A 13.9 kB -
2147zgtf14z-q.js gzip N/A 234 B -
23bz3xsg-5-1s.js gzip N/A 8.71 kB -
23d1a7-y0i08o.js gzip N/A 158 B -
241h-8q5lq_re.js gzip N/A 153 B -
25-_uslqos021.js gzip N/A 155 B -
27441mytv7pbm.js gzip N/A 9.43 kB -
2cjkwjgm1zcfs.js gzip N/A 8.71 kB -
2scd8zaoyb8md.js gzip N/A 8.79 kB -
2st_qs6p_9us0.js gzip N/A 13.1 kB -
2tgrnri27_15r.js gzip N/A 65.6 kB -
2zo2exm1d8qj1.js gzip N/A 13.6 kB -
30yt3aos91w3x.js gzip N/A 154 B -
3b36esolmu3k4.js gzip N/A 154 B -
3f710q6kll2xn.js gzip N/A 7.61 kB -
3hn75zuxly9az.js gzip N/A 10.3 kB -
3hqh7m128tvsn.js gzip N/A 8.77 kB -
3hqti_t-zy1x4.js gzip N/A 449 B -
3mnawenie1flm.js gzip N/A 8.76 kB -
3ubsozlu6zs38.js gzip N/A 10.6 kB -
43iwfqjnx1cy_.js gzip N/A 8.78 kB -
turbopack-01..8uo5.js gzip N/A 4.2 kB -
turbopack-07..uids.js gzip N/A 4.2 kB -
turbopack-0e..fe4b.js gzip N/A 4.2 kB -
turbopack-0n..r8yb.js gzip N/A 4.2 kB -
turbopack-0p..zz-y.js gzip N/A 4.2 kB -
turbopack-0v..fhv1.js gzip N/A 4.21 kB -
turbopack-11..0dwi.js gzip N/A 4.18 kB -
turbopack-1j..2nkx.js gzip N/A 4.19 kB -
turbopack-2_..bnhj.js gzip N/A 4.2 kB -
turbopack-2i..-kdt.js gzip N/A 4.19 kB -
turbopack-31..amhb.js gzip N/A 4.2 kB -
turbopack-3o..8eau.js gzip N/A 4.2 kB -
turbopack-3w..x2yg.js gzip N/A 4.2 kB -
turbopack-43..g_vg.js gzip N/A 4.2 kB -
Total 469 kB 469 kB ⚠️ +41 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 721 B 720 B
Total 721 B 720 B ✅ -1 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 434 B 429 B 🟢 5 B (-1%)
Total 434 B 429 B ✅ -5 B

📦 Webpack

Client

Main Bundles
Canary PR Change
2258-HASH.js gzip 61.4 kB N/A -
2266-HASH.js gzip 4.69 kB N/A -
3317.HASH.js gzip 169 B N/A -
4866-HASH.js gzip 5.64 kB N/A -
9e302639-HASH.js gzip 62.8 kB N/A -
framework-HASH.js gzip 59.5 kB 59.5 kB
main-app-HASH.js gzip 255 B 255 B
main-HASH.js gzip 39.9 kB 39.9 kB
webpack-HASH.js gzip 1.68 kB 1.68 kB
175fd0fd-HASH.js gzip N/A 62.8 kB -
2596-HASH.js gzip N/A 5.63 kB -
34-HASH.js gzip N/A 61.3 kB -
5691.HASH.js gzip N/A 169 B -
9156-HASH.js gzip N/A 4.68 kB -
Total 236 kB 236 kB ✅ -98 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 193 B 193 B
_error-HASH.js gzip 181 B 182 B
css-HASH.js gzip 334 B 332 B
dynamic-HASH.js gzip 1.79 kB 1.81 kB
edge-ssr-HASH.js gzip 255 B 255 B
head-HASH.js gzip 351 B 348 B
hooks-HASH.js gzip 385 B 384 B
image-HASH.js gzip 580 B 580 B
index-HASH.js gzip 257 B 259 B
link-HASH.js gzip 2.51 kB 2.52 kB
routerDirect..HASH.js gzip 318 B 319 B
script-HASH.js gzip 387 B 386 B
withRouter-HASH.js gzip 316 B 316 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Total 7.97 kB 7.99 kB ⚠️ +19 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 126 kB 126 kB
page.js gzip 276 kB 270 kB 🟢 5.31 kB (-2%)
Total 402 kB 396 kB ✅ -5.53 kB
Middleware
Canary PR Change
middleware-b..fest.js gzip 622 B 614 B 🟢 8 B (-1%)
middleware-r..fest.js gzip 155 B 155 B
middleware.js gzip 44.4 kB 44.9 kB 🔴 +497 B (+1%)
edge-runtime..pack.js gzip 842 B 842 B
Total 46 kB 46.5 kB ⚠️ +489 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 719 B 717 B
Total 719 B 717 B ✅ -2 B
Build Cache
Canary PR Change
0.pack gzip 4.49 MB 4.49 MB
index.pack gzip 114 kB 114 kB
index.pack.old gzip 114 kB 114 kB
Total 4.72 MB 4.71 MB ✅ -2.14 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 351 kB 351 kB
app-page-exp..prod.js gzip 195 kB 195 kB
app-page-tur...dev.js gzip 350 kB 350 kB
app-page-tur..prod.js gzip 194 kB 194 kB
app-page-tur...dev.js gzip 347 kB 347 kB
app-page-tur..prod.js gzip 192 kB 192 kB
app-page.run...dev.js gzip 347 kB 347 kB
app-page.run..prod.js gzip 193 kB 193 kB
app-route-ex...dev.js gzip 77.5 kB 77.5 kB
app-route-ex..prod.js gzip 52.9 kB 52.9 kB
app-route-tu...dev.js gzip 77.6 kB 77.6 kB
app-route-tu..prod.js gzip 52.9 kB 52.9 kB
app-route-tu...dev.js gzip 77.2 kB 77.2 kB
app-route-tu..prod.js gzip 52.7 kB 52.7 kB
app-route.ru...dev.js gzip 77.1 kB 77.1 kB
app-route.ru..prod.js gzip 52.7 kB 52.7 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 44.3 kB 44.3 kB
pages-api-tu..prod.js gzip 33.8 kB 33.8 kB
pages-api.ru...dev.js gzip 44.3 kB 44.3 kB
pages-api.ru..prod.js gzip 33.7 kB 33.7 kB
pages-turbo....dev.js gzip 53.7 kB 53.7 kB
pages-turbo...prod.js gzip 39.4 kB 39.4 kB
pages.runtim...dev.js gzip 53.6 kB 53.6 kB
pages.runtim..prod.js gzip 39.4 kB 39.4 kB
server.runti..prod.js gzip 63.1 kB 63.1 kB
use-cache-pr...dev.js gzip 69.7 kB 69.7 kB
use-cache-pr...dev.js gzip 69.7 kB 69.7 kB
use-cache-pr...dev.js gzip 68 kB 68 kB
use-cache-pr...dev.js gzip 68 kB 68 kB
Total 3.37 MB 3.37 MB
📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/3adc9308597c7d67427a92592a4bfdd3c2a87630/next

Commit: 3adc930

@vicb
Copy link
Copy Markdown
Contributor

vicb commented May 4, 2026

@mischnic any idea when this will be merged and released?

We need this fix for the Cloudflare adapter and are trying to figure if we will just wait this fix or implement a workaround in the meantime.

Thanks!

mischnic and others added 5 commits May 19, 2026 11:06
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
@mischnic mischnic force-pushed the mischnic/fix-subpath-imports branch from 11cb268 to 3adc930 Compare May 19, 2026 09:12
@mischnic mischnic marked this pull request as ready for review May 19, 2026 13:07
@mischnic mischnic requested a review from sokra May 19, 2026 13:07
@mischnic mischnic merged commit 40d7843 into canary May 20, 2026
164 checks passed
@mischnic mischnic deleted the mischnic/fix-subpath-imports branch May 20, 2026 08:08
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. Turbopack Related to Turbopack with Next.js.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Module resolution ignores import aliases for dependencies

3 participants