diff --git a/sites/kit.svelte.dev/src/lib/docs/server/index.js b/sites/kit.svelte.dev/src/lib/docs/server/index.js
index 679814a9701d..3738fe3c6a80 100644
--- a/sites/kit.svelte.dev/src/lib/docs/server/index.js
+++ b/sites/kit.svelte.dev/src/lib/docs/server/index.js
@@ -33,7 +33,7 @@ const type_regex = new RegExp(
* @param {string} dir
* @param {string} file
*/
-export async function read_file(dir, file) {
+async function read_file(dir, file) {
const match = /\d{2}-(.+)\.md/.exec(file);
if (!match) return null;
diff --git a/sites/kit.svelte.dev/src/routes/docs/[slug].js b/sites/kit.svelte.dev/src/routes/docs/[slug].js
new file mode 100644
index 000000000000..e6255eed9fe9
--- /dev/null
+++ b/sites/kit.svelte.dev/src/routes/docs/[slug].js
@@ -0,0 +1,28 @@
+import { dev, prerendering } from '$app/env';
+import { read } from '$lib/docs/server';
+
+/** @type {import('@sveltejs/kit').RequestHandler} */
+export async function get({ params }) {
+ // TODO https://github.com/sveltejs/kit/issues/4093
+ if (!prerendering && !dev) {
+ return { status: 404 };
+ }
+
+ const page = await read('docs', params.slug);
+
+ if (!page) {
+ return { status: 404 };
+ }
+
+ return {
+ body: {
+ prev: page.prev,
+ next: page.next,
+ section: {
+ file: page.section.file,
+ title: page.section.title,
+ content: page.section.content
+ }
+ }
+ };
+}
diff --git a/sites/kit.svelte.dev/src/routes/docs/[slug].json.js b/sites/kit.svelte.dev/src/routes/docs/[slug].json.js
deleted file mode 100644
index 550301f2540e..000000000000
--- a/sites/kit.svelte.dev/src/routes/docs/[slug].json.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { read } from '$lib/docs/server';
-
-/** @type {import('@sveltejs/kit').RequestHandler} */
-export async function get({ params }) {
- const { prev, next, section } = await read('docs', params.slug);
-
- return {
- body: {
- prev,
- next,
- section: {
- file: section.file,
- title: section.title,
- content: section.content
- }
- }
- };
-}
diff --git a/sites/kit.svelte.dev/src/routes/docs/[slug].svelte b/sites/kit.svelte.dev/src/routes/docs/[slug].svelte
index e10687916afb..402a04e59fed 100644
--- a/sites/kit.svelte.dev/src/routes/docs/[slug].svelte
+++ b/sites/kit.svelte.dev/src/routes/docs/[slug].svelte
@@ -1,20 +1,5 @@