Perhaps I'm not seeing it because of the lack of context but why isn't it that changing product also makes a `replaceState`?