Good examples of Progressive Web Apps seem to very often be single-page-applications. I don’t like SPAs, which seem to me to attempt to replace functionality that the browser can and should do much better, such as memory management, back-and-forward navigation, and restoring scroll position.
However, browsers consistently deliver poorly on the actual experience of navigating between pages, when compared to native apps. In native, typically a view is rendered all at once, and often transitions into view with a visual effect. In web, we are limited to starting with a blank screen when the first byte of the response is received. Other issues include the lack of a BFCache in some browsers which necessitates the re-rendering of the previous page when returning to it with the back button.
I propose to start tackling this with a simple mechanism that will delay the unload of a defunct page until the new page is rendered. At it’s simplest this could take the form of a boolean opt-in:
<a href='page2.html' prerender>
The browser would probably apply a timeout to this, say 2 seconds. WDYT?