There are 6.8 billion people on the planet, 5.1 billion of whom own a cell phone. And today, an ever-growing percentage of these devices are smartphones. According to a recent Pew Research Center Study, the number of users accessing the Internet on their smartphones has more than doubled in the past 5 years, as has the number of users downloading and using mobile apps. Of those who use the Internet or email on their phones, more than a third go online primarily through their handheld devices.
Indeed, mobile computing is becoming increasingly ubiquitous… and it’s awesome.
With the exploding popularity of smartphones and tablets, mobile application development is becoming an increasingly popular medium of software creation. In fact, mobile app revenues are projected to hit nearly $600 billion in 2020. This prolific and growing industry is attracting businesses from every corner of the marketplace looking for returns.
The creation of mobile applications draws much of its roots from traditional software development. The end result, however, is software intended to utilize the unique features and hardware of mobile devices. Modern smartphones are equipped with Bluetooth, NFC, gyroscopic sensors, GPS, cameras and so much more. They can be used for virtual or augmented reality, barcode scanning and more. Mobile apps should utilize the full range of smartphone features, which is easier said than done.
With desktop PC software development, programmers must create an application that can operate on a minimum set of hardware. The same goes for mobile applications, though the hardware variances in this instance are much more minimal. At the same time, the hardware in smartphones and tablets doesn’t quite match that in laptops and desktop computers, which means mobile apps must be designed to show optimal performance.
For example, a gaming app would be limited in its graphical elements because of the less-powerful graphics processors in mobile devices. With that said, cloud computing is making it easier than ever to accomplish mobile gaming. Popular games such as Fortnite, Hearthstone, and PUBG connect players across computers, phones and even consoles.
Except, of course, when it’s not.
As a mobile device user, few things are as frustrating and difficult to fat-finger-navigate as a poorly designed mobile web app, or even a native app.
And as a mobile app developer, few things can be as intensely irritating as striving to support as wide a range of mobile clients as possible, each of which has its own frustrating set of idiosyncrasies. Whether you choose to develop a mobile web, native, or hybrid app, the quest to support multiple mobile browsers, more exotic devices, and coming to grips with various platforms can be quite a gut wrenching experience indeed.
Of course, not every developer today needs to worry about supporting mobile clients. But the increasingly omnipresent nature of mobile devices and applications strongly suggests that those who don’t need to support mobile clients today will more than likely need to do so in the not-too-distant future. So if you’re not already thinking about mobile app development, you probably should be.
Mobile Web App vs. Native App vs. Hybrid App
As is true with most technology selections, there’s no one-size-fits-all answer when it comes to the type of mobile app to develop. There are numerous web app best practices to consider, not all of which are technical. Who is your target audience? Are they more likely to prefer a mobile web or a native app? What’s the difference between native and hybrid apps? What development resources do you have and which mobile technologies are they most familiar with? What is the licensing and sales model that you’re envisioning for your product?
Generally speaking (although there are always exceptions), the mobile web app route is faster and cheaper than the native mobile app route, especially when the objective is to support a wide range of devices. Conversely, there may be capabilities native to the mobile device (such as the movement sensor and so on) that are essential to your app, but which are only accessible via a native app (which would therefore make the mobile web app choice a non-starter for you).
And beyond the old web apps vs. native apps question, a hybrid mobile app may be the right answer for you, depending on your requirements and resource constraints. Hybrid apps, like native apps, run on the device itself (as opposed to inside a browser), but are written with web technologies (HTML5, CSS and JavaScript) and typically underpinned by a hybrid app framework. More specifically, hybrid apps run inside a native container, and leverage the device’s browser engine (but not the browser) to render the HTML and process the JavaScript locally. A web-to-native abstraction layer enables access to device capabilities that are not accessible in mobile web applications, such as the accelerometer, camera, and local storage.
But whatever choice you make – whether it be a mobile web app, a native or hybrid app – be careful to adequately research and confirm your assumptions. As an example, for the purposes of this mobile web app development tutorial, you may have decided to develop a native mobile app for e-commerce to sell your products. But, according to Hubspot, 73% of smartphone users say they use the mobile web more than native apps to do their shopping… So, in this case, you may have bet on the wrong horse.
And then, of course, there are the practical considerations of time and budget. As one of my favorite sayings goes, “faster, better, cheaper… pick any two”. While time-to-market and cost constraints are of paramount importance in web application development, it’s crucial not to compromise too heavily on quality in the process. It’s quite difficult to recover the confidence of a user who has had a bad first experience.
Indeed, mobile web, native, and hybrid apps are all radically different beasts, each with their own unique set of benefits and challenges. This mobile web development tutorial specifically focuses on methodologies and tools to employ, and pitfalls to avoid, in the development of highly functional, intuitive, and easy-to-use mobile web applications.
Learn more