Skip to content

Upgrade swc_core 57 -> 58, swc_sourcemap 9 -> 10, swc_plugin_runner 24 -> 25#91532

Merged
mischnic merged 3 commits into
canaryfrom
update_swc_to_support_plugins
Apr 8, 2026
Merged

Upgrade swc_core 57 -> 58, swc_sourcemap 9 -> 10, swc_plugin_runner 24 -> 25#91532
mischnic merged 3 commits into
canaryfrom
update_swc_to_support_plugins

Conversation

@lukesandberg
Copy link
Copy Markdown
Contributor

@lukesandberg lukesandberg commented Mar 17, 2026

What

Upgrade SWC dependencies to their latest major versions:

  • swc_core 57 → 58
  • swc_sourcemap 9 → 10
  • swc_plugin_runner 24 → 25
  • swc_plugin_backend_wasmer 7 → 8
  • testing 19 → 20

Bumps all SWC transform plugin crates to match (modularize_imports, styled_components, styled_jsx, swc_emotion, swc_relay, react_remove_properties, remove_console).

Also updates mdxjs (git dep) to pick up its swc_core 58 bump, avoiding duplicate compilation of the entire old SWC stack.

Known issue: swc_sourcemap duplicate

swc_emotion 0.116.0 still depends on swc_sourcemap ^9.3.4, so both swc_sourcemap v9 and v10 are compiled. This is the only remaining SWC crate duplication. It will be resolved when a new swc_emotion release is published that depends on swc_sourcemap 10.

Why

Needed to support the latest SWC plugin ABI. The swc_core 57 → 58 upgrade includes breaking changes to the ECMAScript AST, parser, codegen, visitor, and transforms_base crates (all bumped one major version).

@nextjs-bot nextjs-bot added the created-by: Turbopack team PRs by the Turbopack team. label Mar 17, 2026
Copy link
Copy Markdown
Contributor Author

lukesandberg commented Mar 17, 2026

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Mar 17, 2026

Merging this PR will not alter performance

✅ 17 untouched benchmarks
⏩ 3 skipped benchmarks1


Comparing update_swc_to_support_plugins (b7b817e) with canary (38cffff)

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.

@lukesandberg lukesandberg force-pushed the update_swc_to_support_plugins branch from 3a26fe4 to 48d399c Compare March 27, 2026 18:32
Comment thread Cargo.toml Outdated
@nextjs-bot
Copy link
Copy Markdown
Contributor

nextjs-bot commented Mar 27, 2026

Tests Passed

@lukesandberg lukesandberg force-pushed the update_swc_to_support_plugins branch from 48d399c to dc7f06b Compare March 27, 2026 20:09
@nextjs-bot
Copy link
Copy Markdown
Contributor

