Hologram, le framework Elixir qui compile pour le navigateur, publie sa version 0.9. Cette mise à jour majeure ajoute une couche de communication en temps réel permettant au serveur de pousser des mises à jour vers les clients connectés, sans JavaScript et sans requêtes périodiques de la part du client.

Une couche temps réel native

Jusqu’à présent, toute fonctionnalité temps réel dans une application Hologram nécessitait de sortir du cadre du framework. Avec la v0.9, le serveur peut diffuser une action vers tous les clients abonnés à un canal. Le mécanisme s’appuie sur les mêmes gestionnaires d’action (action/3) que ceux déjà utilisés pour les événements utilisateur, mais déclenchés depuis le serveur. L’équipe de développement indique que cette fonctionnalité a représenté le plus gros effort de la version : la pull request correspondante compte 414 commits, plus de 12 000 lignes de code et modifie 108 fichiers.

Le système de canaux est typé et structuré : les canaux ne sont pas de simples chaînes de caractères, mais des tuples comme :notifications ou {:room, 42}, ce qui évite les erreurs de routage. Trois canaux d’identité intégrés – {:instance, id}, {:session, id} et {:user, id} – permettent de cibler un onglet, une session ou l’ensemble des appareils d’un utilisateur connecté. Les appels put_subscription et put_broadcast sont disponibles dans les gestionnaires, tandis que le module Hologram.Realtime offre des équivalents pour les jobs en arrière-plan ou tout code Phoenix existant.

Un exemple complet de salon de discussion est fourni dans l’annonce : la page s’abonne à une salle via init/3, chaque message est diffusé par une commande, et le gestionnaire d’action met à jour l’affichage chez tous les abonnés, expéditeur inclus.

Support de la forme with

La version 0.9 implémente également la forme spéciale with d’Elixir sur le client. Cette fonctionnalité a été proposée et en grande partie développée par Robert Prehn. Elle permet d’enchaîner des clauses conditionnelles de manière élégante, avec une branche else pour les cas d’erreur.

Assistance pour les IA de codage

Les assistants de codage (comme Claude Code, Cursor et autres) peinent souvent à comprendre les conventions spécifiques d’Hologram, qui diffèrent de celles de LiveView. La version 0.9 intègre des ressources destinées à ces outils : des fichiers llms.txt et llms-full.txt contenant de la documentation lisible par les modèles de langage, un fichier usage-rules.md compatible avec l’écosystème usage_rules, ainsi que les commandes mix holo.gen.agents_md et mix holo.gen.claude_md pour générer des fichiers de configuration propres à chaque projet. L’objectif est que les assistants cessent de suggérer des motifs LiveView inadaptés et produisent du code idiomatique Hologram.

Cycles de développement plus rapides

Attention, changement de comportement : le compilateur et l’environnement d’exécution d’Hologram ne se lancent plus automatiquement en mode dev et test. Cette décision fait suite à un rapport de problème signalant que le compilateur ralentissait la boucle d’édition et de test. Désormais, pour bénéficier de la compilation côté client complète, il faut lancer l’application via la nouvelle tâche mix holo ou définir la variable d’environnement HOLOGRAM_START=1. Les cycles de tests en profitent, car le coût de compilation n’est plus payé à chaque exécution.

Disponibilité

Hologram v0.9 est disponible dès maintenant. La documentation complète sur la couche temps réel, les abonnements, l’autorisation et la livraison des messages est accessible sur le site officiel du projet.