React · React Native · 16 komponenter

Svære interaktioner, færdige.

Animated Chorus er et sæt bevægelseskomponenter til de interaktioner, der er svære at få rigtigt i hånden: rullende tal, streamet tekst, skift, der ændrer størrelse, sheets, pagers, swipe-handlinger og lister, der kun animerer det, der ændrede sig. Ét tag og dine data. Ingen provider, ingen opsætning.

Installér
npm install @kkwaenggwari/animated-chorus

Målt på dette build

Chrome, 2026-09-28. Alle betingelser og målinger står i guiden om ydeevne. Sådan blev det målt

  • 28.0KBKB gzip for alle 16 exports

    Hele webindgangspunktet, minificeret. React er den eneste peer.

  • 0JS-frame-callbacks under animation

    Et tal, en højde og en markering ændrer sig samtidig: browseren afspiller alle 12 animationer.

  • 1React-commit pr. værdiændring

    MotionNumber renderes, når værdien ændrer sig, aldrig mens den ruller.

  • 11React-commits for 3000 streamede tegn

    MotionStream tilføjer tegn direkte og fører dem ind i React nogle få gange i sekundet.

01Nemmest

Ét tag og dine data

Hver komponent virker alene: ingen provider, wrapper-komponent eller opsætningskald. Samlinger tager items og renderItem, og dit layout, dine tekster og stilarter forbliver dine.

  • Importér én komponent, og giv en værdi. Det er hele integrationen.
  • Lister, faner og pagers læser dit array; nøgler er som standard item.id.
  • Tekst forbliver rigtig tekst: den ombrydes, skaleres med skrifttypen og kan markeres.
  • <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} />;

Seks livekomponenter og den ene kodelinje bag hver.

Forbereder eksemplet…

02Hurtigst

Browseren afspiller. React står stille.

På nettet er der intet animationsbibliotek at indlæse: komponenterne giver bevægelsen videre til Web Animations API, så et rullende tal eller et panel, der ændrer størrelse, koster intet JavaScript pr. frame og ingen React-rendering, mens det bevæger sig.

  • 0 JS-frame-callbacks, mens 12 animationer kører samtidig.
  • Én React-commit pr. værdiændring, ikke én pr. frame.
  • Streamet tekst: 11 React-commits for 3000 tegn. Eksemplet nedenfor tæller sine egne renderinger.

Forbereder eksemplet…

03Mest stabil

Afbryd hvad som helst. Intet hopper.

Hver ny værdi starter fra det, der er på skærmen, og fjedre bevarer deres hastighed, så hurtige klik, datastød og vendinger ser bevidste ud. Når bevægelsen slutter, kører intet videre.

  • Tal splitter aldrig: de resterende pladser glider, mens de ruller.
  • 200 nye værdier med 5 ms mellemrum: 0 animationer tilbage bagefter og den præcise sluttekst.
  • Sikker under React StrictMode. I en React Native-app i baggrunden lander bevægelsen i sin sluttilstand.

Forbereder eksemplet…

16 komponenter grupperet efter opgave

Tal og tekst, indhold, der ændrer størrelse, valg, lister, gestus, overlays og fremskridt. Hver har en live-arbejdsbænk med sine props ved siden af.

Alle komponenter

Samme import på nettet og i React Native

Metro vælger native-implementeringen, og webbundlere vælger DOM-versionen. Hver platform afspiller bevægelse, som den gør det bedst.

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} />
    </>
  );
}
DelWebReact Native
Transforms og opacityWeb Animations API, fjedre samplet analytiskAnimated med native driver
Bredde og højdeWeb Animations APIAnimated med JS-driver, fordi det er layout
Streamet tekstTegn tilføjes og tones ind; nogle få React-renderinger i sekundetEn rigtig Text, vist uden toning
Sheets og zoomEn native dialog i det øverste lagEn gennemsigtig Modal; tilbageknappen lukker den

Kom i gang på to minutter

Installér, importér én komponent, giv en værdi.

npm install @kkwaenggwari/animated-chorus

Søg

Skriv for at søge i dokumentationen.