Skip to content

feat: v2 - #1593

Merged
dinwwwh merged 16 commits into
middleapi:mainfrom
dinwwwh:feat/v2
Jun 21, 2026
Merged

feat: v2#1593
dinwwwh merged 16 commits into
middleapi:mainfrom
dinwwwh:feat/v2

Conversation

@dinwwwh

@dinwwwh dinwwwh commented Jun 21, 2026

Copy link
Copy Markdown
Member

No description provided.

@pullfrog

pullfrog Bot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor
  • Read diff TOC and PR summary; triage the PR scope
  • Dispatch parallel reviewfrog lenses (correctness, impact, integration)
  • Aggregate findings & draft review
  • Submit review via pullfrog_create_pull_request_review

Pullfrog  | View workflow run | via Pullfrog | Using DeepSeek Pro (free via Pullfrog for OSS) | 𝕏

@dosubot dosubot Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files. label Jun 21, 2026
@vercel

vercel Bot commented Jun 21, 2026

Copy link
Copy Markdown

@dinwwwh is attempting to deploy a commit to the Dinh Le Team on Vercel.

A member of the Team first needs to authorize it.

@dosubot dosubot Bot added documentation Improvements or additions to documentation enhancement New feature or request labels Jun 21, 2026
@coderabbitai

coderabbitai Bot commented Jun 21, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 300 files, which is 150 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type 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.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 64cf49fc-5839-4b29-bb91-6a9a24aa0db4

📥 Commits

Reviewing files that changed from the base of the PR and between 23c77c3 and 3d1cf5b.

