vite 8.0.0
8.0.0 (2026-03-12)

Today, we're thrilled to announce the release of the next Vite major:
- Vite 8.0 announcement blog post
- Docs (translations: 简体中文, 日本語, Español, Português, 한국어, Deutsch, فارسی)
- Migration Guide
⚠ BREAKING CHANGES
- remove
import.meta.hot.acceptresolution fallback (#21382) - update default browser target (#21193)
- the epic
rolldown-vitemerge (#21189)
Features
- update rolldown to 1.0.0-rc.9 (#21813) (f05be0e)
- warn when
vite-tsconfig-pathsplugin is detected (#21781) (ada493e) - css: support es2025 build target for lightningcss (#21769) (08906e7)
- forward browser console logs and errors to dev server terminal (#20916) (2540ed0)
- update rolldown to 1.0.0-rc.8 (#21790) (a0c950e)
- export
VisitorandESTreefromrolldown/utils(#21664) (45de31e) - update rolldown to 1.0.0-rc.6 (#21714) (37a65f8)
- use util.inspect for CLI error display (#21668) (5f425a9)
- update rolldown to 1.0.0-rc.5 (#21660) (b3ddbc5)
- update rolldown to 1.0.0-rc.4 (#21617) (1ee5c7f)
- wasm: add SSR support for
.wasm?init(#21102) (216a3b5) - integrate devtools (#21331) (acbf507)
- update rolldown to 1.0.0-rc.3 (#21554) (43358e9)
- manifest: add
assetsfield for standalone CSS entry points (#21015) (f289b9b) - update rolldown to 1.0.0-rc.2 (#21512) (fa136a9)
- bundled-dev: support worker in initial bundle (#21415) (f3d3149)
- dev: detect port conflicts on wildcard hosts (#21381) (b0dd5a9)
- shortcuts case insensitive (#21224) (7796ade)
- update rolldown to 1.0.0-rc.1 (#21463) (ff9dd7f)
- warn if
envPrefixcontains spaces (#21292) (9fcde3c) - update rolldown to 1.0.0-beta.60 (#21408) (c33aa7c)
- update rolldown to 1.0.0-beta.59 (#21374) (0037943)
- add
ignoreOutdatedRequestsoption tooptimizeDeps(#21364) (b2e75aa) - add ios to default esbuild targets (#21342) (daae6e9)
- update rolldown to 1.0.0-beta.58 (#21354) (ba40cef)
- update rolldown to 1.0.0-beta.57 (#21335) (d5412ef)
- css: support es2024 build target for lightningcss (#21294) (bd33b8e)
- update rolldown to 1.0.0-beta.56 (#21323) (9847a63)
- introduce v2 native plugins and enable it by default (#21268) (42f2ab3)
- ssr: avoid errors when rewriting already rewritten stacktrace (#21269) (98d9a33)
- update rolldown to 1.0.0-beta.55 (#21300) (2c8db85)
- update rolldown to 1.0.0-beta.54 (#21267) (c751172)
- add a warning that is output when a plugin sets esbuild related options (#21218) (200646b)
- highly experimental full bundle mode (#21235) (83d8c99)
- print esbuild options when both esbuild and oxc options are set (#21216) (08ae87b)
- update default browser target (#21193) (8c3dd06)
- the epic
rolldown-vitemerge (#21189) (4a7f8d4)
Bug Fixes
- deps: update all non-major dependencies (#21786) (eaa4352)
- use
watch.watcherinstead ofwatch.notify(#21793) (88953b3) - css: apply
server.originto public file URLs in CSS (fix #18457) (#21697) (c967f48) - deps: update all non-major dependencies (#21732) (5c921ca)
- dev: disable extglobs for consistency (#21745) (1958eeb)
- lib: keep annotation comments for es output (#21740) (dd3c4f4)
- optimizer: avoid error happening with a package with asset entrypoint (#21766) (f7e1d07)
- ssr: throw friendly error when calling
ssrLoadModulewith non-runnable ssr env (#21739) (1fa736e) - types: remove extends ImportMeta from ModuleRunnerImportMeta (#21710) (0176d45)
- wasm: reset assetUrlRE.lastIndex before .test() in SSR builds (#21780) (3a0d8d9)
- deps: update all non-major dependencies (#21691) (521fdc0)
- optimizer: avoid duplicate modules when
preserveSymlinksis enabled (#21720) (72165e0) - dev: only treat EADDRINUSE as port conflict in wildcard pre-check (#21642) (e54e25f)
- dev: prevent concurrent server restarts (#21636) (8ce23a3)
- dev: return "502 Bad Gateway" on proxy failures instead of 500 (#21652) (e240df2)
- clear tsconfig cache only when tsconfig.json is cached (#21622) (50c9675)
- deps: update all non-major dependencies (#21594) (becdc5d)
- lib: CSS injection point error with nested name IIFE output (#21606) (5003de6)
- module-runner: incorrect column with
sourcemapInterceptor: "prepareStackTrace"(#21562) (416c095) - module-runner: prevent crash on negative column in stacktrace (#21585) (a075590)
- rolldownOptions/rollupOptions merging at environment level (#21612) (db2ecc7)
- scanner: respect tsconfig.json (#21547) (c6c04db)
- avoid registering customization hook for import meta resolver multiple times (#21518) (8bb3203)
- config: avoid watching rolldown runtime virtual module (#21545) (d18b139)
- deps: update all non-major dependencies (#21540) (9ebaeaa)
- populate originalFileNames when resolving CSS asset paths (#21542) (8b47ff7)
- deps: update all non-major dependencies (#21488) (2b32ca2)
- disable
tsconfigoption when loading config (#21517) (5025c35) - optimizer: map relative
new URLpaths to correct relative file location (#21434) (ca96cbc) - avoid using deprecated
output.inlineDynamicImportoption (#21464) (471ce62) - use separate hook object for each environment (#21472) (66347f6)
- deps: update all non-major dependencies (#21440) (1835995)
- dev: avoid event emitter leak caused by
server.listencallback (#21451) (602d786) - lazy hook filter should work (#21443) (bc0c207)
- optimizer: skip
rolldownCjsExternalPluginforplatform: neutral(#21452) (d2fc4be) - deps: update all non-major dependencies (#21389) (30f48df)
- deps: update esbuild peerDependency version (#21398) (4266c97)
- hmr: trigger prune event when last import is removed (#20781) (#21093) (7576735)
- module-runner: use
process.getBuiltinModuleinstead ofimport('node:module')(#21402) (6633bcb) - support .env file mounts (FIFOs) (#21365) (6e6f82a)
- css: stylus Evaluator support (#21376) (cf9ace1)
- deps: update all non-major dependencies (#21321) (9bc7c2e)
- import-analysis: avoid cjs interop for built browser external module (#21333) (dc5a2fb)
- worker: handle
new Worker(..., new URL(import.meta.url))with trailing comma (#21325) (4a47241) - detect
import.meta.resolvewhen formatted across multiple lines (#21312) (130e718) - allow no-cors requests for non-script tag requests (#21299) (ef3d596)
- deps: update all non-major dependencies (#21285) (4635b2e)
- unreachable error when building with
experimental.bundledDevis enabled (#21296) (e81c183) - deps: update all non-major dependencies (#21231) (859789c)
- don't strip base from imports (#21221) (7da742b)
- allow exiting process before optimizer cleanup is done (#21170) (55ceffc)
- plugin shortcut support (#21211) (6a3aca0)
Performance Improvements
- ssr: skip circular import check for already-evaluated modules (#21632) (235140b)
- use tsconfig cache for oxc transform in dev (#21643) (57ff177)
Documentation
- bulk of typo fixes (#21507) (80755da)
- update
build.dynamicImportVarsOptions(#21477) (54ce2ed) - clarify the pronunciation of
vitein IPA symbols (#21238) (9b1d4d6) - ensure https links (#21266) (2eb259a)
Miscellaneous Chores
- deps-dev: bump rollup from 4.57.1 to 4.59.0 (#21717) (25227bb)
- deps: update dependency cac to v7 (#21788) (44e33ae)
- deps: update dependency rolldown-plugin-dts to ^0.22.2 (#21731) (d8ea652)
- deps: remove
fdirand@rollup/plugin-commonjs(#21639) (5abffd5) - deps: update dependency @rollup/plugin-alias to v6 (#21097) (44b5bdf)
- fix broken link for future deprecations (#21603) (25f4501)
- update
customResolverdeprecation message to mentionenforce: 'pre'(#21576) (2ce34d5) - update rolldown-plugin-dts to 0.22.1 (#21559) (77aab4b)
- deps: update dependency rolldown-plugin-dts to ^0.21.8 (#21539) (33881cb)
- add missing versions to changelog (#21515) (4bfb239)
- deps: update rolldown-related dependencies (#21487) (5863e51)
- deps: update rolldown-related dependencies (#21390) (be9dd4e)
- fix typo in plugin.ts comment (#21435) (d31fc66)
- replace caniuse link for ES2024 (#21355) (2ba4e99)
- cleanup changelog (#21202) (8c8c56e)
- deps: update rolldown-related dependencies (#21230) (9349446)
- fix spelling error (#21223) (cc10e20)
Code Refactoring
- don't add
optimization.inlineConst: { mode: 'smart' }as it's enabled by default (#21794) (22b3d11) - enable some native plugins even with enable native plugin false (#21744) (fc46c79)
- avoid deprecated
legalCommentsoption (#21721) (e06496e) - use
ESTreetypes fromrolldown/utils(#21719) (9239750) - deprecate
customResolverinresolve.alias(#21476) (81275c9) - remove unnecessary
@rolldown/pluginutils(#21560) (c367b62) - enable some native plugins even with enable native plugin false (#21608) (5a4f692)
- use
rolldown/utils(#21577) (e56103f) - use internal devtools config (#21609) (9aea20f)
- use parseEnv (#21586) (f859d2c)
- wasm: remove native wasm helper plugin usage (#21566) (71a86be)
- enable some native plugins even with enable native plugin false (#21511) (b40292c)
- remove
experimental.enableNativePlugin: 'resolver'(#21510) (f9d9213) - use
import.meta.dirnameeverywhere (#21509) (7becf5f) - optimizer: simplify
rolldownCjsExternalPlugin(#21450) (ebda8fd) - remove
import.meta.hot.acceptresolution fallback (#21382) (71d0797) - optimizer: remove dead code (#21334) (e9a2cdb)
Tests
- ssr: incorrect
handleInvokewas called in server-worker-runner.invoke test (#21751) (b95ca22) - add more type tests for
defineConfig(#21698) (4fedbbd) - test case for catching invalid package resolution error (#21601) (c9b9359)
- bundled-dev: add worker test cases (#21557) (569bc98)