Node.js Zlib implementation for React Native using Nitro Modules and Rust
High-performance, 100% Node.js compatible Zlib module for React Native, powered by Nitro Modules and Rust.
![license]()
![platform]()
![compatibility]()
δΈζζζ‘£
- π Blazing Fast: Core logic written in Rust (flate2 & brotli crates), 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 crc32 calculation.
``bash`
yarn add react-native-nitro-zlibor
npm install react-native-nitro-zlib
bash
cd ios && pod install
`π Usage Guide
$3
Ideal for small files or latency-critical scenarios.
`typescript
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);
`$3
Provides the same asynchronous callback interface as Node.js.
`typescript
import zlib from 'react-native-nitro-zlib';zlib.deflate('some data', (err, buffer) => {
if (!err) {
console.log('Compressed buffer:', buffer);
}
});
`$3
Ideal for handling large files, supporting pipe operations.
`typescript
import zlib from 'react-native-nitro-zlib';
// Can be used with other Transform streams or Nitro streamsconst 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();
`$3
`typescript
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 Support Status
| 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 | |π οΈ Technical Details
The project consists of three main components:
1. Rust Core (
rust_c_zlib): Wraps flate2 and brotli crates.
2. C++ Bridge: C++ interfaces automatically generated by Nitro Modules.
3. TypeScript Layer: JS interfaces following Node.js specs, integrated with readable-stream`.ISC