Qu'est-ce qu'une PWA (Progressive Web App) ?

Mis à jour : septembre 2026

Une PWA est une app web qui utilise des service workers, un manifeste et HTTPS pour être installable, fonctionner hors ligne et recevoir des notifications push. Le terme, forgé par Alex Russell et Frances Berriman en 2015, désigne ce qui comble l’écart entre un site web et une app installée sans quitter le web : une seule base de code, une icône sur l’écran d’accueil, une fenêtre autonome et un écran qui continue de fonctionner quand le train entre dans un tunnel. L’angle que ce glossaire ajoute, et que les guides frontend passent sous silence : une PWA reste un client — le service worker met en cache, mais c’est votre backend qui fait foi.

Points clés

QuestionRéponse
Les trois piliersService worker · manifeste d’application web · HTTPS
Ce qu’elle apporteInstallable · utilisable hors ligne · compatible push — sur une seule base de code
vs. un site responsiveAjoute un service worker + un manifeste ; la mise en page seule ne fait pas une PWA
vs. le natifPortée et rapidité vs. accès au matériel et présence en store
La vérité côté backendLe cache du SW est un miroir ; l’API/BaaS fait autorité

Les trois piliers, et le backend derrière eux

// JavaScript — the PWA's three pillars + the backend behind them
// 1 · Service worker: caches the shell, buffers writes when offline
navigator.serviceWorker.register('/sw.js');

// 2 · Manifest (public/manifest.json) makes it installable:
//    { "name": "Notes", "display": "standalone", "start_url": "/", "icons": [...] }

// 3 · HTTPS is required — service workers refuse to run otherwise.

// The catch: the SW cache is a MIRROR, not the source of truth.
// saveEventually() stores the write offline and sends it when back online:
const note = new Parse.Object('Note').set('text', draft);
await note.saveEventually(); // the BaaS is authoritative; the cache was a buffer

Un service worker est un script d’arrière-plan placé entre l’app et le réseau, à la manière d’un proxy — il met le shell en cache et le sert hors ligne ; un manifeste d’application web est un fichier de métadonnées JSON (nom, icônes, display: standalone, URL de démarrage) qui rend l’app installable ; et HTTPS est obligatoire, car les service workers refusent de s’exécuter hors d’un contexte sécurisé. Ces trois éléments constituent la façade de l’app. Le save() des onglets de code montre ce qu’il y a derrière : le cache est un miroir, et lorsque le réseau revient, l’écriture se synchronise avec le backend qui fait autorité.

Comment une PWA sert une page hors ligne

Un service worker servant d'intermédiaire entre une PWA et son backendUne requête de la progressive web app passe par le service worker, qui renvoie soit une réponse en cache pour l'usage hors ligne, soit une réponse récupérée sur le réseau. Les lectures et écritures de données aboutissent à l'API du backend, qui est la source de vérité ; les écritures faites hors ligne sont mises en file d'attente dans le cache et synchronisées avec le backend au retour de la connexion. Les notifications push partent du backend et atteignent le service worker via un service push.

cache hit

cache miss / données fraîches

écritures hors ligne en file
synchronisées une fois en ligne

message push

UI de la PWA

Service worker
(proxy réseau)

Cache
miroir local

API du backend
source de vérité

Service push

Une requête de la progressive web app passe par le service worker, qui renvoie soit une réponse en cache pour l'usage hors ligne, soit une réponse récupérée sur le réseau. Les lectures et écritures de données aboutissent à l'API du backend, qui est la source de vérité ; les écritures faites hors ligne sont mises en file d'attente dans le cache et synchronisées avec le backend au retour de la connexion. Les notifications push partent du backend et atteignent le service worker via un service push.

Stratégies de cache hors ligne

StratégieSert depuisAdaptée à
Cache-firstLe cache, puis le réseauRessources statiques — shell, icônes, polices
Network-firstLe réseau, avec repli sur le cacheDonnées fraîches qui doivent être à jour
Stale-while-revalidateLe cache tout de suite, rafraîchissement en arrière-planContenu qui peut être brièvement périmé
Cache-only / network-onlyUne seule sourceEssentiels pré-mis en cache / appels jamais mis en cache

