It was more than 10 years ago that the iPhone was first revealed. I’ll never forget learning about the ability to create apps for the iPhone while watching the 2007 WWDC Keynote. Steve Jobs talked at length about how developers would be able to contribute to the iPhone ecosphere with apps they created. Never once, however, was it mentioned that apps were to exist natively on the iPhone. Instead, Steve Jobs talked about how apps could be created for Safari (the mobile web browser bundled with the iPhone). Since then, native apps have taken over the mobile ecosystem. Web Apps never really took off like they were intended. Now, we are starting to see a decline in developers cranking out native apps. Instead developers are looking for alternative solutions to building great mobile experiences. Native apps are slowly being replaced by another type of web app, the Progressive Web App (PWA). What is a Progressive Web App you ask? Keep reading, as the intention of this article is to get you up to speed on the latest technology developers are looking at to create mobile apps.
A Look At The History of Mobile App Development
Clearly, Jobs had thought a lot about web apps being the direction. Just based on the fact that there were clear purposeful integrations with the native apps that came bundled with iPhone. Also based on the fact that Apple had created so much documentation around building web apps for Safari. Clearly, Apple was hedging their bets on web apps.
Why did Apple move to native apps?
It wasn’t until about a year later that we saw our first opportunity to start creating native apps for iPhone. Apple’s move to allowing developers to build native apps was fueled primarily by a community of hackers who were determined to build native apps. They created a process called “Jailbreaking” in which would allow you to gain root access to the phone. This root access would allow you to side load applications onto your jailbroken iPhone.
This push was also fueled by Apple’s competition with Android, who were already allowing developers to create apps for their ecosphere.
Apple clearly saw an opportunity and took it!
Native Apps vs. Today’s Web Apps
From a user experience point of view, it is clear that Native Apps just work better. I don’t think many people would disagree.
I think one of the primary reason for this is because native apps have more access to device resources. As developers, we know that when building native apps, our apps have the ability to tap into additional resources when needed. Web apps, however, are limited to the amount of resources allocated to the mobile browser the user is using.
Another reason why native apps are so much cooler is that they can access sensors not available to web apps. Like the accelerometer, compass, and microphone.
And don’t forget about multitouch!
And forget about being able to use a web app when there is no internet!
But the biggest difference is that web apps do not have the same ease of experience as native apps offer. Even know we try to hide the fact that they are web apps, when users interact with them, they still feel like web apps. Overall the experience with a web app is just not what it is with a native app.
The Frustrations of Developing Native Apps
We all know that the better user experience is with building Native application. But us developers know that there are some major frustrations that come along with building out the native application.
- Native apps require you to build the same application multiple times. You have to learn multiple
- Native app updates take forever to get approved. If you are working on a security update, your app could remain vulnerable as you wait up to a week for your update to be approved.
- You’re dependent on app store search algorithms for your marketing.
- App stores take your money.
What is a Progressive Web App (PWA)?
Basically, progressive web apps are a better version of web apps. Hence, the word “Progressive!”
As an internet, we have determined that in order to use web apps effectively we have to solve all of the problems that we encounter with traditional web apps of yesterday. In order for a web app to be labeled a progressive web app, it has to meet all of the following requirements:
- Progressive – The web app has to work on every device, regardless of the browser.
- Responsive – The web app has to fit on any device regardless of form factor (ie Desktop, Phone, Tablet).
- Connectivity independent – The web app has to work regardless of an internet connection.
- App-like – The user experience has to be immersive. Not page to page.
- Fresh – The web app has to always be up to date with the latest code.
- Safe – The web app must be served via HTTPS.
- Discoverable – The web app should be able to be found.
- Re-engageable – The web app can support user experiences that invite the user back into the web app.
- Installable – The web app has to be able to be installed as an icon on your device.
- Linkable – The web app should be accessible via a URL.
Initially, these features seem like they would be impossible to add to your existing web apps. However, most of these are not your responsibility! This list was created in collaboration with developers from across the web. The goal of a feature list like this is to fill in the gaps where traditional web apps fail. For the most part, each of these features have already been created for you. All you have to do is incorporate them into your existing web app.