Problems
On web, panels were added very quickly and were not carefully designed from an navigation infrastructure perspective
Performance is bad, especially for first load. And especially on mobile
Initial load time has a huge effect on the perceived quality of the product, and will cause users to be unhappy and leave, rather than reading and participating in their community
Not every panel has a URL, so you can't link to some things
It is not clear which URL will be copied from the URL bar: the URL of the panel, or the URL of the document
An overview of our existing UI:
On mobile this is not strictly a UX problem, but we have performance problems, especially when loading a comment because the whole document is loaded behind it.
Outcome
Every panel should have a copy-pasteable web URL
On first load, the addressed part should load immediately: sometimes main content, sometimes the panel
The other part can fade in (loaded with async requests- not server rendered)
There will be a visual highlight around either the main content or the panel, which matches the URL in the URL bar
This has not been designed yet, it should be subtle but noticeable when it changes
Performance will be improved when first loading on web
Performance will be improved on mobile- especially for commenting
Panel code and behavior will be consistent with desktop
Solution
The initial solution will focus on the document page experience, but the infrastructure can eventually be applied to all pages
Server Rendering
We will be more deliberate about when to use server rendering. This will help draw the user's attention to the content that is being addressed, and the other panel will come in a bit later- it will not be server rendered and will use an async request to load.
Also, we should be careful with CSS to make sure the content does not jump around during load.
On mobile this will have a noticeable effect on performance because we will not need to load the section of the page that is not even visible.
Visually Show the focused panel
The user should see which panel is currently focused, and the focused panel should match the URL bar
When the user clicks or interacts with one section of the page, the visual highlight should move to that section, and the URL should change.
When the user clicks something to open or switch the panel, the panel will be focused
Selection UI
The green highlights indicate "selection" in the app. The selection should only exist in the focused panel. If you click outside the focused panel, the green selection inside will go away
Always Push Forward
Whenever the user clicks or interacts in a way that changes the navigation state, this will logically "push" forward in the navigation history. So if the user accidentally changes their selection by clicking, they can always click back to return to the previous navigation state.
We may reconsider this if it gets annoying to click back too many times, but I think most users will be comfortable to continue clicking until they get back to the correct location.
This should be consistent on web and desktop.
Desktop Consistency
The desktop app will be updated to look and feel more like a web browser.
The launcher can be opened by clicking in the empty space of the title bar, and the text input will happen in the title bar location.
The title bar breadcrumbs in the desktop app should show the full path, including the panel, and selected content in the fragment URL.
The copy link button will always copy the full focused URL, like it would in the web browser when you copy the full text of the current URL bar.
Future work:
Any panel should be openable in the main view. For now I think we can avoid this.