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 збоку.

Усі компоненти

Один імпорт у вебі та React Native

Metro вибирає нативну реалізацію, а веб-збирачі — реалізацію для DOM. Кожна платформа відтворює рух так, як у неї виходить найкраще.

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} />
    </>
  );
}
ЧастинаВебReact Native
Transform і opacityWeb Animations API, пружини обчислюються аналітичноAnimated із нативним драйвером
Ширина й висотаWeb Animations APIAnimated із драйвером JS, бо це розкладка
Потоковий текстСимволи додаються й плавно з’являються; кілька рендерів React на секундуСправжній Text, з’являється без згасання
Шторки й збільшенняНативний dialog у верхньому шаріПрозорий Modal; закривається кнопкою «Назад»

Почніть за дві хвилини

Встановіть, імпортуйте компонент, передайте значення.

npm install @kkwaenggwari/animated-chorus

Пошук

Почніть вводити, щоб шукати в документації.