React · React Native · 16 Komponenten
Schwierige Interaktionen, fertig gebaut.
Animated Chorus ist eine Sammlung von Animationskomponenten für Interaktionen, die von Hand schwer gut hinzubekommen sind: rollende Zahlen, gestreamter Text, Wechsel mit Größenanpassung, Sheets, Pager, Wisch-Aktionen und Listen, die nur das Geänderte animieren. Ein Tag und deine Daten. Kein Provider, kein Setup.
npm install @kkwaenggwari/animated-chorusGemessen an diesem Build
Chrome, 2026-09-28. Alle Bedingungen und Messungen stehen im Performance-Guide. So wurde gemessen
- 28.0KBKB gzip für alle 16 Exporte
Der gesamte Web-Einstiegspunkt, minifiziert. React ist die einzige Peer-Abhängigkeit.
- 0JS-Frame-Callbacks während der Animation
Eine Zahl, eine Höhe und eine Hervorhebung ändern sich gleichzeitig: Der Browser spielt alle 12 Animationen ab.
- 1React-Commit pro Wertänderung
MotionNumberrendert, wenn sich der Wert ändert, nie während es rollt. - 11React-Commits für 3000 gestreamte Zeichen
MotionStreamhängt Zeichen direkt an und überführt sie nur ein paar Mal pro Sekunde in React.
01Am einfachsten
Ein Tag und deine Daten
Jede Komponente funktioniert allein: kein Provider, keine Wrapper-Komponente, kein Setup-Aufruf. Sammlungen nehmen items und renderItem, und dein Layout, dein Text und deine Styles bleiben deine.
- Eine Komponente importieren und einen Wert übergeben. Das ist die ganze Integration.
- Listen, Tabs und Pager lesen dein Array; Keys sind standardmäßig
item.id. - Text bleibt echter Text: Er bricht um, skaliert mit der Schrift und lässt sich markieren.
<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} />;
Sechs Live-Komponenten und die eine Codezeile hinter jeder.
Beispiel wird vorbereitet…
02Am schnellsten
Der Browser spielt ab. React bleibt still.
Im Web muss keine Animationsbibliothek geladen werden: Die Komponenten übergeben ihre Bewegung an die Web Animations API, sodass eine rollende Zahl oder ein Panel, das seine Größe ändert, während der Bewegung kein JavaScript pro Frame und keinen React-Render kostet.
- 0 JS-Frame-Callbacks, während 12 Animationen gleichzeitig laufen.
- Ein React-Commit pro Wertänderung, nicht einer pro Frame.
- Gestreamter Text: 11 React-Commits für 3000 Zeichen. Das Beispiel unten zählt seine eigenen Renders.
Beispiel wird vorbereitet…
03Am stabilsten
Unterbrich alles. Nichts springt.
Jeder neue Wert startet bei dem, was auf dem Bildschirm ist, und Federn behalten ihr Tempo – schnelle Klicks, Datenschübe und Richtungswechsel wirken gewollt. Wenn die Bewegung endet, läuft nichts mehr weiter.
- Zahlen brechen nie auseinander: Verbleibende Stellen gleiten, während sie rollen.
- 200 neue Werte im Abstand von 5 ms: danach 0 verbleibende Animationen und der exakte Endtext.
- Sicher unter React StrictMode. In einer React-Native-App im Hintergrund kommt die Bewegung in ihrem Endzustand zur Ruhe.
Beispiel wird vorbereitet…
16 Komponenten, nach Aufgabe gruppiert
Zahlen und Text, Inhalt mit wechselnder Größe, Auswahl, Listen, Gesten, Overlays und Fortschritt. Jede hat eine Live-Werkbank mit ihren props daneben.
Alle KomponentenZahlen und Text
Inhalt und Größe
Auswahl und Blättern
Listen
Gesten
Overlays
Fortschritt
Zusammengesetzt
Komplette Bildschirme aus mehreren Komponenten, jeweils mit den Einstellungen außerhalb des Beispiels.
Alle Beispiele- Chat-AntwortVorschläge, die sich einklappen, eine Antwort, die gleichmäßig hereinströmt, und eine Statuszeile, die wechselt.
MotionStreamMotionListMotionSwapMotionHeight - Checkout-ÜbersichtMengen, Zeilensummen und die Gesamtsumme rollen, wenn sich der Warenkorb ändert; der Gutscheinhinweis erscheint und verschwindet; Bezahlen erfordert bewusstes Halten.
MotionListMotionNumberMotionPresenceMotionHold - PosteingangFilter-Tabs mit Live-Zählern, Zeilen zum Wegwischen und eine Liste, die die Lücke schließt.
MotionHighlightMotionListMotionSwipeMotionNumber - Foto-FeedDurch Fotos wischen, mit Vorschaubildern springen, jedes Foto im Vollbild öffnen und seine Details hochziehen.
MotionPagerMotionHighlightMotionZoomMotionSheet
Derselbe Import im Web und unter React Native
Metro wählt die native Implementierung, Web-Bundler die DOM-Implementierung. Jede Plattform spielt Bewegung so ab, wie sie es am besten kann.
// 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} />
</>
);
}| Bereich | Web | React Native |
|---|---|---|
| Transforms und Deckkraft | Web Animations API, Federn analytisch abgetastet | Animated mit dem nativen Treiber |
| Breite und Höhe | Web Animations API | Animated mit dem JS-Treiber, weil es Layout ist |
| Gestreamter Text | Zeichen angehängt und eingeblendet; ein paar React-Renders pro Sekunde | Ein echtes Text, ohne Einblendung angezeigt |
| Sheets und Zoom | Ein natives dialog im Top Layer | Ein transparentes Modal; die Zurück-Taste schließt es |
In zwei Minuten loslegen
Installieren, eine Komponente importieren, einen Wert übergeben.
npm install @kkwaenggwari/animated-chorus