React · React Native · 16 komponenter
Svåra interaktioner, färdiga.
Animated Chorus är en uppsättning rörelsekomponenter för interaktionerna som är svåra att få rätt för hand: rullande siffror, strömmad text, byten som ändrar storlek, sheets, pagers, svepåtgärder och listor som bara animerar det som ändrats. En tagg och din data. Ingen provider, ingen setup.
npm install @kkwaenggwari/animated-chorusUppmätt på det här bygget
Chrome, 2026-09-28. Alla villkor och mätningar finns i prestandaguiden. Så mättes det
- 28.0KBKB gzip för alla 16 exporter
Hela webbens startpunkt, minifierad. React är enda peer.
- 0JS-bildrute-callbacks under animering
En siffra, en höjd och en markering ändras tillsammans: webbläsaren spelar upp alla 12 animationer.
- 1React-commit per värdeändring
MotionNumberrenderas när värdet ändras, aldrig medan det rullar. - 11React-commits för 3000 strömmade tecken
MotionStreamlägger till tecken direkt och för in dem i React några gånger per sekund.
01Enklast
En tagg och din data
Varje komponent fungerar på egen hand: ingen provider, omslagskomponent eller setup-anrop. Samlingar tar items och renderItem, och din layout, dina texter och stilar förblir dina.
- Importera en komponent och skicka ett värde. Det är hela integrationen.
- Listor, flikar och pagers läser din array; nycklar är som standard
item.id. - Text förblir riktig text: den radbryts, skalas med typsnittet och kan markeras.
<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} />;
Sex livekomponenter, och den enda kodraden bakom var och en.
Förbereder exemplet…
02Snabbast
Webbläsaren spelar upp. React står still.
På webben finns inget animationsbibliotek att läsa in: komponenterna lämnar över rörelsen till Web Animations API, så en rullande siffra eller en panel som ändrar storlek kostar inget JavaScript per bildruta och ingen React-rendering medan den rör sig.
- 0 JS-bildrute-callbacks medan 12 animationer körs samtidigt.
- En React-commit per värdeändring, inte en per bildruta.
- Strömmad text: 11 React-commits för 3000 tecken. Exemplet nedan räknar sina egna renderingar.
Förbereder exemplet…
03Stabilast
Avbryt vad som helst. Inget hoppar.
Varje nytt värde börjar från det som syns på skärmen och fjädrar behåller sin hastighet, så snabba klick, dataskurar och vändningar ser avsiktliga ut. När rörelsen slutar är inget kvar som körs.
- Siffror delar sig aldrig: kvarvarande positioner glider medan de rullar.
- 200 nya värden med 5 ms mellanrum: 0 animationer kvar efteråt och exakt sluttext.
- Säker under React StrictMode. I en React Native-app i bakgrunden landar rörelsen direkt i sitt sluttillstånd.
Förbereder exemplet…
16 komponenter, grupperade efter uppgift
Siffror och text, innehåll som ändrar storlek, urval, listor, gester, överlägg och förlopp. Var och en har en livearbetsbänk med sina props vid sidan.
Alla komponenterSiffror och text
Innehåll och storlek
Urval och sidor
Listor
Gester
Överlägg
Förlopp
Tillsammans
Kompletta skärmar som kombinerar flera komponenter, var och en med inställningarna utanför exemplet.
Alla exempel- ChattsvarFörslag som fälls ihop, ett svar som strömmar i jämn takt och en statusrad som byts.
MotionStreamMotionListMotionSwapMotionHeight - KassasammanfattningAntal, radsummor och totalen rullar när varukorgen ändras; rabattmeddelandet kommer och går; att betala kräver ett avsiktligt nedhållet tryck.
MotionListMotionNumberMotionPresenceMotionHold - InkorgFilterflikar med liveantal, rader som kan svepas bort och en lista som sluter luckan.
MotionHighlightMotionListMotionSwipeMotionNumber - FotoflödeSvep mellan foton, hoppa med miniatyrer, öppna valfritt foto i helskärm och dra upp dess detaljer.
MotionPagerMotionHighlightMotionZoomMotionSheet
Samma import på webben och i React Native
Metro väljer native-implementationen och webbbundlers väljer DOM-varianten. Varje plattform spelar upp rörelse på det sätt den gör bäst.
// 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} />
</>
);
}| Del | Webb | React Native |
|---|---|---|
| Transforms och opacity | Web Animations API, fjädrar samplade analytiskt | Animated med native driver |
| Bredd och höjd | Web Animations API | Animated med JS-driver, eftersom det är layout |
| Strömmad text | Tecken som läggs till och tonas in; några React-renderingar per sekund | En riktig Text, visad utan toning |
| Sheets och zoom | En native dialog i det översta lagret | En genomskinlig Modal; bakåtknappen stänger den |
Kom igång på två minuter
Installera, importera en komponent, skicka ett värde.
npm install @kkwaenggwari/animated-chorus