מדריכים · 08

ביצועים וניגון

איך Animated נמנע מעבודה בכל פריים, איך לבדוק באיזה מסלול אלמנט משתמש, ואיך נמדדו המספרים בדף הבית.

שלושה מסלולי ניגון

Animated בוחר מסלול לכל מאפיין. ה־API לא משתנה עם המסלול.

מסלולמתיעבודה לפריים
browserתנועה סופית של transform ו־opacity על אלמנטים של Animated.<tag>, כולל קפיציםאין, ב־JavaScript של העמוד
cssעקומות מדויקות שהדפדפן יכול לבטא עם keyframes משותפים של CSSאין, ב־JavaScript של העמוד
jsמשתני style רגילים, קלט, חישובים מותאמים וגבולות של רצפיםכתיבה אחת לכל ערך, בלי רינדור React

ערך אחד, אלמנטים רבים

נגזרות של ערך hook הן ביטויי calc(). עם scope, כתיבת משתנה אחת לפריים מניעה כל אלמנט במכל.

מכין את הדוגמה…

לבדוק את המסלול

inspect(element) מחזיר את ה־driver ואת סיבת ה־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

מתחיל מהפריים הראשון

כשהמשימה שמתחילה תנועה מעסיקה את ה־main thread, כמו hydration או commit גדול, התנועה מתחילה מחדש כשהעבודה הזו נגמרת במקום להופיע כבר מתקדמת. התחלה בעמוד מוסתר מסתיימת ברקע.

איך נמדדו המספרים בדף הבית

כל תרחיש רץ בעמוד חדש אחרי חימום אחד, עם שלוש דגימות מוקלטות, ומדווח החציון. זמן JavaScript הוא הזמן בתוך callbacks של 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

חיפוש

הקלידו כדי לחפש בתיעוד.