Skip to content

Update Geistdocs to 1.23.0 - #481

Open
molebox wants to merge 1 commit into
mainfrom
richard/update-geistdocs-1.23.0
Open

Update Geistdocs to 1.23.0#481
molebox wants to merge 1 commit into
mainfrom
richard/update-geistdocs-1.23.0

Conversation

@molebox

@molebox molebox commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Upgrades the docs app from @vercel/geistdocs 1.19.4 to 1.23.0 (Next.js 16.2.12 → 16.3.1).

Target release includes the five required upstream PRs, verified against the published changelog:

  • vercel/geistdocs#245 (eebb634, 1.21.1) — require Next.js 16.3+
  • vercel/geistdocs#246 (6302cd3, 1.22.0) — Cache Components
  • vercel/geistdocs#249 (47dd13a, 1.22.0) — Partial Prefetching + instant docs navigation
  • vercel/geistdocs#250 (193b510, 1.22.0) — stable Next.js 16.3 APIs, retryable page/Ask AI boundaries
  • vercel/geistdocs#251 (77968fd, 1.22.0) — tree sidebar scroll preservation on folder toggles
  • 1.23.0 additionally ships 58a6d38 — homepage Markdown negotiation, recoverable application 404s, default page canonicals, product JSON-LD

Adapter and configuration changes

  • next.config.ts: enabled cacheComponents and partialPrefetching; removed experimental.turbopackFileSystemCacheForDev (default in 16.3).
  • Removed all route-segment config exports (dynamic, revalidate, dynamicParams) incompatible with Cache Components; RSS and XML sitemap now use "use cache" + cacheLife("max"). Shiki highlighting on the home page is wrapped in "use cache" (it reads Date.now() internally).
  • Root/docs/home layouts read [lang] via next/root-params (lib/geistdocs/root-params.ts, Server Components only); route handlers keep route context params.
  • Route adapters now follow the 1.23.0 template: createLlmsRoute/createDocsMarkdownRoute/createSitemapMarkdownRoute/createAgentsRoute (sources option, package-provided generateStaticParams), createChatRoute returns { POST, maxDuration } (still 800), search uses sources.
  • New routes from the target template: /[lang]/.well-known/mcp.json, /[lang]/not-found.tsx, /[lang]/[...not-found] (real 404s for unknown paths; Markdown 404 for agents).
  • New lib/geistdocs/ helpers from the template: i18n.ts, root-params.ts, site-url.ts, site-url-warning.ts, public-path.ts; defineConfig now receives siteUrl.
  • Homepage metadata follows the 1.23.0 pattern: canonical + text/markdown alternate to /agents.md (via generateMetadata).
  • proxy.ts: the //[lang]/home/[code] rewrite moved from before to after so it no longer preempts package Markdown negotiation (see contract differences).
  • App-owned links to static docs pages use prefetch={true} (provider cards, LearnMore, homepage CTAs, banner).
  • app/styles/geistdocs.css: adopted the template's app-only rules (mobile breadcrumb/TOC colors, body text color).
  • Added apps/docs/AGENTS.md (template agent instructions, adapted to this repo).
  • packages/flags devDependency next bumped to 16.3.1: the docs app type-checks flags/next route types, and Next's generated route validator rejects mixed Next type versions. No published-artifact impact, no changeset needed.

Lockfile

Delta is scoped to: next@16.3.1 tree (incl. @next/env/swc/sharp binaries, @swc/helpers 0.5.23), @vercel/geistdocs@1.23.0 (+ @vercel/agent-readability 0.6.0), and peer-context re-keying for the docs app and packages/flags. No unrelated importer specifiers changed; frozen install verified.

Verification

  • pnpm install --frozen-lockfile, biome check . (2 pre-existing warnings, unchanged from main), turbo type-check (18/18), validate-packages, validate-skills, docs production build (195 static generations).
  • Static coverage: all 52 docs pages, all 24 home [code] permutations, /en/sitemap.md, /en/.well-known/mcp.json, /robots.txt, /sitemap.xml are prerendered (verified in prerender-manifest.json, no fallbacks). Every known docs URL has a complete static prerender; generic dynamic entries remain for unknown params (404 via package not-found handling).
  • next start smoke tests (curl + Playwright): instant sidebar and prev/next navigation with complete content and zero data-geistdocs-page-fallback; search returns and navigates; theme switch; Copy Page; Ask AI opens; mobile menu; homepage flag permutations; / HTML for browsers.
  • Machine-readable contracts: .md/.mdx URLs, Accept: text/markdown, agent-UA negotiation, /llms.txt, /sitemap.md, /agents.md, /.well-known/mcp.json, /rss.xml, /sitemap.xml, /robots.txt, OG images (/en/og/.../image.pngimage/png), legacy redirects.
  • Unknown routes: browsers get the 200 shell that resolves to the not-found UI; crawlers (Googlebot) and agent/Markdown requests get real 404s.
  • This site does not use sidebarMode="tree" (no collapsible sidebar folders), so the Updated optional peer dep @sveltejs/kit to 2.49.5 #251 fix has no consumer-visible surface here; the fix is package-internal and verified by upstream CI. Active-item scroll-into-view on navigation verified.
  • turbo test: 16/17 tasks pass. @vercel/flags-core black-box streaming tests time out in my local working directory only — they fail identically on unmodified main there and pass in a clean worktree both without and with this PR's changes applied. Local-environment flake; CI is the arbiter.

Intentional contract differences

  • / with Accept: text/markdown or an AI-agent UA now returns the generated /agents.md Markdown instead of the homepage HTML (1.23.0 homepage negotiation; enabled by the beforeafter proxy change).
  • /llms.txt, /llms.mdx/*, /og/*, /rss.xml, /agents.md are served dynamically with package-internal "use cache" instead of build-time SSG; content and content types unchanged.
  • /.well-known/mcp.json returns 404 until agent.mcp.servers is configured (package contract, asserted by upstream CI).
  • Root metadataBase is now derived from NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL (template convention) instead of a hardcoded https://flags-sdk.dev; production value is identical on Vercel.
  • Unknown-code /en/home/[code] URLs now render dynamically instead of 404ing (dynamicParams = false removed per Cache Components requirements); all known codes remain prerendered.

Known pre-existing issue (not introduced here)

Docs pages log React hydration error #418 in production. Reproduced identically on main (1.19.4 + Next 16.2.12), so it predates this upgrade; worth a separate investigation (likely in app-owned components or package UI).

Preview

Vercel will attach the preview deployment below; manual checks above were run against a local next start production server.

Preview URL: https://flags-sdk-dev-git-richard-update-geistdocs-1230.vercel.sh (deployment, Ready). The preview sits behind Vercel SSO protection, so content checks against it require a browser session or a bypass secret; all runtime checks above ran against a local production (next start) server built from this branch.

@vercel

vercel Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
flags-playground Ready Ready Preview, v0 Aug 24, 2026 1:51pm
flags-sdk-dev Ready Ready Preview, v0 Aug 24, 2026 1:51pm
flags-sdk-snippets Ready Ready Preview, v0 Aug 24, 2026 1:51pm
flags-sdk-sveltekit-snippets Ready Ready Preview, v0 Aug 24, 2026 1:51pm
shirt-shop Ready Ready Preview, v0 Aug 24, 2026 1:51pm
shirt-shop-api Ready Ready Preview, v0 Aug 24, 2026 1:51pm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant