Uh oh!
There was an error while loading. Please reload this page.
Migrate docs to package-backed geistdocs - #2222
Conversation
|
🧪 E2E Test Results✅ All tests passed Summary
Details by Category✅ ▲ Vercel Production
✅ 💻 Local Development
✅ 📦 Local Production
✅ 🐘 Local Postgres
✅ 🪟 Windows
✅ 📋 Other
|
📊 Workflow Benchmarkscommit Backend:
📜 Previous results (3)dc75b65Fri, 10 Jul 2026 11:18:50 GMT · run logs
8e0829aFri, 10 Jul 2026 10:21:25 GMT · run logs
3b0b5fcThu, 09 Jul 2026 19:04:54 GMT · run logs
Avg deltas compare against the most recent benchmark run on Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader) Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges 🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120 TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request. |
There was a problem hiding this comment.
Pull request overview
Migrates the docs app from a locally-copied Geist/Fumadocs runtime to the package-backed @vercel/geistdocs architecture, keeping existing public route families while replacing most runtime/UI plumbing with thin adapters around the upstream package.
Changes:
- Adopt
@vercel/geistdocsfor docs layout/MDX/rendering, plus package-provided search/chat/LLMs/sitemap/agents/mcp routes. - Remove large amounts of locally maintained UI/runtime code (chat/search/sidebar/layout/actions) in favor of upstream components and helpers.
- Update docs tooling/config (source config + link lint + sitemap/RSS generation) to work with versioned Geistdocs sources.
Reviewed changes
Copilot reviewed 223 out of 224 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/docs-typecheck/src/tests/sitemap-guard.test.ts | Updates the sitemap guard to account for package-backed markdown routes. |
| docs/source.config.ts | Switches to Geistdocs-provided Zod schemas and default source config. |
| docs/scripts/lint.ts | Adapts link linting to pull raw MDX content from Geistdocs pages. |
| docs/package.json | Adds @vercel/geistdocs, updates Next/React versions, removes unused local deps. |
| docs/next.config.ts | Removes Accept-header rewrites now handled elsewhere in the new architecture. |
| docs/lib/tsdoc/tsdoc.tsx | Adds error handling + switches Callout import to Geistdocs package component. |
| docs/lib/geistdocs/versions.ts | Makes v4/v5 version selection explicit and updates versioned URL docstring. |
| docs/lib/geistdocs/version-source.ts | Tightens typing for rewriteUrl and preserves URL rewriting behavior. |
| docs/lib/geistdocs/i18n.ts | Removes local i18n wiring in favor of package-backed provider/layout. |
| docs/lib/geistdocs/db.ts | Removes local Dexie chat persistence (chat now handled via package route/proxy). |
| docs/lib/geistdocs/config.tsx | Introduces centralized Geistdocs config (nav/content/versions/ai). |
| docs/hooks/geistdocs/use-version.tsx | Removes local version state provider/hook (replaced by package version select). |
| docs/hooks/geistdocs/use-sidebar.ts | Removes local jotai-based sidebar state hook (package-owned UI). |
| docs/hooks/geistdocs/use-chat.ts | Removes local jotai-based chat state hook (package-owned UI). |
| docs/geistdocs.tsx | Extends site metadata (GitHub edit config + agent readiness config). |
| docs/content/docs/v5/migration-guides/migrating-from-trigger-dev.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/migration-guides/migrating-from-temporal.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/migration-guides/migrating-from-inngest.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/migration-guides/migrating-from-aws-step-functions.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/vite.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/tanstack-start.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/sveltekit.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/python.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/nuxt.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/nitro.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/next.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/nestjs.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/hono.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/fastify.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/express.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/getting-started/astro.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/errors/webhook-response-not-sent.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/errors/timeout-in-workflow.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/errors/start-invalid-workflow-function.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/errors/serialization-failed.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/errors/node-js-module-in-workflow.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/errors/hook-conflict.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/errors/fetch-in-workflow.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/errors/abort-signal-timeout-in-workflow.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/integrations/sandbox.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/integrations/chat-sdk.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/integrations/ai-sdk.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/common-patterns/webhooks.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/common-patterns/scheduling.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/common-patterns/saga.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/common-patterns/batching.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/agent-patterns/human-in-the-loop.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/agent-patterns/durable-agent.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/agent-patterns/agent-cancellation.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/advanced/upgrading-workflows.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v5/cookbook/advanced/child-workflows.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/migration-guides/migrating-from-trigger-dev.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/migration-guides/migrating-from-temporal.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/migration-guides/migrating-from-inngest.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/migration-guides/migrating-from-aws-step-functions.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/vite.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/tanstack-start.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/sveltekit.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/python.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/nuxt.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/nitro.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/next.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/nestjs.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/hono.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/fastify.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/express.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/getting-started/astro.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/errors/webhook-response-not-sent.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/errors/timeout-in-workflow.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/errors/start-invalid-workflow-function.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/errors/serialization-failed.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/errors/node-js-module-in-workflow.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/errors/hook-conflict.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/errors/fetch-in-workflow.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/integrations/sandbox.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/integrations/chat-sdk.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/integrations/ai-sdk.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/common-patterns/webhooks.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/common-patterns/scheduling.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/common-patterns/saga.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/common-patterns/rate-limiting.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/common-patterns/batching.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/agent-patterns/human-in-the-loop.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/agent-patterns/durable-agent.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/agent-patterns/agent-cancellation.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/advanced/upgrading-workflows.mdx | Adds CopyPrompt helper content. |
| docs/content/docs/v4/cookbook/advanced/child-workflows.mdx | Adds CopyPrompt helper content. |
| docs/components/worlds/WorldTestingPerformance.tsx | Switches Tooltip usage to Geistdocs package tooltip component. |
| docs/components/worlds/WorldInstructions.tsx | Switches Button usage to Geistdocs package button component. |
| docs/components/worlds/WorldDetailHero.tsx | Switches Button/Tooltip usage to Geistdocs package components. |
| docs/components/worlds/WorldCardSimple.tsx | Switches Tooltip usage to Geistdocs package tooltip component. |
| docs/components/worlds/BenchmarkHistoryChart.tsx | Switches Dialog usage to Geistdocs package dialog component. |
| docs/components/ui/tooltip.tsx | Removes local tooltip implementation (now using package component). |
| docs/components/ui/toggle.tsx | Removes local UI component implementation. |
| docs/components/ui/toggle-group.tsx | Removes local UI component implementation. |
| docs/components/ui/textarea.tsx | Removes local UI component implementation. |
| docs/components/ui/switch.tsx | Removes local UI component implementation. |
| docs/components/ui/spinner.tsx | Removes local UI component implementation. |
| docs/components/ui/sonner.tsx | Removes local toaster implementation (feedback/chat UI removed). |
| docs/components/ui/slider.tsx | Removes local UI component implementation. |
| docs/components/ui/sheet.tsx | Removes local UI component implementation. |
| docs/components/ui/separator.tsx | Removes local UI component implementation. |
| docs/components/ui/scroll-area.tsx | Removes local UI component implementation. |
| docs/components/ui/resizable.tsx | Removes local UI component implementation. |
| docs/components/ui/radio-group.tsx | Removes local UI component implementation. |
| docs/components/ui/progress.tsx | Removes local UI component implementation. |
| docs/components/ui/popover.tsx | Removes local UI component implementation. |
| docs/components/ui/pagination.tsx | Removes local UI component implementation. |
| docs/components/ui/label.tsx | Removes local UI component implementation. |
| docs/components/ui/kbd.tsx | Removes local UI component implementation. |
| docs/components/ui/input.tsx | Removes local UI component implementation. |
| docs/components/ui/input-otp.tsx | Removes local UI component implementation. |
| docs/components/ui/hover-card.tsx | Removes local UI component implementation. |
| docs/components/ui/form.tsx | Removes local UI component implementation. |
| docs/components/ui/empty.tsx | Removes local UI component implementation. |
| docs/components/ui/dialog.tsx | Removes local UI component implementation. |
| docs/components/ui/collapsible.tsx | Removes local UI component implementation. |
| docs/components/ui/checkbox.tsx | Removes local UI component implementation. |
| docs/components/ui/button.tsx | Removes local UI component implementation (use Geistdocs package button). |
| docs/components/ui/button-group.tsx | Removes local UI component implementation. |
| docs/components/ui/aspect-ratio.tsx | Removes local UI component implementation. |
| docs/components/ui/alert.tsx | Removes local UI component implementation. |
| docs/components/ui/alert-dialog.tsx | Removes local UI component implementation. |
| docs/components/preview-install.tsx | Switches Button usage to Geistdocs package button component. |
| docs/components/geistdocs/x-button.tsx | Removes local social button implementation (package navbar/footer). |
| docs/components/geistdocs/video.tsx | Removes local video component (package MDX/components). |
| docs/components/geistdocs/version-switcher.tsx | Removes local version switcher UI (package versions UI). |
| docs/components/geistdocs/theme-toggle.tsx | Removes local theme toggle (package navbar/footer). |
| docs/components/geistdocs/search.tsx | Removes local search dialog/button (package search). |
| docs/components/geistdocs/scroll-top.tsx | Removes local scroll-to-top UI (package UI). |
| docs/components/geistdocs/rss-button.tsx | Removes local RSS button UI (package footer). |
| docs/components/geistdocs/provider.tsx | Replaces local RootProvider wiring with Geistdocs package provider. |
| docs/components/geistdocs/open-in-chat.tsx | Removes local “open in chat” widget (package AI/chat). |
| docs/components/geistdocs/navbar.tsx | Removes local navbar (package navbar). |
| docs/components/geistdocs/navbar-logo.tsx | Removes local navbar logo component (package navbar). |
| docs/components/geistdocs/mobile-docs-bar.tsx | Removes local mobile docs bar (package docs layout). |
| docs/components/geistdocs/message-metadata.tsx | Removes local chat message metadata UI. |
| docs/components/geistdocs/mermaid.tsx | Removes local mermaid renderer (package MDX pipeline). |
| docs/components/geistdocs/mdx-components.tsx | Switches to createMdxComponents and wires custom components into package MDX system. |
| docs/components/geistdocs/language-selector.tsx | Removes local language selector (package navbar/footer). |
| docs/components/geistdocs/installer.tsx | Removes local installer widget (package UI). |
| docs/components/geistdocs/icons.tsx | Removes local icon helper. |
| docs/components/geistdocs/home-layout.tsx | Replaces local Fumadocs layout wrapper with Geistdocs home layout. |
| docs/components/geistdocs/github-button.tsx | Removes local GitHub button (package footer). |
| docs/components/geistdocs/footer.tsx | Removes local footer (package footer). |
| docs/components/geistdocs/feedback.tsx | Removes local feedback UI flow. |
| docs/components/geistdocs/edit-source.tsx | Removes local “Edit this page” link (package handles via github config). |
| docs/components/geistdocs/docs-page.tsx | Removes local docs page wrapper (package docs layout). |
| docs/components/geistdocs/docs-layout.tsx | Switches to Geistdocs docs layout and adds version select + sidebar badges. |
| docs/components/geistdocs/desktop-menu.tsx | Removes local desktop menu (package navbar). |
| docs/components/geistdocs/copy-page.tsx | Removes local copy-page action UI. |
| docs/components/geistdocs/copy-chat.tsx | Removes local chat copy UI. |
| docs/components/geistdocs/code-block-tabs.tsx | Removes local code block tabs wrapper (package MDX/code). |
| docs/components/geistdocs/callout.tsx | Removes local callout wrappers (use package callout). |
| docs/components/geistdocs/ask-ai.tsx | Removes local ask-ai widget (package chat). |
| docs/components/custom/fluid-compute-callout.tsx | Switches Callout usage to Geistdocs package component. |
| docs/components/ai-elements/suggestion.tsx | Removes local AI UI elements. |
| docs/components/ai-elements/sources.tsx | Removes local AI UI elements. |
| docs/components/ai-elements/shimmer.tsx | Removes local AI UI elements. |
| docs/components/ai-elements/conversation.tsx | Removes local AI UI elements. |
| docs/app/styles/geistdocs.css | Switches styling baseline to Geistdocs package stylesheet. |
| docs/app/sitemap.ts | Updates sitemap generation to iterate over versioned sources. |
| docs/app/sitemap.md/route.ts | Replaces custom sitemap.md route with package-backed route. |
| docs/app/robots.ts | Makes robots sitemap host configurable with a local fallback. |
| docs/app/og/[...slug]/route.tsx | Makes OG generation tolerant of missing title/description fields. |
| docs/app/global.css | Routes global styling through the new geistdocs stylesheet. |
| docs/app/api/search/route.ts | Replaces custom search indexing route with package-backed search route. |
| docs/app/api/chat/utils.ts | Removes custom chat system prompt construction (package-backed chat). |
| docs/app/api/chat/types.ts | Removes custom chat message typing (package-backed chat). |
| docs/app/api/chat/route.ts | Replaces custom chat handler with package-backed chat route + optional proxy. |
| docs/app/actions/feedback/index.ts | Removes server action for feedback submission. |
| docs/app/actions/feedback/emotions.ts | Removes feedback emotion list used by deleted UI. |
| docs/app/[lang]/worlds/page.tsx | Switches Button usage to Geistdocs package button component. |
| docs/app/[lang]/worlds/compare/page.tsx | Switches Button usage to Geistdocs package button component. |
| docs/app/[lang]/worlds/[id]/page.tsx | Tightens types for MDX body/toc extraction. |
| docs/app/[lang]/v5/docs/layout.tsx | Passes explicit currentVersion into docs layout. |
| docs/app/[lang]/v5/cookbook/layout.tsx | Passes explicit currentVersion into docs layout. |
| docs/app/[lang]/sitemap.md/route.ts | Replaces custom localized sitemap.md route with package-backed route. |
| docs/app/[lang]/rss.xml/route.ts | Updates RSS generation to include pages from current sources with safer fallbacks. |
| docs/app/[lang]/llms.txt/route.ts | Replaces custom llms.txt generator with package-backed route. |
| docs/app/[lang]/llms.mdx/[[...slug]]/route.ts | Replaces custom page-level markdown route with package-backed route. |
| docs/app/[lang]/layout.tsx | Switches to package Navbar/Footer and uses package-backed config/provider. |
| docs/app/[lang]/docs/layout.tsx | Passes explicit currentVersion into docs layout. |
| docs/app/[lang]/cookbook/layout.tsx | Passes explicit currentVersion into docs layout. |
| docs/app/[lang]/agents.md/route.ts | Adds package-backed agents markdown route. |
| docs/app/[lang]/.well-known/mcp.json/route.ts | Adds package-backed MCP manifest route. |
| docs/app/[lang]/(home)/components/vercel-com-visuals/vercel-section.tsx | Switches Button usage to Geistdocs package button component. |
| docs/app/[lang]/(home)/components/vercel-com-visuals/feature-grid.tsx | Switches Button usage to Geistdocs package button component. |
| docs/app/[lang]/(home)/components/vercel-com-visuals/downtime-visual.tsx | Switches Spinner usage to Geistdocs package spinner component. |
| docs/app/[lang]/(home)/components/templates/index.tsx | Switches Button usage to Geistdocs package button component. |
| docs/app/[lang]/(home)/components/run-anywhere.tsx | Switches Button usage to Geistdocs package button component. |
| docs/app/[lang]/(home)/components/preview-badge.tsx | Switches Button/Dialog usage to Geistdocs package components. |
| docs/app/[lang]/(home)/components/hero.tsx | Updates agent install command string. |
| docs/app/[lang]/(home)/components/cta.tsx | Switches Button usage to Geistdocs package button component. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
karthikscale3
left a comment
There was a problem hiding this comment.

