Mobile apps can be broken into two top-level categories (native and non-native apps). Then within the category of non-native apps, there are various sub-categories (hybrid-apps, cross-platform apps, and progressive web apps (PWAs).
Native mobile apps are built entirely in technologies that are specifically designed to leverage proprietary mobile OS and hardware functions of the two mobile operating system vendors for example like iOS & Android without requiring additional layers to bridge gaps. Specifically, the libraries used in native apps are designed to directly access all of the classes, objects, functions, methods, etc. of the source.
Native android apps written in either Java or Kotlin. The libraries used in these apps can access all of the bespoke functionality built into the Android operating system, as well as the various hardware/firmware variants and chip architectures of the Android ecosystem.
Similarly, Native iOS apps are written in either the Swift or Objective C programming languages, and they contain libraries that can access and take advantage of the OS functions, controls, hardware etc. built by Apple.
Native apps are compiled to run directly on the application. When you compile native mobile apps, the source code (human readable) is actually converted into binary code (machine-readable) and it executes from there.
Non-native mobile apps are written in higher-level programming languages or frameworks for example like JavaScript, CSS, HTML5, Python, .net and cannot directly access all of the proprietary operating system functions and hardware components they require an additional layer or framework in between in order to make use of all the bespoke OS controls specifically built and designed by Google and Apple for the Android and iOS ecosystems respectively
With non-native apps, the source code is not compiled directly into binary code. Instead, the source code is saved inside the application itself. When the app initializes, it reads the code from the saved source code files, and runs the code from there. This means that all of your code is available to anyone with the application file in hand, and these files are not encrypted by default.
Among non-native apps, there are several different variants: Hybrid, Cross-Platform, and Progressive Web Apps (PWAs).
Hybrid apps are developed using common web development technologies like JavaScript, CSS, and HTML5. Structurally, hybrid apps are built as web apps, and then packaged inside a native container or shell for distribution. Cordova, React Native and Flutter are popular ‘hybrid’ app development frameworks. Hybrid apps are appealing because they use a shared code-base to reach multiple platforms. They are also easier to build because of the abundance of pre-packaged libraries and pre-assembled components that developers can assemble. Hybrid apps also allow enterprises to tap into a larger pool of resources due to the larger number of developers conversant in web technologies than there are for the more specialized native frameworks.
Cross-platform apps such as apps built using the Xamarin framework, are also written in a common programming language (in this case C# or C “sharp”), and then compiled to run on both iOS and Android platforms, sharing the same code base. Xamarin apps leverage native Android and iOS user controls, CLI and functions, which enable user experiences and performance characteristics closer to those of native iOS/Android apps (That’s the main thing that differentiates Xamarin apps from their hybrid app counterparts). Though some may argue that Xamarin apps are truly native, they are not, but it is fair to state that they are native.
Progressive Web Apps (PWA) are the newest kid on the mobile development framework block. PWAs, like their hybrid-app cousins, are built using common web technologies like HTML5, CSS and JavaScript and they run cross-platform (on both iOS and Android devices). PWAs generally offer a broader set of native OS controls and richer user experiences because they offer a few key elements that hybrid apps lacked: push notifications, offline access and data synchronization. This enables user experiences closer to that of native apps on mobile devices. PWAs also have more packaging flexibility than native apps and do not require centralized distribution through public app stores, which many organizations and developers find useful and flexible.
Native Apps vs. Non-Native Apps for iOS and Android? Retrieved December 02, 2020, from https://www.allcode.com/native-apps-vs-non-native-apps-ios-android/
Comparing Native, Cross Platform, Hybrid, and PWAs ISE. (n.d.). Retrieved December 2, 2020, from https://www.iseinc.biz/comparing-native-cross-platform-hybrid-and-pwas/