Progressive Web Apps
Tags: web, pwa, app, mobile
Published: 2018-09-11 09:32:23

---
title: Progressive Web Apps
published: true
description: Progressive Web Apps (or PWAs) is a modern web capabilities that combine all the goodness of the web and the top-notch of native app features. Progressive Web Apps rely on the mobile web browser and does not require the hassle of requiring an app marketplace.
tags: web, pwa, app, mobile
cover_image: https://thepracticaldev.s3.amazonaws.com/i/9fz49f20hnhjf63923rh.png
---

Progressive Web Apps (or PWAs) is a modern web capabilities that combine all the goodness of the web and the top-notch of native app features. While native mobile apps provide the highest quality UX, they come with friction for users. One of the biggest differences between PWAs and native mobile apps is that it does not require the hassle of requiring an app marketplace (App Store, Google Play, etc.) to access, they just rely on the mobile web browser.

## Key principles

Below are listed 10 key principles a web application should observe to be considered a Progressive Web App:

1. **Progressive**: Work for every user, regardless of browser choice, has a basic level on older browsers, but fully-functional on the latest ones.
2. **Responsive**: Fit any device with a screen and a browser, mobile phones, tablets, laptops, TVs, E-book readers, etc...
3. **Connectivity independent**: It works offline or with a poor network connection.
4. **App-like**: Use the app-shell model to provide app-style navigation and interactions.
5. **Fresh**: Always up-to-date thanks to the service worker update process.
6. **Safe**: Served via HTTPS to prevent snooping and ensure content hasn’t been tampered with.
7. **Discoverable**: Are identifiable as “applications” thanks to W3C manifests and service worker registration scope allowing search engines to find them.
8. **Re-engageable**: Make re-engagement easy through features like push notifications.
9. **Installable**: Allow users to “keep” apps they find most useful on their home screen without the hassle of an app store.
10. **Linkable**: Easily shared via a URL and do not require complex installation.

## PWA vs. Native Mobile App

As showing below the superficial difference between Progressive Web Apps and Native apps has to do with the way the end user accesses them.

![pwa_vs_native_app](https://thepracticaldev.s3.amazonaws.com/i/cwq1afwl0v38ovmmupsq.png "elmahdim.com")

Progressive Web Apps were conceived as a way to sidestep, or even eliminate, a lot of the headaches associated with native app development. However native apps still more robust and can be written for any use.


## First steps toward building a PWA

### Google

This [codelab](https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/), will walk you through creating your own Progressive Web App, including the design considerations, as well as implementation details, to ensure that your app meets the above key principles of a Progressive Web App.

### MDN

[Progressive web app structure](https://developer.mozilla.org/en-US/docs/Web/Apps/Progressive/App_structure). This architecture allows a website to benefit the most from all the PWA features — it caches the app shell and manages the dynamic content in a way that greatly improves the performance.

### Tools and resources

The tools and resources listed below, will help you build and publish a standout Progressive Web App and speedup the process:

* To see PWAs in action, you can refer to [PWA.rocks](https://pwa.rocks/) for examples under several categories, this will help you visualize what your future PWA could look like.
* The fastest way to create a PWA is to use [PWABuilder](https://preview.pwabuilder.com/)
* Debug [Tools](https://developers.google.com/web/ilt/pwa/tools-for-pwa-developers) for PWA folks.
* Measuring completeness with [Lighthouse](https://developers.google.com/web/tools/lighthouse/), it is an [open-source](https://github.com/GoogleChrome/lighthouse), automated tool for improving the quality of web pages. You can run it against any web page, public or requiring authentication. It has audits for performance, accessibility, progressive web apps, and more.
* Progressive Web App [Checklist](https://developers.google.com/web/progressive-web-apps/checklist#baseline).
* [Application Shell Architecture](https://github.com/GoogleChromeLabs/application-shell), is a comprehensive Progressive Web App starting point that covers both client and server-side portions of the model and there's quite a lot going on there, it will take some time to familiarise yourself with the codebase.
* [Web Starter Kit](https://github.com/google/web-starter-kit) a workflow for multi-device websites.


The tools and resource listed above are just a few of tons out there, but they should be good enough to put you on the right track.

> Originally Posted on [Progressive Web Apps - Mahmoud Elmahdi](https://elmahdim.com/progressive-web-apps/)