Back

Remplacer les bibliothèques d'animation par les API Web natives

Remplacer les bibliothèques d'animation par les API Web natives

Si votre projet importe GSAP, Framer Motion ou Anime.js uniquement pour gérer les transitions de page, les effets de défilement ou les animations d’apparition d’éléments, vous transportez un poids dans votre bundle que le navigateur ne vous demande plus de porter. Les API d’animation Web modernes ont atteint un niveau de maturité tel que remplacer les bibliothèques d’animation JavaScript est désormais une option réaliste pour la plupart des travaux d’interface utilisateur courants.

Voici un aperçu pratique de ce que la plateforme vous offre aujourd’hui.

Points clés à retenir

  • L’API Web Animations (Element.animate()) fournit un contrôle programmatique — pause, lecture, inversion, navigation — sans importer de bibliothèque, et peut s’exécuter sur le thread du compositeur comme les animations CSS lors de l’animation de propriétés compatibles avec le compositeur.
  • Les animations CSS pilotées par le défilement (CSS Scroll-Driven Animations) vous permettent de lier la progression de l’animation directement à la position de défilement, remplaçant le pattern courant Intersection Observer + bibliothèque d’animation par du CSS pur.
  • L’API View Transitions gère les transitions animées entre états d’interface ou pages, couvrant les cas d’usage qui nécessitaient auparavant AnimatePresence de Framer Motion ou des timelines GSAP personnalisées.
  • Les bibliothèques conservent leur utilité pour les mouvements basés sur la physique, la manipulation complexe de SVG et l’orchestration avancée de timelines — l’objectif est d’y recourir de manière délibérée, et non par défaut.

L’API Web Animations : contrôle programmatique sans bibliothèque

L’API Web Animations (WAAPI) vous permet d’animer des éléments DOM directement en JavaScript à l’aide de Element.animate(). Elle vous offre le contrôle dynamique pour lequel les développeurs se tournent généralement vers des bibliothèques — pause, lecture, inversion, navigation — tout en bénéficiant du même moteur d’animation du navigateur utilisé par les animations CSS.

const card = document.querySelector('.card')
const animation = card.animate(
  [
    { transform: 'translateY(20px)', opacity: 0 },
    { transform: 'translateY(0)',    opacity: 1 }
  ],
  { duration: 400, easing: 'ease-out', fill: 'forwards' }
)

// Chain animations using the finished promise
animation.finished.then(() => console.log('Entrance complete'))

Vous obtenez des animations échelonnées via delay, un chaînage séquentiel via .finished, et un contrôle de la lecture via .playbackRate — le tout sans aucune dépendance.

Ce qu’elle remplace : Anime.js, Velocity.js et les cas d’usage basiques de GSAP. Support navigateur : Pris en charge par tous les navigateurs modernes. Consultez le déploiement actuel sur caniuse.com.

Note d’accessibilité : Vérifiez toujours prefers-reduced-motion avant d’exécuter une animation. Passez duration: 0 lorsque l’utilisateur préfère réduire les mouvements plutôt que d’ignorer complètement l’appel d’animation, afin que les effets de mise en page provenant de fill: 'forwards' s’appliquent toujours.

const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches
element.animate(keyframes, { duration: reduced ? 0 : 400, fill: 'forwards' })

Animations CSS pilotées par le défilement : effets de scroll sans JavaScript

Les animations CSS pilotées par le défilement remplacent le pattern le plus courant Intersection Observer + bibliothèque d’animation : révéler des éléments au fur et à mesure que l’utilisateur fait défiler la page.

@keyframes fade-in {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}

.reveal {
  animation: fade-in linear both;
  animation-timeline: view();
  animation-range: entry 0% entry 40%;
}

Pas de JavaScript. Pas de bibliothèque. Le navigateur lie directement la progression de l’animation à la position de l’élément dans le conteneur de défilement.

