You can achieve both a clean history and granular state in the URL with using history.replace() and history.push() where necessary.