nextjs-bot commented Mar 27, 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 455ms ▁█▅▅▅
Cold (Ready in log) 441ms 447ms ▁▂▅▇▄
Cold (First Request) 1.115s 1.146s ▆▁▁▂▂
Warm (Listen) 456ms 456ms █▁██▁
Warm (Ready in log) 444ms 449ms ▂▂▇█▁
Warm (First Request) 342ms 347ms ▃▄▇█▄
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 455ms 455ms ▁▁▅▁▅
Cold (Ready in log) 439ms 438ms ▁▃▆▂▂
Cold (First Request) 1.954s 1.928s ▇▇▇▆▁
Warm (Listen) 457ms 456ms ▁▁▁▁▁
Warm (Ready in log) 438ms 438ms ▁▂▅▁▂
Warm (First Request) 1.945s 1.969s ▆▇█▆▁

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 3.935s 3.928s ▇▆██▁
Cached Build 3.946s 3.899s ▄███▄
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 14.338s 14.363s ▁▂▅▂▂
Cached Build 14.423s 14.505s ▁▂▇▃▄
node_modules Size 488 MB 488 MB █████
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
01zz1z_sccief.js gzip 155 B N/A -
02fkg8wfh0iju.js gzip 9.19 kB N/A -
030plil3tn3n7.js gzip 70.8 kB N/A -
050zwt5xh_0tx.js gzip 10.4 kB N/A -
087fzjd-gvlzv.js gzip 450 B N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB
0dsty6kq2hert.js gzip 155 B N/A -
0l26a3spazyyn.js gzip 151 B N/A -
0ppxcl_z43mad.js gzip 8.52 kB N/A -
0yzgvfimihkd2.js gzip 157 B N/A -
0ziljd71kuixt.js gzip 157 B N/A -
19oha6-znmkcv.js gzip 8.55 kB N/A -
1elt1qium-r2m.css gzip 115 B 115 B
1pciyc-0_znyg.js gzip 155 B N/A -
2_5rjb7lqxntf.js gzip 221 B 221 B
2035t1-zcnaw3.js gzip 65.7 kB N/A -
219prxwxgaalc.js gzip 7.61 kB N/A -
26elcgxnn9zjd.js gzip 8.52 kB N/A -
2900hudr6gvm0.js gzip 2.28 kB N/A -
29sfmxk0tawpd.js gzip 156 B N/A -
2lv2js3kmdeho.js gzip 8.48 kB N/A -
2myt_shpnyhzu.js gzip 156 B N/A -
2rehygrd36hqv.js gzip 8.58 kB N/A -
2s6nyomvmvh9r.js gzip 155 B N/A -
2srwswih0m9_h.js gzip 13.3 kB N/A -
2w-zjp8tyfrur.js gzip 159 B N/A -
3-jz00s4w-r6h.js gzip 13 kB N/A -
3-p9p9mheqhzx.js gzip 8.55 kB N/A -
31030bryqpolg.js gzip 8.53 kB N/A -
31dx5nmrzzuy7.js gzip 225 B N/A -
33sgz0bml7vgv.js gzip 155 B N/A -
3925v09gtu-5k.js gzip 49 kB N/A -
39x4zj5mjb4d_.js gzip 9.77 kB N/A -
3ii1q6weo9fxz.js gzip 162 B N/A -
3k-48b78ys_vy.js gzip 10.1 kB N/A -
3m7-5rfj0avoz.js gzip 12.9 kB N/A -
3uqce_6sa526g.js gzip 8.47 kB N/A -
3yurjqk-sjs3y.js gzip 1.46 kB N/A -
3z62yfdtiw-rc.js gzip 168 B N/A -
40ybjx9c192n0.js gzip 13.8 kB N/A -
421vzwdt9j1b_.js gzip 5.62 kB N/A -
turbopack-0a..gg-u.js gzip 4.19 kB N/A -
turbopack-0j..4h2c.js gzip 4.18 kB N/A -
turbopack-1b..7qjv.js gzip 4.18 kB N/A -
turbopack-1c..yhu3.js gzip 4.18 kB N/A -
turbopack-1d..d769.js gzip 4.18 kB N/A -
turbopack-1u..hrqd.js gzip 4.18 kB N/A -
turbopack-20..21vq.js gzip 4.17 kB N/A -
turbopack-21..e4ra.js gzip 4.18 kB N/A -
turbopack-2p..t2ge.js gzip 4.18 kB N/A -
turbopack-2s..og4f.js gzip 4.18 kB N/A -
turbopack-2t..h5wq.js gzip 4.18 kB N/A -
turbopack-2u..rcf4.js gzip 4.18 kB N/A -
turbopack-3e..1qn1.js gzip 4.18 kB N/A -
turbopack-3k..lhww.js gzip 4.16 kB N/A -
03dgzoo-qf3sm.js gzip N/A 9.19 kB -
05tx5f25dlivn.js gzip N/A 8.53 kB -
0c7ez6p2qc57f.js gzip N/A 5.62 kB -
0duvj3qk5pvgn.js gzip N/A 13.8 kB -
0h6hofq3h6-42.js gzip N/A 158 B -
0ir6-1duadm2z.js gzip N/A 158 B -
0lm29e2y9kx_b.js gzip N/A 153 B -
0m-34rm9w_wpm.js gzip N/A 7.6 kB -
0m21op30uewwb.js gzip N/A 156 B -
0qnwuk92m8i7o.js gzip N/A 10.4 kB -
0r4wrn6n0ue2m.js gzip N/A 8.55 kB -
0rp0fodtbt_6m.js gzip N/A 8.52 kB -
0sfck-km4dl1k.js gzip N/A 8.47 kB -
0x0xuhmxzwkp8.js gzip N/A 8.47 kB -
1_ziiz--jvfsp.js gzip N/A 158 B -
1-wdvgxnzicj7.js gzip N/A 1.46 kB -
11u6nxujb2eg4.js gzip N/A 450 B -
1dyfoo24ajqxm.js gzip N/A 162 B -
1jv-o1_s-zmua.js gzip N/A 49 kB -
1me96x5vwv1sy.js gzip N/A 65.7 kB -
1zc-k7aaakb6o.js gzip N/A 159 B -
29dt6m7d89-j7.js gzip N/A 157 B -
2d6k-a9uznmvb.js gzip N/A 156 B -
2e2z-03lx4fjc.js gzip N/A 13 kB -
2h70zbiqaf4bf.js gzip N/A 158 B -
2k9ax08cjl2id.js gzip N/A 12.9 kB -
2lms6k76q5-6m.js gzip N/A 13.3 kB -
2qx4twi9i3xus.js gzip N/A 2.28 kB -
2srnqic6tvxxd.js gzip N/A 8.52 kB -
2wrq5zps69nfq.js gzip N/A 70.8 kB -
3-34t1k915rbt.js gzip N/A 170 B -
30l7m4nayp73a.js gzip N/A 8.55 kB -
3h_ecpiaatwgc.js gzip N/A 10.1 kB -
3ity0aahajapd.js gzip N/A 225 B -
3nm_i02apa655.js gzip N/A 160 B -
3oa4b8uiuh01x.js gzip N/A 157 B -
3wrhpuc-j1aw9.js gzip N/A 9.77 kB -
43mlw9dy_8f02.js gzip N/A 8.58 kB -
turbopack-02..fq93.js gzip N/A 4.19 kB -
turbopack-0c.._bts.js gzip N/A 4.18 kB -
turbopack-0f..3b6y.js gzip N/A 4.16 kB -
turbopack-0k..1pc7.js gzip N/A 4.18 kB -
turbopack-13..a-km.js gzip N/A 4.18 kB -
turbopack-2_..2dke.js gzip N/A 4.18 kB -
turbopack-23..lkou.js gzip N/A 4.18 kB -
turbopack-24..jdhb.js gzip N/A 4.18 kB -
turbopack-2a..y2ca.js gzip N/A 4.18 kB -
turbopack-2q..7av9.js gzip N/A 4.18 kB -
turbopack-2w..zlx4.js gzip N/A 4.18 kB -
turbopack-37..786c.js gzip N/A 4.18 kB -
turbopack-3f..ivxr.js gzip N/A 4.18 kB -
turbopack-3g..kcks.js gzip N/A 4.18 kB -
Total 464 kB 464 kB ⚠️ +25 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 718 B 716 B
Total 718 B 716 B ✅ -2 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 430 B 435 B 🔴 +5 B (+1%)
Total 430 B 435 B ⚠️ +5 B

