What can you do with native apps that you can't do with hybrid apps

With all the development in the Hybrid apps field the lasts couple of years (like Ionic and ngCordova) I was wondering: What can you do with native apps that you can't do with hybrid apps?

I know that there are some native features that are exclusive for a single operating system like Multipeer Connectivity on iOS.

Could someone provide a list of features that are exclusive to Android and iOS or maybe a Android vs iOS vs Ionic feature comparison?

Ionic is based on Cordova/PhoneGap which uses WebViews. I'll try to answer the more general part of what can you not do with hybrid apps or more exactly, example of things that seem impossible using a WebView:

  • Replacing a DOM element with a native element is possible via overlays, but they cannot be attached to the DOM so if your element is animated via JavaScript or CSS it would lag behind (supposing you manually inform the overlay of its expected new position); scrolling should be possible to synchronize though.
  • Cannot customize well for accessibility.
  • cannot customize text selection / long tap.
  • Another good (and frustrating) example is that on iOS you cannot remove the accessory bar on the keyboard. There are some plugins that can do it for certain versions of iOS, but it's super fragile and doesn't work 100% of the time.

As said, there are many things that are iOS-only or Android-only but those are almost always only because no one made the plugin for the other platform.

Building native applications means using the native language of the platform, Objective-C on iOS, and Java on Android. The main advantage of native applications is their performance. Native apps are compiled into machine code (Dalvik byte code under Android), which gives the best performance you can get from the mobile phone.

Best performance includes fast and fluid animations as well as full access to phone hardware, multi touch support and the latest APIs.