Kiru
A batteries-included, easy-to-use rendering library with a tiny footprint
Get StartedSignal-based state management with zero overhead
Comprehensive routing & CSR utilities by default
Granular control of reactivity & state
Do more with less... Actually, just do less.
Kiru makes it easy to create optimized web apps by embracing a 'reactivity where it matters' approach.
App.tsx
function App() {
const inputText = signal(""),
todos = signal<Todo[]>([])
const handleSubmit = (e: Kiru.FormEvent) => {
e.preventDefault()
const id = crypto.randomUUID(),
text = inputText.peek(),
todo = { id, text }
todos.value = [...todos.value, todo]
inputText.value = ""
}
console.log("Hello from Kiru! This component never rerenders 😉")
return () => (
<>
<form onsubmit={handleSubmit}>
<input bind:value={inputText} />
<button type="submit">Add</button>
</form>
<ul>
<For each={todos} fallback={<i>No todos</i>}>
{(item) => <TodoItem todo={item} />}
</For>
</ul>
</>
)
}- Kiru
- Is
- Awesome!
Say goodbye to dependency hell.
Kiru aims to embody the word 'framework' in a literal sense. Routing, state management, asynchronous state, animations, and more - Kiru makes it possible to build incredible web apps without any other libraries.
{
"name": "react-app",
// ...
"dependencies": {
"react": "19.2.0",
"react-dom": "19.2.0",
"react-router-dom": "7.9.6"
},
"devDependencies": {
"vite": "7.2.2",
"@vitejs/plugin-react": "5.1.1",
"typescript": "5.9.3",
"@types/react": "19.2.6",
"@types/react-dom": "19.2.3"
}
}{
"name": "kiru-app",
// ...
"dependencies": {
"kiru": "1.0.1"
},
"devDependencies": {
"vite": "7.2.2",
"vite-plugin-kiru": "1.0.0",
"typescript": "5.9.3"
}
}