Todo app
The classic, as streams. Events push into two Subjects from plain handlers — text$ for keystrokes, submit$ for the form — and the list derives from them: each submit samples the latest text with withLatestFrom, and scan accumulates the items.
Note the hook split: the controlled input reads useSyncObservable (caret and IME need synchronous updates) while the list reads useObservable (deferred, so a long list can’t make typing lag).
Last updated on