Documentation
Angular Movement documentation
Guides for animating Angular with directives and signals, the stability policy, and the generated API reference.
Angular Movement is a motion library for Angular 21 and 22 — declarative directives, state-driven animation and Web Animations API playback.
Read guide →Start hereGet startedInstall Angular Movement, optionally configure it once, and animate your first element.
Read guide →Start hereChoose the right toolCSS, Angular's native animate.enter and animate.leave, Angular Movement and raw WAAPI all have a place. Use the simplest one that does the job.
Read guide →GuidesAnimate on enter and leaveAnimate an element when Angular creates it, shape the timing, and let it finish leaving before it is removed.
Read guide →GuidesHover, tap and focus feedbackGive buttons, links and cards hover, press and focus feedback that behaves correctly on touch, and reveal content as it scrolls into view.
Read guide →GuidesReactive animation and variantsAnimate an element between states whenever a signal changes, with a single target or with named variants.
Read guide →GuidesPresence: animate things leavingKeep a view or a keyed list row mounted until its leave animation finishes, including nested children and rows that return mid-exit.
Read guide →GuidesStagger, scroll and loopsCoordinate sibling delays by DOM order, bind motion to scroll position, and repeat a short animation.
Read guide →GuidesMotion values and imperative animationDerive continuous motion from signals with moveValue, moveTransform and moveSpringValue, or animate an element you hold a reference to with MoveAnimator.
Read guide →GuidesExperimental: layout and dragLayout transitions, drag gestures, boolean targets and smooth scrolling are experimental — what they do, and why they have dedicated playgrounds instead of embedded ones.
Read guide →GuidesLayout motionAnimate reflow, resizing and shared-element handovers from application state — what the experimental moveLayout contract guarantees, what it measures, and what it does not support.
Read guide →ConceptsChoose an APISeveral Movement APIs overlap on purpose. This page says which to pick, and which ones play once versus follow state.
Read guide →ConceptsAPI overview and stabilityHow the API is organised, which parts are stable or experimental, and which directives read their inputs once.
Read guide →ConceptsAngular patternsThe patterns real apps reach for most — hover and press feedback, reveal-on-scroll, staggered lists, imperative animation — and how Movement behaves alongside the Angular features you already use.
Read guide →ConceptsPresetsNamed animations for common product UI moments. Use them when the desired motion is already known and you do not need custom state logic.
Read guide →ConceptsAccessibility and troubleshootingHow Movement treats reduced motion, SSR and hydration, and what to check when an animation does not behave.
Read guide →AdoptMigrate from legacy animationsAssess an existing app, then migrate trigger by trigger. Some triggers convert cleanly, some need design decisions, and some should stay in CSS.
Read guide →AdoptAI agent setupGive Claude Code (or any MCP-compatible agent) ground-truth access to every directive, input and preset — no more guessed selectors.
Read guide →ReferenceAPI reference73 public symbols generated from the TypeScript declarations of the library.
Read guide →ReferenceMoveAnimateDirectivePlays an entrance when the element is created and, inside movePresence, a leave before it is removed — the one-attribute [move] / [moveAnimate] shorthand.
Read guide →ReferenceMoveAnimationDirectiveFramer Motion-style state animation: give it initial, animate and optional exit states, and it animates to animate whenever the bound object changes.
Read guide →ReferenceMoveDragDirectiveMakes the element draggable with pointer events, with optional axis lock, constraints, snap points and momentum.
Read guide →ReferenceMoveEnterDirectivePlays a preset or keyframes once, when the element is created.
Read guide →ReferenceMoveFocusDirectivePlays while the element has keyboard focus and reverses when focus leaves.
Read guide →ReferenceMoveHoverDirectivePlays while a hover-capable pointer is over the element, and reverses when it leaves.
Read guide →ReferenceMoveInViewDirectivePlays when the element scrolls into view, once or every time, using an IntersectionObserver.
Read guide →ReferenceMoveLayoutDirectiveAnimates the element from its previous position and size to its new layout (FLIP), including shared-element transitions by moveLayoutId.
Read guide →ReferenceMoveLeaveDirectivePlays a preset or keyframes before the element is removed; inside movePresence the view waits for it to finish.
Read guide →ReferenceMoveLoopDirectiveRepeats a preset or keyframes — endlessly or a set number of times, restarting or reversing each cycle.
Read guide →ReferenceMoveParallaxDirectiveMoves the element at a different speed from the scroll, deriving the travel from its size and the viewport.
Read guide →ReferenceMovePresenceDirectiveStructural directive that keeps its view mounted until every registered leave animation inside it has finished.
Read guide →ReferenceMovePresenceForDirectiveKeyed-list counterpart to movePresence.
Read guide →ReferenceMoveScrollDirectiveScrubs keyframes with scroll position between two offsets, and exposes the progress as a signal.
Read guide →ReferenceMoveSmoothScrollDirectiveDirective that enables smooth scrolling on a specific scrollable container.
Read guide →ReferenceMoveStaggerDirectiveGives each animated child a delay from its DOM order, from the first, last or centre child, so lists cascade without index bookkeeping.
Read guide →ReferenceMoveTapDirectivePlays while the element is pressed with a pointer and reverses on release — press feedback that also works on touch, where there is no hover.
Read guide →ReferenceMoveTargetDirectivePlays keyframes or a preset on its host when the bound boolean turns true, and plays them in reverse when it turns false.
Read guide →ReferenceMoveTextDirectiveSplits the host's text content into animated spans/words.
Read guide →ReferenceMoveTriggerDirectivePlays keyframes on its host when a boolean flips to true, and resets when it flips back — the declarative trigger side of moveTarget/moveTrigger.
Read guide →ReferenceMoveVariantsDirectiveAnimates between named states: bind moveVariant to a signal and the element animates whenever the name changes.
Read guide →ReferenceMoveAnimatorThe supported way to animate from TypeScript — sequencing phases, reacting to a server response, driving a node the template does not own, View Transitions.
Read guide →ReferenceSmoothScrollServiceSmoothScrollService — Lenis-inspired smooth scroll for Angular.
Read guide →ReferencemoveIconBounceReturns keyframes for a subtle bounce animation on an icon.
Read guide →ReferencemoveIconPulseReturns keyframes for a subtle pulse animation on an icon.
Read guide →ReferencemoveIconRotateReturns keyframes for a subtle rotate animation on an icon.
Read guide →ReferencemoveIconShakeReturns keyframes for a subtle shake animation on an icon.
Read guide →ReferencemovePathDrawReturns keyframes for a path-drawing animation.
Read guide →ReferencemoveSpringValueCreates a signal that follows a source signal with spring physics, for values that should settle instead of jump.
Read guide →ReferencemoveTimeToMsConverts a MoveTime to milliseconds: moveTimeToMs('0.08s') === 80, moveTimeToMs(80) === 80.
Read guide →ReferencemoveTransformDerives a signal by mapping another signal's value from one range onto another (clamped by default), like Framer Motion's useTransform.
Read guide →ReferencemoveValueCreates a writable signal meant to drive motion, to bind into animation inputs or derive with moveTransform.
Read guide →ReferenceprovideMovementSets library-wide animation defaults.
Read guide →ReferenceAnimationControlsThe universal handle every animation returns, whether it comes from a directive internally or from MoveAnimator.animate().
Read guide →ReferenceMoveAnimateOptionsOptions for one imperative animation — the same vocabulary MoveTriggerDirective.play() takes.
Read guide →ReferenceMoveAnimationConfigStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveDragEventExperimental API — may change significantly between minor versions.
Read guide →ReferenceMoveDragSnapPointExperimental API — may change significantly between minor versions.
Read guide →ReferenceMoveKeyframePropertiesStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveKeyframeStateStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMovePresenceForContextStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMovePresetDefinitionStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMovePropertyTransitionStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveRepeatOptionsStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveSpringStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveSpringValueConfigStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveTransformOptionsStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMovementConfigThe resolved, library-wide animation defaults — what MOVEMENT_CONFIG injects.
Read guide →ReferenceMoveAnimationTargetAnything MoveAnimator can animate: an element, or the ElementRef a viewChild() already gives you.
Read guide →ReferenceMoveDragAxisExperimental API — may change significantly between minor versions.
Read guide →ReferenceMoveDragConstraintsExperimental API — may change significantly between minor versions.
Read guide →ReferenceMoveKeyframesStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMovePresenceForMode'sync' — entering and leaving items animate at the same time.
Read guide →ReferenceMovePresenceForTrackByStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMovePresetNamed animation presets.
Read guide →ReferenceMoveRepeatType'loop' restarts from the first keyframe each cycle.
Read guide →ReferenceMoveStaggerDirectionStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveStateValueStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveTimeA duration or delay.
Read guide →ReferenceMoveTransformValueStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveTransitionConfigStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveValueStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveValuePairStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveVariantStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMoveVariantOrchestration'beforeChildren' plays the parent first and offsets its children by the parent's duration.
Read guide →ReferenceMoveVariantStateStable API — covered by semantic-versioning guarantees.
Read guide →ReferenceMovementConfigInputWhat provideMovement() accepts: any subset of MovementConfig, with duration and delay taking a MoveTime (320, '320ms', '0.32s').
Read guide →ReferenceMOVEMENT_CONFIGInjection token for the resolved library-wide defaults; override them with provideMovement(config).
Read guide →ReferenceMOVEMENT_DEFAULTSThe built-in timing defaults (duration, easing, delay) used when nothing is configured.
Read guide →ReferenceMOVEMENT_DIRECTIVESAll directives the library ships (every MOVEMENT_STABLE_DIRECTIVES plus every MOVEMENT_EXPERIMENTAL_DIRECTIVES member), ready to spread into a standalone compo…
Read guide →ReferenceMOVEMENT_EXPERIMENTAL_DIRECTIVESEvery experimental directive — may change or be removed in any 1.x minor.
Read guide →ReferenceMOVEMENT_STABLE_DIRECTIVESEvery stable directive — none of these change behavior or shape outside a major version.
Read guide →ReferenceMOVE_PRESETSConstant reference for MOVE_PRESETS.
Read guide →