Hybrid Apps allow you to execute your mobile website within a native wrapper. The wrappers provides some access to device API's, and it blends your mobile site code with a native app-like experience. These solutions package your web code into a native project (XCode, for example) where your webpage is displayed in a full screen webview within the native project. This project can then be deployed directly to a device or uploaded to the AppStore. It allows you to largely keep one code base between your desktop site, mobile site, and mobile app. We've covered some of these hybrid solutions in the past when we compared Xamarin.Forms to PhoneGap, and Ionic was covered in the Intro to Ionic Framework webcast (and now we also have an Ionic set up guide). A framework such as Ionic brings a further degree of refinement to what hybrid apps can offer in terms of look and feel. For the purpose of this article, we'll generalize our comparison of hybrid and native development, though we'll mention a few distinctions between platforms.
There are many appealing advantages to hybrid app development. You can target a huge number of potential users with one code base that is shared between your website and your app. This also means most of the code can be written by web developers rather than dedicated mobile developers—which means this is often one of your cheapest options for developing an app. Most of the tools necessary for hybrid development are also open source and free. Also, one shared code base means that your code is easier to maintain, and you can quickly prototype for many platforms at once.
There are some very significant shortfalls to the hybrid approach as well. The look and feel of these apps will be different than pure native apps, and hybrid apps will look and behave consistently across platforms. This means the apps might deviate somewhat from the behavior of other pure native apps available for the platform, and thus might not look exactly like an iOS or Android app. In addition, hybrid apps will not perform as well as native apps. Native development also often has very good documentation available which is something that these hybrid open source solutions really can't match.Native App DevelopmentNative apps are what developers typically think of when talking about mobile development. These apps specifically target one platform that is either iOS, Android, or Windows Phone and require that you have know Objective C / Swift, Java, or C#. App design is usually based around single screens that are connected together with navigation between them. The UI can be built in a visual designer, expressed in markup language (storyboards/xibs, xml, xaml), or generated in code behind. Each platform has its own codebase, and require that you develop in different IDE's for each platform.
The biggest shortcoming of native development is the cost. Your app will look great and be very fast, but it also requires the most specific developer skills to write. Objective C / Swift, Java, and C# and all of the accompanying knowledge of both IDE's and API's makes developing these types of applications nontrivial for those who don't have much past experience with them. This likely means that a company will either need to hire someone with these skills, or allow someone to learn these skills over a period of time. These skills will not overlap between platforms, as an iOS Developer, Android Developer, and Windows Phone developer have three different skill sets and work with three different codebases. Native platform development thus requires that you focus on one platform at a time or have many programmers available to develop each app in parallel.
The answer to "Which is better?" is fairly nuanced. Native apps offer the best end user experience, but require the most specific skills and are the most expensive to develop. Hybrid apps have a lower barrier to entry, are the cheapest to develop, and target the biggest market, but don't necessarily capture the correct look and feel of what end users might be expecting and generally won't perform as well or be as feature-rich. If cost is not an issue, native apps offer the best product, but in more cost-sensitive scenarios, hybrid apps still offer a compelling (if not quite as good) experience. Ultimately, the answer will come to the company, developer, and the end users as to which solution is most appropriate.
Documentation can be lacking
High development cost
Best end user experience