Mobile devices provide both consumers and businesses with innovative ways to access information, create media and ultimately, solve problems. Unfortunately, with the proliferation of different devices on the market, your application’s potential users are fragmented across a variety of platforms and technologies.
To get your application or website across multiple platforms, there are a few development paths that can be considered: native applications, hybrid applications and mobile websites.
Below, I will review the different paths you can take, as well as the pros and cons of each.
Native Mobile App Development
Native mobile apps are developed specifically for the platform they will be hosted on and written in the language specific to the operating system: Java for Android, Swift or Objective C for iOS devices, and C# for Windows Phone. Native apps are distributed through the platform’s app store and installed directly on the user’s device.
Pros of Native Mobile App Development
Native apps allow for the best performance (speed and the ability to use the platform’s full features). These apps are written in the platform’s native language and run directly on the hardware it’s installed on; there is no added step to interpret code or need to run through a browser.
For developers, native app development provides the most flexibility when it comes to problem solving. Programming in native code allows developers to use the entire native SDK to work with. In addition, if needed, a developer can quickly dive into lower level APIs.
As an analogy of the flexibility native provides, imagine Legos. Apple or Google provides native app developer’s prebuilt cars and airplanes made of Legos. However, with native apps, the developer still has the flexibility to take apart the car and build a motorcycle if they so choose. If you’re building a hybrid app, you’re mostly working with what’s given to you i.e., the prebuilt cars and airplanes, not motorcycles.
Access to the Latest Features
Another benefit with native app development is the ability to access the latest features of an operating system update.
For example, at Apple’s 2015 Worldwide Development Conference keynote, Apple unveiled split screens on iPad for iOS 9.
A native developer would be able to begin development and testing for that feature immediately after the keynote. A hybrid developer must wait until their development framework is updated before they can begin to develop for this feature.
Cons of Native Mobile App Development
Multiple Code Bases for Creation and Maintenance
When developing a native app for multiple platforms, multiple code bases would need to be created for a single application. Moving forward, each code base will then need to be maintained.
Going back to the Lego analogy, this would be the same as needing a car, but having to build one car with Legos and another with K’nex. If the car needs to be modified with a fifth wheel, it’d need to be added to both the Legos and the K’nex version, rather than just having one car (hybrid) that you add the fifth wheel to.
App Store and Marketplace Restrictions
In addition, the only method of distribution for native apps is via the platform’s app store or marketplace and under the scrutiny of their various restrictions.
If this is a concern, a mobile website can be accessed via any mobile browser, whereas native apps must be submitted, approved, and downloaded through their specific platforms’ stores (App Store for iOS, Google Marketplace for Android).
Hybrid App Development
To help alleviate the development time and maintenance related to the multiple code bases of native apps, hybrid apps have emerged as a solution.
Hybrid app development allows for a single code base that can be published across multiple platforms. Common hybrid platforms include the open source framework, PhoneGap and mobile app development platform, Titanium Appcelerator. These platforms have risen in popularity because they were some of the earliest hybrid solutions available; however, they function in slightly different ways.
PhoneGap can take a web application and embed it into a native app that can then be submitted to the app store as a mobile application.
Pros of Hybrid Mobile App Development
Single Language and Code Base
Hybrid app development’s key benefit is the ability to develop in a single language and maintain a single code base while running the app across multiple devices.
As an example, imagine as a part of an application you draw a blue square. In a later update, this design has changed to include a red circle. On native applications, a developer would need to go in the Objective C code base to update the app’s design for iOS, into the Java code base to update the app’s design for Android, and into the C# code base to update the Windows version. In a hybrid platform, you update in one location.
Developer’s Preferred Programming Language
Cons of Hybrid Mobile App Development
Hybrid Mobile App Development Still Requires Platform-specific Code
While hybrid allows a developer to maintain a single code base, from experience, hybrid development still requires segments of code to be specific to each platform.
For example, code will be required to handle the physical back button on Android, whereas iOS has no need for this code.
Also, developers, testers, and product managers will still be required to test your product across multiple platforms; hybrid doesn’t mean “it just works” on all platforms.
Hidden Bug Potential
Another con of hybrid mobile app development is that it adds an extra layer to where bugs may exist. Frameworks themselves can have bugs. Or, for PhoneGap apps, the rendering of HTML and CSS between Android and iOS can be slightly different and cause a bug as well. The pain point is, that you have to find it.
Also, creating code specifically for one platform (e.g., see the Android and iOS back button example just above) can lead to regression errors, meaning that a fix for one platform can lead to a bug on another.
Framework Limitations/High Maintenance
Another problem area with hybrid mobile app development is that your development team may be limited by the capabilities of the framework.
If a native feature hasn’t been made available or implemented by the framework, a developer can’t access that capability without building his or her own module.
For instance, as of this writing,Titanium doesn’t provide an API to create WatchKit apps that run on the Apple Watch.
Another example of inaccessible capabilities comes from PhoneGap on iOS. Consider an app using a map. Because PhoneGap runs via a web view, it doesn’t allow access to the iOS native map framework. This leads to the app having to use Google Maps within an iOS application, which will be less responsive than the native platform’s map because it has to download map tiles over the network connection.
For the last example, take the iPad split view update on iOS 9. As soon as iOS 9 is released to the public, this feature can be released on a native app. With hybrid apps, if the feature hasn’t been implemented by the hybrid platform at that point, they cannot update their app to handle split views.
Hybrid Mobile App Development Still Requires Multiple Designs
While not a true “con”, an easy mistake to make in hybrid is to force a single design on the app, rather than considering each platform’s design specifications.
If you truly want a great user experience, an application design should take user expectations of their specific platforms into consideration (Android vs. iOS vs. Windows).
For example, iOS Human Interface Guidelines specify tabs to appear at the bottom of their device screen; whereas, Android’s Material Design guidelines expect tabs and menus at top.
Another example is navigation. iOS provides a back button on screen, while Android users would expect to use the physical back button on their device. Thus, platform-specific designs still need to be generated.
A mobile optimized website refers to a separate HTML website that has been developed specifically for mobile users, taking into account mobile-specific considerations such as screen size and touch interactions.
Another mobile website option is to create a responsive website. This means that a single website is built for both desktop and mobile, and simply “adjusts” according to the screen size.
Pros of Mobile Websites
A mobile website is accessible via any browser on any platform. This opens your product to a much wider audience. Your content is also searchable and can be SEO optimized.
No Need to Install – One Less Barrier
In addition, there is no need to download and install the app; it’s available immediately on the web.
Changes are Immediate
Changes are immediate when made to a single website; there is no review process required to update the application.
No Content Limitations
Lastly, another pro is that content is not limited to the requirements of the app store or marketplace.
For instance, Apple has strict guidelines regarding offensive or crude content, gambling, and religion and can control what gets out there. As an example, Apple temporarily pulled apps with the Confederate Flag, including Civil War games.
Cons of Mobile Websites
Limited Device Capabilities
Mobile websites run through the browser and have limited access to device capabilities.
One such feature is Bluetooth, and with it, iBeacons. For instance, the Target app uses iBeacons to provide in-store location services. These capabilities are unavailable on its website and can only be utilized when a user downloads their app.
Mobile Websites Cannot Be Submitted as Apps
Websites cannot be packaged and submitted to the App Store without additional features to distinguish itself. In fact, it’s specifically forbidden on Apple’s App Store Review Guideline (Rule 2.12). So, if you want to be featured or search-able in the app store, you have to bring something else to the table.
Reliance on Network Connectivity
Another problem with mobile or responsive websites is their reliance on network connectivity, whereas native and hybrid apps can run without a network connection.
So what’s the best solution? As with most technology questions, the answer is, it depends. The first question to ask is what problem your application is solving. Does reaching out to Android, iOS, and Windows Phone users align with your solution? Or would being on one platform be adequate, not only now, but also for the future?
If you’d like to reach out to the widest audience possible, a hybrid solution may be best. On the other hand, if you’d like to monetize your app, focusing on iOS may be a better solution, since research has shown iOS users to be more willing to pay for apps.
Now ask yourself, will your solution rely heavily on graphic or image processing, device sensors, or the ability to create media? For instance, our GifMill app that allows you to create and share GIFs, requires the ability to get videos from a users’ library in order for them to edit and share their animations. To create GIFs with the best balance between file size and quality, we dove into a lower level API for conversion (it’s native mobile app). This level of control would have required more hurdles as a hybrid app solution.
Are you looking to create an app with the most whizbang visual design and animations, or do you just need to provide content to the most people possible? If this is the case, a hybrid solution or even a responsive website, may be the answer.
While there’s no magic solution, keeping focused on the problem will help unveil the best solution for any given situation.
Related blog posts:
- Google now favors websites optimized for mobile devices. Whether you have an app or not, you need to be found in mobile searches. Five suggestions you can do to make sure your website is mobile-friendly.
- The proliferation of mobile devices and the public’s desire to make purchases and conduct other activities “on-the-go”, provides businesses with a new avenue to provide convenient services to consumers. Mobile commerce is exploding, will you be in on the boom?