{"id":11857,"date":"2019-06-19T18:23:29","date_gmt":"2019-06-19T15:23:29","guid":{"rendered":"https:\/\/railsware.com\/blog\/?p=11857"},"modified":"2021-07-02T13:19:55","modified_gmt":"2021-07-02T10:19:55","slug":"native-vs-hybrid-vs-cross-platform","status":"publish","type":"post","link":"https:\/\/railsware.com\/blog\/native-vs-hybrid-vs-cross-platform\/","title":{"rendered":"Mobile App Development Approaches Explained"},"content":{"rendered":"<p class=intro-text>To deliver a mobile experience to your users, building a native app is not the only option. Today, product owners are flexible in their choice. They can go hybrid &#8211; rely on web technologies and browser rendering. Or enjoy the benefits of cross-platform development tools like React Native or Flutter. Below, you\u2019ll find the key to solve this trilemma of choosing a mobile app development approach.<\/p>\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-vs-Hybrid-vs-Cross-Platform-main.png\" alt=\"Native-vs-Hybrid-vs-Cross-Platform\" width=\"2014\" height=\"1261\" class=\"aligncenter size-full wp-image-11919\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-vs-Hybrid-vs-Cross-Platform-main.png 2014w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-vs-Hybrid-vs-Cross-Platform-main-360x225.png 360w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-vs-Hybrid-vs-Cross-Platform-main-768x481.png 768w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-vs-Hybrid-vs-Cross-Platform-main-1024x641.png 1024w\" sizes=\"auto, (max-width: 2014px) 100vw, 2014px\" \/><\/p>\n\n<h3 style=\"text-align:center\"><text style=\"color:#4b134f\">Let&#8217;s take a look at each of them<\/text><\/h3>\n\n<h2>Native app development<\/h2>\n\n<p>Going native is the way most product owners dream of, but not all can afford. It involves the creation of a mobile app that fits one platform only. In this case, engineers leverage a native-to-the-operating-system programming language. It can be Java or <a href=\"https:\/\/railsware.com\/blog\/kotlin-announced-as-a-first-class-citizen-in-android-why-does-it-matter\/\" rel=\"noopener noreferrer\" target=\"_blank\">since recently Kotlin<\/a> for Android, and Swift\/Objective-C for iOS. Users love native apps for high performance and tailored-to-the-platform UX. This approach, though, scares off startupers for being cost-consuming. And the cost is the key distinction of <a href=\"https:\/\/www.intellectsoft.net\/blog\/native-vs-hybrid-app-development\/\" rel=\"noopener noreferrer\" target=\"_blank\">native vs. hybrid app development<\/a>.<\/p>\n\n<p>For development, engineers get access to the device&#8217;s full feature set. This allows them to leverage advanced functionalities (memory management, complex networking, etc.). But, the biggest challenge is to run the app on two platforms. To do this, you need to make separate codebases. Yet, some native extensions enable code sharing. For example, you can share the C++ libraries between iOS and Android apps using Java Native Interface. Even so, product owners are desperate to increase development costs almost twofold.<\/p>\n\n<h3>Tools to use:<\/h3>\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-app-dev-tools.png\" alt=\"Native-app-development-tools\" width=\"767\" height=\"221\" class=\"aligncenter size-full wp-image-11921\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-app-dev-tools.png 767w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-app-dev-tools-360x104.png 360w\" sizes=\"auto, (max-width: 767px) 100vw, 767px\" \/><\/p>\n\n<h3>Examples:<\/h3>\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-app-dev-examples.png\" alt=\"Native-app-development-examples\" width=\"386\" height=\"181\" class=\"aligncenter size-full wp-image-11922\" usemap=\"#native-app-examples\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-app-dev-examples.png 386w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-app-dev-examples-360x169.png 360w\" sizes=\"auto, (max-width: 386px) 100vw, 386px\" \/>\n<map name=\"native-app-examples\">\n  <area target=\"_blank\" alt=\"Artsy\" title=\"Artsy\" href=\"https:\/\/apps.apple.com\/us\/app\/artsy-buy-sell-original-art\/id703796080\" rel=\"nofollow noopener noreferrer\" coords=\"28,24,118,138\" shape=\"rect\">\n  <area target=\"_blank\" alt=\"Pinterest\" title=\"Pinterest\" href=\"https:\/\/apps.apple.com\/us\/app\/pinterest\/id429047995\" rel=\"nofollow noopener noreferrer\" coords=\"136,21,239,143\" shape=\"rect\">\n  <area target=\"_blank\" alt=\"iOS calculator\" title=\"iOS calculator\" href=\"https:\/\/apps.apple.com\/in\/app\/the-calculator\/id398129933\" rel=\"nofollow noopener noreferrer\" coords=\"253,20,362,144\" shape=\"rect\">\n<\/map><\/p>\n\n<h2>Hybrid app development<\/h2>\n\n<p>Native is not a must for the mobile experience. Besides, your project might need another vector of priority like a fast time to market. To this effect, a hybrid app is not just a cheaper alternative. It requires less time for development and allows for code sharing. The reverse side of the coin is sluggish performance and suboptimal user experience. Theoretically, it is possible to achieve a great UX and navigation patterns from a visual standpoint. This is, however, a challenge to put  into practice.<\/p>\n\n<p>Hybrid apps blend web elements with mobile ones. So, you create a codebase using standard web technologies (HTML, CSS, JavaScript). Then, you wrap it inside a native container &#8211; the WebView. The content within WebView is rendered as a plain old website. It is responsible for UX and access to the hardware functionality (camera, GPS, etc.). The latter, however, is quite limited in contexts of hybrid application development vs. native application development. Eventually, a user can get a standalone application in the app store.<\/p>\n\n<h3>Tools to use:<\/h3>\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Hybrid-app-dev-tools.png\" alt=\"Hybrid-app-development-tools\" width=\"373\" height=\"177\" class=\"aligncenter size-full wp-image-11923\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Hybrid-app-dev-tools.png 373w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Hybrid-app-dev-tools-360x171.png 360w\" sizes=\"auto, (max-width: 373px) 100vw, 373px\" \/><\/p>\n\n<h3>Examples:<\/h3>\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Hybrid-app-dev-examples.png\" alt=\"Hybrid-app-development-examples\" width=\"374\" height=\"175\" class=\"aligncenter size-full wp-image-11924\" usemap=\"#hybrid-app-examples\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Hybrid-app-dev-examples.png 374w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Hybrid-app-dev-examples-360x168.png 360w\" sizes=\"auto, (max-width: 374px) 100vw, 374px\" \/>\n<map name=\"hybrid-app-examples\">\n<area target=\"_blank\" alt=\"Just Watch\" title=\"Just Watch\" href=\"https:\/\/apps.apple.com\/ua\/app\/justwatch-movies-tv-shows\/id979227482\" rel=\"nofollow noopener noreferrer\" coords=\"20,28,132,160\" shape=\"rect\">\n    <area target=\"_blank\" alt=\"NHS\" title=\"NHS\" href=\"https:\/\/apps.apple.com\/us\/app\/my-local-nhs\/id893712887\" rel=\"nofollow noopener noreferrer\" coords=\"135,29,233,159\" shape=\"rect\">\n    <area target=\"_blank\" alt=\"Airbus Helicopters\" title=\"Airbus Helicopters\" href=\"https:\/\/apps.apple.com\/us\/app\/pc2-dle\/id604015383\" rel=\"nofollow noopener noreferrer\" coords=\"238,30,362,159\" shape=\"rect\">\n<\/map><\/p>\n\n<h2>Cross-platform app development<\/h2>\n\n<p>It is important to remember that hybrid and cross-platform apps are not the same. Perhaps, the only common feature between them is code shareability. Due to that, they both allow you to speed up the pipeline. All the rest discloses many differences between cross-platform vs. hybrid app development.<\/p>\n\n<p>Cross-platform dev approach uses a native rendering engine. The codebase written in JS connects to native components via the so-called bridges. This provides the close-to-native UX. Cross-platform apps are free of platform hook. They offer seamless functionality, easy implementation, and cost-effective production. Yet, do not expect outstanding performance. Customization is also a pain since it is limited to the framework you use.<\/p>\n\n<h3>Tools to use:<\/h3>\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Cross-platform-app-dev-tools.png\" alt=\"Cross-platform-app-development-tools\" width=\"373\" height=\"177\" class=\"aligncenter size-full wp-image-11925\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Cross-platform-app-dev-tools.png 373w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Cross-platform-app-dev-tools-360x171.png 360w\" sizes=\"auto, (max-width: 373px) 100vw, 373px\" \/><\/p>\n\n<h3>Examples:<\/h3>\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Cross-platform-app-dev-examples.png\" alt=\"Cross-platform-app-development-examples\" width=\"376\" height=\"173\" class=\"aligncenter size-full wp-image-11926\" usemap=\"#cross-platform-app-examples\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Cross-platform-app-dev-examples.png 376w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Cross-platform-app-dev-examples-360x166.png 360w\" sizes=\"auto, (max-width: 376px) 100vw, 376px\" \/>\n<map name=\"cross-platform-app-examples\">\n<area target=\"_blank\" alt=\"Bloomberg\" title=\"Bloomberg\" href=\"https:\/\/apps.apple.com\/us\/app\/bloomberg-business-news\/id281941097\" rel=\"nofollow noopener noreferrer\" coords=\"126,159,21,29\" shape=\"rect\">\n    <area target=\"_blank\" alt=\"Insightly\" title=\"Insightly\" href=\"https:\/\/apps.apple.com\/us\/app\/insightly-crm\/id563017797\" rel=\"nofollow noopener noreferrer\" coords=\"137,29,240,159\" shape=\"rect\">\n    <area target=\"_blank\" alt=\"Reflectly\" title=\"Reflectly\" href=\"https:\/\/apps.apple.com\/us\/app\/reflectly\/id1241229134\" rel=\"nofollow noopener noreferrer\" coords=\"248,31,355,158\" shape=\"rect\">\n<\/map><\/p>\n\n<h2>Progressive web app &#8211; as a bonus to mention:)<\/h2>\n\n<p>This mobile development approach is a relatively new name in the market. To some extent, <a href=\"https:\/\/railsware.com\/blog\/what-is-a-progressive-web-app-and-why-should-you-consider-it\/\" rel=\"noopener noreferrer\" target=\"_blank\">progressive web apps<\/a> or PWAs resemble hybrid ones. They\u2019re based on web technologies and run in a browser. You do not even need to install them. Yet, you can still access the app on the home screen. On the other hand, they are progressive because the UX is significantly optimized. A PWA works offline, provides GPS access, push notifications, and many more for Android. For iOS (latest 12.2 release), your benefits will be constrained: no camera access, no default launch image, no installation API, and <a href=\"https:\/\/medium.com\/@firt\/whats-new-on-ios-12-2-for-progressive-web-apps-75c348f8e945\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">other issues<\/a>.<\/p>\n\n<p>For development, building a progressive web app is a royal flush. It is cheaper and faster than making a cross-platform app not to say a native one. PWA is also gainful from the talent perspective. You can go with <a href=\"https:\/\/railsware.com\/blog\/react-vs-angular-battle-for-the-front-end\/\" rel=\"noopener noreferrer\" target=\"_blank\">Angular or React<\/a>-savvy engineers since there is no dedicated PWA framework so far. E-commerce apps are the most frequent adopters of progressive approach for mobile.<\/p>\n\n<h3>Tools:<\/h3>\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Progressive-web-app-dev-tools.png\" alt=\"Progressive-web-app-development-tools\" width=\"372\" height=\"170\" class=\"aligncenter size-full wp-image-11927\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Progressive-web-app-dev-tools.png 372w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Progressive-web-app-dev-tools-360x165.png 360w\" sizes=\"auto, (max-width: 372px) 100vw, 372px\" \/><\/p>\n\n<h3>Examples:<\/h3>\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Progressive-web-app-dev-examples.png\" alt=\"Progressive-web-app-development-examples\" width=\"373\" height=\"172\" class=\"aligncenter size-full wp-image-11928\" usemap=\"#pwa-examples\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Progressive-web-app-dev-examples.png 373w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Progressive-web-app-dev-examples-360x166.png 360w\" sizes=\"auto, (max-width: 373px) 100vw, 373px\" \/>\n<map name=\"pwa-examples\">\n<area target=\"_blank\" alt=\"Flipkart\" title=\"Flipkart\" href=\"https:\/\/m.flipkart.com\" rel=\"nofollow noopener noreferrer\" coords=\"19,32,132,158\" shape=\"rect\">\n    <area target=\"_blank\" alt=\"Forbes\" title=\"Forbes\" href=\"http:\/\/m.forbes.com\/\" rel=\"nofollow noopener noreferrer\" coords=\"136,29,244,158\" shape=\"rect\">\n    <area target=\"_blank\" alt=\"AliExpress\" title=\"AliExpress\" href=\"https:\/\/m.aliexpress.com\" rel=\"nofollow noopener noreferrer\" coords=\"252,29,358,159\" shape=\"rect\">\n<\/map><\/p>\n\n<h2>Comparison table<\/h2>\n\n<p>\n<table id=\"tablepress-27\" class=\"tablepress tablepress-id-27\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">App type<\/th><th class=\"column-2\">Native<\/th><th class=\"column-3\">Hybrid<\/th><th class=\"column-4\">Cross-platform<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\"><strong>Tools<\/strong><\/td><td class=\"column-2\"><li>XCode<\/li><br \/>\n<li>AppCode<\/li><br \/>\n<li>Android Studio<\/li><\/td><td class=\"column-3\"><li>Ionic<\/li><br \/>\n<li>Apache Cordova<\/li><br \/>\n<li>Visual Studio<\/li><\/td><td class=\"column-4\"><li>React Native<\/li><br \/>\n<li>Xamarin<\/li><br \/>\n<li>Flutter<\/li><\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\"><strong>Rendering engine<\/strong><\/td><td class=\"column-2\">Native<\/td><td class=\"column-3\">Browser<\/td><td class=\"column-4\">Native<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\"><strong>Ease of development<\/strong><\/td><td class=\"column-2\">\ud83d\ude15<\/td><td class=\"column-3\">\ud83e\udd14<\/td><td class=\"column-4\">\ud83d\ude0f<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\"><strong>Libraries<\/strong><\/td><td class=\"column-2\">Not much dependency on open-source libraries and platforms<\/td><td class=\"column-3\">Highly dependent on different libraries and frameworks<\/td><td class=\"column-4\">Highly dependent on different libraries and frameworks<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\"><strong>Debugging<\/strong><\/td><td class=\"column-2\">Native debugging tools<\/td><td class=\"column-3\">Native + web development debugging tools<\/td><td class=\"column-4\">Depends on the framework*<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\"><strong>Codebase<\/strong><\/td><td class=\"column-2\">separate codebases - one per platform<\/td><td class=\"column-3\">single codebase with potential platform-specific abilities<\/td><td class=\"column-4\">single codebase with potential platform-specific abilities<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\"><strong>Pros<\/strong><\/td><td class=\"column-2\"><li>Full access to device\u2019s\/OS\u2019s features<\/li><br \/>\n<li>Powerful performance<\/li><br \/>\n<li>Native UI (updated along with the OS)<\/li><br \/>\n<li>Efficient App Running<\/li><br \/>\n<li>High-quality functionality and UX<\/li><br \/>\n<li>Access to all native APIs and the platform-specific functionality<\/li><\/td><td class=\"column-3\"><li>Lower development costs<\/li><br \/>\n<li>Different OS support<\/li><br \/>\n<li>Code reuse<\/li><br \/>\n<li>Cost-effective development<\/li><br \/>\n<li>Big customization capabilities<\/li><\/td><td class=\"column-4\"><li>Different OS support<\/li><br \/>\n<li>UI performance is almost as fast as native<\/li><br \/>\n<li>Code reuse<\/li><br \/>\n<li>Cost-effective development <br \/>\n(however, a new language or approach will need to be learned)<\/li><\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\"><strong>Cons<\/strong><\/td><td class=\"column-2\"><li>No multi-platform support<\/li><br \/>\n<li>High dev costs if different OS support is needed<\/li><br \/>\n<li>No code reuse<\/li><\/td><td class=\"column-3\"><li>Slower performance<\/li><br \/>\n<li>Limited access to OS features<\/li><br \/>\n<li>No interaction with other native apps<\/li><\/td><td class=\"column-4\"><li>Slower performance<\/li><br \/>\n<li>Limited access to OS features <br \/>\n(however, not as limited as for hybrid)<\/li><br \/>\n<li>Poor interaction with other native apps<\/li><\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\"><strong>Examples<\/strong><\/td><td class=\"column-2\"><li>Any preset app in your OS<\/li><br \/>\n<li>Artsy<\/li><br \/>\n<li>Pinterest<\/li><\/td><td class=\"column-3\"><li>JustWatch<\/li><br \/>\n<li>NHS<\/li><br \/>\n<li>Airbus Helicopters<\/li><\/td><td class=\"column-4\"><li>Bloomberg<\/li><br \/>\n<li>Insightly<\/li><br \/>\n<li>Reflectly<\/li><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-27 from cache -->\n<em>* Complicated for React Native because there are two layers (and two languages) to go through. You start with JS and then you end up debugging Java code on Android or Swift on iOS. Other cross-platform SDKs like Flutter or Xamarin employ one language &#8211; Dart and C# respectively. <\/em><\/p>\n\n<h2>What to consider when choosing an approach to build a mobile app<\/h2>\n\n<h3>Budget<\/h3>\n\n<p>How much money you can spend on a mobile app is fundamental, but it\u2019s not the only metric for choosing a dev approach. When you\u2019re limited in funds, you can\u2019t afford a native app for both iOS and Android. At best, you\u2019ll have to focus on only one platform.<\/p>\n\n<p>On the other hand, even if the budget is king-sized, it\u2019s not necessary to go native. Your project might benefit from a cheaper app type that will cover your specific needs. For example, your current team consists of JS experts. You can take advantage of this and build a JS-based mobile app with React Native. Otherwise, you\u2019ll have to spend time on hiring experts for two (or more) platform-specific teams.<\/p>\n\n<h3>Time to market<\/h3>\n\n<p>How soon you need an app is also crucial. You should bear in mind that building a native app is quite time-consuming. From this standpoint, hybrids and even PWAs are undisputed winners. And this option is well-targeted if you want to win a race to mobile market over your competitors. However, you\u2019ll have to lower your expectations for performance and UX of the app. Once your product has been marketed, you might consider evolving it into a native app with time, budget permitting.<\/p>\n\n<h3>Reach (market coverage)<\/h3>\n\n<p>For now, we have the two largest markets of mobile apps. And most product owners prefer to have their apps available on both of them. In this context, cross-platform or hybrid app development is a winning approach. They let you clear your mind of additional load associated with multiple platforms. You\u2019ve got one team that works on the app that can run on both iOS and Android. With native, you\u2019ll have more pains.<\/p>\n\n<h3>App performance<\/h3>\n\n<p>Airbnb\u2019s example can be instructive here. This company was one of the first adopters of React Native. They chose the cross-platform method to move faster as an organization and to only have to write product code once. Two years later, their priorities changed. Airbnb set its sights on higher app performance and better dev experience. Hence, now they\u2019re putting all of their efforts into <a href=\"https:\/\/medium.com\/airbnb-engineering\/sunsetting-react-native-1868ba28e30a\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">making native amazing<\/a>.<\/p>\n\n<p>What we can learn from Airbnb is that you can benefit from different dev approaches at a particular time. They were satisfied with React Native at the outset of their journey to mobile. However, growing ambitions and objectives pushed them to go native. That was not a mistake but a fruitful experience. As for hybrid app performance in general, here is what Zuckerberg thinks:<\/p>\n\n<p style=\"text-align:center;\"><em><text style=\"color:#0f41c0\">The biggest mistake we\u2019ve made as a company is betting on HTML5 as opposed to native<\/text><\/em><\/p>\n\n<p>Perhaps, this was one of the inspirations for creating React Native.<\/p>\n\n<h3>UI and UX<\/h3>\n\n<p>According to <a href=\"https:\/\/www.statista.com\/statistics\/751532\/worldwide-application-user-retention-rate\/\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">Statista<\/a>, the retention rate of mobile app users is 38% in 2018. It means that nearly one in three people abandon mobile apps after the first experience. That\u2019s why the impression your product provides is crucial. Native apps are headliners in UI and UX. Users get better scrolling, dynamic animations, and other appealing elements. And these are wrapped in a performant product.<\/p>\n\n<p>If we compare cross-platform development vs. native development, the former lags behind. But still, the UX you can get with Flutter or React Native is much better than with any hybrid framework. We\u2019ve blogged about it in <a href=\"https:\/\/railsware.com\/blog\/ionic-vs-react-native-building-a-mobile-app\/\" rel=\"noopener noreferrer\" target=\"_blank\">Ionic vs. React Native<\/a>.<\/p>\n\n<h3>Functionality<\/h3>\n\n<p>Do you want your users to enjoy functionalities linked to a device\u2019s utilities? These are the camera, various sensors, and so on. If you do, keep in mind that hybrid apps cannot implement them to the fullest extent. Cross-platform apps are less limited than hybrids. Still, it\u2019s possible to develop 95% of the app using React Native, and the remaining 5% with native technology. The native code implements some sensors whenever you need them to the fullest extent. The native dev approach has no restrictions in this regard.<\/p>\n\n<h2>So, what&#8217;s your choice?<\/h2>\n\n<h3>Build a native app<\/h3>\n\n<p>Native dev approach is definitely a king. It provides you with unlimited area for development. The native app is unlikely to frustrate the UX expectations of your users. And your engineers will enjoy working at this project.<\/p>\n\n<p>But be prepared for your dev team to increase almost twofold. So will the costs. And do not expect a fast TTM unless your developers are supermen:)<\/p>\n\n<h3>Build a hybrid app<\/h3>\n\n<p>What a hybrid approach can attract with is low price and high dev speed. So, an ambitious startup can benefit from building a hybrid app as a pilot solution. It is the best option if you do not think much of UX and performance. These factors, however, might scare off demanding users.<\/p>\n\n<h3>Build a cross-platform app<\/h3>\n\n<p>Think of cross-platform as a golden mean between the above options. It is not as cheap as  hybrid but cheaper than native. The app performance is on a good level. There are some use cases that claim they managed to achieve native performance, but these are perhaps&#8230; less than honest:) TTM? Perhaps, the difference between native and cross-platform development  for dev speed is not huge. But, if you opt for a cross-platform framework, you&#8217;ll win in terms of cost and time-efficiency.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You can choose from a few types of mobile app development approaches depending on your budget, talent base, and other factors. Discover the available options, and find out which type of mobile app fits your requirements.<\/p>\n","protected":false},"author":41,"featured_media":11929,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3],"tags":[],"coauthors":["Sergiy Korolov"],"class_list":["post-11857","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"aioseo_notices":[],"categories_data":[{"name":"Engineering","link":"https:\/\/railsware.com\/blog?category=development"}],"post_thumbnails":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2019\/05\/Native-vs-Hybrid-vs-Cross-Platform-main.png","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/11857","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/comments?post=11857"}],"version-history":[{"count":17,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/11857\/revisions"}],"predecessor-version":[{"id":18109,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/11857\/revisions\/18109"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media\/11929"}],"wp:attachment":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media?parent=11857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/categories?post=11857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/tags?post=11857"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/coauthors?post=11857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}