React · React Native · 16 компонентів
Складні взаємодії — вже готові.
Animated Chorus — набір компонентів анімації для взаємодій, які важко зробити правильно вручну: числа, що прокручуються, потоковий текст, заміни зі зміною розміру, шторки, пейджери, дії за свайпом і списки, які анімують лише змінене. Один тег і ваші дані. Без provider і без налаштування.
npm install @kkwaenggwari/animated-chorusВиміряно на цій збірці
Chrome, 2026-09-28. Усі умови й виміри — у посібнику з продуктивності. Як вимірювали
- 28.0KBKB gzip за всі 16 експортів
Уся веб-точка входу, мініфікована. Єдина peer-залежність — React.
- 0Колбеків кадрів JS під час анімації
Число, висота й підсвічування змінюються разом: браузер відтворює всі 12 анімації.
- 1Коміт React на зміну значення
MotionNumberперемальовується, коли змінюється значення, і ніколи — поки воно прокручується. - 11Комітів React на 3000 потокових символів
MotionStreamдодає символи напряму й передає їх у React кілька разів на секунду.
01Найпростіше
Один тег і ваші дані
Кожен компонент працює сам по собі: без provider, компонента-обгортки й виклику налаштування. Колекції приймають items і renderItem, а розкладка, тексти й стилі лишаються вашими.
- Імпортуйте компонент і передайте значення. Це вся інтеграція.
- Списки, вкладки й пейджери читають ваш масив; ключі типово —
item.id. - Текст лишається справжнім текстом: переноситься, масштабується разом зі шрифтом і виділяється.
<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} />;
Шість живих компонентів і один рядок коду за кожним.
Підготовка прикладу…
02Найшвидше
Відтворює браузер. React стоїть на місці.
У вебі не треба завантажувати бібліотеку анімації: компоненти передають рух Web Animations API, тож число, що прокручується, чи панель, що змінює розмір, не коштують ні JavaScript на кадр, ні рендеру React, поки рухаються.
- 0 колбеків кадрів JS, поки одночасно йдуть 12 анімації.
- Один коміт React на зміну значення, а не на кожен кадр.
- Потоковий текст: 11 комітів React на 3000 символів. Приклад нижче рахує власні рендери.
Підготовка прикладу…
03Найнадійніше
Переривайте що завгодно. Ніщо не стрибає.
Кожне нове значення починається з того, що на екрані, а пружини зберігають швидкість, тож швидкі натискання, сплески даних і розвороти виглядають навмисними. Коли рух закінчується, нічого не лишається запущеним.
- Числа ніколи не розвалюються: решта розрядів зсувається, поки прокручується.
- 200 нових значень з інтервалом 5 мс: після них лишилося анімацій — 0, і підсумковий текст точний.
- Безпечно в React StrictMode. У фоновому застосунку React Native рух одразу приходить у кінцевий стан.
Підготовка прикладу…
16 компонентів, згрупованих за завданнями
Числа й текст, вміст зі змінним розміром, вибір, списки, жести, оверлеї та прогрес. Кожен має живий стенд із props збоку.
Усі компонентиЧисла й текст
Вміст і розмір
Вибір і сторінки
Списки
Жести
Оверлеї
Прогрес
Разом
Готові екрани з кількох компонентів, у кожного налаштування винесено за межі прикладу.
Усі приклади- Відповідь у чатіПідказки, що згортаються, відповідь, що надходить потоком у рівному темпі, і рядок статусу, що змінюється.
MotionStreamMotionListMotionSwapMotionHeight - Підсумок замовленняКількості, суми рядків і підсумок прокручуються, коли змінюється кошик; повідомлення про купон з’являється й іде; оплата потребує свідомого утримання.
MotionListMotionNumberMotionPresenceMotionHold - ВхідніВкладки-фільтри з живими лічильниками, рядки, які можна змахнути, і список, що закриває проміжок.
MotionHighlightMotionListMotionSwipeMotionNumber - ФотострічкаГортайте фотографії, переходьте мініатюрами, відкривайте будь-яке фото на весь екран і витягуйте його подробиці.
MotionPagerMotionHighlightMotionZoomMotionSheet
Один імпорт у вебі та React Native
Metro вибирає нативну реалізацію, а веб-збирачі — реалізацію для DOM. Кожна платформа відтворює рух так, як у неї виходить найкраще.
// 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} />
</>
);
}| Частина | Веб | React Native |
|---|---|---|
| Transform і opacity | Web Animations API, пружини обчислюються аналітично | Animated із нативним драйвером |
| Ширина й висота | Web Animations API | Animated із драйвером JS, бо це розкладка |
| Потоковий текст | Символи додаються й плавно з’являються; кілька рендерів React на секунду | Справжній Text, з’являється без згасання |
| Шторки й збільшення | Нативний dialog у верхньому шарі | Прозорий Modal; закривається кнопкою «Назад» |
Почніть за дві хвилини
Встановіть, імпортуйте компонент, передайте значення.
npm install @kkwaenggwari/animated-chorus