La décision se prend ressource par ressource, pas à l’échelle de l’app : le shell veut du cache-first pour un chargement instantané ; les données vivantes de l’utilisateur veulent du network-first pour la fraîcheur ; un fil d’actualité peut se contenter de stale-while-revalidate pour paraître instantané et se corriger tout seul. Quelle que soit la stratégie, le cache est un tampon de lecture/écriture au-dessus de l’API — les écritures hors ligne sont mises en file d’attente localement et réconciliées à la reconnexion, la même discipline de rattrapage que tout client offline-first exige.

D’où viennent réellement les notifications push

Le mécanisme que presque aucun glossaire n’explique, et la raison pour laquelle une PWA a besoin d’un backend ne serait-ce que pour notifier. Le client ne fait que s’abonner : il demande la permission et reçoit un endpoint d’abonnement. L’envoi est un travail de serveur — votre backend → le service push du navigateur → l’événement push du service worker → une notification affichée. Le service worker peut se réveiller pour l’afficher alors que l’app est fermée, mais rien n’arrive si un backend ne l’a pas envoyée : « les PWA ont le push » n’est donc qu’une moitié de feature sans la moitié serveur. L’article sur les notifications push détaille la chaîne de livraison ; ce qui compte ici, c’est que le web push comme le push natif aboutissent à votre code qui décide d’envoyer.

PWA vs. app native

PWANative
Base de codeUne seule, sur le webUne par plateforme (ou multiplateforme)
DistributionUne URL — aucun store requisStores d’applications, avec revue
Mises à jourInstantanées, côté serveurCycle de publication du store
DécouvrabilitéIndexée par les moteurs de rechercheRecherche du store uniquement
Accès au matérielLimité (variable selon l’OS)Complet
Fiabilité du pushBonne sur Android, conditionnée sur iOSFiable via APNs/FCM
Réalité sur iOSInstallation manuelle via le menu Partager, push depuis 16.4Application à part entière

L’asymétrie honnête se trouve dans la dernière ligne : iOS est le point faible des PWA — installation uniquement via le menu Partager, pas d’invite d’installation automatique, push seulement une fois l’app installée et seulement sur les versions récentes, synchronisation en arrière-plan incomplète. Sur Android et desktop, l’écart avec le natif est faible ; sur iOS, c’est le facteur décisif pour de nombreux produits.

Cas d’usage courants

  • Contenu et e-commerce — portée, SEO et faible friction d’installation l’emportent sur un téléchargement en store pour atteindre de nouveaux utilisateurs.
  • Outils internes — des apps installables et tolérantes au hors ligne pour des utilisateurs connus, sans distribution par un store.
  • Apps de terrain offline-first — capturer des données sans réseau, synchroniser au retour du signal ; le schéma du cache comme tampon.
  • Portée multiplateforme à petit budget — une seule base de code web pour couvrir des plateformes qu’un développement natif multiplierait par trois.
  • En complément d’une app native — le même backend sert une PWA pour la portée et une app native pour la profondeur.

Devriez-vous construire une PWA ? Matrice de décision

SituationTendance
Portée, SEO, faible friction, une seule base de codePWA
Audience principalement Android/desktopPWA — l’écart avec le natif est faible
iOS critique avec forte dépendance au pushNatif, ou acceptez les réserves d’iOS
Graphismes lourds, AR, matériel en profondeurNatif
Capture de données offline-firstPWA avec un backend de synchronisation
Besoin d’une présence en storeNatif (ou PWA en store là où c’est accepté)

Limites et trade-offs

  • iOS plafonne l’ensemble. Installation manuelle via le menu Partager, push conditionné et lacunes de la synchronisation en arrière-plan font d’iOS la contrainte qui tranche le plus souvent entre PWA et natif.
  • L’accès au matériel est partiel. Bluetooth, NFC, contacts et API avancées de caméra sont limités ou absents selon l’OS — les apps très liées à l’appareil réclament toujours du natif.
  • Le cache n’est pas la base de données. Traiter le cache du service worker comme la source de vérité ouvre la porte aux écritures perdues et aux conflits de données périmées ; c’est un tampon au-dessus du backend qui fait autorité.
  • Le push est moitié client, moitié serveur. S’abonner est facile ; une PWA a toujours besoin d’un backend pour envoyer, si bien que « hors ligne et push » est une feature backend qui porte un badge frontend.
  • La découvrabilité est à double tranchant. Pas de gardien de store, mais pas de vitrine de store non plus ; vous échangez la curation et le cérémonial d’installation contre une URL.

Les PWA sur Back4app

Back4app est une plateforme open-source de Backend as a Service (BaaS) qui combine une base de données gérée, des API REST et GraphQL générées automatiquement, l’authentification, le stockage de fichiers et des fonctions serverless avec Cloud Code. C’est la moitié backend de la feature que les piliers frontend ne font que compléter : le service worker met le shell en cache, mais Back4app est la source de vérité dont ce cache est le miroir — utilisateurs authentifiés, données synchronisées qui réconcilient les écritures hors ligne à la reconnexion, et le serveur qui envoie réellement le web push auquel une PWA ne peut que s’abonner. Comme un seul backend sert aussi bien une PWA qu’une app web classique ou une app native grâce à des SDK par plateforme, la portée multiplateforme que la PWA promet côté frontend trouve son pendant côté backend, écrit une seule fois — le client met en cache, la plateforme se souvient, et les deux moitiés de « installable, hors ligne et push » se rejoignent enfin.

Questions fréquentes

Qu'est-ce qu'une PWA ?

Une application construite avec les technologies web standard qui exploite les capacités modernes du navigateur pour se comporter comme une app installée — icône sur l'écran d'accueil, fenêtre autonome, fonctionnement hors ligne et notifications push — le tout depuis une seule base de code distribuée par le web. Le terme a été forgé par Alex Russell et Frances Berriman en 2015.

Qu'est-ce qui fait d'une app une PWA ?

Trois éléments qui travaillent ensemble : un service worker (un script d'arrière-plan qui met les ressources en cache et rend possibles l'usage hors ligne et le push), un manifeste d'application web (des métadonnées JSON qui la rendent installable) et HTTPS (les service workers refusent de s'exécuter hors d'un contexte sécurisé). Le critère pratique : installable et fiable, quel que soit l'état du réseau.

Qu'est-ce qu'un service worker ?

Un fichier JavaScript qui s'exécute en arrière-plan, sur son propre thread, et joue le rôle de proxy entre l'app et le réseau. Il intercepte les requêtes et y répond depuis le cache ou depuis le réseau — c'est ce qui permet l'usage hors ligne, la synchronisation en arrière-plan et la réception de messages push lorsque l'app est fermée.

PWA ou app native : laquelle choisir ?

Une PWA est plus rapide et moins chère à construire, tient en une seule base de code, se met à jour instantanément, se passe de store et reste indexable par les moteurs de recherche. Une app native offre un accès complet au matériel, l'UX la plus fluide, un push plus fiable et une présence en store. Choisissez le natif pour les graphismes lourds ou une intégration profonde avec l'appareil ; la PWA pour la portée et la rapidité de mise sur le marché.

Quelle différence entre une PWA et un site responsive ?

Un site responsive se contente d'adapter sa mise en page à la taille de l'écran et a besoin d'une connexion. Une PWA y ajoute l'installation, le cache hors ligne et les notifications push. Toute PWA est responsive, mais un site responsive ne devient une PWA qu'en ajoutant un service worker et un manifeste.

Une PWA peut-elle envoyer des notifications push ?

Elle peut recevoir du web push via les API Push et Notification, mais le client ne fait que s'abonner — c'est un backend qui envoie réellement. Le support iOS est arrivé avec la version 16.4, et uniquement lorsque la PWA est installée sur l'écran d'accueil : le web push touche donc un public plus restreint que le push natif.

Une PWA fonctionne-t-elle hors ligne ?

Oui — le service worker met en cache les ressources et les données, puis les sert quand le réseau disparaît. Les stratégies courantes sont cache-first pour les ressources statiques, network-first pour les données fraîches et stale-while-revalidate pour un affichage immédiat avec rafraîchissement en arrière-plan. Les écritures faites hors ligne sont mises en file d'attente et synchronisées au retour de la connexion.

Peut-on publier une PWA dans un store ?

En partie. Le store Android accepte les PWA empaquetées en trusted web activities, et certains stores desktop les traitent comme des applications à part entière. L'App Store d'Apple, dans les faits, non — les PWA qui ne sont que des sites réempaquetés sont régulièrement rejetées — ce qui explique en partie pourquoi iOS reste la plateforme la plus difficile pour les PWA.

Termes associés

À comparer avec

Lectures recommandées

Prêt à construire votre backend ?

Lancez votre projet sur Back4app en quelques minutes — base de données, authentification, API et Cloud Code inclus. Sans carte bancaire.

Écrit et révisé par Back4app Engineering, Back4app Engineering · Publié le 2026-09-16