React · React Native · 16 composants

Les interactions difficiles, déjà terminées.

Animated Chorus est un ensemble de composants d’animation pour les interactions difficiles à réussir à la main : chiffres qui défilent, texte en streaming, changements qui redimensionnent, panneaux, pagineurs, actions au balayage et listes qui n’animent que ce qui a changé. Une balise et vos données. Ni provider ni configuration.

Installer
npm install @kkwaenggwari/animated-chorus

Mesuré sur ce build

Chrome, 2026-09-28. Toutes les conditions et tous les échantillons figurent dans le guide de performance. Méthode de mesure

  • 28.0KBKB gzip pour les 16 exports

    Tout le point d’entrée web, minifié. React est la seule dépendance peer.

  • 0Callbacks d’image JS pendant l’animation

    Un nombre, une hauteur et un surlignage qui changent ensemble : le navigateur joue les 12 animations.

  • 1Commit React par changement de valeur

    MotionNumber se rend quand la valeur change, jamais pendant qu’elle défile.

  • 11Commits React pour 3000 caractères en streaming

    MotionStream ajoute les caractères directement et ne les intègre à React que quelques fois par seconde.

01Le plus simple

Une balise et vos données

Chaque composant fonctionne seul : ni provider, ni composant englobant, ni appel de configuration. Les collections prennent items et renderItem, et votre mise en page, votre texte et vos styles restent les vôtres.

  • Importez un composant et passez une valeur. C’est toute l’intégration.
  • Les listes, onglets et pagineurs lisent votre tableau ; les keys valent item.id par défaut.
  • Le texte reste du vrai texte : il passe à la ligne, suit la taille de police et se sélectionne.
  • <MotionNumber value={total} />;
  • <MotionSwap value={status}>{label}</MotionSwap>;
  • <MotionHeight open={open}>{details}</MotionHeight>;
  • <MotionHighlight items={tabs} value={tab} onValueChange={setTab} />;
  • <MotionList items={tasks} renderItem={(task) => task.title} />;
  • <ProgressRing value={progress} />;

Six composants en direct, et la ligne de code derrière chacun.

Préparation de l’exemple…

02Le plus rapide

Le navigateur le joue. React ne bouge pas.

Sur le web, aucune bibliothèque d’animation à charger : les composants confient leur mouvement à la Web Animations API, si bien qu’un chiffre qui défile ou un panneau qui change de taille ne coûte ni JavaScript à chaque image ni rendu React pendant qu’il bouge.

  • 0 callbacks d’image JS pendant que 12 animations tournent ensemble.
  • Un commit React par changement de valeur, pas un par image.
  • Texte en streaming : 11 commits React pour 3000 caractères. L’exemple ci-dessous compte ses propres rendus.

Préparation de l’exemple…

03Le plus stable

Interrompez n’importe quoi. Rien ne saute.

Chaque nouvelle valeur part de ce qui est à l’écran et les ressorts gardent leur vitesse : clics rapides, rafales de données et retours en arrière paraissent voulus. Quand le mouvement se termine, plus rien ne tourne.

  • Les nombres ne se coupent jamais : les chiffres restants glissent pendant qu’ils défilent.
  • 200 nouvelles valeurs à 5 ms d’intervalle : 0 animations restantes ensuite, et le texte final exact.
  • Sûr sous React StrictMode. Dans une application React Native en arrière-plan, le mouvement se pose sur son état final.

Préparation de l’exemple…

16 composants, regroupés par rôle

Nombres et texte, contenu qui change de taille, sélection, listes, gestes, superpositions et progression. Chacun dispose d’un banc d’essai en direct avec ses props à côté.

Tous les composants

Le même import sur le web et React Native

Metro choisit l’implémentation native et les bundlers web l’implémentation DOM. Chaque plateforme joue le mouvement de la façon qui lui convient le mieux.

App.jsx
// Web and React Native: the same import.
import { MotionNumber, MotionList } from '@kkwaenggwari/animated-chorus';

export function Score({ points, players }) {
  return (
    <>
      <MotionNumber value={points} />
      <MotionList items={players} renderItem={(player) => player.name} />
    </>
  );
}
PartieWebReact Native
Transforms et opacitéWeb Animations API, ressorts échantillonnés analytiquementAnimated avec le driver natif
Largeur et hauteurWeb Animations APIAnimated avec le driver JS, car c’est de la mise en page
Texte en streamingCaractères ajoutés avec un fondu ; quelques rendus React par secondeUn vrai Text, affiché sans fondu
Panneaux et zoomUn dialog natif dans la couche supérieureUn Modal transparent ; le bouton retour le ferme

Démarrer en deux minutes

Installez, importez un composant, passez une valeur.

npm install @kkwaenggwari/animated-chorus

Rechercher

Tapez pour rechercher dans la documentation.