I would like you to (technically) cite the pros and cons of this technique.
Obviously all the pros and cons depend not only on the technique used but also on the actual implementation.
- Improved user experience responding faster and without breaking the flow of information. The user does not see the mechanism working.
- Server load reduction that doesn't need to "render" the pages, it only works with the data.
- Smaller volume of data transferred (in most cases not much difference). There is often a noticeable performance gain.
- There is a greater decoupling between what is on the server and the client. It gives the designer more freedom. It may eventually increase security.
- Problems with SEO (no, the fact that Google interprets JS didn't solve the problem).
- It's common to have more security holes exposing things you shouldn't (XSS mostly). Exposure can cause other problems as well.
- Such an application running a long time in the browser can be resource hogs, especially if there is a resource leak, which is common.
- There are cases that you need to duplicate server code on the client.
- The initial load can be higher and cause frustration (bad UX).
- It is not simple to do it correctly.
There are some things that people complain are not problems anymore.
Obviously I may have forgotten something.