Skip to content

feat(turbopack): support false values for resolveAlias config#91595

Draft
sokra wants to merge 8 commits intocanaryfrom
sokra/resolve-alias-false
Draft

feat(turbopack): support false values for resolveAlias config#91595
sokra wants to merge 8 commits intocanaryfrom
sokra/resolve-alias-false

Conversation

@sokra
Copy link
Member

@sokra sokra commented Mar 18, 2026

What?

Adds support for false as a value in experimental.turbopack.resolveAlias, which resolves the aliased module to an empty stub — matching webpack's long-standing behavior.

// next.config.js
module.exports = {
  experimental: {
    turbopack: {
      resolveAlias: {
        'some-server-only-module': false,
      },
    },
  },
}

With this alias in place:

  • import * as ns from 'some-server-only-module'ns is {}
  • import { foo } from 'some-server-only-module'foo is undefined
  • import def from 'some-server-only-module'def is undefined
  • await import('some-server-only-module') → resolves to {}
  • require('some-server-only-module') → returns {}

Why?

Webpack supports false as an alias target to stub out modules (e.g. to exclude Node-only packages from client/edge bundles). Turbopack did not, causing migration friction for projects that rely on this pattern.

How?

Threads the false sentinel through the full resolution pipeline as a new Empty variant:

false (config)
  → SubpathValue::Empty      (next-core import map)
  → ImportMapping::Empty     (turbopack-core remap)
  → ReplacedImportMapping::Empty
  → ResolveResultItem::Empty
  → ModuleResolveResultItem::Empty
  → ReferencedAsset::Empty   (ESM static imports)
  → SinglePatternMapping::Ignored  (CJS require / dynamic import)

For static ESM imports, ReferencedAsset::Empty is kept as a distinct variant so that binding.rs can distinguish a namespace import (yields {}) from a named/default import (yields undefined).

For CJS require() and dynamic import(), ModuleResolveResultItem::Empty maps to the existing SinglePatternMapping::Ignored, which already generates the correct {} / Promise.resolve({}) stubs — so no new code-generation path was needed there (the redundant Empty variant introduced during development was removed in a follow-up cleanup commit).

Files changed:

  • packages/next/src/server/config-shared.ts — add false to resolveAlias type
  • packages/next/src/server/config-schema.ts — add z.literal(false) to schema
  • crates/next-core/src/next_import_map.rs — map falseSubpathValue::Empty
  • turbopack/crates/turbopack-core/src/resolve/remap.rs — handle ImportMapping::Empty
  • turbopack/crates/turbopack-core/src/resolve/mod.rs — propagate ModuleResolveResultItem::Empty
  • turbopack/crates/turbopack-ecmascript/src/references/esm/base.rsReferencedAsset::Empty
  • turbopack/crates/turbopack-ecmascript/src/references/esm/binding.rs — empty-module binding code-gen
  • turbopack/crates/turbopack-ecmascript/src/references/esm/url.rs — handle Empty in URL refs
  • turbopack/crates/turbopack-ecmascript/src/references/async_module.rs — skip Empty in async module analysis
  • turbopack/crates/turbopack-ecmascript/src/references/pattern_mapping.rs — map Empty → Ignored

Tests: test/e2e/turbopack-resolve-alias-false/ covers all five import styles (namespace, named, default, dynamic, CJS).

sokra and others added 3 commits March 18, 2026 15:56
Adds support for passing `false` as a value in `resolveAlias`, which
resolves the aliased import to an empty module (`{}` for CJS/namespace
imports, `undefined` for named bindings).

Chain: `false` → `SubpathValue::Empty` → `ImportMapping::Empty` →
`ReplacedImportMapping::Empty` → `ResolveResultItem::Empty` →
`ModuleResolveResultItem::Empty` → `SinglePatternMapping::Empty` /
`ReferencedAsset::Empty`.

Co-Authored-By: Claude <noreply@anthropic.com>
Tests ESM namespace/named/default imports, dynamic import(), and
CommonJS require() all resolve to an empty module when aliased to false.

