Kiru
A batteries-included, easy-to-use rendering library with a tiny footprint
Get StartedGlobal state via blazingly fast signals & stores
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 = useSignal(""),
todos = useSignal<Todo[]>([])
const handleSubmit = (e: Event) => {
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, responsive forms, asynchronous state 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",
"swr": "2.3.6",
"zustand": "5.0.8",
"@tanstack/react-form": "1.25.0",
},
"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": "0.53.0"
},
"devDependencies": {
"vite": "7.2.2",
"vite-plugin-kiru": "0.31.0",
"typescript": "5.9.3"
}
}