Skip to content

feat: migrate documentation to Rspress - #870

Open
Nsttt wants to merge 13 commits into
elysiajs:mainfrom
Nsttt:feat/rspress-migration
Open

feat: migrate documentation to Rspress#870
Nsttt wants to merge 13 commits into
elysiajs:mainfrom
Nsttt:feat/rspress-migration

Conversation

@Nsttt

@Nsttt Nsttt commented Jul 23, 2026

Copy link
Copy Markdown

Summary

Migrates the Elysia documentation from VitePress to Rspress while preserving the existing UI, navigation, content behavior, and interactive tutorial experience.

Changes

  • Add the custom Rspress theme and UI parity styling
  • Restore tutorial, search, navigation, sponsors, code groups, and Ask Elysia behavior
  • Enable official Rspress Twoslash support and update migrated integration content
  • Match responsive sidebar behavior, icon treatment, and active navigation states

Testing

  • bunx tsc --noEmit --pretty false
  • git diff --check
  • bun run build
  • Visual comparison against elysiajs.com in Helium

@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 239 files, which is 139 over the limit of 100.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 75350f23-52e3-4c31-b202-b3e1574e574d

📥 Commits

Reviewing files that changed from the base of the PR and between 5bd87eb and 62e1a7c.

⛔ Files ignored due to path filters (8)
  • bun.lock is excluded by !**/*.lock
  • docs/public/assets/blocks.svg is excluded by !**/*.svg
  • docs/public/assets/book.svg is excluded by !**/*.svg
  • docs/public/assets/cook.svg is excluded by !**/*.svg
  • docs/public/assets/eden.svg is excluded by !**/*.svg
  • docs/public/assets/essential.svg is excluded by !**/*.svg
  • docs/public/assets/getting-start.svg is excluded by !**/*.svg
  • docs/public/assets/pattern.svg is excluded by !**/*.svg
