React · React Native · 16 componenten
Lastige interacties, al af.
Animated Chorus is een set bewegingscomponenten voor de interacties die je met de hand moeilijk goed krijgt: rollende getallen, gestreamde tekst, wissels die van grootte veranderen, sheets, pagers, veegacties en lijsten die alleen animeren wat veranderde. Eén tag en je data. Geen provider, geen setup.
npm install @kkwaenggwari/animated-chorusGemeten op deze build
Chrome, 2026-09-28. Elke voorwaarde en elke meting staat in de gids over prestaties. Hoe het is gemeten
- 28.0KBKB gzip voor alle 16 exports
Het hele webingangspunt, geminificeerd. React is de enige peer.
- 0JS-frame-callbacks tijdens animatie
Een getal, een hoogte en een markering veranderen samen: de browser speelt alle 12 animaties af.
- 1React-commit per waardewijziging
MotionNumberrendert als de waarde verandert, nooit terwijl die rolt. - 11React-commits voor 3000 gestreamde tekens
MotionStreamvoegt tekens direct toe en verwerkt ze een paar keer per seconde in React.
01Makkelijkst
Eén tag en je data
Elk component werkt op zichzelf: geen provider, wrappercomponent of setup-aanroep. Collecties nemen items en renderItem, en je layout, teksten en stijlen blijven van jou.
- Importeer één component en geef een waarde mee. Dat is de hele integratie.
- Lijsten, tabs en pagers lezen je array; keys zijn standaard
item.id. - Tekst blijft echte tekst: hij loopt door, schaalt mee met het lettertype en is selecteerbaar.
<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} />;
Zes live componenten, en de ene regel code achter elk.
Voorbeeld voorbereiden…
02Snelst
De browser speelt het af. React blijft stil.
Op het web hoeft er geen animatielibrary te laden: componenten geven hun beweging aan de Web Animations API, dus een rollend getal of een paneel dat van grootte verandert, kost geen JavaScript per frame en geen React-render tijdens de beweging.
- 0 JS-frame-callbacks terwijl 12 animaties samen lopen.
- Eén React-commit per waardewijziging, niet één per frame.
- Gestreamde tekst: 11 React-commits voor 3000 tekens. Het voorbeeld hieronder telt zijn eigen renders.
Voorbeeld voorbereiden…
03Stabielst
Onderbreek alles. Niets springt.
Elke nieuwe waarde begint bij wat op het scherm staat en veren behouden hun snelheid, dus snelle klikken, datastoten en omkeringen zien er bedoeld uit. Als de beweging eindigt, blijft er niets draaien.
- Getallen vallen nooit uiteen: de overige cijfers schuiven op terwijl ze rollen.
- 200 nieuwe waarden met 5 ms ertussen: daarna 0 animaties over en de exacte eindtekst.
- Veilig onder React StrictMode. In een React Native-app op de achtergrond komt beweging direct in de eindtoestand.
Voorbeeld voorbereiden…
16 componenten, gegroepeerd per taak
Getallen en tekst, inhoud die van grootte verandert, selectie, lijsten, gebaren, overlays en voortgang. Elk heeft een live werkbank met de props ernaast.
Alle componentenGetallen en tekst
Inhoud en grootte
Selectie en pagina's
Lijsten
Gebaren
Overlays
Voortgang
Samengevoegd
Complete schermen die meerdere componenten combineren, elk met de instellingen buiten het voorbeeld.
Alle voorbeelden- ChatantwoordSuggesties die inklappen, een antwoord dat in een gelijkmatig tempo streamt en een statusregel die wisselt.
MotionStreamMotionListMotionSwapMotionHeight - AfrekenoverzichtAantallen, regeltotalen en het totaal rollen als de winkelwagen verandert; de couponmelding komt en gaat; betalen vraagt een bewuste druk.
MotionListMotionNumberMotionPresenceMotionHold - InboxFiltertabs met live tellingen, rijen die je kunt wegvegen en een lijst die het gat dicht.
MotionHighlightMotionListMotionSwipeMotionNumber - FotofeedVeeg door foto's, spring via miniaturen, open elke foto op volledig scherm en trek de details omhoog.
MotionPagerMotionHighlightMotionZoomMotionSheet
Dezelfde import op web en React Native
Metro kiest de native implementatie en webbundlers kiezen de DOM-versie. Elk platform speelt beweging af zoals het dat het best doet.
// 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} />
</>
);
}| Onderdeel | Web | React Native |
|---|---|---|
| Transforms en opacity | Web Animations API, veren analytisch bemonsterd | Animated met de native driver |
| Breedte en hoogte | Web Animations API | Animated met de JS-driver, omdat het layout is |
| Gestreamde tekst | Tekens toegevoegd en ingefade; een paar React-renders per seconde | Een echte Text, onthuld zonder fade |
| Sheets en zoom | Een native dialog in de bovenste laag | Een transparante Modal; de terugknop sluit hem |
Begin in twee minuten
Installeer, importeer één component, geef een waarde mee.
npm install @kkwaenggwari/animated-chorus