High-performance ZIP operations for React Native, powered by Nitro Modules.
- Fast — ~500 files/sec (iOS), ~474 files/sec (Android) on a 350MB / 10k file archive
- Zero bridge overhead — progress callbacks via JSI, no serialization
- Cancellable — synchronous cancellation via JSI
- Password support — AES-256 encrypted archives (zip & unzip)
- Zip creation — compress directories with optional password protection
- Concurrent operations — multiple tasks run independently
- Background execution — iOS background task management
npm install react-native-nitro-unzip react-native-nitro-modules
cd ios && pod installRequires React Native 0.75+, Nitro Modules 0.34+, iOS 15.5+, and Java 17 (Android).
The library depends on SSZipArchive, which requires iOS 15.5+. Ensure your app's Podfile (or Expo Podfile.properties.json) sets ios.deploymentTarget to 15.5 or higher.
import { getUnzip } from 'react-native-nitro-unzip';
const unzip = getUnzip();
const task = unzip.extract('/path/to/archive.zip', '/path/to/output');
task.onProgress((p) => {
console.log(`${(p.progress * 100).toFixed(0)}% — ${p.extractedFiles}/${p.totalFiles} files`);
});
const result = await task.await();
console.log(`Extracted ${result.extractedFiles} files in ${result.duration}ms`);Visit the docs site for:
- Getting Started — installation and setup
- Extraction — extract archives with progress
- Compression — create ZIP archives
- Password Protection — encrypted archives
- Cancellation — cancel operations
- Performance — benchmarks and internals
- API Reference — auto-generated from TypeScript
See the example app for a working demo.
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT