All reactive state in Formisch is managed via a Signal<T> interface. This allows for fine-grained updates: when a specific field's value changes, only the components observing that specific signal re-render, rather than the entire form.
Every field in the store carries its own signals for:
errorsisTouchedisEditedisDirtyinput (for value fields)
Structural components like objects and arrays use a children collection to manage their nested fields. Because the store hierarchy is pre-allocated based on your Valibot schema, methods can update individual signals directly without expensive object diffing or path lookups.
interface Signal<T> {
get value(): T;
set value(nextValue: T): void;
}