📦 Webpack

Client

Main Bundles
Canary PR Change
5528-HASH.js gzip 5.54 kB N/A -
6280-HASH.js gzip 60.7 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.8 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB
main-app-HASH.js gzip 255 B 254 B
main-HASH.js gzip 39.4 kB 39.3 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.8 kB -
9544-HASH.js gzip N/A 61.4 kB -
Total 235 kB 235 kB ⚠️ +580 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 126 kB
page.js gzip 273 kB 273 kB
Total 398 kB 399 kB ⚠️ +179 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 617 B 615 B
middleware-r..fest.js gzip 156 B 155 B
middleware.js gzip 44.2 kB 44.1 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 45.8 kB 45.7 kB ✅ -100 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.37 MB 4.36 MB 🟢 10.3 kB (0%)
index.pack gzip 114 kB 114 kB
index.pack.old gzip 116 kB 113 kB 🟢 2.77 kB (-2%)
Total 4.6 MB 4.59 MB ✅ -12.7 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 342 kB 342 kB
app-page-exp..prod.js gzip 189 kB 189 kB
app-page-tur...dev.js gzip 341 kB 341 kB
app-page-tur..prod.js gzip 189 kB 189 kB
app-page-tur...dev.js gzip 338 kB 338 kB
app-page-tur..prod.js gzip 187 kB 187 kB
app-page.run...dev.js gzip 338 kB 338 kB
app-page.run..prod.js gzip 187 kB 187 kB
app-route-ex...dev.js gzip 76.9 kB 76.9 kB
app-route-ex..prod.js gzip 52.5 kB 52.5 kB
app-route-tu...dev.js gzip 76.9 kB 76.9 kB
app-route-tu..prod.js gzip 52.5 kB 52.5 kB
app-route-tu...dev.js gzip 76.5 kB 76.5 kB
app-route-tu..prod.js gzip 52.2 kB 52.2 kB
app-route.ru...dev.js gzip 76.5 kB 76.5 kB
app-route.ru..prod.js gzip 52.2 kB 52.2 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.9 kB 43.9 kB
pages-api-tu..prod.js gzip 33.4 kB 33.4 kB
pages-api.ru...dev.js gzip 43.8 kB 43.8 kB
pages-api.ru..prod.js gzip 33.4 kB 33.4 kB
pages-turbo....dev.js gzip 53.2 kB 53.2 kB
pages-turbo...prod.js gzip 39 kB 39 kB
pages.runtim...dev.js gzip 53.2 kB 53.2 kB
pages.runtim..prod.js gzip 39 kB 39 kB
server.runti..prod.js gzip 62.8 kB 62.8 kB
Total 3.03 MB 3.03 MB ✅ -6 B
📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/b7b817ed2d247b3f12e5c1b485692f413c7cb8cb/next

