Посібники · 08
Продуктивність і відтворення
Як Animated уникає роботи на кожному кадрі, як перевірити, який шлях використовує елемент, і як вимірювалися числа на головній сторінці.
Три шляхи відтворення
Animated обирає шлях для кожної властивості. API від шляху не змінюється.
| Шлях | Коли | Робота за кадр |
|---|---|---|
| browser | Скінченний рух transform і opacity на елементах Animated.<tag>, зокрема пружини | Немає в JavaScript сторінки |
| css | Точні криві, які браузер може виразити спільними CSS keyframes | Немає в JavaScript сторінки |
| js | Звичайні змінні style, введення, власні обчислення й межі послідовностей | Один запис на значення, без рендеру React |
Одне значення, багато елементів
Похідні від значення хука — вирази calc(). Зі scope один запис змінної за кадр керує всіма елементами контейнера.
Підготовка прикладу…
Перевірка шляху
inspect(element) повертає драйвер і причину fallback для кожної анімованої властивості під час реального запуску.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsСтарт із першого кадру
Коли завдання, що запускає рух, займає головний потік — наприклад, гідратація чи великий коміт, — рух перезапускається після закінчення цієї роботи, а не з’являється вже просунутим. Старт на прихованій сторінці завершується у фоні.
Як вимірювалися числа на головній
Кожен сценарій запускався на новій сторінці після одного прогріву, із трьома записаними вимірами; наводиться медіана. Час JavaScript — це час усередині колбеків animation frame, поки триває рух. Він не враховує style, layout і paint, які браузер виконує за будь-якого підходу, тож це не міра загального навантаження CPU чи частоти кадрів.
Відтворення браузером не робить layout, paint, compositing і пам’ять безкоштовними. Вимірюйте реальний екран на пристроях, які ви підтримуєте.
| Сценарій | Умови | Результат |
|---|---|---|
| 400 Animated.div elements move translateX and fade in (timing, 1800 ms) | seed/pose/tempo on Animated.div; 800 browser animations | 0.00 ms |
| One useAnimated value drives 10,000 elements in ordinary style (loop, 1200 ms) | transform and opacity as calc() of one CSS variable written on a scope element | 0.13 ms |
2026-09-28 · Chrome 153.0.8010.52 (headless) · Windows_NT x64 · Intel(R) Core(TM) i7-14700K