📒 Files selected for processing (300)
  • .env.example
  • .github/FUNDING.yml
  • .github/dependabot.yml
  • .github/workflows/ci.yaml
  • .github/workflows/pullfrog.yml
  • .github/workflows/release.yaml
  • .github/workflows/sponsors-sync.yaml
  • README.md
  • apps/content/.vitepress/config.ts
  • apps/content/blog/v1-announcement.md
  • apps/content/docs/adapters/astro.md
  • apps/content/docs/adapters/browser.md
  • apps/content/docs/adapters/electron.md
  • apps/content/docs/adapters/elysia.md
  • apps/content/docs/adapters/express.md
  • apps/content/docs/adapters/fastify.md
  • apps/content/docs/adapters/fetch-api.md
  • apps/content/docs/adapters/h3.md
  • apps/content/docs/adapters/hono.md
  • apps/content/docs/adapters/http.md
  • apps/content/docs/adapters/message-port.md
  • apps/content/docs/adapters/next.md
  • apps/content/docs/adapters/node-http.md
  • apps/content/docs/adapters/nuxt.md
  • apps/content/docs/adapters/react-native.md
  • apps/content/docs/adapters/remix.md
  • apps/content/docs/adapters/solid-start.md
  • apps/content/docs/adapters/svelte-kit.md
  • apps/content/docs/adapters/tanstack-start.md
  • apps/content/docs/adapters/web-workers.md
  • apps/content/docs/adapters/websocket.md
  • apps/content/docs/adapters/worker-threads.md
  • apps/content/docs/advanced/building-custom-plugins.md
  • apps/content/docs/advanced/exceeds-the-maximum-length-problem.md
  • apps/content/docs/advanced/expanding-type-support-for-openapi-link.md
  • apps/content/docs/advanced/extend-body-parser.md
  • apps/content/docs/advanced/publish-client-to-npm.md
  • apps/content/docs/advanced/rpc-json-serializer.md
  • apps/content/docs/advanced/rpc-protocol.md
  • apps/content/docs/advanced/scaling-large-projects.md
  • apps/content/docs/advanced/superjson.md
  • apps/content/docs/advanced/testing-and-mocking.md
  • apps/content/docs/advanced/testing-mocking.md
  • apps/content/docs/advanced/validation-errors.md
  • apps/content/docs/best-practices/dedupe-middleware.md
  • apps/content/docs/best-practices/monorepo-setup.md
  • apps/content/docs/best-practices/no-throw-literal.md
  • apps/content/docs/best-practices/optimize-ssr.md
  • apps/content/docs/best-practices/optimizing-ssr.md
  • apps/content/docs/binary-data.md
  • apps/content/docs/client/client-side.md
  • apps/content/docs/client/dynamic-link.md
  • apps/content/docs/client/error-handling.md
  • apps/content/docs/client/event-iterator.md
  • apps/content/docs/client/rpc-link.md
  • apps/content/docs/client/server-side.md
  • apps/content/docs/comparison.md
  • apps/content/docs/context.md
  • apps/content/docs/contract-first/define-contract.md
  • apps/content/docs/contract-first/implement-contract.md
  • apps/content/docs/contract-first/router-to-contract.md
  • apps/content/docs/contract/implementation.md
  • apps/content/docs/contract/procedure.md
  • apps/content/docs/contract/router.md
  • apps/content/docs/ecosystem.md
  • apps/content/docs/error-handling.md
  • apps/content/docs/event-iterator.md
  • apps/content/docs/examples/openai-streaming.md
  • apps/content/docs/file-upload-download.md
  • apps/content/docs/getting-started.md
  • apps/content/docs/helpers/base64url.md
  • apps/content/docs/helpers/cookie.md
  • apps/content/docs/helpers/encryption.md
  • apps/content/docs/helpers/form-data.md
  • apps/content/docs/helpers/publisher.md
  • apps/content/docs/helpers/ratelimit.md
  • apps/content/docs/helpers/signing.md
  • apps/content/docs/integrations/ai-sdk.md
  • apps/content/docs/integrations/better-auth.md
  • apps/content/docs/integrations/durable-iterator.md
  • apps/content/docs/integrations/effect.md
  • apps/content/docs/integrations/evlog.md
  • apps/content/docs/integrations/next.md
  • apps/content/docs/integrations/opentelemetry.md
  • apps/content/docs/integrations/pinia-colada.md
  • apps/content/docs/integrations/pino.md
  • apps/content/docs/integrations/react-swr.md
  • apps/content/docs/integrations/sentry.md
  • apps/content/docs/integrations/tanstack-query-old/basic.md
  • apps/content/docs/integrations/tanstack-query-old/react.md
  • apps/content/docs/integrations/tanstack-query-old/solid.md
  • apps/content/docs/integrations/tanstack-query-old/svelte.md
  • apps/content/docs/integrations/tanstack-query-old/vue.md
  • apps/content/docs/integrations/tanstack-query.md
  • apps/content/docs/metadata.md
  • apps/content/docs/middleware.md
  • apps/content/docs/migrations/from-trpc.md
  • apps/content/docs/openapi/advanced/customizing-error-response.md
  • apps/content/docs/openapi/advanced/disabling-output-validation.md
  • apps/content/docs/openapi/advanced/expanding-type-support-for-openapi-link.md
  • apps/content/docs/openapi/advanced/openapi-json-serializer.md
  • apps/content/docs/openapi/advanced/redirect-response.md
  • apps/content/docs/openapi/bracket-notation.md
  • apps/content/docs/openapi/client/openapi-link.md
  • apps/content/docs/openapi/error-handling.md
  • apps/content/docs/openapi/getting-started.md
  • apps/content/docs/openapi/handler.md
  • apps/content/docs/openapi/input-and-output-mapping.md
  • apps/content/docs/openapi/input-output-structure.md
  • apps/content/docs/openapi/integrations/hey-api.md
  • apps/content/docs/openapi/integrations/implement-contract-in-nest.md
  • apps/content/docs/openapi/integrations/trpc.md
  • apps/content/docs/openapi/link.md
  • apps/content/docs/openapi/openapi-handler.md
  • apps/content/docs/openapi/openapi-specification.md
  • apps/content/docs/openapi/openapi-to-contract.md
  • apps/content/docs/openapi/plugins/openapi-reference.md
  • apps/content/docs/openapi/plugins/smart-coercion.md
  • apps/content/docs/openapi/plugins/zod-smart-coercion.md
  • apps/content/docs/openapi/routing.md
  • apps/content/docs/openapi/scalar.md
  • apps/content/docs/openapi/serializer.md
  • apps/content/docs/openapi/specification.md
  • apps/content/docs/playgrounds.md
  • apps/content/docs/plugins/batch-requests.md
  • apps/content/docs/plugins/batch.md
  • apps/content/docs/plugins/body-compression.md
  • apps/content/docs/plugins/body-limit.md
  • apps/content/docs/plugins/client-retry.md
  • apps/content/docs/plugins/compression.md
  • apps/content/docs/plugins/cors.md
  • apps/content/docs/plugins/csrf-guard.md
  • apps/content/docs/plugins/dedupe-requests.md
  • apps/content/docs/plugins/dedupe.md
  • apps/content/docs/plugins/hibernation.md
  • apps/content/docs/plugins/openapi-reference.md
  • apps/content/docs/plugins/request-headers.md
  • apps/content/docs/plugins/request-validation.md
  • apps/content/docs/plugins/response-headers.md
  • apps/content/docs/plugins/response-validation.md
  • apps/content/docs/plugins/rethrow-handler.md
  • apps/content/docs/plugins/retry-after.md
  • apps/content/docs/plugins/retry.md
  • apps/content/docs/plugins/simple-csrf-protection.md
  • apps/content/docs/plugins/smart-coercion.md
  • apps/content/docs/plugins/strict-get-method.md
  • apps/content/docs/procedure.md
  • apps/content/docs/router.md
  • apps/content/docs/rpc-handler.md
  • apps/content/docs/rpc/handler.md
  • apps/content/docs/rpc/link.md
  • apps/content/docs/rpc/protocol.md
  • apps/content/docs/rpc/serializer.md
  • apps/content/docs/server-action.md
  • apps/content/learn-and-contribute/mini-orpc/beyond-the-basics.md
  • apps/content/package.json
  • apps/content/public/_redirects
  • apps/content/shared/common-error-status-map-table.md
  • apps/content/shared/common-plugin-handler-compatibility.md
  • apps/content/shared/common-plugin-link-compatibility.md
  • apps/content/shared/planet.ts
  • apps/content/shared/router-keys-compatibility-warning.md
  • apps/content/shared/standard-server-cors-warning.md
  • apps/content/vercel.json
  • eslint.config.js
  • knip.json
  • package.json
  • packages/ai-sdk/README.md
  • packages/ai-sdk/package.json
  • packages/ai-sdk/src/index.test.ts
  • packages/ai-sdk/src/index.ts
  • packages/ai-sdk/src/tool.test-d.ts
  • packages/ai-sdk/src/tool.test.ts
  • packages/ai-sdk/src/tool.ts
  • packages/ai-sdk/tsconfig.json
  • packages/arktype/README.md
  • packages/arktype/package.json
  • packages/arktype/src/converter.test.ts
  • packages/arktype/src/converter.ts
  • packages/arktype/src/index.test.ts
  • packages/arktype/tsconfig.json
  • packages/client/README.md
  • packages/client/package.json
  • packages/client/src/adapters/fetch/index.test.ts
  • packages/client/src/adapters/fetch/index.ts
  • packages/client/src/adapters/fetch/link-fetch-client.test.ts
  • packages/client/src/adapters/fetch/link-fetch-client.ts
  • packages/client/src/adapters/fetch/plugin.test-d.ts
  • packages/client/src/adapters/fetch/plugin.test.ts
  • packages/client/src/adapters/fetch/plugin.ts
  • packages/client/src/adapters/fetch/rpc-link.test.ts
  • packages/client/src/adapters/fetch/rpc-link.ts
  • packages/client/src/adapters/fetch/transport.ts
  • packages/client/src/adapters/message-port/index.test.ts
  • packages/client/src/adapters/message-port/index.ts
  • packages/client/src/adapters/message-port/link-client.ts
  • packages/client/src/adapters/message-port/message-port.test.ts
  • packages/client/src/adapters/message-port/message-port.ts
  • packages/client/src/adapters/message-port/rpc-link.test.ts
  • packages/client/src/adapters/message-port/rpc-link.ts
  • packages/client/src/adapters/message-port/transport.ts
  • packages/client/src/adapters/standard/codec.ts
  • packages/client/src/adapters/standard/index.test.ts
  • packages/client/src/adapters/standard/index.ts
  • packages/client/src/adapters/standard/link.test.ts
  • packages/client/src/adapters/standard/link.ts
  • packages/client/src/adapters/standard/plugin.test.ts
  • packages/client/src/adapters/standard/plugin.ts
  • packages/client/src/adapters/standard/rpc-json-serializer.test.ts
  • packages/client/src/adapters/standard/rpc-json-serializer.ts
  • packages/client/src/adapters/standard/rpc-link-codec.test.ts
  • packages/client/src/adapters/standard/rpc-link-codec.ts
  • packages/client/src/adapters/standard/rpc-link.test.ts
  • packages/client/src/adapters/standard/rpc-link.ts
  • packages/client/src/adapters/standard/rpc-serializer.test.ts
  • packages/client/src/adapters/standard/rpc-serializer.ts
  • packages/client/src/adapters/standard/transport.ts
  • packages/client/src/adapters/standard/types.ts
  • packages/client/src/adapters/standard/utils.test.ts
  • packages/client/src/adapters/standard/utils.ts
  • packages/client/src/adapters/websocket/index.test.ts
  • packages/client/src/adapters/websocket/index.ts
  • packages/client/src/adapters/websocket/link-client.ts
  • packages/client/src/adapters/websocket/rpc-link.test.ts
  • packages/client/src/adapters/websocket/rpc-link.ts
  • packages/client/src/adapters/websocket/transport.ts
  • packages/client/src/client-safe.test-d.ts
  • packages/client/src/client-safe.ts
  • packages/client/src/client.test-d.ts
  • packages/client/src/client.test.ts
  • packages/client/src/client.ts
  • packages/client/src/consts.ts
  • packages/client/src/dynamic-link.test-d.ts
  • packages/client/src/dynamic-link.ts
  • packages/client/src/error-utils.test-d.ts
  • packages/client/src/error-utils.test.ts
  • packages/client/src/error-utils.ts
  • packages/client/src/error.test-d.ts
  • packages/client/src/error.test.ts
  • packages/client/src/error.ts
  • packages/client/src/event-iterator.test.ts
  • packages/client/src/event-iterator.ts
  • packages/client/src/index.test.ts
  • packages/client/src/index.ts
  • packages/client/src/plugins/batch.test.ts
  • packages/client/src/plugins/batch.ts
  • packages/client/src/plugins/dedupe-requests.test.ts
  • packages/client/src/plugins/dedupe-requests.ts
  • packages/client/src/plugins/dedupe.test.ts
  • packages/client/src/plugins/dedupe.ts
  • packages/client/src/plugins/index.test.ts
  • packages/client/src/plugins/index.ts
  • packages/client/src/plugins/retry-after.test.ts
  • packages/client/src/plugins/retry-after.ts
  • packages/client/src/plugins/retry.test.ts
  • packages/client/src/plugins/retry.ts
  • packages/client/src/plugins/simple-csrf-protection.test.ts
  • packages/client/src/plugins/simple-csrf-protection.ts
  • packages/client/src/rpc-json-serializer.test.ts
  • packages/client/src/rpc-json-serializer.ts
  • packages/client/src/rpc-serializer.test.ts
  • packages/client/src/rpc-serializer.ts
  • packages/client/src/types.test-d.ts
  • packages/client/src/types.ts
  • packages/client/src/utils.test-d.ts
  • packages/client/src/utils.test.ts
  • packages/client/src/utils.ts
  • packages/client/tests/e2e.test-d.ts
  • packages/client/tests/e2e.test.ts
  • packages/client/tests/helpers.ts
  • packages/client/tests/shared.ts
  • packages/client/tsconfig.json
  • packages/contract/README.md
  • packages/contract/package.json
  • packages/contract/src/builder-variants.test-d.ts
  • packages/contract/src/builder-variants.ts
  • packages/contract/src/builder.test-d.ts
  • packages/contract/src/builder.test.ts
  • packages/contract/src/builder.ts
  • packages/contract/src/caller.test-d.ts
  • packages/contract/src/caller.test.ts
  • packages/contract/src/caller.ts
  • packages/contract/src/config.test.ts
  • packages/contract/src/config.ts
  • packages/contract/src/error-utils.test-d.ts
  • packages/contract/src/error-utils.test.ts
  • packages/contract/src/error-utils.ts
  • packages/contract/src/error.test-d.ts
  • packages/contract/src/error.test.ts
  • packages/contract/src/error.ts
  • packages/contract/src/event-iterator.test.ts
  • packages/contract/src/event-iterator.ts
  • packages/contract/src/index.test.ts
  • packages/contract/src/index.ts
  • packages/contract/src/link-utils.test-d.ts
  • packages/contract/src/link-utils.test.ts
  • packages/contract/src/link-utils.ts
  • packages/contract/src/meta-built-in.test.ts
  • packages/contract/src/meta-built-in.ts
  • packages/contract/src/meta-utils.test.ts

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ 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 and usage tips.

@vercel

vercel Bot commented Jun 21, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
orpc Ready Ready Preview, Comment Jun 21, 2026 12:55pm

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request performs a major restructuring of the oRPC documentation, removing obsolete, framework-specific adapter files and consolidating them into unified guides for the Fetch API, Node HTTP, WebSockets, and Message Ports. It also introduces new documentation for scaling large projects, binary data, and integrations with Effect and Evlog, while updating existing guides to reflect recent API changes. The review feedback correctly identifies several reference errors in the new code snippets—specifically, mismatched imports for CORSPlugin versus CORSHandlerPlugin and a missing import for handler in the SSR optimization guide—along with a minor typo in the blog post.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.


```ts [RPC]
import { RPCHandler } from '@orpc/server/fetch'
import { CORSPlugin } from '@orpc/server/plugins'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The code snippet uses CORSHandlerPlugin on line 16, but imports CORSPlugin on line 11. Please update the import to use CORSHandlerPlugin to avoid a reference error.

Suggested change
import { CORSPlugin } from '@orpc/server/plugins'
import { CORSHandlerPlugin } from '@orpc/server/plugins'


```ts [OpenAPI]
import { OpenAPIHandler } from '@orpc/openapi/fetch'
import { CORSPlugin } from '@orpc/server/plugins'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The code snippet uses CORSHandlerPlugin on line 46, but imports CORSPlugin on line 41. Please update the import to use CORSHandlerPlugin to avoid a reference error.

Suggested change
import { CORSPlugin } from '@orpc/server/plugins'
import { CORSHandlerPlugin } from '@orpc/server/plugins'

import { createServer } from 'node:http'
import { OpenAPIGenerator } from '@orpc/openapi'
import { OpenAPIHandler } from '@orpc/openapi/node'
import { CORSPlugin } from '@orpc/server/plugins'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The code snippet uses CORSHandlerPlugin on line 22, but imports CORSPlugin on line 17. Please update the import to use CORSHandlerPlugin to avoid a reference error.

Suggested change
import { CORSPlugin } from '@orpc/server/plugins'
import { CORSHandlerPlugin } from '@orpc/server/plugins'

Comment on lines +71 to +72
import type { RouterClient } from '@orpc/server'
import { headers } from 'next/headers'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The handler instance is used on line 80 but is not imported or defined in this file. Please import handler from your route file to ensure the code snippet is complete and correct.

Suggested change
import type { RouterClient } from '@orpc/server'
import { headers } from 'next/headers'
import type { RouterClient } from '@orpc/server'
import { headers } from 'next/headers'
import { handler } from '@/app/rpc/[[...rest]]/route'

- And my first sponsor (private) to start my story

If you're interested in sponsoring oRPC, you can do it [here](https://github.com/sponsors/dinwwwh).
If you're interesting in sponsoring oRPC, you can do it [here](https://github.com/sponsors/unnoq).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

