I’m using expo-video with expo sdk 55 in a React Native app to play a short intro clip inside a chat screen from my aws s3 bucket. On all Indian devices it works, but on European devices the video starts, plays for about a second, and then gets stuck. There is no visible error, and Sentry only shows normal playback events until the stall.
I’ve instrumented the player and I can see this sequence in logs:
There is no status_error, freeze_detected, or duration_mismatch in the affected runs.
The video is loaded from a remote MP4 URL, and the component looks roughly like this:
const player = useVideoPlayer(videoSource, (player) => {
player.loop = false;
});
useEffect(() => {
player.volume = isChatAudioEnabled ? 1.0 : 0;
const statusSub = player.addListener("statusChange", (payload) => {
if (payload?.error) {
// log error
}
});
const timeSub = player.addListener("timeUpdate", ({ currentTime }) => {
// detect progress / freeze
});
player.play();
return () => {
statusSub.remove();
timeSub.remove();
player.pause();
};
}, [player, videoSource]);
AWS video is an mp4 with this
H264 Main/Baseline
yuv420p
AAC LC
+faststart
moov at start
The behavior seems region-specific, because it only happens on European devices. I’m trying to determine whether this is likely:
-
a CDN / network / geo routing issue
-
a codec or remote media delivery issue
-
a device/player quirk with expo-video
-
something related to iOS region or locale
My questions are:
-
What are the best ways to debug a video that stalls shortly after starting in expo-video?
-
Can region-specific network/CDN behavior cause this kind of stall without an explicit player error?
-
Are there known issues with expo-video where playingh can stop advancing without a
statusError? -
What extra diagnostics should I log to separate media delivery problems from player problems?