At Lolay we often get a first hand look at such bugs and performance issues with a hybrid experience. We often get asked to rewrite an HTML5 experience back to a native experience as the products just are not snappy enough of an experience for end users. Facebook is no exception, and we've often used the Facebook app as an example of what performance you can expect with a hybrid experience.
There are a number of issues we run into with hybrid experiences.
- Too many applications try to replace the entire app logic with HTML5. They use the app as a shell rather than in key, strategic, critical places.
- iOS WebView's have notoriously poor performance, and Android is not significantly better on a year old device.
In all honesty, it's not that a hybrid application is bad. It's just that the HTML for a hybrid experience needs to be used strategically and as light as possible. Here are some our best guidelines for such an experience.
- Perform all navigation natively. Keep the HTML for content only that needs to be updated easily without an app update. A great example of this is Urbanspoon or Zite.
- Perform no animations, scrolling, moving in the HTML itself. Keep that all native.
- For any button actions or similar perform this as an in-app scheme (i.e. your-app://) that is handled natively.
Following these guidelines can lead to a successful hybrid application, although it can be challenging for an organization to think in a lightweight manner.