There is a typo in this sentence: "interesting" should be "interested".

Suggested change
If you're interesting in sponsoring oRPC, you can do it [here](https://github.com/sponsors/unnoq).
If you're interested in sponsoring oRPC, you can do it [here](https://github.com/sponsors/unnoq).

@codecov

codecov Bot commented Jun 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@pkg-pr-new

pkg-pr-new Bot commented Jun 21, 2026

Copy link
Copy Markdown
@orpc/arktype

npm i https://pkg.pr.new/middleapi/orpc/@orpc/arktype@1593

@orpc/client

npm i https://pkg.pr.new/middleapi/orpc/@orpc/client@1593

@orpc/contract

npm i https://pkg.pr.new/middleapi/orpc/@orpc/contract@1593

@orpc/experimental-effect

npm i https://pkg.pr.new/middleapi/orpc/@orpc/experimental-effect@1593

@orpc/evlog

npm i https://pkg.pr.new/middleapi/orpc/@orpc/evlog@1593

@orpc/interop

npm i https://pkg.pr.new/middleapi/orpc/@orpc/interop@1593

@orpc/json-schema

npm i https://pkg.pr.new/middleapi/orpc/@orpc/json-schema@1593

@orpc/next

npm i https://pkg.pr.new/middleapi/orpc/@orpc/next@1593

@orpc/openapi

npm i https://pkg.pr.new/middleapi/orpc/@orpc/openapi@1593

@orpc/opentelemetry

npm i https://pkg.pr.new/middleapi/orpc/@orpc/opentelemetry@1593

@orpc/pino

npm i https://pkg.pr.new/middleapi/orpc/@orpc/pino@1593

@orpc/publisher

npm i https://pkg.pr.new/middleapi/orpc/@orpc/publisher@1593

@orpc/ratelimit

npm i https://pkg.pr.new/middleapi/orpc/@orpc/ratelimit@1593

@orpc/server

npm i https://pkg.pr.new/middleapi/orpc/@orpc/server@1593

@orpc/shared

npm i https://pkg.pr.new/middleapi/orpc/@orpc/shared@1593

@orpc/tanstack-query

npm i https://pkg.pr.new/middleapi/orpc/@orpc/tanstack-query@1593

@orpc/valibot

npm i https://pkg.pr.new/middleapi/orpc/@orpc/valibot@1593

@orpc/zod

npm i https://pkg.pr.new/middleapi/orpc/@orpc/zod@1593

commit: 3d1cf5b

@dinwwwh
dinwwwh merged commit ddf222a into middleapi:main Jun 21, 2026
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant