As an iOS developer, I frequently get asked what I think of mobile web apps. For one, there wouldn’t be much of a need for iOS developers if everyone made mobile web apps. Some companies–like LinkedIn and Facebook–have moved away from mobile web to native apps. I’ll try to weigh the pros and cons of native, mobile web, and hybrid without any bias.
Native apps are inherently not cross-platform and cost more to make. Hiring a mobile engineer is more expensive than a web developer and if you want an Android app as well, you need to hire an additional engineer. Some people believe that native apps have higher maintenance costs. The term “maintenance costs” is vague to me. I would argue that maintenance costs are lower for native apps because the developer tools are much better for native apps. Apple and Google spend thousands of man-hours building sophisticated dev tools like profilers and debuggers, so it is easy to find a bug or a slow feature in your app. LinkedIn and Facebook switched from mobile web to native for this exact reason–they found the dev ecosystem of mobile web to be limited.
Native apps also have access to the device and its sensors. On the iPhone this includes Location Services (iBeacons, etc.), accelerometer, gyroscope, bluetooth, motion coprocessor, barometer, magnetometer, and compass. There are definitely some interesting apps that use some of these sensors, which just wouldn’t be possible in a mobile web app. Then there are touch screen gestures, clean and fast animations, offline modes, things like Apple Pay and TouchID that a mobile web app can’t access either. Also, native apps have the advantage of being distributed through the App Store. When users want a new app, they just go to the app store–it’s a fixed behavior, it could change, but it would take a while. Users have also come to expect a particular user interface and Apple’s SDK provides the components that users expect.
Native apps are also more secure. Since there is an app approval process, users know that Apple has verified that the app they downloaded is safe–at least to a certain extent. In many forms of authentication, developers use a device ID to in conjunction with credentials to verify identity, which adds an additional layer of security. Apps are sandboxed and are generally safer, where as web apps are kind of like the wild west, since there are many well known web attacks out there.
Native apps also can use push notifications. This is probably a good enough reason itself to build a native app. Push notifications dramatically improve retention and can improve the user experience significantly.
Mobile web does have a few things going for it. You can bypass the app store completely. Apple’s app review times are somewhat unpredictable ranging anywhere from a few hours to a few weeks. Whether you want to ship a copy tweak, a huge new feature, or a bug fix you can deploy it immediately on mobile web. Plus, mobile web apps are cross platform, so it’s easy to build one app for all devices. Also, there are many more web developers than mobile developers, so it would be easier to find a competent dev who can make your app. Cookies are another advantage for mobile web if you want to do more sophisticated tracking/attribution. Mobile web apps typically don’t have an icon on the home screen, unless the user manually adds one, which may hurt retention.
Hybrid apps seem like a great compromise. You can get access to sensors, deploy many fixes immediately, have app store distribution, and take advantage of cross-platform development. LinkedIn and Facebook ditched their hybrid apps though, again, claiming that the dev ecosystem was sparse. They also said animations were to slow.
Users have come to expect a certain experience. They want to download a familiar looking app through the app store, be able to take advantage of the latest features their new device has to offer, want push notifications, and expect animations to be crisp and fast. I definitely think native is the way to go, as do most people. I just wish Apple had a better way to deal with bug fixes. For example, if you release a new version of your app, and it has a bug, it would be great if you could roll back to the previous version, while your new version is waiting for review. Google let’s you rollback in the Playstore. Apple has said that they save previous binaries. It would definitely make life better for both users and developers.