A native application is built to run on a particular operating system - usually, Android or iOS, which own respectively 74.5% and 23% of the global mobile OS market share. Both Google and Apple develop their ecosystems. The apps are distributed through their services: Google Play and App Store.
There may be some confusion with the term as "native app" used to refer to the software available by default in an operating system, such as contacts, calendar, watch or weather. The meaning of the term has changed over time, and now it's mostly used to describe the development strategy.
Software developers write the applications for Android in Java, Kotlin or C++, while for iOS in Swift or Objective-C. They use different development software development kits (SDK) - Android Studio and Xcode for Apple. Native apps use UX components compatible with each operating system.
Native mobile app development is device-specific. This is much easier with iOS, where there is a reasonably limited number of phones and tablets all made by the same manufacturer. Device-specific development is much more challenging for Android where the number of different phones and tablets goes in tens of thousands.
Developing a native app, you have a guarantee of access to the latest OS features, easy integration with Camera, GPS, and other modules. By definition, they should work faster and give an optimal look & feel available on a platform. Of course, this depends on the designer and development team but should be better than the hybrid alternative.
Usually, when coming up with a mobile product, you want it to work on every device. The mobile OS market is neatly divided into two parts. However, running a parallel software development project is costly and time-consuming.
Web apps are fast to develop (you write code and see the result in the browser window), and universal - that is why they are an excellent hub for your product. Hybrid mobile app development allows turning web apps into quasi-native apps that in many cases are indistinguishable from true native apps.
The first hybrid solutions were introduced with HTML5. Facebook was among the leaders of this strategy. The company tried to write the same code for iOS and Android. The Facebook application written in HTML5 worked too slow on iPhones.
That is why Facebook decided to work on a hybrid solution. This is how React Native was born. The goal is to get as close as possible to Android or iOS native apps, but write them with a single code.
Ionic, NativeScript, Xamarin, PhoneGap are other examples of hybrid development tools. Xamarin is a cross-platform development kit owned by Microsoft based on C# programming language. With Xamarin you can build native apps for both Android and iOS. It is a hybrid of native and hybrid attitudes :)
While web apps work only when the device is connected to the internet, hybrid programs just like native apps can perform their tasks offline.
If you are wondering which attitude to choose here's a list of the main differences:
To sum things up. If you are building a universal product, especially one that will also include a web application, you should consider a hybrid solution. Usually, the best choice is to put the web app at the center and then work out the "extensions" of your product for the App Store and Google Play. Managing three separate environments may prove to be tricky with time when your product matures and gets complex.
If your product is based on integration with some core iPhone or Android features (camera, GPS, accelerometer), want to deliver the best look and feel possible, be always update with the newest iOS or Android interface components, and the web application is necessary or not important - you should go native especially, if you can determine which platform is a priority.