It can be difficult to choose a development stack for your custom mobile apps today due to the number of possibilities currently available. Though there are many options, each of them falls into one of three basic categories: native, cross-platform, or hybrid mobile app development.
In this article, I’ll break down each type of mobile app development and give you pros and cons for each. I will also provide you with things to consider about your particular situation so you can select the best one for your specific needs.
Native App Development
Native apps are built using technologies that are native to their target platform. That means Kotlin or Java for Android, and Swift or Objective-C for iOS. Because native apps are built directly on their mobile operating system, they can sometimes take advantage of its newest features more quickly than other options. Their user interfaces (UIs) can also perform better than some of the HTML-based alternatives.
The major disadvantage of choosing native development for your mobile app is how much harder it makes reusing code between today’s two major mobile platforms–Android and iOS. For that, you’ll need to use a hybrid or cross-platform option.
Native on Android – Kotlin vs Java
Android’s original programming language was Java, which was first introduced all the way back in 1995 by Sun Microsystems, and then acquired by Oracle in 2009.
In more recent years, the Java language has stagnated somewhat, prompting the creation of Kotlin. Kotlin is a more modern programming language that still runs on the Java Virtual Machine (JVM) for full compatibility with Java. It was first released in February 2016 by JetBrains, who created IntelliJ IDEA and several other popular developer tools.
iOS – Swift vs Objective-C
Objective-C is a programming language developed by NeXT, which was acquired by Apple in 1997. It was used in the development of Mac OS X and iOS, but it’s now being replaced by Swift. Objective-C is still used in the mobile app development industry, but Swift has advanced features that make it easier to write more-modern code.
Swift was developed by Apple specifically for use on iOS and macOS platforms. It was introduced at WWDC 2014 and has since replaced Objective-C as Apple’s primary programming language.
Cross-Platform App Development
Cross-platform apps use a single codebase that can work on multiple platforms. Developers write most of the code in one language that then compiles into native code. This is a key distinction between cross-platform apps and hybrid ones, so it bears repeating: they compile to native apps.
Popular cross-platform development frameworks include React Native, Flutter, and .NET MAUI (formerly known as Xamarin). These frameworks make it possible for developers to write an app once and then deploy it on multiple platforms with no need to learn each individual platform’s primary programming language. As long as you’re familiar with the language supported by their chosen framework, they’re able to use it across platforms.
React Native
React Native is a framework for building native apps with JavaScript, HTML, and CSS. It allows you to use the same development stack that you use for web applications, but with the native features of each mobile platform. This means you get a great user experience across platforms and can share your code between all of them. You should note the UI layer differs significantly from a web UI, so you are not able to share that between your web and mobile apps.
Pros:
- Large community of web developers
- Huge list of components and libraries
- Allows you to leverage web teams for mobile development
Flutter
Flutter is a mobile app development platform that helps developers build high-quality native apps for Android and iOS from a single codebase. The Flutter team has focused on creating an architecture that gives you full control over the UI so you can create your app exactly as you want it.
Pros:
- You don’t need to write multiple codebases – just one will do!
- Consistent performance across all platforms (iOS, Android) with its native rendering engine
- Uses the popular Dart programming language
.NET MAUI (formerly Xamarin)
Xamarin, or .NET MAUI as it is now known, is a cross-platform development framework that allows developers to write a single codebase in C# and .NET and run it natively on multiple platforms. One of .NET MAUI’s many advantages over other options is the ability to develop .NET MAUI apps using the very popular Visual Studio IDE, which is by far the best IDE on the market today.
Pros:
- Based on .NET, which means that developers can use C# and Visual Studio to build apps for Android, iOS, Windows, macOS, or WebAssembly.
- Native performance
- Access to all native APIs right out of the box
Hybrid App Development
Hybrid apps are built using web technologies such as HTML, CSS, and JavaScript. Those web applications are then wrapped in a native app container that allows them to run on mobile devices as apps. Hybrid apps still allow you to take advantage of device features like cameras, accelerometers, and other components through wrapper APIs. Because their UIs are rendered as HTML inside a browser running in a wrapper app, their UI performance can suffer compared to native.
Cordova and Ionic are both widely used frameworks for this kind of development.
Cordova
Cordova is an open-source framework, which allows web developers to use HTML, CSS, and JavaScript to create a native application for different mobile platforms. Nitobi created it in 2009, and in 2011 Adobe Systems purchased Nitobi and renamed it Phonegap. Phonegap was subsequently shut down, but Cordova continues to be supported under the Apache Software Foundation.
Ionic
Ionic is a framework that allows you to build offline-capable apps with HTML, CSS, and JavaScript. Originally, Ionic helped you to create Angular web apps running on Cordova, but today it supports Angular, React, and Vue running on either Cordova or Capacitor.
Like other hybrid options, it leverages web development skills, so you don’t have to learn multiple programming languages to target multiple platforms.
Factors to Consider
At Trailhead, when we help a client choose the right mobile app platform for their needs, we like to consider four things: their app’s requirements, their team, the app’s audience, and their need for performance.
Requirements
A lot has to do with the specific requirements of your app. If it’s a video game, then maybe native development is going to be the best choice for you. Do you want to support both iOS and Android versions of the app with a single team? Perhaps hybrid or cross-platform is right for you. Maybe you want to support both iOS and Android, but native UI performance is critical. If so, then a cross-platform technology is probably right for your project.
Team
You must also consider your team’s experience level when deciding which technology stack suits your project best. If you have a team of web developers, perhaps a hybrid or React Native app would be a good fit. If you have a team of C# and .NET developers, then maybe you should consider .NET MAUI (Xamarin).
Because mobile platforms evolve quickly, mobile apps need to be kept fresh. Don’t make the mistake of building a mobile app with technologies that your team can’t easily maintain and letting your app get out-of-date.
Audience
Some apps are for internal use only. If your employees are only using the app on an iPad that you bought for them, then you probably don’t need an Android version of your app. Some consumer apps target a very specific demographic, such as high-income earners in the US, who happen to mostly be on the same platform.
If either of these is the case for you, maybe you don’t need to think about cross-platform development at all and can simply focus on a single, native app instead.
Performance
Technologies that display using HTML, CSS, and JavaScript will never have the same performance as native-compiled technologies such as Xamarin/.NET MAUI, Kotlin/Java, and Swift/Objective-C. Consider using one of these technologies if app performance is a consideration for your needs.
Conclusion
We hope that this article has given you a better idea of the different options you have for native, cross-platform and hybrid mobile app development. Keep in mind that each type of development has its own benefits and drawbacks, so choose the one that is best for your team, company, existing tech stack, and app requirements, and not just what’s the trendiest right now.
There are many reasons you might not have the expertise you need on your team. Whether you need help figuring out which stack to use or if you need to bring in a team of mobile app development experts, Trailhead is here to help you.
Want to learn more about Trailhead Technology Partners?
Check out our About Us page and see what drives us as we create custom software products that make your life easier, and your business run better.