Repository: sveltejs/kit (js)

Issue:
[Demo app] TODOs don't appear on [enter]
### Describe the bug

Changes made to the "form" on the TODO subpage are not taken into account immediately. I need to refresh the page for them to appear.

[enter] -> no new item (POST is send, item appear after [F5])
"mark as done" -> no changes
"delete" -> no delete, other item selected as done is changed


### Reproduction

Win 11 pro

Demo app, Typescript, no lint...,  `pnpm install`

`npm run dev`

open in Firefox/Edge

### Logs

_No response_

### System Info

```shell
Binaries:
    Node: 16.17.0 - C:\Program Files\nodejs\node.EXE
    npm: 8.15.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Firefox 104.0 (64 bity)
    Edge: Spartan (44.22000.120.0), Chromium (104.0.1293.63)
    Internet Explorer: 11.0.22000.120
  npmPackages:
    @sveltejs/adapter-auto: next => 1.0.0-next.66
    @sveltejs/kit: next => 1.0.0-next.436
    svelte: ^3.46.0 => 3.49.0
    vite: ^3.0.8 => 3.0.9
```


### Severity

annoyance

### Additional Information

_No response_

Pull request description:
invalidate data after form submit
After #5778 you have to `invalidate()`, not `invalidate(location.href)`, as there's no longer just a single endpoint that corresponds to the page itself.

Fixes #6240 

### Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
- [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
- [x] This message body should clearly illustrate what problems it solves.
- [ ] Ideally, include a test that fails without this PR but passes with it.

### Tests
- [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check`

### Changesets
- [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. All changesets should be `patch` until SvelteKit 1.0


Patch:
diff --git a/.changeset/early-bulldogs-smile.md b/.changeset/early-bulldogs-smile.md
new file mode 100644
index 000000000..488e1a694
--- /dev/null
+++ b/.changeset/early-bulldogs-smile.md
@@ -0,0 +1,5 @@
+---
+'create-svelte': patch
+---
+
+Create TypeScript/JSDoc/vanilla versions of shared template .ts files
diff --git a/.changeset/healthy-penguins-fail.md b/.changeset/healthy-penguins-fail.md
new file mode 100644
index 000000000..8b8b0792a
--- /dev/null
+++ b/.changeset/healthy-penguins-fail.md
@@ -0,0 +1,5 @@
+---
+'create-svelte': patch
+---
+
+Create vite.config.ts when creating TypeScript project
diff --git a/.changeset/moody-plums-mate.md b/.changeset/moody-plums-mate.md
new file mode 100644
index 000000000..0441520ac
--- /dev/null
+++ b/.changeset/moody-plums-mate.md
@@ -0,0 +1,5 @@
+---
+'create-svelte': patch
+---
+
+Invalidate data after form submission
diff --git a/.changeset/pre.json b/.changeset/pre.json
index c0c9e46af..273331419 100644
--- a/.changeset/pre.json
+++ b/.changeset/pre.json
@@ -976,6 +976,7 @@
     "strong-apples-walk",
     "strong-carrots-work",
     "strong-cats-wonder",
+    "strong-cooks-run",
     "strong-cooks-turn",
     "strong-cups-yell",
     "strong-files-obey",
diff --git a/documentation/docs/01-project-structure.md b/documentation/docs/01-project-structure.md
index 93b637949..737c5b9f8 100644
--- a/documentation/docs/01-project-structure.md
+++ b/documentation/docs/01-project-structure.md
@@ -38,7 +38,7 @@ The `src` directory contains the meat of your project.
 - `routes` contains the [routes](/docs/routing) of your application
 - `app.html` is your page template — an HTML document containing the following placeholders:
   - `%sveltekit.head%` — `<link>` and `<script>` elements needed by the app, plus any `<svelte:head>` content
-  - `%sveltekit.body%` — the markup for a rendered page
+  - `%sveltekit.body%` — the markup for a rendered page. Typically this lives inside a `<div>` or other element, rather than directly inside `<body>`, to prevent bugs caused by browser extensions injecting elements that are then destroyed by the hydration process
   - `%sveltekit.assets%` — either [`paths.assets`](/docs/configuration#paths), if specified, or a relative path to [`paths.base`](/docs/configuration#base)
   - `%sveltekit.nonce%` — a [CSP](/docs/configuration#csp) nonce for manually included links and scripts, if used
 - `hooks.js` (optional) contains your application's [hooks](/docs/hooks)
diff --git a/documentation/docs/05-load.md b/documentation/docs/05-load.md
index f2f9f65fb..b38a211f2 100644
--- a/documentation/docs/05-load.md
+++ b/documentation/docs/05-load.md
@@ -327,6 +327,8 @@ If an _unexpected_ error is thrown, SvelteKit will invoke [`handleError`](/docs/
 
 To redirect users, use the `redirect` helper from `@sveltejs/kit` to specify the location to which they should be redirected alongside a `3xx` status code.
 
+> There is a known bug with `redirect`: it will currently fail during client-side navigation, due to [#5952](https://github.com/sveltejs/kit/issues/5952)
+
 ```diff
 /// file: src/routes/admin/+layout.server.js
 -import { error } from '@sveltejs/kit';
diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json
index 9c0a100da..28fa9863b 100644
--- a/packages/adapter-static/package.json
+++ b/packages/adapter-static/package.json
@@ -32,6 +32,6 @@
 		"svelte": "^3.48.0",
 		"typescript": "^4.7.4",
 		"uvu": "^0.5.3",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	}
 }
diff --git a/packages/create-svelte/scripts/build-templates.js b/packages/create-svelte/scripts/build-templates.js
index c9d21f9a0..d2450f7d2 100644
--- a/packages/create-svelte/scripts/build-templates.js
+++ b/packages/create-svelte/scripts/build-templates.js
@@ -206,22 +206,41 @@ async function generate_shared() {
 		}
 
 		if (name.endsWith('.ts') && !include.includes('typescript')) {
+			// file includes types in TypeScript and JSDoc —
+			// create .js file, with and without JSDoc
+			const js = convert_typescript(contents);
 			const js_name = name.replace(/\.ts$/, '.js');
-			shared.add(js_name);
 
+			// typescript
 			files.push({
-				name: js_name,
-				include: [...include],
-				exclude: [...exclude, 'typescript'],
-				contents: convert_typescript(contents)
+				name,
+				include: [...include, 'typescript'],
+				exclude,
+				contents: strip_jsdoc(contents)
 			});
 
-			include.push('typescript');
-		}
+			// checkjs
+			files.push({
+				name: js_name,
+				include: [...include, 'checkjs'],
+				exclude,
+				contents: js
+			});
 
-		shared.add(name);
+			// no typechecking
+			files.push({
+				name: js_name,
+				include,
+				exclude: [...exclude, 'typescript', 'checkjs'],
+				contents: strip_jsdoc(js)
+			});
 
-		files.push({ name, include, exclude, contents });
+			shared.add(name);
+			shared.add(js_name);
+		} else {
+			shared.add(name);
+			files.push({ name, include, exclude, contents });
+		}
 	});
 
 	files.sort((a, b) => a.include.length + a.exclude.length - (b.include.length + b.exclude.length));
diff --git a/packages/create-svelte/shared/vite.config.ts b/packages/create-svelte/shared/vite.config.ts
new file mode 100644
index 000000000..60ef89c74
--- /dev/null
+++ b/packages/create-svelte/shared/vite.config.ts
@@ -0,0 +1,9 @@
+import { sveltekit } from '@sveltejs/kit/vite';
+import type { UserConfig } from 'vite';
+
+/** @type {import('vite').UserConfig} */
+const config: UserConfig = {
+	plugins: [sveltekit()]
+};
+
+export default config;
diff --git a/packages/create-svelte/templates/default/package.json b/packages/create-svelte/templates/default/package.json
index ce127a154..5766fd226 100644
--- a/packages/create-svelte/templates/default/package.json
+++ b/packages/create-svelte/templates/default/package.json
@@ -13,7 +13,7 @@
 		"svelte": "^3.48.0",
 		"svelte-preprocess": "^4.10.6",
 		"typescript": "^4.7.4",
