diff --git a/docs/guide/features.md b/docs/guide/features.md
index f7d363f00ec88c..383735ba0f8b4e 100644
--- a/docs/guide/features.md
+++ b/docs/guide/features.md
@@ -38,7 +38,13 @@ Note that because `esbuild` only performs transpilation without type information
### Client Types
-Vite's default types are for its Node.js API. To shim the environment of client side code in a Vite application, add `vite/client` to `compilerOptions.types` of your `tsconfig`:
+Vite's default types are for its Node.js API. To shim the environment of client side code in a Vite application, add a `d.ts` declaration file:
+
+```typescript
+///
+```
+
+Also, you can add `vite/client` to `compilerOptions.types` of your `tsconfig`:
```json
{
diff --git a/packages/create-app/template-lit-element-ts/src/vite-env.d.ts b/packages/create-app/template-lit-element-ts/src/vite-env.d.ts
new file mode 100644
index 00000000000000..11f02fe2a0061d
--- /dev/null
+++ b/packages/create-app/template-lit-element-ts/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/packages/create-app/template-lit-element-ts/tsconfig.json b/packages/create-app/template-lit-element-ts/tsconfig.json
index ce99226ee4f24c..d17e916d3feb33 100644
--- a/packages/create-app/template-lit-element-ts/tsconfig.json
+++ b/packages/create-app/template-lit-element-ts/tsconfig.json
@@ -2,7 +2,6 @@
"compilerOptions": {
"module": "esnext",
"lib": ["es2017", "dom", "dom.iterable"],
- "types": ["vite/client"],
"declaration": true,
"emitDeclarationOnly": true,
"outDir": "./types",
diff --git a/packages/create-app/template-preact-ts/src/vite-env.d.ts b/packages/create-app/template-preact-ts/src/vite-env.d.ts
new file mode 100644
index 00000000000000..11f02fe2a0061d
--- /dev/null
+++ b/packages/create-app/template-preact-ts/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/packages/create-app/template-preact-ts/tsconfig.json b/packages/create-app/template-preact-ts/tsconfig.json
index a748ee4d112a8c..84c196e7a3ff0f 100644
--- a/packages/create-app/template-preact-ts/tsconfig.json
+++ b/packages/create-app/template-preact-ts/tsconfig.json
@@ -2,7 +2,6 @@
"compilerOptions": {
"target": "ESNext",
"lib": ["DOM", "DOM.Iterable", "ESNext"],
- "types": ["vite/client"],
"allowJs": false,
"skipLibCheck": false,
"esModuleInterop": false,
diff --git a/packages/create-app/template-react-ts/src/vite-env.d.ts b/packages/create-app/template-react-ts/src/vite-env.d.ts
new file mode 100644
index 00000000000000..11f02fe2a0061d
--- /dev/null
+++ b/packages/create-app/template-react-ts/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/packages/create-app/template-react-ts/tsconfig.json b/packages/create-app/template-react-ts/tsconfig.json
index 51efd413cde175..013e6c54f0e341 100644
--- a/packages/create-app/template-react-ts/tsconfig.json
+++ b/packages/create-app/template-react-ts/tsconfig.json
@@ -2,7 +2,6 @@
"compilerOptions": {
"target": "ESNext",
"lib": ["DOM", "DOM.Iterable", "ESNext"],
- "types": ["vite/client"],
"allowJs": false,
"skipLibCheck": false,
"esModuleInterop": false,
diff --git a/packages/create-app/template-svelte-ts/src/global.d.ts b/packages/create-app/template-svelte-ts/src/vite-env.d.ts
similarity index 100%
rename from packages/create-app/template-svelte-ts/src/global.d.ts
rename to packages/create-app/template-svelte-ts/src/vite-env.d.ts
diff --git a/packages/create-app/template-svelte/src/global.d.ts b/packages/create-app/template-svelte/src/vite-env.d.ts
similarity index 100%
rename from packages/create-app/template-svelte/src/global.d.ts
rename to packages/create-app/template-svelte/src/vite-env.d.ts
diff --git a/packages/create-app/template-vanilla-ts/src/vite-env.d.ts b/packages/create-app/template-vanilla-ts/src/vite-env.d.ts
new file mode 100644
index 00000000000000..11f02fe2a0061d
--- /dev/null
+++ b/packages/create-app/template-vanilla-ts/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/packages/create-app/template-vanilla-ts/tsconfig.json b/packages/create-app/template-vanilla-ts/tsconfig.json
index 43d4bc703dd9ff..4824d012f24b62 100644
--- a/packages/create-app/template-vanilla-ts/tsconfig.json
+++ b/packages/create-app/template-vanilla-ts/tsconfig.json
@@ -8,7 +8,6 @@
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
- "types": ["vite/client"],
"noEmit": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
diff --git a/packages/create-app/template-vue-ts/src/vite-env.d.ts b/packages/create-app/template-vue-ts/src/vite-env.d.ts
new file mode 100644
index 00000000000000..11f02fe2a0061d
--- /dev/null
+++ b/packages/create-app/template-vue-ts/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/packages/create-app/template-vue-ts/tsconfig.json b/packages/create-app/template-vue-ts/tsconfig.json
index e754e65292f1a0..5b6c24dfc57c0d 100644
--- a/packages/create-app/template-vue-ts/tsconfig.json
+++ b/packages/create-app/template-vue-ts/tsconfig.json
@@ -8,8 +8,7 @@
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
- "lib": ["esnext", "dom"],
- "types": ["vite/client"]
+ "lib": ["esnext", "dom"]
},
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}