built-in visibility and layout transitions first, then a single animated value, then a shared transition object when several values must move together, then gesture-level or imperative APIs when the framework cannot express the motion.
Review procedure
Identify the visual job: show/hide, one value, coordinated values, content swap, size change, or gesture-driven motion.
Choose the smallest API from the table below.
Check lifecycle semantics: should hidden content leave composition, keep focus/state, or only become transparent?
Check identity: render each
AnimatedContent
branch from its content-lambda target, then choose
contentKey
by visual shape rather than payload churn.
Check performance: keep frame-rate animation values as
State
and read them in layout/draw block modifiers when possible.
Escalate to
Animatable
or lower-level APIs only when target-state animation cannot express the motion.
Finish when the chosen API matches the visual and lifecycle needs, any content-swap identity is preserved, no simpler API fits, and the relevant behavior has been verified.
Pick the smallest animation API
Show more
Installs
930
Repository
chrisbanes/skills
GitHub Stars
979
First Seen
May 21, 2026
Security Audits
Gen Agent Trust Hub
Pass
Socket
Pass
Snyk
Pass