isthor
v1.0.2
Published
Minimalist reactive state management powered by Zod and Proxies.
Maintainers
Readme
⚡ Isthor
Isthor is a minimalist, type-safe, and reactive state management library for React, powered by Zod and JavaScript Proxies.
No Providers, no boilerplate, just pure reactivity.
✨ Features
- Runtime Validation: Your state is always valid, thanks to Zod.
- Invisible Reactivity: Update state like a normal object; your UI reacts instantly.
- Zero Boilerplate: No context providers or complex actions needed.
- Global & Decoupled: Update state from anywhere, even outside React components.
🚀 Installation
bun install isthor zod🛠️ Usage
1. Define your store
Create a schema and initialize your store. It returns a tuple: the proxy object for updates and a hook for React components.
// store.ts
import isthor from "isthor";
import { z } from "zod";
const UserSchema = z.object({
name: z.string().min(2),
points: z.number(),
});
export const [user, useUser] = isthor(UserSchema, {
name: "Zaqueu",
points: 0,
});2. Consume and Update in React
import { user, useUser } from "./store";
export default function App() {
const state = useUser(); // Reactive hook
return (
<div>
<h1>
{state.name}: {state.points}pts
</h1>
{/* Update the object directly! */}
<button onClick={() => user.points++}>Add Point</button>
<input
onChange={(e) => (user.name = e.target.value)}
placeholder="Update name"
/>
</div>
);
}🧠 How it works
Isthor uses a Proxy to intercept property assignments. When you change a value, it:
- Validates the change against your Zod schema.
- Updates the internal storage.
- Notifies all subscribed hooks via a WeakMap-based observer system.
License
MIT © Zaqueu Nilton
