useOptimisticStateAction holding only the in-flight changes, folded over server data by two sibling components.
Loading tasks...
Each save takes 1.2s. Move several tasks quickly: the board and the counters below it update together immediately, the writes are serialized rather than raced, and the pending list drains as the queue settles.