To build a mobile app, the first thing to decide used to be which platform to target first. But now, with the right tools, apps can be developed once to run on every platform.
Everyone has heard that promise before. Cross-platform mobile app development tools have been around for a while, but historically, they haven't lived up to expectations. The vision promised that instead of hiring separate developers to build different apps for different platforms, one developer or team could write code that would become an app for multiple mobile platforms.
But the reality was much messier. Developers faced compatibility problems, security issues, and bugs that made a cross-platform mobile app development approach just as hard as building multiple native platform-specific versions. And worse, the finished applications rarely measured up to the quality that could be achieved with native development.
But recently, new advances have made cross-platform mobile app development worth another look. The latest generation of tools may finally be able to deliver on the promises that have been made for so many years.
The Rise and Fall of HTML5
At one point not so long ago, HTML5 was supposed to make the question of native vs. cross-platform mobile app development irrelevant. Taking a mobile web app developed with HTML5 and wrapping it in a simple native app created "hybrid" mobile apps. This would be the best-of-all-worlds solution: The widely available skill sets possessed by web developers would be leveraged to build mobile apps that could target all platforms.
For a time, Facebook was a poster child for hybrid mobile apps, using HTML5 to create versions of its application across all platforms. But that changed in late 2012, when Facebook publicly threw in the towel on the hybrid app approach. It declared in a blog post that its "iOS app was falling short" and that the new iOS version had been rewritten entirely as a native application.
The bottom fell out, and interest waned in hybrid apps as developers realized HTML5 couldn’t provide the performance or access to platform-unique features that native apps do.
The Fall and Rise of Cross-Platform Tools
In the past, using a cross-platform framework instead of building native apps was a clear decision to compromise and to settle for "not quite" what could be achieved with a native app. But with the latest generation of tools, the compromises are minimal to nonexistent. Previously, the distinct UIs of iOS and Android presented challenges. But now, tools can tailor the UI of apps to each platform, ensuring, for example, that an Android app follows Google's "material design" aesthetic.
Similar concerns around performance have also been addressed by the evolution of Xamarin's approach of actually generating code that's functionally identical to that of a natively developed application. The framework of Xamarin, a partner company of ours, can be used to build apps and deploy them to many devices. Other tools, such as iFactr and Appcelerator, equip companies to build prototypes and production applications quickly and intuitively while offering a variety of functionalities that help developers create mobile apps tailored to users' needs.
These tools can provide many more advantages, including:
- A common language. The concerns about and limitations of HTML5 virtually disappear when you can build native apps with superior performance by using a common language that many developers already know and understand. Because these apps are developed with standard native user interface controls, apps look and behave the way users expect them to. These apps are also compiled for native performance and leverage platform-specific hardware acceleration, enabling capabilities such as iBeacon and Android Fragments. Xamarin, for example, utilizes C#, the primary language used for development on the Microsoft platform. This allows for rapid development and iteration and supports newer patterns in C# to help create cleaner, more readable, and more reliable code.
- A single team. While one cross-platform team can build apps for three mobile operating systems at once, purely native mobile apps would need three different teams. This means that cross-platform apps can be launched more quickly than native apps. After all, with cross-platform apps, when one is ready, they're all ready.
- Low maintenance costs. Once cross-platform apps go live, the maintenance costs are low because you only need one team with a common knowledge set to maintain them. Additionally, cross-platform development tools offer support for web/backend technology that you might not get with native app developers who may only specialize in a single OS.
Do You Really Need to Be Cross-Platform?
Keep in mind that cross-platform solutions aren't necessary in some situations. Graphic-intensive apps, apps that need maximum performance or have highly detailed user interfaces or user experiences, and apps that will only target single platforms don't require cross-platform solutions. Native apps are still the go-to choice in these instances.
When choosing a cross-platform mobile app development approach, start UX and UI design in the early stages of the project to weigh any potential tradeoffs and incorporate them into the timeline. Know which platforms you'll target and at what stages in your development cycle you want to bring on different mobile operating systems. Many companies choose to test the iOS market and then launch on Android, but they may also choose to launch on both or add Windows Mobile.
If such a staged approach is in your plan, a cross-platform toolset may not be needed. But if you want to launch on all platforms simultaneously, that may drive you toward a development process leveraging a cross-platform toolset.
Like everything, the choice of whether to develop native or leverage a cross-platform toolset is a question of costs and benefits, and there’s no one-size-fits-all answer. The latest generation of toolsets means developers have a truly viable option to build once without significantly compromising HTML5 hybrid apps.
Before choosing your path, research the different tools available to make sure you select the best approach for your application — and remember that what might be the right choice today could be obsolete with the next technology iteration tomorrow.