1. Memory Issues
The client program--in this case the browser--excels in bringing the data in, doing some small tasks with it, and displaying it to the user. This is what browsers are optimized for. And for those, which do not remember it, it took about 20 years, for this experience to become almost unnoticeable to the user.
The SPA approach, as I see it, wants to change this. Instead of small task, It has the ambition to turn the single window if the browser, into a whole program by itself. Pros cited are as always--its faster, its more user friendly, easier to program.
However, this poses a great challenge. When you load a new page, the browser initializes the new page with a dedicated memory pocket, allocated to this webpage only. Each new reload, frees the consumed pocket, and the new page gets a free memory pocket again. With SPAs though, this memory pocket just does not free up. You load lots of resources initially, in order for all the SPA approach to be viable, so the initial memory pocket is already diminished. Most of the SPA pages are minimal--load a bunch of text, show it in a div. However, lots of them desire to be more sophisticated, requiring developers to manage data on the client side. This is where most of the issues occur. SPAs start to eat more and more memory, with each new feature, until they become the mastodons they are.
2. Single Point Application, Means Single Point of Failure.
3. Navigation Using # . Gross Misconduct
Most SPAs use # or #! slugs to navigate their content. Well this is a improper use of the # sign. # is used for anchors, and this is it. No second opinion allowed. This is a gross misconduct, a terrible hack. Much similar to how viruses misuse your trust, and infect your computer, without being allowed to. If you are into SPAs framework development, do not use # for navigation. There are proper ways. Find them, and follow the specs.