Once you have a Javascript application with state speaking over one or more APIs to your backend services, you're in the domain of distributed system design. Especially if you use the application cache and support offline operation. I frequently see people who are used to more traditional web applications underestimate the system design challenges this causes.
(Those challenges are totally worth solving, because the model is very powerful.)