Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: use websocket to test server liveness before client reload #17891

Merged
merged 19 commits into from
Oct 25, 2024

Conversation

hi-ogawa
Copy link
Collaborator

@hi-ogawa hi-ogawa commented Aug 16, 2024

Description

This PR makes waitForSuccessfulPing more robust by testing Vite server liveness based on websocket connection as suggested in #5675 (comment)

Testing #13125

  • run playground e.g. pnpm -C playground/tailwind dev
  • run proxy e.g. cloudflared tunnel --url http://localhost:5173/
  • open a page from proxy e.g. https://arrow-lonely-looks-counsel.trycloudflare.com/
  • stop playground server and see client keeps pinging (previously client full reloads here and ends up 502 page)
  • start playground server and see client reloads automatically

Testing #16536 (this one is added as a test case)

  • run playground pnpm -C playground/tailwind dev with a following server config
      server: {
        // different port for hmr websocket
        hmr: {
          port: 12345
        },
        // cross origin isolation headers
        headers: {
          "Cross-Origin-Embedder-Policy": "require-corp",
          "Cross-Origin-Opener-Policy": "same-origin"
        }
  • stop playground server and see client keeps pinging
  • start playground server and see client reloads (previously client fails to automatically full reload here)

Copy link

stackblitz bot commented Aug 16, 2024

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@hi-ogawa hi-ogawa marked this pull request as ready for review August 17, 2024 08:11
@hendrikheil
Copy link

My team applied these changes to vite locally and tried it with 5 different Nuxt 3 based applications running behind a traefik based https reverse proxy. This change massively improves the DX for us as we no longer have to constantly full-page reload our apps especially when vite is still booting.

I'd love to see this merged ❤️

Thanks @hi-ogawa, this gives us back so much productivity!

@francislavoie
Copy link

francislavoie commented Sep 20, 2024

Can confirm, this also fixes my issue. I use vite for SSR by adding it to my express server (pretty much exactly this code in app.use('*': https://vitejs.dev/guide/ssr#setting-up-the-dev-server), but at the end I add these CORS headers to my SSR rendered response to get access to performance.now()

        res.status(200).set({
          'Content-Type': 'text/html',
          'Cross-Origin-Opener-Policy': 'same-origin',
          'Cross-Origin-Embedder-Policy': 'require-corp',
        }).end(html);

Before this patch, after a server stop/start or reload, the HMR ping over HTTP would loop forever and fail with a 426 status (what Firefox shows me anyway) and console logs show the request failed due to CORS. I couldn't find any easy way to configure the HMR server to add CORS headers after a solid hour of searching.

Eventually landed here, tried this fix, and it works. Pinging over WS instead of over HTTP certainly makes more sense IMO especially since the target connection is WS anyway; why ping over HTTP when the goal is to get a WS connection set up? Browsers have different rules for HTTP vs WS regarding CORS so pinging over WS removes that entire class of issues.

@hi-ogawa
Copy link
Collaborator Author

hi-ogawa commented Sep 27, 2024

New test is flaky but I'm not sure what's going on. Locally, this command can fail if I run a few times.

pnpm test-serve playground/client-reload

@hi-ogawa
Copy link
Collaborator Author

hi-ogawa commented Oct 2, 2024

Though tests could be still flaky, but I added some workaround by skipping some tests and retry.

@sapphi-red sapphi-red added feat: hmr p3-minor-bug An edge case that only affects very specific usage (priority) labels Oct 3, 2024
@sapphi-red
Copy link
Member

It passes on my PC even if I enable all tests. Did you try pnpm debug-serve?

@sapphi-red

This comment was marked as outdated.

@vite-ecosystem-ci

This comment was marked as outdated.

@hi-ogawa
Copy link
Collaborator Author

hi-ogawa commented Oct 3, 2024

It passes on my PC even if I enable all tests. Did you try pnpm debug-serve?

On my PC, it happens quite consistently (like 1 in 2 or 3 runs) by running it while sleep 1; do pnpm test-serve playground/client-reload/; done. Also there a few fails on CI before the commit test: retry.

I couldn't figure out a way to debug the issue. What does debug-serve do?

@sapphi-red
Copy link
Member

What does debug-serve do?

It'll run playwright in non-headless mode. Maybe you can find out what's happening. Although, it may not reproduce with it.

@hi-ogawa
Copy link
Collaborator Author

hi-ogawa commented Oct 3, 2024

Hmm, unfortunately it doesn't reproduce with debug-serve. I think I've only seen this fails on ubuntu CI, so it's possible that this is something due to os + headless specific quirks.

Let me tweak the test to only skip on linux.

@hi-ogawa
Copy link
Collaborator Author

hi-ogawa commented Oct 3, 2024

Well, it just failed on macos as well. I'll re-run a few times and probably I'll put back skip and retry.

This reverts commit 3af732c.
@sapphi-red
Copy link
Member

I fixed the test fail in 91e7edf. It seems the HTTP server was sending an empty response because the WS server listens before the HTTP server.

@sapphi-red

This comment was marked as outdated.

sapphi-red
sapphi-red previously approved these changes Oct 4, 2024
@vite-ecosystem-ci

This comment was marked as outdated.

@sapphi-red
Copy link
Member

Hmm, it seems my change broke a bunch of tests.

@sapphi-red

This comment was marked as outdated.

@vite-ecosystem-ci

This comment was marked as outdated.

@sapphi-red

This comment was marked as outdated.

@vite-ecosystem-ci

This comment was marked as outdated.

@hi-ogawa
Copy link
Collaborator Author

hi-ogawa commented Oct 4, 2024

Wow, awesome finding. I still cannot see it reproduced in the browser, but the fix makes sense!

@sapphi-red
Copy link
Member

I did a unsophisticated push and CI debug😅
https://github.com/sapphi-red/vite/commits/fix/test-fix-robost-client-ping-reolad/

sapphi-red
sapphi-red previously approved these changes Oct 8, 2024
patak-dev
patak-dev previously approved these changes Oct 8, 2024
@patak-dev patak-dev added this to the 6.0 milestone Oct 8, 2024
@patak-dev
Copy link
Member

Great work! I think it would be good to have this in Vite 6. I added it to the milestone.

@sapphi-red sapphi-red dismissed stale reviews from patak-dev and themself via 38942b1 October 25, 2024 04:11
@francislavoie
Copy link

@patak-dev why not in v5.x? This is a great bug fix IMO.

@sapphi-red
Copy link
Member

It because this PR is not small enough or urgent enough to release in a patch and we don't have a plan to release a minor in v5.

@sapphi-red
Copy link
Member

/ecosystem-ci run

@vite-ecosystem-ci
Copy link

📝 Ran ecosystem CI on 38942b1: Open

suite result latest scheduled
astro failure failure
nuxt failure success
redwoodjs failure failure
remix failure failure
sveltekit failure failure
vike failure failure
vite-plugin-svelte failure failure
vitest failure failure

analogjs, histoire, ladle, laravel, marko, previewjs, quasar, qwik, rakkas, storybook, unocss, vite-environment-examples, vite-plugin-pwa, vite-plugin-react, vite-plugin-react-swc, vite-plugin-vue, vite-setup-catalogue, vitepress, vuepress

@sapphi-red
Copy link
Member

nuxt is failing on main branch and the fails have the same errors with the latest scheduled ones so should be fine.

@sapphi-red sapphi-red merged commit 7f9f8c6 into vitejs:main Oct 25, 2024
14 checks passed
@hi-ogawa hi-ogawa deleted the fix-robust-client-ping-reload branch October 25, 2024 07:44
alexandresoro pushed a commit to alexandresoro/ouca-backend that referenced this pull request Dec 21, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [vite](https://vite.dev) ([source](https://github.com/vitejs/vite/tree/HEAD/packages/vite)) | devDependencies | major | [`5.4.11` -> `6.0.5`](https://renovatebot.com/diffs/npm/vite/5.4.11/6.0.5) |

---

### Release Notes

<details>
<summary>vitejs/vite (vite)</summary>

### [`v6.0.5`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small605-2024-12-20-small)

[Compare Source](https://github.com/vitejs/vite/compare/v6.0.4...v6.0.5)

-   fix: esbuild regression (pin to 0.24.0) ([#&#8203;19027](https://github.com/vitejs/vite/issues/19027)) ([4359e0d](https://github.com/vitejs/vite/commit/4359e0d5b33afd6259a4dcef787cc2670e963126)), closes [#&#8203;19027](https://github.com/vitejs/vite/issues/19027)

### [`v6.0.4`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small604-2024-12-19-small)

[Compare Source](https://github.com/vitejs/vite/compare/v6.0.3...v6.0.4)

-   fix: `this.resolve` skipSelf should not skip for different `id` or `import` ([#&#8203;18903](https://github.com/vitejs/vite/issues/18903)) ([4727320](https://github.com/vitejs/vite/commit/472732057cb2273908e1fca8aa7dc18a7e1f7c74)), closes [#&#8203;18903](https://github.com/vitejs/vite/issues/18903)
-   fix: fallback terser to main thread when function options are used ([#&#8203;18987](https://github.com/vitejs/vite/issues/18987)) ([12b612d](https://github.com/vitejs/vite/commit/12b612d8be2a18456fd94a2f0291d32d1ffb29d4)), closes [#&#8203;18987](https://github.com/vitejs/vite/issues/18987)
-   fix: merge client and ssr values for `pluginContainer.getModuleInfo` ([#&#8203;18895](https://github.com/vitejs/vite/issues/18895)) ([258cdd6](https://github.com/vitejs/vite/commit/258cdd637d1ee80a3c4571685135e89fe283f3a6)), closes [#&#8203;18895](https://github.com/vitejs/vite/issues/18895)
-   fix(css): escape double quotes in `url()` when lightningcss is used ([#&#8203;18997](https://github.com/vitejs/vite/issues/18997)) ([3734f80](https://github.com/vitejs/vite/commit/3734f8099e3922c189497ce404fe7ff2f8929ae1)), closes [#&#8203;18997](https://github.com/vitejs/vite/issues/18997)
-   fix(css): root relative import in sass modern API on Windows ([#&#8203;18945](https://github.com/vitejs/vite/issues/18945)) ([c4b532c](https://github.com/vitejs/vite/commit/c4b532cc900bf988073583511f57bd581755d5e3)), closes [#&#8203;18945](https://github.com/vitejs/vite/issues/18945)
-   fix(css): skip non css in custom sass importer ([#&#8203;18970](https://github.com/vitejs/vite/issues/18970)) ([21680bd](https://github.com/vitejs/vite/commit/21680bdf9ca7c12f677136b56e47f46469db8be2)), closes [#&#8203;18970](https://github.com/vitejs/vite/issues/18970)
-   fix(deps): update all non-major dependencies ([#&#8203;18967](https://github.com/vitejs/vite/issues/18967)) ([d88d000](https://github.com/vitejs/vite/commit/d88d0004a8e891ca6026d356695e0b319caa7fce)), closes [#&#8203;18967](https://github.com/vitejs/vite/issues/18967)
-   fix(deps): update all non-major dependencies ([#&#8203;18996](https://github.com/vitejs/vite/issues/18996)) ([2b4f115](https://github.com/vitejs/vite/commit/2b4f115129fb3fbd730a92078acb724f8527b7f7)), closes [#&#8203;18996](https://github.com/vitejs/vite/issues/18996)
-   fix(optimizer): keep NODE_ENV as-is when keepProcessEnv is `true` ([#&#8203;18899](https://github.com/vitejs/vite/issues/18899)) ([8a6bb4e](https://github.com/vitejs/vite/commit/8a6bb4e11d5c1b61511ae1e5ed3ae3c65a33b2dc)), closes [#&#8203;18899](https://github.com/vitejs/vite/issues/18899)
-   fix(ssr): recreate ssrCompatModuleRunner on restart ([#&#8203;18973](https://github.com/vitejs/vite/issues/18973)) ([7d6dd5d](https://github.com/vitejs/vite/commit/7d6dd5d1d655d173668192509f63ac4ebf7af299)), closes [#&#8203;18973](https://github.com/vitejs/vite/issues/18973)
-   chore: better validation error message for dts build ([#&#8203;18948](https://github.com/vitejs/vite/issues/18948)) ([63b82f1](https://github.com/vitejs/vite/commit/63b82f1e29a00d06a82144fd03ea8d6eff114290)), closes [#&#8203;18948](https://github.com/vitejs/vite/issues/18948)
-   chore(deps): update all non-major dependencies ([#&#8203;18916](https://github.com/vitejs/vite/issues/18916)) ([ef7a6a3](https://github.com/vitejs/vite/commit/ef7a6a35e6827b92445e5a0c2c0022616efc80dd)), closes [#&#8203;18916](https://github.com/vitejs/vite/issues/18916)
-   chore(deps): update dependency [@&#8203;rollup/plugin-node-resolve](https://github.com/rollup/plugin-node-resolve) to v16 ([#&#8203;18968](https://github.com/vitejs/vite/issues/18968)) ([62fad6d](https://github.com/vitejs/vite/commit/62fad6d79f83daf916dde866909a2a3dd0c79583)), closes [#&#8203;18968](https://github.com/vitejs/vite/issues/18968)
-   refactor: make internal invoke event to use the same interface with `handleInvoke` ([#&#8203;18902](https://github.com/vitejs/vite/issues/18902)) ([27f691b](https://github.com/vitejs/vite/commit/27f691b0c7dca2259108fe6b79583b459429bf7f)), closes [#&#8203;18902](https://github.com/vitejs/vite/issues/18902)
-   refactor: simplify manifest plugin code ([#&#8203;18890](https://github.com/vitejs/vite/issues/18890)) ([1bfe21b](https://github.com/vitejs/vite/commit/1bfe21b9440f318c940f90e425a18588595225fd)), closes [#&#8203;18890](https://github.com/vitejs/vite/issues/18890)
-   test: test `ModuleRunnerTransport` `invoke` API ([#&#8203;18865](https://github.com/vitejs/vite/issues/18865)) ([e5f5301](https://github.com/vitejs/vite/commit/e5f5301924b775837b2a1253c37f76555bce3e3e)), closes [#&#8203;18865](https://github.com/vitejs/vite/issues/18865)
-   test: test output hash changes ([#&#8203;18898](https://github.com/vitejs/vite/issues/18898)) ([bfbb130](https://github.com/vitejs/vite/commit/bfbb130fccefbe7e3880f09defb4fceacce39481)), closes [#&#8203;18898](https://github.com/vitejs/vite/issues/18898)

### [`v6.0.3`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small603-2024-12-05-small)

[Compare Source](https://github.com/vitejs/vite/compare/v6.0.2...v6.0.3)

-   fix: handle postcss load unhandled rejections ([#&#8203;18886](https://github.com/vitejs/vite/issues/18886)) ([d5fb653](https://github.com/vitejs/vite/commit/d5fb653c15903ccf84a093f212da86f0327a9a6f)), closes [#&#8203;18886](https://github.com/vitejs/vite/issues/18886)
-   fix: make handleInvoke interface compatible with invoke ([#&#8203;18876](https://github.com/vitejs/vite/issues/18876)) ([a1dd396](https://github.com/vitejs/vite/commit/a1dd396da856401a12c921d0cd2c4e97cb63f1b5)), closes [#&#8203;18876](https://github.com/vitejs/vite/issues/18876)
-   fix: make result interfaces for `ModuleRunnerTransport#invoke` more explicit ([#&#8203;18851](https://github.com/vitejs/vite/issues/18851)) ([a75fc31](https://github.com/vitejs/vite/commit/a75fc3193d5e8d8756dfb3a046873e9c222bb6c8)), closes [#&#8203;18851](https://github.com/vitejs/vite/issues/18851)
-   fix: merge `environments.ssr.resolve` with root `ssr` config ([#&#8203;18857](https://github.com/vitejs/vite/issues/18857)) ([3104331](https://github.com/vitejs/vite/commit/310433106e1e8a0c39dc397e3eace8a71a2416c2)), closes [#&#8203;18857](https://github.com/vitejs/vite/issues/18857)
-   fix: no permission to create vite config file ([#&#8203;18844](https://github.com/vitejs/vite/issues/18844)) ([ff47778](https://github.com/vitejs/vite/commit/ff47778004d609dbeef7f192783e6f253dd66237)), closes [#&#8203;18844](https://github.com/vitejs/vite/issues/18844)
-   fix: remove CSS import in CJS correctly in some cases ([#&#8203;18885](https://github.com/vitejs/vite/issues/18885)) ([690a36f](https://github.com/vitejs/vite/commit/690a36ffdb7d6f6568f35a304b4904e7aa475f17)), closes [#&#8203;18885](https://github.com/vitejs/vite/issues/18885)
-   fix(config): bundle files referenced with imports field ([#&#8203;18887](https://github.com/vitejs/vite/issues/18887)) ([2b5926a](https://github.com/vitejs/vite/commit/2b5926a0e79ce47d22536d38eed2629d326caca0)), closes [#&#8203;18887](https://github.com/vitejs/vite/issues/18887)
-   fix(config): make stacktrace path correct when sourcemap is enabled ([#&#8203;18833](https://github.com/vitejs/vite/issues/18833)) ([20fdf21](https://github.com/vitejs/vite/commit/20fdf210ee0ac0824b2db74876527cb7f378a9e8)), closes [#&#8203;18833](https://github.com/vitejs/vite/issues/18833)
-   fix(css): rewrite url when image-set and url exist at the same time ([#&#8203;18868](https://github.com/vitejs/vite/issues/18868)) ([d59efd8](https://github.com/vitejs/vite/commit/d59efd8dfd1c5bf2e7c45c7cdb1c0abc2a05ba02)), closes [#&#8203;18868](https://github.com/vitejs/vite/issues/18868)
-   fix(deps): update all non-major dependencies ([#&#8203;18853](https://github.com/vitejs/vite/issues/18853)) ([5c02236](https://github.com/vitejs/vite/commit/5c0223636fa277d5daeb4d93c3f32d9f3cd69fc5)), closes [#&#8203;18853](https://github.com/vitejs/vite/issues/18853)
-   fix(html): allow unexpected question mark in tag name ([#&#8203;18852](https://github.com/vitejs/vite/issues/18852)) ([1b54e50](https://github.com/vitejs/vite/commit/1b54e506a44420d0c8a9e000cf45b1c4f5e33026)), closes [#&#8203;18852](https://github.com/vitejs/vite/issues/18852)
-   fix(module-runner): decode uri for file url passed to import ([#&#8203;18837](https://github.com/vitejs/vite/issues/18837)) ([88e49aa](https://github.com/vitejs/vite/commit/88e49aa0418cb3f6b579b744ba59daeda68432f3)), closes [#&#8203;18837](https://github.com/vitejs/vite/issues/18837)
-   refactor: fix logic errors found by no-unnecessary-condition rule ([#&#8203;18891](https://github.com/vitejs/vite/issues/18891)) ([ea802f8](https://github.com/vitejs/vite/commit/ea802f8f8bcf3771a35c1eaf687378613fbabb24)), closes [#&#8203;18891](https://github.com/vitejs/vite/issues/18891)
-   chore: fix duplicate attributes issue number in comment ([#&#8203;18860](https://github.com/vitejs/vite/issues/18860)) ([ffee618](https://github.com/vitejs/vite/commit/ffee61893cfe9f2b0db4aecf9ddb62ca79c80458)), closes [#&#8203;18860](https://github.com/vitejs/vite/issues/18860)

### [`v6.0.2`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small602-2024-12-02-small)

[Compare Source](https://github.com/vitejs/vite/compare/v6.0.1...v6.0.2)

-   chore: run typecheck in unit tests ([#&#8203;18858](https://github.com/vitejs/vite/issues/18858)) ([49f20bb](https://github.com/vitejs/vite/commit/49f20bb77749ec7b44344fd9c42d593ae20c78f0)), closes [#&#8203;18858](https://github.com/vitejs/vite/issues/18858)
-   chore: update broken links in changelog ([#&#8203;18802](https://github.com/vitejs/vite/issues/18802)) ([cb754f8](https://github.com/vitejs/vite/commit/cb754f8acc1b579dae9fe70a08e3ef53984402cc)), closes [#&#8203;18802](https://github.com/vitejs/vite/issues/18802)
-   chore: update broken links in changelog ([#&#8203;18804](https://github.com/vitejs/vite/issues/18804)) ([47ec49f](https://github.com/vitejs/vite/commit/47ec49ffa170cac5d04cf2eef01f45e0b5ccde03)), closes [#&#8203;18804](https://github.com/vitejs/vite/issues/18804)
-   fix: don't store temporary vite config file in `node_modules` if deno ([#&#8203;18823](https://github.com/vitejs/vite/issues/18823)) ([a20267b](https://github.com/vitejs/vite/commit/a20267bb93118468a2e20f0f77b77ed7bfa94165)), closes [#&#8203;18823](https://github.com/vitejs/vite/issues/18823)
-   fix(css): referencing aliased svg asset with lightningcss enabled errored ([#&#8203;18819](https://github.com/vitejs/vite/issues/18819)) ([ae68958](https://github.com/vitejs/vite/commit/ae6895869157e48b32088f0a1f85d2fddb2d713f)), closes [#&#8203;18819](https://github.com/vitejs/vite/issues/18819)
-   fix(manifest): use `style.css` as a key for the style file for `cssCodesplit: false` ([#&#8203;18820](https://github.com/vitejs/vite/issues/18820)) ([ec51115](https://github.com/vitejs/vite/commit/ec511152558cb573acf55e88e5244bdead1b5a17)), closes [#&#8203;18820](https://github.com/vitejs/vite/issues/18820)
-   fix(optimizer): resolve all promises when cancelled ([#&#8203;18826](https://github.com/vitejs/vite/issues/18826)) ([d6e6194](https://github.com/vitejs/vite/commit/d6e6194706f0e3a889caa9303de2293cc0f131b2)), closes [#&#8203;18826](https://github.com/vitejs/vite/issues/18826)
-   fix(resolve): don't set builtinModules to `external` by default ([#&#8203;18821](https://github.com/vitejs/vite/issues/18821)) ([2250ffa](https://github.com/vitejs/vite/commit/2250ffac62e55c89232d745d2f99ece539be9195)), closes [#&#8203;18821](https://github.com/vitejs/vite/issues/18821)
-   fix(ssr): set `ssr.target: 'webworker'` defaults as fallback ([#&#8203;18827](https://github.com/vitejs/vite/issues/18827)) ([b39e696](https://github.com/vitejs/vite/commit/b39e69638b3e2e658ff6712be83b549b28103c3d)), closes [#&#8203;18827](https://github.com/vitejs/vite/issues/18827)
-   feat(css): format lightningcss error ([#&#8203;18818](https://github.com/vitejs/vite/issues/18818)) ([dac7992](https://github.com/vitejs/vite/commit/dac7992e8725234007c7515f86f543992874c7b8)), closes [#&#8203;18818](https://github.com/vitejs/vite/issues/18818)
-   refactor: make properties of ResolvedServerOptions and ResolvedPreviewOptions required ([#&#8203;18796](https://github.com/vitejs/vite/issues/18796)) ([51a5569](https://github.com/vitejs/vite/commit/51a5569e66bd7f0de79ac14b9e902d1382ccd0aa)), closes [#&#8203;18796](https://github.com/vitejs/vite/issues/18796)

### [`v6.0.1`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small601-2024-11-27-small)

[Compare Source](https://github.com/vitejs/vite/compare/v6.0.0...v6.0.1)

-   fix: default empty server `proxy` prevents starting http2 server ([#&#8203;18788](https://github.com/vitejs/vite/issues/18788)) ([bbaf514](https://github.com/vitejs/vite/commit/bbaf514fb718952e0f17a15545c593125f1d1b9c)), closes [#&#8203;18788](https://github.com/vitejs/vite/issues/18788)
-   fix(manifest): do not override existing js manifest entry  ([#&#8203;18776](https://github.com/vitejs/vite/issues/18776)) ([3b0837e](https://github.com/vitejs/vite/commit/3b0837e0b997e14dacc347719353b8b0cea35bda)), closes [#&#8203;18776](https://github.com/vitejs/vite/issues/18776)
-   fix(server): close \_ssrCompatModuleRunner on server close ([#&#8203;18784](https://github.com/vitejs/vite/issues/18784)) ([9b4c410](https://github.com/vitejs/vite/commit/9b4c410dddb80c8858549355e175735976a82134)), closes [#&#8203;18784](https://github.com/vitejs/vite/issues/18784)
-   fix(server): skip hot channel client normalization for wsServer  ([#&#8203;18782](https://github.com/vitejs/vite/issues/18782)) ([cc7670a](https://github.com/vitejs/vite/commit/cc7670abaffeda1338cf3acfef2bc41a38c223a0)), closes [#&#8203;18782](https://github.com/vitejs/vite/issues/18782)
-   fix(worker): fix `applyToEnvironment` hooks on worker build ([#&#8203;18793](https://github.com/vitejs/vite/issues/18793)) ([0c6cdb0](https://github.com/vitejs/vite/commit/0c6cdb0f88d32ce041272977e786006008223f44)), closes [#&#8203;18793](https://github.com/vitejs/vite/issues/18793)
-   chore: flat v6 config file ([#&#8203;18777](https://github.com/vitejs/vite/issues/18777)) ([c7b3308](https://github.com/vitejs/vite/commit/c7b330832675ee6385ee1a8750762e496c8e18e6)), closes [#&#8203;18777](https://github.com/vitejs/vite/issues/18777)
-   chore: split changelog ([#&#8203;18787](https://github.com/vitejs/vite/issues/18787)) ([8542632](https://github.com/vitejs/vite/commit/8542632b3b205b61999b6d998928d5fb17ba90c4)), closes [#&#8203;18787](https://github.com/vitejs/vite/issues/18787)
-   chore: update changelog for v6 ([#&#8203;18773](https://github.com/vitejs/vite/issues/18773)) ([b254fac](https://github.com/vitejs/vite/commit/b254fac4aa35a3522aeafb3259e60acd050aeb51)), closes [#&#8203;18773](https://github.com/vitejs/vite/issues/18773)
-   revert: update moduleResolution value casing ([#&#8203;18409](https://github.com/vitejs/vite/issues/18409)) ([#&#8203;18774](https://github.com/vitejs/vite/issues/18774)) ([b0fc6e3](https://github.com/vitejs/vite/commit/b0fc6e3c2591a30360d3714263cf7cc0e2acbfdf)), closes [#&#8203;18409](https://github.com/vitejs/vite/issues/18409) [#&#8203;18774](https://github.com/vitejs/vite/issues/18774)

### [`v6.0.0`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#600-2024-11-26)

[Compare Source](https://github.com/vitejs/vite/compare/v5.4.11...v6.0.0)

![Vite 6 is out!](../../docs/public/og-image-announcing-vite6.png)

Today, we're taking another big step in Vite's story. The Vite [team](https://vite.dev/team), [contributors](https://github.com/vitejs/vite/graphs/contributors), and ecosystem partners are excited to announce the release of the next Vite major:

-   **[Vite 6.0 announcement blog post](https://vite.dev/blog/announcing-vite6.html)**
-   [Docs](https://vite.dev/)
-   Translations: [简体中文](https://cn.vite.dev/), [日本語](https://ja.vite.dev/), [Español](https://es.vite.dev/), [Português](https://pt.vite.dev/), [한국어](https://ko.vite.dev/), [Deutsch](https://de.vite.dev/)
-   [Migration Guide](https://vite.dev/guide/migration.html)

We want to thank the more than [1K contributors to Vite Core](https://github.com/vitejs/vite/graphs/contributors) and the maintainers and contributors of Vite plugins, integrations, tools, and translations that have helped us craft this new major. We invite you to get involved and help us improve Vite for the whole ecosystem. Learn more at our [Contributing Guide](https://github.com/vitejs/vite/blob/main/CONTRIBUTING.md).

##### Breaking Changes

-   feat!: drop node 21 support in version ranges ([#&#8203;18729](https://github.com/vitejs/vite/issues/18729)) ([a384d8f](https://github.com/vitejs/vite/commit/a384d8fd39162190675abcfea31ba657383a3d03)), closes [#&#8203;18729](https://github.com/vitejs/vite/issues/18729)
-   fix(deps)!: update dependency dotenv-expand to v12 ([#&#8203;18697](https://github.com/vitejs/vite/issues/18697)) ([0c658de](https://github.com/vitejs/vite/commit/0c658de41f4c1576c526a8c48a8ea0a019c6311c)), closes [#&#8203;18697](https://github.com/vitejs/vite/issues/18697)
-   feat(html)!: support more asset sources ([#&#8203;11138](https://github.com/vitejs/vite/issues/11138)) ([8a7af50](https://github.com/vitejs/vite/commit/8a7af50b5ddf72f21098406e9668bc609b323899)), closes [#&#8203;11138](https://github.com/vitejs/vite/issues/11138)
-   feat(resolve)!: allow removing conditions ([#&#8203;18395](https://github.com/vitejs/vite/issues/18395)) ([d002e7d](https://github.com/vitejs/vite/commit/d002e7d05a0f23110f9185b39222819bcdfffc16)), closes [#&#8203;18395](https://github.com/vitejs/vite/issues/18395)
-   refactor!: remove fs.cachedChecks option ([#&#8203;18493](https://github.com/vitejs/vite/issues/18493)) ([94b0857](https://github.com/vitejs/vite/commit/94b085735372588d5f92c7f4a8cf68e8291f2db0)), closes [#&#8203;18493](https://github.com/vitejs/vite/issues/18493)
-   feat!: proxy bypass with WebSocket ([#&#8203;18070](https://github.com/vitejs/vite/issues/18070)) ([3c9836d](https://github.com/vitejs/vite/commit/3c9836d96f118ff5748916241bc3871a54247ad1)), closes [#&#8203;18070](https://github.com/vitejs/vite/issues/18070)
-   feat!: support `file://` resolution ([#&#8203;18422](https://github.com/vitejs/vite/issues/18422)) ([6a7e313](https://github.com/vitejs/vite/commit/6a7e313754dce5faa5cd7c1e2343448cd7f3a2a2)), closes [#&#8203;18422](https://github.com/vitejs/vite/issues/18422)
-   feat!: update to chokidar v4 ([#&#8203;18453](https://github.com/vitejs/vite/issues/18453)) ([192d555](https://github.com/vitejs/vite/commit/192d555f88bba7576e8a40cc027e8a11e006079c)), closes [#&#8203;18453](https://github.com/vitejs/vite/issues/18453)
-   feat(lib)!: use package name for css output file name ([#&#8203;18488](https://github.com/vitejs/vite/issues/18488)) ([61cbf6f](https://github.com/vitejs/vite/commit/61cbf6f2cfcd5afc91fe0a0ad56abfc36a32f1ab)), closes [#&#8203;18488](https://github.com/vitejs/vite/issues/18488)
-   fix(css)!: remove default import in ssr dev ([#&#8203;17922](https://github.com/vitejs/vite/issues/17922)) ([eccf663](https://github.com/vitejs/vite/commit/eccf663e35a17458425860895bb30b3b0613ea96)), closes [#&#8203;17922](https://github.com/vitejs/vite/issues/17922)
-   chore(deps)!: update postcss-load-config to v6 ([#&#8203;15235](https://github.com/vitejs/vite/issues/15235)) ([3a27f62](https://github.com/vitejs/vite/commit/3a27f627df278f6c9778a55f44cb347665b65204)), closes [#&#8203;15235](https://github.com/vitejs/vite/issues/15235)
-   feat(css)!: change default sass api to modern/modern-compiler ([#&#8203;17937](https://github.com/vitejs/vite/issues/17937)) ([d4e0442](https://github.com/vitejs/vite/commit/d4e0442f9d6adc70b72ea0713dc8abb4b1f75ae4)), closes [#&#8203;17937](https://github.com/vitejs/vite/issues/17937)
-   feat(css)!: load postcss config within workspace root only ([#&#8203;18440](https://github.com/vitejs/vite/issues/18440)) ([d23a493](https://github.com/vitejs/vite/commit/d23a493cc4b54a2e2b2c1337b3b1f0c9b1be311e)), closes [#&#8203;18440](https://github.com/vitejs/vite/issues/18440)
-   feat(json)!: add `json.stringify: 'auto'` and make that the default ([#&#8203;18303](https://github.com/vitejs/vite/issues/18303)) ([b80daa7](https://github.com/vitejs/vite/commit/b80daa7c0970645dca569d572892648f66c6799c)), closes [#&#8203;18303](https://github.com/vitejs/vite/issues/18303)
-   fix!: default `build.cssMinify` to `'esbuild'` for SSR ([#&#8203;15637](https://github.com/vitejs/vite/issues/15637)) ([f1d3bf7](https://github.com/vitejs/vite/commit/f1d3bf74cc7f12e759442fd7111d07e2c0262a67)), closes [#&#8203;15637](https://github.com/vitejs/vite/issues/15637)
-   chore(deps)!: migrate `fast-glob` to `tinyglobby` ([#&#8203;18243](https://github.com/vitejs/vite/issues/18243)) ([6f74a3a](https://github.com/vitejs/vite/commit/6f74a3a1b2469a24a86743d16267b0cc3653bc4a)), closes [#&#8203;18243](https://github.com/vitejs/vite/issues/18243)
-   refactor!: bump minimal terser version to 5.16.0 ([#&#8203;18209](https://github.com/vitejs/vite/issues/18209)) ([19ce525](https://github.com/vitejs/vite/commit/19ce525b974328e4668ad8c6540c2a5ea652795b)), closes [#&#8203;18209](https://github.com/vitejs/vite/issues/18209)
-   feat!: Environment API ([#&#8203;16471](https://github.com/vitejs/vite/issues/16471)) ([242f550](https://github.com/vitejs/vite/commit/242f550eb46c93896fca6b55495578921e29a8af)), closes [#&#8203;16471](https://github.com/vitejs/vite/issues/16471)

##### Features

-   feat: add support for .cur type ([#&#8203;18680](https://github.com/vitejs/vite/issues/18680)) ([5ec9eed](https://github.com/vitejs/vite/commit/5ec9eedc80bbf39a33b498198ba07ed1bd9cacc7)), closes [#&#8203;18680](https://github.com/vitejs/vite/issues/18680)
-   feat: enable HMR by default on ModuleRunner side ([#&#8203;18749](https://github.com/vitejs/vite/issues/18749)) ([4d2abc7](https://github.com/vitejs/vite/commit/4d2abc7bba95cf516ce7341d5d8f349d61b75224)), closes [#&#8203;18749](https://github.com/vitejs/vite/issues/18749)
-   feat: support `module-sync` condition when loading config if enabled ([#&#8203;18650](https://github.com/vitejs/vite/issues/18650)) ([cf5028d](https://github.com/vitejs/vite/commit/cf5028d4bf0a0d59b4a98323beaadc268204056b)), closes [#&#8203;18650](https://github.com/vitejs/vite/issues/18650)
-   feat: add `isSsrTargetWebWorker` flag to `configEnvironment` hook ([#&#8203;18620](https://github.com/vitejs/vite/issues/18620)) ([3f5fab0](https://github.com/vitejs/vite/commit/3f5fab04aa64c0e9b45068e842f033583b365de0)), closes [#&#8203;18620](https://github.com/vitejs/vite/issues/18620)
-   feat: add `ssr.resolve.mainFields` option ([#&#8203;18646](https://github.com/vitejs/vite/issues/18646)) ([a6f5f5b](https://github.com/vitejs/vite/commit/a6f5f5baca7a5d2064f5f4cb689764ad939fab4b)), closes [#&#8203;18646](https://github.com/vitejs/vite/issues/18646)
-   feat: expose default mainFields/conditions ([#&#8203;18648](https://github.com/vitejs/vite/issues/18648)) ([c12c653](https://github.com/vitejs/vite/commit/c12c653ca5fab354e0f71394e2fbe636dccf6b2f)), closes [#&#8203;18648](https://github.com/vitejs/vite/issues/18648)
-   feat: extended applyToEnvironment and perEnvironmentPlugin ([#&#8203;18544](https://github.com/vitejs/vite/issues/18544)) ([8fa70cd](https://github.com/vitejs/vite/commit/8fa70cdfa65ce8254ab8da8be0d92614126764c0)), closes [#&#8203;18544](https://github.com/vitejs/vite/issues/18544)
-   feat: show error when accessing variables not exposed in CJS build ([#&#8203;18649](https://github.com/vitejs/vite/issues/18649)) ([87c5502](https://github.com/vitejs/vite/commit/87c55022490d4710934c482abf5fbd4fcda9c3c9)), closes [#&#8203;18649](https://github.com/vitejs/vite/issues/18649)
-   feat(optimizer): allow users to specify their esbuild `platform` option ([#&#8203;18611](https://github.com/vitejs/vite/issues/18611)) ([0924879](https://github.com/vitejs/vite/commit/09248795ca79a7053b803af8977c3422f5cd5824)), closes [#&#8203;18611](https://github.com/vitejs/vite/issues/18611)
-   refactor: introduce `mergeWithDefaults` and organize how default values for config options are set ( ([0e1f437](https://github.com/vitejs/vite/commit/0e1f437d53683b57f0157ce3ff0b0f02acabb408)), closes [#&#8203;18550](https://github.com/vitejs/vite/issues/18550)
-   build: ignore cjs warning ([#&#8203;18660](https://github.com/vitejs/vite/issues/18660)) ([33b0d5a](https://github.com/vitejs/vite/commit/33b0d5a6ca18e9f7c27b0159decd84fee3859e09)), closes [#&#8203;18660](https://github.com/vitejs/vite/issues/18660)
-   feat: use a single transport for fetchModule and HMR support ([#&#8203;18362](https://github.com/vitejs/vite/issues/18362)) ([78dc490](https://github.com/vitejs/vite/commit/78dc4902ffef7f316e84d21648b04dc62dd0ae0a)), closes [#&#8203;18362](https://github.com/vitejs/vite/issues/18362)
-   feat(asset): add `?inline` and `?no-inline` queries to control inlining ([#&#8203;15454](https://github.com/vitejs/vite/issues/15454)) ([9162172](https://github.com/vitejs/vite/commit/9162172e039ae67ad4ee8dce18f04b7444f7d9de)), closes [#&#8203;15454](https://github.com/vitejs/vite/issues/15454)
-   feat(asset): inline svg in dev if within limit ([#&#8203;18581](https://github.com/vitejs/vite/issues/18581)) ([f08b146](https://github.com/vitejs/vite/commit/f08b1463db50f39b571faa871d05c92b10f3434c)), closes [#&#8203;18581](https://github.com/vitejs/vite/issues/18581)
-   feat: log complete config in debug mode ([#&#8203;18289](https://github.com/vitejs/vite/issues/18289)) ([04f6736](https://github.com/vitejs/vite/commit/04f6736fd7ac3da22141929c01a151f5a6fe4e45)), closes [#&#8203;18289](https://github.com/vitejs/vite/issues/18289)
-   feat(html): support `vite-ignore` attribute to opt-out of processing ([#&#8203;18494](https://github.com/vitejs/vite/issues/18494)) ([d951310](https://github.com/vitejs/vite/commit/d9513104e21175e1d23e0f614df55cd53291ab4e)), closes [#&#8203;18494](https://github.com/vitejs/vite/issues/18494)
-   feat: allow custom `console` in `createLogger` ([#&#8203;18379](https://github.com/vitejs/vite/issues/18379)) ([0c497d9](https://github.com/vitejs/vite/commit/0c497d9cb63bd4a6bb8e01c0e3b843890a239d23)), closes [#&#8203;18379](https://github.com/vitejs/vite/issues/18379)
-   feat: read `sec-fetch-dest` header to detect JS in transform ([#&#8203;9981](https://github.com/vitejs/vite/issues/9981)) ([e51dc40](https://github.com/vitejs/vite/commit/e51dc40b5907cf14d7aefaaf01fb8865a852ef15)), closes [#&#8203;9981](https://github.com/vitejs/vite/issues/9981)
-   feat(css): add more stricter typing of lightningcss ([#&#8203;18460](https://github.com/vitejs/vite/issues/18460)) ([b9b925e](https://github.com/vitejs/vite/commit/b9b925eb3f911ab63972124dc8ab0455449b925d)), closes [#&#8203;18460](https://github.com/vitejs/vite/issues/18460)
-   feat: add .git to deny list by default ([#&#8203;18382](https://github.com/vitejs/vite/issues/18382)) ([105ca12](https://github.com/vitejs/vite/commit/105ca12b34e466dc9de838643954a873ac1ce804)), closes [#&#8203;18382](https://github.com/vitejs/vite/issues/18382)
-   feat: add `environment::listen` ([#&#8203;18263](https://github.com/vitejs/vite/issues/18263)) ([4d5f51d](https://github.com/vitejs/vite/commit/4d5f51d13f92cc8224a028c27df12834a0667659)), closes [#&#8203;18263](https://github.com/vitejs/vite/issues/18263)
-   feat: enable dependencies discovery and pre-bundling in ssr environments ([#&#8203;18358](https://github.com/vitejs/vite/issues/18358)) ([9b21f69](https://github.com/vitejs/vite/commit/9b21f69405271f1b864fa934a96adcb0e1a2bc4d)), closes [#&#8203;18358](https://github.com/vitejs/vite/issues/18358)
-   feat: restrict characters useable for environment name ([#&#8203;18255](https://github.com/vitejs/vite/issues/18255)) ([9ab6180](https://github.com/vitejs/vite/commit/9ab6180d3a20be71eb7aedef000f8c4ae3591c40)), closes [#&#8203;18255](https://github.com/vitejs/vite/issues/18255)
-   feat: support arbitrary module namespace identifier imports from cjs deps ([#&#8203;18236](https://github.com/vitejs/vite/issues/18236)) ([4389a91](https://github.com/vitejs/vite/commit/4389a917f8f5e8e67222809fb7b166bb97f6d02c)), closes [#&#8203;18236](https://github.com/vitejs/vite/issues/18236)
-   feat: introduce RunnableDevEnvironment ([#&#8203;18190](https://github.com/vitejs/vite/issues/18190)) ([fb292f2](https://github.com/vitejs/vite/commit/fb292f226f988e80fee4f4aea878eb3d5d229022)), closes [#&#8203;18190](https://github.com/vitejs/vite/issues/18190)
-   feat: support `this.environment` in `options` and `onLog` hook ([#&#8203;18142](https://github.com/vitejs/vite/issues/18142)) ([7722c06](https://github.com/vitejs/vite/commit/7722c061646bc8587f55f560bfe06b2a9643639a)), closes [#&#8203;18142](https://github.com/vitejs/vite/issues/18142)
-   feat: expose `EnvironmentOptions` type ([#&#8203;18080](https://github.com/vitejs/vite/issues/18080)) ([35cf59c](https://github.com/vitejs/vite/commit/35cf59c9d53ef544eb5f2fe2f9ff4d6cb225e63b)), closes [#&#8203;18080](https://github.com/vitejs/vite/issues/18080)
-   feat(css): support es2023 build target for lightningcss ([#&#8203;17998](https://github.com/vitejs/vite/issues/17998)) ([1a76300](https://github.com/vitejs/vite/commit/1a76300cd16827f0640924fdc21747ce140c35fb)), closes [#&#8203;17998](https://github.com/vitejs/vite/issues/17998)

##### Performance

-   perf: reduce bundle size for `Object.keys(import.meta.glob(...))` / \`Object.values(import.meta.glob( ([ed99a2c](https://github.com/vitejs/vite/commit/ed99a2cd31e8d3c2b791885bcc4b188570539e45)), closes [#&#8203;18666](https://github.com/vitejs/vite/issues/18666)
-   perf(worker): inline worker without base64 ([#&#8203;18752](https://github.com/vitejs/vite/issues/18752)) ([90c66c9](https://github.com/vitejs/vite/commit/90c66c95aba3d2edd86637a77adc699f3fd6c1ff)), closes [#&#8203;18752](https://github.com/vitejs/vite/issues/18752)
-   perf: remove strip-ansi for a node built-in ([#&#8203;18630](https://github.com/vitejs/vite/issues/18630)) ([5182272](https://github.com/vitejs/vite/commit/5182272d52fc092a6219c8efe73ecb3f8e65a0b5)), closes [#&#8203;18630](https://github.com/vitejs/vite/issues/18630)
-   perf(css): skip style.css extraction if code-split css ([#&#8203;18470](https://github.com/vitejs/vite/issues/18470)) ([34fdb6b](https://github.com/vitejs/vite/commit/34fdb6bef558724330d2411b9666facef669b3a0)), closes [#&#8203;18470](https://github.com/vitejs/vite/issues/18470)
-   perf: call `module.enableCompileCache()` ([#&#8203;18323](https://github.com/vitejs/vite/issues/18323)) ([18f1dad](https://github.com/vitejs/vite/commit/18f1daddd125b07dcb8c32056ee0cec61bd65971)), closes [#&#8203;18323](https://github.com/vitejs/vite/issues/18323)
-   perf: use `crypto.hash` when available ([#&#8203;18317](https://github.com/vitejs/vite/issues/18317)) ([2a14884](https://github.com/vitejs/vite/commit/2a148844cf2382a5377b75066351f00207843352)), closes [#&#8203;18317](https://github.com/vitejs/vite/issues/18317)
-   build: reduce package size ([#&#8203;18517](https://github.com/vitejs/vite/issues/18517)) ([b83f60b](https://github.com/vitejs/vite/commit/b83f60b159f3b6f4a61db180fa03cc5b20bd110f)), closes [#&#8203;18517](https://github.com/vitejs/vite/issues/18517)

##### Fixes

-   fix: `createRunnableDevEnvironment` returns `RunnableDevEnvironment`, not `DevEnvironment` ([#&#8203;18673](https://github.com/vitejs/vite/issues/18673)) ([74221c3](https://github.com/vitejs/vite/commit/74221c391bffd61b9ef39b7c0f9ea2e405913a6f)), closes [#&#8203;18673](https://github.com/vitejs/vite/issues/18673)
-   fix: `getModulesByFile` should return a `serverModule` ([#&#8203;18715](https://github.com/vitejs/vite/issues/18715)) ([b80d5ec](https://github.com/vitejs/vite/commit/b80d5ecbbcc374bd8f32b2ed5ceb3cbfffaae77b)), closes [#&#8203;18715](https://github.com/vitejs/vite/issues/18715)
-   fix: catch error in full reload handler ([#&#8203;18713](https://github.com/vitejs/vite/issues/18713)) ([a10e741](https://github.com/vitejs/vite/commit/a10e7410656d3614cbfd07ba772776ff334a8d60)), closes [#&#8203;18713](https://github.com/vitejs/vite/issues/18713)
-   fix: display pre-transform error details ([#&#8203;18764](https://github.com/vitejs/vite/issues/18764)) ([554f45f](https://github.com/vitejs/vite/commit/554f45f4d820c57c0874ebe48ef2fddfafdd0750)), closes [#&#8203;18764](https://github.com/vitejs/vite/issues/18764)
-   fix: exit code on `SIGTERM` ([#&#8203;18741](https://github.com/vitejs/vite/issues/18741)) ([cc55e36](https://github.com/vitejs/vite/commit/cc55e36dd39fef134568f53acc66514cbb7175ea)), closes [#&#8203;18741](https://github.com/vitejs/vite/issues/18741)
-   fix: expose missing `InterceptorOptions` type ([#&#8203;18766](https://github.com/vitejs/vite/issues/18766)) ([6252c60](https://github.com/vitejs/vite/commit/6252c6035695365c93773fbe06a4b2a307e86368)), closes [#&#8203;18766](https://github.com/vitejs/vite/issues/18766)
-   fix: log error when send in module runner failed ([#&#8203;18753](https://github.com/vitejs/vite/issues/18753)) ([ba821bb](https://github.com/vitejs/vite/commit/ba821bb63eca6d8a9199ee2253ef2607375f5702)), closes [#&#8203;18753](https://github.com/vitejs/vite/issues/18753)
-   fix(client): overlay not appearing when multiple vite clients were loaded ([#&#8203;18647](https://github.com/vitejs/vite/issues/18647)) ([27d70b5](https://github.com/vitejs/vite/commit/27d70b5fa61f1c1a836d52809549cb57569f42a4)), closes [#&#8203;18647](https://github.com/vitejs/vite/issues/18647)
-   fix(deps): update all non-major dependencies ([#&#8203;18691](https://github.com/vitejs/vite/issues/18691)) ([f005461](https://github.com/vitejs/vite/commit/f005461ecce89ada21cb0c021f7af460b5479736)), closes [#&#8203;18691](https://github.com/vitejs/vite/issues/18691)
-   fix(html): fix inline proxy modules invalidation ([#&#8203;18696](https://github.com/vitejs/vite/issues/18696)) ([8ab04b7](https://github.com/vitejs/vite/commit/8ab04b70ada119fbca2fc5a53c36f233423febbe)), closes [#&#8203;18696](https://github.com/vitejs/vite/issues/18696)
-   fix(module-runner): make evaluator optional ([#&#8203;18672](https://github.com/vitejs/vite/issues/18672)) ([fd1283f](https://github.com/vitejs/vite/commit/fd1283fe27cc1a19b5c7d9d72664832e4daa1bbf)), closes [#&#8203;18672](https://github.com/vitejs/vite/issues/18672)
-   fix(optimizer): detect npm / yarn / pnpm dependency changes correctly ([#&#8203;17336](https://github.com/vitejs/vite/issues/17336)) ([#&#8203;18560](https://github.com/vitejs/vite/issues/18560)) ([818cf3e](https://github.com/vitejs/vite/commit/818cf3e7bf1b6c2dc56e7cd8f056bc1d185c2cd7)), closes [#&#8203;17336](https://github.com/vitejs/vite/issues/17336) [#&#8203;18560](https://github.com/vitejs/vite/issues/18560)
-   fix(optimizer): trigger onCrawlEnd after manual included deps are registered ([#&#8203;18733](https://github.com/vitejs/vite/issues/18733)) ([dc60410](https://github.com/vitejs/vite/commit/dc6041099ccd5767764fb8c99a169869bbd13f16)), closes [#&#8203;18733](https://github.com/vitejs/vite/issues/18733)
-   fix(optimizer): workaround firefox's false warning for no sources source map ([#&#8203;18665](https://github.com/vitejs/vite/issues/18665)) ([473424e](https://github.com/vitejs/vite/commit/473424ee8d6b743c1565bf0749deb5d9fbedcea7)), closes [#&#8203;18665](https://github.com/vitejs/vite/issues/18665)
-   fix(ssr): replace `__vite_ssr_identity__` with `(0, ...)` and inject `;` between statements ([#&#8203;18748](https://github.com/vitejs/vite/issues/18748)) ([94546be](https://github.com/vitejs/vite/commit/94546be18354a457bced5107aa31533b09e304ec)), closes [#&#8203;18748](https://github.com/vitejs/vite/issues/18748)
-   refactor: first character judgment replacement regexp ([#&#8203;18658](https://github.com/vitejs/vite/issues/18658)) ([58f1df3](https://github.com/vitejs/vite/commit/58f1df3288b0f9584bb413dd34b8d65671258f6f)), closes [#&#8203;18658](https://github.com/vitejs/vite/issues/18658)
-   refactor(resolve): remove `allowLinkedExternal` parameter from `tryNodeResolve` ([#&#8203;18670](https://github.com/vitejs/vite/issues/18670)) ([b74d363](https://github.com/vitejs/vite/commit/b74d3632693b6a829b4d1cdc2a9d4ba8234c093b)), closes [#&#8203;18670](https://github.com/vitejs/vite/issues/18670)
-   revert: use chokidar v3 ([#&#8203;18659](https://github.com/vitejs/vite/issues/18659)) ([49783da](https://github.com/vitejs/vite/commit/49783da298bc45f3f3c5ad4ce2fb1260ee8856bb)), closes [#&#8203;18659](https://github.com/vitejs/vite/issues/18659)
-   fix: cjs build for perEnvironmentState et al ([#&#8203;18656](https://github.com/vitejs/vite/issues/18656)) ([95c4b3c](https://github.com/vitejs/vite/commit/95c4b3c371dc7fb12c28cb1307f6f389887eb1e1)), closes [#&#8203;18656](https://github.com/vitejs/vite/issues/18656)
-   fix: include more modules to prefix-only module list ([#&#8203;18667](https://github.com/vitejs/vite/issues/18667)) ([5a2103f](https://github.com/vitejs/vite/commit/5a2103f0d486a7725c23c70710b11559c00e9b93)), closes [#&#8203;18667](https://github.com/vitejs/vite/issues/18667)
-   fix(html): externalize `rollup.external` scripts correctly ([#&#8203;18618](https://github.com/vitejs/vite/issues/18618)) ([55461b4](https://github.com/vitejs/vite/commit/55461b43329db6a5e737eab591163a8681ba9230)), closes [#&#8203;18618](https://github.com/vitejs/vite/issues/18618)
-   fix(ssr): format `ssrTransform` parse error  ([#&#8203;18644](https://github.com/vitejs/vite/issues/18644)) ([d9be921](https://github.com/vitejs/vite/commit/d9be92187cb17d740856af27d0ab60c84e04d58c)), closes [#&#8203;18644](https://github.com/vitejs/vite/issues/18644)
-   fix(ssr): preserve fetchModule error details ([#&#8203;18626](https://github.com/vitejs/vite/issues/18626)) ([866a433](https://github.com/vitejs/vite/commit/866a433a34ab2f6d2910506e781b346091de1b9e)), closes [#&#8203;18626](https://github.com/vitejs/vite/issues/18626)
-   fix: browser field should not be included by default for `consumer: 'server'` ([#&#8203;18575](https://github.com/vitejs/vite/issues/18575)) ([87b2347](https://github.com/vitejs/vite/commit/87b2347a13ea8ae8282f0f1e2233212c040bfed8)), closes [#&#8203;18575](https://github.com/vitejs/vite/issues/18575)
-   fix: use `server.perEnvironmentStartEndDuringDev` ([#&#8203;18549](https://github.com/vitejs/vite/issues/18549)) ([fe30349](https://github.com/vitejs/vite/commit/fe30349d350ef08bccd56404ccc3e6d6e0a2e156)), closes [#&#8203;18549](https://github.com/vitejs/vite/issues/18549)
-   fix(client): detect ws close correctly ([#&#8203;18548](https://github.com/vitejs/vite/issues/18548)) ([637d31b](https://github.com/vitejs/vite/commit/637d31bcc59d964e51f7969093cc369deee88ca1)), closes [#&#8203;18548](https://github.com/vitejs/vite/issues/18548)
-   fix(resolve): run ensureVersionQuery for SSR ([#&#8203;18591](https://github.com/vitejs/vite/issues/18591)) ([63207e5](https://github.com/vitejs/vite/commit/63207e5d0fbedc8ddddb7d1faaa8ea9a45a118d4)), closes [#&#8203;18591](https://github.com/vitejs/vite/issues/18591)
-   refactor(resolve): remove `environmentsOptions` parameter ([#&#8203;18590](https://github.com/vitejs/vite/issues/18590)) ([3ef0bf1](https://github.com/vitejs/vite/commit/3ef0bf19a3457c46395bdcb2201bbf32807d7231)), closes [#&#8203;18590](https://github.com/vitejs/vite/issues/18590)
-   fix: allow nested dependency selector to be used for `optimizeDeps.include` for SSR ([#&#8203;18506](https://github.com/vitejs/vite/issues/18506)) ([826c81a](https://github.com/vitejs/vite/commit/826c81a40bb25914d55cd2e96b548f1a2c384a19)), closes [#&#8203;18506](https://github.com/vitejs/vite/issues/18506)
-   fix: asset `new URL(,import.meta.url)` match ([#&#8203;18194](https://github.com/vitejs/vite/issues/18194)) ([5286a90](https://github.com/vitejs/vite/commit/5286a90a3c1b693384f99903582a1f70b7b44945)), closes [#&#8203;18194](https://github.com/vitejs/vite/issues/18194)
-   fix: close watcher if it's disabled ([#&#8203;18521](https://github.com/vitejs/vite/issues/18521)) ([85bd0e9](https://github.com/vitejs/vite/commit/85bd0e9b0dc637c7645f2b56f93071d6e1ec149c)), closes [#&#8203;18521](https://github.com/vitejs/vite/issues/18521)
-   fix(config): write temporary vite config to node_modules ([#&#8203;18509](https://github.com/vitejs/vite/issues/18509)) ([72eaef5](https://github.com/vitejs/vite/commit/72eaef5300d20b7163050461733c3208a4013e1e)), closes [#&#8203;18509](https://github.com/vitejs/vite/issues/18509)
-   fix(css): `cssCodeSplit` uses the current environment configuration ([#&#8203;18486](https://github.com/vitejs/vite/issues/18486)) ([eefe895](https://github.com/vitejs/vite/commit/eefe8957167681b85f0e1b07bc5feefa307cccb0)), closes [#&#8203;18486](https://github.com/vitejs/vite/issues/18486)
-   fix(json): don't `json.stringify` arrays ([#&#8203;18541](https://github.com/vitejs/vite/issues/18541)) ([fa50b03](https://github.com/vitejs/vite/commit/fa50b03390dae280293174f65f850522599b9ab7)), closes [#&#8203;18541](https://github.com/vitejs/vite/issues/18541)
-   fix(less): prevent rebasing `@import url(...)` ([#&#8203;17857](https://github.com/vitejs/vite/issues/17857)) ([aec5fdd](https://github.com/vitejs/vite/commit/aec5fdd72e3aeb2aa26796001b98f3f330be86d1)), closes [#&#8203;17857](https://github.com/vitejs/vite/issues/17857)
-   fix(lib): only resolve css bundle name if have styles ([#&#8203;18530](https://github.com/vitejs/vite/issues/18530)) ([5d6dc49](https://github.com/vitejs/vite/commit/5d6dc491b6bb78613694eaf686e2e305b71af5e1)), closes [#&#8203;18530](https://github.com/vitejs/vite/issues/18530)
-   fix(scss): improve error logs ([#&#8203;18522](https://github.com/vitejs/vite/issues/18522)) ([3194a6a](https://github.com/vitejs/vite/commit/3194a6a60714a3978f5e4b39d6223f32a8dc01ef)), closes [#&#8203;18522](https://github.com/vitejs/vite/issues/18522)
-   refactor: client-only top-level warmup ([#&#8203;18524](https://github.com/vitejs/vite/issues/18524)) ([a50ff60](https://github.com/vitejs/vite/commit/a50ff6000bca46a6fe429f2c3a98c486ea5ebc8e)), closes [#&#8203;18524](https://github.com/vitejs/vite/issues/18524)
-   fix: `define` in environment config was not working ([#&#8203;18515](https://github.com/vitejs/vite/issues/18515)) ([052799e](https://github.com/vitejs/vite/commit/052799e8939cfcdd7a7ff48daf45a766bf6cc546)), closes [#&#8203;18515](https://github.com/vitejs/vite/issues/18515)
-   fix: consider URLs with any protocol to be external ([#&#8203;17369](https://github.com/vitejs/vite/issues/17369)) ([a0336bd](https://github.com/vitejs/vite/commit/a0336bd5197bb4427251be4c975e30fb596c658f)), closes [#&#8203;17369](https://github.com/vitejs/vite/issues/17369)
-   fix: use picomatch to align with tinyglobby ([#&#8203;18503](https://github.com/vitejs/vite/issues/18503)) ([437795d](https://github.com/vitejs/vite/commit/437795db8307ce4491d066bcaaa5bd9432193773)), closes [#&#8203;18503](https://github.com/vitejs/vite/issues/18503)
-   fix(build): apply resolve.external/noExternal to server environments ([#&#8203;18495](https://github.com/vitejs/vite/issues/18495)) ([5a967cb](https://github.com/vitejs/vite/commit/5a967cb596c7c4b0548be1d9025bc1e34b36169a)), closes [#&#8203;18495](https://github.com/vitejs/vite/issues/18495)
-   fix(config): remove error if require resolve to esm ([#&#8203;18437](https://github.com/vitejs/vite/issues/18437)) ([f886f75](https://github.com/vitejs/vite/commit/f886f75396cdb5a43ec5377bbbaaffc0e8ae03e9)), closes [#&#8203;18437](https://github.com/vitejs/vite/issues/18437)
-   refactor: separate tsconfck caches per config in a weakmap ([#&#8203;17317](https://github.com/vitejs/vite/issues/17317)) ([b9b01d5](https://github.com/vitejs/vite/commit/b9b01d57fdaf5d291c78a8156e17b534c8c51eb4)), closes [#&#8203;17317](https://github.com/vitejs/vite/issues/17317)
-   fix: handle warmup glob hang ([#&#8203;18462](https://github.com/vitejs/vite/issues/18462)) ([409fa5c](https://github.com/vitejs/vite/commit/409fa5c9dee0e394bcdc3b111f5b2e4261131ca0)), closes [#&#8203;18462](https://github.com/vitejs/vite/issues/18462)
-   fix: return the same instance of ModuleNode for the same EnvironmentModuleNode ([#&#8203;18455](https://github.com/vitejs/vite/issues/18455)) ([5ead461](https://github.com/vitejs/vite/commit/5ead461b374d76ceb134063477eaf3f97fe3da97)), closes [#&#8203;18455](https://github.com/vitejs/vite/issues/18455)
-   fix: set scripts imported by HTML moduleSideEffects=true ([#&#8203;18411](https://github.com/vitejs/vite/issues/18411)) ([2ebe4b4](https://github.com/vitejs/vite/commit/2ebe4b44430dd311028f72520ac977bb202ce50b)), closes [#&#8203;18411](https://github.com/vitejs/vite/issues/18411)
-   fix: use websocket to test server liveness before client reload ([#&#8203;17891](https://github.com/vitejs/vite/issues/17891)) ([7f9f8c6](https://github.com/vitejs/vite/commit/7f9f8c6851d1eb49a72dcb6c134873148a2e81eb)), closes [#&#8203;17891](https://github.com/vitejs/vite/issues/17891)
-   fix(css): `cssCodeSplit` in `environments.xxx.build` is invalid ([#&#8203;18464](https://github.com/vitejs/vite/issues/18464)) ([993e71c](https://github.com/vitejs/vite/commit/993e71c4cb227bd8c347b918f52ccd83f85a645a)), closes [#&#8203;18464](https://github.com/vitejs/vite/issues/18464)
-   fix(css): make sass types work with sass-embedded ([#&#8203;18459](https://github.com/vitejs/vite/issues/18459)) ([89f8303](https://github.com/vitejs/vite/commit/89f8303e727791aa7be6f35833a708b6a50e9120)), closes [#&#8203;18459](https://github.com/vitejs/vite/issues/18459)
-   fix(deps): update all non-major dependencies ([#&#8203;18484](https://github.com/vitejs/vite/issues/18484)) ([2ec12df](https://github.com/vitejs/vite/commit/2ec12df98d07eb4c986737e86a4a9f8066724658)), closes [#&#8203;18484](https://github.com/vitejs/vite/issues/18484)
-   fix(manifest): non entry CSS chunk src was wrong ([#&#8203;18133](https://github.com/vitejs/vite/issues/18133)) ([c148676](https://github.com/vitejs/vite/commit/c148676c90dc4823bc6bdeb8ba1e36386c5d9654)), closes [#&#8203;18133](https://github.com/vitejs/vite/issues/18133)
-   fix(module-runner): delay function eval until module runner instantiation ([#&#8203;18480](https://github.com/vitejs/vite/issues/18480)) ([472afbd](https://github.com/vitejs/vite/commit/472afbd010db3f1c7a59826c7bf4067191b7f48a)), closes [#&#8203;18480](https://github.com/vitejs/vite/issues/18480)
-   fix(plugins): noop if config hook returns same config reference ([#&#8203;18467](https://github.com/vitejs/vite/issues/18467)) ([bd540d5](https://github.com/vitejs/vite/commit/bd540d52eb609ca12dad8e2f3fe8011821bda878)), closes [#&#8203;18467](https://github.com/vitejs/vite/issues/18467)
-   fix: add typing to `CSSOptions.preprocessorOptions` ([#&#8203;18001](https://github.com/vitejs/vite/issues/18001)) ([7eeb6f2](https://github.com/vitejs/vite/commit/7eeb6f2f97abf5dfc71c225b9cff9779baf2ed2f)), closes [#&#8203;18001](https://github.com/vitejs/vite/issues/18001)
-   fix(dev): prevent double URL encoding in server.open on macOS ([#&#8203;18443](https://github.com/vitejs/vite/issues/18443)) ([56b7176](https://github.com/vitejs/vite/commit/56b71768f3ee498962fba898804086299382bb59)), closes [#&#8203;18443](https://github.com/vitejs/vite/issues/18443)
-   fix(preview): set resolvedUrls null after close ([#&#8203;18445](https://github.com/vitejs/vite/issues/18445)) ([65014a3](https://github.com/vitejs/vite/commit/65014a32ef618619c5a34b729d67340d9253bdd5)), closes [#&#8203;18445](https://github.com/vitejs/vite/issues/18445)
-   fix(ssr): inject identity function at the top ([#&#8203;18449](https://github.com/vitejs/vite/issues/18449)) ([0ab20a3](https://github.com/vitejs/vite/commit/0ab20a3ee26eacf302415b3087732497d0a2f358)), closes [#&#8203;18449](https://github.com/vitejs/vite/issues/18449)
-   fix(ssr): preserve source maps for hoisted imports (fix [#&#8203;16355](https://github.com/vitejs/vite/issues/16355)) ([#&#8203;16356](https://github.com/vitejs/vite/issues/16356)) ([8e382a6](https://github.com/vitejs/vite/commit/8e382a6a1fed2cd41051b81f9cd9c94b484352a5)), closes [#&#8203;16355](https://github.com/vitejs/vite/issues/16355) [#&#8203;16356](https://github.com/vitejs/vite/issues/16356)
-   fix: augment hash for CSS files to prevent chromium erroring by loading previous files ([#&#8203;18367](https://github.com/vitejs/vite/issues/18367)) ([a569f42](https://github.com/vitejs/vite/commit/a569f42ee93229308be7a327b7a71e79f3d58b01)), closes [#&#8203;18367](https://github.com/vitejs/vite/issues/18367)
-   fix: more robust plugin.sharedDuringBuild ([#&#8203;18351](https://github.com/vitejs/vite/issues/18351)) ([47b1270](https://github.com/vitejs/vite/commit/47b12706ce2d0c009d6078a61e16e81a04c9f49c)), closes [#&#8203;18351](https://github.com/vitejs/vite/issues/18351)
-   fix(cli): `--watch` should not override `build.watch` options ([#&#8203;18390](https://github.com/vitejs/vite/issues/18390)) ([b2965c8](https://github.com/vitejs/vite/commit/b2965c8e9f74410bc8047a05528c74b68a3856d7)), closes [#&#8203;18390](https://github.com/vitejs/vite/issues/18390)
-   fix(css): don't transform sass function calls with namespace ([#&#8203;18414](https://github.com/vitejs/vite/issues/18414)) ([dbb2604](https://github.com/vitejs/vite/commit/dbb260499f894d495bcff3dcdf5635d015a2f563)), closes [#&#8203;18414](https://github.com/vitejs/vite/issues/18414)
-   fix(deps): update `open` dependency to 10.1.0 ([#&#8203;18349](https://github.com/vitejs/vite/issues/18349)) ([5cca4bf](https://github.com/vitejs/vite/commit/5cca4bfd3202c7aea690acf63f60bfe57fa165de)), closes [#&#8203;18349](https://github.com/vitejs/vite/issues/18349)
-   fix(deps): update all non-major dependencies ([#&#8203;18345](https://github.com/vitejs/vite/issues/18345)) ([5552583](https://github.com/vitejs/vite/commit/5552583a2272cd4208b30ad60e99d984e34645f0)), closes [#&#8203;18345](https://github.com/vitejs/vite/issues/18345)
-   fix(ssr): `this` in exported function should be `undefined` ([#&#8203;18329](https://github.com/vitejs/vite/issues/18329)) ([bae6a37](https://github.com/vitejs/vite/commit/bae6a37628c4870f3db92351e8af2a7b4a07e248)), closes [#&#8203;18329](https://github.com/vitejs/vite/issues/18329)
-   fix(worker): rewrite rollup `output.format` with `worker.format` on worker build error ([#&#8203;18165](https://github.com/vitejs/vite/issues/18165)) ([dc82334](https://github.com/vitejs/vite/commit/dc823347bb857a9f63eee7e027a52236d7e331e0)), closes [#&#8203;18165](https://github.com/vitejs/vite/issues/18165)
-   fix: `injectQuery` double encoding ([#&#8203;18246](https://github.com/vitejs/vite/issues/18246)) ([2c5f948](https://github.com/vitejs/vite/commit/2c5f948d0646f6a0237570ab5d36b06d31cb94c9)), closes [#&#8203;18246](https://github.com/vitejs/vite/issues/18246)
-   fix: add position to import analysis resolve exception ([#&#8203;18344](https://github.com/vitejs/vite/issues/18344)) ([0fe95d4](https://github.com/vitejs/vite/commit/0fe95d4a71930cf55acd628efef59e6eae0f77f7)), closes [#&#8203;18344](https://github.com/vitejs/vite/issues/18344)
-   fix: destroy the runner when runnable environment is closed ([#&#8203;18282](https://github.com/vitejs/vite/issues/18282)) ([5212d09](https://github.com/vitejs/vite/commit/5212d09579a82bc09b149c77e996d0e5c3972455)), closes [#&#8203;18282](https://github.com/vitejs/vite/issues/18282)
-   fix: handle yarn command fail when root does not exist ([#&#8203;18141](https://github.com/vitejs/vite/issues/18141)) ([460aaff](https://github.com/vitejs/vite/commit/460aaffbf134a9eda6e092a564afc2eeebf8f935)), closes [#&#8203;18141](https://github.com/vitejs/vite/issues/18141)
-   fix: make it easier to configure environment runner ([#&#8203;18273](https://github.com/vitejs/vite/issues/18273)) ([fb35a78](https://github.com/vitejs/vite/commit/fb35a7800e21ed2c6f9d0f843898afa1fcc87795)), closes [#&#8203;18273](https://github.com/vitejs/vite/issues/18273)
-   fix(assets): make srcset parsing HTML spec compliant ([#&#8203;16323](https://github.com/vitejs/vite/issues/16323)) ([#&#8203;18242](https://github.com/vitejs/vite/issues/18242)) ([0e6d4a5](https://github.com/vitejs/vite/commit/0e6d4a5e23cdfb2ec433f687e455b9827269527c)), closes [#&#8203;16323](https://github.com/vitejs/vite/issues/16323) [#&#8203;18242](https://github.com/vitejs/vite/issues/18242)
-   fix(css): dont remove JS chunk for pure CSS chunk when the export is used ([#&#8203;18307](https://github.com/vitejs/vite/issues/18307)) ([889bfc0](https://github.com/vitejs/vite/commit/889bfc0ada6d6cd356bb7a92efdce96298f82fef)), closes [#&#8203;18307](https://github.com/vitejs/vite/issues/18307)
-   fix(deps): bump tsconfck ([#&#8203;18322](https://github.com/vitejs/vite/issues/18322)) ([67783b2](https://github.com/vitejs/vite/commit/67783b2d5513e013bf74844186eb9b2b70d17d5c)), closes [#&#8203;18322](https://github.com/vitejs/vite/issues/18322)
-   fix(deps): update all non-major dependencies ([#&#8203;18292](https://github.com/vitejs/vite/issues/18292)) ([5cac054](https://github.com/vitejs/vite/commit/5cac0544dca2764f0114aac38e9922a0c13d7ef4)), closes [#&#8203;18292](https://github.com/vitejs/vite/issues/18292)
-   fix(hmr): don't try to rewrite imports for direct CSS soft invalidation ([#&#8203;18252](https://github.com/vitejs/vite/issues/18252)) ([a03bb0e](https://github.com/vitejs/vite/commit/a03bb0e2ba35af314c57fc98600bb76566592239)), closes [#&#8203;18252](https://github.com/vitejs/vite/issues/18252)
-   fix(middleware-mode): call all hot.listen when server restart ([#&#8203;18261](https://github.com/vitejs/vite/issues/18261)) ([007773b](https://github.com/vitejs/vite/commit/007773b550e7c6bcaeb8d88970fd6dfe999d5a4a)), closes [#&#8203;18261](https://github.com/vitejs/vite/issues/18261)
-   fix(optimizer): don't externalize transitive dep package name with asset extension ([#&#8203;18152](https://github.com/vitejs/vite/issues/18152)) ([fafc7e2](https://github.com/vitejs/vite/commit/fafc7e28d3395292fbc2f2355417dcc15871ab1e)), closes [#&#8203;18152](https://github.com/vitejs/vite/issues/18152)
-   fix(resolve): fix resolve cache key for external conditions ([#&#8203;18332](https://github.com/vitejs/vite/issues/18332)) ([93d286c](https://github.com/vitejs/vite/commit/93d286c4c1af0b379002a6ff495e82bb87acd65c)), closes [#&#8203;18332](https://github.com/vitejs/vite/issues/18332)
-   fix(resolve): fix resolve cache to consider `conditions` and more ([#&#8203;18302](https://github.com/vitejs/vite/issues/18302)) ([2017a33](https://github.com/vitejs/vite/commit/2017a330f5576dfc9db1538e0b899a1776cd100a)), closes [#&#8203;18302](https://github.com/vitejs/vite/issues/18302)
-   fix(types): add more overload to `defineConfig` ([#&#8203;18299](https://github.com/vitejs/vite/issues/18299)) ([94e34cf](https://github.com/vitejs/vite/commit/94e34cf1dfe6fdb331b6508e830b2cc446000aac)), closes [#&#8203;18299](https://github.com/vitejs/vite/issues/18299)
-   fix: asset import should skip handling data URIs ([#&#8203;18163](https://github.com/vitejs/vite/issues/18163)) ([70813c7](https://github.com/vitejs/vite/commit/70813c7f05fc9a45d102a53514ecac23831e6d6b)), closes [#&#8203;18163](https://github.com/vitejs/vite/issues/18163)
-   fix: cache the runnable environment module runner ([#&#8203;18215](https://github.com/vitejs/vite/issues/18215)) ([95020ab](https://github.com/vitejs/vite/commit/95020ab49e12d143262859e095025cf02423c1d9)), closes [#&#8203;18215](https://github.com/vitejs/vite/issues/18215)
-   fix: call `this.hot.close` for non-ws HotChannel ([#&#8203;18212](https://github.com/vitejs/vite/issues/18212)) ([bad0ccc](https://github.com/vitejs/vite/commit/bad0cccee80c02fa309f274220f6d324d03c3b19)), closes [#&#8203;18212](https://github.com/vitejs/vite/issues/18212)
-   fix: close HotChannel on environment close ([#&#8203;18206](https://github.com/vitejs/vite/issues/18206)) ([2d148e3](https://github.com/vitejs/vite/commit/2d148e347e8fbcc6f0e4e627a20acc81d9ced3e0)), closes [#&#8203;18206](https://github.com/vitejs/vite/issues/18206)
-   fix: require serialization for `HMRConnection.send` on implementation side ([#&#8203;18186](https://github.com/vitejs/vite/issues/18186)) ([9470011](https://github.com/vitejs/vite/commit/9470011570503a917021915c47e6a2f36aae16b5)), closes [#&#8203;18186](https://github.com/vitejs/vite/issues/18186)
-   fix: use `config.consumer` instead of `options?.ssr` / `config.build.ssr` ([#&#8203;18140](https://github.com/vitejs/vite/issues/18140)) ([21ec1ce](https://github.com/vitejs/vite/commit/21ec1ce7f041efa5cd781924f7bc536ab406a197)), closes [#&#8203;18140](https://github.com/vitejs/vite/issues/18140)
-   fix(config): treat all files as ESM on deno ([#&#8203;18081](https://github.com/vitejs/vite/issues/18081)) ([c1ed8a5](https://github.com/vitejs/vite/commit/c1ed8a595a02ec7f8f5a8d23f97b2f21d3834ab1)), closes [#&#8203;18081](https://github.com/vitejs/vite/issues/18081)
-   fix(css): ensure sass compiler initialized only once ([#&#8203;18128](https://github.com/vitejs/vite/issues/18128)) ([4cc5322](https://github.com/vitejs/vite/commit/4cc53224e9b207aa6a5a111e40ed0a0464cf37f4)), closes [#&#8203;18128](https://github.com/vitejs/vite/issues/18128)
-   fix(css): fix lightningcss dep url resolution with custom root ([#&#8203;18125](https://github.com/vitejs/vite/issues/18125)) ([eb08f60](https://github.com/vitejs/vite/commit/eb08f605ddadef99a5d68f55de143e3e47c91618)), closes [#&#8203;18125](https://github.com/vitejs/vite/issues/18125)
-   fix(css): fix missing source file warning with sass modern api custom importer ([#&#8203;18113](https://github.com/vitejs/vite/issues/18113)) ([d7763a5](https://github.com/vitejs/vite/commit/d7763a5615a238cb1b5dceb7bdfc4aac7678fb0a)), closes [#&#8203;18113](https://github.com/vitejs/vite/issues/18113)
-   fix(data-uri): only match ids starting with `data:` ([#&#8203;18241](https://github.com/vitejs/vite/issues/18241)) ([ec0efe8](https://github.com/vitejs/vite/commit/ec0efe8a06d0271ef0154f38fb9beabcd4b1bd89)), closes [#&#8203;18241](https://github.com/vitejs/vite/issues/18241)
-   fix(deps): update all non-major dependencies ([#&#8203;18170](https://github.com/vitejs/vite/issues/18170)) ([c8aea5a](https://github.com/vitejs/vite/commit/c8aea5ae0af90dc6796ef3bdd612d1eb819f157b)), closes [#&#8203;18170](https://github.com/vitejs/vite/issues/18170)
-   fix(deps): upgrade rollup 4.22.4+ to ensure avoiding XSS ([#&#8203;18180](https://github.com/vitejs/vite/issues/18180)) ([ea1d0b9](https://github.com/vitejs/vite/commit/ea1d0b9af9b28b57166d4ca67bece21650221a04)), closes [#&#8203;18180](https://github.com/vitejs/vite/issues/18180)
-   fix(html): make build-html plugin work with `sharedPlugins` ([#&#8203;18214](https://github.com/vitejs/vite/issues/18214)) ([34041b9](https://github.com/vitejs/vite/commit/34041b9d8ea39aa9138d0c2417bfbe39cc9aabdc)), closes [#&#8203;18214](https://github.com/vitejs/vite/issues/18214)
-   fix(mixedModuleGraph): handle undefined id in getModulesByFile ([#&#8203;18201](https://github.com/vitejs/vite/issues/18201)) ([768a50f](https://github.com/vitejs/vite/commit/768a50f7ac668dbf876feef557d8c0f8ff32b8ff)), closes [#&#8203;18201](https://github.com/vitejs/vite/issues/18201)
-   fix(optimizer): re-optimize when changing config `webCompatible` ([#&#8203;18221](https://github.com/vitejs/vite/issues/18221)) ([a44b0a2](https://github.com/vitejs/vite/commit/a44b0a2690812788aaaba00fd3acd2c6fa36669b)), closes [#&#8203;18221](https://github.com/vitejs/vite/issues/18221)
-   fix(ssr): fix source map remapping with multiple sources ([#&#8203;18150](https://github.com/vitejs/vite/issues/18150)) ([e003a2c](https://github.com/vitejs/vite/commit/e003a2ca73b04648e14ebf40f3616838e2da3d6d)), closes [#&#8203;18150](https://github.com/vitejs/vite/issues/18150)
-   fix(vite): refactor "module cache" to "evaluated modules", pass down module to "runInlinedModule" (# ([e83beff](https://github.com/vitejs/vite/commit/e83beff596072f9c7a42f6e2410f154668981d71)), closes [#&#8203;18092](https://github.com/vitejs/vite/issues/18092)
-   fix: avoid DOM Clobbering gadget in `getRelativeUrlFromDocument` ([#&#8203;18115](https://github.com/vitejs/vite/issues/18115)) ([ade1d89](https://github.com/vitejs/vite/commit/ade1d89660e17eedfd35652165b0c26905259fad)), closes [#&#8203;18115](https://github.com/vitejs/vite/issues/18115)
-   fix: fs raw query ([#&#8203;18112](https://github.com/vitejs/vite/issues/18112)) ([9d2413c](https://github.com/vitejs/vite/commit/9d2413c8b64bfb1dfd953340b4e1b5972d5440aa)), closes [#&#8203;18112](https://github.com/vitejs/vite/issues/18112)
-   fix(preload): throw error preloading module as well ([#&#8203;18098](https://github.com/vitejs/vite/issues/18098)) ([ba56cf4](https://github.com/vitejs/vite/commit/ba56cf43b5480f8519349f7d7fe60718e9af5f1a)), closes [#&#8203;18098](https://github.com/vitejs/vite/issues/18098)
-   fix: allow scanning exports from `script module` in svelte ([#&#8203;18063](https://github.com/vitejs/vite/issues/18063)) ([7d699aa](https://github.com/vitejs/vite/commit/7d699aa98155cbf281e3f7f6a8796dcb3b4b0fd6)), closes [#&#8203;18063](https://github.com/vitejs/vite/issues/18063)
-   fix: ensure req.url matches moduleByEtag URL to avoid incorrect 304 ([#&#8203;17997](https://github.com/vitejs/vite/issues/17997)) ([abf04c3](https://github.com/vitejs/vite/commit/abf04c3a84f4d9962a6f9697ca26cd639fa76e87)), closes [#&#8203;17997](https://github.com/vitejs/vite/issues/17997)
-   fix: incorrect environment consumer option resolution ([#&#8203;18079](https://github.com/vitejs/vite/issues/18079)) ([0e3467e](https://github.com/vitejs/vite/commit/0e3467e503aef45119260fe75b399b26f7a80b66)), closes [#&#8203;18079](https://github.com/vitejs/vite/issues/18079)
-   fix: store backwards compatible `ssrModule` and `ssrError` ([#&#8203;18031](https://github.com/vitejs/vite/issues/18031)) ([cf8ced5](https://github.com/vitejs/vite/commit/cf8ced56ea4932e917e2c4ef3d04a87f0ab4f20b)), closes [#&#8203;18031](https://github.com/vitejs/vite/issues/18031)
-   fix(build): declare `preload-helper` has no side effects ([#&#8203;18057](https://github.com/vitejs/vite/issues/18057)) ([587ad7b](https://github.com/vitejs/vite/commit/587ad7b17beba50279eaf46b06c5bf5559c4f36e)), closes [#&#8203;18057](https://github.com/vitejs/vite/issues/18057)
-   fix(css): fallback to mainthread if logger or pkgImporter option is set for sass ([#&#8203;18071](https://github.com/vitejs/vite/issues/18071)) ([d81dc59](https://github.com/vitejs/vite/commit/d81dc59473b1053bf48c45a9d45f87ee6ecf2c02)), closes [#&#8203;18071](https://github.com/vitejs/vite/issues/18071)
-   fix(dynamicImportVars): correct glob pattern for paths with parentheses ([#&#8203;17940](https://github.com/vitejs/vite/issues/17940)) ([2a391a7](https://github.com/vitejs/vite/commit/2a391a7df6e5b4a8d9e8313fba7ddf003df41e12)), closes [#&#8203;17940](https://github.com/vitejs/vite/issues/17940)
-   fix(html): escape html attribute ([#&#8203;18067](https://github.com/vitejs/vite/issues/18067)) ([5983f36](https://github.com/vitejs/vite/commit/5983f366d499f74d473097154bbbcc8e51476dc4)), closes [#&#8203;18067](https://github.com/vitejs/vite/issues/18067)
-   fix(preload): allow ignoring dep errors ([#&#8203;18046](https://github.com/vitejs/vite/issues/18046)) ([3fb2889](https://github.com/vitejs/vite/commit/3fb28896d916e03cef1b5bd6877ac184c7ec8003)), closes [#&#8203;18046](https://github.com/vitejs/vite/issues/18046)

##### Chore

-   chore: add 5.4.x changelogs ([#&#8203;18768](https://github.com/vitejs/vite/issues/18768)) ([26b58c8](https://github.com/vitejs/vite/commit/26b58c8130f232dcd4e839a337bbe478352f23ab)), closes [#&#8203;18768](https://github.com/vitejs/vite/issues/18768)
-   chore: add some comments about mimes ([#&#8203;18705](https://github.com/vitejs/vite/issues/18705)) ([f07e9b9](https://github.com/vitejs/vite/commit/f07e9b9d01d790c727edc2497304f07b1ef5d28f)), closes [#&#8203;18705](https://github.com/vitejs/vite/issues/18705)
-   chore(deps): update all non-major dependencies ([#&#8203;18746](https://github.com/vitejs/vite/issues/18746)) ([0ad16e9](https://github.com/vitejs/vite/commit/0ad16e92d57453d9e5392c90fd06bda947be9de6)), closes [#&#8203;18746](https://github.com/vitejs/vite/issues/18746)
-   docs: rename `HotUpdateContext` to `HotUpdateOptions` ([#&#8203;18718](https://github.com/vitejs/vite/issues/18718)) ([824c347](https://github.com/vitejs/vite/commit/824c347fa21aaf5bbf811994385b790db4287ab0)), closes [#&#8203;18718](https://gith…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat: hmr p3-minor-bug An edge case that only affects very specific usage (priority)
Projects
None yet
5 participants