tRPC Procedure Undefined or Not Found
Your tRPC procedure throws 'undefined' or 'procedure not found' errors when called from the client. The procedure is defined on the backend but client-side calls fail.
tRPC procedures become inaccessible when the router isn't properly merged, procedures aren't exported correctly, or client initialization doesn't match server setup.
Error Messages You Might See
Common Causes
- Procedure defined in subrouter but not merged into main router
- Client type generation not updated after adding new procedures
- tRPC client initialized with wrong URL or missing API base path
- Procedure naming mismatch between server definition and client call
- Missing merge or middleware in router causing nested routes to not resolve
How to Fix It
Merge routers: In main router file, use router.merge() to include subrouters:export const appRouter = router({
users: usersRouter,
posts: postsRouter
})
Generate types: Run npm run build or configure ts-build to generate fresh types after procedure changes.
Initialize client: Create tRPC client with correct base URL matching your API route: new TRPCClient({ url: '/api/trpc' })
Verify procedure syntax: Ensure procedure is called as nested path: trpc.users.getProfile.query() matching router structure.
Real developers can help you.
You don't need to be technical. Just describe what's wrong and a verified developer will handle the rest.
Get HelpFrequently Asked Questions
How do I add a new tRPC procedure?
Define in a router: export const usersRouter = router({ getProfile: publicProcedure.query(() => {...}) }). Then merge in appRouter.
Why do I need to generate types?
tRPC generates TypeScript types from your server router. This enables full type safety on the client side.
What's the difference between .query and .mutation?
Queries fetch data, mutations modify data. REST: GET vs POST. tRPC uses same mechanism with different semantics.