prompt doesn't appear consistently in all the pages. Ex: https://workflow-docs-git-migrate-docs.vercel.sh/cookbook/common-patterns/sequential-and-parallel
nope. that's not a valid lockup @karthikscale3 so we're not doing that |
pranaygp
left a comment
There was a problem hiding this comment.
I found two user-facing regressions in the package-backed docs migration.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
karthikscale3
commented
Jun 8, 2026
Please let us know when this is ready for a re-review |
molebox
commented
Jul 8, 2026
This PR is un-staled and ready for re-review @karthikscale3@pranaygp. What changedMerged
Bumped Review feedback addressed:
Still holding from the earlier round: Verification
|
molebox
commented
Jul 9, 2026
Follow-ups from Slack feedback (Chris):
|
molebox
commented
Jul 10, 2026
Bumped
Verified: docs build ✅, sitemap-guard ✅, |
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
molebox
commented
Jul 13, 2026
@copilot resolve the merge conflicts in this pull request |
No backport to This commit is a wholesale re-architecture of the To override, re-run the Backport to stable workflow manually via |


Previews
Summary
Migrates the docs app from the old copied geist/Fumadocs/custom runtime to the package-backed
@vercel/geistdocsarchitecture.Changes
@vercel/geistdocsand aligned supported Next/React versions./docs/cookbook/v5/docs/v5/cookbook/worlds/llms.txt/sitemap.md/agents.md.mdroutesVerification
pnpm --filter docs buildpasses.@vercel/geistdocs/dist.public/llms.txtmasks the App Router route.Notes
Full docs lint/typecheck still have pre-existing unrelated failures in generated
.source, homepage visual lint,components/worlds/BenchmarkChart.tsx, andlib/github.ts.