An interface that shows the result of an action immediately, assuming the server will succeed, and reconciles quietly when it doesn’t.
Make the like button optimistic: fill the heart on tap, roll back only if the request fails.
Optimism is a bet on your own reliability: the interface writes a check the backend almost always cashes. Reserve it for actions that are cheap to undo and succeed in the high ninety-nines; money and anything with a destructive action’s weight should wait for the truth. The rollback is the real design problem. Failure must explain itself, or the user learns the interface lies.