In a vertical short-video feed built on a pool of VideoPlayers (next clip loaded with replaceAsync and paused), calling play() on the preloaded player takes ~200 ms before the clock moves (measured on iOS 26.4, expo-video 57.0.4, clip readyToPlay with its first segments buffered, warm CDN). The first frame is already on screen, but motion and audio lag the swipe.
AVFoundation's answer is AVPlayer.preroll(atRate:completionHandler:), which primes the media pipelines of a paused, readyToPlay player so a following play() starts with minimal latency. playImmediately(atRate:) is the related API for starting without the stall-avoidance wait when the app knows data is buffered.
Request: player.prerollAsync(rate?: number): Promise<boolean> on iOS (resolving with the completion's finished flag, rejecting or resolving false if the player isn't readyToPlay), and optionally playImmediately(rate?). On Android it could resolve false, or map to ExoPlayer's prepare() if that's already done. Today neither is reachable from JS, and bufferOptions.waitsToMinimizeStalling: false isn't a substitute: with it off, a play() issued before the item has data never starts (documented AVPlayer behaviour, and it reproduces reliably).
Checked in 58.0.3 and the latest canary: no preroll/playImmediately in the package.