From 40f66531a731dcb3f83c5d50b99e8092cf476d8e Mon Sep 17 00:00:00 2001 From: vineyardbovines Date: Mon, 6 Jul 2026 12:57:29 -0400 Subject: [PATCH] fix camera roll gif selection hanging on ios selectVideo awaits a duration probe when the picked asset has no duration. react-native-compressor's iOS getVideoMetaData never resolves or rejects for files without a video track, so picking a gif from the camera roll hung before any composer state was dispatched. skip the probe for gifs, matching the existing guard in compressVideo. --- src/view/com/composer/Composer.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx index a2cf83c75e..a09aaab8c1 100644 --- a/src/view/com/composer/Composer.tsx +++ b/src/view/com/composer/Composer.tsx @@ -389,9 +389,15 @@ export const ComposePost = ({ /* * Share-extension deeplinks deliver a video URI without duration, so * probe before we decide whether to compress. The picker and web paste - * paths already populate duration upstream. + * paths already populate duration upstream. GIFs must skip the probe: + * they have no video track, so the iOS prober never resolves or rejects + * and the await below would hang forever. */ - if (asset.duration == null && IS_NATIVE) { + if ( + asset.duration == null && + IS_NATIVE && + asset.mimeType !== 'image/gif' + ) { try { const probed = await getVideoMetadata(asset.uri) asset = {