On Air

A livestream player in UIKit for a Cole Buxton drop: drag the stream up to reveal chat and it settles on a spring, and the picture never leaves the screen.

Why I built it

On a phone, joining the chat on a livestream usually shrinks the video or hides it behind the keyboard, which is the wrong trade when the point is watching the clothes. I wanted a version built for a drop, where the stream stays the main thing on screen.

What it is

A native player for a Cole Buxton drop. Drag the stream up to reveal the chat and it settles on a real spring; like the stream, send a message, swipe back, and the picture never leaves the screen.

How it works

UIKit and AVFoundation. The gesture runs on an interruptible UIViewPropertyAnimator with spring timing seeded from the release velocity, so a flick and a slow drag settle differently. Dynamic Type, Reduce Motion and Liquid Glass controls on iOS 26, and UI tests cover the gesture, sending and playback.

What I learned

A spring seeded from the release velocity is what makes a gesture feel physical; a fixed duration never does. Gestures also have to be judged on a device, not a simulator.