Kitty Giraudel partage son expérience d'apprentissage de Rust sur une période de six mois, en tant qu'ingénieur JavaScript/TypeScript se lançant dans un système de production. Elle souligne la robustesse de Cargo, le système de build et de gestion de paquets de Rust, contrastant avec les complexités de l'écosystème JavaScript. Elle apprécie également la clarté des messages d'erreur de Rust, bien que les erreurs de compilation, notamment celles liées aux emprunts et à la durée de vie, aient été un défi initial. Son article offre un aperçu de son parcours, mettant en lumière les aspects qu'elle aime et ceux qu'elle n'aime pas, ainsi que ses réflexions sur l'adoption de Rust pour un projet backend.
µJS est une bibliothèque légère de navigation AJAX permettant de transformer un site web traditionnel en une application à page unique (SPA) sans utiliser de JavaScript complexe. En interceptant les clics sur les liens et les soumissions de formulaires, elle charge les nouvelles pages en arrière-plan et ne remplace que le contenu modifié, évitant ainsi les rechargements complets de la page. Avec seulement ~5 KB gzipped et zéro dépendance, µJS s'intègre facilement à n'importe quel backend (PHP, Python, Ruby, etc.) en ajoutant un simple script et en appelant mu.init(). Parmi ses fonctionnalités, on trouve le préchargement au survol, le mode patch pour les mises à jour multiples, le support des événements personnalisés et des requêtes HTTP variées.
Lea Verou explique comment émuler les import maps externes, une solution pour gérer centralement les dépendances JavaScript, grâce à une astuce compatible avec les navigateurs modernes. En injectant dynamiquement une balise <script type="importmap"> via un script classique, il est possible de contourner les limitations actuelles des import maps. La méthode, déjà utilisée par JSPM v4, permet de résoudre les problèmes de URLs relatives et offre une solution simple et efficace pour une gestion centralisée des dépendances.
Oskar Dudycz partage une leçon apprise à propos de la gestion des données, notamment des grands entiers (bigints) dans les environnements JavaScript/TypeScript. Il explique les défis de la sérialisation et de la désérialisation des données, en particulier avec JSON, qui ne supporte pas nativement les grands entiers ou les dates. Il décrit ses tentatives pour contourner ces limitations, y compris une approche "sneaky" qui a finalement causé des problèmes, soulignant l'importance de bien parser les données plutôt que de deviner leur type. Il conclut en recommandant une approche plus rigoureuse et moins "sneaky" pour éviter les erreurs.
L'article explore l'utilisation de l'API Popover pour créer des infobulles (tooltips) en s'appuyant sur les fonctionnalités natives du navigateur plutôt que sur des bibliothèques JavaScript. L'auteur explique comment cette API simplifie la gestion des interactions clavier, de l'accessibilité et des événements, réduisant considérablement le code nécessaire. Il compare l'ancienne méthode utilisant des bibliothèques avec la nouvelle approche basée sur l'API Popover, soulignant les avantages en termes de simplicité et de robustesse. L'article note également que l'API est bien supportée par les navigateurs, bien que certaines fonctionnalités soient encore en développement.
Oxfmt, un formateur de code compatible avec Prettier et développé en Rust, est désormais en version bêta. Plus rapide (30x plus que Prettier et 3x plus que Biome), il prend en charge plusieurs formats de fichiers, intègre le tri des imports et le support de Tailwind CSS, et offre une compatibilité totale avec Prettier. Utilisé par des projets comme Vue.js et Sentry, il est facile à installer et à migrer depuis Prettier.
Antoine Caron partage son expérience d'optimisation de son application open source de poker planning. Initialement, l'application pesait environ 123 Ko (JS + CSS) avec React 19, TanStack Router et Query, et Tailwind 4. En passant à Preact, en pré-compressant les fichiers avec Brotli, Zstd et Zopfli, et en optimisant Tailwind CSS, il a réduit le poids de l'application à environ 40 Ko, soit une réduction de 67%. Un excellent exemple d'optimisation web.
L'événement scrollend est une nouvelle API standardisée pour détecter la fin du défilement dans une page web, simplifiant ainsi la gestion des actions post-défilement. Contrairement aux méthodes précédentes utilisant des timers et des debounce, scrollend offre une détection fiable et immédiate, compatible avec tous les types de défilement (souris, clavier, tactile, programmé). Il est supporté par tous les navigateurs majeurs et permet des applications comme le lazy-loading optimisé, le suivi de la position de lecture, et le tracking précis. (Source : Alsacreations)
Cet article explore la tendance croissante des frameworks HTML-first, comme htmx, qui révolutionnent le développement web en revenant à une approche plus simple et performante, centrée sur le HTML et le serveur, plutôt que sur des applications monopages (SPA) complexes. Il met en lumière les problèmes de surcharge JavaScript, les avantages en termes de performance, de simplicité et de maintenance, ainsi que les cas d'utilisation idéaux pour cette approche. L'auteur souligne également les bénéfices pour le SEO, l'accessibilité et l'expérience utilisateur, tout en discutant des situations où une approche différente pourrait être plus appropriée.
L'article aborde les défis de la qualité du code frontend en JavaScript, qui échoue silencieusement et rend le débogage difficile. Il propose des solutions comme TypeScript pour la vérification des types, ESLint pour le linting du code, et Storybook pour la documentation des composants. TypeScript, en mode strict, force à définir explicitement les types, évitant ainsi des erreurs courantes. ESLint, basé sur le guide de style Airbnb, capture les erreurs de formatage et les mauvaises pratiques. Storybook permet de tester et documenter tous les états possibles des composants. Ces outils visent à améliorer la qualité du code avant même d'exécuter les tests, réduisant ainsi les bugs en production.
L'API Web Share simplifie le partage de contenu en ligne en utilisant les fonctionnalités natives du système d'exploitation, évitant ainsi l'utilisation de scripts tiers pour chaque réseau social. Elle permet une intégration facile et améliore l'expérience utilisateur en réduisant le chargement de JavaScript et en offrant une interface de partage cohérente. Compatible principalement sur mobile, elle nécessite un contexte sécurisé (HTTPS) et une action utilisateur pour fonctionner. En cas de non-support, une solution de repli (fallback) peut être mise en place. L'API permet de partager des titres, du texte, des URLs et des fichiers, avec des contraintes spécifiques pour chaque type de données.
Biome est une nouvelle toolchain écrite en Rust qui promet de remplacer ESLint, un outil de linting pour JavaScript, en offrant des performances bien supérieures. Contrairement à ESLint qui tourne sur Node.js, un langage interprété et single-threaded, Biome est un binaire natif, compilé et optimisé, utilisant une architecture parallèle. Il intègre également un formatter et un organiseur d'imports, réduisant ainsi la fragmentation des outils actuels. De plus, Biome peut être intégré dans des projets PHP via Composer, sans nécessiter Node.js. L'adoption de Biome est justifiée par son efficacité, faisant le même travail 100 fois plus vite et consommant 10 fois moins de mémoire.
Lea Verou aborde dans cet article les problèmes de gestion des dépendances sur le web, soulignant que contrairement à d'autres écosystèmes comme NodeJS ou Python, le web a externalisé cette fonctionnalité fondamentale à des outils tiers comme les bundlers (Webpack, rollup, etc.). Elle explique que la gestion des dépendances devrait être une fonctionnalité native de la plateforme, simple et intuitive, plutôt qu'une tâche complexe nécessitant des outils avancés. Verou discute des solutions potentielles, comme les import maps, et plaide pour une amélioration de l'architecture web afin de rendre les dépendances aussi faciles à gérer que dans d'autres environnements de développement.
L'article présente une approche rigoureuse pour améliorer la qualité du code PHP en utilisant quatre outils : PHPStan pour l'analyse statique, Rector pour la modernisation automatique du code, PHP-CS-Fixer pour le respect des normes de style, et Biome pour le linting et le formatage du JavaScript. L'auteur partage ses configurations et son workflow, intégrant ces outils dans un processus automatisé via Castor, un task runner. L'objectif est de déléguer la rigueur à des machines pour éviter les erreurs humaines et maintenir un code propre et performant.
L'article propose des alternatives à l'utilisation excessive de console.log pour améliorer le développement. Il suggère des méthodes comme console.dir() pour les listes hiérarchiques, console.table() pour les tableaux, console.group() pour organiser les logs, console.time() pour mesurer le temps d'exécution, et console.clear() pour nettoyer la console. L'auteur recommande également JSON.stringify() pour un affichage plus lisible dans les terminaux. Des commentaires soulignent d'autres méthodes utiles comme console.trace() et console.info(), ainsi que l'utilisation d'emojis pour différencier les messages de log.
L'auteur explique dans cet article comment utiliser la validation des entrées HTML côté client comme une amélioration progressive pour l'expérience utilisateur, en complément de la validation côté serveur. Il montre comment utiliser les attributs natifs HTML comme pattern, minlength, maxlength, et title pour valider et styliser les entrées, tout en soulignant les limites d'accessibilité de ces méthodes. L'article propose ensuite d'améliorer l'accessibilité en utilisant l'API de validation des contraintes JavaScript pour personnaliser l'affichage des erreurs. Un exemple interactif est disponible sur CodePen.
L'article explore comment remplacer certaines fonctionnalités JavaScript par des solutions natives HTML et CSS. Il met en avant des exemples concrets comme les accordéons avec les éléments <details> et <summary>, les champs de saisie avec suggestions filtrées via <datalist>, et d'autres composants web. L'objectif est de réduire la dépendance au JavaScript pour des tâches simples, améliorant ainsi les performances et l'expérience utilisateur. L'article inclut des exemples de code et des ressources pour approfondir.
Cet article explore le potentiel du streaming HTML pour améliorer les performances des sites web modernes. Sébastien Mischler, développeur chez Infomaniak, revisite cette technique inspirée d'un article de Chris Coyier, en s'appuyant sur un projet expérimental appelé HTMS. L'article souligne que les problèmes de performance actuels proviennent souvent du rendu retardé par l'hydration côté client et les pipelines JavaScript lourds, plutôt que de la vitesse du réseau. Le streaming HTML permet de rendre le contenu progressivement dès son arrivée, améliorant ainsi les métriques clés comme le First Contentful Paint et l'expérience utilisateur. Bien que les solutions comme le SSR (Server-Side Rendering) et le SSG (Static Site Generation) existent, elles présentent des limites, notamment avec les données dynamiques. Le streaming HTML offre une alternative prometteuse pour concilier SEO, accessibilité et performances.
Cet article met en lumière l'utilisation excessive de JavaScript pour résoudre des problèmes qui pourraient être mieux gérés par CSS. L'auteur, Chizaram Ken, souligne que les lacunes de connaissances poussent souvent les développeurs à sur-ingénieriser des solutions, ce qui impacte négativement les performances. Par exemple, des fonctionnalités CSS comme content-visibility: auto et les unités de vue modernes (dvh, svh, lvh) offrent des solutions efficaces sans JavaScript, mais les développeurs continuent de privilégier des solutions JavaScript par habitude. L'article explore des problèmes spécifiques comme la virtualisation dans React, les requêtes de conteneur et les animations de défilement, en proposant des alternatives CSS et en discutant des cas où JavaScript reste pertinent. Un appel est lancé pour éviter d'utiliser useEffect et useState pour des problèmes de rendu, en insistant sur l'importance de comprendre les capacités natives du navigateur avant de recourir à des bibliothèques JavaScript.
L'article explore comment des techniques anciennes et des API natives du navigateur surpassent les frameworks modernes en termes de performance. L'auteur présente multicardz, un outil de gestion de données spatiales, qui utilise des bitmaps pour les requêtes backend, réduisant ainsi les temps de traitement. Pour le frontend, il utilise DATAOS (DOM As The Authority On State), une approche où le DOM est la source de vérité pour l'état de l'application, éliminant ainsi la nécessité de synchroniser un état séparé. Le résultat est une application performante avec un bundle JavaScript de seulement 32KB, un score Lighthouse de 100, et des temps de réponse extrêmement rapides.