React · React Native · 16 componente

Interacțiuni grele, rezolvate.

Animated Chorus este un set de componente de mișcare pentru interacțiunile greu de făcut corect de mână: numere care se rotesc, text transmis în flux, schimbări care se redimensionează, sheet-uri, pagere, acțiuni prin glisare și liste care animă doar ce s-a schimbat. Un tag și datele dumneavoastră. Fără provider, fără configurare.

Instalare
npm install @kkwaenggwari/animated-chorus

Măsurat pe această versiune

Chrome, 2026-09-28. Toate condițiile și eșantioanele sunt în ghidul de performanță. Cum s-a măsurat

  • 28.0KBKB gzip pentru toate cele 16 exporturi

    Întregul punct de intrare web, minimizat. React este singurul peer.

  • 0Callback-uri de cadru JS în timpul animației

    Un număr, o înălțime și un evidențiator se schimbă împreună: browserul redă toate cele 12 animații.

  • 1Commit React per schimbare de valoare

    MotionNumber se randează când se schimbă valoarea, niciodată cât se rotește.

  • 11Commit-uri React pentru 3000 caractere transmise în flux

    MotionStream adaugă caracterele direct și le integrează în React de câteva ori pe secundă.

01Cel mai simplu

Un tag și datele dumneavoastră

Fiecare componentă funcționează singură: fără provider, componentă de înveliș sau apel de configurare. Colecțiile primesc items și renderItem, iar layoutul, textul și stilurile rămân ale dumneavoastră.

  • Importați o componentă și transmiteți o valoare. Asta e toată integrarea.
  • Listele, filele și pagerele vă citesc tabloul; key-urile sunt implicit item.id.
  • Textul rămâne text real: se încadrează pe rânduri, se scalează cu fontul și poate fi selectat.
  • <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} />;

Șase componente live și linia de cod din spatele fiecăreia.

Se pregătește exemplul…

02Cel mai rapid

Browserul redă. React stă pe loc.

Pe web nu trebuie încărcată nicio bibliotecă de animație: componentele își predau mișcarea către Web Animations API, așa că un număr care se rotește sau un panou care se redimensionează nu costă JavaScript per cadru și nici randare React cât se mișcă.

  • 0 callback-uri de cadru JS cât rulează împreună 12 animații.
  • Un commit React per schimbare de valoare, nu unul per cadru.
  • Text în flux: 11 commit-uri React pentru 3000 caractere. Exemplul de mai jos își numără propriile randări.

Se pregătește exemplul…

03Cel mai stabil

Întrerupeți orice. Nu sare niciodată.

Fiecare valoare nouă pornește de la ce e pe ecran, iar arcurile își păstrează viteza, așa că clicurile rapide, rafalele de date și inversările par intenționate. Când mișcarea se încheie, nu mai rulează nimic.

  • Numerele nu se despart niciodată: cifrele rămase alunecă în timp ce se rotesc.
  • 200 valori noi la 5 ms una de alta: după aceea rămân 0 animații, iar textul final este exact.
  • Sigur sub React StrictMode. Într-o aplicație React Native în fundal, mișcarea se așază la starea finală.

Se pregătește exemplul…

16 componente, grupate după treaba pe care o fac

Numere și text, conținut care își schimbă mărimea, selecție, liste, gesturi, suprapuneri și progres. Fiecare are un banc de lucru live cu props alături.

Toate componentele

Același import pe web și în React Native

Metro alege implementarea nativă, iar bundlerele web pe cea DOM. Fiecare platformă redă mișcarea în felul care îi reușește cel mai bine.

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} />
    </>
  );
}
ParteWebReact Native
Transformări și opacitateWeb Animations API, arcuri eșantionate analiticAnimated cu driverul nativ
Lățime și înălțimeWeb Animations APIAnimated cu driverul JS, pentru că e layout
Text în fluxCaractere adăugate și apărute treptat; câteva randări React pe secundăUn Text real, afișat fără estompare
Sheet-uri și zoomUn dialog nativ în stratul superiorUn Modal transparent; butonul înapoi îl închide

Începeți în două minute

Instalați, importați o componentă, transmiteți o valoare.

npm install @kkwaenggwari/animated-chorus

Căutare

Tastați pentru a căuta în documentație.