# State Management

Tesserae uses observables to create reactive user interfaces that update automatically when data changes.

# Observables

An Observable<T> stores a single value and notifies listeners when it changes.

var name = new Observable<string>("John");
var tb = TextBlock().Bind(name, n => n);
name.Value = "Jane"; // TextBlock updates automatically

# Observable Collections

Use ObservableList<T> or ObservableDictionary<T, K> for collections.

var items = new ObservableList<string>();
var list = DeferSync(items, i => VStack().Children(i.Select(TextBlock)));

# Use Case: Filtering

Observables are perfect for implementing real-time filtering where the UI reacts immediately to user input without a page reload.