Discussions comparing the merits of native and cross-platform app development have been going on for quite a while, though our point of view on this subject has never changed. Since we’ve been building native apps for iOS and Android for years, we know exactly why cross-platform is not the best choice. In this article, we’ll try to explain why native platform development is always the way to go.
First of all, let’s see what a cross-platform app might look like.
Note: By cross-platform I mean web-based apps. C#-based apps, like those built using the Xamarin platform, are not the subject of this article.
Types of cross-platform mobile apps
- HTML5 mobile website. There are a few companies which tried using HTML5 to build their mobile products. Facebook, for example, lost time it could have spent focusing on bigger and better app development, Zuckerberg admitted. LinkedIn also decided to go native after trying HTML5 in action. There is hope for HTML5 though. LinkedIn’s senior director for mobile engineering, Kiran Prasad, says that HTML5 for mobile web has a bright future — but only if developers are willing to build the tools to support it.
Why does Cross-Platform app development attract people?
There are several factors that make cross-platform mobile application development seem attractive to some publishers. Perhaps, the most persuasive is a reduced development cost. Standard-based web technologies that bridge web applications and mobile devices allow companies to get an app onto different platforms without having to invest in a team or a developer specific to the ecosystem.
However, you may end up spending more than you expected in the long run since cross-platform development requires introducing improvements to the user experience.
The one sphere where cross-platform can be a good choice, is mobile gaming. Game developers use Corona and Cocos2d-x SDKs, which make it easy to add physics to 2D games with the underlying engine built around Box2D. And then, there’s Unity, a powerful game development ecosystem fully integrated with intuitive tools and rapid workflows which allow you to create interactive 3D games.
“If we talk about games, I support a cross-platform approach,” said Dima Shemet, iOS developer at BioCard. “But when it comes to creating enterprise apps on HTML-based cross-platform, you may run the risk of getting limited access to APIs, which won’t be the case if you use a native platform.
The biggest drawback of HTML-based cross-platform apps, though is their performance. You may develop UI on HTML, but you’ll have to spend months to achieve the performance native platforms are capable of providing.”
“Cross-platform development has its advantages, though| he added. “It offers a single business logic in the code which diminishes the number of bugs when you develop an app for 2+ platforms.”
Since we aren’t game developers (I don’t know if that’s a good thing, or a bad one), we stick to what the iOS and Android platforms have to offer. And actually, cross-platform frameworks can hardly compete with those two powerful mobile app giants.
The world is moving toward proprietary technologies. Check out this article on TechCrunch which discusses this at length. If you go to conferences for developers, you’ll see the tendency to develop natively in action. At this year’s keynote, Google announced the Material Design approach to the Android platform, its next-generation set of libraries and guidelines for building beautiful apps.
More than that, even email is now experiencing a fundamental change with Google introducing a new Gmail API for building apps that integrate with Gmail. Google promises the API will “deliver dramatic performance improvements over IMAP [traditional email protocol] for web application use cases.”
Native platforms are becoming more fragmented, not only in terms of mobile user interfaces, but also in terms of integration with a company’s products. Apple has long been planning to enable smooth transitions between their Macs and iOS devices. During this year’s WWDC Apple keynote, they announced the Swift language and cloud sync services. Presumably, this will allow developers to create seamless user experience across desktop and mobile devices, but only if they play entirely within Apple’s walls.
“We focus on quality when building Android apps,” said Ricardo Kaka, lead Android developer at BioCard. “Due to the large number of Android devices on the market we need to accommodate design layouts for all of them to create the best possible UX. Native mobile app development in this respect is way more efficient than cross-platform solutions.”
As you see, it might become even more difficult to accommodate platform-specific user experiences on a cross-platform app. What we can definitely say now is that the native mobile app development approach is better for a number of reasons. Here are some of them:
- Code runs faster
- New features are integrated more quickly and easily
- Hardware-related things like gestures, multitouch events, and geo-location tracking are much easier to implement with native technologies
- When things go wrong in the app development, Android or iOS will likely get you a tool to solve your issue
- Designing an app for iPhone is different than designing one for Android. The UI and UX conventions are different, the look and feel is different, and finally the user tastes are different as well.
“Users get accustomed to one platform,” said Parth Nakar, a product designer at BioCard. “Therefore, user experience, its visual language and interactions should satisfy users’ preferences, which may be hard to achieve if you use cross-platform development frameworks.”
A quick history lesson
Once upon a time there was Swing, Java’s attempt to create a user interface library that could translate design elements across platforms. Swing grew from a graphic library for Java, called The Internet Foundation Classes (IFC) that was originally developed by Netscape Communications Corporation. Then the corporation and Sun Microsystems announced their intention to incorporate IFC with other technologies to form the Java Foundation Classes, which were later renamed «Swing».
Despite Sun’s best intentions, the pluggable look and feel that Swing offered never felt native on any platform. This might be a reason why Java didn’t become successful among consumer desktop users.
This example illustrates what we’re trying to say about the need to go native and focus on one platform, rather than trying to cover all platforms at once.
In conclusion, I’d like to add a more recent example of a successful native product. The mobile-first nature of Instagram is considered to be its most valuable aspect, according to Facebook. Instagram demonstrated a clear vision of what could be built using the native approach.