The subset of the history of browser history stack entries within the current session is mirrored in sessionStorage so that it can be restored into Redux on page reload or on navigation from external history stack entries (using the borwser back/forward buttons, reload button, unfreezing, etc). There used to be a fallback for browsers where sessionStorage is not supported which instead stored the entries inside the current history state. This fallback was removed as part of https://github.com/respond-framework/rudy/pull/61. However, although all modern browsers officially support sessionStorage, there are various circumstances in which it fails to work:
if the user fills the entire quota (very unlikely that Rudy itself would do this, but other user code might)
in private browsing mode on iOS Safari
if all cookies are disabled in Chrome (and possibly also in some modified versions of chrome for android)
This change restores that fallback. It comes with the same caveats that were there before:
since only the current history index is accessible, only the current and previous stack entries can be seen. This means that when returning to a stack entry in the middle of r the Rudy stack, the redux mirror of the stack entries will only include current and past entries, not future ones.
as a consequence, route callbacks that occur before a transition to a route will not work when navigating forward beyond the entries in the redux state.
The subset of the history of browser history stack entries within the current session is mirrored in sessionStorage so that it can be restored into Redux on page reload or on navigation from external history stack entries (using the borwser back/forward buttons, reload button, unfreezing, etc). There used to be a fallback for browsers where sessionStorage is not supported which instead stored the entries inside the current history state. This fallback was removed as part of https://github.com/respond-framework/rudy/pull/61. However, although all modern browsers officially support sessionStorage, there are various circumstances in which it fails to work:
This change restores that fallback. It comes with the same caveats that were there before: