Mobile application development is and has been a hot topic for many years, and for the entire time, developers have often had to figure things out on their own. There are many choices a developer will make when deciding to build a mobile application, including the operating system(s) they intend to support, what language(s) they want to use, how they want to get their application to their users, and many others.
One common question a developer will face early in the development process is which type of mobile application they plan on building or what type of mobile application framework they plan on using. The choices are numerous; the most popular types include native applications, cross platform applications, hybrid applications, and progressive web applications.
We will be diving into native applications and cross platform applications in this post, and we will be covering hybrid applications and progressive web applications, as well as a full comparison of all four application types, in a future post.
Native Application Development
Native application development is by and large the most popular choice for building a mobile application today. Native applications are designed and developed with a certain operating system in mind, and are engineered in a way that will optimize the application performance on that platform. In the United States,the two most common mobile operating systems by a significant margin are Android and iOS, and the decision of which operating systems to support is discussed early in the development planning process.
Native application development comes with several advantages, including:
- developers building skills and expertise in a specific technology (Android or iOS, and supporting systems)
- applications being engineered to perform optimally on the relevant platform
- accessing libraries and extensions to help with development and testing efforts
- following a clear and well explained path to deploy your applications and get to market
On top of these advantages, native application development often has more tools to support your development and troubleshooting. Think of Android Studio for Android application development. This tool allows you to debug your code, create build processes in gradle files, profile your code to identify memory management issues, leverage user interface design tools, and access many other add on options to help you create a great application that’s visually appealing, efficient, and easy to support.
Conversely, some of the challenges that come along with native application development include:
- developing code that can only run on one platform (Android applications do not run on the iOS platform)
- finding team members with the skills necessary is often more expensive than finding a generalist
- acclimating to the high level of entry to be an effective mobile developer which can result in longer periods before new team members have confidence with the code
- team members feeling stuck or limited when working in the same technology stack on multiple projects
When you develop a native application, you also have to consider that your potential customer base is limited to those that use the operating system that will run your application. This is often not a blocking issue, but you do have to understand that you will not be able to serve users that prefer other operating systems.
If the overall number of customers that you can acquire is a primary concern, a native application may not be the correct choice for you. Native application development comes with many positives, including ease of development, expertise for your team members, and an extensive tool suite. On the other hand, you will have to deal with user interface guidelines set by the operating system, higher costs when you want to bring in specialist team members, and the need to create your application multiple times if you need to be available on multiple operating systems. To suit that need, a cross platform application may be the right decision for you as you look to build your mobile application.
Cross Platform Application Development
Cross platform applications came about to try to address some of the cons that stem from native application development. As the name implies, cross platform applications are not restricted to just one platform or operating system, the intention is that these applications can be developed in a way that doesn’t limit the application to run on just one platform. In general, cross platform applications should be those that need to run on Android and iOS (and potentially other operating systems), but deal with something preventing the development of independent native applications for both platforms, such as resource constraints or tight timelines.
Many things are great about cross platform applications including:
- reduced cost and development time due to writing code once that will be shared among many platforms
- team members are easier to identify and acquire because cross platform application development tends to use more commonly utilized technologies (Xamarin uses C#, for example)
- when an organization is setup correctly, cross platform development can allow team members to focus or specialize in one specific area, but still gain skills in all platforms that are supported
The positives of cross platform applications do make them quite appealing, but the cons of this application type tend to be overlooked and ignored due to the allure of reduced cost and time to market. Some of the most notable negatives include:
- poor performance due to significant time spent processing UI (compared to native applications)
- APIs and access to device hardware is less extensive and/or more difficult to integrate with
- writing code once means any bugs in your logic exist in all platforms you’ve deployed your code
- code organization and management can be more difficult due to the need for shared code as well as some platform specific code
- difficulty in aligning with UI standards for the platform because the application’s UI is typically created from scratch
- team members often feel that they aren’t experts in either platform because they always have to make sure features work on both platforms
Cross platform is an exciting tool and one that can be very helpful and effective when used correctly. The key is to make sure to use the tool correctly and have a strategy to pivot if you find yourself spending excessive time setting up the tools or fixing issues related to shared code.
In the next piece of this blog series, we will dive into two more application types: hybrid applications and progressive web applications (PWAs). With the coverage on four different application types, we will perform a comparison between each choice and try to offer some suggestions and decision points to guide you toward an optimal selection.
Do you need help determining the appropriate path forward for your mobile app? Join in the conversation below or Contact Us.