diff --git a/modules/expo-bluesky-gif-view/src/GifView.web.tsx b/modules/expo-bluesky-gif-view/src/GifView.web.tsx index c9f439bffe..e51b9bf9fc 100644 --- a/modules/expo-bluesky-gif-view/src/GifView.web.tsx +++ b/modules/expo-bluesky-gif-view/src/GifView.web.tsx @@ -67,7 +67,18 @@ export class GifView extends PureComponent { } async playAsync(): Promise { - this.videoPlayerRef.current?.play() + try { + await this.videoPlayerRef.current?.play() + } catch (err) { + // `play()` rejects with a NotAllowedError when the browser blocks + // playback (e.g. Safari low-power mode or autoplay policy). This is + // expected and benign - the GIF simply stays paused - so swallow it + // rather than letting it surface as an unhandled rejection. + if (err instanceof DOMException && err.name === 'NotAllowedError') { + return + } + throw err + } } async pauseAsync(): Promise {