Currently, when the session expires while the app is open, the next in-app navigation shows a 500 Internal Error page instead of the sign-in page. Reloading the browser then does redirect to sign-in, so the user has to guess that a reload is what is needed.
An expired session should always lead to the sign-in page, whether the request is a page load or a navigation inside the running app. After signing in the user should return to the page they came from, including its query.
Why: a 500 tells the user the server is broken when in fact they are merely signed out, and the recovery step is undiscoverable.
Currently, when the session expires while the app is open, the next in-app navigation shows a 500 Internal Error page instead of the sign-in page. Reloading the browser then does redirect to sign-in, so the user has to guess that a reload is what is needed.
An expired session should always lead to the sign-in page, whether the request is a page load or a navigation inside the running app. After signing in the user should return to the page they came from, including its query.
Why: a 500 tells the user the server is broken when in fact they are merely signed out, and the recovery step is undiscoverable.