Hybrid Apps normally use one code based comprised of web technologies like HTML, CSS and javascript and run in on a webview. The advantages of Hybrid apps are that now you only need to maintain one codebase for multiple platforms – Android, iOS and the Web.
Native apps are built using the specific programming language for the platform, so for Android you would use Java or Kotlin . For iOS , you would use Swift or Objective C.
Performance
The main gripe over choosing hybrid apps was performance which was a valid concern. But today, webviews are getting more performant and phone are getting much more powerful so the perceived performance difference between a pure native app and one built with a hybrid frame is minuscule for most use-cases.
UI
Hybrid apps also have the reputation of having worse UI than native apps but this also is changing with UI frameworks like ionic which provide a range of components that match the platform they are built for.
Why choose Hybrid
The speed of development of hybrid apps and the fact that you have to maintain only one code base for multiple platforms are two excellent reasons to choose hybrid over native.
There are many great hybrid app frameworks to choose from like Cordova, Appcelerator, Sencha Touch, Xamarin.
Why choose Native
There are situations when going the native route is better. As Hybrid apps still suffer a small performance hit by running over the webview, If your app is doing some heavy work and performance is key, then you should consider going native.
If you rely a lot on native functionality or API’s, there are a lots of plugins available for the most commonly used features, but for many libraries, there are no plugins, so you will have to write a plugin for the functionality. If your app requires lots a custom native code in plugins, it might be easier to just go native instead of maintaining multiple plugins.