React hooks for Cosmos πͺ
See the code
graz is a collection of React hooks containing everything you need to start working with the Cosmos ecosystem.
ChainInfo@tanstack/react-query and zustandgraz requires react@>=17 due to using function components and hooks and the new JSX transform.
Install graz using npm, yarn, or pnpm:
# using npm
npm install graz
# using yarn
yarn add graz
# using pnpm
pnpm add graz
To avoid version mismatch we decided to make these packages peer dependencies
# using npm
npm install @cosmjs/amino @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @cosmjs/stargate @cosmjs/encoding
# using yarn
yarn add @cosmjs/amino @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @cosmjs/stargate @cosmjs/encoding
# using pnpm
pnpm add @cosmjs/amino @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @cosmjs/stargate @cosmjs/encoding
Wrap your React app with <QueryClientProvider /> and <GrazProvider />, and use available graz hooks anywhere:
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { GrazProvider } from "graz";
import { cosmoshub } from "graz/chains";
const queryClient = new QueryClient();
function App() {
return (
<QueryClientProvider client={queryClient}>
<GrazProvider grazOptions={{
chains: [cosmoshub]
}}>
<Wallet />
</GrazProvider>
</QueryClientProvider>
);
}
import { useAccount, useConnect, useDisconnect } from "graz";
import { cosmoshub } from "graz/chains";
function Wallet() {
const { connect, status } = useConnect();
// useAccount returns a Record keyed by chain id: Record<chainId, Key>
const { data: accounts, isConnected } = useAccount();
const { disconnect } = useDisconnect();
const account = accounts?.[cosmoshub.chainId];
function handleConnect() {
return isConnected ? disconnect() : connect({ chainId: cosmoshub.chainId });
}
return (
<div>
{account ? `Connected to ${account.bech32Address}` : status}
<button onClick={handleConnect}>{isConnected ? "Disconnect" : "Connect"}</button>
</div>
);
}
Graz powers some of the most popular applications in the Cosmos ecosystem:
Want to add your project? Submit a PR or open an issue!
You can read more about available hooks and exports on Documentation Site or via paka.dev.
112 followers Β· starred Jun 2023
22 followers Β· starred Apr 2024
34 followers Β· starred Dec 2023
21 followers Β· starred Mar 2025
React hooks for Cosmos πͺ
See the code
graz is a collection of React hooks containing everything you need to start working with the Cosmos ecosystem.
ChainInfo@tanstack/react-query and zustandgraz requires react@>=17 due to using function components and hooks and the new JSX transform.
Install graz using npm, yarn, or pnpm:
# using npm
npm install graz
# using yarn
yarn add graz
# using pnpm
pnpm add graz
To avoid version mismatch we decided to make these packages peer dependencies
# using npm
npm install @cosmjs/amino @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @cosmjs/stargate @cosmjs/encoding
# using yarn
yarn add @cosmjs/amino @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @cosmjs/stargate @cosmjs/encoding
# using pnpm
pnpm add @cosmjs/amino @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @cosmjs/stargate @cosmjs/encoding
Wrap your React app with <QueryClientProvider /> and <GrazProvider />, and use available graz hooks anywhere:
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { GrazProvider } from "graz";
import { cosmoshub } from "graz/chains";
const queryClient = new QueryClient();
function App() {
return (
<QueryClientProvider client={queryClient}>
<GrazProvider grazOptions={{
chains: [cosmoshub]
}}>
<Wallet />
</GrazProvider>
</QueryClientProvider>
);
}
import { useAccount, useConnect, useDisconnect } from "graz";
import { cosmoshub } from "graz/chains";
function Wallet() {
const { connect, status } = useConnect();
// useAccount returns a Record keyed by chain id: Record<chainId, Key>
const { data: accounts, isConnected } = useAccount();
const { disconnect } = useDisconnect();
const account = accounts?.[cosmoshub.chainId];
function handleConnect() {
return isConnected ? disconnect() : connect({ chainId: cosmoshub.chainId });
}
return (
<div>
{account ? `Connected to ${account.bech32Address}` : status}
<button onClick={handleConnect}>{isConnected ? "Disconnect" : "Connect"}</button>
</div>
);
}
Graz powers some of the most popular applications in the Cosmos ecosystem:
Want to add your project? Submit a PR or open an issue!
You can read more about available hooks and exports on Documentation Site or via paka.dev.
112 followers Β· starred Jun 2023
22 followers Β· starred Apr 2024
34 followers Β· starred Dec 2023
21 followers Β· starred Mar 2025