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.
npm install @kkwaenggwari/animated-chorusMesuré 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
MotionNumberse rend quand la valeur change, jamais pendant qu’elle défile. - 11Commits React pour 3000 caractères en streaming
MotionStreamajoute 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.idpar 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 composantsNombres et texte
Contenu et taille
Sélection et pagination
Listes
Gestes
Superpositions
Progression
Assemblés
Des écrans complets qui combinent plusieurs composants, chacun avec ses réglages en dehors de l’exemple.
Tous les exemples- Réponse de chatDes suggestions qui se replient, une réponse qui arrive à un rythme régulier et une ligne d’état qui change.
MotionStreamMotionListMotionSwapMotionHeight - Récapitulatif de commandeLes quantités, les totaux par ligne et le total défilent quand le panier change ; l’avis de code promo entre et sort ; payer demande un appui maintenu délibéré.
MotionListMotionNumberMotionPresenceMotionHold - Boîte de réceptionDes onglets de filtre avec des compteurs en direct, des lignes à balayer et une liste qui comble le vide.
MotionHighlightMotionListMotionSwipeMotionNumber - Fil de photosFaites défiler les photos, sautez de l’une à l’autre avec les vignettes, ouvrez n’importe quelle photo en plein écran et remontez ses détails.
MotionPagerMotionHighlightMotionZoomMotionSheet
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.
// 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} />
</>
);
}| Partie | Web | React Native |
|---|---|---|
| Transforms et opacité | Web Animations API, ressorts échantillonnés analytiquement | Animated avec le driver natif |
| Largeur et hauteur | Web Animations API | Animated avec le driver JS, car c’est de la mise en page |
| Texte en streaming | Caractères ajoutés avec un fondu ; quelques rendus React par seconde | Un vrai Text, affiché sans fondu |
| Panneaux et zoom | Un dialog natif dans la couche supérieure | Un Modal transparent ; le bouton retour le ferme |
Démarrer en deux minutes
Installez, importez un composant, passez une valeur.
npm install @kkwaenggwari/animated-chorus