Hi everyone! ![]()
Following our beta announcement, I am thrilled to announce that IC Reactor v3 is now officially stable and released! ![]()
If you are building frontends on the Internet Computer, you know the struggle: manually managing agent state, writing endless boilerplates to unwrap Result types, handling BigInt/Variant serialization for the UI, and trying to implement caching without reinventing the wheel.
IC Reactor v3 solves this by combining the power of the ICP SDK with TanStack Query (React Query), giving you a production-grade data fetching layer specifically designed for the IC.
What makes v3 special?
Weโve spent the beta period polishing APIs, improving test coverage, and refining the developer experience. v3 is not just a wrapper; itโs a complete toolkit for building robust dApps.
1.
TanStack Query Integration (The โBrainโ)
Stop managing isLoading and isError states manually. Get automatic caching, background refetching, deduplication, and optimistic updates for your canister calls right out of the box.
2.
TypeScript & End-to-End Type Safety
Your .did files flow directly into your React hooks. Arguments and return types are fully inferred.
-
Auto-Unwrapping:
Result<T, E>is automatically unwrapped. If a canister returns Err, it throws a typed error you can catch or handle with error boundaries. -
No more:
if ('ok' in result) { ... }
3.
First-Class AI Support (llms.txt)
We ship an llms.txt file in the root of our documentation. Point your AI editor (Cursor, Windsurf, etc.) to our docs, and it will instantly know how to write correct IC Reactor code.
4.
Dynamic Candid & Forms
Building a canister explorer or admin dashboard?
-
CandidReactor: Interact with any canister by just providing its ID. It fetches the Interface Definition (IDL) on the fly. -
Dynamic Forms: We provide visitors that generate form schemas and validation logic directly from Candid definitions.
5.
Experimental: Zero-Config Environment
We are abstracting away the complexity of environment configuration. You can now initialize your Reactor with just the canister name, and we handle the rest!
By enabling withCanisterEnv in your ClientManager, ic-reactor automatically detects:
-
Canister IDs: Resolves
canisterIddynamically from the environment (e.g.,PUBLIC_CANISTER_ID:my_canister). -
Network Settings: Auto-configures host, root keys, and query signature verification based on your environment (dev vs. prod).
-
Internet Identity: Automatically finds the Internet Identity canister ID.
// 1. Enable environment detection
const clientManager = new ClientManager({
withCanisterEnv: true,
})
// 2. Initialize with just the name!
const reactor = new Reactor({
name: "my_canister", // Auto-resolves canisterId!
clientManager,
})
This delivers complex environment handling out-of-the-box, so you can focus on building your app.
Installation
We are officially out of beta! You donโt need the @beta tag anymore.
# For React
pnpm add @ic-reactor/react @icp-sdk/core @tanstack/react-query
# For backend/Node.js/Svelte/Vue logic
pnpm add @ic-reactor/core @icp-sdk/core @tanstack/query-core
Live Demo
Check out B3Forge, our latest tool built entirely with IC Reactor v3! It showcases dynamic canister interactions, shareable playgrounds, and AI-powered app building.
-
Try it out: forge.b3pay.net
-
Read the announcement: B3Forge v2 Announcement
Quick Example
Here is how simple it is to query a canister with full caching and type safety:
import { createActorHooks } from "@ic-reactor/react"
import { canisterId, idlFactory } from "./declarations/my_canister"
// 1. Initialize
const { useActorQuery } = createActorHooks({ canisterId, idlFactory })
function UserProfile({ userId }) {
// 2. Use the hook (caches the result automatically!)
const { data, isPending, error } = useActorQuery({
functionName: "get_user_profile",
args: [userId],
})
if (isPending) return <span>Loading...</span>
if (error) return <span>Error: {error.message}</span>
return <div>Welcome, {data.name}!</div>
}
Resources
-
Documentation: https://b3pay.github.io/ic-reactor
-
GitHub Repo: https://github.com/B3Pay/ic-reactor (
Stars appreciated!) -
NPM:
@ic-reactor/react
A huge thank you to everyone who tested the beta and provided feedback. We canโt wait to see what you build with v3!
Happy coding! ![]()
discourse has some nice features.