Releases: unnoq/orpc
v1.0.0-beta.1
📅6 months, 176,384 ++, 116,777 --
🎉 oRPC 1.0.0-beta.1 now available
✅ Typesafe Input/Output/Errors/File/Streaming
✅ Tanstack query (React, Vue, Solid, Svelte)
✅ React Server Action
✅ (Optional) Contract First Dev
✅ OpenAPI Spec
✅ Vue Pinia
✅ Standard Schema
Production ready?
🫡 99% APIs are stable
🫡 99% Test Coverage
🫡 30 days left until v1
Adding @beta
at the end to install
🚨 Breaking Changes
- client: Update onEventIteratorStatusChange - by @unnoq in #212 (371be)
- client, server: Improve RPC JSON Serializer Meta - by @unnoq in #242 (924a5)
- server: Remove dedupe middleware logic - by @unnoq in #225 (bf498)
- vue-colada: Remove deep ref in input & context options - by @unnoq in #238 (15d92)
🚀 Features
- client:
- client, server:
- openapi:
- server:
- solid-query:
- svelte-query:
- zod:
🐞 Bug Fixes
- contract, server:
- server:
- zod:
View changes on GitHub
v0.48.0
For someone accidentally install latest version, can feel the same experience as 1.0.0-beta.1
🚨 Breaking Changes
- client: Update onEventIteratorStatusChange - by @unnoq in #212 (371be)
- client, server: Improve RPC JSON Serializer Meta - by @unnoq in #242 (924a5)
- server: Remove dedupe middleware logic - by @unnoq in #225 (bf498)
- vue-colada: Remove deep ref in input & context options - by @unnoq in #238 (15d92)
🚀 Features
- client:
- client, server:
- openapi:
- server:
- solid-query:
- svelte-query:
- zod:
🐞 Bug Fixes
- contract, server:
- server:
- zod:
View changes on GitHub
v0.47.0
🚀 OpenAPIGenerator and @orpc/zod
Rewritten! 🚀
We've completely revamped OpenAPIGenerator and @orpc/zod
, bringing:
✅ 95% test coverage for reliability
✅ Improved bundling: 25.4 kB (gzip) -> 8.64 (gzip)
✅ Improved performance
✅ Enhancements across all specifications
🚨 Breaking Changes 🚨
Some options have changed. Run tsc
to check for any necessary updates.
🚨 Breaking Changes
- client, server: Minify link and handler options - by @unnoq in #202 (68378)
- query, vue-colada: Update utils options - by @unnoq in #209 (c0088)
🚀 Features
- openapi: Rewrite OpenAPIGenerator - by @unnoq in #208 (56cbd)
- server: InferRouterInitialContexts & InferRouterCurrentContexts - by @unnoq in #201 (df024)
- zod: Rewrite @orpc/zod - by @unnoq in #206 (14314)
🐞 Bug Fixes
View changes on GitHub
v0.46.0
🚨 Breaking Changes 🚨
RPCLink
, RPCHandler
, OpenAPIHandler
, ...
- Rename
eventSourcePingEnabled
option toeventIteratorKeepAliveEnabled
- Rename
eventSourcePingInterval
option toeventIteratorKeepAliveInterval
- Rename
eventSourcePingContent
option toeventIteratorKeepAliveComment
RPCLink
- Rename
eventSourceMaxNumberOfRetries
option toeventIteratorMaxRetries
- Rename
eventSourceRetryDelay
option toeventIteratorRetryDelay
- Rename
eventSourceRetry
option toeventIteratorShouldRetry
🌟 New APIs 🌟
RPCLink
interceptors
for intercept before callclientInterceptors
for intercepting before send request
🚨 Breaking Changes
- Update event-iterator options - by @unnoq in #199 (93e60)
- client: New
StandardLink
- by @unnoq in #193 (d16a1)
🚀 Features
View changes on GitHub
v0.45.1
🐞 Bug Fixes
- openapi-client: Handle empty objects in bracket-notation deserialization - by @unnoq in #196 (1b155)
View changes on GitHub
v0.45.0
🏎 Performance 🏎
Procedure with .output
now dramatically enhance both type-checking and IDE-suggestion speed.
const example = os
.output(type<string>())
.handler(() => 'Hello word!')
🐞 Bug Fixes
- query:
- vue-colada:
🏎 Performance
View changes on GitHub
v0.44.0
🚀 Event-Source Ping Interval
New feature to keep Event Iterator alive.
RPCHandler
periodically sends a ping comment to the client. You can configure this behavior using the following options:
eventSourcePingEnabled
(default:true
) – Enables or disables pings.eventSourcePingInterval
(default:5000
) – Time between pings (in milliseconds).eventSourcePingContent
(default:''
) – Custom content for ping messages.
const result = await handler.handle(request, {
eventSourcePingEnabled: true,
eventSourcePingInterval: 5000, // 5 seconds
eventSourcePingContent: '',
})
🚨 Breaking Changes
- Update standard server - by @unnoq in #179 (cc4cb)
- client, server: Update event-source errors and decode behavior - by @unnoq in #182 (92faa)
🚀 Features
🐞 Bug Fixes
View changes on GitHub
v0.43.0
🚨 Update safe
utility 🚨
Before:
safe
return tuple[data, error, isDefined]
error
beundefined
when success
Now:
safe
supports both tuple[error, data, isDefined]
and object{ error, data, isDefined }
styleserror
benull
when success
const [error, data, isDefined] = await safe(doSomething({ id: '123' }))
// or const { error, data, isDefined } = await safe(doSomething({ id: '123' }))
if (isDefinedError(error)) { // or isDefined
// handle known error
console.log(error.data.retryAfter)
}
else if (error) {
// handle unknown error
}
else {
// handle success
console.log(data)
}
🚨 Breaking Changes
- Not parse invalid bracket notation - by @unnoq in #175 (fd117)
- client: Update
safe
utility - by @unnoq in #174 (553ad)
View changes on GitHub
v0.42.0
v0.41.2
🚨 Breaking Changes 🚨
This breaking changes not effect to end-user
- rename
interceptorsRoot
->rootInterceptors
- add
clientInterceptors
- remove
beforeCreateClient
in plugin
const handler = new RPCHandler(router, {
rootInterceptors: [],
clientInterceptors: [],
})