@lukesandberg lukesandberg force-pushed the update_swc_to_support_plugins branch from dc7f06b to 74a9431 Compare March 31, 2026 07:37
lukesandberg and others added 2 commits April 8, 2026 10:21
…4 -> 25

Bump SWC ecosystem dependencies to their latest major versions.
This is a prerequisite for fully removing the wasmer dependency
from the compilation graph. swc_core v58 uses swc_plugin_runner v25
and swc_sourcemap v10.

Note: turbopack-ecmascript-plugins has remaining compilation errors
from swc_core v58 API changes (Pass trait, Comments trait) that
need to be fixed in a follow-up.

Update SWC ecosystem dependencies for swc_core v58 compatibility

Bump all SWC transform libraries to versions compatible with swc_core v58:
- modularize_imports: 0.110.0 -> 0.111.0
- styled_components: 0.139.0 -> 0.140.0
- styled_jsx: 0.114.0 -> 0.115.0
- swc_emotion: 0.115.0 -> 0.116.0
- swc_relay: 0.85.0 -> 0.86.0

These updates ensure all transform libraries use consistent versions of
swc_common v19 and swc_ecma_ast v21, matching swc_core v58's internal
dependencies. This resolves trait compatibility errors where types from
different versions of swc_common were incompatible.

Fix compilation errors in swc_core v58 upgrade

Update remaining transform libraries to versions compatible with
swc_core v58:
- remove_console: 0.66.0 -> 0.67.0
- react_remove_properties: 0.65.0 -> 0.66.0

These updates resolve the final trait compatibility errors where
SyntaxContext and Pass trait implementations from swc_common v18
and swc_ecma_ast v20 were incompatible with swc_core v58's
swc_common v19 and swc_ecma_ast v21.

All compilation errors are now resolved and the full integration
compiles successfully.
@mischnic mischnic force-pushed the update_swc_to_support_plugins branch from 74a9431 to 441f946 Compare April 8, 2026 08:28
@mischnic mischnic marked this pull request as ready for review April 8, 2026 09:02
@mischnic mischnic merged commit 460fa57 into canary Apr 8, 2026
455 of 459 checks passed
Copy link
Copy Markdown
Member

mischnic commented Apr 8, 2026

Merge activity

@mischnic mischnic deleted the update_swc_to_support_plugins branch April 8, 2026 10:11
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Apr 24, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

created-by: Turbopack team PRs by the Turbopack team. locked

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants