[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10265":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":44,"readmeContent":45,"aiSummary":46,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":47,"discoverSource":48},10265,"orpc","middleapi\u002Forpc","middleapi","Typesafe APIs Made Simple 🪄","https:\u002F\u002Forpc.dev",null,"TypeScript",5299,148,13,72,0,2,27,90,15,37.52,"MIT License",false,"main",true,[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"api","bunjs","cloudflare-worker","contract-first","denojs","next-js","nodejs","openapi","pinia-vuejs","react","rpc-api","solidjs","svelte","tanstack","typesafe","typescript","vue","2026-06-12 02:02:19","\u003Cdiv align=\"center\">\n  \u003Cimage align=\"center\" src=\"https:\u002F\u002Forpc.dev\u002Flogo.webp\" width=280 alt=\"oRPC logo\" \u002F>\n\u003C\u002Fdiv>\n\n\u003Ch1>\u003C\u002Fh1>\n\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fcodecov.io\u002Fgh\u002Fmiddleapi\u002Forpc\">\n    \u003Cimg alt=\"codecov\" src=\"https:\u002F\u002Fcodecov.io\u002Fgh\u002Fmiddleapi\u002Forpc\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fclient\">\n    \u003Cimg alt=\"weekly downloads\" src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdw\u002F%40orpc%2Fclient?logo=npm\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmiddleapi\u002Forpc\u002Fblob\u002Fmain\u002FLICENSE\">\n    \u003Cimg alt=\"MIT License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fmiddleapi\u002Forpc?logo=open-source-initiative\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FTXEbwRBvQn\">\n    \u003Cimg alt=\"Discord\" src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1308966753044398161?color=7389D8&label&logo=discord&logoColor=ffffff\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdeepwiki.com\u002Fmiddleapi\u002Forpc\">\n    \u003Cimg src=\"https:\u002F\u002Fdeepwiki.com\u002Fbadge.svg\" alt=\"Ask DeepWiki\">\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Ch3 align=\"center\">Typesafe APIs Made Simple 🪄\u003C\u002Fh3>\n\n**oRPC is a powerful combination of RPC and OpenAPI**, makes it easy to build APIs that are end-to-end type-safe and adhere to OpenAPI standards\n\n---\n\n## Highlights\n\n- **🔗 End-to-End Type Safety**: Ensure type-safe inputs, outputs, and errors from client to server.\n- **📘 First-Class OpenAPI**: Built-in support that fully adheres to the OpenAPI standard.\n- **📝 Contract-First Development**: Optionally define your API contract before implementation.\n- **🔍 First-Class OpenTelemetry**: Seamlessly integrate with OpenTelemetry for observability.\n- **⚙️ Framework Integrations**: Seamlessly integrate with TanStack Query (React, Vue, Solid, Svelte, Angular), SWR, Pinia Colada, and more.\n- **🚀 Server Actions**: Fully compatible with React Server Actions on Next.js, TanStack Start, and other platforms.\n- **🔠 Standard Schema Support**: Works out of the box with Zod, Valibot, ArkType, and other schema validators.\n- **🗃️ Native Types**: Supports native types like Date, File, Blob, BigInt, URL, and more.\n- **⏱️ Lazy Router**: Enhance cold start times with our lazy routing feature.\n- **📡 SSE & Streaming**: Enjoy full type-safe support for SSE and streaming.\n- **🌍 Multi-Runtime Support**: Fast and lightweight on Cloudflare, Deno, Bun, Node.js, and beyond.\n- **🔌 Extendability**: Easily extend functionality with plugins, middleware, and interceptors.\n\n## Documentation\n\nYou can find the full documentation [here](https:\u002F\u002Forpc.dev).\n\n## Packages\n\n- [@orpc\u002Fcontract](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fcontract): Build your API contract.\n- [@orpc\u002Fserver](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fserver): Build your API or implement API contract.\n- [@orpc\u002Fclient](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fclient): Consume your API on the client with type-safety.\n- [@orpc\u002Fopenapi](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fopenapi): Generate OpenAPI specs and handle OpenAPI requests.\n- [@orpc\u002Fotel](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fotel): [OpenTelemetry](https:\u002F\u002Fopentelemetry.io\u002F) integration for observability.\n- [@orpc\u002Fnest](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fnest): Deeply integrate oRPC with [NestJS](https:\u002F\u002Fnestjs.com\u002F).\n- [@orpc\u002Freact](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Freact): Utilities for integrating oRPC with React and React Server Actions.\n- [@orpc\u002Ftanstack-query](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Ftanstack-query): [TanStack Query](https:\u002F\u002Ftanstack.com\u002Fquery\u002Flatest) integration.\n- [@orpc\u002Fexperimental-react-swr](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fexperimental-react-swr): [SWR](https:\u002F\u002Fswr.vercel.app\u002F) integration.\n- [@orpc\u002Fvue-colada](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fvue-colada): Integration with [Pinia Colada](https:\u002F\u002Fpinia-colada.esm.dev\u002F).\n- [@orpc\u002Fhey-api](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fhey-api): [Hey API](https:\u002F\u002Fheyapi.dev\u002F) integration.\n- [@orpc\u002Fzod](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fzod): More schemas that [Zod](https:\u002F\u002Fzod.dev\u002F) doesn't support yet.\n- [@orpc\u002Fvalibot](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Fvalibot): OpenAPI spec generation from [Valibot](https:\u002F\u002Fvalibot.dev\u002F).\n- [@orpc\u002Farktype](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@orpc\u002Farktype): OpenAPI spec generation from [ArkType](https:\u002F\u002Farktype.io\u002F).\n\n## Overview\n\nThis is a quick overview of how to use oRPC. For more details, please refer to the [documentation](https:\u002F\u002Forpc.dev).\n\n1. **Define your router:**\n\n   ```ts\n   import type { IncomingHttpHeaders } from 'node:http'\n   import { ORPCError, os } from '@orpc\u002Fserver'\n   import * as z from 'zod'\n\n   const PlanetSchema = z.object({\n     id: z.number().int().min(1),\n     name: z.string(),\n     description: z.string().optional(),\n   })\n\n   export const listPlanet = os\n     .input(\n       z.object({\n         limit: z.number().int().min(1).max(100).optional(),\n         cursor: z.number().int().min(0).default(0),\n       }),\n     )\n     .handler(async ({ input }) => {\n       \u002F\u002F your list code here\n       return [{ id: 1, name: 'name' }]\n     })\n\n   export const findPlanet = os\n     .input(PlanetSchema.pick({ id: true }))\n     .handler(async ({ input }) => {\n       \u002F\u002F your find code here\n       return { id: 1, name: 'name' }\n     })\n\n   export const createPlanet = os\n     .$context\u003C{ headers: IncomingHttpHeaders }>()\n     .use(({ context, next }) => {\n       const user = parseJWT(context.headers.authorization?.split(' ')[1])\n\n       if (user) {\n         return next({ context: { user } })\n       }\n\n       throw new ORPCError('UNAUTHORIZED')\n     })\n     .input(PlanetSchema.omit({ id: true }))\n     .handler(async ({ input, context }) => {\n       \u002F\u002F your create code here\n       return { id: 1, name: 'name' }\n     })\n\n   export const router = {\n     planet: {\n       list: listPlanet,\n       find: findPlanet,\n       create: createPlanet\n     }\n   }\n   ```\n\n2. **Create your server:**\n\n   ```ts\n   import { createServer } from 'node:http'\n   import { RPCHandler } from '@orpc\u002Fserver\u002Fnode'\n   import { CORSPlugin } from '@orpc\u002Fserver\u002Fplugins'\n\n   const handler = new RPCHandler(router, {\n     plugins: [new CORSPlugin()]\n   })\n\n   const server = createServer(async (req, res) => {\n     const result = await handler.handle(req, res, {\n       context: { headers: req.headers }\n     })\n\n     if (!result.matched) {\n       res.statusCode = 404\n       res.end('No procedure matched')\n     }\n   })\n\n   server.listen(\n     3000,\n     '127.0.0.1',\n     () => console.log('Listening on 127.0.0.1:3000')\n   )\n   ```\n\n3. **Create your client:**\n\n   ```ts\n   import type { RouterClient } from '@orpc\u002Fserver'\n   import { createORPCClient } from '@orpc\u002Fclient'\n   import { RPCLink } from '@orpc\u002Fclient\u002Ffetch'\n\n   const link = new RPCLink({\n     url: 'http:\u002F\u002F127.0.0.1:3000',\n     headers: { Authorization: 'Bearer token' },\n   })\n\n   export const orpc: RouterClient\u003Ctypeof router> = createORPCClient(link)\n   ```\n\n4. **Consume your API:**\n\n   ```ts\n   import { orpc } from '.\u002Fclient'\n\n   const planets = await orpc.planet.list({ limit: 10 })\n   ```\n\n5. **Generate OpenAPI Spec:**\n\n   ```ts\n   import { OpenAPIGenerator } from '@orpc\u002Fopenapi'\n   import { ZodToJsonSchemaConverter } from '@orpc\u002Fzod\u002Fzod4'\n\n   const generator = new OpenAPIGenerator({\n     schemaConverters: [new ZodToJsonSchemaConverter()]\n   })\n\n   const spec = await generator.generate(router, {\n     info: {\n       title: 'Planet API',\n       version: '1.0.0'\n     }\n   })\n\n   console.log(spec)\n   ```\n\n## Sponsors\n\nIf you find oRPC valuable and would like to support its development, you can do so here: [GitHub Sponsors](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdinwwwh).\n\n### 🏆 Platinum Sponsor\n\n\u003Ctable>\n  \u003Ctr>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fscreenshotone.com\u002F?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"ScreenshotOne.com\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F97035603?v=4\" width=\"279\" alt=\"ScreenshotOne.com\"\u002F>\u003Cbr \u002F>ScreenshotOne.com\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### 🥈 Silver Sponsor\n\n\u003Ctable>\n  \u003Ctr>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fmisskey.io\u002F?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"村上さん\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F37681609?u=0dd4c7e4ba937cbb52b068c55914b1d8164dc0c7&amp;v=4\" width=\"209\" alt=\"村上さん\"\u002F>\u003Cbr \u002F>村上さん\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### Generous Sponsors\n\n\u003Ctable>\n  \u003Ctr>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fln-markets?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"LN Markets\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F70597625?v=4\" width=\"167\" alt=\"LN Markets\"\u002F>\u003Cbr \u002F>LN Markets\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### Sponsors\n\n\u003Ctable>\n  \u003Ctr>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhrmcdonald?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Reece McDonald\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F39349270?v=4\" width=\"139\" alt=\"Reece McDonald\"\u002F>\u003Cbr \u002F>Reece McDonald\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FnicognaW?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"nk\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F66731869?u=4699bda3a9092d3ec34fbd959450767bcc8b8b6d&amp;v=4\" width=\"139\" alt=\"nk\"\u002F>\u003Cbr \u002F>nk\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsupastarter?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"supastarter\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F110960143?v=4\" width=\"139\" alt=\"supastarter\"\u002F>\u003Cbr \u002F>supastarter\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdivmgl?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Dexter Miguel\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5452298?u=645993204be8696c085ecf0d228c3062efe2ed65&amp;v=4\" width=\"139\" alt=\"Dexter Miguel\"\u002F>\u003Cbr \u002F>Dexter Miguel\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fherrfugbaum?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"herrfugbaum\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F12859776?u=644dc1666d0220bc0468eb0de3c56b919f635b16&amp;v=4\" width=\"139\" alt=\"herrfugbaum\"\u002F>\u003Cbr \u002F>herrfugbaum\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fryota-murakami?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Ryota Murakami\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5501268?u=599389e03340734325726ca3f8f423c021d47d7f&amp;v=4\" width=\"139\" alt=\"Ryota Murakami\"\u002F>\u003Cbr \u002F>Ryota Murakami\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdcramer?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"David Cramer\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F23610?v=4\" width=\"139\" alt=\"David Cramer\"\u002F>\u003Cbr \u002F>David Cramer\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvalerii15298?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Valerii Petryniak\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F44531564?u=88ac74d9bacd20401518441907acad21063cd397&amp;v=4\" width=\"139\" alt=\"Valerii Petryniak\"\u002F>\u003Cbr \u002F>Valerii Petryniak\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fletstri?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Valerii Strilets\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13253748?u=c7b10399ccc8f8081e24db94ec32cd9858e86ac3&amp;v=4\" width=\"139\" alt=\"Valerii Strilets\"\u002F>\u003Cbr \u002F>Valerii Strilets\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FK-Mistele?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Kyle Mistele\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F18430555?u=3afebeb81de666e35aaac3ed46f14159d7603ffb&amp;v=4\" width=\"139\" alt=\"Kyle Mistele\"\u002F>\u003Cbr \u002F>Kyle Mistele\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fandrewpeters9?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Andrew Peters\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F36251325?v=4\" width=\"139\" alt=\"Andrew Peters\"\u002F>\u003Cbr \u002F>Andrew Peters\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FR44VC0RP?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Ryan Vogel\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F89211796?u=1857347b9787d8d8a7ea5bfc333f96be92d5a683&amp;v=4\" width=\"139\" alt=\"Ryan Vogel\"\u002F>\u003Cbr \u002F>Ryan Vogel\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchrist12938?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"christ12938\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25758598?v=4\" width=\"139\" alt=\"christ12938\"\u002F>\u003Cbr \u002F>christ12938\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpeter-adam-dy?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Peter Adam\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F132129459?u=4f3dbbb3b443990b56acb7d6a5d11ed2c555f6db&amp;v=4\" width=\"139\" alt=\"Peter Adam\"\u002F>\u003Cbr \u002F>Peter Adam\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyukimotochern?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Chen, Zhi-Yuan\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20896173?u=945c33fc21725e4d566a0d02afc54b136ca1d67a&amp;v=4\" width=\"139\" alt=\"Chen, Zhi-Yuan\"\u002F>\u003Cbr \u002F>Chen, Zhi-Yuan\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FRyanjso?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Ryan Soderberg\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F39172778?u=5ed913c31d57e7221b75784abcad48c7ebddde27&amp;v=4\" width=\"139\" alt=\"Ryan Soderberg\"\u002F>\u003Cbr \u002F>Ryan Soderberg\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### Backers\n\n\u003Ctable>\n  \u003Ctr>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frhinodavid?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"David Walsh\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5778036?u=b5521f07d2f88c3db2a0dae62b5f2f8357214af0&amp;v=4\" width=\"119\" alt=\"David Walsh\"\u002F>\u003Cbr \u002F>David Walsh\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FRobbe95?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Robbe Vaes\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F44748019?u=e0232402c045ad4eac7cbd217f1f47e083103b89&amp;v=4\" width=\"119\" alt=\"Robbe Vaes\"\u002F>\u003Cbr \u002F>Robbe Vaes\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faidansunbury?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Aidan Sunbury\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F64103161?v=4\" width=\"119\" alt=\"Aidan Sunbury\"\u002F>\u003Cbr \u002F>Aidan Sunbury\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsoonoo?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"soonoo\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5436405?u=5d0b4aa955c87e30e6bda7f0cccae5402da99528&amp;v=4\" width=\"119\" alt=\"soonoo\"\u002F>\u003Cbr \u002F>soonoo\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fkporten?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Kevin Porten\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1839345?u=dc2263d5cfe0d927ce1a0be04a1d55dd6b55405c&amp;v=4\" width=\"119\" alt=\"Kevin Porten\"\u002F>\u003Cbr \u002F>Kevin Porten\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpumpkinlink?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Denis\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11864620?u=5f47bbe6c65d0f6f5cf011021490238e4b0593d0&amp;v=4\" width=\"119\" alt=\"Denis\"\u002F>\u003Cbr \u002F>Denis\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchristopher-kapic?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Christopher Kapic\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F59740769?u=e7ad4b72b5bf6c9eb1644c26dbf3332a8f987377&amp;v=4\" width=\"119\" alt=\"Christopher Kapic\"\u002F>\u003Cbr \u002F>Christopher Kapic\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fthomasballinger?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Tom Ballinger\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F458879?u=4b045ac75d721b6ac2b42a74d7d37f61f0414031&amp;v=4\" width=\"119\" alt=\"Tom Ballinger\"\u002F>\u003Cbr \u002F>Tom Ballinger\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSSam0419?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Sam\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F102863520?u=3c89611f549d5070be232eb4532f690c8f2e7a65&amp;v=4\" width=\"119\" alt=\"Sam\"\u002F>\u003Cbr \u002F>Sam\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTitoine?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Titoine\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3514286?u=1bb1e86b0c99c8a1121372e56d51a177eea12191&amp;v=4\" width=\"119\" alt=\"Titoine\"\u002F>\u003Cbr \u002F>Titoine\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FMnigos?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Igor Makowski\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F56691628?u=ee8c879478f7c151b9156aef6c74243fa3e247a8&amp;v=4\" width=\"119\" alt=\"Igor Makowski\"\u002F>\u003Cbr \u002F>Igor Makowski\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsteelbrain?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Anees Iqbal\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4278113?u=22b80b5399eed68ac76cd58b02961b0481f1db11&amp;v=4\" width=\"119\" alt=\"Anees Iqbal\"\u002F>\u003Cbr \u002F>Anees Iqbal\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhanayashiki?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"wang chenyu\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F26056783?u=06c3b9205a16fd41a871e82da1cc2a09306d53f5&amp;v=4\" width=\"119\" alt=\"wang chenyu\"\u002F>\u003Cbr \u002F>wang chenyu\u003C\u002Fa>\u003C\u002Ftd>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpiscis?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Alex\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F326163?u=b245f368bd940cf51d08c0b6bf55f8257f359437&amp;v=4\" width=\"119\" alt=\"Alex\"\u002F>\u003Cbr \u002F>Alex\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnattstack?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"nattstack\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F31426677?u=fa9dbb8b3e66eb0ea3c88db5dc07f31c8c5418fe&amp;v=4\" width=\"119\" alt=\"nattstack\"\u002F>\u003Cbr \u002F>nattstack\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### Past Sponsors\n\n\u003Cp>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FMrMaxie?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Maxie\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3857836?u=5e6b57973d4385d655663ffdd836e487856f2984&amp;v=4\" width=\"32\" height=\"32\" alt=\"Maxie\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FStijn-Timmer?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Stijn Timmer\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F100147665?u=106b2c18e9c98a61861b4ee7fc100f5b9906a6c9&amp;v=4\" width=\"32\" height=\"32\" alt=\"Stijn Timmer\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fu1-liquid?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"あわわわとーにゅ\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F17376330?u=de3353804be889f009f7e0a1582daf04d0ab292d&amp;v=4\" width=\"32\" height=\"32\" alt=\"あわわわとーにゅ\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzuplo?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Zuplo\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F85497839?v=4\" width=\"32\" height=\"32\" alt=\"Zuplo\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmotopods?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"motopods\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F58200641?u=18833983d65b481ae90a4adec2373064ec58bcf3&amp;v=4\" width=\"32\" height=\"32\" alt=\"motopods\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffranciscohermida?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Francisco Hermida\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F483242?u=bbcbc80eb9d8781ff401f7dafc3b59cd7bea0561&amp;v=4\" width=\"32\" height=\"32\" alt=\"Francisco Hermida\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftheoludwig?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Théo LUDWIG\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25207499?u=a6a9653725a2f574c07893748806668e0598cdbe&amp;v=4\" width=\"32\" height=\"32\" alt=\"Théo LUDWIG\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fabhay-ramesh?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Abhay Ramesh\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F66196314?u=c5c2b0327b26606c2efcfaf17046ab18c3d25c57&amp;v=4\" width=\"32\" height=\"32\" alt=\"Abhay Ramesh\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fshr-ink?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"shr.ink oü\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F139700438?v=4\" width=\"32\" height=\"32\" alt=\"shr.ink oü\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjohngerome?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"0x4e32\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2002000?u=24e8dd943cfc862aa284d858a023532c75071ade&amp;v=4\" width=\"32\" height=\"32\" alt=\"0x4e32\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyzuyr?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Ryuz\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F196539378?u=d38374588d219b6748b16406982f6559411466d4&amp;v=4\" width=\"32\" height=\"32\" alt=\"Ryuz\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhappyboy2022?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"happyboy\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103669586?u=65b49c4b893ed3703909fbb3a7a22313f3f9c121&amp;v=4\" width=\"32\" height=\"32\" alt=\"happyboy\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FYiCChi?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"yicchi\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F86967274?u=6c2756f09fe15dd94d572f560e979cd157982852&amp;v=4\" width=\"32\" height=\"32\" alt=\"yicchi\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcloudycotton?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Saksham\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F168998965?u=9b9634a5aed66a51c1b880663272725b00b92b14&amp;v=4\" width=\"32\" height=\"32\" alt=\"Saksham\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhrynevychroman?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Roman Hrynevych\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F82209198?u=1a1d111ab3d589855b9cc8a7fefb1b5c6a4fbbaf&amp;v=4\" width=\"32\" height=\"32\" alt=\"Roman Hrynevych\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frokitgg?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"rokitg\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F125133357?u=06c74aefaa2236b06a2e5fba5a5c612339f45912&amp;v=4\" width=\"32\" height=\"32\" alt=\"rokitg\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fomarkhatibgg?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Omar Khatib\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9054278?u=afbba7331b85c51b8eee4130f5fd31b1017dc919&amp;v=4\" width=\"32\" height=\"32\" alt=\"Omar Khatib\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FYuSabo90002?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Yu-Sabo\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13120582?v=4\" width=\"32\" height=\"32\" alt=\"Yu-Sabo\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbapspatil?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Bapusaheb Patil\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F16699418?v=4\" width=\"32\" height=\"32\" alt=\"Bapusaheb Patil\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fripgrim?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"grim\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F75869731?u=b17c42ec2309552fdb822a86b25a2f99146a4d72&amp;v=4\" width=\"32\" height=\"32\" alt=\"grim\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnelsonlaidev?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Nelson Lai\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F75498339?u=2fc0e0b95dd184c5ffb744df977cb15a18b60672&amp;v=4\" width=\"32\" height=\"32\" alt=\"Nelson Lai\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnguyenlc1993?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Lê Cao Nguyên\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13871971?u=83c8b69d9e35b589c4e1f066cc113b1d9461386f&amp;v=4\" width=\"32\" height=\"32\" alt=\"Lê Cao Nguyên\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwobsoriano?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Robert Soriano\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13049130?u=6d72104182e7c9ed25934815313fb69107332111&amp;v=4\" width=\"32\" height=\"32\" alt=\"Robert Soriano\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSKostyukovich?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"SKostyukovich\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10700067?v=4\" width=\"32\" height=\"32\" alt=\"SKostyukovich\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FFabworksHQ?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Fabworks\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F160179500?v=4\" width=\"32\" height=\"32\" alt=\"Fabworks\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNovakAnton?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Novak Antonijevic\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F157126729?u=ae49fa22292d55c0434ff0ca008206155b18663b&amp;v=4\" width=\"32\" height=\"32\" alt=\"Novak Antonijevic\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fladuniestu?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Laduni Estu Syalwa\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F44757637?u=a2fc1ea8f7d827a96721176f79d30592d1c48059&amp;v=4\" width=\"32\" height=\"32\" alt=\"Laduni Estu Syalwa\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fillarionvk?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Illarion Koperski\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5012724?u=7cfa13652f7ac5fb3c56d880e3eb3fbe40c3ea34&amp;v=4\" width=\"32\" height=\"32\" alt=\"Illarion Koperski\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FScrumplex?ref=orpc\" target=\"_blank\" rel=\"noopener\" title=\"Sefa Eyeoglu\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11587657?u=ab503582165c0bbff0cca47ce31c9450bb1553c9&amp;v=4\" width=\"32\" height=\"32\" alt=\"Sefa Eyeoglu\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n## References\n\noRPC is inspired by existing solutions that prioritize type safety and developer experience. Special acknowledgments to:\n\n- [tRPC](https:\u002F\u002Ftrpc.io): For pioneering the concept of end-to-end type-safe RPC and influencing the development of type-safe APIs.\n- [ts-rest](https:\u002F\u002Fts-rest.com): For its emphasis on contract-first development and OpenAPI integration, which have greatly inspired oRPC's feature set.\n\n## License\n\nDistributed under the MIT License. See [LICENSE](https:\u002F\u002Fgithub.com\u002Fmiddleapi\u002Forpc\u002Fblob\u002Fmain\u002FLICENSE) for more information.\n","oRPC 是一个结合了 RPC 和 OpenAPI 的强大工具，旨在简化类型安全 API 的构建过程。它支持端到端的类型安全、内置 OpenAPI 标准支持以及合同优先开发模式，确保从客户端到服务器的数据传输和处理都严格遵循预定义的类型规范。此外，oRPC 还提供了与多种前端框架（如 React, Vue, Solid, Svelte 等）及后端运行环境（包括 Cloudflare Workers, Deno, Bun, Node.js 等）无缝集成的能力，并且原生支持常见的数据类型及先进的特性如懒加载路由和服务器发送事件。适用于需要高度可维护性、安全性以及跨平台兼容性的 Web 应用开发场景。","2026-06-11 03:27:29","top_topic"]