📒 Files selected for processing (239)
  • .gitignore
  • README.md
  • docs/.vitepress/config.ts
  • docs/.vitepress/global.d.ts
  • docs/.vitepress/theme/header.vue
  • docs/.vitepress/theme/index.ts
  • docs/.vitepress/theme/layout.vue
  • docs/.vitepress/theme/navbar-search-button.vue
  • docs/.vitepress/theme/navbar-search.vue
  • docs/.vitepress/theme/search.vue
  • docs/.vitepress/theme/search/lru-cache.ts
  • docs/.vitepress/theme/search/translation.ts
  • docs/.vitepress/theme/search/use-data.ts
  • docs/.vitepress/theme/use-dark.ts
  • docs/at-glance.mdx
  • docs/blog.mdx
  • docs/blog/elysia-02.mdx
  • docs/blog/elysia-03.mdx
  • docs/blog/elysia-04.mdx
  • docs/blog/elysia-05.mdx
  • docs/blog/elysia-06.mdx
  • docs/blog/elysia-07.mdx
  • docs/blog/elysia-08.mdx
  • docs/blog/elysia-10.mdx
  • docs/blog/elysia-11.mdx
  • docs/blog/elysia-12.mdx
  • docs/blog/elysia-13.mdx
  • docs/blog/elysia-14.mdx
  • docs/blog/elysia-20.mdx
  • docs/blog/elysia-supabase.mdx
  • docs/blog/elysia-v-encore.mdx
  • docs/blog/openapi-type-gen.mdx
  • docs/blog/with-prisma.mdx
  • docs/components/4koma/glare-card/card.vue
  • docs/components/4koma/glare-card/glare-card.vue
  • docs/components/4koma/illust.vue
  • docs/components/4koma/layout.vue
  • docs/components/4koma/panel.vue
  • docs/components/4koma/preview.vue
  • docs/components/arona/a.vue
  • docs/components/arona/arona-banner.vue
  • docs/components/arona/arona.vue
  • docs/components/arona/badge.vue
  • docs/components/arona/code.vue
  • docs/components/arona/error-message.vue
  • docs/components/arona/markdown.ts
  • docs/components/arona/old-markdown.vue
  • docs/components/arona/pow-worker.ts
  • docs/components/arona/pow.ts
  • docs/components/arona/retry.ts
  • docs/components/arona/shiki.ts
  • docs/components/arona/tooltip.vue
  • docs/components/arona/typing.vue
  • docs/components/arona/verifying.vue
  • docs/components/blog/Landing.vue
  • docs/components/blog/Layout.vue
  • docs/components/chart.vue
  • docs/components/fern/animate.ts
  • docs/components/fern/ask-elysia-old.vue
  • docs/components/fern/ask-elysia.vue
  • docs/components/fern/banner.vue
  • docs/components/fern/benchmark-express.vue
  • docs/components/fern/benchmark-fastify.vue
  • docs/components/fern/benchmark-hono.vue
  • docs/components/fern/benchmark.vue
  • docs/components/fern/beyond.vue
  • docs/components/fern/built-with-love.vue
  • docs/components/fern/compare.vue
  • docs/components/fern/deploy.vue
  • docs/components/fern/doc.vue
  • docs/components/fern/easy.vue
  • docs/components/fern/features.vue
  • docs/components/fern/fern.vue
  • docs/components/fern/future.vue
  • docs/components/fern/hero.vue
  • docs/components/fern/note.vue
  • docs/components/fern/openapi-type-gen.vue
  • docs/components/fern/ray.vue
  • docs/components/fern/sponsor.constant.ts
  • docs/components/fern/sponsor.data.ts
  • docs/components/fern/sponsor.vue
  • docs/components/fern/ssot.vue
  • docs/components/fern/tab.vue
  • docs/components/fern/teapot.vue
  • docs/components/fern/test.vue
  • docs/components/fern/trusted-by.vue
  • docs/components/fern/tweet.vue
  • docs/components/fern/tweets.vue
  • docs/components/fern/type-integrity.vue
  • docs/components/fern/validator.vue
  • docs/components/nearl/card-deck.vue
  • docs/components/nearl/card.vue
  • docs/components/nearl/kyuukurarin.vue
  • docs/components/nearl/playground.vue
  • docs/components/xiao/answer/answer.vue
  • docs/components/xiao/doc-link/doc-link.vue
  • docs/components/xiao/elysia-chan/elysia-chan.vue
  • docs/components/xiao/playground/components/aside.vue
  • docs/components/xiao/playground/components/client-only.vue
  • docs/components/xiao/playground/components/doc.vue
  • docs/components/xiao/playground/components/editor-layout/editor-layout.vue
  • docs/components/xiao/playground/components/editor-layout/file-tab.vue
  • docs/components/xiao/playground/components/editor-layout/file-tree.vue
  • docs/components/xiao/playground/components/editor-layout/file.vue
  • docs/components/xiao/playground/components/editor-layout/utils.ts
  • docs/components/xiao/playground/components/editor.vue
  • docs/components/xiao/playground/components/result/editor/advance.vue
  • docs/components/xiao/playground/components/result/editor/body.vue
  • docs/components/xiao/playground/components/result/editor/editor.vue
  • docs/components/xiao/playground/components/result/result.vue
  • docs/components/xiao/playground/components/tab.vue
  • docs/components/xiao/playground/monaco.ts
  • docs/components/xiao/playground/playground.vue
  • docs/components/xiao/playground/storage.ts
  • docs/components/xiao/playground/store.ts
  • docs/components/xiao/playground/theme/latte.json
  • docs/components/xiao/playground/theme/mocha.json
  • docs/components/xiao/playground/types.ts
  • docs/components/xiao/playground/utils.ts
  • docs/components/xiao/preview/preview.vue
  • docs/components/xiao/table-editor/table-editor.vue
  • docs/components/xiao/table-of-content.ts
  • docs/components/xiao/tutorial-link.vue
  • docs/eden/installation.md
  • docs/eden/overview.mdx
  • docs/eden/treaty/legacy.md
  • docs/eden/treaty/response.md
  • docs/essential/best-practice.mdx
  • docs/essential/handler.mdx
  • docs/essential/life-cycle.mdx
  • docs/essential/plugin.mdx
  • docs/essential/route.mdx
  • docs/essential/validation.mdx
  • docs/illust.mdx
  • docs/index.mdx
  • docs/integrations/astro.md
  • docs/integrations/better-auth.md
  • docs/integrations/cloudflare-worker.md
  • docs/integrations/drizzle.md
  • docs/integrations/expo.md
  • docs/integrations/netlify.md
  • docs/integrations/nextjs.md
  • docs/integrations/node.md
  • docs/integrations/nuxt.md
  • docs/integrations/prisma.md
  • docs/integrations/react-email.md
  • docs/integrations/tanstack-start.md
  • docs/integrations/vercel.md
  • docs/internal/jit-compiler.mdx
  • docs/internal/jit-compiler/jit.vue
  • docs/key-concept.mdx
  • docs/patterns/cookie.mdx
  • docs/patterns/deploy.md
  • docs/patterns/error-handling.mdx
  • docs/patterns/extends-context.mdx
  • docs/patterns/fullstack-dev-server.md
  • docs/patterns/macro.mdx
  • docs/patterns/mount.mdx
  • docs/patterns/openapi.mdx
  • docs/patterns/trace.md
  • docs/patterns/typebox.mdx
  • docs/patterns/typescript.mdx
  • docs/patterns/unit-test.mdx
  • docs/playground/index.mdx
  • docs/playground/preview.mdx
  • docs/plugins/jwt.md
  • docs/plugins/openapi.mdx
  • docs/plugins/opentelemetry.md
  • docs/plugins/swagger.md
  • docs/quick-start.mdx
  • docs/table-of-content.mdx
  • docs/tailwind.css
  • docs/tutorial/data.ts
  • docs/tutorial/features/end-to-end-type-safety/data.ts
  • docs/tutorial/features/end-to-end-type-safety/index.mdx
  • docs/tutorial/features/mount/data.ts
  • docs/tutorial/features/mount/index.mdx
  • docs/tutorial/features/openapi/data.ts
  • docs/tutorial/features/openapi/index.mdx
  • docs/tutorial/features/unit-test/data.ts
  • docs/tutorial/features/unit-test/index.mdx
  • docs/tutorial/getting-started/encapsulation/data.ts
  • docs/tutorial/getting-started/encapsulation/index.mdx
  • docs/tutorial/getting-started/guard/data.ts
  • docs/tutorial/getting-started/guard/index.mdx
  • docs/tutorial/getting-started/handler-and-context/data.ts
  • docs/tutorial/getting-started/handler-and-context/index.mdx
  • docs/tutorial/getting-started/life-cycle/data.ts
  • docs/tutorial/getting-started/life-cycle/index.mdx
  • docs/tutorial/getting-started/plugin/data.ts
  • docs/tutorial/getting-started/plugin/index.mdx
  • docs/tutorial/getting-started/status-and-headers/data.ts
  • docs/tutorial/getting-started/status-and-headers/index.mdx
  • docs/tutorial/getting-started/validation/data.ts
  • docs/tutorial/getting-started/validation/index.mdx
  • docs/tutorial/getting-started/your-first-route/data.ts
  • docs/tutorial/getting-started/your-first-route/index.mdx
  • docs/tutorial/index.mdx
  • docs/tutorial/patterns/cookie/data.ts
  • docs/tutorial/patterns/cookie/index.mdx
  • docs/tutorial/patterns/error-handling/data.ts
  • docs/tutorial/patterns/error-handling/index.mdx
  • docs/tutorial/patterns/extends-context/data.ts
  • docs/tutorial/patterns/extends-context/index.mdx
  • docs/tutorial/patterns/macro/data.ts
  • docs/tutorial/patterns/macro/index.mdx
  • docs/tutorial/patterns/standalone-schema/data.ts
  • docs/tutorial/patterns/standalone-schema/index.mdx
  • docs/tutorial/patterns/validation-error/data.ts
  • docs/tutorial/patterns/validation-error/index.mdx
  • docs/tutorial/whats-next.mdx
  • dump.rdb
  • package.json
  • rspress.config.ts
  • theme/AskElysia.tsx
  • theme/CodeGroup.tsx
  • theme/Header.tsx
  • theme/arona-client.ts
  • theme/ask-elysia.css
  • theme/header.css
  • theme/home/Home.tsx
  • theme/home/home.css
  • theme/index.tsx
  • theme/remark-code-groups.ts
  • theme/rspress.css
  • theme/showcase/Chart.tsx
  • theme/showcase/Showcase.tsx
  • theme/showcase/chart.css
  • theme/showcase/showcase.css
  • theme/site-components.ts
  • theme/sponsors.ts
  • theme/tutorial/Tutorial.tsx
  • theme/tutorial/data-types.ts
  • theme/tutorial/table-of-content.ts
  • theme/tutorial/tutorial.css
  • theme/types.d.ts
  • theme/widgets/Widgets.tsx
  • theme/widgets/widgets.css
  • tsconfig.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@Nsttt
Nsttt marked this pull request as ready for review July 30, 2026 10:42
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