From 6cbc7a58dec37bcbd231cc0f80edd16007b16a60 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Fri, 11 Sep 2026 14:18:58 -0600 Subject: [PATCH] fix: return 404 for missing framework documentation --- .../$version.docs.framework.$framework.$.tsx | 5 +--- tests/docs-route-smoke.test.ts | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/routes/_library/$libraryId/$version.docs.framework.$framework.$.tsx b/src/routes/_library/$libraryId/$version.docs.framework.$framework.$.tsx index 70bce606a..60fde30f1 100644 --- a/src/routes/_library/$libraryId/$version.docs.framework.$framework.$.tsx +++ b/src/routes/_library/$libraryId/$version.docs.framework.$framework.$.tsx @@ -60,10 +60,7 @@ export const Route = createFileRoute( } if (result.type === 'not-found') { - throw redirect({ - to: '/$libraryId/$version/docs/framework/$framework', - params: { libraryId, version, framework }, - }) + throw notFound() } return { diff --git a/tests/docs-route-smoke.test.ts b/tests/docs-route-smoke.test.ts index 0f0806c21..6ddaaf668 100644 --- a/tests/docs-route-smoke.test.ts +++ b/tests/docs-route-smoke.test.ts @@ -11,6 +11,31 @@ type SmokeCase = { const baseUrl = process.env.TANSTACK_DOCS_SMOKE_BASE_URL +test( + 'missing Start documents return 404 without redirecting to the framework index', + { + skip: baseUrl + ? false + : 'Set TANSTACK_DOCS_SMOKE_BASE_URL to run docs route smoke tests', + }, + async () => { + assert.ok(baseUrl) + + for (const framework of ['react', 'solid']) { + const path = `/start/latest/docs/framework/${framework}/missing-docs-smoke-test` + const response: Response = await fetch(new URL(path, baseUrl), { + redirect: 'manual', + signal: AbortSignal.timeout(30_000), + }) + const html = await response.text() + + assert.equal(response.status, 404, `${path} should return 404 directly`) + assert.equal(response.headers.get('location'), null) + assert.match(html, /404 Not Found/) + } + }, +) + test( 'docs legacy and canonical routes complete for every public library', {