Getting Started
Install
For vanilla projects:
sh
npx jsr add @kin-store/coresh
pnpm dlx jsr add @kin-store/coresh
yarn dlx jsr add @kin-store/coresh
deno add jsr:@kin-store/coreFor React projects (@kin-store/core is included):
sh
npx jsr add @kin-store/reactsh
pnpm dlx jsr add @kin-store/reactsh
yarn dlx jsr add @kin-store/reactsh
deno add jsr:@kin-store/reactTo add official plugins:
sh
npx jsr add @kin-store/pluginssh
pnpm dlx jsr add @kin-store/pluginssh
yarn dlx jsr add @kin-store/pluginssh
deno add jsr:@kin-store/pluginsQuick start
Create a store, write plain functions, done:
ts
import { createStore } from '@kin-store/core';
type TodoState = { todos: string[]; status: 'idle' | 'loading' };
const store = createStore({ todos: [], status: 'idle' } as TodoState);
function addTodo(text: string): void {
store.setState((s) => ({ ...s, todos: [...s.todos, text] }));
}
addTodo('Buy groceries');
console.log(store.getState());
// { todos: ['Buy groceries'], status: 'idle' }When your app grows, move logic into the store with .use():
ts
import { withPlugins } from '@kin-store/core';
import { persist, history } from '@kin-store/plugins';
const store = withPlugins({ todos: [], status: 'idle' } as TodoState)
.use('persist', persist({ key: 'todos' }))
.use('history', history())
.use({
methods: (store) => ({
addTodo(text: string): void {
store.setState((s) => ({ ...s, todos: [...s.todos, text] }));
},
}),
});
store.addTodo('Buy groceries');
store.history.undo();
await store.persist.hydrate();Each .use() adds capability — not a nesting level. The store grows with you.
What's next
- createStore — the minimal foundation
- withPlugins — add methods, reducers, and middleware
- derive — compose stores reactively
- Plugins — persist, history, immer