React · React Native · 16 komponen

Interaksi sulit, sudah jadi.

Animated Chorus adalah kumpulan komponen gerak untuk interaksi yang sulit dibuat benar secara manual: angka yang bergulir, teks yang mengalir, pertukaran yang mengubah ukuran, sheet, pager, aksi geser, dan daftar yang hanya menganimasikan yang berubah. Satu tag dan data Anda. Tanpa provider, tanpa penyiapan.

Instal
npm install @kkwaenggwari/animated-chorus

Diukur pada build ini

Chrome, 2026-09-28. Semua kondisi dan sampel ada di panduan performa. Cara mengukurnya

  • 28.0KBKB gzip untuk semua 16 ekspor

    Seluruh entri web, diminifikasi. React satu-satunya peer.

  • 0Callback frame JS saat beranimasi

    Sebuah angka, tinggi, dan sorotan berubah bersamaan: browser memutar semua 12 animasi.

  • 1Commit React per perubahan nilai

    MotionNumber dirender saat nilainya berubah, tidak pernah saat bergulir.

  • 11Commit React untuk 3000 karakter yang mengalir

    MotionStream menambahkan karakter secara langsung dan memasukkannya ke React beberapa kali per detik.

01Paling mudah

Satu tag dan data Anda

Setiap komponen bekerja sendiri: tanpa provider, komponen pembungkus, atau panggilan penyiapan. Koleksi menerima items dan renderItem, dan tata letak, teks, serta gaya Anda tetap milik Anda.

  • Impor satu komponen dan berikan nilai. Itu seluruh integrasinya.
  • Daftar, tab, dan pager membaca array Anda; key bawaannya item.id.
  • Teks tetap teks sungguhan: bisa membungkus baris, mengikuti ukuran font, dan bisa dipilih.
  • <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} />;

Enam komponen langsung, dan satu baris kode di balik masing-masing.

Menyiapkan contoh…

02Paling cepat

Browser yang memutar. React tetap diam.

Di web tidak ada pustaka animasi yang perlu dimuat: komponen menyerahkan geraknya ke Web Animations API, jadi angka yang bergulir atau panel yang berubah ukuran tidak memakan JavaScript per frame maupun render React saat bergerak.

  • 0 callback frame JS saat 12 animasi berjalan bersamaan.
  • Satu commit React per perubahan nilai, bukan satu per frame.
  • Teks mengalir: 11 commit React untuk 3000 karakter. Contoh di bawah menghitung render-nya sendiri.

Menyiapkan contoh…

03Paling stabil

Interupsi apa saja. Tak pernah melompat.

Setiap nilai baru dimulai dari yang ada di layar dan pegas mempertahankan kecepatannya, sehingga klik cepat, lonjakan data, dan pembalikan arah tampak disengaja. Saat gerak selesai, tidak ada yang tersisa berjalan.

  • Angka tak pernah terpecah: digit yang tersisa bergeser sambil bergulir.
  • 200 nilai baru berjarak 5 ms: setelahnya tersisa 0 animasi dan teks akhir yang tepat.
  • Aman di React StrictMode. Di aplikasi React Native yang berjalan di latar belakang, gerak langsung ke keadaan akhirnya.

Menyiapkan contoh…

16 komponen, dikelompokkan menurut tugasnya

Angka dan teks, konten yang berubah ukuran, pilihan, daftar, gestur, overlay, dan progres. Masing-masing punya meja kerja langsung dengan props di sampingnya.

Semua komponen

Impor yang sama di web dan React Native

Metro memilih implementasi native dan bundler web memilih yang DOM. Setiap platform memutar gerak dengan cara terbaiknya.

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} />
    </>
  );
}
BagianWebReact Native
Transform dan opasitasWeb Animations API, pegas disampel secara analitisAnimated dengan driver native
Lebar dan tinggiWeb Animations APIAnimated dengan driver JS, karena ini tata letak
Teks mengalirKarakter ditambahkan dan muncul perlahan; beberapa render React per detikText sungguhan, tampil tanpa efek pudar
Sheet dan zoomdialog native di top layerModal transparan; tombol kembali menutupnya

Mulai dalam dua menit

Instal, impor satu komponen, berikan nilai.

npm install @kkwaenggwari/animated-chorus

Cari

Ketik untuk mencari dokumentasi.