
Security News
NVD Concedes Inability to Keep Pace with Surging CVE Disclosures in 2025
Security experts warn that recent classification changes obscure the true scope of the NVD backlog as CVE volume hits all-time highs.
@trpc/react-query
Advanced tools
@trpc/react-query is a package that integrates tRPC with React Query, allowing you to create type-safe APIs and use them in your React applications with ease. It provides a seamless way to fetch, cache, and synchronize server data with your client-side state.
Type-safe API calls
This feature allows you to make type-safe API calls using tRPC and React Query. The `useQuery` hook fetches data from the server and provides loading and error states.
import { createReactQueryHooks } from '@trpc/react-query';
import { AppRouter } from './server/router';
const trpc = createReactQueryHooks<AppRouter>();
function MyComponent() {
const { data, error, isLoading } = trpc.useQuery(['getUser', { id: 1 }]);
if (isLoading) return <div>Loading...</div>;
if (error) return <div>Error: {error.message}</div>;
return <div>User: {data.name}</div>;
}
Mutations
This feature allows you to perform mutations, such as creating or updating data on the server. The `useMutation` hook provides methods to trigger the mutation and handle its result.
function MyComponent() {
const mutation = trpc.useMutation('createUser');
const handleCreateUser = async () => {
try {
await mutation.mutateAsync({ name: 'John Doe' });
alert('User created successfully');
} catch (error) {
alert('Error creating user: ' + error.message);
}
};
return <button onClick={handleCreateUser}>Create User</button>;
}
Optimistic Updates
This feature allows you to perform optimistic updates, where the UI is updated immediately while the mutation is being processed. The `onMutate`, `onError`, and `onSettled` callbacks help manage the optimistic update lifecycle.
function MyComponent() {
const queryClient = useQueryClient();
const mutation = trpc.useMutation('updateUser', {
onMutate: async (newData) => {
await queryClient.cancelQueries(['getUser', { id: newData.id }]);
const previousData = queryClient.getQueryData(['getUser', { id: newData.id }]);
queryClient.setQueryData(['getUser', { id: newData.id }], newData);
return { previousData };
},
onError: (err, newData, context) => {
queryClient.setQueryData(['getUser', { id: newData.id }], context.previousData);
},
onSettled: () => {
queryClient.invalidateQueries(['getUser', { id: newData.id }]);
}
});
const handleUpdateUser = async () => {
await mutation.mutateAsync({ id: 1, name: 'Jane Doe' });
};
return <button onClick={handleUpdateUser}>Update User</button>;
}
React Query is a powerful data-fetching library for React applications. It provides hooks for fetching, caching, and synchronizing server data with client-side state. Unlike @trpc/react-query, it does not provide built-in type safety or integration with tRPC.
Apollo Client is a comprehensive state management library for JavaScript that enables you to manage both local and remote data with GraphQL. It offers features like caching, optimistic UI, and subscriptions. Unlike @trpc/react-query, it uses GraphQL instead of tRPC for API interactions.
SWR (stale-while-revalidate) is a React Hooks library for data fetching developed by Vercel. It focuses on simplicity and performance, providing a lightweight solution for fetching and caching data. Unlike @trpc/react-query, it does not offer built-in type safety or integration with tRPC.
End-to-end typesafe APIs made easy
@trpc/react-query
A tRPC wrapper around react-query.
Full documentation for @trpc/react-query
can be found here
# npm
npm install @trpc/react-query@next @tanstack/react-query
# Yarn
yarn add @trpc/react-query@next @tanstack/react-query
# pnpm
pnpm add @trpc/react-query@next @tanstack/react-query
# Bun
bun add @trpc/react-query@next @tanstack/react-query
Create a utils file that exports tRPC hooks and providers.
import { createTRPCReact } from '@trpc/react-query';
import type { AppRouter } from './server';
export const trpc = createTRPCReact<AppRouter>();
Use the provider to connect to your API.
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { trpc } from '~/utils/trpc';
import React, { useState } from 'react';
export function App() {
const [queryClient] = useState(() => new QueryClient());
const [trpcClient] = useState(() =>
trpc.createClient({
url: 'http://localhost:5000/trpc',
}),
);
return (
<trpc.Provider client={trpcClient} queryClient={queryClient}>
<QueryClientProvider client={queryClient}>
{/* Your app here */}
</QueryClientProvider>
</trpc.Provider>
);
}
Now in any component, you can query your API using the proxy exported from the utils file.
import { trpc } from '~/utils/trpc';
export function Hello() {
const { data, error, status } = trpc.greeting.useQuery({ name: 'tRPC' });
if (error) {
return <p>{error.message}</p>;
}
if (status !== 'success') {
return <p>Loading...</p>;
}
return <div>{data && <p>{data.greeting}</p>}</div>;
}
FAQs
The tRPC React library
The npm package @trpc/react-query receives a total of 419,543 weekly downloads. As such, @trpc/react-query popularity was classified as popular.
We found that @trpc/react-query demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Security experts warn that recent classification changes obscure the true scope of the NVD backlog as CVE volume hits all-time highs.
Security Fundamentals
Attackers use obfuscation to hide malware in open source packages. Learn how to spot these techniques across npm, PyPI, Maven, and more.
Security News
Join Socket for exclusive networking events, rooftop gatherings, and one-on-one meetings during BSidesSF and RSA 2025 in San Francisco.