Plain timing, no spring. A switch gets flipped repeatedly and in quick succession, so any spring overshoot reads as sloppy the second time you see it. The thumb's position instead runs on a quick withTiming ease, out flipping on, in flipping off.
Squash while held. A second animated value tracks press state and stretches the thumb horizontally by a couple of pixels toward the direction it's travelling, relaxing back on release, a subtle nod to the real iOS switch's rubbery feel without overselling it.
Color interpolation. The track crossfades between its off and on color with interpolateColor, with separate light and dark off-colors so it reads correctly in both themes.
Haptic lands with the value change.Haptics.impactAsync(Light) fires the instant you release, at the same moment onValueChange is called.