Many people have answered this question in many different ways. We’ll give you our professional insight, without any frills, to guide you in your decision if you’re about to develop an application. This blog is not primarily for developers, but for our customers and potential partners who are thinking about developing an application.
In this blog post, we will first outline the problem itself and our views on it in a clear way, and then go into a more detailed, pro and con perspective.
Let’s be clear from the start: this blog post deals with development for iOS and Android platforms and does not address the specific needs and characteristics of other platforms.
Are there more ways to develop a smartphone app?
Apple iOS and Google Android are both independent smartphone operating systems, they differ in several principles, and the apps that run on them are built with different underlying processes.
Our app can be built by developers using Apple’s or Google’s proprietary development tools (known as native development) and can also be built using third-party software that can take the source code written in the app and make it run separately on both smartphone platforms (cross-platform development).
What is native development?
So, each platform has its own development environment (the set of software and tools that can be used to program a new app and publish it to each app store – these are built by Apple or Google themselves).
When we use the platforms’ own, recommended and most specific toolsets, we can talk about (platform) native development. In this case, we create separate code for iOS and Android, and both require specific knowledge. At Arteries, these tasks are performed by separate iOS and Android developers.
Apps for Apple iOS used to be written in Objective-C, but for a few years now they have been written in Swift.
Google previously offered to write native applications for the Android operating system in Java, and a few years ago in Kotlin.
What is cross-platform (platform-independent) development?
Some companies, recognizing the significant resource requirements of this process, have set out to create a new programming environment in which you can compile your application on both operating systems by writing a single piece of code.
Arteries’ workshop has used several such systems over the years. PhoneGap, Appcelerator Titanium, React Native or Flutter. At Arteries we currently prefer the Flutter development system, which is developed and supported by Google. Its programming language is the so-called Dart programming language.
A Dart programmer can therefore develop a single application for both iOS and Android with Flutter.
Later in this blog post, we will discuss when cross-platform systems are recommended or not. Sometimes the disadvantages outweigh the fact that development is faster and more resource efficient than native development in most cases.
“It’s not up to me as the client to decide which system to build my application in, is it?” – we are often asked.
Of course, our experts will make their recommendations after getting to know the project, reviewing the features to be developed and listening to future needs, explaining the pros and cons, but we leave the decision to our customers.
Just as a general builder will tell you whether he proposes to use brick or another type of masonry (and why) – it is ultimately up to the client to decide what type of masonry they want for their property.
In which cases is it recommended to develop an application natively?
In short: at Arteries we recommend native app development when the application needs to be lightning fast, when it uses different peripherals and hardware elements of the mobile device: e.g. camera, GPS, NFC reader, accelerometer, magnetometer, LiDAR, PPG sensor, bluetooth… etc.
It is also recommended to opt for native environments if your application uses 3D visualization or artificial intelligence. These resources are much more efficiently achieved by a native program than by an application written in a 3rd party cross-platform tool.
In which cases is it recommended to develop a cross-platform application?
Typically, we recommend the use of cross-platform programming tools for applications where the performance requirements of the application are not critical (display, response performance, speed), and real-time or near real-time operation is not expected. When human-scale response times are appropriate (a few hundred milliseconds, or even 1-2 seconds) and the application does not need to access specific hardware elements in the mobile device.
Basic camera, GPS usage is quite smooth even for cross-platform systems, but more advanced operations are more difficult to perform even with these.
When you have an application that does mostly manual data entry and in response some simpler data display, these development tools are very useful.
If we know that we will have more specific needs in the future, it is strongly recommended to consider native development (even at the additional cost) so that we do not have to rewrite our applications previously built with cross-platform tools.