Skip to main content

Immer

import { createStore, immer } from '@sinuxjs/core';

const store = createStore(
{ items: [{ id: 1, text: 'Hello', done: false }] },
{
toggleItem: (state, id: number) => {
// Mutate the draft directly -- immer makes it immutable
const item = state.items.find(i => i.id === id);
if (item) item.done = !item.done;
},
},
[immer()]
);
  • All signal handlers receive an Immer draft
  • Mutate directly -- no spread operators needed
  • Backward compatible: returning an object still works
  • immer is a peer dependency -- install it separately: npm install immer