Where this gets painful
You have built a list with fetch, loading, error, race handling, and optimistic updates. It works. Now imagine adding a filter, a search box, a cart, a detail view, and a checkout flow. Every new feature tangles with the DOM code you already wrote. Every change risks breaking something three features away.
This is the exact pain React solves. Instead of telling the DOM what to do, you describe what the UI should look like for a given state. React figures out the minimum set of changes to make. You stop managing innerHTML and start managing data. Every change becomes a state update, not a DOM surgery.
AI prompt: Try it: feel the imperative pain
Loading practice…
Quiz: Quiz
Loading practice…
Checkpoint: Client-server sync checkpoint
Loading practice…