URL state synchronization allows users to navigate to specific SPA page and see specific state. This is important when you share SPA page and you want the recipient to see exactly what you saw when you shared the page.
Question 1: Should all changes to UI be preserved?
Question 2: When is it ok to replace URL state synchronization by other method?
Example 1: Jira Roadmap
https://confluence.atlassian.com/jiraportfolioserver/what-is-a-plan-952623577.html
Re question 2 - None of the changes to this view are reflected in URL. However, there is a dedicated Share button that generates unique URL containing the state that can be shared.
Re question 1 - Changes to filters and fields will be reflected in the unique URL, but not field (column) ordering, width or visibility. If I share this to a colleague they will only partially see what I saw.
Example 2: Jira Dashboards
RE question 1 - Jira Dashboards won't synchronize any of the states. Your colleague will literally have to tell you "go to this dashboard, select this team, this project and this issue type and then you will see what I mean".
RE question 2 - While none of the sate can be shared, it is at least synchronized between sessions. Refresh the page and all selections and filters will stay the same.
Example 3: Jira Find Issue
https://support.atlassian.com/jira-software-cloud/docs/find-specific-issues/
Aa much as I can tell every filter and every setting is reflected in the URL. Browser navigation button will take you through every change you made. This is how it used to be in the good old days.
Example 4: Google Spreadsheets
All change to the spreadsheet, including column width, row height, color and visibility are preserved. But the URL does not change and browser navigation buttons can't be used - instead there are dedicated undo/redo buttons.
Back to my questions:
Should every detail of the UI be preserved and synchronized? Including column widths? If not, where do I draw the line?
Should everything be synchronized in URL and work with browser navigation buttons? If not, where do I draw the line?