Native apps are smartphone applications written specifically for a particular device. Today the largest competitors are the iPhone and Android phone. iPhone apps are written in Obj-C or Swift while Android apps are written in Java. In an effort to speed up development and use other skill sets, there is a multitude of new tools available to create a mobile app without using the native language. Generally non-native applications either compile down into the native code, or wrap themselves in a native web application and combine native calls with web components. There are pros and cons to all methods; however, for this article I wanted to look into why we at ChaiOne firmly believe that applications should be designed and developed with a platform selection in mind.
The following are some benefits of creating native apps:
Big name brands have flooded the market with free high quality apps. These apps are personal, useful, and jockey for position on every home screen. They continually push the bar of what users are accustomed to, and over time users expect and demand a similar experience in every application. These applications become personal real-time tools always available in their pocket. While other methods can achieve greatness, native applications have the opportunity to be set apart. Out of Google’s very own design principles, they suggest apps that ‘Enchant’ and ‘Delight in surprising ways’. Similarly, ‘sprinkle encouragement through the use of subtle effects’ or ‘Let me make it mine’ are nuanced but important. These small details quickly add up into the overall impression and success of your application. The best way to leave a good taste in the user’s mouth is to tackle these challenges using the hardware’s native tongue. Quality is a broad idea that will continue to be touched in the following points.
One size fits most. When was the last time you wore a one size fits all shirt to the club? Not too recent I imagine. Similarly, we find tablets trying on dresses made for phones and vice versa. Not only are aspect ratios different, but dpi vary from one device to another. These differences can drastically change how an app should look and behave. Imagine how different Facebook looks on your phone vs the browser. If you do try to make it look pretty in all sizes, you will have to make painful trade-offs which hurt the experience. Using Obj-C or Java gives you more control on the size, resolution and even orientation. Many apps behave dramatically different depending on if you are in portrait, landscape or on a tablet.
It is all about now; we expect instant noodles all the time every time. Getting the most of your hardware is important when working with limited resources. Studies have shown that users notice delays in as short as .1 seconds and after 1 second, may become distracted. Big players like Facebook, LinkedIn, and Bank of America have learned this lesson the hard way by first investing in HTML5 and later going back to native for performance reasons. When you put wheels to the road, native will always have the lead.
These specialized development environments are the ecosystems that enable developers to build native apps. Both iOS and Android have comprehensive tools for everything from design to testing giving these platforms a leg up on the competition. Xcode and Android Studio offer a powerful set of tools to utilize hardware features unavailable to many web and cross development platforms. With these tools, you can tune, analyze and trace, unlocking the highest performance and experience possible. This cuts on dev time and increases the odds of fixing the nastiest of bugs among many other things.
In 2014, 93.9% of the US smartphone market share came from Android and iOS. The companies behind Android and iOS are two of the largest organizations in the world, Google and Apple. The support these behemoths show is apparent in the communities, tools, innovations and longevity seen in these platforms. While tools or languages may change (ie. Swift), there will be a storehouse of resources and a future in focusing on native.
Imagine being unable to slice and dice your way to victory in Fruit Ninja or look on as your icons no longer wiggle in fear of deletion. It would be a crime against humanity. Those nuance interactions that make apps feel immersive and memorable often take you into no man’s land when developing for multiple platforms; a place where no one makes it through alive. Native gives you the ability to do custom without jumping off the rails.
Home sweet home. Out of the box, your app feels like it belongs. Native apps are natural extensions of the platform that smell, look and feel like the default apps. Users quickly pick up on nuanced differences like the use of a specific icon or button. Even older iOS versions look dated and sluggish in comparison to their newly minted sibling. Mobile applications that try to reproduce the look often come out worse due to the uncanny valley effect.
When using native apps, you expect certain functionality and design patterns such as multi-touch, double tap, and zoom. Even the back button location differs between devices. These are things easily accessed in native APIs while other means can get dirty.
With the advent of Apple's new watch or the ever growing Internet of Things, these native platforms are set up to use all available functionality. Other methods require the time and effort to access the new native APIs which may or may not come. Some things are impossible or difficult such as watch notifications, DRM or secure offline storage.
The only cross-development language we’re a fan of is Xamarin. Xamarin is a cross development platform that allows you to run apps at native performance using C#. There are several advantages from using Xamarin such as having shared code bases and less coding per platform. Changes can be rolled out faster if you want to update an app on multiple platforms. Developers can use Xamarin to write native iOS, Android, and Windows apps that still have native user interfaces. This is key so that you’re still speaking that “native tongue”. It is one of the only cross development platforms that we know of that uses completely native UIs.
According to Flurry, “the U.S. consumer spends 2 hours and 38 minutes per day on smartphones and tablets. 80% of that time (2 hours and 7 minutes) is spent inside apps”. That is a hefty amount of quality time each user experiences in your app. So when you take up that 120x120 px square on their home screen, it’s important to make the most of it. The king of the mobile app hill is an ongoing battle with many upsets yet to be seen, but for the ultimate user experience and at times developer experience, native apps take the throne.