Руководства · 08

Производительность и воспроизведение

Как Animated избегает работы на каждом кадре, как проверить, какой путь использует элемент, и как измерялись цифры на главной странице.

Три пути воспроизведения

Animated выбирает путь для каждого свойства. API от пути не меняется.

ПутьКогдаРабота за кадр
browserКонечное движение transform и opacity на элементах Animated.<tag>, включая пружиныНет в JavaScript страницы
cssТочные кривые, которые браузер может выразить общими CSS keyframesНет в JavaScript страницы
jsОбычные переменные style, ввод, собственные вычисления и границы последовательностейОдна запись на значение, без рендера React

Одно значение, много элементов

Производные от значения хука — выражения calc(). Со scope одна запись переменной за кадр управляет всеми элементами контейнера.

Подготовка примера…

Проверка пути

inspect(element) возвращает драйвер и причину fallback для каждого анимируемого свойства во время реального запуска.

debug.js
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 animations0.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 element0.13 ms

2026-09-28 · Chrome 153.0.8010.52 (headless) · Windows_NT x64 · Intel(R) Core(TM) i7-14700K

Поиск

Начните вводить, чтобы искать в документации.