finds.dev← search

// the find

numandev1/react-native-compressor

★ 1,298 · Kotlin · MIT · updated Jun 2026

🗜️Compress Image, Video, and Audio same like Whatsapp 🚀✨

A React Native library for compressing images, video, and audio on-device before upload, with a 'WhatsApp mode' that mimics WhatsApp's automatic compression algorithm. Covers the full media upload pipeline: compress, upload in background, download, and generate video thumbnails. Built on Nitro Modules (the newer JSI-based architecture) so it works with React Native's new architecture.

Uses Nitro Modules instead of the old bridge, so JSI calls are synchronous and the new architecture is properly supported. The 50KB APK size increase vs FFmpeg's ~9MB is a real practical win for apps that just need WhatsApp-level compression without bundling a full media toolkit. Background upload supports both binary and multipart, includes AbortController cancellation, and returns progress callbacks — the upload story is more complete than most competing libraries. The benchmark spreadsheet comparing output to WhatsApp's actual behavior is unusual and useful — it tells you what you're actually getting, not just that 'compression happens'.

Audio on Android requires converting mp3 to wav before applying bitrate reduction — that's an extra decode/encode pass that wastes time and risks quality loss; the README acknowledges it but frames it as a recommendation rather than a limitation. The 'auto' video compression mode ignores the bitrate parameter entirely with no warning at the call site, which will silently surprise anyone who sets both. No web/SSR target, which matters more now that Expo is pushing universal apps — this just throws on web with no graceful fallback. The thumbnail cache management is coarse: clearCache() wipes everything or nothing, and there's no TTL or per-entry eviction.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →