veilletech.fr
3 sept. Feed du jour
#09 WEB Article

Starlight ouvre son menu sans JavaScript

Un menu qui s'ouvre sans JavaScript, c'est un site qui reste lisible.

Starlight 0.42 remplace le JavaScript de son menu mobile par l'API Popover du navigateur : la navigation reste ouvrable sans JS. Le thème ne distribue plus ses sources TypeScript mais du JavaScript compilé et ses types, ce qui accélère le type-check des projets qui l'utilisent.

2 min de lecturedébutantvidéo 1:17
Partager
Sommaire4 sections
  1. Moins de JavaScript : l'API Popover
  2. Plus de JavaScript : la fin du TypeScript distribué
  3. Performances et accessibilité
  4. À retenir

Moins de JavaScript : l'API Popover

Le menu mobile de Starlight — le thème de documentation officiel d'Astro — fonctionne désormais même si le JavaScript échoue ou est désactivé. Il s'appuie sur l'API Popover, une primitive du navigateur, au lieu d'un composant client.

Ce n'est pas un cas d'école : les raisons pour lesquelles le JavaScript peut ne pas s'exécuter sont plus nombreuses qu'on ne le croit — script coupé en cours de chargement, extension, proxy d'entreprise, erreur en amont. Sur un site de documentation, un menu mort transforme un site en page isolée.

Plus de JavaScript : la fin du TypeScript distribué

Un projet Astro peut publier des fichiers TypeScript sur npm : ils fonctionnent tels quels chez l'utilisateur. C'est pratique pour prototyper, et c'est ainsi que Starlight était publié depuis le début.

Le coût se paie chez le consommateur. tsc vérifie tout fichier .ts importé, même dans node_modules, et il le fait avec votre configuration, pas celle du thème. Sur un projet de la taille de Starlight, l'addition monte, et les performances de types dans l'éditeur en souffrent.

La 0.42 compile donc ses sources et publie des définitions de types. Le type-check des projets utilisateurs s'en trouve plus rapide — sans rien changer au poids livré au lecteur : Starlight reste à 3 à 13× moins de JavaScript que les outils comparables, selon les relevés HTTP Archive.

Performances et accessibilité

À retenir

  1. Mise à jour : npx @astrojs/upgrade, qui aligne Starlight, Astro et les autres intégrations en une fois.
  2. Les versions 0.x restent des mineures qui peuvent casser — le CHANGELOG du dépôt porte les instructions de migration.
  3. Le vrai enseignement dépasse Starlight : quand une primitive du navigateur couvre le besoin, elle est plus robuste que le composant qui la réimplémente.

Source : Astro