A good summation post perfect web app from Matyáš Racek’s blog yoyo-code. I think this neatly sums up how difficult it is to write a good, well working web application.
It’s good to have all this in one place. In particular I think this nicely shows some of the trade-offs between traditional server-side rendered multi-page applications and client-side rendered single-page applications. For example:
- It [the app] should work in a limited way offline. and
- The app should work without JavaScript enabled (progressive enhancement)
Those are both not straightforward on their own, and pretty difficult to achieve both at the same time.
I also liked the separation into ‘User POV’ and ‘Technical POV’.
A really good list to aspire to, even if it is out-of-reach for most sites.
From the conclusion:
Especially the local state management, speculative preloading, precise skeletons and optimistic updates are pretty expensive to do well. I implemented many of these things individually, but I’ve never been very satisfied with the result. It’s always too complicated and fragile, too much work and too specific for each case. It feels like there’s an abstraction waiting to be discovered, because there’s a lot in common.