Digital Transformation

Compression Streams API

Vito Atmo
Vito Atmo·25 Mei 2026·0 kali dibaca·2 min baca

TL;DR: Compression Streams API adalah Web API browser yang memberikan dua kelas, CompressionStream dan DecompressionStream, untuk kompresi gzip atau deflate native. Cocok untuk kompres payload sebelum dikirim ke server, atau dekompres asset besar di client, tanpa memuat library seperti pako yang menambah 30 KB ke bundle JS.

Apa itu Compression Streams API?

Compression Streams API adalah bagian dari WHATWG Compression Streams spec yang mengintegrasikan kompresi ke dalam pipeline Streams API native. Browser modern (Chrome 80+, Firefox 113+, Safari 16.4+) sudah mendukung penuh. API ini menerima ReadableStream dan mengembalikan ReadableStream baru yang sudah terkompres atau terdekompres.

Tidak seperti library kompresi JavaScript yang harus diunduh dan parse, Compression Streams memakai implementasi native browser (biasanya zlib), sehingga lebih cepat dan tidak menambah ukuran bundle JS. Ini terutama berguna untuk aplikasi yang mengirim payload besar (form data, telemetry, file upload) atau yang harus dekompres respons custom dari API.

Cara Kerja

Pemakaian standar via async/await:

OperasiSintaks Utama
Kompres stringnew Blob([str]).stream().pipeThrough(new CompressionStream('gzip'))
Dekompres responseresponse.body.pipeThrough(new DecompressionStream('gzip'))
Algoritma'gzip', 'deflate', 'deflate-raw'

Hasil kompresi bisa langsung di-upload via fetch dengan body ReadableStream, atau dikonversi ke Blob untuk disimpan ke File System Access API.

Kenapa Penting?

Banyak aplikasi marketing menerima form panjang (lead form B2B, survei), mengirim event telemetry per detik, atau mengelola backup di sisi klien. Tanpa Compression Streams, payload mentah menghabiskan bandwidth pengguna dengan koneksi 3G. Dalam audit performa yang Vito Atmo lakukan untuk dashboard analitik klien, mengganti pako dengan Compression Streams memangkas bundle JS dari 187 KB ke 161 KB dan mempercepat first interaction sekitar 90 ms di koneksi lambat.

Pertanyaan Umum

Apakah hasil kompresinya kompatibel dengan zlib di server?

Ya. Algoritma gzip dan deflate native browser kompatibel dengan implementasi zlib di Node.js, Python, dan Go.

Bisakah dipakai untuk file besar?

Bisa. Karena berbasis stream, file diproses chunk-per-chunk, sehingga aman untuk file ratusan MB tanpa kehabisan memori.

Bagikan