In a real-time chat app, the same participant shows up in a conversation list, a details screen, and the chat header. Rename it in one place and every stale copy elsewhere becomes a bug you'll chase for weeks. This looks like a UI problem; it's really a data-ownership problem.

One source of truth, many views

Every view derives from a single canonical store and observes it, rather than holding its own copy. A rename updates the store once; the header, the list, and the details view all re-render from the same place. There's no reconciliation step because there's nothing to reconcile.

Diff by value, not by reference

Giving messages and entities value equality let the UI tell exactly what changed and avoid redrawing things that didn't. That's what makes live-typing badges and inline renames feel instant instead of flickery — the framework only touches what actually moved.

Bust caches on identity, not on a timer

Profile images cached by URL went stale after an edit. Keying the cache on an updated_at token means the new photo appears immediately, without nuking an otherwise-warm cache. Invalidate precisely on the thing that changed, and you get freshness and performance at once.