Effect procedures preserve oRPC’s decorated procedure helpers.
Callable procedures
Use .callable() to turn a procedure into a function while preserving the procedure surface.
const getUser = effectProcedure
.input(z.object({ id: z.string() }))
.effect(function* ({ input }) {
return yield* UsersRepo.findById(input.id);
});
const callGetUser = getUser.callable();
const user = await callGetUser({ id: "1" });
Useful cases:
- examples
- tests
- scripts
- internal invocation without HTTP
Actionable procedures
Use .actionable(...) where you already use oRPC’s server action integration.
const createUserAction = effectProcedure
.input(z.object({ name: z.string() }))
.effect(function* ({ input }) {
return yield* UsersRepo.create(input.name);
})
.actionable();
effect-orpc does not change the semantics of oRPC’s callable or actionable
helpers. It preserves the Effect-aware procedure metadata while forwarding to
oRPC behavior.
Next step
Compose routers with Router composition.