tag:github.com,2008:https://github.com/middleapi/orpc/releases Release notes from orpc 2026-03-13T01:41:56Z tag:github.com,2008:Repository/863811008/v1.13.7 2026-03-13T01:49:14Z v1.13.7 <h3>   🐞 Bug Fixes</h3> <ul> <li><strong>server</strong>: Prevent duplicate request id attack on peer adapter  -  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinwwwh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinwwwh">@dinwwwh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064325791" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1474" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1474/hovercard" href="https://github.com/middleapi/orpc/pull/1474">#1474</a> <a href="https://github.com/middleapi/orpc/commit/5ebcc863"><samp>(5ebcc)</samp></a></li> </ul> <h5>    <a href="https://github.com/middleapi/orpc/compare/v1.13.6...v1.13.7">View changes on GitHub</a></h5> <div class="markdown-alert markdown-alert-tip"><p class="markdown-alert-title"><svg class="octicon octicon-light-bulb mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></svg>Tip</p><p>If you find oRPC valuable and would like to support its development, you can do so <a href="https://github.com/sponsors/dinwwwh">here</a>.</p> </div> github-actions[bot] tag:github.com,2008:Repository/863811008/v1.13.6 2026-03-02T02:35:25Z v1.13.6 <h3>   🐞 Bug Fixes</h3> <ul> <li><strong>client, server</strong>: Prototype Pollution via <code>StandardRPCJsonSerializer</code> Deserialization (<a title="GHSA-m272-9rp6-32mc" href="https://github.com/middleapi/orpc/security/advisories/GHSA-m272-9rp6-32mc">GHSA-m272-9rp6-32mc</a>)</li> </ul> <h5>    <a href="https://github.com/middleapi/orpc/compare/v1.13.5...v1.13.6">View changes on GitHub</a></h5> github-actions[bot] tag:github.com,2008:Repository/863811008/v1.13.5 2026-03-13T01:56:09Z v1.13.5 <h3>   🐞 Bug Fixes</h3> <ul> <li><strong>trpc</strong>: Add missing batchIndex for trpc^11.10 procedure calls  -  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinwwwh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinwwwh">@dinwwwh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3925531393" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1420" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1420/hovercard" href="https://github.com/middleapi/orpc/pull/1420">#1420</a> <a href="https://github.com/middleapi/orpc/commit/ae4860cb"><samp>(ae486)</samp></a></li> </ul> <h5>    <a href="https://github.com/middleapi/orpc/compare/v1.13.4...v1.13.5">View changes on GitHub</a></h5> <div class="markdown-alert markdown-alert-tip"><p class="markdown-alert-title"><svg class="octicon octicon-light-bulb mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></svg>Tip</p><p>If you find oRPC valuable and would like to support its development, you can do so <a href="https://github.com/sponsors/dinwwwh">here</a>.</p> </div> github-actions[bot] tag:github.com,2008:Repository/863811008/v1.13.4 2026-03-13T01:56:09Z v1.13.4 <h3>   🐞 Bug Fixes</h3> <ul> <li>Decoding chunks in http event stream  -  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinwwwh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinwwwh">@dinwwwh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3807799496" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1356" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1356/hovercard" href="https://github.com/middleapi/orpc/pull/1356">#1356</a> <a href="https://github.com/middleapi/orpc/commit/da9af8bd"><samp>(da9af)</samp></a></li> </ul> <h5>    <a href="https://github.com/middleapi/orpc/compare/v1.13.2...v1.13.4">View changes on GitHub</a></h5> github-actions[bot] tag:github.com,2008:Repository/863811008/v1.13.2 2026-03-13T01:56:10Z v1.13.2 <h3>   🐞 Bug Fixes</h3> <ul> <li><strong>zod</strong>: Enhance schema conversion logic for zod4 preprocess  -  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinwwwh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinwwwh">@dinwwwh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3766852613" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1318" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1318/hovercard" href="https://github.com/middleapi/orpc/pull/1318">#1318</a> <a href="https://github.com/middleapi/orpc/commit/fc2dc8fb"><samp>(fc2dc)</samp></a></li> </ul> <h5>    <a href="https://github.com/middleapi/orpc/compare/v1.13.1...v1.13.2">View changes on GitHub</a></h5> <div class="markdown-alert markdown-alert-tip"><p class="markdown-alert-title"><svg class="octicon octicon-light-bulb mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></svg>Tip</p><p>If you find oRPC valuable and would like to support its development, you can do so <a href="https://github.com/sponsors/dinwwwh">here</a>.</p> </div> github-actions[bot] tag:github.com,2008:Repository/863811008/v1.13.1 2026-03-13T01:56:11Z v1.13.1 <h3>   🚀 Features</h3> <ul> <li><strong>nest, contract</strong>: Prefer import populateContractRouterPaths from <code>@orpc/contract</code>  -  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinwwwh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinwwwh">@dinwwwh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3761288582" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1312" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1312/hovercard" href="https://github.com/middleapi/orpc/pull/1312">#1312</a> <a href="https://github.com/middleapi/orpc/commit/544b9733"><samp>(544b9)</samp></a></li> </ul> <h5>    <a href="https://github.com/middleapi/orpc/compare/v1.13.0...v1.13.1">View changes on GitHub</a></h5> github-actions[bot] tag:github.com,2008:Repository/863811008/v1.13.0 2026-03-13T01:56:11Z v1.13.0 <h3>Smart Coercion now stable <a href="https://orpc.dev/docs/openapi/plugins/smart-coercion" rel="nofollow">docs</a></h3> <p>Automatically converts input values to match schema types without manually defining coercion logic.</p> <div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import { OpenAPIHandler } from '@orpc/openapi/fetch' import { SmartCoercionPlugin } from '@orpc/json-schema' const handler = new OpenAPIHandler(router, { plugins: [ new SmartCoercionPlugin({ schemaConverters: [ new ZodToJsonSchemaConverter(), // Add other schema converters as needed ], }) ] })"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-v">OpenAPIHandler</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'@orpc/openapi/fetch'</span> <span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-v">SmartCoercionPlugin</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'@orpc/json-schema'</span> <span class="pl-k">const</span> <span class="pl-s1">handler</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">OpenAPIHandler</span><span class="pl-kos">(</span><span class="pl-s1">router</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">plugins</span>: <span class="pl-kos">[</span> <span class="pl-k">new</span> <span class="pl-v">SmartCoercionPlugin</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">schemaConverters</span>: <span class="pl-kos">[</span> <span class="pl-k">new</span> <span class="pl-v">ZodToJsonSchemaConverter</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c">// Add other schema converters as needed</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">)</span> <span class="pl-kos">]</span> <span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div> <h3>Rethrow handler plugin <a href="https://orpc.dev/docs/plugins/rethrow-handler" rel="nofollow">docs</a></h3> <p>The <code>RethrowHandlerPlugin</code> allows you to catch and rethrow specific errors that occur during request handling. This is particularly useful when your framework has its own error handling mechanism (e.g., global exception filters in NestJS, error middleware in Express) and you want certain errors to be processed by that mechanism instead of being handled by the oRPC error handling flow.</p> <div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import { experimental_RethrowHandlerPlugin as RethrowHandlerPlugin, } from '@orpc/server/plugins' const handler = new RPCHandler(router, { plugins: [ new RethrowHandlerPlugin({ // Decide which errors should be rethrown. filter: (error) =&gt; { // Example: Rethrow all non-ORPCError errors // This allows unhandled exceptions to bubble up to your framework return !(error instanceof ORPCError) }, }), ], })"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">experimental_RethrowHandlerPlugin</span> <span class="pl-k">as</span> <span class="pl-v">RethrowHandlerPlugin</span><span class="pl-kos">,</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'@orpc/server/plugins'</span> <span class="pl-k">const</span> <span class="pl-s1">handler</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">RPCHandler</span><span class="pl-kos">(</span><span class="pl-s1">router</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">plugins</span>: <span class="pl-kos">[</span> <span class="pl-k">new</span> <span class="pl-v">RethrowHandlerPlugin</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c">// Decide which errors should be rethrown.</span> <span class="pl-en">filter</span>: <span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span> <span class="pl-c">// Example: Rethrow all non-ORPCError errors</span> <span class="pl-c">// This allows unhandled exceptions to bubble up to your framework</span> <span class="pl-k">return</span> <span class="pl-c1">!</span><span class="pl-kos">(</span><span class="pl-s1">error</span> <span class="pl-k">instanceof</span> <span class="pl-v">ORPCError</span><span class="pl-kos">)</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div> <h3><code>.$input</code> now available in contract builder <a href="https://orpc.dev/docs/procedure#initial-configuration" rel="nofollow">docs</a></h3> <p>Unlike <code>.input</code>, the <code>.$input</code> method lets you redefine the input schema after its initial configuration. This is useful when you need to enforce a void input when no <code>.input</code> is specified.</p> <div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="const base = os.$input(z.void()) const base = os.$input&lt;Schema&lt;void, unknown&gt;&gt;()"><pre><span class="pl-k">const</span> <span class="pl-s1">base</span> <span class="pl-c1">=</span> <span class="pl-s1">os</span><span class="pl-kos">.</span><span class="pl-en">$input</span><span class="pl-kos">(</span><span class="pl-s1">z</span><span class="pl-kos">.</span><span class="pl-en">void</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">base</span> <span class="pl-c1">=</span> <span class="pl-s1">os</span><span class="pl-kos">.</span><span class="pl-en">$input</span><span class="pl-c1">&lt;</span><span class="pl-smi">Schema</span><span class="pl-c1">&lt;</span><span class="pl-smi"><span class="pl-k">void</span></span><span class="pl-kos">,</span> <span class="pl-smi">unknown</span><span class="pl-c1">&gt;</span><span class="pl-c1">&gt;</span><span class="pl-kos">(</span><span class="pl-kos">)</span></pre></div> <h3>   🚀 Features</h3> <ul> <li><strong>json-schema</strong>: Stable SmartCoercionPlugin  -  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinwwwh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinwwwh">@dinwwwh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3713420349" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1285" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1285/hovercard" href="https://github.com/middleapi/orpc/pull/1285">#1285</a> <a href="https://github.com/middleapi/orpc/commit/f01f7b13"><samp>(f01f7)</samp></a></li> <li><strong>server</strong>: Rethrow handler plugin  -  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinwwwh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinwwwh">@dinwwwh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3714086332" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1286" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1286/hovercard" href="https://github.com/middleapi/orpc/pull/1286">#1286</a> <a href="https://github.com/middleapi/orpc/commit/b2d00a32"><samp>(b2d00)</samp></a></li> </ul> <h3>   🐞 Bug Fixes</h3> <ul> <li><strong>contract</strong>: Missing <code>.$input</code> builder method  -  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinwwwh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinwwwh">@dinwwwh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3737362201" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1304" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1304/hovercard" href="https://github.com/middleapi/orpc/pull/1304">#1304</a> <a href="https://github.com/middleapi/orpc/commit/b81d47f8"><samp>(b81d4)</samp></a></li> </ul> <h5>    <a href="https://github.com/middleapi/orpc/compare/v1.12.3...v1.13.0">View changes on GitHub</a></h5> github-actions[bot] tag:github.com,2008:Repository/863811008/v1.12.3 2026-01-12T09:00:38Z v1.12.3 <h3>   🐞 Bug Fixes</h3> <ul> <li><strong>standard-server</strong>: Change SHORTABLE_ORIGIN from orpc:// to http:// for Android WebView compatibility  -  by @Copilot in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3723663817" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1295" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1295/hovercard" href="https://github.com/middleapi/orpc/pull/1295">#1295</a> <a href="https://github.com/middleapi/orpc/commit/d12598bb"><samp>(d1259)</samp></a></li> </ul> <h5>    <a href="https://github.com/middleapi/orpc/compare/v1.12.2...v1.12.3">View changes on GitHub</a></h5> github-actions[bot] tag:github.com,2008:Repository/863811008/v1.12.2 2026-03-13T01:56:12Z v1.12.2 <h3>   🐞 Bug Fixes</h3> <ul> <li><strong>standard-server</strong>: Filter out undefined headers for node:http adapters compatibility  -  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinwwwh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinwwwh">@dinwwwh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3684518513" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1269" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1269/hovercard" href="https://github.com/middleapi/orpc/pull/1269">#1269</a> <a href="https://github.com/middleapi/orpc/commit/c994d65b"><samp>(c994d)</samp></a></li> </ul> <h5>    <a href="https://github.com/middleapi/orpc/compare/v1.12.1...v1.12.2">View changes on GitHub</a></h5> github-actions[bot] tag:github.com,2008:Repository/863811008/v1.12.1 2026-03-13T01:56:13Z v1.12.1 <h3>   🚀 Features</h3> <ul> <li><strong>publisher</strong>: Change cloudflare durable object cleanup  -  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinwwwh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinwwwh">@dinwwwh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3679107965" data-permission-text="Title is private" data-url="https://github.com/middleapi/orpc/issues/1266" data-hovercard-type="pull_request" data-hovercard-url="/middleapi/orpc/pull/1266/hovercard" href="https://github.com/middleapi/orpc/pull/1266">#1266</a> <a href="https://github.com/middleapi/orpc/commit/7844b897"><samp>(7844b)</samp></a></li> </ul> <h5>    <a href="https://github.com/middleapi/orpc/compare/v1.12.0...v1.12.1">View changes on GitHub</a></h5> github-actions[bot]