# SwiftUI .smooth: CSS linear() spring, stiffness 157.91 damping 25.13

> SwiftUI .smooth as a CSS linear() spring: stiffness 157.91, damping 25.13, settles in 0.735 s, no overshoot. Copy the CSS and the Web Animations line.

Canonical: https://vawe.dev/springs/swiftui-smooth
Last updated: 2026-11-04

Stiffness 157.91, damping 25.13 and mass 1 give a damping ratio of 1, so the spring is about critically damped. It settles to within 0.1% in 0.735 s. It never passes the end value.

Bounce 0 means a critically damped spring: the fastest settle with no overshoot.

| Measure | Value |
| --- | --- |
| Stiffness | 157.91 |
| Damping | 25.13 |
| Mass | 1 |
| Damping ratio | 1 (about critically damped) |
| Settle time | 0.735 s |
| Overshoot | 0% |
| Crosses the end value | 0 |
| 50% of travel at | 0.134 s |
| 90% of travel at | 0.31 s |

## CSS linear()

```css
transition: translate 735ms linear(0, 0.0062, 0.0229, 0.0478, 0.0789, 0.1145, 0.1533, 0.1942, 0.2362, 0.2786, 0.3209, 0.3625, 0.4031, 0.4425, 0.4804, 0.5166, 0.5511, 0.5838, 0.6148, 0.6439, 0.6713, 0.6969, 0.7208, 0.7432, 0.764, 0.7833, 0.8012, 0.8177, 0.8331, 0.8472, 0.8603, 0.8723, 0.8833, 0.8935, 0.9028, 0.9114, 0.9193, 0.9265, 0.933, 0.9391, 0.9446, 0.9496, 0.9542, 0.9584, 0.9622, 0.9657, 0.9689, 0.9718, 0.9744, 0.9768, 0.9789, 0.9809, 0.9827, 0.9843, 0.9858, 0.9872, 0.9884, 0.9895, 0.9905, 0.9914, 0.9922, 0.993, 0.9937, 0.9943, 0.9948, 0.9953, 0.9958, 0.9962, 0.9966, 0.9969, 0.9972, 0.9975, 0.9977, 0.9979, 0.9981, 0.9983, 0.9985, 0.9986, 0.9988, 0.9989, 1);
```

## Web Animations

```js
el.animate({ translate: ['0 0', '240px 0'] }, { duration: 735, easing: 'linear(0, 0.0062, 0.0229, 0.0478, 0.0789, 0.1145, 0.1533, 0.1942, 0.2362, 0.2786, 0.3209, 0.3625, 0.4031, 0.4425, 0.4804, 0.5166, 0.5511, 0.5838, 0.6148, 0.6439, 0.6713, 0.6969, 0.7208, 0.7432, 0.764, 0.7833, 0.8012, 0.8177, 0.8331, 0.8472, 0.8603, 0.8723, 0.8833, 0.8935, 0.9028, 0.9114, 0.9193, 0.9265, 0.933, 0.9391, 0.9446, 0.9496, 0.9542, 0.9584, 0.9622, 0.9657, 0.9689, 0.9718, 0.9744, 0.9768, 0.9789, 0.9809, 0.9827, 0.9843, 0.9858, 0.9872, 0.9884, 0.9895, 0.9905, 0.9914, 0.9922, 0.993, 0.9937, 0.9943, 0.9948, 0.9953, 0.9958, 0.9962, 0.9966, 0.9969, 0.9972, 0.9975, 0.9977, 0.9979, 0.9981, 0.9983, 0.9985, 0.9986, 0.9988, 0.9989, 1)', fill: 'both' });
```

## In a vawe page

```js
import { spring, springDuration, springLinear } from '../../core/motion/springs.js';

const k = 157.91, d = 25.13;

// per-frame code (window.seek, vawe.onFrame): t is seconds since the move starts
const x = 240 * spring(t, k, d);

// CSS and Web Animations: 735 ms, the linear() string above
el.animate(
  { translate: ['0 0', '240px 0'] },
  { duration: springDuration(k, d) * 1000, easing: springLinear(k, d), fill: 'both' },
);
```

## Source of the numbers

.smooth: duration 0.5, bounce 0 (Apple: "no bounce"). SwiftUI documentation read on 2026-11-03, Animation.smooth (https://developer.apple.com/documentation/swiftui/animation/smooth). Conversion: stiffness = (2 pi / response)^2, damping = 4 pi x dampingFraction / response, with mass 1. The duration-and-bounce forms map to response = duration and dampingFraction = 1 - bounce, the same bounce mapping Motion documents "as SwiftUI does". Apple states bounce 0 is critically damped and bounce 1 is undamped.

## Related

- [react-spring default](https://vawe.dev/springs/react-spring-default)
- [vawe default](https://vawe.dev/springs/vawe-default)
- [SwiftUI .snappy](https://vawe.dev/springs/swiftui-snappy)
- [SwiftUI spring()](https://vawe.dev/springs/swiftui-spring)
- [All spring presets](https://vawe.dev/springs)
