diff --git a/packages/client/package.json b/packages/client/package.json
index 401227d1d6..e4f5401cc5 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -83,7 +83,7 @@
 		"typescript": "5.5.4",
 		"unicode-emoji-json": "0.6.0",
 		"uuid": "10.0.0",
-		"vite": "5.3.5",
+		"vite": "5.4.0",
 		"vite-plugin-compression": "0.5.1",
 		"vue": "3.4.36",
 		"vue-draggable-plus": "0.5.3",
diff --git a/packages/sw/package.json b/packages/sw/package.json
index dbe160779d..448a828778 100644
--- a/packages/sw/package.json
+++ b/packages/sw/package.json
@@ -12,7 +12,7 @@
 	"devDependencies": {
 		"firefish-js": "workspace:*",
 		"idb-keyval": "6.2.1",
-		"vite": "5.3.5",
+		"vite": "5.4.0",
 		"vite-plugin-compression": "0.5.1"
 	}
 }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fc9e396f44..0f2b0e505c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -552,7 +552,7 @@ importers:
         version: 10.0.0
       '@vitejs/plugin-vue':
         specifier: 5.1.2
-        version: 5.1.2(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.36(typescript@5.5.4))
+        version: 5.1.2(vite@5.4.0(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.36(typescript@5.5.4))
       '@vue/runtime-core':
         specifier: 3.4.36
         version: 3.4.36
@@ -701,11 +701,11 @@ importers:
         specifier: 10.0.0
         version: 10.0.0
       vite:
-        specifier: 5.3.5
-        version: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)
+        specifier: 5.4.0
+        version: 5.4.0(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)
       vite-plugin-compression:
         specifier: 0.5.1
-        version: 0.5.1(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))
+        version: 0.5.1(vite@5.4.0(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))
       vue:
         specifier: 3.4.36
         version: 3.4.36(typescript@5.5.4)
@@ -774,11 +774,11 @@ importers:
         specifier: 6.2.1
         version: 6.2.1
       vite:
-        specifier: 5.3.5
-        version: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)
+        specifier: 5.4.0
+        version: 5.4.0(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)
       vite-plugin-compression:
         specifier: 0.5.1
-        version: 0.5.1(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))
+        version: 0.5.1(vite@5.4.0(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))
 
 packages:
 
@@ -6589,8 +6589,8 @@ packages:
     peerDependencies:
       vite: '>=2.0.0'
 
-  vite@5.3.5:
-    resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==}
+  vite@5.4.0:
+    resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==}
     engines: {node: ^18.0.0 || >=20.0.0}
     hasBin: true
     peerDependencies:
@@ -6598,6 +6598,7 @@ packages:
       less: '*'
       lightningcss: ^1.21.0
       sass: '*'
+      sass-embedded: '*'
       stylus: '*'
       sugarss: '*'
       terser: ^5.4.0
@@ -6610,6 +6611,8 @@ packages:
         optional: true
       sass:
         optional: true
+      sass-embedded:
+        optional: true
       stylus:
         optional: true
       sugarss:
@@ -8699,9 +8702,9 @@ snapshots:
     dependencies:
       '@types/yargs-parser': 21.0.3
 
-  '@vitejs/plugin-vue@5.1.2(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.36(typescript@5.5.4))':
+  '@vitejs/plugin-vue@5.1.2(vite@5.4.0(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.36(typescript@5.5.4))':
     dependencies:
-      vite: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)
+      vite: 5.4.0(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)
       vue: 3.4.36(typescript@5.5.4)
 
   '@volar/language-core@2.4.0-alpha.18':
@@ -12959,16 +12962,16 @@ snapshots:
       core-util-is: 1.0.2
       extsprintf: 1.3.0
 
-  vite-plugin-compression@0.5.1(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)):
+  vite-plugin-compression@0.5.1(vite@5.4.0(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)):
     dependencies:
       chalk: 4.1.2
       debug: 4.3.6
       fs-extra: 10.1.0
-      vite: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)
+      vite: 5.4.0(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)
     transitivePeerDependencies:
       - supports-color
 
-  vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3):
+  vite@5.4.0(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3):
     dependencies:
       esbuild: 0.21.5
       postcss: 8.4.40