Co-Authored-By: Claude <noreply@anthropic.com>
`SinglePatternMapping::Empty` had identical code generation to `Ignored`
in all three paths (create_id/create_require/create_import), so the
variant was redundant. Map `ModuleResolveResultItem::Empty` directly to
`Ignored` and remove the unreachable explicit arm in `as_module`.

Co-Authored-By: Claude <noreply@anthropic.com>
@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 Mar 18, 2026
@nextjs-bot
Copy link
Collaborator

nextjs-bot commented Mar 18, 2026

Failing test suites

Commit: 74a51a5 | About building and testing Next.js

pnpm test-start test/production/app-dir/metadata-static-route-cache/metadata-static-route-cache.test.ts (job)

  • app-dir - server-action-period-hash > should have same manifest between continuous two builds (DD)
  • app-dir - server-action-period-hash > should have different manifest between two builds with period hash (DD)
Expand output

● app-dir - server-action-period-hash › should have same manifest between continuous two builds

can not run export while server is running, use next.stop() first

  251 |   ) {
  252 |     if (this.childProcess) {
> 253 |       throw new Error(
      |             ^
  254 |         `can not run export while server is running, use next.stop() first`
  255 |       )
  256 |     }

  at NextStartInstance.build (lib/next-modes/next-start.ts:253:13)
  at Object.build (production/app-dir/server-action-period-hash/server-action-period-hash.test.ts:17:16)

● app-dir - server-action-period-hash › should have different manifest between two builds with period hash

can not run export while server is running, use next.stop() first

  251 |   ) {
  252 |     if (this.childProcess) {
> 253 |       throw new Error(
      |             ^
  254 |         `can not run export while server is running, use next.stop() first`
  255 |       )
  256 |     }

  at NextStartInstance.build (lib/next-modes/next-start.ts:253:13)
  at Object.build (production/app-dir/server-action-period-hash/server-action-period-hash.test.ts:27:16)

@codspeed-hq
Copy link

codspeed-hq bot commented Mar 18, 2026

Merging this PR will not alter performance

✅ 17 untouched benchmarks
⏩ 3 skipped benchmarks1


Comparing sokra/resolve-alias-false (74a51a5) with canary (58fb963)

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.

@nextjs-bot
Copy link
Collaborator

nextjs-bot commented Mar 18, 2026

Stats from current PR

🔴 1 regression, 1 improvement

Metric Canary PR Change Trend
Turbo Build Time (cached) 6.082s 6.415s 🔴 +333ms (+5%) ▁▁▁▁▂
node_modules Size 484 MB 483 MB 🟢 84 kB (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) 914ms 916ms ▁▁▁▁▂
Cold (Ready in log) 916ms 918ms ▁▁▁▁▂
Cold (First Request) 1.519s 1.533s ▂▁▂▁▂
Warm (Listen) 913ms 913ms ▁▁▁▁▂
Warm (Ready in log) 907ms 887ms ▁▁▁▁▂
Warm (First Request) 678ms 646ms ▁▁▁▁▁
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 456ms 455ms ▁▁▁▁▁
Cold (Ready in log) 436ms 437ms ▃▁▁▅▁
Cold (First Request) 1.929s 1.952s ▃▂▁▅▃
Warm (Listen) 456ms 456ms ▁▁▁▁▁
Warm (Ready in log) 435ms 435ms ▃▁▁▆▁
Warm (First Request) 1.947s 1.946s ▄▃▁▆▃

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 6.271s 6.390s ▁▁▁▁▂
Cached Build 6.082s 6.415s 🔴 +333ms (+5%) ▁▁▁▁▂
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 14.440s 14.316s ▂▁▁▅▁
Cached Build 14.472s 14.484s ▂▁▁▆▁
node_modules Size 484 MB 483 MB 🟢 84 kB (0%) ▁▁▁▁▁
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
0-a3rz67ec0it.js gzip 157 B N/A -
0~lwfcrlb4v_9.css gzip 115 B 115 B
00h0nz7r436~l.js gzip 13.3 kB N/A -
00ivb_iunbucu.js gzip 13 kB N/A -
02ku7edzc_wf7.js gzip 450 B N/A -
03~yq9q893hmn.js gzip 39.4 kB 39.4 kB
037mxw~u2_79t.js gzip 154 B N/A -
08wow2p6zxy.b.js gzip 7.61 kB N/A -
092lcb3fqrrf9.js gzip 8.52 kB N/A -
0aj~xs1l1g8tg.js gzip 8.53 kB N/A -
0gob4q88vgv3u.js gzip 156 B N/A -
0h35gmp9u328z.js gzip 8.54 kB N/A -
0h6fkavebp.iz.js gzip 8.47 kB N/A -
0hcg0snee_9wv.js gzip 156 B N/A -
0i8jiw50w3l38.js gzip 154 B N/A -
0ino_yf1k3h6k.js gzip 10.4 kB N/A -
0kkeoe2n.293z.js gzip 160 B N/A -
0l~j-k_rjuult.js gzip 70.8 kB N/A -
0mc16gv2x1bet.js gzip 13.7 kB N/A -
0mcszt6vwd60_.js gzip 154 B N/A -
0mgzv7x.0y719.js gzip 169 B N/A -
0moy~uao4dl.m.js gzip 9.19 kB N/A -
0n5ln2l5jgra~.js gzip 152 B N/A -
0ovzdapbcjgc7.js gzip 65.7 kB N/A -
0p2fwrxw124by.js gzip 160 B N/A -
0q50rtpusjy90.js gzip 2.28 kB N/A -
0smgy2grrrlka.js gzip 8.58 kB N/A -
0t1dzhdfh0txh.js gzip 215 B 215 B
0vt7pofxnk8in.js gzip 10.1 kB N/A -
0zid7o0-vupvp.js gzip 225 B N/A -
1030wmumq.hbq.js gzip 156 B N/A -
11yo3xfd6b147.js gzip 12.9 kB N/A -
13.84hqxl_1p7.js gzip 9.76 kB N/A -
13ddjl2tc8beg.js gzip 153 B N/A -
14_hwphcs58-s.js gzip 48.6 kB N/A -
1554wr-t7p6z-.js gzip 8.55 kB N/A -
15pd.z8aymtma.js gzip 155 B N/A -
15tjst79~qy3_.js gzip 1.46 kB N/A -
15z_v00ne4ud0.js gzip 8.47 kB N/A -
17d_m3p4j9w6r.js gzip 5.62 kB N/A -
17yu~3yiu7d2m.js gzip 8.52 kB N/A -
turbopack-0-..rr~~.js gzip 4.15 kB N/A -
turbopack-01..zoj7.js gzip 4.16 kB N/A -
turbopack-01..cl9..js gzip 4.16 kB N/A -
turbopack-0d..r9ub.js gzip 4.15 kB N/A -
turbopack-0f..1w4v.js gzip 4.15 kB N/A -
turbopack-0g..5lrl.js gzip 4.16 kB N/A -
turbopack-0l..d~my.js gzip 4.14 kB N/A -
turbopack-0l..aco3.js gzip 4.16 kB N/A -
turbopack-0p..4qy0.js gzip 4.17 kB N/A -
turbopack-0p..y0cg.js gzip 4.16 kB N/A -
turbopack-0q..cwm4.js gzip 4.15 kB N/A -
turbopack-0z..uyvd.js gzip 4.16 kB N/A -
turbopack-10..ov9~.js gzip 4.16 kB N/A -
turbopack-15..lg62.js gzip 4.16 kB N/A -
0_.49f9yku.5j.js gzip N/A 48.6 kB -
09wtf.uuenf.js gzip N/A 65.7 kB -
03t__~.5lvgeu.js gzip N/A 5.62 kB -
045826xs0cw7..js gzip N/A 157 B -
04d6ll75jqx3r.js gzip N/A 9.19 kB -
0583exyh-yhc7.js gzip N/A 9.76 kB -
05rzmxm.owmfo.js gzip N/A 158 B -
07.zyfij59v15.js gzip N/A 157 B -
072lv63r8dcz~.js gzip N/A 8.58 kB -
075t9dxgbf0m8.js gzip N/A 13.7 kB -
0ar1~bwpezfgw.js gzip N/A 13.3 kB -
0bjz8_bl77egh.js gzip N/A 156 B -
0c99mq1ez2bke.js gzip N/A 450 B -
0cq-cmde_ws6u.js gzip N/A 8.47 kB -
0ddsqw5cplozx.js gzip N/A 157 B -
0fwf102w10o9~.js gzip N/A 8.52 kB -
0gtmn.q_j1v5r.js gzip N/A 10.4 kB -
0h5~v-tahitcf.js gzip N/A 10.1 kB -
0il8e-iqe63ht.js gzip N/A 160 B -
0knpzi5u18yp..js gzip N/A 158 B -
0m4v9wugso1dt.js gzip N/A 155 B -
0nclq9z6yzzm5.js gzip N/A 1.46 kB -
0nzumcogektg7.js gzip N/A 8.55 kB -
0p88ggrxiy7bp.js gzip N/A 7.6 kB -
0pph8~gmjzt70.js gzip N/A 159 B -
0qr1te811z0jf.js gzip N/A 162 B -
0s.c-cn5eebrx.js gzip N/A 8.47 kB -
0tna7lg6q4zne.js gzip N/A 12.9 kB -
0u93xgus039jn.js gzip N/A 154 B -
0vhi.rm247gg5.js gzip N/A 70.8 kB -
0votdfxr5fb5u.js gzip N/A 2.28 kB -
0wf~7ehkxwvcn.js gzip N/A 157 B -
0ykl9bs_qj.5..js gzip N/A 8.52 kB -
0zfen0tnxp4gh.js gzip N/A 8.55 kB -
10wkq1h9jzkg..js gzip N/A 225 B -
14_-h.eefu8mv.js gzip N/A 169 B -
149ndfh8zfcaz.js gzip N/A 8.53 kB -
15gkb_10omqgr.js gzip N/A 13 kB -
turbopack-0_..p~6..js gzip N/A 4.16 kB -
turbopack-03..q2gg.js gzip N/A 4.16 kB -
turbopack-06..2r2w.js gzip N/A 4.17 kB -
turbopack-0a..mi35.js gzip N/A 4.16 kB -
turbopack-0i..adns.js gzip N/A 4.16 kB -
turbopack-0i..5a_d.js gzip N/A 4.16 kB -
turbopack-0m..71d_.js gzip N/A 4.16 kB -
turbopack-0q..okhr.js gzip N/A 4.16 kB -
turbopack-0t..7y~3.js gzip N/A 4.16 kB -
turbopack-0v..fko3.js gzip N/A 4.14 kB -
turbopack-11..4h.z.js gzip N/A 4.16 kB -
turbopack-11..1nfx.js gzip N/A 4.16 kB -
turbopack-16..m9fm.js gzip N/A 4.16 kB -
turbopack-16..9-._.js gzip N/A 4.16 kB -
Total 463 kB 463 kB

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 711 B 714 B
Total 711 B 714 B ⚠️ +3 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 433 B 431 B
Total 433 B 431 B ✅ -2 B

📦 Webpack

Client

Main Bundles
Canary PR Change
5528-HASH.js gzip 5.54 kB N/A -
6280-HASH.js gzip 60.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.7 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB
main-app-HASH.js gzip 255 B 253 B
main-HASH.js gzip 39.3 kB 39.2 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.7 kB -
9544-HASH.js gzip N/A 61.1 kB -
Total 234 kB 235 kB ⚠️ +629 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.51 kB 2.51 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.98 kB 7.98 kB ✅ -1 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 125 kB 125 kB
page.js gzip 269 kB 268 kB
Total 394 kB 393 kB ✅ -478 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 616 B 614 B
middleware-r..fest.js gzip 156 B 155 B
middleware.js gzip 43.9 kB 43.8 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 45.5 kB 45.4 kB ✅ -159 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.28 MB 4.27 MB 🟢 12.2 kB (0%)
index.pack gzip 110 kB 110 kB
index.pack.old gzip 109 kB 110 kB
Total 4.5 MB 4.49 MB ✅ -12.1 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 333 kB 333 kB
app-page-exp..prod.js gzip 181 kB 181 kB
app-page-tur...dev.js gzip 333 kB 333 kB
app-page-tur..prod.js gzip 181 kB 181 kB
app-page-tur...dev.js gzip 329 kB 329 kB
app-page-tur..prod.js gzip 179 kB 179 kB
app-page.run...dev.js gzip 330 kB 330 kB
app-page.run..prod.js gzip 179 kB 179 kB
app-route-ex...dev.js gzip 76.1 kB 76 kB
app-route-ex..prod.js gzip 51.8 kB 51.7 kB
app-route-tu...dev.js gzip 76.1 kB 76 kB
app-route-tu..prod.js gzip 51.8 kB 51.7 kB
app-route-tu...dev.js gzip 75.7 kB 75.6 kB
app-route-tu..prod.js gzip 51.6 kB 51.5 kB
app-route.ru...dev.js gzip 75.7 kB 75.6 kB
app-route.ru..prod.js gzip 51.5 kB 51.5 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.4 kB 43.4 kB
pages-api-tu..prod.js gzip 33 kB 33 kB
pages-api.ru...dev.js gzip 43.3 kB 43.3 kB
pages-api.ru..prod.js gzip 33 kB 33 kB
pages-turbo....dev.js gzip 52.7 kB 52.7 kB
pages-turbo...prod.js gzip 38.6 kB 38.6 kB
pages.runtim...dev.js gzip 52.7 kB 52.7 kB
pages.runtim..prod.js gzip 38.6 kB 38.6 kB
server.runti..prod.js gzip 62.4 kB 62.4 kB
Total 2.95 MB 2.95 MB ✅ -1.34 kB
📝 Changed Files (16 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
View diffs
app-page-exp..ntime.dev.js
failed to diff
app-page-exp..time.prod.js

Diff too large to display

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

Diff too large to display

app-page.runtime.dev.js
failed to diff
app-page.runtime.prod.js

Diff too large to display

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

📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/74a51a5da6f9800596453176f721eea552cd9b4b/next

sokra and others added 5 commits March 19, 2026 07:04
SubpathValue::add_results duplicated the tree-walk logic already
present in ReplacedSubpathValue::add_results. Replace the one call
site (export_value_to_import_mapping) with value.convert().add_results()
and make AliasKey, ReplacedSubpathValue, and ReplacedSubpathValueResult
part of turbopack-core's public resolve API so callers can use them.

Co-Authored-By: Claude <noreply@anthropic.com>
Introduce ReplacedSubpathValueResultType::{Path, Empty, Excluded} so
that add_results callers no longer need a boolean return value to detect
terminal cases. Excluded and Empty are now represented as explicit result
entries rather than implicit termination signals, which fixes silent
omission of Empty in the previous add_results logic.

Remove the bool return value from ReplacedSubpathValue::add_results;
callers detect whether a match was found by comparing the target length
before and after the call.

Co-Authored-By: Claude <noreply@anthropic.com>
Returns true when a definitive result covering all possible unknown
condition values was found (Excluded, Empty, or a concrete path), so
callers (Alternatives arms and the outer lookup loop) know to stop
trying further alternatives.

Co-Authored-By: Claude <noreply@anthropic.com>
…rminal

A Result path might not resolve successfully (the file may not exist),
so Alternatives should continue to the next entry rather than stopping.
Only Excluded and Empty are definitively terminal for all possible
unknown condition values.

Co-Authored-By: Claude <noreply@anthropic.com>
…for null

The Excluded arm already returns true to signal termination, so there is
no need to push a result item. Callers simply produce no output for that
case, which naturally leads to an unresolvable outcome.

Co-Authored-By: Claude <noreply@anthropic.com>
// Don't stop: the path might not exist, so further alternatives may be needed.
false
}
ReplacedSubpathValue::Excluded => {
Copy link
Contributor

Choose a reason for hiding this comment

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

Changing Result to return false from add_results breaks first-match semantics in Conditional(Set), causing all matching conditions (e.g., both import and default) to be added to the result set instead of stopping at the first match.

Fix on Vercel

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.

2 participants