[{"data":1,"prerenderedAt":898},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fnuxt-dx-is-getting-faster":14,"\u002Fblog\u002Fnuxt-dx-is-getting-faster-raw":895,"\u002Fblog\u002Fnuxt-dx-is-getting-faster-surround":896},[4],{"title":5,"path":6,"stem":7,"children":8,"page":13},"Blog","\u002Fblog","blog",[9],{"title":10,"path":11,"stem":12},"Nuxt DX is about to get much faster","\u002Fblog\u002Fnuxt-dx-is-getting-faster","blog\u002Fnuxt-dx-is-getting-faster",false,{"id":15,"title":10,"author":16,"body":21,"date":887,"description":888,"extension":889,"image":74,"meta":890,"minRead":891,"navigation":892,"path":11,"seo":893,"stem":12,"__hash__":894},"blog\u002Fblog\u002Fnuxt-dx-is-getting-faster.md",{"name":17,"to":18,"avatar":19},"Norbiros","https:\u002F\u002Fgithub.com\u002FNorbiros",{"src":20,"alt":17},"https:\u002F\u002Fgithub.com\u002FNorbiros.png",{"type":22,"value":23,"toc":864},"minimark",[24,31,37,40,48,55,70,79,84,116,121,130,141,150,165,181,192,196,210,216,233,261,273,282,289,300,304,313,317,327,342,351,368,379,383,394,416,426,435,439,490,494,499,515,529,535,544,548,558,582,586,596,605,609,612,619,624,637,641,664,671,677,680,684,687,690,696,706,724,820,824,831,857],[25,26,27],"p",{},[28,29,30],"strong",{},"This post is written from a perspective of a Nuxt developer, but it will still have a lot of value if you care about modern web development in general.",[32,33,34],"tldr",{},[25,35,36],{},"Nuxt's DX was rarely the real bottleneck; the JavaScript tooling under it was. That whole layer (bundling, linting, type-checking, installs, the server engine) is being rebuilt in native code, mostly Rust. Some of it arrives for free as you upgrade (Vite 8, Rolldown, Nitro v3); the rest are opt-in tools still maturing, and a few aren't Nuxt-ready yet. Either way it points at a much faster workflow.",[25,38,39],{},"Nuxt has long been the framework you reach for when you want a genuinely good developer experience with Vue. File-based routing, auto-imports, server routes, sensible defaults — it quietly handles the boring parts so you can build.",[25,41,42,43,47],{},"The one thing it could never fix was ",[44,45,46],"em",{},"workflow"," speed. Not your app in production — the tools around you. Installing dependencies, type-checking, linting, formatting, bundling, cold-starting the dev server. On a large project each of those costs real time, and almost none of it was ever Nuxt's fault. It's the stack underneath — and that's the part finally changing.",[25,49,50,51,54],{},"It's also the thing I keep getting excited about. Across the ecosystem, the tools we build with are being rebuilt on native foundations, and the long era of ",[44,52,53],{},"performance-critical JavaScript tooling written mostly in JavaScript"," is quietly ending. It arrives piece by piece, backed by real investment: several of these projects now sit inside Cloudflare, Vercel, and Microsoft. Your app stays JavaScript; the machinery around it goes native.",[25,56,57,58,61,62,65,66,69],{},"Here's the whole shift on one screen, ordered by when you'll actually feel it: what's shipping ",[28,59,60],{},"now",", what lands ",[28,63,64],{},"soon"," across 2026, and what's still experimental for ",[28,67,68],{},"later",".",[71,72,76],"blog-figure",{"alt":73,"src":74,":wide":75},"A three-column roadmap titled \"The roadmap to better Nuxt DX\". SHIPPING (stable today): Vite 8 + Rolldown. SOON (landing across 2026): oxlint & oxfmt, TypeScript 7, Nitro v3, pnpm v12. LATER (still experimental): Bundled Dev Mode, Vize.","\u002Fimg\u002Fnuxt-dx-roadmap.png","true",[25,77,78],{},"The same map I'll walk through below — read it left to right and it's roughly the order a Nuxt developer will feel each change.",[80,81,83],"h2",{"id":82},"where-a-lot-of-this-starts","Where a lot of this starts",[25,85,86,87,94,95,100,101,104,105,104,108,111,112,115],{},"A lot of this story traces back to two groups: one company most Nuxt developers can't name, and the core team that maintains Nuxt itself. Start with the company. VoidZero was founded by ",[88,89,93],"a",{"href":90,"rel":91},"https:\u002F\u002Fevanyou.me\u002F",[92],"nofollow","Evan You"," — creator of Vue and Vite — and was ",[88,96,99],{"href":97,"rel":98},"https:\u002F\u002Fblog.cloudflare.com\u002Fvoidzero-joins-cloudflare\u002F",[92],"recently acquired by Cloudflare",", which has said the projects will stay open-source and vendor-agnostic. VoidZero is behind ",[28,102,103],{},"Vite",", ",[28,106,107],{},"Vitest",[28,109,110],{},"Rolldown",", and ",[28,113,114],{},"Oxc",". I will focus on three of those.",[117,118,120],"h3",{"id":119},"vite-rolldown-the-bundler","Vite & Rolldown — the bundler",[25,122,123,124,126,127,69],{},"Start with the tool you touch most without thinking about it: ",[28,125,103],{},". It powers Nuxt's dev server and production builds — the thing that turns your source files into something a browser can run. This is the piece you can feel ",[44,128,129],{},"today",[25,131,132,133,136,137,140],{},"For years Vite leaned on two tools underneath. In development it used ",[28,134,135],{},"esbuild",", which is blisteringly fast. For production it used ",[28,138,139],{},"Rollup",", which has a mature plugin ecosystem and excellent output but runs noticeably slower. The split worked, but it cost you: subtle dev-vs-production differences, duplicated integration work, and two pipelines to keep in sync.",[25,142,143,145,146,149],{},[28,144,110],{}," is VoidZero's answer — a single Rust bundler that replaces both sides of that split. It keeps Rollup-style plugin compatibility while running much closer to esbuild speed, so one engine handles dev ",[44,147,148],{},"and"," build.",[151,152,157],"stat-bar",{":bars":153,"source":154,"sourceTo":155,"title":156},"[{\"label\":\"Rollup\",\"value\":46,\"display\":\"46s\"},{\"label\":\"Rolldown\",\"value\":6,\"display\":\"6s\",\"highlight\":true}]","Vite 8 announcement, vite.dev","https:\u002F\u002Fvite.dev\u002Fblog\u002Fannouncing-vite8","Linear's production build, during the Vite 8 beta",[25,158,159,160,164],{},"Vite 8 clocks Rolldown at ",[88,161,163],{"href":155,"rel":162},[92],"10–30× faster than Rollup",". This is the kind of win you mostly get for free once Nuxt sits on top of it.",[25,166,167,168,104,173,176,177,180],{},"Vite 8 has been stable since March 2026 (8.1 is out too). On the Nuxt side, based on the current ",[88,169,172],{"href":170,"rel":171},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F34256",[92],"Vite 8 migration work",[28,174,175],{},"4.5"," looks like the first likely place most users may touch it, with ",[28,178,179],{},"Nuxt 5"," bringing the full frontend\u002Fserver alignment — because Nuxt isn't only a frontend Vite app. Its server engine (Nitro, below) has to move onto the same Vite 8 \u002F Rolldown foundation too.",[182,183,186],"tool-status",{"nuxt":184,"status":185},"Likely first in Nuxt 4.5 · full alignment in Nuxt 5","stable",[25,187,188,191],{},[28,189,190],{},"Faster builds and one consistent dev\u002Fbuild pipeline"," — plus a foundation for future improvements like Full Bundle Mode (more below).",[117,193,195],{"id":194},"oxc-linting-formatting","oxc — linting & formatting",[25,197,198,199,201,202,205,206,209],{},"VoidZero isn't stopping at bundling. In parallel they are building ",[28,200,114],{},", the Oxidation Compiler: a full JavaScript\u002FTypeScript toolchain in Rust — parser, transformer, resolver, minifier, linter, formatter. Day to day, you might end up using ",[28,203,204],{},"oxlint"," (an ESLint-compatible linter) and ",[28,207,208],{},"oxfmt"," (a Prettier-compatible formatter).",[211,212],"speed-stats",{":items":213,"source":214,"sourceTo":215},"[{\"value\":\"50–100×\",\"tool\":\"oxlint\",\"vs\":\"vs ESLint\"},{\"value\":\"30×\",\"tool\":\"oxfmt\",\"vs\":\"vs Prettier\"},{\"value\":\"3×\",\"tool\":\"Oxc parser\",\"vs\":\"vs SWC\"}]","oxc.rs benchmarks","https:\u002F\u002Foxc.rs",[25,217,218,219,222,223,228,229,232],{},"That parser number matters more than it looks: parsing sits underneath almost every other tool, so making it fast lifts everything built on top. And it's about to get faster still — the team is prototyping ",[28,220,221],{},"SIMD-powered lexing"," (scanning several bytes at once) in its ",[88,224,227],{"href":225,"rel":226},"https:\u002F\u002Fgithub.com\u002Foxc-project\u002Foxc\u002Fissues\u002F23976",[92],"2026 Q3 plan",", targeting another ~3×. Because every linter, formatter, and bundler ",[44,230,231],{},"starts"," by parsing text.",[25,234,235,236,240,241,244,245,248,249,254,255,260],{},"The catch for us is Vue. A Vue SFC isn't just a ",[237,238,239],"code",{},".ts"," file — a linter has to understand how ",[237,242,243],{},"\u003Cscript setup>"," relates to ",[237,246,247],{},"\u003Ctemplate>",", or rules like \"unused variable\" get the wrong answer. Oxc has an ",[88,250,253],{"href":251,"rel":252},"https:\u002F\u002Fgithub.com\u002Foxc-project\u002Foxc\u002Fdiscussions\u002F21936",[92],"RFC for embedded framework support"," and a ",[88,256,259],{"href":257,"rel":258},"https:\u002F\u002Fgithub.com\u002Foxc-project\u002Foxc\u002Fissues\u002F23207",[92],"tracking issue for language plugins",", but the JS plugin system is not yet implemented, so Vue developers can't lean on it yet.",[262,263,264],"side-note",{},[25,265,266,267,272],{},"This is the piece I'm most impatient for — oxlint is the foundation of a Nuxt linting module I'm building, ",[88,268,271],{"href":269,"rel":270},"https:\u002F\u002Fnpmx.dev\u002Fpackage\u002F@nustackjs\u002Flint",[92],"nustack\u002Flint"," alongside multiple related oxlint plugins for Nuxt ecosystem.",[25,274,275,276,281],{},"Still, near-instant linting and formatting changes the feedback loop entirely. It enables deeper rules, such as type-aware mode powered by ",[88,277,280],{"href":278,"rel":279},"https:\u002F\u002Fgithub.com\u002Foxc-project\u002Ftsgolint",[92],"tsgolint",", which allows for better and faster linting — especially important when AI agents run these checks over and over again.",[25,283,284,285,288],{},"To be clear about real work, though: I wouldn't treat oxlint and oxfmt as a full ESLint\u002FPrettier replacement in a Nuxt app yet. Until the Vue SFC support lands, they're something you can run ",[44,286,287],{},"alongside"," your existing setup on plain JS\u002FTS, not instead of it.",[182,290,294],{"nuxt":291,"status":292,"blockedBy":293,"blockedByTo":257},"Usable for JS\u002FTS · Vue templates not yet","partial","embedded framework support",[25,295,296,299],{},[28,297,298],{},"Way faster and more powerful linting and formatting"," once Vue support is good enough to trust.",[80,301,303],{"id":302},"the-wider-native-wave","The wider native wave",[25,305,306,307,310,311,69],{},"VoidZero is central for the entire JS ecosystem, but it isn't the whole story. The same rewrite is happening across the rest of the toolchain — the parts that sit under ",[44,308,309],{},"every"," framework, not just Nuxt. These are the pieces landing ",[28,312,64],{},[117,314,316],{"id":315},"typescript-rewritten-in-go-type-checking","TypeScript, rewritten in Go — type-checking",[25,318,319,320,323,324,69],{},"You've probably heard this one: TypeScript is getting a native port written in ",[28,321,322],{},"Go",", shipping as ",[28,325,326],{},"TypeScript 7",[262,328,329],{},[25,330,331,336,337,69],{},[88,332,335],{"href":333,"rel":334},"https:\u002F\u002Frustacean.net\u002F",[92],"Rustaceans"," may be disappointed it wasn't Rust. The tsgo team had strong reasoning behind that ",[88,338,341],{"href":339,"rel":340},"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftypescript-go\u002Fdiscussions\u002F411",[92],"explained in this discussion",[25,343,344,345,350],{},"The language matters less than the result: a native implementation that should cut most type-checks by up to ",[88,346,349],{"href":347,"rel":348},"https:\u002F\u002Fdevblogs.microsoft.com\u002Ftypescript\u002Ftypescript-native-port\u002F",[92],"10×",", with much faster editor startup and lower memory use. It's already at release-candidate stage.",[25,352,353,354,357,358,363,364,367],{},"For Vue and Nuxt there's the usual delay. ",[237,355,356],{},"vue-tsc"," and Vue's language tooling lean on TypeScript more deeply than a plain project does; there's an ",[88,359,362],{"href":360,"rel":361},"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fissues\u002F5381",[92],"open issue for TypeScript 7 support",", but full adoption may wait on the native API stabilizing. As I mentioned before, it loops back to oxlint, too: Oxc is building ",[44,365,366],{},"type-aware"," linting on the native compiler, so the endgame isn't just faster linting — it's faster linting that actually knows your types.",[182,369,373],{"nuxt":370,"status":371,"blockedBy":372,"blockedByTo":360},"Vue\u002FNuxt support still TBD","rc","vue-tsc support + native-API maturity",[25,374,375,378],{},[28,376,377],{},"Much faster type-checking and IDE feedback"," once Vue tooling catches up.",[117,380,382],{"id":381},"pnpm-moving-to-rust-installs","pnpm, moving to Rust — installs",[25,384,385,386,389,390,393],{},"Package managers are riding the same wave. The best pick for me and most of the Nuxt ecosystem was (and still is) ",[28,387,388],{},"pnpm",", for its strict layout, security model, community (especially the developers), and disk-efficient store — the one weak spot was raw speed. That's what ",[28,391,392],{},"pnpm v12"," targets: a Rust rewrite of pnpm's install engine.",[25,395,396,397,400,401,406,407,111,412,415],{},"This isn't a new package manager or a reimagining. It's meant to ",[44,398,399],{},"become"," pnpm's install engine while preserving its behavior, lockfile, and defaults. pnpm 11 already ships ",[88,402,405],{"href":403,"rel":404},"https:\u002F\u002Fpnpm.io\u002Fblog\u002Freleases\u002F11.2",[92],"experimental opt-in support",", the work has ",[88,408,411],{"href":409,"rel":410},"https:\u002F\u002Fgithub.com\u002Fpnpm\u002Fpacquet",[92],"moved into the main pnpm repo",[28,413,414],{},"pnpm 12"," is expected to make the Rust engine the main path — benchmarks point to big wins, though real-world workspaces still need shaking out.",[71,417,423],{"alt":418,"src":419,"source":420,"sourceTo":421,"surface":422},"pnpm's live install benchmark: horizontal bars for pnpm 12 (with the new Rust engine) in orange, against the additional time pnpm 11 takes shown in grey, across scenarios like clean install, warm cache, existing node_modules, and update. pnpm 12 is faster in every row.","https:\u002F\u002Fpnpm.io\u002Fimg\u002Fbenchmarks\u002Falotta-files-pnpm.svg?v=0b1a77c0","pnpm benchmarks","https:\u002F\u002Fpnpm.io\u002Fbenchmarks","light",[25,424,425],{},"This is the win, measured — pnpm's own benchmark of pnpm 12's Rust engine (orange) against pnpm 11 across install scenarios. Lower is better; the grey is the time the rewrite shaves off.",[182,427,430],{"nuxt":428,"status":429},"Usable experimentally today","preview",[25,431,432,69],{},[28,433,434],{},"Faster dependency installation",[80,436,438],{"id":437},"where-it-gets-nuxt-specific","Where it gets Nuxt-specific",[25,440,441,442,445,446,449,450,104,453,104,456,104,459,462,463,468,469,474,475,478,479,484,485,69],{},"Everything above touches ",[44,443,444],{},"all"," JS\u002Ffrontend development. Now I want to focus a bit more on Nuxt-specific upgrades brought to us by  ",[28,447,448],{},"NuxtLabs",", the company behind ",[28,451,452],{},"Nuxt",[28,454,455],{},"Nitro",[28,457,458],{},"Nuxt UI",[28,460,461],{},"Nuxt Studio",", and much of the unjs ecosystem, founded by ",[88,464,467],{"href":465,"rel":466},"https:\u002F\u002Fgithub.com\u002Fatinux",[92],"Sébastien Chopin",", Nuxt's creator. After ",[88,470,473],{"href":471,"rel":472},"https:\u002F\u002Fnuxtlabs.com\u002F",[92],"NuxtLabs joined Vercel",", the team leaned ",[44,476,477],{},"further"," into open source — Nuxt UI v4 merged the free and Pro libraries into one ",[88,480,483],{"href":481,"rel":482},"https:\u002F\u002Fui.nuxt.com\u002Fdocs\u002Fgetting-started",[92],"open package",", and Nuxt Studio shipped as a ",[88,486,489],{"href":487,"rel":488},"https:\u002F\u002Fcontent.nuxt.com\u002Fblog\u002Fstudio-oss",[92],"free, self-hosted module",[117,491,493],{"id":492},"nitro-v3-the-server-engine","Nitro v3 — the server engine",[25,495,496,498],{},[28,497,455],{}," is Nuxt's server engine — it builds and runs your backend, API routes, server rendering, and deployment output. It's the reason one Nuxt app can target Node, serverless, edge, or static.",[25,500,501,504,505,510,511,514],{},[28,502,503],{},"Nitro v3"," is a ground-up cleanup of that foundation, ",[88,506,509],{"href":507,"rel":508},"https:\u002F\u002Fnitro.build\u002Fblog\u002Fv3-beta",[92],"built around web standards, Rolldown, and Vite 8",". So Vite 8 \u002F Rolldown gains now reach your ",[44,512,513],{},"server"," build too. Three changes stand out: Rolldown-powered server builds with leaner output; less runtime overhead (routes compiled at build time, only what a request needs gets loaded); and far fewer dependencies, which matters more than you probably think.",[151,516,520],{":bars":517,"source":518,"sourceTo":507,"title":519},"[{\"label\":\"Nitro v2\",\"value\":321,\"display\":\"321\"},{\"label\":\"Nitro v3\",\"value\":20,\"display\":\"≤20\",\"highlight\":true}]","Nitro v3 beta announcement, nitro.build","Dependencies Nitro pulls in",[25,521,522,523,528],{},"Fewer packages means fewer things to audit, fewer to break, a smaller ",[88,524,527],{"href":525,"rel":526},"https:\u002F\u002Funit42.paloaltonetworks.com\u002Fmonitoring-npm-supply-chain-attacks\u002F",[92],"supply-chain attack surface"," — and faster cold starts.",[25,530,531,532,534],{},"Nitro v3 matters most for serverless and edge, where cold starts and bundle size bite hardest. It lands in core with ",[28,533,179],{},", alongside H3 v2.",[182,536,539],{"nuxt":537,"status":538},"Lands in Nuxt 5","beta",[25,540,541],{},[28,542,543],{},"Smaller server bundles, fewer dependencies, faster development thanks to Vite 8.",[117,545,547],{"id":546},"unjs-h3-the-plumbing","unjs & H3 — the plumbing",[25,549,550,551,554,555,557],{},"That's not everything! A lot of framework performance hides in unglamorous runtime packages — HTTP handling, config loading, storage adapters, module loading — and this is where the ",[28,552,553],{},"unjs"," ecosystem matters. ",[28,556,553],{}," is not a single framework, but a collection of small, focused JavaScript and TypeScript packages used throughout Nuxt and Nitro.",[25,559,560,561,564,565,568,569,104,572,104,575,104,578,581],{},"The clearest example is ",[28,562,563],{},"H3",", the small HTTP framework under Nitro's request handling. In Nitro v3, ",[28,566,567],{},"H3 v2"," is rebuilt around web-standard primitives (",[237,570,571],{},"Request",[237,573,574],{},"Response",[237,576,577],{},"Headers",[237,579,580],{},"URL","), making server code far more portable across Node, Bun, Deno, and Workers. It's not flashy, but it's exactly the kind of cleanup that makes a framework more reliable over time.",[80,583,585],{"id":584},"what-im-most-excited-about","What I'm most excited about",[25,587,588,589,592,593,595],{},"The pieces above are the ones you'll feel soonest. The ones I'm ",[44,590,591],{},"most"," excited about are further out — they are not close to being production ready today, but the development is moving fast. This is the ",[28,594,68],{}," column: assume everything here is experimental.",[262,597,598],{},[25,599,600,601,604],{},"I'm skipping Vue Vapor Mode and other runtime-performance work on purpose — it's important, but it's about your ",[44,602,603],{},"users'"," runtime, and this post is about developer experience.",[117,606,608],{"id":607},"vite-bundled-dev-mode-dev-speed-on-huge-apps","Vite Bundled Dev Mode — dev speed on huge apps",[25,610,611],{},"Vite's dev server has always served unbundled ESM — a brilliant call at launch: start instantly, compile only what the browser asks for. But very large apps now fire off hundreds or thousands of dev requests, and the bottleneck shifts from the build tool to the browser and network.",[25,613,614,615,618],{},"Vite 8.1 adds experimental ",[28,616,617],{},"Bundled Dev Mode"," (formerly Full Bundle Mode): it bundles during development, closer to the production model, while keeping fast HMR.",[211,620],{":items":621,"source":622,"sourceTo":623},"[{\"value\":\"15×\",\"tool\":\"startup\",\"vs\":\"10,000-component test\"},{\"value\":\"10×\",\"tool\":\"reloads\",\"vs\":\"10,000-component test\"}]","Vite 8.1 announcement","https:\u002F\u002Fvite.dev\u002Fblog\u002Fannouncing-vite8-1",[25,625,626,627,632,633,636],{},"For real performance benefits that affect Nuxt, we’ll still have to wait some time. You can check the current ",[88,628,631],{"href":629,"rel":630},"https:\u002F\u002Fgithub.com\u002Frolldown\u002Frolldown\u002Fissues\u002F9030",[92],"rollout plan",", but after that, Nitro and Nuxt will still need to adopt it. It should also finally make ",[237,634,635],{},"vite.optimizeDeps"," unnecessary, since everything will be optimized.",[117,638,640],{"id":639},"vize-a-unified-rust-toolchain-for-vue","Vize — a unified Rust toolchain for Vue",[25,642,643,644,649,650,655,656,663],{},"React is already moving toward a compiler-heavy future — Oxc even ships a ",[88,645,648],{"href":646,"rel":647},"https:\u002F\u002Foxc.rs\u002Fdocs\u002Fguide\u002Fusage\u002Ftransformer\u002Freact-compiler.html",[92],"Rust port of the React Compiler",". Vue deserves the same level of tooling ambition, and that’s exactly what ",[88,651,654],{"href":652,"rel":653},"https:\u002F\u002Fgithub.com\u002Fubugeeei",[92],"@ubugeeei"," is exploring with ",[88,657,660],{"href":658,"rel":659},"https:\u002F\u002Fvizejs.dev\u002F",[92],[28,661,662],{},"Vize",": an experimental Rust-native toolchain for Vue.",[25,665,666,667,670],{},"The goal isn't just \"a faster Vue compiler.\" It's a ",[44,668,669],{},"vertically integrated"," toolchain where compilation, linting, formatting, type-checking, and editor tooling share one high-performance core — instead of being stitched together from disconnected tools that each re-parse the file and disagree about the edge cases.",[672,673,674],"blockquote",{},[25,675,676],{},"The interesting part was never a faster compiler. It's one shared core that finally agrees on what your file means.",[25,678,679],{},"Vize already posts impressive numbers, integrates oxlint, and has passed thousands of tests. I wouldn’t use it in production just yet, but it’s clearly entering its real-world testing phase. So if you’re interested in Vue tooling, give it a try, test it, report bugs, and follow its development!",[80,681,683],{"id":682},"where-this-leaves-us","Where this leaves us",[25,685,686],{},"The trend is no longer subtle: installing, parsing, linting, formatting, type-checking, bundling, serving — every layer is being rebuilt or seriously reworked, most of it on native foundations. The result is a workflow that fights you less. Builds finish sooner, type errors surface faster, linters stop feeling like a tax, dev servers cold-start quicker. And it matters more now that AI agents are part of daily development: they run these tools constantly, so every second saved per install, lint, build, or type-check adds up.",[25,688,689],{},"Two things stick with me from all of this.",[25,691,692,695],{},[28,693,694],{},"Rust has quietly become the language the JavaScript ecosystem builds its tools in"," — not for your app, but for everything around it. Rolldown, Oxc, oxlint, oxfmt, pnpm v12, Vize: all Rust. TypeScript's Go port is the notable exception that proves the rule. The pattern is the same either way — your app stays JavaScript, the machinery goes native.",[25,697,698,701,702,705],{},[28,699,700],{},"And the acquisitions people were nervous about — myself included — have so far gone the good way."," VoidZero into Cloudflare, NuxtLabs into Vercel: still open, better resourced, and shipping ",[44,703,704],{},"faster"," than before. That's not how every open-source acquisition has gone, which is exactly why this one is worth saying out loud.",[25,707,708,709,104,712,714,715,104,717,720,721,723],{},"Mostly I want to say thank you, to the people doing this hard, mostly unglamorous work: the ",[28,710,711],{},"VoidZero",[28,713,448],{}," companies, ",[28,716,553],{},[28,718,719],{},"TypeScript"," and ",[28,722,388],{}," teams, and the individuals pushing the edge.",[262,725,726,729,817],{},[25,727,728],{},"All of this comes from OSS developers, and a lot of it from the people whose names you never see. I feel real gratitude to them for the work:",[730,731,732,766,791,800,810],"ul",{},[733,734,735,738,739,104,744,720,749,754,755,104,760,765],"li",{},[28,736,737],{},"Vite & Rolldown"," — the Rolldown core team, especially ",[88,740,743],{"href":741,"rel":742},"https:\u002F\u002Fgithub.com\u002Fhyf0",[92],"@hyf0",[88,745,748],{"href":746,"rel":747},"https:\u002F\u002Fgithub.com\u002FIWANNABETHATGUY",[92],"@IWANNABETHATGUY",[88,750,753],{"href":751,"rel":752},"https:\u002F\u002Fgithub.com\u002Fh-a-n-a",[92],"@h-a-n-a",", plus the Vite core team (",[88,756,759],{"href":757,"rel":758},"https:\u002F\u002Fgithub.com\u002Fsapphi-red",[92],"@sapphi-red",[88,761,764],{"href":762,"rel":763},"https:\u002F\u002Fgithub.com\u002Fhi-ogawa",[92],"@hi-ogawa",")",[733,767,768,770,771,104,776,104,781,720,786],{},[28,769,114],{}," — ",[88,772,775],{"href":773,"rel":774},"https:\u002F\u002Fgithub.com\u002FBoshen",[92],"Boshen",[88,777,780],{"href":778,"rel":779},"https:\u002F\u002Fgithub.com\u002Foverlookmotel",[92],"@overlookmotel",[88,782,785],{"href":783,"rel":784},"https:\u002F\u002Fgithub.com\u002Fcamc314",[92],"@camc314",[88,787,790],{"href":788,"rel":789},"https:\u002F\u002Fgithub.com\u002Fleaysgur",[92],"@leaysgur",[733,792,793,770,795],{},[28,794,388],{},[88,796,799],{"href":797,"rel":798},"https:\u002F\u002Fgithub.com\u002Fzkochan",[92],"Zoltan Kochan",[733,801,802,770,805],{},[28,803,804],{},"unjs and Nitro",[88,806,809],{"href":807,"rel":808},"https:\u002F\u002Fgithub.com\u002Fpi0",[92],"Pooya Parsa",[733,811,812,770,814],{},[28,813,662],{},[88,815,654],{"href":652,"rel":816},[92],[25,818,819],{},"Far more names than fit here; if I missed you, it wasn't for lack of gratitude.",[80,821,823],{"id":822},"what-should-nuxt-developers-do-now","What should Nuxt developers do now?",[25,825,826,827,830],{},"Some of this you'll get for free; some of it you'll have to reach for. A few pieces upgrade ",[44,828,829],{},"underneath"," you as Nuxt, Vite, and the rest move on. Others are opt-in, and a couple will want real migration work. Here's how I'd approach it:",[730,832,833,845,851],{},[733,834,835,838,839,841,842,844],{},[28,836,837],{},"Now."," You're already on Vite, so the Vite 8 and Rolldown gains land as Nuxt adopts them — likely first around ",[28,840,175],{},", with full alignment in ",[28,843,179],{},". You won't rewrite anything for this one, you'll just upgrade and watch your build times drop, in some cases massively.",[733,846,847,850],{},[28,848,849],{},"Across 2026."," oxlint and oxfmt, TypeScript 7, Nitro v3, and pnpm 12 all mature. These are opt-in: try them on side projects first, and watch the Vue SFC support before trusting oxlint\u002Foxfmt on templates. Nitro v3 lands with Nuxt 5 and may need real work if you have custom server code.",[733,852,853,856],{},[28,854,855],{},"Later."," Bundled Dev Mode and Vize are still experiments. Keep an eye on them and give them a spin on side projects.",[25,858,859,860,863],{},"And whichever bucket ",[28,861,862],{},"a tool falls into, get involved",". Spread the word. Migrate your projects. Report the bugs you find. Give the maintainers honest feedback, and contribute back where you can. Native tooling gets good because people push it hard in the open, and the faster we move onto the new foundation, the sooner the next round of improvements arrives.",{"title":865,"searchDepth":866,"depth":866,"links":867},"",2,[868,873,877,881,885,886],{"id":82,"depth":866,"text":83,"children":869},[870,872],{"id":119,"depth":871,"text":120},3,{"id":194,"depth":871,"text":195},{"id":302,"depth":866,"text":303,"children":874},[875,876],{"id":315,"depth":871,"text":316},{"id":381,"depth":871,"text":382},{"id":437,"depth":866,"text":438,"children":878},[879,880],{"id":492,"depth":871,"text":493},{"id":546,"depth":871,"text":547},{"id":584,"depth":866,"text":585,"children":882},[883,884],{"id":607,"depth":871,"text":608},{"id":639,"depth":871,"text":640},{"id":682,"depth":866,"text":683},{"id":822,"depth":866,"text":823},"2026-07-04","The JavaScript tooling layer underneath Nuxt is being rebuilt in native code, bringing faster builds, installs, linting, type-checking and dev startup.","md",{},11,true,{"title":10,"description":888},"L2__RbWTHTczwVVJ2qy5Z1WaQfnbZNxk44M6EiW9POk","---\ntitle: Nuxt DX is about to get much faster\ndescription: The JavaScript tooling layer underneath Nuxt is being rebuilt in native code, bringing faster builds, installs, linting, type-checking and dev startup.\ndate: 2026-07-04\nimage: \u002Fimg\u002Fnuxt-dx-roadmap.png\nminRead: 11\nauthor:\n  name: Norbiros\n  to: https:\u002F\u002Fgithub.com\u002FNorbiros\n  avatar:\n    src: https:\u002F\u002Fgithub.com\u002FNorbiros.png\n    alt: Norbiros\n---\n\n**This post is written from a perspective of a Nuxt developer, but it will still have a lot of value if you care about modern web development in general.**\n\n::tldr\nNuxt's DX was rarely the real bottleneck; the JavaScript tooling under it was. That whole layer (bundling, linting, type-checking, installs, the server engine) is being rebuilt in native code, mostly Rust. Some of it arrives for free as you upgrade (Vite 8, Rolldown, Nitro v3); the rest are opt-in tools still maturing, and a few aren't Nuxt-ready yet. Either way it points at a much faster workflow.\n::\n\nNuxt has long been the framework you reach for when you want a genuinely good developer experience with Vue. File-based routing, auto-imports, server routes, sensible defaults — it quietly handles the boring parts so you can build.\n\nThe one thing it could never fix was *workflow* speed. Not your app in production — the tools around you. Installing dependencies, type-checking, linting, formatting, bundling, cold-starting the dev server. On a large project each of those costs real time, and almost none of it was ever Nuxt's fault. It's the stack underneath — and that's the part finally changing.\n\nIt's also the thing I keep getting excited about. Across the ecosystem, the tools we build with are being rebuilt on native foundations, and the long era of *performance-critical JavaScript tooling written mostly in JavaScript* is quietly ending. It arrives piece by piece, backed by real investment: several of these projects now sit inside Cloudflare, Vercel, and Microsoft. Your app stays JavaScript; the machinery around it goes native.\n\nHere's the whole shift on one screen, ordered by when you'll actually feel it: what's shipping **now**, what lands **soon** across 2026, and what's still experimental for **later**.\n\n::blog-figure\n---\nsrc: \u002Fimg\u002Fnuxt-dx-roadmap.png\nalt: \"A three-column roadmap titled \\\"The roadmap to better Nuxt DX\\\". SHIPPING (stable today): Vite 8 + Rolldown. SOON (landing across 2026): oxlint & oxfmt, TypeScript 7, Nitro v3, pnpm v12. LATER (still experimental): Bundled Dev Mode, Vize.\"\nwide: true\n---\nThe same map I'll walk through below — read it left to right and it's roughly the order a Nuxt developer will feel each change.\n::\n\n## Where a lot of this starts\n\nA lot of this story traces back to two groups: one company most Nuxt developers can't name, and the core team that maintains Nuxt itself. Start with the company. VoidZero was founded by [Evan You](https:\u002F\u002Fevanyou.me\u002F) — creator of Vue and Vite — and was [recently acquired by Cloudflare](https:\u002F\u002Fblog.cloudflare.com\u002Fvoidzero-joins-cloudflare\u002F), which has said the projects will stay open-source and vendor-agnostic. VoidZero is behind **Vite**, **Vitest**, **Rolldown**, and **Oxc**. I will focus on three of those.\n\n### Vite & Rolldown — the bundler\n\nStart with the tool you touch most without thinking about it: **Vite**. It powers Nuxt's dev server and production builds — the thing that turns your source files into something a browser can run. This is the piece you can feel *today*.\n\nFor years Vite leaned on two tools underneath. In development it used **esbuild**, which is blisteringly fast. For production it used **Rollup**, which has a mature plugin ecosystem and excellent output but runs noticeably slower. The split worked, but it cost you: subtle dev-vs-production differences, duplicated integration work, and two pipelines to keep in sync.\n\n**Rolldown** is VoidZero's answer — a single Rust bundler that replaces both sides of that split. It keeps Rollup-style plugin compatibility while running much closer to esbuild speed, so one engine handles dev *and* build. \n\n::stat-bar\n---\ntitle: Linear's production build, during the Vite 8 beta\nbars:\n- label: Rollup\n  value: 46\n  display: 46s\n- label: Rolldown\n  value: 6\n  display: 6s\n  highlight: true\nsource: Vite 8 announcement, vite.dev\nsourceTo: https:\u002F\u002Fvite.dev\u002Fblog\u002Fannouncing-vite8\n---\nVite 8 clocks Rolldown at [10–30× faster than Rollup](https:\u002F\u002Fvite.dev\u002Fblog\u002Fannouncing-vite8). This is the kind of win you mostly get for free once Nuxt sits on top of it.\n::\n\nVite 8 has been stable since March 2026 (8.1 is out too). On the Nuxt side, based on the current [Vite 8 migration work](https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F34256), **4.5** looks like the first likely place most users may touch it, with **Nuxt 5** bringing the full frontend\u002Fserver alignment — because Nuxt isn't only a frontend Vite app. Its server engine (Nitro, below) has to move onto the same Vite 8 \u002F Rolldown foundation too.\n\n::tool-status\n---\nstatus: stable\nnuxt: Likely first in Nuxt 4.5 · full alignment in Nuxt 5\n---\n**Faster builds and one consistent dev\u002Fbuild pipeline** — plus a foundation for future improvements like Full Bundle Mode (more below).\n::\n\n### oxc — linting & formatting\n\nVoidZero isn't stopping at bundling. In parallel they are building **Oxc**, the Oxidation Compiler: a full JavaScript\u002FTypeScript toolchain in Rust — parser, transformer, resolver, minifier, linter, formatter. Day to day, you might end up using **oxlint** (an ESLint-compatible linter) and **oxfmt** (a Prettier-compatible formatter).\n\n::speed-stats\n---\nitems:\n- value: \"50–100×\"\n  tool: oxlint\n  vs: vs ESLint\n- value: \"30×\"\n  tool: oxfmt\n  vs: vs Prettier\n- value: \"3×\"\n  tool: Oxc parser\n  vs: vs SWC\nsource: oxc.rs benchmarks\nsourceTo: https:\u002F\u002Foxc.rs\n---\n::\n\nThat parser number matters more than it looks: parsing sits underneath almost every other tool, so making it fast lifts everything built on top. And it's about to get faster still — the team is prototyping **SIMD-powered lexing** (scanning several bytes at once) in its [2026 Q3 plan](https:\u002F\u002Fgithub.com\u002Foxc-project\u002Foxc\u002Fissues\u002F23976), targeting another ~3×. Because every linter, formatter, and bundler *starts* by parsing text.\n\nThe catch for us is Vue. A Vue SFC isn't just a `.ts` file — a linter has to understand how `\u003Cscript setup>` relates to `\u003Ctemplate>`, or rules like \"unused variable\" get the wrong answer. Oxc has an [RFC for embedded framework support](https:\u002F\u002Fgithub.com\u002Foxc-project\u002Foxc\u002Fdiscussions\u002F21936) and a [tracking issue for language plugins](https:\u002F\u002Fgithub.com\u002Foxc-project\u002Foxc\u002Fissues\u002F23207), but the JS plugin system is not yet implemented, so Vue developers can't lean on it yet.\n\n::side-note\nThis is the piece I'm most impatient for — oxlint is the foundation of a Nuxt linting module I'm building, [nustack\u002Flint](https:\u002F\u002Fnpmx.dev\u002Fpackage\u002F@nustackjs\u002Flint) alongside multiple related oxlint plugins for Nuxt ecosystem.\n::\n\nStill, near-instant linting and formatting changes the feedback loop entirely. It enables deeper rules, such as type-aware mode powered by [tsgolint](https:\u002F\u002Fgithub.com\u002Foxc-project\u002Ftsgolint), which allows for better and faster linting — especially important when AI agents run these checks over and over again.\n\nTo be clear about real work, though: I wouldn't treat oxlint and oxfmt as a full ESLint\u002FPrettier replacement in a Nuxt app yet. Until the Vue SFC support lands, they're something you can run *alongside* your existing setup on plain JS\u002FTS, not instead of it.\n\n::tool-status\n---\nstatus: partial\nnuxt: Usable for JS\u002FTS · Vue templates not yet\nblockedBy: embedded framework support\nblockedByTo: https:\u002F\u002Fgithub.com\u002Foxc-project\u002Foxc\u002Fissues\u002F23207\n---\n**Way faster and more powerful linting and formatting** once Vue support is good enough to trust.\n::\n\n## The wider native wave\n\nVoidZero is central for the entire JS ecosystem, but it isn't the whole story. The same rewrite is happening across the rest of the toolchain — the parts that sit under *every* framework, not just Nuxt. These are the pieces landing **soon**.\n\n### TypeScript, rewritten in Go — type-checking\n\nYou've probably heard this one: TypeScript is getting a native port written in **Go**, shipping as **TypeScript 7**.\n\n::side-note\n[Rustaceans](https:\u002F\u002Frustacean.net\u002F) may be disappointed it wasn't Rust. The tsgo team had strong reasoning behind that [explained in this discussion](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftypescript-go\u002Fdiscussions\u002F411).\n::\n\nThe language matters less than the result: a native implementation that should cut most type-checks by up to [10×](https:\u002F\u002Fdevblogs.microsoft.com\u002Ftypescript\u002Ftypescript-native-port\u002F), with much faster editor startup and lower memory use. It's already at release-candidate stage.\n\nFor Vue and Nuxt there's the usual delay. `vue-tsc` and Vue's language tooling lean on TypeScript more deeply than a plain project does; there's an [open issue for TypeScript 7 support](https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fissues\u002F5381), but full adoption may wait on the native API stabilizing. As I mentioned before, it loops back to oxlint, too: Oxc is building *type-aware* linting on the native compiler, so the endgame isn't just faster linting — it's faster linting that actually knows your types.\n\n::tool-status\n---\nstatus: rc\nnuxt: Vue\u002FNuxt support still TBD\nblockedBy: vue-tsc support + native-API maturity\nblockedByTo: https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fissues\u002F5381\n---\n**Much faster type-checking and IDE feedback** once Vue tooling catches up.\n::\n\n### pnpm, moving to Rust — installs\n\nPackage managers are riding the same wave. The best pick for me and most of the Nuxt ecosystem was (and still is) **pnpm**, for its strict layout, security model, community (especially the developers), and disk-efficient store — the one weak spot was raw speed. That's what **pnpm v12** targets: a Rust rewrite of pnpm's install engine.\n\nThis isn't a new package manager or a reimagining. It's meant to *become* pnpm's install engine while preserving its behavior, lockfile, and defaults. pnpm 11 already ships [experimental opt-in support](https:\u002F\u002Fpnpm.io\u002Fblog\u002Freleases\u002F11.2), the work has [moved into the main pnpm repo](https:\u002F\u002Fgithub.com\u002Fpnpm\u002Fpacquet), and **pnpm 12** is expected to make the Rust engine the main path — benchmarks point to big wins, though real-world workspaces still need shaking out.\n\n::blog-figure\n---\nsrc: https:\u002F\u002Fpnpm.io\u002Fimg\u002Fbenchmarks\u002Falotta-files-pnpm.svg?v=0b1a77c0\nalt: \"pnpm's live install benchmark: horizontal bars for pnpm 12 (with the new Rust engine) in orange, against the additional time pnpm 11 takes shown in grey, across scenarios like clean install, warm cache, existing node_modules, and update. pnpm 12 is faster in every row.\"\nsurface: light\nsource: pnpm benchmarks\nsourceTo: https:\u002F\u002Fpnpm.io\u002Fbenchmarks\n---\nThis is the win, measured — pnpm's own benchmark of pnpm 12's Rust engine (orange) against pnpm 11 across install scenarios. Lower is better; the grey is the time the rewrite shaves off.\n::\n\n::tool-status\n---\nstatus: preview\nnuxt: Usable experimentally today\n---\n**Faster dependency installation**.\n::\n\n## Where it gets Nuxt-specific\n\nEverything above touches *all* JS\u002Ffrontend development. Now I want to focus a bit more on Nuxt-specific upgrades brought to us by  **NuxtLabs**, the company behind **Nuxt**, **Nitro**, **Nuxt UI**, **Nuxt Studio**, and much of the unjs ecosystem, founded by [Sébastien Chopin](https:\u002F\u002Fgithub.com\u002Fatinux), Nuxt's creator. After [NuxtLabs joined Vercel](https:\u002F\u002Fnuxtlabs.com\u002F), the team leaned *further* into open source — Nuxt UI v4 merged the free and Pro libraries into one [open package](https:\u002F\u002Fui.nuxt.com\u002Fdocs\u002Fgetting-started), and Nuxt Studio shipped as a [free, self-hosted module](https:\u002F\u002Fcontent.nuxt.com\u002Fblog\u002Fstudio-oss).\n\n### Nitro v3 — the server engine\n\n**Nitro** is Nuxt's server engine — it builds and runs your backend, API routes, server rendering, and deployment output. It's the reason one Nuxt app can target Node, serverless, edge, or static.\n\n**Nitro v3** is a ground-up cleanup of that foundation, [built around web standards, Rolldown, and Vite 8](https:\u002F\u002Fnitro.build\u002Fblog\u002Fv3-beta). So Vite 8 \u002F Rolldown gains now reach your *server* build too. Three changes stand out: Rolldown-powered server builds with leaner output; less runtime overhead (routes compiled at build time, only what a request needs gets loaded); and far fewer dependencies, which matters more than you probably think.\n\n::stat-bar\n---\ntitle: Dependencies Nitro pulls in\nbars:\n- label: Nitro v2\n  value: 321\n  display: \"321\"\n- label: Nitro v3\n  value: 20\n  display: \"≤20\"\n  highlight: true\nsource: Nitro v3 beta announcement, nitro.build\nsourceTo: https:\u002F\u002Fnitro.build\u002Fblog\u002Fv3-beta\n---\nFewer packages means fewer things to audit, fewer to break, a smaller [supply-chain attack surface](https:\u002F\u002Funit42.paloaltonetworks.com\u002Fmonitoring-npm-supply-chain-attacks\u002F) — and faster cold starts.\n::\n\nNitro v3 matters most for serverless and edge, where cold starts and bundle size bite hardest. It lands in core with **Nuxt 5**, alongside H3 v2.\n\n::tool-status\n---\nstatus: beta\nnuxt: Lands in Nuxt 5\n---\n**Smaller server bundles, fewer dependencies, faster development thanks to Vite 8.**\n::\n\n### unjs & H3 — the plumbing\n\nThat's not everything! A lot of framework performance hides in unglamorous runtime packages — HTTP handling, config loading, storage adapters, module loading — and this is where the **unjs** ecosystem matters. **unjs** is not a single framework, but a collection of small, focused JavaScript and TypeScript packages used throughout Nuxt and Nitro. \n\nThe clearest example is **H3**, the small HTTP framework under Nitro's request handling. In Nitro v3, **H3 v2** is rebuilt around web-standard primitives (`Request`, `Response`, `Headers`, `URL`), making server code far more portable across Node, Bun, Deno, and Workers. It's not flashy, but it's exactly the kind of cleanup that makes a framework more reliable over time.\n\n## What I'm most excited about\n\nThe pieces above are the ones you'll feel soonest. The ones I'm *most* excited about are further out — they are not close to being production ready today, but the development is moving fast. This is the **later** column: assume everything here is experimental.\n\n::side-note\nI'm skipping Vue Vapor Mode and other runtime-performance work on purpose — it's important, but it's about your *users'* runtime, and this post is about developer experience.\n::\n\n### Vite Bundled Dev Mode — dev speed on huge apps\n\nVite's dev server has always served unbundled ESM — a brilliant call at launch: start instantly, compile only what the browser asks for. But very large apps now fire off hundreds or thousands of dev requests, and the bottleneck shifts from the build tool to the browser and network.\n\nVite 8.1 adds experimental **Bundled Dev Mode** (formerly Full Bundle Mode): it bundles during development, closer to the production model, while keeping fast HMR.\n\n::speed-stats\n---\nitems:\n- value: \"15×\"\n  tool: startup\n  vs: 10,000-component test\n- value: \"10×\"\n  tool: reloads\n  vs: 10,000-component test\nsource: Vite 8.1 announcement\nsourceTo: https:\u002F\u002Fvite.dev\u002Fblog\u002Fannouncing-vite8-1\n---\n::\n\nFor real performance benefits that affect Nuxt, we’ll still have to wait some time. You can check the current [rollout plan](https:\u002F\u002Fgithub.com\u002Frolldown\u002Frolldown\u002Fissues\u002F9030), but after that, Nitro and Nuxt will still need to adopt it. It should also finally make `vite.optimizeDeps` unnecessary, since everything will be optimized.\n\n\n### Vize — a unified Rust toolchain for Vue\n\nReact is already moving toward a compiler-heavy future — Oxc even ships a [Rust port of the React Compiler](https:\u002F\u002Foxc.rs\u002Fdocs\u002Fguide\u002Fusage\u002Ftransformer\u002Freact-compiler.html). Vue deserves the same level of tooling ambition, and that’s exactly what [@ubugeeei](https:\u002F\u002Fgithub.com\u002Fubugeeei) is exploring with [**Vize**](https:\u002F\u002Fvizejs.dev\u002F): an experimental Rust-native toolchain for Vue.\n\nThe goal isn't just \"a faster Vue compiler.\" It's a *vertically integrated* toolchain where compilation, linting, formatting, type-checking, and editor tooling share one high-performance core — instead of being stitched together from disconnected tools that each re-parse the file and disagree about the edge cases.\n\n> The interesting part was never a faster compiler. It's one shared core that finally agrees on what your file means.\n\nVize already posts impressive numbers, integrates oxlint, and has passed thousands of tests. I wouldn’t use it in production just yet, but it’s clearly entering its real-world testing phase. So if you’re interested in Vue tooling, give it a try, test it, report bugs, and follow its development!\n\n## Where this leaves us\n\nThe trend is no longer subtle: installing, parsing, linting, formatting, type-checking, bundling, serving — every layer is being rebuilt or seriously reworked, most of it on native foundations. The result is a workflow that fights you less. Builds finish sooner, type errors surface faster, linters stop feeling like a tax, dev servers cold-start quicker. And it matters more now that AI agents are part of daily development: they run these tools constantly, so every second saved per install, lint, build, or type-check adds up.\n\nTwo things stick with me from all of this.\n\n**Rust has quietly become the language the JavaScript ecosystem builds its tools in** — not for your app, but for everything around it. Rolldown, Oxc, oxlint, oxfmt, pnpm v12, Vize: all Rust. TypeScript's Go port is the notable exception that proves the rule. The pattern is the same either way — your app stays JavaScript, the machinery goes native.\n\n**And the acquisitions people were nervous about — myself included — have so far gone the good way.** VoidZero into Cloudflare, NuxtLabs into Vercel: still open, better resourced, and shipping *faster* than before. That's not how every open-source acquisition has gone, which is exactly why this one is worth saying out loud.\n\nMostly I want to say thank you, to the people doing this hard, mostly unglamorous work: the **VoidZero**, **NuxtLabs** companies, **unjs**, **TypeScript** and **pnpm** teams, and the individuals pushing the edge.\n\n::side-note\nAll of this comes from OSS developers, and a lot of it from the people whose names you never see. I feel real gratitude to them for the work:\n- **Vite & Rolldown** — the Rolldown core team, especially [@hyf0](https:\u002F\u002Fgithub.com\u002Fhyf0), [@IWANNABETHATGUY](https:\u002F\u002Fgithub.com\u002FIWANNABETHATGUY) and [@h-a-n-a](https:\u002F\u002Fgithub.com\u002Fh-a-n-a), plus the Vite core team ([@sapphi-red](https:\u002F\u002Fgithub.com\u002Fsapphi-red), [@hi-ogawa](https:\u002F\u002Fgithub.com\u002Fhi-ogawa))\n- **Oxc** — [Boshen](https:\u002F\u002Fgithub.com\u002FBoshen), [@overlookmotel](https:\u002F\u002Fgithub.com\u002Foverlookmotel), [@camc314](https:\u002F\u002Fgithub.com\u002Fcamc314) and [@leaysgur](https:\u002F\u002Fgithub.com\u002Fleaysgur)\n- **pnpm** — [Zoltan Kochan](https:\u002F\u002Fgithub.com\u002Fzkochan)\n- **unjs and Nitro** — [Pooya Parsa](https:\u002F\u002Fgithub.com\u002Fpi0)\n- **Vize** — [@ubugeeei](https:\u002F\u002Fgithub.com\u002Fubugeeei)\n\nFar more names than fit here; if I missed you, it wasn't for lack of gratitude.\n::\n\n## What should Nuxt developers do now?\n\nSome of this you'll get for free; some of it you'll have to reach for. A few pieces upgrade *underneath* you as Nuxt, Vite, and the rest move on. Others are opt-in, and a couple will want real migration work. Here's how I'd approach it:\n\n- **Now.** You're already on Vite, so the Vite 8 and Rolldown gains land as Nuxt adopts them — likely first around **4.5**, with full alignment in **Nuxt 5**. You won't rewrite anything for this one, you'll just upgrade and watch your build times drop, in some cases massively.\n- **Across 2026.** oxlint and oxfmt, TypeScript 7, Nitro v3, and pnpm 12 all mature. These are opt-in: try them on side projects first, and watch the Vue SFC support before trusting oxlint\u002Foxfmt on templates. Nitro v3 lands with Nuxt 5 and may need real work if you have custom server code.\n- **Later.** Bundled Dev Mode and Vize are still experiments. Keep an eye on them and give them a spin on side projects.\n\nAnd whichever bucket **a tool falls into, get involved**. Spread the word. Migrate your projects. Report the bugs you find. Give the maintainers honest feedback, and contribute back where you can. Native tooling gets good because people push it hard in the open, and the faster we move onto the new foundation, the sooner the next round of improvements arrives.\n",[897,897],null,1783253790514]