Skip to main content

Select your location

Mobile app development: when should I build a native app?

Person holding phone in hands

What are native apps and when are they suitable for mobile app development?

Two decades of mobile innovation have led to a multitude of options when it comes to app technology. Whether you want to build for a one-off conference or a full-scale transformation of your customer journeys, finding the right one for your business is a challenge in itself.

In the first of our deep-dive discussions as part of the Mobile App Technology Report 2022, we take a look at native iOS and Android apps to help you decide on their suitability for your particular objectives.

We sat down with Raynelle Alphonso to talk through everything from the total control and flexibility native can bring you to the challenges of its reuse between platforms.

What is a native app?

A native application is a program that is developed for a particular platform. Native apps are much faster in performance since they work directly with the device’s operating system (OS).

Two of the main mobile OS platforms are Apple's iOS and Google's Android. iOS apps are written in Objective-C, Swift and SwiftUI, while Android Apps are mainly in Java and Kotlin.

What skills are required to develop a native app?

To build an iOS app, you would need to know the Swift Programming language that is owned by Apple to develop iOS mobile applications. Swift is the universal language that is used for all iOS mobile app developments. At first, you won’t need to go too deeply into it, but you will need to have a basic understanding of the language and its functionalities, such as Basic Syntax, Classes, Inheritance and Initialization, Control Flow (If and Switch Statements), Error Handling and Optionals.

You don’t necessarily need to know Objective-C, since most apps nowadays don't use it, but a basic level of knowledge would be useful. SwiftUI, which is a more declarative way of writing UI, looks set to stick around, so it’d be worth diving into that, too.

You will need to use Apple’s integrated development environment (IDE), Xcode, to develop iOS apps. It is highly integrated with Cocoa and Cocoa Touch frameworks and is a primary environment to build apps for various Apple devices, such as Apple TV, iPhone, iPad, Mac and Apple Watch.

You’ll need knowledge of networking as well in terms of how apps send data to the server and vice versa. JSON is a data format often used to send data to and from a web service. You’d need to know how to handle JSON data in iOS, i.e. by:

  • JSON Serialization: This involves converting JSON data to and from Swift dictionaries. The JSON object is treated as a dictionary and you will need to map the keys manually and translate it all to fit.
  • Codable: The data is converted into a struct where you can then extract individual values. Codable is a way more modern approach. It even lets you convert between Swift types and other formats, such as XML or a custom type.

The very basic architecture used on an iOS app is the MVC (Model-View-Controller) pattern; you would need to know this to build a basic app with minimum complexity. However, if your app needs to be more complex, it could easily lead to massive ViewControllers. The main aim of your architecture should be to improve maintainability, where testing can be done easily and the app can scale along with team size. Without going into detail about the various architectures and how they work, knowledge of the likes of MVVM, MVP, VIPER will definitely be worth it.

Another important part of Apple’s framework is the Delegate pattern. Its core purpose is to allow an object to communicate back to its owner in a decoupled way. By not requiring an object to know the concrete type of its owner, you can write code that is much easier to reuse and maintain.

Finally, writing unit tests is just as important as writing code. Unit tests are automated tests that run and validate a piece of code to make sure it behaves as intended. They have their own target in Xcode and are written using the XCTest framework.

To build an Android app, you would need good knowledge of object-oriented programming, as well as a grasp of both Java and Kotlin. Until about four years ago, Java was the predominant language before Kotlin was made a first-class language for the Android platform. It is common to have to interop between the two in non-greenfield applications.

You’d also need knowledge of memory management. Mobile devices can be limited in memory, and mismanagement can lead to memory leaks, which can result in application closures or crashes.

It will also help to know multithreading (understanding the threads available to an Android application and their usage). For example, blocking or doing too much on the main or UI thread on Android can lead to crashes or poor performance of the app.

You’ll need to know the components that make up an Android application, their APIs, lifecycles and impacts on the user experience. You’ll need knowledge of the commonly used libraries to build UI, manage state and make network calls, and, as with iOS, a handle of software design patterns and presentation delivery patterns like MVVM, MVI, MVP and MVC.

Ready to read the full report?

Download the Mobile App Technology Report 2022

What are the advantages of developing a native app?

Native apps are typically more secure as they use the core languages for their respective platform, which provides better protection against security violations. They are protected by various layers of the OS, so misuse is difficult.

All iOS versions since iOS 4 have a built-in security feature called Data Protection, which allows an app to encrypt and decrypt the files stored in its directory. The encryption and decryption processes are automatic and hardware-accelerated. Data Protection is available for file and database APIs, including NSFileManager, CoreData, NSData and SQLite.

They have better performance as they are quick and responsive and have access to the elements and APIs that are optimized for various devices, which, in turn, enables the apps to run smoothly and efficiently. You can use the Xcode Organizer to view metrics for launch time, user-interface responsiveness, writes to storage, memory use and energy use, as well as diagnostic reports for disk writes, crashes and energy.

You can also use Instruments to profile your app, choosing a profiling template that’s relevant to the metric you’re considering:

Native apps also offer much better hardware integration, since they can easily get access to hardware features of the device like GPS, microphones and cameras, so it’s a much better user experience overall. They also make it easier to maintain aspect ratio across all devices, thereby keeping UI consistent. The entire UI will be standard in native apps, so developers often find it easier to apply standards and best practices when building them.

They also have simpler UI/UX/presentation logic. As the UI is built targeting only one platform, no logic is required to present or do something different based on the platform the app is running on, which makes the code easier to manage and maintain.

The disadvantages of building a native app come about when code needs to be written for each target platform. This can lead to duplication of shared logic that is written in different programming languages and can’t be reused. This basically means that more engineers are required to complete the work.

Do you have a good example of a native app?

The Shell Energy app is a good example of a native app. It was quite complex and packed with a lot of functionality; it wouldn’t offer the best performance if it wasn’t built on a native platform.

Some of the functionality that it offered included adding a payment card and making payments to top up energy metres. It also had energy usage graphs, which involved drawing the graphs and animations on selection, plus the option to download statements and payments and haptic feedback support.

Explore the Mobile App Technology Report 2022

To find out more about when and how to create a native app for iOS and Android, download our report today and get in touch if you have any questions. We’d love to help you make your mobile experience work better for everyone.

Be sure to stay tuned for more deep-dives in our mobile app technology series…

Share this article

Show me all