15.2 - Loading and Error States
When working with tRPC on the client side, handling loading and error states effectively is crucial for providing a smooth user experience. React Query, which tRPC integrates with, provides robust tools to manage these states.
Handling Loading/Error States
In tRPC, loading states indicate that data is being fetched or a mutation is in progress. React Query’s hooks provide a isLoading or isFetching state to help you manage this.
Error handling is crucial for providing feedback and handling cases where something goes wrong. React Query’s hooks provide a isError state to help you manage this.
Example: Handling Loading/Errors with useQuery
// src/components/UserProfile.tsx
import { trpc } from "../utils/trpc";
const UserProfile = ({ id }: { id: string }) => {
const {
data: user,
isLoading,
isError,
error,
} = trpc.user.getUser.useQuery(id);
if (isLoading) {
return <div>Loading...</div>;
}
if (isError) {
return <div>Error: {error.message}</div>;
}
return (
<div>
<h1>{user?.name}</h1>
<p>{user?.email}</p>
</div>
);
};
export default UserProfile;
In this example:
isLoadingis true while the query is fetching data, and you can show a loading indicator.isErroris true if an error occurred during the query.error.messageprovides the error message which you can display to the user.
tip
For mutations, React Query provides similar hooks and states to manage loading and error conditions with useMutation.