My guess is there is a large class of users for whom client side apps are good enough for the job they're doing. Some of the use-cases where Excel is used today for example, and video games too, which are often self contained. Clay Shirkey's "situated software" article explains these ideas very well.
Even data storage and sync is possible fully client side using WebRTC peer-to-peer tech.
I think separating the data the system operates on from a series of smaller systems is the key here.
Take a look at posts, blogs and videos by Joe Armstrong, one of the inventors of Erlang. Some things that stand out are "immutable code" and globally accessible code.
The other one is the research around CRDTs.