High-performance, 100% Node.js compatible Zlib module for React Native, powered by Nitro Modules and Rust.
- 🚀 Blazing Fast: Core logic written in Rust (
flate2&brotlicrates), bridging directly to C++ via Nitro Modules with zero JSI serialization overhead. - Node.js Zlib API: Designed to provide a consistent API experience with the Node.js environment.
- 📦 Full Algorithm Support: Supports Deflate, Inflate, Gzip, Gunzip, Brotli, and more.
- ♻️ Streaming Support: Full support for
Readable,Writable, and.pipe()operations. - 💠 Sync & Async: Provides both synchronous (
Sync) and callback-based asynchronous APIs. - 🛠️ Utilities: Built-in high-performance
crc32calculation.
yarn add react-native-nitro-zlib
# or
npm install react-native-nitro-zlibcd ios && pod installIdeal for small files or latency-critical scenarios.
import zlib from 'react-native-nitro-zlib';
import { Buffer } from 'buffer';
const input = Buffer.from('hello world');
// Gzip Compression
const compressed = zlib.gzipSync(input);
// Gzip Decompression
const decompressed = zlib.gunzipSync(compressed);
console.log(decompressed.toString()); // 'hello world'
// Brotli Compression (Sync)
const brotliOut = zlib.brotliCompressSync(input);Provides the same asynchronous callback interface as Node.js.
import zlib from 'react-native-nitro-zlib';
zlib.deflate('some data', (err, buffer) => {
if (!err) {
console.log('Compressed buffer:', buffer);
}
});Ideal for handling large files, supporting pipe operations.
import zlib from 'react-native-nitro-zlib';
// Can be used with other Transform streams or Nitro streams
const gzip = zlib.createGzip();
const gunzip = zlib.createGunzip();
gzip.pipe(gunzip).on('data', (chunk) => {
console.log('Decompressed chunk:', chunk);
});
gzip.write('This is data for streaming compression');
gzip.end();import zlib from 'react-native-nitro-zlib';
import { Buffer } from 'buffer';
// Calculate CRC32
const crc = zlib.crc32(Buffer.from('Hello World'));
console.log('CRC32:', crc.toString(16)); // 4a17b156
// Access Constants
console.log(zlib.constants.Z_BEST_COMPRESSION); // 9| API | Status | Notes |
|---|---|---|
deflate / Sync |
✅ Supported | |
inflate / Sync |
✅ Supported | |
gzip / Sync |
✅ Supported | |
gunzip / Sync |
✅ Supported | |
brotliCompress / Sync |
✅ Supported | |
brotliDecompress / Sync |
✅ Supported | |
createGzip / createGunzip |
✅ Supported | Stream Factory |
createBrotliCompress |
✅ Supported | Stream Factory |
crc32 |
✅ Supported | |
constants |
✅ Supported |
The project consists of three main components:
- Rust Core (
rust_c_zlib): Wrapsflate2andbrotlicrates. - C++ Bridge: C++ interfaces automatically generated by Nitro Modules.
- TypeScript Layer: JS interfaces following Node.js specs, integrated with
readable-stream.
ISC