-		"vite": "^3.0.4"
+		"vite": "^3.0.9"
 	},
 	"type": "module",
 	"dependencies": {
diff --git a/packages/create-svelte/templates/default/src/lib/form.ts b/packages/create-svelte/templates/default/src/lib/form.ts
index f4f1153ff..49894f6d8 100644
--- a/packages/create-svelte/templates/default/src/lib/form.ts
+++ b/packages/create-svelte/templates/default/src/lib/form.ts
@@ -86,7 +86,7 @@ export function enhance(
 
 				const url = new URL(form.action);
 				url.search = url.hash = '';
-				invalidate(url.href);
+				invalidate();
 			} else if (error) {
 				error({ data, form, error: null, response });
 			} else {
diff --git a/packages/create-svelte/templates/default/vite.config.js b/packages/create-svelte/templates/default/vite.config.js
index 874705053..9f6d10066 100644
--- a/packages/create-svelte/templates/default/vite.config.js
+++ b/packages/create-svelte/templates/default/vite.config.js
@@ -1,8 +1,15 @@
+import path from 'path';
 import { sveltekit } from '@sveltejs/kit/vite';
 
 /** @type {import('vite').UserConfig} */
 const config = {
-	plugins: [sveltekit()]
+	plugins: [sveltekit()],
+
+	server: {
+		fs: {
+			allow: [path.resolve('../../../kit')]
+		}
+	}
 };
 
 export default config;
diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md
index ea762d6e1..779dbb06a 100644
--- a/packages/kit/CHANGELOG.md
+++ b/packages/kit/CHANGELOG.md
@@ -1,5 +1,11 @@
 # @sveltejs/kit
 
+## 1.0.0-next.437
+
+### Patch Changes
+
+- [fix] only generate blank non-SSR pages when prerendering is enabled ([#6251](https://github.com/sveltejs/kit/pull/6251))
+
 ## 1.0.0-next.436
 
 ### Patch Changes
diff --git a/packages/kit/package.json b/packages/kit/package.json
index 152e8a89c..b10bb7077 100644
--- a/packages/kit/package.json
+++ b/packages/kit/package.json
@@ -1,6 +1,6 @@
 {
 	"name": "@sveltejs/kit",
-	"version": "1.0.0-next.436",
+	"version": "1.0.0-next.437",
 	"repository": {
 		"type": "git",
 		"url": "https://github.com/sveltejs/kit",
@@ -39,7 +39,7 @@
 		"tiny-glob": "^0.2.9",
 		"typescript": "^4.7.4",
 		"uvu": "^0.5.3",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"peerDependencies": {
 		"svelte": "^3.44.0",
diff --git a/packages/kit/src/vite/index.js b/packages/kit/src/vite/index.js
index c6ecdb9ef..fdf17f074 100644
--- a/packages/kit/src/vite/index.js
+++ b/packages/kit/src/vite/index.js
@@ -58,9 +58,7 @@ const enforced_config = {
 	root: true
 };
 
-/**
- * @return {import('vite').Plugin[]}
- */
+/** @return {import('vite').Plugin[]} */
 export function sveltekit() {
 	return [...svelte(), kit()];
 }
diff --git a/packages/kit/types/ambient.d.ts b/packages/kit/types/ambient.d.ts
index 678de3ebe..f0a9efcef 100644
--- a/packages/kit/types/ambient.d.ts
+++ b/packages/kit/types/ambient.d.ts
@@ -151,7 +151,7 @@ declare module '$app/navigation' {
 		opts?: { replaceState?: boolean; noscroll?: boolean; keepfocus?: boolean; state?: any }
 	): Promise<void>;
 	/**
-	 * Causes any `load` functions belonging to the currently active page to re-run if they `fetch` the resource in question, or re-fetches data from a page endpoint if the invalidated resource is the page itself. If no argument is given, all resources will be invalidated. Returns a `Promise` that resolves when the page is subsequently updated.
+	 * Causes any `load` functions belonging to the currently active page to re-run if they `fetch` the resource in question. If no argument is given, all resources will be invalidated. Returns a `Promise` that resolves when the page is subsequently updated.
 	 * @param dependency The invalidated resource
 	 */
 	export function invalidate(dependency?: string | ((href: string) => boolean)): Promise<void>;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a621b9837..0967ad444 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -149,7 +149,7 @@ importers:
       svelte: ^3.48.0
       typescript: ^4.7.4
       uvu: ^0.5.3
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../kit
       '@types/node': 16.11.42
@@ -158,17 +158,17 @@ importers:
       svelte: 3.48.0
       typescript: 4.7.4
       uvu: 0.5.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/adapter-static/test/apps/prerendered:
     specifiers:
       '@sveltejs/kit': workspace:*
       svelte: ^3.48.0
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../../../../kit
       svelte: 3.48.0
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/adapter-static/test/apps/spa:
     specifiers:
@@ -176,13 +176,13 @@ importers:
       '@sveltejs/kit': workspace:*
       sirv-cli: ^2.0.2
       svelte: ^3.48.0
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/adapter-node': link:../../../../adapter-node
       '@sveltejs/kit': link:../../../../kit
       sirv-cli: 2.0.2
       svelte: 3.48.0
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/adapter-vercel:
     specifiers:
@@ -247,7 +247,7 @@ importers:
       svelte: ^3.48.0
       svelte-preprocess: ^4.10.6
       typescript: ^4.7.4
-      vite: ^3.0.4
+      vite: ^3.0.9
     dependencies:
       '@fontsource/fira-mono': 4.5.8
       '@lukeed/uuid': 2.0.0
@@ -258,7 +258,7 @@ importers:
       svelte: 3.48.0
       svelte-preprocess: 4.10.7_lvfi2wesz6u4l5rfbnetbucfmm
       typescript: 4.7.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/create-svelte/templates/skeleton:
     specifiers:
@@ -294,9 +294,9 @@ importers:
       typescript: ^4.7.4
       undici: ^5.8.1
       uvu: ^0.5.3
-      vite: ^3.0.8
+      vite: ^3.0.9
     dependencies:
-      '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.48.0+vite@3.0.8
+      '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.48.0+vite@3.0.9
       cookie: 0.5.0
       devalue: 2.0.1
       kleur: 4.1.5
@@ -323,7 +323,7 @@ importers:
       svelte-preprocess: 4.10.7_lvfi2wesz6u4l5rfbnetbucfmm
       typescript: 4.7.4
       uvu: 0.5.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/apps/amp:
     specifiers:
@@ -334,7 +334,7 @@ importers:
       svelte: ^3.48.0
       svelte-check: ^2.7.1
       typescript: ^4.7.4
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/amp': link:../../../../amp
       '@sveltejs/kit': link:../../..
@@ -343,7 +343,7 @@ importers:
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/apps/basics:
     specifiers:
@@ -353,7 +353,7 @@ importers:
       svelte: ^3.48.0
       svelte-check: ^2.7.1
       typescript: ^4.7.4
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../../..
       cross-env: 7.0.3
@@ -361,7 +361,7 @@ importers:
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/apps/dev-only:
     specifiers:
@@ -371,7 +371,7 @@ importers:
       svelte: ^3.48.0
       svelte-check: ^2.7.1
       typescript: ^4.7.4
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../../..
       cross-env: 7.0.3
@@ -379,7 +379,7 @@ importers:
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/apps/options:
     specifiers:
@@ -388,14 +388,14 @@ importers:
       svelte: ^3.48.0
       svelte-check: ^2.7.1
       typescript: ^4.7.4
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../../..
       cross-env: 7.0.3
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/apps/options-2:
     specifiers:
@@ -405,7 +405,7 @@ importers:
       svelte: ^3.48.0
       svelte-check: ^2.7.1
       typescript: ^4.7.4
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/adapter-node': link:../../../../adapter-node
       '@sveltejs/kit': link:../../..
@@ -413,7 +413,7 @@ importers:
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/apps/writes:
     specifiers:
@@ -423,7 +423,7 @@ importers:
       svelte: ^3.48.0
       svelte-check: ^2.7.1
       typescript: ^4.7.4
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../../..
       cross-env: 7.0.3
@@ -431,7 +431,7 @@ importers:
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/prerendering/basics:
     specifiers:
@@ -440,14 +440,14 @@ importers:
       svelte-check: ^2.7.1
       typescript: ^4.7.4
       uvu: ^0.5.3
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../../..
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
       uvu: 0.5.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/prerendering/fallback:
     specifiers:
@@ -456,14 +456,14 @@ importers:
       svelte-check: ^2.7.1
       typescript: ^4.7.4
       uvu: ^0.5.3
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../../..
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
       uvu: 0.5.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/prerendering/options:
     specifiers:
@@ -472,14 +472,14 @@ importers:
       svelte-check: ^2.7.1
       typescript: ^4.7.4
       uvu: ^0.5.3
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../../..
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
       uvu: 0.5.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/prerendering/paths-base:
     specifiers:
@@ -488,14 +488,14 @@ importers:
       svelte-check: ^2.7.1
       typescript: ^4.7.4
       uvu: ^0.5.3
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../../..
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
       uvu: 0.5.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/kit/test/prerendering/trailing-slash:
     specifiers:
@@ -504,14 +504,14 @@ importers:
       svelte-check: ^2.7.1
       typescript: ^4.7.4
       uvu: ^0.5.4
-      vite: ^3.0.8
+      vite: ^3.0.9
     devDependencies:
       '@sveltejs/kit': link:../../..
       svelte: 3.48.0
       svelte-check: 2.8.0_svelte@3.48.0
       typescript: 4.7.4
       uvu: 0.5.4
-      vite: 3.0.8
+      vite: 3.0.9
 
   packages/migrate:
     specifiers:
@@ -572,7 +572,7 @@ importers:
       shiki-twoslash: ^3.0.2
       svelte: ^3.48.0
       typescript: ^4.7.4
-      vite: ^3.0.8
+      vite: ^3.0.9
       vite-imagetools: ^4.0.3
     devDependencies:
       '@sveltejs/adapter-auto': link:../../packages/adapter-auto
@@ -588,7 +588,7 @@ importers:
       shiki-twoslash: 3.1.0
       svelte: 3.48.0
       typescript: 4.7.4
-      vite: 3.0.8
+      vite: 3.0.9
       vite-imagetools: 4.0.4
 
 packages:
@@ -1019,7 +1019,7 @@ packages:
       golden-fleece: 1.0.9
     dev: true
 
-  /@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.48.0+vite@3.0.8:
+  /@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.48.0+vite@3.0.9:
     resolution: {integrity: sha512-PorCgUounn0VXcpeJu+hOweZODKmGuLHsLomwqSj+p26IwjjGffmYQfVHtiTWq+NqaUuuHWWG7vPge6UFw4Aeg==}
     engines: {node: ^14.18.0 || >= 16}
     peerDependencies:
@@ -1037,7 +1037,7 @@ packages:
       magic-string: 0.26.2
       svelte: 3.48.0
       svelte-hmr: 0.14.12_svelte@3.48.0
-      vite: 3.0.8
+      vite: 3.0.9
     transitivePeerDependencies:
       - supports-color
     dev: false
@@ -4495,8 +4495,8 @@ packages:
       magic-string: 0.26.2
     dev: true
 
-  /vite/3.0.8:
-    resolution: {integrity: sha512-AOZ4eN7mrkJiOLuw8IA7piS4IdOQyQCA81GxGsAQvAZzMRi9ZwGB3TOaYsj4uLAWK46T5L4AfQ6InNGlxX30IQ==}
+  /vite/3.0.9:
+    resolution: {integrity: sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==}
     engines: {node: ^14.18.0 || >=16.0.0}
     hasBin: true
     peerDependencies:
diff --git a/sites/kit.svelte.dev/package.json b/sites/kit.svelte.dev/package.json
index eeeb76b29..1a2cd1c4a 100644
--- a/sites/kit.svelte.dev/package.json
+++ b/sites/kit.svelte.dev/package.json
@@ -21,7 +21,7 @@
 		"shiki-twoslash": "^3.0.2",
 		"svelte": "^3.48.0",
 		"typescript": "^4.7.4",
-		"vite": "^3.0.8",
+		"vite": "^3.0.9",
 		"vite-imagetools": "^4.0.3"
 	},
 	"type": "module"
diff --git a/sites/kit.svelte.dev/src/lib/docs/client/docs.css b/sites/kit.svelte.dev/src/lib/docs/client/docs.css
index f6e9da40a..8688c0dae 100644
--- a/sites/kit.svelte.dev/src/lib/docs/client/docs.css
+++ b/sites/kit.svelte.dev/src/lib/docs/client/docs.css
@@ -210,7 +210,7 @@
 }
 
 .content ul > li {
-	margin: 0.5em 0;
+	margin: 0.5em 0 !important;
 }
 
 /** hacky overrides to allow filenames inside code blocks —


Test patch:
diff --git a/packages/adapter-static/test/apps/prerendered/package.json b/packages/adapter-static/test/apps/prerendered/package.json
index b38399527..ef581f5c6 100644
--- a/packages/adapter-static/test/apps/prerendered/package.json
+++ b/packages/adapter-static/test/apps/prerendered/package.json
@@ -10,7 +10,7 @@
 	"devDependencies": {
 		"@sveltejs/kit": "workspace:*",
 		"svelte": "^3.48.0",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/adapter-static/test/apps/spa/package.json b/packages/adapter-static/test/apps/spa/package.json
index a3144238b..859b0929f 100644
--- a/packages/adapter-static/test/apps/spa/package.json
+++ b/packages/adapter-static/test/apps/spa/package.json
@@ -12,7 +12,7 @@
 		"@sveltejs/kit": "workspace:*",
 		"sirv-cli": "^2.0.2",
 		"svelte": "^3.48.0",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/apps/amp/package.json b/packages/kit/test/apps/amp/package.json
index 1576cdbfc..0cc8e95fa 100644
--- a/packages/kit/test/apps/amp/package.json
+++ b/packages/kit/test/apps/amp/package.json
@@ -19,7 +19,7 @@
 		"svelte": "^3.48.0",
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json
index a58156c56..e29507332 100644
--- a/packages/kit/test/apps/basics/package.json
+++ b/packages/kit/test/apps/basics/package.json
@@ -18,7 +18,7 @@
 		"svelte": "^3.48.0",
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/apps/dev-only/package.json b/packages/kit/test/apps/dev-only/package.json
index e222d532c..cbba7da8d 100644
--- a/packages/kit/test/apps/dev-only/package.json
+++ b/packages/kit/test/apps/dev-only/package.json
@@ -16,7 +16,7 @@
 		"svelte": "^3.48.0",
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/apps/options-2/package.json b/packages/kit/test/apps/options-2/package.json
index 747b2bef6..dd612d2c4 100644
--- a/packages/kit/test/apps/options-2/package.json
+++ b/packages/kit/test/apps/options-2/package.json
@@ -18,7 +18,7 @@
 		"svelte": "^3.48.0",
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/apps/options/package.json b/packages/kit/test/apps/options/package.json
index 51e96620d..48734ac77 100644
--- a/packages/kit/test/apps/options/package.json
+++ b/packages/kit/test/apps/options/package.json
@@ -17,7 +17,7 @@
 		"svelte": "^3.48.0",
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/apps/writes/package.json b/packages/kit/test/apps/writes/package.json
index 3aeed6b2b..3c6cab88a 100644
--- a/packages/kit/test/apps/writes/package.json
+++ b/packages/kit/test/apps/writes/package.json
@@ -18,7 +18,7 @@
 		"svelte": "^3.48.0",
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/prerendering/basics/package.json b/packages/kit/test/prerendering/basics/package.json
index 92c4a6bfa..2a60f53f9 100644
--- a/packages/kit/test/prerendering/basics/package.json
+++ b/packages/kit/test/prerendering/basics/package.json
@@ -15,7 +15,7 @@
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
 		"uvu": "^0.5.3",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/prerendering/fallback/package.json b/packages/kit/test/prerendering/fallback/package.json
index 8b6a09282..9835390fe 100644
--- a/packages/kit/test/prerendering/fallback/package.json
+++ b/packages/kit/test/prerendering/fallback/package.json
@@ -15,7 +15,7 @@
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
 		"uvu": "^0.5.3",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/prerendering/options/package.json b/packages/kit/test/prerendering/options/package.json
index 1fba5f302..7c75411c6 100644
--- a/packages/kit/test/prerendering/options/package.json
+++ b/packages/kit/test/prerendering/options/package.json
@@ -15,7 +15,7 @@
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
 		"uvu": "^0.5.3",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/prerendering/paths-base/package.json b/packages/kit/test/prerendering/paths-base/package.json
index 1f743ca22..10eb75923 100644
--- a/packages/kit/test/prerendering/paths-base/package.json
+++ b/packages/kit/test/prerendering/paths-base/package.json
@@ -15,7 +15,7 @@
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
 		"uvu": "^0.5.3",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }
diff --git a/packages/kit/test/prerendering/trailing-slash/package.json b/packages/kit/test/prerendering/trailing-slash/package.json
index a2c589586..d149c42bf 100644
--- a/packages/kit/test/prerendering/trailing-slash/package.json
+++ b/packages/kit/test/prerendering/trailing-slash/package.json
@@ -15,7 +15,7 @@
 		"svelte-check": "^2.7.1",
 		"typescript": "^4.7.4",
 		"uvu": "^0.5.4",
-		"vite": "^3.0.8"
+		"vite": "^3.0.9"
 	},
 	"type": "module"
 }