Some of the arguments the author mentions are not really good arguments. Basically it boils down to how much you care about the user experience. I designed and developed a SPA for a large real-estate portal in <6 months. I think we've nailed all of the points the author mentioned:
- Initial request is rendered server-side, so TTI is extremely low. Even if the JS hasn't kicked in, the website is already usable.
- Back button works perfectly fine. We use the HTML5 `history.pushState` method to add new entries to the history stack.
- Links are always rendered as anchor tags. So even if the onClick handler fails or the JS crashed, the link will still work.
- Compress the hell out of the bundle. Clocking in at 190KB compressed. (Edit: should do something about this, should be <100KB)
Basically, we have most of the advantages of rendering "static" pages, yet also get all of the advantages of an SPA. We can do pre-loading in search results for example. If you click a link in search results, we immediately render the page and use the data from the search result to show a basic page and then slowly enhance it.
This powers a large real-estate website that receives hundreds of thousands of visits a week. For this kind of business, a lot of stuff is important to get right. SEO related optimisations are extremely important. Hence, we server-side render everything to make sure the GoogleBot can read it all. The same applies to links. We keep our bundle size as small as possible to keep things speedy.
Oh, and I personally got a kick out of spending a weekend to make the website function perfectly well without JS.
- Initial request is rendered server-side, so TTI is extremely low. Even if the JS hasn't kicked in, the website is already usable.
- Back button works perfectly fine. We use the HTML5 `history.pushState` method to add new entries to the history stack.
- Links are always rendered as anchor tags. So even if the onClick handler fails or the JS crashed, the link will still work.
- Compress the hell out of the bundle. Clocking in at 190KB compressed. (Edit: should do something about this, should be <100KB)
Basically, we have most of the advantages of rendering "static" pages, yet also get all of the advantages of an SPA. We can do pre-loading in search results for example. If you click a link in search results, we immediately render the page and use the data from the search result to show a basic page and then slowly enhance it.
This powers a large real-estate website that receives hundreds of thousands of visits a week. For this kind of business, a lot of stuff is important to get right. SEO related optimisations are extremely important. Hence, we server-side render everything to make sure the GoogleBot can read it all. The same applies to links. We keep our bundle size as small as possible to keep things speedy.
Oh, and I personally got a kick out of spending a weekend to make the website function perfectly well without JS.