v4.0.0 - #1482
Draft
github-actions[bot] wants to merge 1 commit into
Draft
Conversation
commit: |
Contributor
Author
CLI benchmark
Full report
|
| Setting | Value |
|---|---|
| Baseline | ref:fb86ed4b60b43603c76f6b18ff976b5440a29dbe (v3.37.0) |
| Head | local packages/nuxt-cli at b736794 (v4.0.0) |
| Node | v24.19.0 |
| OS | Linux 6.17.0 (kernel 6.17.0-1022-azure) |
| CPU | AMD EPYC 7763 64-Core Processor x 4 |
| Memory | 15.6 GB |
| Load average at start | 1.40, 0.44, 0.15 |
| Run started | 2026-08-24T07:46:08.010Z |
Cold CLI startup
Median of 15 interleaved runs per command, one warmup discarded.
| Command | baseline v3.37.0 median | head v4.0.0 median | Delta | baseline v3.37.0 min / p95 | head v4.0.0 min / p95 |
|---|---|---|---|---|---|
nuxt --version |
66 ms | 63 ms | -4.9% | 62 ms / 69 ms | 61 ms / 66 ms |
nuxt --version (first output byte) |
62 ms | 59 ms | -5.2% | 58 ms / 65 ms | 57 ms / 62 ms |
nuxt --help |
137 ms | 137 ms | -0.4% | 132 ms / 139 ms | 133 ms / 139 ms |
nuxt --help (first output byte) |
133 ms | 132 ms | -0.4% | 127 ms / 134 ms | 128 ms / 133 ms |
nuxt dev --help |
103 ms | 102 ms | -0.9% | 101 ms / 107 ms | 100 ms / 107 ms |
nuxt dev --help (first output byte) |
99 ms | 97 ms | -1.2% | 96 ms / 102 ms | 96 ms / 102 ms |
nuxt <unknown-command> (no-op) |
147 ms | 146 ms | -0.3% | 144 ms / 150 ms | 142 ms / 148 ms |
nuxt <unknown-command> (no-op) (first output byte) |
142 ms | 141 ms | -0.6% | 139 ms / 145 ms | 137 ms / 143 ms |
Module load cost
Counted with a module.registerHooks load hook, compile cache disabled. Counts every JS module actually evaluated on that code path (built-ins excluded, native addons excluded).
| Command | baseline v3.37.0 modules | head v4.0.0 modules | Delta | baseline v3.37.0 source bytes | head v4.0.0 source bytes | Delta |
|---|---|---|---|---|---|---|
nuxt --version |
38 | 38 | 0.0% | 291.7 kB | 291.7 kB | -0.0% |
nuxt --help |
135 | 135 | 0.0% | 976.8 kB | 976.8 kB | -0.0% |
nuxt dev --help |
80 | 80 | 0.0% | 586.0 kB | 586.0 kB | -0.0% |
Install footprint and published tarball
Each version installed on its own into an empty project with nothing but @nuxt/cli as a dependency, so the tree is exactly the CLI and its transitive dependencies. npm cache is warm and the registry is only consulted for metadata, so install wall time is indicative, not a network benchmark.
| Metric | baseline v3.37.0 | head v4.0.0 | Delta |
|---|---|---|---|
Direct dependencies of @nuxt/cli |
21 | 21 | 0.0% |
| Packages in the installed tree (unique name@version) | 34 | 34 | 0.0% |
| Unique package names | 34 | 34 | 0.0% |
| Package directories on disk (cross-check) | 28 | 28 | 0.0% |
Installed node_modules on disk |
2.32 MB | 2.32 MB | -0.0% |
| Installed files | 419 | 419 | 0.0% |
| Install wall time (warm npm cache, median of 3) | 690 ms | 689 ms | -0.1% |
| Published tarball (packed) | 264.7 kB | 264.7 kB | 0.0% |
| Published tarball (unpacked) | 921.5 kB | 921.5 kB | -0.0% |
| Files in tarball | 131 | 131 | 0.0% |
Interleaved runs on a shared runner: trust the deltas, not the absolute timings. The dev, restart and build suites run locally via pnpm bench:cli.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎉 Highlights
Nuxt CLI v4 is a performance, feature and DX-focused release.
Watch this space to keep up-to-date on what's coming! 🔥
Breaking changes
We're taking the opportunity to adopt the following breaking changes:
@nuxt/bridge(as Nuxt 2 has been EOL for some time now).Performance
We're working to reduce the dependency count and total install size. You can track the current progress here.
👉 Changelog
compare changes
🚀 Enhancements
40ab1f6)nuxt curlwhen running non-interactively (feat(dev): suggest usingnuxt curlwhen running non-interactively #1464)81a5de1)36119fe)nuxt docscommand (f2dbd8c)--jsontomodule searchandtask list(da95c8b)b841b87)07e7981)82fe2d6)e621b9c)nuxt curl,nuxt task listandnuxt task run(feat(curl,task): addnuxt curl,nuxt task listandnuxt task run#1417)nuxt.configkeys on a config-triggered reload (feat(dev): print changednuxt.configkeys on a config-triggered reload #1403)62a030f)29558d5)3d16e4c)@nuxt/cli(feat(nuxi): defer subcommands to the project's@nuxt/cli#1394)64b4525)bf72c89)f693d33)--strictPortflag (b6ee3b9)BROWSERenv when opening browser (c1c6687)qandquitshortcuts to dev server (feat(dev): addqandquitshortcuts to dev server #1378)a0eace5)🔥 Performance
88de5da)a3fa129)fzfforfuzzysort(ff0cc23)0673103)createHashfor hashing build manifest (8ff1c67)SourceMapinstead ofsource-map-js(perf(dev): use builtin nodeSourceMapinstead ofsource-map-js#1430)confboxrather thanpnpm-workspace-yaml(perf(info,upgrade): useconfboxrather thanpnpm-workspace-yaml#1425)node:utilstyleText (refactor: replace picocolors with node:util styleText #1416)1897968)9a10f71)🩹 Fixes
14c268e)667f2a8)7e69f27)3ad862d)dd22149)9d042af)?as well ash(6f6e530)34714dc)6890367)--throughnpm create, document negative flags (5d39ad0)4d1edb4)cittywith hidden, multiple and inherit arg support (fix: patchcittywith hidden, multiple and inherit arg support #1457)013f43f)4b28edd)--profileflag (4af0dc3)14903e5)module search(6d9bc86)ed7c524)7ad4e6b)7f02edf)29e69b9)GITHUB_TOKENto github hosts (2a1e5b0)53c42f1)--cwdvalue for the command (ec34eee)967f709)_PORTis provided to_dev(fix(dev): use a strict port when_PORTis provided to_dev#1456)fuzzysortv4 (fix(deps): upgrade tofuzzysortv4 #1443)module searchresults (75182da)b80ed9c)0cf1306)a7add36)5eee806)8db925e)e0a6164)a08a775)33de9c8)292b63a)07d86a3)6ff5c36)00b2828)9022816)b6f2690)9e3b1cb)23a5a6c)50e71e5)634eeb7)abfd7eb)initcommand from@nuxt/cli(fix(init)!: dropinitcommand from@nuxt/cli#1420)aeb022e)youchintodistso its assets ship with the build (fix(dev): traceyouchintodistso its assets ship with the build #1407)4538067)parseINIresult (ec6b08a)reusePortoption and a failed cold restart (ae9be91)SO_REUSEPORT(fix(dev): keep serving during a hard restart usingSO_REUSEPORT#1404)678348a)682c773)98dcb1c)f93bd1d)dfef70f)c16f02b)747c898)27d8296)79a829d)stdinwhen using clack spinners on windows (fix(dev):stdinpaused when using clark spinners on Windows #1395)--no-clearon programmatic commands (2043313)5ef1f1b)exsolveresolution errors when@nuxt/kitis missing (e7aa760)cdstep for single-character project directories (9ff68d9)f6e9235)a04ec72)serveas an optional peer dependency (846ebd5)--buildfor solution-style tsconfigs (fix(typecheck): only imply--buildfor solution-style tsconfigs #1390)_devandstartcommands from help output (fix(_dev,start): hide_devandstartcommands from help output #1389)f9af294)f1c378d)66d21bd)56c1eb7)0027fb2)cff4db2)💅 Refactors
nuxt.configmodules with oxc instead ofmagicast(97ded7d)fetchinstead ofofetch(ea82130)nuxt.confignatively and makejitian optional peer (669bc5e)fzfinstead offuse.js(297bf24)source-map-jsto map error frames (4582c22)cittyinstead of depending on it (51849b8)rootDirin most usages (refactor: normalise onrootDirin most usages #1398)magicastto update nuxt config (refactor(module): directly usemagicastto update nuxt config #1396)571cc3a)nuxito@nuxt/cli(refactor: move source of truth fromnuxito@nuxt/cli#1385)picocolors(17b2d02)semvertoverkit(refactor: migrate fromsemvertoverkit#1379)📖 Documentation
53f3342)c25d392)41a9fe5)🏡 Chore
fb86ed4)51b98e0)initrejects whereloadreports (841fbc1)99c0bb8)585278a)af14cc8)4360712)2bdae69)✅ Tests
eacb946)63b5b7f)a36ce44)bd19413)e32ea88)1e3e803)e12e139)f8338be)8112e50)672c101)dd68ab8)nuxt inforeports config keys without their values (0b45675)3a5aa2c)ff8529a)e991256)f1a664b)a1a4cb9)e35dd95)f850a17)d05718d)fcfd1bf)d5c583e)b6f5b11)a94b9f5)0e780ba)1754688)🤖 CI
46d0bef)main(45a5d8f)3.xbranch as well (f1fcd22)9a95204)main(9dfa22b)ae1dfc2)false(09c49c4)df44f64)3798e0e)🎉 New Contributors
❤️ Contributors