Support navigateur : Disponible dans les navigateurs Chromium à partir de Chrome 115 et continue d’évoluer sur les autres moteurs. Vérifiez l’état actuel du support sur caniuse.com.

L’API View Transitions : transitions de page et d’état

L’API View Transitions gère la transition animée entre deux états d’interface — le pattern qui nécessitait auparavant AnimatePresence de Framer Motion ou un travail personnalisé de timeline GSAP.

function navigate(updateFn) {
  if (!document.startViewTransition) {
    updateFn() // Fallback for unsupported browsers
    return
  }
  document.startViewTransition(updateFn)
}

Pour les applications multi-pages, une seule règle CSS active les transitions entre documents :

@view-transition {
  navigation: auto;
}

Assignez view-transition-name aux éléments partagés et le navigateur les transforme automatiquement entre les pages.

Support navigateur : Les transitions au sein d’un même document sont largement prises en charge par les navigateurs modernes, tandis que les transitions entre documents continuent leur déploiement sur les différents moteurs. Consultez l’état actuel sur caniuse.com.

Ce qu’elle remplace : Les transitions de page Framer Motion, les wrappers d’animation React Router, la logique personnalisée de changement de page GSAP.

Quand les bibliothèques conservent leur pertinence

Les API natives couvrent un large éventail de besoins d’animation courants, mais les bibliothèques conservent des avantages clairs dans des scénarios spécifiques :

  • Mouvements basés sur la physique (animations à ressort, momentum) — Framer Motion, React Spring
  • Animation SVG complexe — plugins MorphSVG ou DrawSVG de GSAP
  • Orchestration avancée de timelines sur de nombreux éléments
  • Abstraction cross-browser étendue lorsque vous ne pouvez pas compter sur l’amélioration progressive

La décision n’est pas natif vs. bibliothèque — il s’agit de savoir si la plateforme résout déjà votre problème spécifique.

Conclusion

Avant d’ajouter une dépendance d’animation, vérifiez si l’API Web Animations, les animations CSS pilotées par le défilement ou l’API View Transitions couvrent votre cas d’usage. Pour la plupart des animations d’apparition, des effets de défilement et des transitions de page, c’est le cas. Réservez les bibliothèques pour le travail spécialisé dans lequel elles excellent véritablement — les ressorts basés sur la physique, le morphing SVG complexe et les timelines multi-éléments complexes. Votre bundle, et vos utilisateurs, bénéficieront de cette différence.

FAQ

Pour les animations d'apparition simples, les fondus, les glissements et le séquençage de base, oui. GSAP excelle toujours dans l'orchestration de timelines complexes, le morphing SVG via des plugins comme MorphSVG, et les effets basés sur la physique. Si votre utilisation de GSAP se limite à l'interpolation d'opacité et de transformations, l'API Web Animations gère cela nativement avec des performances comparables.

Traitez les animations pilotées par le défilement comme une amélioration progressive. Définissez vos éléments dans leur état visible final par défaut en CSS, puis superposez l'animation par-dessus. Les navigateurs qui ne prennent pas en charge cette fonctionnalité affichent simplement le contenu sans l'effet de défilement. Aucun fallback JavaScript n'est nécessaire car le contenu reste entièrement accessible et lisible.

Oui. Pour les applications monopage, enveloppez votre fonction de mise à jour d'état dans document.startViewTransition(). Avec React, cela signifie appeler startViewTransition autour de votre logique de navigation ou de changement d'état. Les intégrations de frameworks sont encore en évolution, mais l'API de base fonctionne avec tout framework qui met à jour le DOM de manière synchrone ou via flushSync.

Oui. Respecter la media query prefers-reduced-motion est à la fois une bonne pratique et une exigence d'accessibilité. Plutôt que d'ignorer complètement l'appel d'animation, définissez la durée à zéro. Cela préserve tous les effets de mise en page provenant de propriétés comme fill forwards tout en supprimant le mouvement visuel que certains utilisateurs trouvent désorientant ou nuisible.

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay