diff --git a/package-lock.json b/package-lock.json index 102b534819..8a71d40f8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6330,10 +6330,10 @@ "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", "license": "MIT" }, - "node_modules/@fontsource-variable/inter": { + "node_modules/@fontsource-variable/geist": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.3.0.tgz", - "integrity": "sha512-OupL48va4JNofb97w6NYeF9S7W/kHNKM0Er8Dem5nqi4jeOLrVJDoE8tZEpnMJmtkvNbB1EIPPwHcdkF6b1oUA==", + "resolved": "https://registry.npmjs.org/@fontsource-variable/geist/-/geist-5.3.0.tgz", + "integrity": "sha512-j0m+vLQuG5XAYoHtGCVu0spvlGreR3EzpECUVzkFmI1mTVnAO38l/NEPDCFgZ177JxzYJCLSmTQibIiYPilGrA==", "license": "OFL-1.1", "funding": { "url": "https://github.com/sponsors/ayuhito" @@ -40144,7 +40144,7 @@ "dependencies": { "@cloudflare/vite-plugin": "^1.29.1", "@cloudflare/workers-types": "^4.20260317.1", - "@fontsource-variable/inter": "^5.3.0", + "@fontsource-variable/geist": "^5.3.0", "@tanstack/react-router": "^1.170.16", "@tanstack/react-start": "^1.168.26", "framer-motion": "^12.35.2", diff --git a/packages/website/package.json b/packages/website/package.json index 63924d5a7a..5f64191da9 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -14,7 +14,7 @@ "dependencies": { "@cloudflare/vite-plugin": "^1.29.1", "@cloudflare/workers-types": "^4.20260317.1", - "@fontsource-variable/inter": "^5.3.0", + "@fontsource-variable/geist": "^5.3.0", "@tanstack/react-router": "^1.170.16", "@tanstack/react-start": "^1.168.26", "framer-motion": "^12.35.2", diff --git a/packages/website/src/components/faq-item.tsx b/packages/website/src/components/faq-item.tsx index 217e4d1281..7813f9ddbf 100644 --- a/packages/website/src/components/faq-item.tsx +++ b/packages/website/src/components/faq-item.tsx @@ -3,12 +3,14 @@ import type { ReactNode } from "react"; export function FAQItem({ question, children }: { question: string; children: ReactNode }) { return (
- - + - − + + + + + − + {question} -
{children}
+
{children}
); } diff --git a/packages/website/src/server-entry.ts b/packages/website/src/server-entry.ts index 9fb921833a..657abf9cfe 100644 --- a/packages/website/src/server-entry.ts +++ b/packages/website/src/server-entry.ts @@ -1,4 +1,5 @@ -import startEntry from "@tanstack/react-start/server-entry"; +import type { Register } from "@tanstack/react-router"; +import type { RequestHandler } from "@tanstack/react-start/server"; import { getAndroidVersionCode } from "~/android-version"; import { getCanonicalRedirect } from "~/canonical-url"; import { getDoc, getLegacyDocsRedirect } from "~/docs"; @@ -59,6 +60,21 @@ function variesByUserAgent(pathname: string, response: Response): boolean { return response.headers.get("content-type")?.includes("text/html") ?? false; } +// A static import of TanStack Start's server handler breaks every SSR hot reload on +// Vite 7 with "createStartHandler is not a function". Importing it at request time +// avoids the race. Remove once the website is on a Vite release with vitejs/vite#22369. +// https://github.com/TanStack/router/issues/7285 +let cachedStartFetch: RequestHandler | null = null; + +async function getStartFetch(): Promise> { + if (!cachedStartFetch) { + const { createStartHandler, defaultStreamHandler } = + await import("@tanstack/react-start/server"); + cachedStartFetch = createStartHandler(defaultStreamHandler); + } + return cachedStartFetch; +} + export default { async fetch(request: Request, env: WebsiteEnv, context: ExecutionContext): Promise { const url = new URL(request.url); @@ -105,7 +121,8 @@ export default { return markdownResponse(doc.content); } - const response = await startEntry.fetch(request); + const startFetch = await getStartFetch(); + const response = await startFetch(request); return variesByUserAgent(url.pathname, response) ? withoutSharedCaching(response) : response; }, }; diff --git a/packages/website/src/styles.css b/packages/website/src/styles.css index eea7d2a84b..bfbe26a82a 100644 --- a/packages/website/src/styles.css +++ b/packages/website/src/styles.css @@ -1,5 +1,5 @@ @import "tailwindcss"; -@import "@fontsource-variable/inter"; +@import "@fontsource-variable/geist"; * { scrollbar-color: var(--color-scrollbar-handle) transparent; @@ -661,7 +661,7 @@ } @theme { - --font-sans: "Inter Variable", ui-sans-serif, system-ui, sans-serif; + --font-sans: "Geist Variable", ui-sans-serif, system-ui, sans-serif; --color-background: #101615; --color-foreground: #fafafa;