swiftui-motion

Solid

SwiftUI animation foundations - withAnimation, transitions, matchedGeometryEffect, PhaseAnimator, KeyframeAnimator, springs, gestures.

Web & Frontend 115 stars 14 forks Updated 3 days ago MIT

Install

View on GitHub

Quality Score: 86/100

Stars 20%
69
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
80
License 10%
100
Description 5%
100

Skill Content

# SwiftUI Motion > SwiftUI animation core. Loaded for any SwiftUI project (iOS, macOS, multi-target Apple). > Concise rules here. Deep-dive in `references/`. > Pair with `../motion-principles/SKILL.md` (foundation) and `../mobile-principles/SKILL.md` (touch UX). --- ## Animation API decision tree | Need | API | |---|---| | Single value over time | `withAnimation { } + @State` or `.animation(_, value:)` | | Multiple coordinated states | `PhaseAnimator(phases)` (iOS 17+) | | Time-based keyframes | `KeyframeAnimator(initialValue:repeating:content:)` (iOS 17+) | | Custom property animations | `@Animatable` macro (iOS 26+) or `Animatable` protocol (iOS 13+) | | Shared element transitions | `matchedGeometryEffect(id:in:)` | | Gesture-driven | `DragGesture` / `MagnifyGesture` + `.offset` / `.scaleEffect` | | Loop forever | `.animation(.linear.repeatForever(autoreverses: true), value: ...)` or `.phaseAnimator` | **Rule:** start with `withAnimation`. Reach for `PhaseAnimator` only when you have 3+ ordered states. Reach for `KeyframeAnimator` only when you need parallel time-based tracks. --- ## Springs (the only easing you should care about) SwiftUI ships 4 named springs (iOS 17+). Use them. Tune `response` / `dampingFraction` only when a preset is wrong. | Preset (iOS 17+) | Equivalent | Mood | |---|---|---| | `.snappy` | `.spring(response: 0.5, dampingFraction: 0.85)` | UI snappy | | `.bouncy` | `.spring(response: 0.5, dampingFraction: 0.7)` | playful | | `.smooth` | `.spri...

Details

Author
AThevon
Repository
AThevon/genjutsu
Created
4 months ago
Last Updated
3 days ago
Language
Python
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category