“When people want a native app, they are asking for an app user experience, which is more complex than the web experience. For instance, users want apps to load immediately. That requires a client side cache, which is inherently more complex than a stateless client. There are no silver bullets to solve essential complexity. Trying to abstract away essential complexity only makes things more complex.
Based on my own experience and recent discussions with many of my peers, I think this is a very under appreciated point right now in the startup world. Many web-centric managers and engineering organizations are confronting the “essential complexity” of native app development for the first time since Netscape ushered in an age of lightweight clients, and the response is often to try to force native app development into a familiar web-like mold without regard to the differences inherent in native apps. If you want to develop truly great, Apple-like native experiences, be ready to engage with some serious complexity.