Blog

Animations pilotées par le défilement : animation-timeline plutôt qu'IntersectionObserver

Il y a une raison pour laquelle le parallax JavaScript semble toujours légèrement décalé — un peu détaché, comme si les couches nageaient un demi-frame derrière la page. Ce n'est pas du code bâclé. C'est parce que les événements de défilement atteignent votre JavaScript après que le navigateur a déjà peint le défilement. Le navigateur a déjà résolu ça une fois, en transformant les en-têtes collants en position: sticky. Les scroll-driven animations sont le même mouvement, appliqué à tous les effets liés au défilement d'un coup.

View Transitions dans Next.js : animations de pages sans bibliothèque

Pendant dix ans, animer une miniature en image hero signifiait une seule technique : mesurer l'élément avant, mesurer après, simuler la différence avec un transform, et lancer. FLIP. Chaque bibliothèque d'animation le fait, et chacune le paye en JavaScript sur le thread principal au pire moment possible. La View Transitions API déplace tout ce tour de passe-passe dans le navigateur — et depuis React 19.2 et Next.js 16, tout le contrat tient en un seul prop appelé name.

Core Web Vitals : ce que l'INP mesure vraiment, et comment scheduler.yield() sauve le thread principal

Dans l'article sur les micro-interactions, j'écrivais que transform et opacity s'animent sur le thread de composition, donc même une page lourde ne devrait pas saccader l'animation d'un bouton. C'est toujours vrai – avec une réserve que cet article-là passait sous silence : si le thread principal est bloqué par une longue tâche JS, l'animation risque de ne jamais avoir la chance de démarrer, car le handler de clic lui-même attend dans la file. L'INP est la métrique qui mesure exactement cet écart – et scheduler.yield() est l'un des rares moyens de réellement le combler.

Optimistic UI en React : une interface qui ment consciemment

Le bouton « J'aime » réagit instantanément, le cœur se remplit, le compteur augmente – avant même que le serveur ait répondu. Ce n'est pas l'illusion de rapidité de l'article sur les micro-interactions, c'est quelque chose qui va plus loin : l'interface affiche un état qui n'existe pas encore, en supposant qu'il existera bientôt. J'examine comment construire cela en toute sécurité – avec un vrai retour en arrière quand l'hypothèse ne se vérifie pas – et pourquoi un setState manuel plus un catch est une version dégradée de ce qu'offre useOptimistic.

Micro-interactions Animées dans le Commerce Électronique

Deux boutiques, le même produit, le même temps de réponse serveur – et pourtant l'une semble plus rapide et plus digne de confiance que l'autre. La différence tient aux micro-interactions : quelques centaines de millisecondes d'animation qui décident si l'utilisateur croit ce qu'il voit à l'écran. Je décortique le sujet depuis les fondamentaux – le modèle déclencheur/feedback, ce qui se passe réellement dans le moteur de rendu du navigateur, et prefers-reduced-motion.