Wrap any async service into fully-typed TanStack React Query hooks at runtime. Works with REST, gRPC, XML-RPC, generated clients, or hand-written APIs — no codegen required.
Most teams already have an API client / SDK:
- generated from OpenAPI / gRPC
- written by hand
- shared between frontend, backend, scripts, and tests
This library lets you reuse that SDK directly in React by turning it into:
useQueryhooksuseMutationhooks- stable, predictable query keys
All at runtime, without generating code or schemas.
npm install @akashnetwork/react-query-proxyPeer dependencies:
react >= 18@tanstack/react-query >= 5
const sdk = {
alerts: {
async list(input?: { page?: number }) {
return fetchAlerts(input)
},
async create(input: { name: string }) {
return createAlert(input)
},
},
}import { createProxy } from '@akashnetwork/react-query-proxy'
export const api = createProxy(sdk)function AlertsList() {
const q = api.alerts.list.useQuery({ page: 1 })
if (q.isLoading) return <div>Loading…</div>
if (q.isError) return <div>Error</div>
return <pre>{JSON.stringify(q.data, null, 2)}</pre>
}function CreateAlert() {
const m = api.alerts.create.useMutation()
return (
<button onClick={() => m.mutate({ name: 'CPU High' })} disabled={m.isPending}>
Create
</button>
)
}api.alerts.list.getKey({ page: 1 })
// → ['alerts', 'list', { page: 1 }]Apache 2.0