• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

humanspeak / svelte-motion
69%
main: 3%

Build:
Build:
LAST BUILD BRANCH: fix/animate-transform-persist
DEFAULT BRANCH: main
Repo Added 21 Feb 2025 05:35AM UTC
Token dfp0FoWB2YexHinOlPYfkZTafaIHIH3ah regen
Build 110 Last
Files 229
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH fix/animate-transform-persist
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • chore/deps-motion-12.39.0
  • chore/package-updates
  • docs-ui-ux
  • docs-ui-ux-batch-2
  • feat/layout-animation-cluster
  • feat/layout-group
  • feat/motion-custom-prop
  • feat/pan-gesture
  • feat/runes-w2-boolean-snapshots
  • feat/runes-w3-motion-values
  • feat/seo-geo-improvements
  • feat/use-animate
  • feat/use-cycle
  • feat/use-follow-value
  • feat/use-in-view
  • feat/use-presence
  • feat/use-reduced-motion
  • feat/variant-string-keys
  • feat/while-in-view-viewport
  • fix/animate-transform-persist
  • fix/seo-unique-titles
  • fix/usepresence-svelte-5-55-7-main
  • initial-creation
  • main

27 May 2026 06:52PM UTC coverage: 68.522% (+0.1%) from 68.399%
26531902391

push

github

web-flow
fix(motion): persist animated transforms after WAAPI completion (#383)

* fix(motion): persist animated transforms after WAAPI completion

A motion.* element with a transform-shortcut animate value (scaleX,
rotate, x, y, etc.) animated correctly but reverted to transform:none
once the WAAPI run finished, because the inline transform was cleared at
the 'ready' state and WAAPI's default fill:'none' surrenders the
property on completion.

- Promote the animate target to the inline-style baseline once the enter
  animation has COMPLETED (new enterAnimationSettled flag set in the
  animateWithLifecycle onComplete), so the element holds its target. The
  target must not be applied during the run — flipping the inline value
  mid-animation shows the target for the one frame it changes (a visible
  snap), since WAAPI's composite doesn't override that exact frame.
- Collapse keyframe-array targets to their resting (last) element via a
  new resolveRestingValues helper (animate={{x:[0,100,50]}} rests at 50),
  mirroring upstream's buildTransform reading a settled scalar.
- Filter the inline baseline through filterReducedMotionKeyframes so
  transforms stay stripped under reduced motion.

Verified against framer-motion: inline style is built from resolved
values every render (use-props.ts), buildTransform reads settled scalars
and emits 'none' for identity (so identity targets like scaleX:1 are
correctly 'none' — the bug only bites non-identity targets).

Adds unit coverage (resolveRestingValues + persistence) and an e2e route
+ spec, including an addInitScript frame-recorder guard that asserts no
start-of-animation snap.

Closes #377

* fix(motion): omit empty-array keys in resolveRestingValues

CodeRabbit follow-up on #383: resolveRestingValues({ x: [] }) returned
value[-1] = undefined, yielding { x: undefined }. Harmless downstream
(mergeInlineStyles guards null/undefined) but untidy in isolation — now
empty-array keys are dropped. Adds a unit test.

Refs #377

530 of 718 branches covered (73.82%)

Branch coverage included in aggregate %.

13 of 13 new or added lines in 2 files covered. (100.0%)

2117 of 3145 relevant lines covered (67.31%)

13.55 hits per line

Relevant lines Covered
Build:
Build:
3145 RELEVANT LINES 2117 COVERED LINES
13.55 HITS PER LINE
Source Files on main
  • Tree
  • List 229
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
26531902391 fix/animate-transform-persist fix(motion): persist animated transforms after WAAPI completion (#383) * fix(motion): persist animated transforms after WAAPI completion A motion.* element with a transform-shortcut animate value (scaleX, rotate, x, y, etc.) animated correctly b... push 27 May 2026 06:55PM UTC web-flow github
68.52
26520002038 chore/package-updates chore(deps): bump eslint-plugin-svelte to 3.18.0 (#382) Update the dev dependency in both the root and docs manifests, with the corresponding pnpm-lock.yaml changes. push 27 May 2026 03:12PM UTC web-flow github
68.4
26467074175 feat/pan-gesture feat(gestures): add Pan gesture (whilePan + onPan callbacks) (#380) * feat(gestures): add Pan gesture (whilePan + onPan callbacks) Port framer-motion's Pan gesture to motion.* components — pure pointer offset/velocity reporter without drag's con... push 26 May 2026 06:26PM UTC web-flow github
67.66
26317570612 feat/use-follow-value feat(hooks): add useFollowValue (#376) * feat(hooks): add useFollowValue Add `useFollowValue` — the generalised follow hook accepting any ValueAnimationTransition (spring / tween / inertia / keyframes) and returning an augmented motion-dom Motio... push 22 May 2026 11:56PM UTC web-flow github
71.67
26311895102 feat/runes-w3-motion-values feat(hooks): port Tier 2 motion-value hooks to motion-dom primitives (#375) * refactor(hooks): port useMotionValue to motion-dom MotionValue + .current - Replace the hand-rolled Readable + .set/.get wrapper with a real motion-dom MotionValue, ... push 22 May 2026 09:05PM UTC web-flow github
71.67
26257196924 feat/runes-w2-boolean-snapshots refactor(hooks): port Wave 2 boolean-snapshot hooks to Svelte 5 runes (#374) * refactor(hooks): port Wave 2 boolean-snapshot hooks to Svelte 5 runes Migrate the three Tier 1 boolean-snapshot hooks from `Readable<boolean>` stores to `$state`-back... push 21 May 2026 10:42PM UTC web-flow github
69.18
26244864905 docs-ui-ux-batch-2 refactor(hooks): port useSpring + useCycle to Svelte 5; ExampleV2 docs migration (#360) * feat(docs): migrate use-presence to ExampleV2 (batch 2 kickoff) Batch 2 starts the docs-embedded migrations — examples whose `.svx` doc pages also import t... push 21 May 2026 06:21PM UTC web-flow github
68.96
26230648449 docs-ui-ux-batch-2 feat(docs): ExampleV2 chrome for docs-embedded examples (batch 2) (#359) * feat(docs): migrate use-presence to ExampleV2 (batch 2 kickoff) Batch 2 starts the docs-embedded migrations — examples whose `.svx` doc pages also import the legacy monol... push 21 May 2026 01:59PM UTC web-flow github
69.05
26195076707 docs-ui-ux feat(docs): migrate examples to ExampleV2 chrome (batch 1: standalones) (#357) * feat(docs): adopt ExampleV2 + demoManifestPlugin chrome — pilot variants-while-hover Phase 2 foundation + first migrated example. Establishes the per-page template ... push 20 May 2026 11:06PM UTC web-flow github
69.07
26167344324 feat/variant-string-keys feat(variants): variant string keys + arrays on whileX props (#349) (#355) * feat(variants): variant string keys + arrays on whileX props (#349) Widen `whileHover` / `whileTap` / `whileFocus` / `whileDrag` / `whileInView` to accept a variant key... push 20 May 2026 01:59PM UTC web-flow github
69.07
See All Builds (106)

Badge your Repo: svelte-motion

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc