.use(...) accepts native oRPC middleware, generator-based Effect middleware, and Effect-returning middleware.
Use Effect middleware when the middleware needs Effect services, Effect errors, or Effect control flow.
Gate middleware
A gate runs checks and lets the pipeline continue automatically.gate.ts
Wrap middleware
A wrap callsnext(...) explicitly and returns its result.
wrap.ts
Effect-returning middleware
UseEffect.fn(...) or a function returning Effect.gen(...) when you already have an Effect-returning callback shape. Guard-only Effect middleware can return void; the pipeline continues automatically.
effect-returning.ts
Transform output
output-transform.ts
Reusable Effect middleware
Use.middleware(...) to define Effect middleware once and pass it to .use(...).
reusable.ts
Native oRPC middleware still works
native.ts
Native middleware can split contiguous Effect runtime boundaries. If you need
request-local Effect context continuity across those boundaries in Node, see
Node context bridge.