Fully server-rendered upon first visit. After the page is loaded, an HTML Shell consisting
of the <head>
portion and common <body>
elements is added
to the browser cache. After clicking a link, the browser performs a full navigation, but
now a Service Worker immediately sends the cached App Shell in a Response Stream. It
simultaneously requests just the <body>
portion of the loaded page from
the server and merges the response into the Response Stream.
No matter which page is requested, the server always responds with the same plain HTML document that contains no content. Once loaded, client-side JavaScript will populate the document with content and handle all subsequent navigations and interactions. On first load, a Service Worker caches the plain HTML document as well as required assets to speed up future pageloads.
Initial load works the same way as the MPA with stream-stitched App Shell variant: the server only responds with the HTML partial that contains the content, which is combined with the cached App Shell by the Service Worker. After load, JavaScript hydrates the page and handles all further navigations and interactions.
A "classic" website, pages are fully server-rendered. After clicking a link, the browser
performs a full navigation, loading a new document in a fresh context. Interactions are
handled partly through <form>
navigations, partly through a small amount
of client-side JavaScript.
No matter which page is requested, the server always responds with the same plain HTML document that contains no content. Once loaded, client-side JavaScript will populate the document with content and handle all subsequent navigations and interactions.
Upon first visit the server responds with the fully-rendered HTML document for the requested page. Once loaded in the browser, client-side JavaScript will take over in a process called hydration and handle all subsequent navigations and interactions.