On sentait le vent tourner. Les extensions historiques de Safari vont devenir obsolètes. Apple demande aux développeurs d’adopter à la place les Safari App Extensions introduites avec OS X El Capitan.
L’une des différences majeures entre les extensions historiques et les nouvelles est leur mode de distribution : les premières sont indépendantes et distribuées dans la galerie des extensions Safari ou bien directement par les développeurs, tandis que les secondes sont liées à une application qui est distribuée dans le Mac App Store.
Les développeurs ne pourront plus soumettre de nouvelles extensions ni de mises à jour dans la galerie des extensions Safari à partir de décembre prochain.
Dans macOS Mojave, Safari prend encore en charge les extensions historiques issues de la galerie. Par contre, les extensions historiques qui sont distribuées directement par les développeurs sur leurs sites web deviennent incompatibles. Impossible d’en installer de nouvelles, et si vous en aviez déjà, un message au premier lancement de Safari vous avertit qu’elles ont été désactivées.
Par exemple, si vous voulez continuer d’utiliser le bloqueur uBlock Origin sur macOS Mojave, il faudra l’installer depuis la galerie d’extension, car l’installation depuis la page GitHub du projet ne fonctionne plus.
Si les extensions issues de la galerie ont un peu de répit, elles sont elles aussi vouées à disparaître à terme. Apple indique dans les notes de version de macOS Mojave qu’elles ne seront plus prises en charge dans une prochaine version de macOS (vraisemblablement macOS 10.15).
Leurs remplaçantes, les Safari App Extensions, ont plusieurs avantages. En étant liées aux apps, leur installation est facilitée, leur compatibilité assurée et la communication avec l’app sécurisée. Ce n’est plus la peine de télécharger l’app dans le Mac App Store puis son extension dans la galerie, tout se fait ensemble. Les Safari App Extensions peuvent aussi exploiter les capacités des applications.
Mais en les imposant, Apple ajoute une grande barrière à l’entrée de Safari. Les extensions indépendantes vont devoir être englobées dans des applications Mac, quand bien même cela n’a aucun intérêt. Par exemple, Auto Refresh, qui sert uniquement à rafraîchir automatiquement une page dans Safari, devra être liée à une app Mac et distribuée dans le Mac App Store pour continuer d’opérer.
Sous le capot, les deux types d’extensions sont également différents. Les extensions historiques sont créées avec des technologies web exclusivement (HTML, CSS et JavaScript), tandis que les nouvelles font appel à des langages natifs en plus (Objective-C ou Swift).
Safari prend donc une voie diamétralement opposée aux autres principaux navigateurs qui se sont tous réunis autour des WebExtensions (une extension développée pour Chrome fonctionnera aussi sur Firefox et Microsoft Edge).
AdGuard, un bloqueur de pubs, critique cette décision d’Apple :
Nous devons maintenant développer une application Mac complète qui contient l’extension Safari. Le problème est que nous avons une énorme base de code partagée entre Chrome/Firefox/Edge/Opera et Safari. Nous sommes maintenant obligés d’écrire la même chose en partant de zéro et en utilisant un langage de programmation entièrement différent. Nous allons le faire bien entendu, mais cela va prendre du temps.
Actuellement, très peu de Safari App Extensions sont disponibles.