Skip to content

Conversation

@Ja4V8s28Ck
Copy link
Contributor

@Ja4V8s28Ck Ja4V8s28Ck commented Jan 29, 2026

  • Ready for review

  • Keeping the openapi.yaml in the same location as the generated openapi page was the cause of Maximum call stack size exceeded error. So, I moved content/api-reference/openapi.yaml to content/openapi.yaml. If you want me to move it to a different location, say so.

  • There is still is a **warning** message during build about internationalization, I haven't figured it out yet. image

Summary by CodeRabbit

  • Documentation

    • Consolidated and restructured API reference documentation for improved organization and accessibility.
  • Chores

    • Updated core dependencies to latest versions for improved performance and compatibility.
    • Modernized internal architecture and component rendering system.
    • Minor layout adjustments to footer component.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 29, 2026

Note

.coderabbit.yaml has unrecognized properties

CodeRabbit is using all valid settings from your configuration. Unrecognized properties (listed below) have been ignored and may indicate typos or deprecated fields that can be removed.

⚠️ Parsing warnings (1)
Validation error: Unrecognized key(s) in object: 'path_filters'
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
📝 Walkthrough

Walkthrough

This PR migrates the OpenAPI documentation architecture by consolidating document references to a single root-level path, removes redundant component properties, upgrades Fumadocs dependencies to versions using a plugin-based system, and refactors documentation source handling accordingly.

Changes

Cohort / File(s) Summary
API Reference Pages
content/api-reference/auth/*, content/api-reference/boards/*, content/api-reference/posts/*, content/api-reference/votes/*, content/api-reference/roadmaps/*
Removed route field from _openapi front matter and updated APIPage invocations: changed document path from ./content/api-reference/openapi.yaml to ./content/openapi.yaml; removed webhooks and hasHead props across 15 MDX files.
Configuration Metadata
content/api-reference/meta.json
Normalized URL-like entries by removing leading ellipsis placeholder and standardizing leading slash usage (e.g., "...path/..." → "/path/...").
Dependency Updates
package.json
Updated fumadocs-core, fumadocs-mdx, fumadocs-openapi, fumadocs-typescript, fumadocs-ui, and next to newer versions with caret ranges; updated react and react-dom to caret ranges.
OpenAPI Configuration
src/lib/openapi.ts
Changed YAML source from ./content/api-reference/openapi.yaml to ./content/openapi.yaml; removed shikiOptions and themes configuration.
Component Refactoring
src/components/MDXComponents.tsx
Replaced direct APIPage import with createAPIPage factory; added img renderer with ImageZoom; updated APIPage prop typing from APIPageProps to ApiPageProps; configured custom Shiki themes (vesper, vitesse-light).
Source Architecture
src/lib/source.ts
Migrated from icon handlers and pageTree transformers to plugin-based approach; replaced transformerOpenAPI with openapiPlugin; added lucideIconsPlugin to all sources; updated imports to use fumadocs-mdx:collections/server namespace.
Build Configuration
src/app/layout.tsx, tsconfig.json, src/scripts/pre-build.ts
Updated RootProvider import path; changed jsx compiler option to "react-jsx"; added path mapping for fumadocs-mdx:collections; switched to named OpenAPI import and removed file preservations from build script.
Sitemap Integration
src/app/sitemap.ts
Added sitePolicySource to sitemap generation sources array.
Footer Component
src/components/Footer.tsx
Removed sidebar detection logic (useEffect, useState, useSidebar); replaced sticky positioning with ms-auto class; simplified styling.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • feat: re-structure docs #401: Modifies source configuration structure and src/lib/source.ts to restructure documentation sources, sharing similar refactoring scope and file overlap.
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The PR title accurately describes the primary change: updating dependencies for Next.js and FumaDocs, which aligns with the majority of changes in package.json and the commit messages.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tsconfig.json (1)

16-35: Change "jsx" to "preserve" for Next.js 16 compatibility.

Next.js enforces "jsx": "preserve" in tsconfig.json (SWC handles JSX transformation). Your current setting of "react-jsx" conflicts with Next's build pipeline.

The "fumadocs-mdx:collections/*" path mapping is correctly configured—fumadocs-mdx provides this as a virtual module during build, no manual .source directory generation needed.

🤖 Fix all issues with AI agents
In `@content/api-reference/meta.json`:
- Around line 10-35: The pages list in meta.json mixes entries with and without
leading slashes (e.g., "/auth/userSignin", "auth/userSignup") which can cause
routing mismatches; normalize all entries to the same format by removing leading
slashes across the array (update entries like "/auth/userSignin",
"/auth/sendVerificationEmail", "/auth/getSiteSetup", "/auth/siteSetup" to
"auth/userSignin", "auth/sendVerificationEmail", "auth/getSiteSetup",
"auth/siteSetup") so every path uses the no-leading-slash convention used by the
majority.

In `@package.json`:
- Around line 18-28: The project currently pins Next.js to ^16.1.6 which is
incompatible with `@opennextjs/cloudflare` and the fumadocs v16 ecosystem; to fix,
change the "next" dependency to a Next.js 15-compatible version (pin "next" to a
^15.x release) and align fumadocs packages to versions that match Next 15
(downgrade "fumadocs-core", "fumadocs-mdx", "fumadocs-openapi",
"fumadocs-twoslash", "fumadocs-typescript", "fumadocs-ui" to their
Next-15-compatible releases), update any code that calls createOpenAPI() to use
the v10-compatible signature if you keep fumadocs-openapi v10, and ensure your
deploy/preview scripts that rely on `@opennextjs/cloudflare` continue to target
supported Next.js versions; alternatively, if you intend to stay on Next 16,
revert changes that touch Next/ fumadocs APIs and wait for
`@opennextjs/cloudflare` support or complete the fumadocs v16 migration
(sidebar/server export/provider API and async-only cookies()/headers() changes)
before attempting deployment.
🧹 Nitpick comments (1)
src/scripts/pre-build.ts (1)

19-27: Minor: Promise.all with single item is unnecessary.

The Promise.all([...]) wrapper around a single generateFiles() call adds no value. However, this is harmless and may be intentional for potential future additions.

💡 Optional simplification
-  await Promise.all([
-    generateFiles({
-      input: openapi,
-      output: apiReferencePath,
-      per: "operation",
-      groupBy: "tag",
-      includeDescription: true,
-    }),
-  ]);
+  await generateFiles({
+    input: openapi,
+    output: apiReferencePath,
+    per: "operation",
+    groupBy: "tag",
+    includeDescription: true,
+  });

Comment on lines +10 to +35
"/auth/userSignin",
"auth/userSignup",
"/auth/sendVerificationEmail",

"---Site---",
".../auth/getSiteSetup",
".../auth/siteSetup",
"/auth/getSiteSetup",
"/auth/siteSetup",

"---Posts---",
"...posts/filterPosts",
"...posts/postBySlug",
"...posts/createPost",
"...posts/updatePost",
"...posts/deletePost",
"posts/filterPosts",
"posts/postBySlug",
"posts/createPost",
"posts/updatePost",
"posts/deletePost",

"---Votes---",
"...votes/addVoteToPost",
"...votes/removeVoteFromPost",
"votes/addVoteToPost",
"votes/removeVoteFromPost",

"---Boards---",
"...boards/filterBoards",
"boards/filterBoards",

"---Roadmaps---",
"...roadmaps/filterRoadmaps",
"...roadmaps/roadmapByUrl",
"...roadmaps/searchRoadmaps"
"roadmaps/filterRoadmaps",
"roadmaps/roadmapByUrl",
"roadmaps/searchRoadmaps"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Normalize leading slashes in pages entries to avoid inconsistent routing.

The mix of /auth/... and auth/... can cause mismatches depending on how the nav resolver interprets slugs. Consider standardizing the format.

Suggested normalization (remove leading slashes to match the majority)
-    "/auth/userSignin",
+    "auth/userSignin",
-    "/auth/sendVerificationEmail",
+    "auth/sendVerificationEmail",
-    "/auth/getSiteSetup",
+    "auth/getSiteSetup",
-    "/auth/siteSetup",
+    "auth/siteSetup",
🤖 Prompt for AI Agents
In `@content/api-reference/meta.json` around lines 10 - 35, The pages list in
meta.json mixes entries with and without leading slashes (e.g.,
"/auth/userSignin", "auth/userSignup") which can cause routing mismatches;
normalize all entries to the same format by removing leading slashes across the
array (update entries like "/auth/userSignin", "/auth/sendVerificationEmail",
"/auth/getSiteSetup", "/auth/siteSetup" to "auth/userSignin",
"auth/sendVerificationEmail", "auth/getSiteSetup", "auth/siteSetup") so every
path uses the no-leading-slash convention used by the majority.

Comment on lines +18 to +28
"fumadocs-core": "^16.4.9",
"fumadocs-mdx": "^14.2.6",
"fumadocs-openapi": "^10.2.6",
"fumadocs-twoslash": "^3.1.10",
"fumadocs-typescript": "^5.0.1",
"fumadocs-ui": "^16.4.9",
"lucide-react": "^0.562.0",
"next": "15.5.9",
"next": "^16.1.6",
"prettier": "^3.6.2",
"react": "19.2.3",
"react-dom": "19.2.3",
"react": "^19.2.3",
"react-dom": "^19.2.3",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# Check if `@opennextjs/cloudflare` is in the codebase
git ls-files | head -20

Repository: logchimp/docs

Length of output: 446


🏁 Script executed:

# Search for `@opennextjs/cloudflare` usage
rg "@opennextjs/cloudflare" --type json

Repository: logchimp/docs

Length of output: 109


🏁 Script executed:

# Check the full package.json to understand the project context
cat -n package.json

Repository: logchimp/docs

Length of output: 1717


🏁 Script executed:

# Look for any configuration files related to Next.js or Cloudflare
fd -e "next.config" -e "wrangler.toml" -e ".env" -type f

Repository: logchimp/docs

Length of output: 227


🌐 Web query:

Next.js 16 breaking changes compatibility

💡 Result:

Key Next.js 16 breaking changes and what they mean for compatibility:

  • Runtime/tooling minimums (hard requirements)

    • Node.js ≥ 20.9.0 (Node 18 no longer supported)
    • TypeScript ≥ 5.1
    • Browsers: Chrome/Edge/Firefox ≥ 111, Safari ≥ 16.4
      These can break CI/CD, hosting runtimes, or older enterprise browsers. [1][2]
  • Async Request / Dynamic APIs: sync access removed (major breaking change)

    • These must now be accessed asynchronously (sync compatibility is removed in 16):
      • cookies(), headers(), draftMode()
      • params in layout/page/route/default and metadata image routes
      • searchParams in page.js
        Expect widespread code changes in App Router pages/layouts/routes. [2]
  • Removed features (will break builds if you still use them)

    • AMP support removed (useAmp, config.amp, etc.)
    • next lint removed (and next build no longer runs linting)
    • serverRuntimeConfig / publicRuntimeConfig removed (use env vars instead)
    • devIndicators options removed (appIsrStatus, buildActivity, buildActivityPosition)
    • Config change: experimental.turbopack moved to top-level turbopack
    • experimental.dynamicIO renamed to experimental.cacheComponents [1]
  • Next/Image behavior/default changes

    • Default image optimization cache TTL increased (can affect update frequency/caching expectations).
    • Default images.imageSizes no longer includes 16. [2]

Sources: Next.js 16 release post [1] and official upgrade guide for v16 breaking changes [2].


🌐 Web query:

@opennextjs/cloudflare Next.js 16 support

💡 Result:

As of January 29, 2026, @opennextjs/cloudflare does not list Next.js 16 as supported.

The OpenNext Cloudflare docs currently state supported versions are “all minor and patch versions of Next.js 15” and “the latest minor of Next.js 14”—with no mention of Next.js 16 support. [1] Cloudflare’s announcement/blog post also frames the support target as Next.js 14 (latest minor) and Next.js 15 (all minors). [2]

If you need a guaranteed-supported setup today, pin to Next.js 15 (or the supported Next.js 14 minor). For Next.js 16, you’d be in “try it and see / wait for official support” territory until the docs or release notes explicitly add it. [1]

Sources: [1], [2]


🌐 Web query:

fumadocs v16 migration guide breaking changes

💡 Result:

Fumadocs v16 migration: breaking changes (and what to change)

1) fumadocs-core/sidebar removed

  • Breaking: fumadocs-core/sidebar is gone.
  • Migrate: replace with your own sidebar (Fumadocs suggests using pre-built Shadcn UI sidebars). [1][2]

2) fumadocs-core/server exports removed / moved

  • Breaking: fumadocs-core/server exports were redistributed. [1][2]
  • Migrate imports:
    • getGithubLastEditfumadocs-core/content/github [1][2]
    • getTableOfContentsfumadocs-core/content/toc [1][2]
    • PageTree + page-tree utilities → fumadocs-core/page-tree [1][2]
    • TOCItemType, TableOfContentsfumadocs-core/toc [1]
    • createMetadataImage removed → use Next.js Metadata API instead. [1][2]

3) Shiki default regex engine changed

  • Breaking: default switched to Shiki JavaScript regex engine (instead of Oniguruma/WASM). Impacts rehype-code (engine option) and fumadocs-core/highlight. [1][2]

4) React / Next.js minimums raised (for Fumadocs UI)

  • Breaking: minimum React 19.2.0. [1]
  • Next.js: if you use Fumadocs UI on Next.js, you must use Next.js 16+. [1]

5) fumadocs-ui/provider removed

  • Breaking: fumadocs-ui/provider no longer exists. [1]
  • Migrate:
    • root provider → fumadocs-ui/provider/next
    • contexts → import from fumadocs-ui/contexts/* [1]

6) fumadocs-ui/page removals

  • Breaking: <DocsCategory /> removed. [1]
    • Migrate: use getPageTreePeers() from fumadocs-core/page-tree. [1]
  • Breaking: <DocsPage /> option breadcrumbs.full removed. [1]

7) Search API breaking changes

  • Algolia: option document renamed to indexName in fumadocs-core/search/algolia. [1]
  • Core search hook: removed deprecated createFromSource() signature in useSearch(). [1]
  • Orama Cloud: migrated to the new SDK (@orama/core / OramaCloud) for sync; legacy client still available via fumadocs-core/search/orama-cloud-legacy. [1]

8) Highlighting API changes

  • Breaking: useShiki() removed withPrerenderScript and loading; use React Suspense instead. [1]

9) i18n middleware import path changed

  • Breaking: createI18nMiddleware removed from fumadocs-core/i18n. [1]
  • Migrate: import from fumadocs-core/i18n/middleware. [1]

10) Source loader changes

  • Breaking: in fumadocs-core/source loader:
    • transformers and pageTree.attach* options removed → use Loader Plugin instead. [1]
    • page.file removed → use page.path. [1]
    • internal FileInfo / parseFilePath removed → use PathUtils. [1]

11) Styling change you may notice

  • Default --fd-layout-width is now 1600px (override if needed). [1]

Sources: Fumadocs v16 announcement (Oct 22, 2025). [1] plus a release summary mirroring the same breaking changes. [2]


🌐 Web query:

fumadocs-openapi v10 release notes

💡 Result:

fumadocs-openapi v10 — release notes (Fumadocs OpenAPI v10)

Published: November 6, 2025. [1]

Breaking changes

  • createOpenAPI() redesign: separates server concerns (OpenAPI instance) from UI/API page concerns (now via createAPIPage), simplifying the API surface and enabling better customization. [1]
  • Playground toggle change: disablePlayground removed → use playground.enabled. [1]
  • Client configuration added: some options moved to a client config (via defineClientConfig), and client config is now preferred for adapters. [1]
  • Media adapters change: media adapters should be forwarded via client config. [1]
  • Option rename: content.showExampleInFieldsschemaUI.showExample. [1]
  • Renderer/fields API removed: centralized renderer API removed in favor of per-feature render hooks on content and client-side playground render APIs. [1]
  • generateFiles() input changed: now requires an OpenAPI server instance (not an array of file paths). [1][2]

New features

  • storageKeyPrefix: isolates localStorage keys to avoid state bleeding between multiple OpenAPI instances. [1]

Bug fixes

  • TypeScript schema output correction (and formatting disabled there for performance). [1]

Sources: Fumadocs blog post for v10 release notes [1]; generateFiles() docs reflecting the new server-instance input [2].


@opennextjs/cloudflare does not support Next.js 16—this is a critical blocker for deployment.

As of January 2026, @opennextjs/cloudflare officially supports only Next.js 15 (all minors) and the latest Next.js 14 minor. Your deploy and preview scripts depend on this tool, which means the current configuration cannot be deployed. Either downgrade Next.js to 15, or wait for @opennextjs/cloudflare to release Next.js 16 support.

Additionally, fumadocs v16 requires extensive code migrations (removed sidebar, moved server exports, redesigned APIs, provider restructuring) and fumadocs-openapi v10 requires changes to createOpenAPI() calls. Next.js 16 itself introduces breaking changes (async-only APIs for cookies(), headers(), etc.). Review the fumadocs v16 migration guide and Next.js 16 breaking changes before proceeding.

🤖 Prompt for AI Agents
In `@package.json` around lines 18 - 28, The project currently pins Next.js to
^16.1.6 which is incompatible with `@opennextjs/cloudflare` and the fumadocs v16
ecosystem; to fix, change the "next" dependency to a Next.js 15-compatible
version (pin "next" to a ^15.x release) and align fumadocs packages to versions
that match Next 15 (downgrade "fumadocs-core", "fumadocs-mdx",
"fumadocs-openapi", "fumadocs-twoslash", "fumadocs-typescript", "fumadocs-ui" to
their Next-15-compatible releases), update any code that calls createOpenAPI()
to use the v10-compatible signature if you keep fumadocs-openapi v10, and ensure
your deploy/preview scripts that rely on `@opennextjs/cloudflare` continue to
target supported Next.js versions; alternatively, if you intend to stay on Next
16, revert changes that touch Next/ fumadocs APIs and wait for
`@opennextjs/cloudflare` support or complete the fumadocs v16 migration
(sidebar/server export/provider API and async-only cookies()/headers() changes)
before attempting deployment.

@mittalyashu
Copy link
Member

Oh no! I just saw your PR. 😔

@mittalyashu
Copy link
Member

As for the errors you mentioned in the PR description those has been resolved by the Fumadocs author. 🙂

@mittalyashu
Copy link
Member

Closing this PR for now.

@github-actions github-actions bot locked and limited conversation to collaborators Jan 30, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants