Install
$ agentstack add skill-skilld-dev-vue-ecosystem-skills-motion-v-skilld ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
motiondivision/motion-vue motion-v@2.2.1
Tags: latest: 2.2.1
References: [Docs](./references/docs/_INDEX.md)
API Changes
This section documents version-specific API changes — prioritize recent major/minor releases.
- BREAKING:
focus,hover,press,inViewshorthand props — removed in v2.0.0-beta.1. UsewhileFocus,whileHover,whilePress, andwhileInViewfor animations, and full event handlers (e.g.@hoverStart,@pressStart) for logic [source](./references/releases/v2.0.0-beta.1.md)
- NEW:
v-motiondirective — new in v2.0.0-beta.1, enables declarative animations on any element without requiring a `` component wrapper [source](./references/releases/v2.0.0-beta.1.md)
- BREAKING: ESM-only — v2.0.0-beta.1 dropped CommonJS support. The package now only ships ESM (
.mjs) exports [source](./references/releases/v2.0.0-beta.1.md)
- NEW:
MotionPlugin— new in v2.0.0-beta.1, a Vue plugin for globalv-motionand custom preset directive registration
- NEW:
createPresetDirective()— new in v2.0.0-beta.1, allows creating reusable animation directives with baked-in motion options
- BREAKING:
AnimatePresencelazy discovery — v2.0.0-beta.1 refactored to usedata-apattribute for lazy discovery instead of eager registration [source](./references/releases/v2.0.0-beta.1.md)
- DEPRECATED:
staggerChildrenandstaggerDirection— deprecated in v1.4.0 in favor of using thestagger()utility within thetransitionprop [source](./references/releases/v1.4.0.md)
- NEW:
stagger()utility — correctly handles staggering for newly-entering siblings alongside existing ones since v1.7.0 [source](./references/releases/v1.7.0.md)
- NEW:
useTransformoutput maps — supports providing multiple output value maps for complex coordinate transformations since v1.9.0 [source](./references/releases/v1.9.0.md)
- NEW:
Reorderauto-scrolling — supports automatic parent container scrolling when aReorder.Itemis dragged to the edges since v1.8.0 [source](./references/releases/v1.8.0.md)
- NEW:
useScrollVueInstance support —containerandtargetoptions now acceptVueInstance(ref to component) since v1.6.0 [source](./references/releases/v1.6.0.md)
- NEW:
useInViewrootoption — now acceptsMaybeReffor dynamic root element assignment since v1.6.0 [source](./references/releases/v1.6.0.md)
- NEW:
AnimatePresencedirect children — supports multiple directmotioncomponents as children since v1.10.0 [source](./references/releases/v1.10.0.md)
- NEW:
delayInMs— exported as a standalone utility function for time-based animation delays since v1.6.0 [source](./references/releases/v1.6.0.md)
Also changed: useTransform reactive update fix (v1.2.1) · sequence at relative start (v1.3.0) · AnimatePresence custom prop fix (v1.3.0) · motionGlobalConfig exported (v2.0.0-beta.1) · FeatureBundle tree-shaking architecture (v2.0.0-beta.1)
Best Practices
- Use
LazyMotion+mcomponent instead ofmotionto reduce the initial bundle from ~34kb to ~6kb — loaddomAnimation(+18kb) for variants/exit/gestures ordomMax(+28kb) when you also need drag and layout animations. Add:strict="true"to catch accidentalmotionimports insideLazyMotionat dev time [source](./references/docs/docs/vue-lazymotion.md#usage)
- Render live motion value output with `
rather than syncing to Vue state —RowValuewrites toinnerHTML` directly and bypasses Vue's reactivity cycle, keeping fast-changing values off the render path [source](./references/docs/docs/vue-animation.md#animate-content)
- Set
reducedMotion="user"onMotionConfigat the app root — the default is"never", meaning transform and layout animations run regardless of the OS accessibility setting unless you explicitly opt in [source](./references/docs/docs/vue-motion-config.md#reducedmotion)
- For layout animations, apply changing CSS to
:style(not:animate) and let thelayoutprop handle the transition — if the value is placed in:animate, Motion's FLIP measurement will conflict with it [source](./references/docs/docs/vue-layout-animations.md#usage)
- Set
borderRadiusandboxShadowvia:style(not CSS classes) onlayout-animated elements — Motion auto-corrects scale distortion on these properties only when they are set as inline style motion values [source](./references/docs/docs/vue-layout-animations.md#scale-correction)
- Add
layoutScrollto scrollable container ancestors andlayoutRootto fixed-position ancestors of layout-animated elements — without these props, Motion measures child positions incorrectly when scroll offset or viewport offset is non-zero [source](./references/docs/docs/vue-layout-animations.md#animating-within-scrollable-element)
- Never place
v-ifonAnimatePresenceitself — if it unmounts, it cannot intercept the exit of its children. The conditional must be on the direct child:
[source](./references/docs/docs/vue-animate-presence.md#exit-animations-aren-t-working)
- Use dynamic variants with the
customprop for per-element stagger rather than computing delay in reactive Vue state — pass:custom="index"to eachmotioncomponent and resolve the delay inside the variant function, keeping stagger logic declarative and allocation-free [source](./references/docs/docs/vue-animation.md#dynamic-variants)
- Prefer
useMotionValueover CSS variable animation for values used across many children — animating a CSS variable always triggers paint on every frame, while aMotionValuepassed to:styleruns through Motion's optimised DOM renderer without touching the Vue render cycle [source](./references/docs/docs/vue-animation.md#animating-css-variables)
- Use the
v-motiondirective (new in v2.0.0-beta.1) to add animation to any native HTML or SVG element without a wrapper `component — register globally viaapp.use(MotionPlugin)or per-component viacreateMotionDirective. Register reusable animation presets via thepresetsoption to create project-wide shorthand directives likev-fade-in` [source](./references/docs/docs/vue-directive.md#presets)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: skilld-dev
- Source: skilld-dev/vue-ecosystem-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.