#01 - Introducing Progressive Web Apps
Tags: pwa, pwabuilder, webdev, beginners
Published: 2022-02-15 02:34:07

---
title: #01 - Introducing Progressive Web Apps
published: true
description: Join @azureadvocates @windowsdev and @msedgedev for Week1-Day1 of #30DaysOfPWA! https://aka.ms/learn-pwa/30days-blog
tags: pwa, pwabuilder, webdev, beginners
canonical_url: https://microsoft.github.io/win-student-devs/#/30DaysOfPWA/core-concepts/01
series: Learn Progressive Web Apps with 30DaysOfPWA
cover_image: https://microsoft.github.io/win-student-devs/30DaysOfPWA/core-concepts/_media/day-01.jpg
---

Welcome to Day 1 of #30DaysOfPWA! New to the series? Three things you can do to catch up:

 * Read the kickoff post below for context.
 * Watch the [GitHub Repository](https://github.com/microsoft/win-student-devs) for updates.
 * Bookmark [#30DaysOfPWA Blog](https://aka.ms/learn-pwa/30Days-blog) for resources.

{% link https://dev.to/azure/welcome-to-30daysofpwa-2e54 %}

This is a shortened version of [this canonical post](https://microsoft.github.io/win-student-devs/#/30DaysOfPWA/core-concepts/01) from the #30DaysOfPWA blog. 

---

## What We'll Cover Today

This introduction to Progressive Web Apps should help answer the following questions:
 * What is a Progressive Web App (PWA)?
 * How does it compare to web and native apps?
 * What are the benefits of PWA?
 * What characterizes a _good_ PWA?

We'll end each day with an exercise that you can do on your own, to help solidify what you learned. Ready? Let's go!

---

## What is a Progressive Web App?

A [Progressive Web App (PWA)](https://aka.ms/learn-PWA/30Days-1.1/docs.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium) is a traditional web app that is progressively enhanced, using open web technologies, to help it deliver the best possible experience on every device (based on its available capabilities).

Users on modern platforms (browsers, devices) see _enhanced_ experiences that can feel platform-native - while users on older platforms still see a _usable_ experience with the PWA falling back to familiar website behaviors. 

In summary: PWA combine the broader _reach_ of websites with the richer _capabilities_ of native apps - scaling user experiences up or down to optimize for the capabilities of the current device.

How does it do that? Let's talk about: _Progressive Enhancement!_

---

## What is Progressive Enhancement?

[Progressive enhancement](https://aka.ms/learn-PWA/30Days-1.1/alistapart.com/article/understandingprogressiveenhancement) is a design philosophy that puts emphasis on content-first experiences.

 * Developers prioritize a _baseline_ experience where users can consume core content from any device, even those with older browsers.
 * Developers then _detect_ support for newer features on devices to unlock _enhanced_ experiences on these more-capable platforms.

Take a look at the figure below for context.

![Illustrated sketchnote that explains progressive enhancement](https://microsoft.github.io/win-student-devs/30DaysOfPWA/core-concepts/_media/progressive.png)

When we think of apps today, we think of installed  “native” apps (blue) or browser-based “web” apps ( yellow). Browsers themselves are native apps on the relevant device.

 * Native apps work only on their target device platforms, requiring a dedicated codebase (and team) for each target, but unlocking richer hardware-enabled features.

 * Web apps work everywhere with a single codebase (and team) - but are limited in their ability to use platform-specific features to ensure consistent experiences across platforms.

Progressive Web Apps use _open web technologies_ (e.g., Service Workers, HTTPS, Web App Manifest, Push Notifications, Web APIs) with feature-detection (to establish on-device support) to deliver experiences that scale from functional website (default) to richer native-like experiences.

 * Start with usable website (default)
 * Make it responsive (mobile + desktop)
 * Make it secure (HTTPS endpoint)
 * Make it installable (web app manifest)
 * Make it work offline (service workers)
 * Make it re-engageable (push notifications)
 * Make it richer (new web capabilities)

---

## What characterizes a "good" PWA?

Progressive Web Apps are based on a philosophy for design ("progressive enhancement") and not on prescriptive rules ("how to implement"). When we think of developing PWA, we focus on these [desirable characteristics](https://aka.ms/learn-PWA/30Days-1.1/docs.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium/#characteristics-of-a-progressive-web-app-pwa):

| Characteristic | Why Is This Desirable? |
|:---|:---|
| Discoverability | I can find PWAs in app stores, or via web search. |
| Installability | I can add PWAs to my device home screen, and launch them - like any native app. |
| Re-Engageability | I can get push notification alerts (even if PWA is not actively in use) - like any native app . |
| Network Independence | I can get a usable PWA experience - like any native app. |
| Progressive Enhancement | My PWA experience scales up (like native) or down (like website) based on device capabilities. |
| Secure | My PWA uses secure network communications with privacy safeguards in place. |
| Responsive | My PWA adapts to suit device screen size, orientation and input modality. |
| Linkability | I can link to, share, bookmark, and visit, the PWA URL - like any website. |

---

## Other Topics

This is a shortened version of [the original post](https://microsoft.github.io/win-student-devs/#/30DaysOfPWA/core-concepts/01) for Day 1 of #30DaysOfPWA. Visit that post to read additional sections:
 
* How does PWA compare to web and native experiences? (examples)
* What drives real-world PWA adoption? (success stories, relevant metrics)


---

## Exercise:  Install your first PWA

One of the best ways to understand PWA experiences and benefits is to take one for a spin! Try this out:

 1. Choose a [sample PWA](https://aka.ms/learn-PWA/30Days-1.1/docs.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium/demo-pwas). Visit the deployed app and explore the experience. Bookmark the repository to revisit source later.
 2. Install it [from browser](https://aka.ms/learn-PWA/30Days-1.1/docs.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium/ux#installing-a-pwa)  on desktop and mobile devices and make sure the app launches on both.

Questions to think about - how does the experience differ between:
 * desktop and mobile? 
 * in-browser and installed versions?
 * installed version and other "native" apps?

We'll use the installed app and source code from this sample PWA to explore various concepts in more depth, next.

---

## About the Author

The #30DaysOfPWA series is a multi-author collaboration. We'll introduce each author in their first published post in the series.

Today's featured author is: me! 👋🏽 

I am curating the series on dev.to, and authored Week 1 posts focused on Core Concepts. I'm on the JavaScript Advocacy team in Microsoft Developer Relations. I'm also an avid visual storyteller - explore my illustrated guides at [@sketchthedocs](https://twitter.com/sketchthedocs) and look out for PWA visuals and analogies in upcoming posts.

{% user nitya %}

---

Want to read more content from Microsoft technologists? Don't forget to follow Azure right here on dev.to:

{% org azure %}