Comment by chowells
It's definitely a shock when something else changes the date object you've been holding on to. The problem with mutable values has never been when you (that is, the local context) change them. It's always that you can't trust that nothing else (some very non-local code) does.
also: there is a certain popular library for web app development that is based on diffing state between renders based on object equality