Magentix

Développeur Magento indépendant depuis 2009

Billets : Les PWA sont-elles adaptées au e-commerce ?


Les PWA sont-elles adaptées au e-commerce ?

Annoncée initialement comme la technologie du futur, y a-t-il un intérêt à implémenter une Progressive Web App pour un site de vente en ligne ?

L'idée de ce billet m'est venue à la suite d'un Tweet de Willem Wigman, développeur Magento. Sur ce Tweet Willem expose les résultats Google Page Speed assez médiocres de plusieurs sites Magento en PWA :

willem wigman (@willemwigman) a tweeté à 9:45 PM on mer., juin 10, 2020

Soyons honnêtes, l'analyse et la conclusion tirée par Willem n'ont aucun intérêt. Google Page Speed ne révèle en rien la qualité d'une PWA. Le front de Magento a nativement un score tout aussi mauvais.

La réponse de Sergii Shymko (ingénieur et architecte chez Magento) est cependant plutôt intéressante :

As years pass by after the initial #PWA hype, "it's the future" sounds less and less convincing. It may become an outdated over-engineered technology that never delivered on its promise before the future comes. Headless is the future (or present), but not necessarily PWA.

- Sergii Shymko

Alors les Progressive Web App ont-elles un avenir pour le e-commerce ?

Origine

En 2015, Frances Berriman (designer) et Alex Russell (ingénieur pour Google Chrome) introduisent pour la première fois le concept de Progressive Web App.

Evidemment lorsque quelque chose vient de chez Google, cela ne passe pas inaperçu.

L'idée de base est de proposer aux internautes une application Web qui fonctionne de la même manière qu'une application native.

Mise en oeuvre

Les PWA reposent principalement sur les Services Workers, un proxy placé entre l'application et le navigateur.

Avec l'interface de cache, il est possible de naviguer sur le site sans connexion, à condition de l'avoir visité au préalable en mode connecté.

Le principe fait rêver : on décide de placer dans le cache les ressources de notre choix (js, css, contenus, images...) et celles-ci restent accessibles hors connexion.

Ainsi, je pourrai imaginer transformer très rapidement mon site en PWA. Plutôt facile, il est entièrement statique. Je place les JS et CSS, mais également les 5 derniers billets dans le cache. Vous pourriez donc naviguer sur le site très rapidement (instantanément) et lire certains articles sans connexion.

Sur iOS le cache est limité à 50mb. Ce n'est que personnel mais je pense qu'il est préférable d'éviter de saturer la mémoire des téléphones des utilisateurs. Le choix d'iOS est une bonne chose.

Je pourrai également vous proposer d'ajouter l'application à l'écran d'accueil et vous envoyer des pushs.

Une Progressive Web App n'est pas plus compliquée que ça. Un très bon exemple basique de PWA est proposé par James Johnson : Hello PWA.

Navigateurs

Entre l'annonce de Google en 2015 et 2018, il ne se passe concrètement pas grand-chose. Les bases sont posées, et bien que Chrome implémente les Services Workers dès janvier 2015, ce n'est pas le cas des concurrents.

Certains "Early Adopters" l'utilisent, mais de manière générale le coût d'implémentation n'est pas justifié par rapport au marché.

Il faudra donc attendre 2018 pour que ça bouge avec l'arrivée des Services Workers dans Edge et Safari.

C'est d'ailleurs en 2018 qu'émergent les premières applications PWA pour Magento : Deity Falcon, Vue Storefront, Front-Commerce, PWA Studio... C'est aussi la réponse à un front natif peu populaire et inutilement complexe.

Application

Placer l'intégralité d'une page en cache pour une consultation hors ligne implique les mêmes problématiques qu'avec les solutions de cache serveur : Varnish et les ESI ou un FPC avec de l'Ajax.

Comment rafraîchir les zones dynamiques d'une page si tout le contenu est en cache ? Pour cela les frameworks tels que React, Vue.js ou Angular sont parfaitement adaptées. L'idée est de créer un shell (l'emballage de l'application placée en cache) contenant tous les éléments statiques et de servir le contenu via des APIs (REST, GraphQL...).

Nous obtenons alors ce que certains appellent une application Web "moderne". Cela a également l'avantage de proposer un front complètement isolé et indépendant d'un CMS / ERP.

Si vous utilisez Firefox et que vous indiquez la commande suivante :

about:debugging#workers

Vous obtenez un apperçu des sites sur lequels vous naviguez et qui implémentent les Services Workers. J'ai pour ma part majoritairement de gros acteurs : Slack, Banggood, Invision, Pinterest, Le Monde, Spotify, Reddit...

Limites

Les PWA sont, je pense, parfaitement adaptées à un intranet, une interface d'administration, un compte client, un service (streaming, réseau social...) mais pas pour du e-commerce.

Essayez de passer en mode hors connexion une PWA e-commerce. Vous aurez au mieux un message indiquant que vous êtes déconnecté et la possibilité de parcourir les pages déjà visitées, c'est tout. Il n'y aura rien d'autre à faire qu'attendre le retour du réseau pour continuer.

You are offline, some of the functionalities are limited.
The product, category or CMS page is not available in Offline mode. Redirecting to Home.

L'énergie dépensée à la mise en place de la Progressive Web App ne vaut peut-être pas la peine pour si peu.

La question du SEO est également très souvent abordée sur les PWA à base de JS (surtout les SPA, Single Page Application), car l'impact est important. Google est conscient que de référencer une telle application lui demande une énergie considérable, et propose le prerender (prerender.io, rendertron) pour une alternative HTML. Une sorte de cloaking autorisé. On ajoute une difficulté supplémentaire sur un sujet primordial.

Une PWA est un hybride entre un site et une application, il ne faut pas que cela soit au détriement des bonnes pratiques acquises sur nos sites depuis de nombreuses années : sémantique, accessibilité et interopérabilité.

Les arguments avancés en faveur des PWA sont discutables :

Il faut également noter que de nombreuses fonctionnalités d'une application native ne sont pas disponibles sur une PWA : GPS, caméra, capteur d'empreintes... Il est fort à parier que cela ne soit jamais le cas (iOS ne supporte pas les pushs).

Les PWA sont portées principalement par Alex Russell (Chrome). Les autres navigateurs n'ont, à juste titre, aucune obligation d'implémenter les outils nécessaires à leur mise en oeuvre.

Un point important du Web c'est qu'Apple n'a aucune obligation de jouer au jeu de Google et suivre leur calendrier. Aucun navigateur ne devrait se sentir forcé de jouer le jeu de Google. Personne ne devrait avoir à jouer le jeu de Google.

- @HTeuMeuLeu

L'usage des PWA doit rester dans le cadre de projets bien spécifiques dont l'intérêt est réél. Pour un site e-commerce la Progressive Web App n'est, je pense, tout simplement pas utile. Investissez dans l'UI, l'accessibilité, le SEO, le SEA, la sécurité, mais pas dans une PWA.