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.
npm install @kkwaenggwari/animated-chorusDiukur 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
MotionNumberdirender saat nilainya berubah, tidak pernah saat bergulir. - 11Commit React untuk 3000 karakter yang mengalir
MotionStreammenambahkan 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 komponenAngka dan teks
Konten dan ukuran
Pilihan dan halaman
Daftar
Gestur
Overlay
Progres
Dirangkai bersama
Layar lengkap yang menggabungkan beberapa komponen, masing-masing dengan pengaturan di luar contoh.
Semua contoh- Jawaban obrolanSaran yang terlipat, jawaban yang mengalir dengan tempo stabil, dan baris status yang bertukar.
MotionStreamMotionListMotionSwapMotionHeight - Ringkasan checkoutJumlah, total per baris, dan total keseluruhan bergulir saat keranjang berubah; pemberitahuan kupon masuk dan pergi; membayar memerlukan tahanan yang disengaja.
MotionListMotionNumberMotionPresenceMotionHold - Kotak masukTab filter dengan hitungan langsung, baris yang bisa digeser pergi, dan daftar yang menutup celahnya.
MotionHighlightMotionListMotionSwipeMotionNumber - Feed fotoGeser foto, lompat dengan thumbnail, buka foto mana pun di layar penuh, dan tarik detailnya ke atas.
MotionPagerMotionHighlightMotionZoomMotionSheet
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.
// 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} />
</>
);
}| Bagian | Web | React Native |
|---|---|---|
| Transform dan opasitas | Web Animations API, pegas disampel secara analitis | Animated dengan driver native |
| Lebar dan tinggi | Web Animations API | Animated dengan driver JS, karena ini tata letak |
| Teks mengalir | Karakter ditambahkan dan muncul perlahan; beberapa render React per detik | Text sungguhan, tampil tanpa efek pudar |
| Sheet dan zoom | dialog native di top layer | Modal transparan; tombol kembali menutupnya |
Mulai dalam dua menit
Instal, impor satu komponen, berikan nilai.
npm install @kkwaenggwari/animated-chorus