SPA (Single page applications) have both benefits and disadvantages. The same is true for any system, including our current tech stack C#/ASP.NET Core.
While I think that SPA’s, especially with isomorphic rendering and using ChakraCore, might be a robust solution for speeding up our website, I think that we don’t need this yet. There won’t be much interactivity after page load needed for now and probably for the next few years. Q&A pages can differ too much (compare: question list page, question with single answer, question with many answers, mod tools, tag page) to use content replacement as effective as possible, unlike for a chat application for example.
It appears to me, that there are tools – such as ChakraCore – which will allow us to “upgrade to SPA-level” later, if it appears to be needed.
Having a SPA now, will require us to write a lot of logic twice, as there was agreement, not to simply load and insert the full HTML from the server. While we don’t want to make decisions too fast, we still want to have a useable product in a few months.
I am not generally opposing SPA-technology and I think it might be a useful enhancement at a later time. There were some convincing arguments in this thread in favor of single page applications.
However, we must also strike a balance between reconsidering every decision once we get new information and consistency in order to start building. I am generally open to reconsider decisions, but there must be strong arguments, which outweigh the disadvantages. In my opinion this is not the case here.
Hence, having read through all these posts again and after consulting with our technology lead @Marc.2377, the official decision is:
This is rejected for now.
This question isn’t declined forever, though. We might want to reconsider it in a few years. I am just saying, that we won’t reconsider it now. I am sorry, that some people might be disappointed by this. I hope that these stay with Codidact and help as good as they can and want. We’ll need people helping with the front end, too, so you can use your JavaScript skills there as well.