requestAnimationFrame
Une API web pour planifier l'exécution d'une fonction juste avant le prochain rafraîchissement du navigateur, synchronisée avec la fréquence de l'écran. La bonne façon de faire des animations JavaScript fluides — plutôt que setTimeout ou setInterval.
Le problème : animer avec setInterval(fn, 16) n'est pas fiable — l'intervalle ne se synchronise pas avec le rafraîchissement de l'écran, si bien que les images sautent ou se dupliquent, et l'animation continue à consommer du CPU même quand l'onglet est caché. requestAnimationFrame(callback) demande au navigateur d'exécuter le callback juste avant la prochaine frame, au rythme de l'écran (60Hz, 120Hz, peu importe) → animation fluide, avec une pause automatique quand l'onglet n'est pas visible (économie de batterie et de CPU). Motif classique : le callback anime une étape puis rappelle rAF pour la suivante, formant une boucle synchronisée avec l'écran. Cas d'usage : toute animation pilotée en JS, boucles de jeu, défilement fluide, rendu sur canvas. Complément : requestIdleCallback pour le travail non urgent. Règle de base : animer en CSS quand c'est possible (encore moins coûteux), mais quand JS est nécessaire, rAF est le bon outil.