files/en-us/web/progressive_web_apps/index.md
A progressive web app (PWA) is an app that's built using web platform technologies, but that provides a user experience like that of a platform-specific app.
Like a website, a PWA can run on multiple platforms and devices from a single codebase. Like a platform-specific app, it can be installed on the device, can operate while offline and in the background, and can integrate with the device and with other installed apps.
The PWA guides provide conceptual explanations of different aspects of PWAs. They're intended to help you understand what kinds of things are possible with PWAs, and to provide enough pointers to help you understand how to achieve them.
The PWA how-tos provide detailed instructions on implementing specific PWA features.
Build a PWA from scratch using these PWA Tutorials, which walk through the steps from start to finish, explaining how the different features of the app are implemented along the way.
Our PWA reference lists all features documented on MDN that you'll need to build a PWA.
The following APIs can be used by a service worker to communicate with its associated client PWA:
Client.postMessage()
The following APIs can be used by a service worker to make your app work offline:
Cache
Clients
FetchEvent
The following APIs can be used by a service worker to perform tasks in the background, even when your app is not running: