A SwiftUI animálja az állapotváltozásokat. Amikor egy érték, például az isExpanded, az Animation(.spring) segítségével megváltozik, minden ettől függő nézet egy rugó segítségével az új elrendezésre lép.
Az iOS 17-es és újabb verzióiban a rugó leírásának legegyszerűbb módja két értékkel van megadva: időtartam, nagyjából mennyi időbe telik az ülepedéshez, és visszapattanás, mennyit lép túl. A 0 ugrás sima mozgást biztosít túllövés nélkül; magasabb értékek ugrálást adnak. Az Apple előbeállításokat is biztosít: .smooth, .snappy és .bouncy.
A régebbi kód a .spring(response:dampingFraction:) karakterláncot használja. A válasz az időtartamhoz hasonló, és az 1-es csillapítás azt jelenti, hogy nincs visszapattanás, míg az alacsonyabb értékek visszapattanást jelentenek. Mindkét forma ugyanazt a fizikai rugót írja le.
A rugók nagy előnye a megszakítás. Ha a felhasználó ismét megérinti, vagy egy húzómozdulat az animáció közben véget ér, az új rugó az aktuális pozícióból és sebességből indul, így nincs ugrás. Húzási gesztusok esetén adja át a kézmozdulat sebességét, amikor a felhasználó elengedi, így az elem abba az irányba megy tovább, ahol dobták.
Ha ugyanannak az összetevőnek a weben vagy az Androidon is futnia kell, a rugóértékek megosztott mozgási tokenekként való megtartása segít. Az általunk gyártott ExodeUI SwiftUI futásidejű, így egy tervezett alkatrész rugóival együtt tud játszani a SwiftUI-ben és más platformokon.