The increased prevalence of mobile devices poses an interesting dilemma for app designers and developers: How do you create a single app that works effectively across myriad different form factors?
In past years, mobile devices had only a few standard screen sizes. Today, there are many, many different standards, both for size and resolution. This is without even considering the varying capabilities of processors, memory and storage. Making apps work across this cornucopia of hardware poses questions about everything from UI to base functionality.
So, is it possible to create a truly universal app? Or will designers and developers constantly be creating multiple versions of a single piece of software?
Solving the UI Challenge
On the web, it’s relatively easy to deliver an excellent user interface across different devices. Responsive or adaptive web design – RWD/AWD, for short – allows for a single layout to be altered in a fluid way when the screen gets bigger or smaller (responsive) or based on pre-set resolutions (adaptive). Either way, the same code behind the UI is loaded, then alters the way it’s rendered within the browser. Both approaches have seen wide adoption, especially since Google is rewarding sites that render well on mobile devices, and punishing those that don’t.
Of course, RWD/AWD is only for interfaces built using HTML, CSS and other web technologies. They won’t usually work for apps built in Objective-C or Swift for iOS, or Java for Android. RWD/AWD is best applied when developing mobile-optimized web sites or hybrid mobile apps where HTML is used. Other tactics must be deployed when a single codebase is to be used for an app on multiple devices.
More Than Just Different Screen Sizes
An app running on an iPhone will generally have access to fewer hardware resources than one running on a full PC. Thus, it will probably make sense to have more capabilities available to the PC users. Conversely, mobile phones have useful capabilities (like GPS and gyroscopes) that aren’t available on PCs. Delivering different feature sets means not just altering the UI, but changing, adding and removing underlying code.
Consider Microsoft Word as found on the PC vs. the version running on mobile phones. They are fundamentally different applications. While Microsoft is producing Universal Windows Platform versions of Office products (including Word), it is telling that the corporation is also offering a new version of Office 2016. This is an admission that you simply cannot put the full functionality that exists within Office products into an app that can run across all devices, even though it’s possible within a universal app to have functional capabilities that come and go depending in the device.
When Multiple Apps Might Make Sense
A universal app is very much dependent on the application itself as to whether it is applicable to all devices. Just because the technology exists to enable an app to run across multiple devices does not mean the app is suitable for all scenarios, or that all scenarios will benefit from it. There are many very well-crafted phone apps that are simply not suitable for desktop use, and vice versa.
In this case, do the benefits of building universality into a single codebase outweigh potential added complexity? If a large-screen version of the app requires significantly more code than a smartphone version, is it a good idea to install the entire app onto a smaller device with lesser hardware capabilities? These questions need to be answered on a case-by-case basis.
When Fewer Versions Might Make Sense
In contrast, there is a pressing need to minimize the amount of code written and maintained by development teams. The problem is especially pointed when it comes to mobile, given the breadth of device types and platforms. It’s not a new problem either, as development for mobile devices has long required multiple codebases – going back to before the smartphone. In an ideal world, all are tested, maintained and evolved equally … but we don’t live in an ideal world. As the number of apps an organization develops grows, this becomes a costly problem.
As a result, in many cases, it’s critical that different versions of an app – desktop, mobile, client-server, etc. – run off of a common codebase. This can be accomplished using a paradigm like the aforementioned Universal Windows Platform, or (more holistically) by using a modern, model-driven tool like Uniface. This type of commonality reduces pressure on the development team, dramatically simplifies deployment and all but eliminates the problem of maintenance and evolution silos. A change made to one version of the app is applied to all, so long as it fits within pre-defined hardware and functionality boxes.
In many cases, app universality is a good idea. Developing, deploying and maintaining a single codebase – as opposed to a different set of code for each app instance – can increase productivity, application longevity and organizational agility. But there are cautions to be had. While tools for such a development tack have existed for decades, the concept is only now coming into vogue. And there are certainly times when discrete versions of an application make sense.
For now, it’s up to developers and companies to decide whether a universal app makes sense in a particular use case, and to pick the right tools to make it happen.