Surf v0.15.2
0.15.2 - 2026-08-31
A new low-overhead video renderer for iOS 8 and later.
- Removed the expensive per-frame drawing pipeline. On iOS 8+, Surf now gives
compressed H.264 frames directly to the system display queue. The app no longer
waits for a decode callback, moves each decoded surface through UIKit, and draws
it with OpenGL. This isolates playback from interface animations and cuts the
renderer's own work to roughly a millisecond on supported devices. - Stopped keyboard changes from restarting video. The remote browser keeps one
stable, even-sized surface while the keyboard or bottom browser controls move.
iOS simply covers or repositions part of that surface locally. - Made overload recovery safe. Surf uses a single checked H.264 sample builder,
discards only frames that cannot be decoded independently when the system queue
is full, and replaces a failed display layer cleanly. iOS 6 and 7 retain the
compatible VideoToolbox/OpenGL renderer in this release. - Made performance readings match the active renderer. Newer systems report
accepted compressed frames, display-queue pressure, recoveries, and failures;
older systems continue to report decode and OpenGL timing. - Kept the default stream sharp at 60 FPS. The primary stream uses the native
display size and a detail-focused 16 Mbit/s variable bitrate. Unnecessary key
frames and competition between ordinary controls and incoming media were
removed. - Compatibility: protocol
20260831-1; update the client and server together.
Native iOS and unified Linux, Windows, and macOS packages are attached. Launch surf for the desktop app or run surf serve under a service manager for a headless backend.